[cig-commits] r5531 - in long/3D/Gale/trunk/src/StGermain: . Base/Automation/src Base/Container/src Base/Container/tests Base/Foundation/src Discretisation/Geometry/src Discretisation/Geometry/tests Discretisation/Mesh/src Discretisation/Mesh/tests Discretisation/Shape/src Discretisation/Swarm/src Discretisation/Swarm/tests Discretisation/Utils/src Discretisation/Utils/tests FD/src FD/tests

walter at geodynamics.org walter at geodynamics.org
Thu Dec 7 15:21:05 PST 2006


Author: walter
Date: 2006-12-07 15:20:58 -0800 (Thu, 07 Dec 2006)
New Revision: 5531

Added:
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMapping.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testNumberHasher.c
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.c
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ShadowInfo.h
Removed:
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ShadowInfo.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf-withLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-large.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.meta
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of1.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.1of2.sh
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSync.c
Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.c
   long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/Container.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/src/types.h
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMPIRoutines.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testRangeSet.c
   long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testUIntMap.c
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Foundation.h
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.h
   long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/shortcuts.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Geometry.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Line.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Plane.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/RMatrix.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testComplexVectorMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testFullTensorMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testTensorMultMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testVectorMath.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DecompTransfer.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Claim.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Negotiate.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGenerator.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/types.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.3of4.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecompTransfer.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshTopology.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ConvexHull.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ShapeClass.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Init.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/LineParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ManualParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/MeshParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Swarm.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/types.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testElementCellLayout0.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testGaussLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testManualParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testParticleCoords.xml
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSingleCellLayout0.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSpaceFillerParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmDumpAndLoad.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testWithinShapeParticleLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllElementsVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllNodesVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CellRemesher.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CornerVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FrictionVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Init.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/InnerWallVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/ShapeVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/StripRemesher.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Utils.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/WallVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/types.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-remap.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-saveAndLoad.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of1.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSemiRegDeform.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of2.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.2of3.expected
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c
   long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.c
   long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.h
   long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c
Log:
Merge in Luke's parallel changes


Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:3196
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/branches/decomp3d/StGermain:3901
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3899

Modified: long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -226,7 +226,51 @@
 	return self;
 }
 
+Variable* Variable_NewVector2( 
+		Name						name,
+		Variable_DataType				dataType,
+		Index						dataTypeCount,
+		Index*						arraySizePtr,
+		void**						arrayPtrPtr,
+		Variable_Register*				vr,
+		char**						dataNames )
+{
+	Variable*		self;
+	SizeT			dataOffsets[] = { 0 };
+	Variable_DataType	dataTypes[] = { 0 };
+	Index			dataTypeCounts[] = { 0 };
 
+	dataTypes[0] = dataType;
+	dataTypeCounts[0] = dataTypeCount;
+
+	self = _Variable_New( 
+		sizeof(Variable), 
+		Variable_Type, 
+		_Variable_Delete, 
+		_Variable_Print, 
+		_Variable_Copy, 
+		(void*)Variable_DefaultNew,
+		_Variable_Construct,
+		_Variable_Build, 
+		_Variable_Initialise, 
+		_Variable_Execute, 
+		_Variable_Destroy,
+		name,
+		True,
+		1, 
+		dataOffsets, 
+		dataTypes, 
+		dataTypeCounts, 
+		dataNames,
+		0, /* means work out from dataType at build phase */
+		arraySizePtr,
+		arrayPtrPtr, 
+		vr );
+
+	return self;
+}
+
+
 void Variable_Init(
 		Name						name,
 		Variable*					self,
@@ -302,7 +346,7 @@
 	/* Allocate memory */
 	assert( _sizeOfSelf >= sizeof(Variable) );
 	self = (Variable*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor,
-										_construct, _build, _initialise, _execute, _destroy, name, NON_GLOBAL );
+					      _construct, _build, _initialise, _execute, _destroy, name, NON_GLOBAL );
 	
 	/* General info */
 	

Modified: long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Automation/src/Variable.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -92,6 +92,33 @@
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructors
 	*/
+
+	#define VARIABLE_DEFARGS							\
+		STG_CLASS_DEFARGS,							\
+		Stg_Component_DefaultConstructorFunction*	_defaultConstructor, 	\
+		Stg_Component_ConstructFunction*		_construct, 		\
+		Stg_Component_BuildFunction*			_build, 		\
+		Stg_Component_InitialiseFunction*		_initialise, 		\
+		Stg_Component_ExecuteFunction*			_execute, 		\
+		Stg_Component_DestroyFunction*			_destroy, 		\
+		Name						name, 			\
+		Bool						initFlag, 		\
+		Index						dataCount,		\
+		SizeT*						dataOffsets,		\
+		Variable_DataType*				dataTypes,		\
+		Index*						dataTypeCounts,		\
+		Name*						dataNames,		\
+		SizeT*						structSizePtr,		\
+		Index*						arraySizePtr,		\
+		void**						arrayPtrPtr,		\
+		Variable_Register*				vr
+
+	#define VARIABLE_PASSARGS						\
+		STG_CLASS_PASSARGS, _defaultConstructor, _construct, 		\
+		_build, _initialise, _execute, _destroy, name, initFlag,	\
+		dataCount, dataOffsets, dataTypes, dataTypeCounts,		\
+		dataNames, structSizePtr, arraySizePtr,				\
+		arrayPtrPtr, vr
 	
 	/** Creates a new Variable. A Variable holds the run-time information of a complex data type created by the programmer.
 	  * Essentially it associates a textual name to a variable in the program that the user can use to access or modify.
@@ -155,6 +182,15 @@
 		void**						arrayPtrPtr,
 		Variable_Register*				vr,
 		... 						/* vector component names */ );
+
+	Variable* Variable_NewVector2( 
+		Name						name,
+		Variable_DataType				dataType,
+		Index						dataTypeCount,
+		Index*						arraySizePtr,
+		void**						arrayPtrPtr,
+		Variable_Register*				vr,
+		char**						dataNames );
 	
 	/** Constructor interface. */
 	Variable* _Variable_New(

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,121 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Hasher.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+
+#include "Container.h"
+
+
+/* Textual name of this class */
+const Type Hasher_Type = "Hasher";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Hasher* Hasher_New( Name name ) {
+	return _Hasher_New( sizeof(Hasher), 
+			    Hasher_Type, 
+			    _Hasher_Delete, 
+			    _Hasher_Print, 
+			    NULL );
+}
+
+Hasher* _Hasher_New( HASHER_DEFARGS ) {
+	Hasher*	self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Hasher) );
+	self = (Hasher*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+	self->hashFunc = hashFunc;
+
+	/* Hasher info */
+	_Hasher_Init( self );
+
+	return self;
+}
+
+void _Hasher_Init( Hasher* self ) {
+	self->keySize = 0;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Hasher_Delete( void* hasher ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	Hasher_Destruct( self );
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Hasher_Print( void* hasher, Stream* stream ) {
+	Hasher*	self = (Hasher*)hasher;
+	
+	/* Set the Journal for printing informations */
+	Stream* hasherStream;
+	hasherStream = Journal_Register( InfoStream_Type, "HasherStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Hasher (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Hasher_SetKeySize( void* hasher, unsigned keySize ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	assert( self );
+
+	self->keySize = keySize;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/ByteHasher.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,101 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Hasher.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Base_Container_Hasher_h__
+#define __Base_Contianer_Hasher_h__
+
+	/** Textual name of this class */
+	extern const Type Hasher_Type;
+
+	/** Virtual function types */
+	typedef unsigned (Hasher_HashFunc)( void* hasher, void* key );
+
+	/** Class contents */
+	#define __Hasher				\
+		/* General info */			\
+		__Stg_Class				\
+							\
+		/* Virtual info */			\
+		Hasher_HashFunc*	hashFunc;	\
+							\
+		/* Hasher info */			\
+		unsigned		keySize;
+
+	struct Hasher { __Hasher };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define HASHER_DEFARGS				\
+		STG_CLASS_DEFARGS,			\
+		Hasher_HashFunc*	hashFunc
+
+	#define HASHER_PASSARGS			\
+		STG_CLASS_PASSARGS, hashFunc
+
+	Hasher* Hasher_New();
+	Hasher* _Hasher_New( HASHER_DEFARGS );
+	void _Hasher_Init( Hasher* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Hasher_Delete( void* hasher );
+	void _Hasher_Print( void* hasher, Stream* stream );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void Hasher_SetKeySize( void* hasher, unsigned keySize );
+
+	#define Hasher_Hash( hasher, key )				\
+		(assert( (hasher) && ((Hasher*)hasher)->hashFunc ),	\
+		 ((Hasher*)hasher)->hashFunc( hasher, key ))
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void Hasher_Destruct( Hasher* self );
+
+#endif /* __Base_Container_Hasher_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/Container.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/Container.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/Container.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,13 +53,11 @@
 	#include "List.h"
 	#include "HashTable.h"
 	#include "Array.h"
-	#include "UniqueList.h"
 	#include "LinkedListNode.h"
 	#include "LinkedList.h"
 	#include "LinkedListIterator.h"
 	#include "Set.h"
 	#include "PtrSet.h"
-	#include "Map.h"
 	#include "Heap.h"
 	#include "MaxHeap.h"
 	#include "MPIRoutines.h"

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,139 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Hasher.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+
+#include "Container.h"
+
+
+/* Textual name of this class */
+const Type Hasher_Type = "Hasher";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Hasher* _Hasher_New( HASHER_DEFARGS ) {
+	Hasher*	self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Hasher) );
+	self = (Hasher*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+	self->hashFunc = hashFunc;
+	self->calcTableSizeFunc = calcTableSizeFunc;
+
+	/* Hasher info */
+	_Hasher_Init( self );
+
+	return self;
+}
+
+void _Hasher_Init( Hasher* self ) {
+	self->keySize = 0;
+	self->maxItems = 0;
+	self->tableSize = 0;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Hasher_Delete( void* hasher ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Hasher_Print( void* hasher, Stream* stream ) {
+	Hasher*	self = (Hasher*)hasher;
+	
+	/* Set the Journal for printing informations */
+	Stream* hasherStream;
+	hasherStream = Journal_Register( InfoStream_Type, "HasherStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Hasher (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+void _Hasher_CalcTableSize( void* hasher ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	assert( self );
+
+	self->tableSize = self->maxItems;
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Hasher_SetKeySize( void* hasher, unsigned keySize ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	assert( self );
+
+	self->keySize = keySize;
+}
+
+void Hasher_SetMaxItems( void* hasher, unsigned maxItems ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	assert( self );
+
+	self->maxItems = maxItems;
+	Hasher_CalcTableSize( self );
+}
+
+unsigned Hasher_GetTableSize( void* hasher ) {
+	Hasher*	self = (Hasher*)hasher;
+
+	assert( self );
+
+	return self->tableSize;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/Hasher.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,111 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Hasher.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Base_Container_Hasher_h__
+#define __Base_Contianer_Hasher_h__
+
+	/** Textual name of this class */
+	extern const Type Hasher_Type;
+
+	/** Virtual function types */
+	typedef unsigned (Hasher_HashFunc)( void* hasher, void* key );
+	typedef void (Hasher_CalcTableSizeFunc)( void* hasher );
+
+	/** Class contents */
+	#define __Hasher						\
+		/* General info */					\
+		__Stg_Class						\
+									\
+		/* Virtual info */					\
+		Hasher_HashFunc*		hashFunc;		\
+		Hasher_CalcTableSizeFunc*	calcTableSizeFunc;	\
+									\
+		/* Hasher info */					\
+		unsigned	keySize;				\
+		unsigned	maxItems;				\
+		unsigned	tableSize;
+
+	struct Hasher { __Hasher };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define HASHER_DEFARGS						\
+		STG_CLASS_DEFARGS,					\
+		Hasher_HashFunc*		hashFunc,		\
+		Hasher_CalcTableSizeFunc*	calcTableSizeFunc
+
+	#define HASHER_PASSARGS					\
+		STG_CLASS_PASSARGS, hashFunc, calcTableSizeFunc
+
+	Hasher* _Hasher_New( HASHER_DEFARGS );
+	void _Hasher_Init( Hasher* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Hasher_Delete( void* hasher );
+	void _Hasher_Print( void* hasher, Stream* stream );
+
+	void _Hasher_CalcTableSize( void* hasher );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void Hasher_SetKeySize( void* hasher, unsigned keySize );
+	void Hasher_SetMaxItems( void* hasher, unsigned maxItems );
+	unsigned Hasher_GetTableSize( void* hasher );
+
+	#define Hasher_Hash( hasher, key )				\
+		(assert( (hasher) && ((Hasher*)hasher)->hashFunc ),	\
+		 ((Hasher*)hasher)->hashFunc( hasher, key ))
+
+	#define Hasher_CalcTableSize( hasher )					\
+		(assert( (hasher) && ((Hasher*)hasher)->calcTableSizeFunc ),	\
+		 ((Hasher*)hasher)->calcTableSizeFunc( hasher ))
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+#endif /* __Base_Container_Hasher_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -24,25 +24,23 @@
 **  License along with this library; if not, write to the Free Software
 **  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 **
-** $Id: List.c 2192 2004-10-15 02:45:38Z LukeHodkinson $
+** $Id: List.c 3584 2006-05-16 11:11:07Z PatrickSunter $
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
 #include <mpi.h>
+
 #include "Base/Foundation/Foundation.h"
 #include "Base/IO/IO.h"
 
-#include "units.h"
 #include "types.h"
 #include "List.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
 
-
 /* Textual name of this class */
 const Type List_Type = "List";
 
@@ -51,94 +49,35 @@
 ** Constructors
 */
 
-List* List_New_Param(
-		SizeT						elementSize, 
-		unsigned					delta )
-{
-	return _List_New( 
-		sizeof(List), 
-		List_Type, 
-		_List_Delete, 
-		_List_Print, 
-		NULL, 
-		_List_Append,
-		_List_Mutate, 
-		elementSize,
-		delta );
+List* List_New( Name name ) {
+	return _List_New( sizeof(List), 
+			  List_Type, 
+			  _List_Delete, 
+			  _List_Print, 
+			  NULL );
 }
 
+List* _List_New( LIST_DEFARGS ) {
+	List*	self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(List) );
+	self = (List*)_Stg_Class_New( STG_CLASS_PASSARGS );
 
-void List_Init(
-		List*						self,
-		SizeT						elementSize, 
-		unsigned					delta )
-{
-	/* General info */
-	self->type = List_Type;
-	self->_sizeOfSelf = sizeof(List);
-	self->_deleteSelf = False;
-	
 	/* Virtual info */
-	self->_delete = _List_Delete;
-	self->_print = _List_Print;
-	self->_copy = NULL;
-	self->_append = _List_Append;
-	self->_mutate = _List_Mutate;
-	_Stg_Class_Init( (Stg_Class*)self );
-	
+
 	/* List info */
-	_List_Init( self, elementSize, delta );
-}
+	_List_Init( self );
 
-
-List* _List_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		List_AppendFunc*				_append,
-		List_MutateFunc*				_mutate, 
-		SizeT						elementSize, 
-		unsigned					delta )
-{
-	List*			self;
-	
-	/* Allocate memory */
-	self = (List*)_Stg_Class_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print, 
-		_copy );
-	
-	/* General info */
-	
-	/* Virtual info */
-	self->_append = _append;
-	self->_mutate = _mutate;
-	
-	/* List info */
-	_List_Init( self, elementSize, delta );
-	
 	return self;
 }
 
-
-void _List_Init(
-		List*						self,
-		SizeT						elementSize, 
-		unsigned					delta )
-{
-	/* General and Virtual info should already be set */
-	
-	/* List info */
-	self->elementSize = elementSize;
-	self->delta = delta;
-	self->maxElements = self->delta;
-	self->elements = Memory_Alloc_Bytes_Unnamed( self->elementSize * self->maxElements, char);
-	assert( self->elements ); 
-	self->elementCnt = 0;
+void _List_Init( List* self ) {
+	self->nItems = 0;
+	self->items = NULL;
+	self->itemSize = 0;
+	self->maxItems = 0;
+	self->delta = 10;
 }
 
 
@@ -147,90 +86,163 @@
 */
 
 void _List_Delete( void* list ) {
-	List*			self = (List*)list;
-	
-	/* Stg_Class_Delete the class itself */
-	if( self->elements )
-		Memory_Free( self->elements );
-	
-	/* Stg_Class_Delete parent */
+	List*	self = (List*)list;
+
+	List_Destruct( self );
+
+	/* Delete the parent. */
 	_Stg_Class_Delete( self );
 }
 
-
 void _List_Print( void* list, Stream* stream ) {
-	List*			self = (List*)list;
+	List*	self = (List*)list;
 	
 	/* Set the Journal for printing informations */
-	Stream*			myStream;
-	myStream = Journal_Register( InfoStream_Type, "ListStream" );
+	Stream* listStream;
+	listStream = Journal_Register( InfoStream_Type, "ListStream" );
 
 	/* Print parent */
+	Journal_Printf( stream, "List (ptr): (%p)\n", self );
 	_Stg_Class_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( myStream, "List (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* List info */
-	Journal_Printf( myStream, "\telementSize: %d\n", self->elementSize );
-	Journal_Printf( myStream, "\tdelta: %d\n", self->delta );
-	Journal_Printf( myStream, "\tmaxElements: %d\n", self->maxElements );
-	Journal_Printf( myStream, "\telementCnt: %d\n", self->elementCnt );
-	Journal_Printf( myStream, "\telements (ptr): %p\n", self->elements );
 }
 
 
-unsigned _List_Append( void* list, void* data ) {
-	List*			self = (List*)list;
-	
-	List_Resize( self, self->elementCnt + 1 );
-	memcpy( &((unsigned char*)self->elements)[self->elementSize * (self->elementCnt - 1)], data,
-		sizeof(unsigned char) * self->elementSize );
-	
-	return self->elementCnt - 1;
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void List_SetDelta( void* list, unsigned delta ) {
+	List*	self = (List*)list;
+
+	assert( self );
+	assert( delta );
+
+	self->delta = delta;
 }
 
+void List_SetItemSize( void* list, unsigned itemSize ) {
+	List*	self = (List*)list;
 
-void _List_Mutate( void* list, unsigned index, void* data ) {
+	assert( self );
+	assert( itemSize );
+
+	List_Destruct( self );
+
+	self->itemSize = itemSize;
+}
+
+void List_Clear( void* list ) {
+	List*	self = (List*)list;
+
+	assert( self );
+
+	self->nItems = 0;
+	KillArray( self->items );
+	self->maxItems = 0;
+}
+
+void List_Insert( void* list, unsigned index, void* data ) {
 	List*		self = (List*)list;
-	
-	memcpy( &((unsigned char*)self->elements)[self->elementSize * index], data,
-		sizeof(unsigned char) * self->elementSize );
+	unsigned	item_i;
+
+	assert( self );
+	assert( index <= self->nItems );
+	assert( data );
+	assert( self->itemSize );
+
+	if( self->nItems == self->maxItems )
+		List_Expand( self );
+
+	for( item_i = self->nItems; item_i > index; item_i-- )
+		memcpy( self->items + self->itemSize * item_i, 
+			self->items + self->itemSize * (item_i - 1), 
+			self->itemSize );
+
+	memcpy( self->items + self->itemSize * index, data, self->itemSize );
+
+	self->nItems++;
 }
 
+void List_Append( void* list, void* data ) {
+	List*	self = (List*)list;
 
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
+	assert( self );
 
-void List_Resize( void* list, unsigned size ) {
+	List_Insert( self, self->nItems, data );
+}
+
+void List_Prepend( void* list, void* data ) {
+	List_Insert( list, 0, data );
+}
+
+void List_Remove( void* list, void* data ) {
 	List*		self = (List*)list;
-	
-	if( size >= self->maxElements ) {
-		unsigned		factor;
-		void*			newElements;
-		
-		factor = ceil( (float)(size - self->maxElements) / (float)self->delta );
-		self->maxElements += factor * self->delta;
-		
-		newElements = Memory_Alloc_Bytes_Unnamed( self->elementSize * self->maxElements, char );
-		assert( newElements ); 
-		if( self->elements ) {
-			memcpy( newElements, self->elements, self->elementSize * self->elementCnt );
-			Memory_Free( self->elements );
-		}
-		self->elements = newElements;
+	unsigned	item_i;
+
+	assert( self );
+	assert( data );
+
+	for( item_i = 0; item_i < self->nItems; item_i++ ) {
+		if( !memcmp( self->items + self->itemSize * item_i, data, self->itemSize ) )
+			break;
 	}
-	else if( size < self->elementCnt ) {
-		Journal_Firewall( 0, Journal_Register( ErrorStream_Type, "List" ), "error in '%s'\n", __func__); 
+	assert( item_i < self->nItems );
+
+	for( item_i++; item_i < self->nItems; item_i++ ) {
+		memcpy( self->items + self->itemSize * (item_i - 1), 
+			self->items + self->itemSize * item_i, 
+			self->itemSize );
 	}
-	
-	self->elementCnt = size;
+
+	if( --self->nItems % self->delta == 0 )
+		List_Contract( self );
 }
 
+void* List_GetItem( void* list, unsigned index ) {
+	List*	self = (List*)list;
 
+	assert( self );
+	assert( index < self->nItems );
+
+	return self->items + self->itemSize * index;
+}
+
+unsigned List_GetSize( void* list ) {
+	List*	self = (List*)list;
+
+	assert( self );
+
+	return self->nItems;
+}
+
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */
+
+void List_Expand( List* self ) {
+	self->maxItems += self->delta;
+	if( !self->items )
+		self->items = Memory_Alloc_Array_Bytes( self->itemSize, self->maxItems, "", "List::items" );
+	else
+		self->items = Memory_Realloc_Array_Bytes( self->items, self->itemSize, self->maxItems );
+}
+
+void List_Contract( List* self ) {
+	if( self->delta > self->maxItems )
+		self->maxItems = 0;
+	else
+		self->maxItems -= self->delta;
+
+	if( !self->maxItems )
+		KillArray( self->items );
+	else
+		self->items = Memory_Realloc_Array_Bytes( self->items, self->itemSize, self->maxItems );
+}
+
+void List_Destruct( List* self ) {
+	self->nItems = 0;
+	KillArray( self->items );
+	self->itemSize = 0;
+	self->maxItems = 0;
+}

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/List.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -34,128 +34,80 @@
 **
 ** Comments:
 **
-** $Id: List.h 2225 1970-01-02 13:48:23Z LukeHodkinson $
+** $Id: List.h 3584 2006-05-16 11:11:07Z PatrickSunter $
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
 #ifndef __Base_Container_List_h__
-#define __Base_Container_List_h__
-	
+#define __Base_Contianer_List_h__
 
 	/** Textual name of this class */
 	extern const Type List_Type;
 
-	/* Virtual function types */
-	typedef	unsigned		(List_AppendFunc)	( void* list, void* data );
-	typedef void			(List_MutateFunc)	( void* list, unsigned index, void* data );
-	
-	/** List class contents */
-	#define __List \
-		/* General info */ \
-		__Stg_Class \
-		\
-		/* Virtual info */ \
-		List_AppendFunc*			_append; \
-		List_MutateFunc*			_mutate; \
-		\
-		/* List info ... */ \
-		SizeT					elementSize; \
-		unsigned				delta; \
-		unsigned				maxElements; \
-		unsigned				elementCnt; \
-		void*					elements;
+	/** Virtual function types */
 
+	/** Class contents */
+	#define __List				\
+		/* General info */		\
+		__Stg_Class			\
+						\
+		/* Virtual info */		\
+						\
+		/* List info */			\
+		unsigned	nItems;		\
+		Stg_Byte*	items;		\
+		unsigned	itemSize;	\
+		unsigned	maxItems;	\
+		unsigned	delta;
+
 	struct List { __List };
-	
-	
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructors
 	*/
-	
-	/* Create a List */
-	#define List_New( elementSize ) \
-		List_New_Param( elementSize, 10 )
-	
-	List* List_New_Param( 
-		SizeT						elementSize, 
-		unsigned					delta );
-	
-	/* Creation implementation */
-	List* _List_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print, 
-		Stg_Class_CopyFunction*				_copy, 
-		List_AppendFunc*				_append,
-		List_MutateFunc*				_mutate, 
-		SizeT						elementSize, 
-		unsigned					delta );
-	
-	
-	/* Initialise a List */
-	void List_Init(
-		List*						self,
-		SizeT						elementSize, 
-		unsigned					delta );
-	
-	/* Initialisation implementation functions */
-	void _List_Init(
-		List*						self,
-		SizeT						elementSize, 
-		unsigned					delta );
-	
-	
+
+	#define LIST_DEFARGS		\
+		STG_CLASS_DEFARGS
+
+	#define LIST_PASSARGS		\
+		STG_CLASS_PASSARGS
+
+	List* List_New();
+	List* _List_New( LIST_DEFARGS );
+	void _List_Init( List* self );
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Virtual functions
 	*/
-	
-	/* Stg_Class_Delete mesh implementation */
+
 	void _List_Delete( void* list );
-	
-	/* Print mesh implementation */
 	void _List_Print( void* list, Stream* stream );
-	
-	/* Append implementation */
-	unsigned _List_Append( void* list, void* data );
-	
-	/* Mutate implementation */
-	void _List_Mutate( void* list, unsigned index, void* data );
-	
-	
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
-	
-	/* Use this to get the current size of the list */
-	#define List_Size( self ) ((self)->elementCnt)
-	
-	/* Use this to check if a given index is within the list's bounds */
-	#define List_IsValidIndex( self, index ) (index < (self)->elementCnt)
-	
-	/* This guy gives access to the list's elements directly.  This is kind of dangerous
-	   as inherited lists, such as UniqueList, rely on elements only being added with one
-	   of 'Append', 'Prepend' or 'Insert*'. */
-	#define List_ElementAt( self, type, index ) (((type*)((List*)self)->elements)[index])
-	
-	/* Used to resize the list's maximum size */
-	void List_Resize( void* list, unsigned size );
-	
-	/* The standard means of adding an element to the list. */
-	#define List_Append( self, data ) (self)->_append( self, data )
-	
-	/* Modify the content of list element */
-	#define List_Mutate( self, index, data ) \
-		(self)->_mutate( self, index, data )
-	
-	/* Get the list's array */
-	#define List_Array( self, type ) \
-		(type*)(self)->elements
-	
-	
+
+	void List_SetDelta( void* list, unsigned delta );
+	void List_SetItemSize( void* list, unsigned itemSize );
+	void List_Clear( void* list );
+
+	void List_Insert( void* list, unsigned index, void* data );
+	void List_Append( void* list, void* data );
+	void List_Prepend( void* list, void* data );
+	void List_Remove( void* list, void* data );
+
+	void* List_GetItem( void* list, unsigned index );
+	unsigned List_GetSize( void* list );
+
+	#define List_Get( list, index, type )		\
+		((type*)List_GetItem( list, index ))
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
-	
 
+	void List_Expand( List* self );
+	void List_Contract( List* self );
+	void List_Destruct( List* self );
+
 #endif /* __Base_Container_List_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -189,9 +189,9 @@
 	FreeArray( tmpArray1D );
 }
 
-void MPIArray2D_Alltoall( unsigned* arraySizes, void** arrays, 
-			  unsigned** dstSizes, void*** dstArrays, 
-			  size_t itemSize, MPI_Comm comm )
+void MPIArray_Alltoall( unsigned* arraySizes, void** arrays, 
+			unsigned** dstSizes, void*** dstArrays, 
+			size_t itemSize, MPI_Comm comm )
 {
 	unsigned	nProcs;
 	unsigned	rank;
@@ -265,7 +265,7 @@
 void Array_1DTo2D( unsigned nBlocks, unsigned* sizes, void* srcArray, 
 		   void*** dstArrays, size_t itemSize )
 {
-	Stg_Byte**		tmp;
+	Stg_Byte**	tmp;
 	unsigned*	tmpSizes;
 	unsigned	curPos = 0;
 	unsigned	b_i;
@@ -275,17 +275,23 @@
 		return;
 	}
 
+	/* Allocate base array. */
+
+
 	/* Calculate sizes. */
 	tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, nBlocks );
 	for( b_i = 0; b_i < nBlocks; b_i++ )
 		tmpSizes[b_i] = sizes[b_i] * (unsigned)itemSize;
 
 	/* Allocate. */
-	tmp = Memory_Alloc_2DComplex_Unnamed( Stg_Byte, nBlocks, tmpSizes );
+	tmp = Memory_Alloc_Array_Unnamed( Stg_Byte*, nBlocks );
 	for( b_i = 0; b_i < nBlocks; b_i++ ) {
-		if( sizes[b_i] == 0 )
+		if( sizes[b_i] == 0 ) {
+			tmp[b_i] = NULL;
 			continue;
+		}
 
+		tmp[b_i] = Memory_Alloc_Array_Unnamed( Stg_Byte, tmpSizes[b_i] );
 		memcpy( tmp[b_i], (Stg_Byte*)srcArray + curPos, tmpSizes[b_i] );
 		curPos += tmpSizes[b_i];
 	}
@@ -327,7 +333,7 @@
 			void*	tmpArray;
 			char*	dest;
 			
-			tmpArray = Memory_Alloc_Array_Bytes_Unnamed( itemSize, netSize, "unknown" );
+			tmpArray = Memory_Alloc_Array_Bytes_Unnamed( itemSize, netSize, "" );
 
 			for( b_i = 0; b_i < nBlocks; b_i++ ) {
 				dest = tmpArray;

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/MPIRoutines.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,7 +41,6 @@
 #ifndef __Base_Foundation_MPIRoutines_h__
 #define __Base_Foundation_MPIRoutines_h__
 
-
 void MPIArray_Bcast( unsigned* arraySize, void** array, size_t itemSize, 
 		     unsigned root, MPI_Comm comm );
 
@@ -53,9 +52,9 @@
 			 unsigned** dstSizes, void*** dstArrays, 
 			 size_t itemSize, MPI_Comm comm );
 
-void MPIArray2D_Alltoall( unsigned* arraySizes, void** arrays, 
-			  unsigned** dstSizes, void*** dstArrays, 
-			  size_t itemSize, MPI_Comm comm );
+void MPIArray_Alltoall( unsigned* arraySizes, void** arrays, 
+			unsigned** dstSizes, void*** dstArrays, 
+			size_t itemSize, MPI_Comm comm );
 
 void Array_1DTo2D( unsigned nBlocks, unsigned* sizes, void* srcArray, 
 		   void*** dstArrays, size_t itemSize );
@@ -63,5 +62,4 @@
 void Array_2DTo1D( unsigned nBlocks, unsigned* sizes, void** srcArrays, 
 		   void** dstArray, size_t itemSize, unsigned** disps );
 
-
 #endif /* __Base_Foundation_MPIRoutines_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,308 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Mapping.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+
+#include "Container.h"
+
+
+/* Textual name of this class */
+const Type	Mapping_Type = "Mapping";
+unsigned long	Mapping_VacantIndex = (unsigned long)-1;
+unsigned long	Mapping_CollidedIndex = (unsigned long)-2;
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Mapping* Mapping_New( Name name ) {
+	return _Mapping_New( sizeof(Mapping), 
+			     Mapping_Type, 
+			     _Mapping_Delete, 
+			     _Mapping_Print, 
+			     NULL );
+}
+
+Mapping* _Mapping_New( MAPPING_DEFARGS ) {
+	Mapping*	self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Mapping) );
+	self = (Mapping*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+
+	/* Mapping info */
+	_Mapping_Init( self );
+
+	return self;
+}
+
+void _Mapping_Init( Mapping* self ) {
+	/* This class relies on the size of an unsigned long and a pointer being the same. */
+	assert( sizeof(unsigned long) == sizeof(List*) );
+
+	self->maxItems = 0;
+	self->nItems = 0;
+	self->keySize = 0;
+	self->valSize = 0;
+
+	self->hasher = NULL;
+	self->items[0] = NULL;
+	self->items[1] = NULL;
+	self->states = NULL;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Mapping_Delete( void* mapping ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	Mapping_Destruct( self );
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Mapping_Print( void* mapping, Stream* stream ) {
+	Mapping*	self = (Mapping*)mapping;
+	
+	/* Set the Journal for printing informations */
+	Stream* mappingStream;
+	mappingStream = Journal_Register( InfoStream_Type, "MappingStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Mapping (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Mapping_SetTupleSizes( void* mapping, unsigned keySize, unsigned valueSize ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	assert( self );
+
+	Mapping_Destruct( self );
+
+	self->keySize = keySize;
+	self->valSize = valueSize;
+	Mapping_InitHasher( self );
+	Mapping_InitItems( self );
+}
+
+void Mapping_SetMaxSize( void* mapping, unsigned maxSize ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	assert( self );
+
+	Mapping_DestructData( self );
+
+	self->maxItems = maxSize;
+	Mapping_InitHasher( self );
+	Mapping_InitItems( self );
+}
+
+void Mapping_Clear( void* mapping ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	assert( self );
+
+	self->nItems = 0;
+}
+
+void Mapping_Insert( void* mapping, void* key, void* value ) {
+	Mapping*	self = (Mapping*)mapping;
+	unsigned	hashInd;
+
+	assert( self );
+	assert( key );
+	assert( value );
+
+	hashInd = Hasher_Hash( self->hasher, key );
+	if( self->states[hashInd] == Mapping_ItemState_Vacant ) {
+		memcpy( self->items[0] + hashInd, key, self->keySize );
+		memcpy( self->items[1] + hashInd, value, self->valSize );
+		self->states[hashInd] = Mapping_ItemState_Occupied;
+	}
+	else
+		Mapping_Collision( self, key, value, hashInd );
+
+	self->nItems++;
+}
+
+void Mapping_Remove( void* mapping, void* key ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	assert( self );
+	assert( key );
+
+	/* TODO */
+	abort();
+}
+
+Bool Mapping_Map( void* mapping, void* key, void** value ) {
+	Mapping*	self = (Mapping*)mapping;
+	unsigned	hashInd;
+
+	assert( self );
+	assert( key );
+	assert( value );
+
+	hashInd = Hasher_Hash( self->hasher, key );
+	if( self->states[hashInd] == Mapping_ItemState_Occupied ) {
+		*value = (void*)(self->items[1] + hashInd);
+		return True;
+	}
+	else if( self->states[hashInd] == Mapping_ItemState_Collision ) {
+		List*		lists[2];
+		unsigned	itm_i;
+
+		lists[0] = *(List**)(self->items[0] + self->keySize * hashInd);
+		lists[1] = *(List**)(self->items[1] + self->valSize * hashInd);
+
+		for( itm_i = 0; itm_i < List_GetSize( lists[0] ); itm_i++ ) {
+			if( memcmp( List_GetItem( lists[0], itm_i ), key, self->keySize ) ) {
+				*value = List_GetItem( lists[1], itm_i );
+				return True;
+			}
+		}
+	}
+
+	return False;
+}
+
+unsigned Mapping_GetSize( void* mapping ) {
+	Mapping*	self = (Mapping*)mapping;
+
+	assert( self );
+
+	return self->nItems;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+void Mapping_InitHasher( Mapping* self ) {
+	if( self->keySize && self->maxItems ) {
+		if( self->keySize == sizeof(unsigned) )
+			self->hasher = (Hasher*)NumberHasher_New();
+		else
+			abort();
+
+		Hasher_SetKeySize( self->hasher, self->keySize );
+		Hasher_SetMaxItems( self->hasher, self->maxItems );
+	}
+}
+
+void Mapping_InitItems( Mapping* self ) {
+	if( self->maxItems && self->keySize && self->valSize ) {
+		unsigned	tblSize;
+
+		tblSize = Hasher_GetTableSize( self->hasher );
+		self->items[0] = Memory_Alloc_Array_Bytes_Unnamed( self->keySize, tblSize, "" );
+		self->items[1] = Memory_Alloc_Array_Bytes_Unnamed( self->valSize, tblSize, "" );
+		self->states = Memory_Alloc_Array_Unnamed( Mapping_ItemState, tblSize );
+		memset( self->states, 0, tblSize * sizeof(Mapping_ItemState) );
+	}
+}
+
+void Mapping_Collision( Mapping* self, void* key, void* val, unsigned hashInd ) {
+	List*	lists[2];
+
+	if( self->states[hashInd] == Mapping_ItemState_Occupied ) {
+		lists[0] = List_New();
+		lists[1] = List_New();
+		List_SetDelta( lists[0], 3 );
+		List_SetDelta( lists[1], 3 );
+		List_SetItemSize( lists[0], self->keySize );
+		List_SetItemSize( lists[1], self->valSize );
+		List_Append( lists[0], key );
+		List_Append( lists[1], val );
+
+		*(List**)(self->items[0] + self->keySize * hashInd) = lists[0];
+		*(List**)(self->items[1] + self->valSize * hashInd) = lists[1];
+
+		self->states[hashInd] = Mapping_ItemState_Collision;
+	}
+	else {
+		lists[0] = *(List**)(self->items[0] + self->keySize * hashInd);
+		lists[1] = *(List**)(self->items[1] + self->valSize * hashInd);
+
+		List_Append( lists[0], key );
+		List_Append( lists[1], val );
+	}
+}
+
+void Mapping_DestructData( Mapping* self ) {
+	if( self->hasher ) {
+		unsigned	itm_i;
+
+		for( itm_i = 0; itm_i < Hasher_GetTableSize( self->hasher ); itm_i++ ) {
+			if( self->states[itm_i] != Mapping_ItemState_Collision )
+				continue;
+
+			FreeObject( self->items[0] + self->keySize * itm_i );
+			FreeObject( self->items[1] + self->valSize * itm_i );
+		}
+	}
+
+	KillArray( self->items[0] );
+	KillArray( self->items[1] );
+	KillArray( self->states );
+
+	self->nItems = 0;
+	self->maxItems = 0;
+}
+
+void Mapping_Destruct( Mapping* self ) {
+	Mapping_DestructData( self );
+
+	self->keySize = 0;
+	self->valSize = 0;
+
+	KillObject( self->hasher );
+}

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/Mapping.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,123 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Mapping.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Base_Container_Mapping_h__
+#define __Base_Contianer_Mapping_h__
+
+	/** Textual name of this class */
+	extern const Type		Mapping_Type;
+	extern const unsigned long	Mapping_VacantIndex;
+	extern const unsigned long	Mapping_CollidedIndex;
+
+	/** Virtual function types */
+
+	/** Class contents */
+	typedef struct {
+		void*	key;
+		void*	value;
+	} Mapping_Tuple;
+
+	#define __Mapping				\
+		/* General info */			\
+		__Stg_Class				\
+							\
+		/* Virtual info */			\
+							\
+		/* Mapping info */			\
+		unsigned		maxItems;	\
+		unsigned		delta;		\
+		unsigned		nItems;		\
+		unsigned		keySize;	\
+		unsigned		valSize;	\
+		Stg_Byte*		keys;		\
+		Stg_Byte*		vals;		\
+							\
+		Hasher*			hasher;		\
+		unsigned long*		itemInds;
+
+	struct Mapping { __Mapping };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define MAPPING_DEFARGS		\
+		STG_CLASS_DEFARGS
+
+	#define MAPPING_PASSARGS	\
+		STG_CLASS_PASSARGS
+
+	Mapping* Mapping_New();
+	Mapping* _Mapping_New( MAPPING_DEFARGS );
+	void _Mapping_Init( Mapping* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Mapping_Delete( void* mapping );
+	void _Mapping_Print( void* mapping, Stream* stream );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void Mapping_SetTupleSizes( void* mapping, unsigned keySize, unsigned valueSize );
+	void Mapping_SetMaxSize( void* mapping, unsigned maxSize );
+	void Mapping_SetDelta( void* mapping, unsigned delta );
+
+	void Mapping_Insert( void* mapping, void* key, void* value );
+	void Mapping_Remove( void* mapping, void* key );
+	void Mapping_Clear( void* mapping );
+
+	unsigned Mapping_GetSize( void* mapping );
+	Bool Mapping_Map( void* mapping, void* key, void** value );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void Mapping_InitHasher( Mapping* self );
+	void Mapping_InitItems( Mapping* self );
+	void Mapping_Collision( Mapping* self, void* key, void* val, unsigned hashInd );
+	void Mapping_DestructData( Mapping* self );
+	void Mapping_Destruct( Mapping* self );
+
+#endif /* __Base_Container_Mapping_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,137 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: NumberHasher.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+
+#include "Container.h"
+
+
+/* Textual name of this class */
+const Type NumberHasher_Type = "NumberHasher";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+NumberHasher* NumberHasher_New( Name name ) {
+	return _NumberHasher_New( sizeof(NumberHasher), 
+				  NumberHasher_Type, 
+				  _NumberHasher_Delete, 
+				  _NumberHasher_Print, 
+				  NULL, 
+				  _NumberHasher_Hash, 
+				  _NumberHasher_CalcTableSize );
+}
+
+NumberHasher* _NumberHasher_New( NUMBERHASHER_DEFARGS ) {
+	NumberHasher*	self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(NumberHasher) );
+	self = (NumberHasher*)_Hasher_New( HASHER_PASSARGS );
+
+	/* Virtual info */
+
+	/* NumberHasher info */
+	_NumberHasher_Init( self );
+
+	return self;
+}
+
+void _NumberHasher_Init( NumberHasher* self ) {
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _NumberHasher_Delete( void* hasher ) {
+	NumberHasher*	self = (NumberHasher*)hasher;
+
+	/* Delete the parent. */
+	_Hasher_Delete( self );
+}
+
+void _NumberHasher_Print( void* hasher, Stream* stream ) {
+	NumberHasher*	self = (NumberHasher*)hasher;
+	
+	/* Set the Journal for printing informations */
+	Stream* hasherStream;
+	hasherStream = Journal_Register( InfoStream_Type, "NumberHasherStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "NumberHasher (ptr): (%p)\n", self );
+	_Hasher_Print( self, stream );
+}
+
+unsigned _NumberHasher_Hash( void* hasher, void* key ) {
+	NumberHasher*	self = (NumberHasher*)hasher;
+
+	assert( self );
+	assert( self->keySize == sizeof(unsigned) );
+
+	return *(unsigned*)key % self->tableSize;
+}
+
+void _NumberHasher_CalcTableSize( void* hasher ) {
+	NumberHasher*	self = (NumberHasher*)hasher;
+
+	assert( self );
+
+	/*
+	** Need to transform the maximum number of items into a number suitable for modulus on a number less than
+	** the maximum items, probably some kind of prime.
+	*/
+
+	/* Expand the table size by a prescribed factor. */
+	self->tableSize = (unsigned)((double)self->maxItems * 1.18);
+
+	/* Make table size odd. */
+	if( self->tableSize % 2 == 0 )
+		self->tableSize++;
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/NumberHasher.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,92 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: NumberHasher.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Base_Container_NumberHasher_h__
+#define __Base_Contianer_NumberHasher_h__
+
+	/** Textual name of this class */
+	extern const Type NumberHasher_Type;
+
+	/** Virtual function types */
+
+	/** Class contents */
+	#define __NumberHasher			\
+		/* General info */		\
+		__Hasher			\
+						\
+		/* Virtual info */		\
+						\
+		/* NumberHasher info */
+
+	struct NumberHasher { __NumberHasher };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define NUMBERHASHER_DEFARGS	\
+		HASHER_DEFARGS
+
+	#define NUMBERHASHER_PASSARGS	\
+		HASHER_PASSARGS
+
+	NumberHasher* NumberHasher_New();
+	NumberHasher* _NumberHasher_New( NUMBERHASHER_DEFARGS );
+	void _NumberHasher_Init( NumberHasher* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _NumberHasher_Delete( void* hasher );
+	void _NumberHasher_Print( void* hasher, Stream* stream );
+
+	unsigned _NumberHasher_Hash( void* hasher, void* key );
+	void _NumberHasher_CalcTableSize( void* hasher );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+#endif /* __Base_Container_NumberHasher_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -192,6 +192,18 @@
 }
 
 
+void RangeSet_AddIndices( void* rangeSet, unsigned nInds, unsigned* inds ) {
+	RangeSet*	self = (RangeSet*)rangeSet;
+	RangeSet*	tmpSet;
+
+	assert( self );
+
+	tmpSet = RangeSet_New();
+	RangeSet_SetIndices( tmpSet, nInds, inds );
+	RangeSet_Union( self, tmpSet );
+}
+
+
 void RangeSet_Clear( void* rangeSet ) {
 	RangeSet*	self = (RangeSet*)rangeSet;
 
@@ -355,7 +367,7 @@
 }
 
 
-unsigned RangeSet_GetNIndices( void* rangeSet ) {
+unsigned RangeSet_GetSize( void* rangeSet ) {
 	RangeSet*	self = (RangeSet*)rangeSet;
 
 	assert( self );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/RangeSet.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -98,6 +98,7 @@
 	*/
 
 	void RangeSet_SetIndices( void* rangeSet, unsigned nInds, unsigned* inds );
+	void RangeSet_AddIndices( void* rangeSet, unsigned nInds, unsigned* inds );
 	void RangeSet_Clear( void* rangeSet );
 	void RangeSet_Union( void* rangeSet, RangeSet* rSet );
 	void RangeSet_Intersection( void* rangeSet, RangeSet* rSet );
@@ -106,7 +107,7 @@
 
 	void RangeSet_GetIndices( void* rangeSet, unsigned* nInds, unsigned** inds );
 	Bool RangeSet_HasIndex( void* rangeSet, unsigned ind );
-	unsigned RangeSet_GetNIndices( void* rangeSet );
+	unsigned RangeSet_GetSize( void* rangeSet );
 	unsigned RangeSet_GetNRanges( void* rangeSet );
 	void RangeSet_GetRange( void* rangeSet, unsigned ind, RangeSet_Range* range );
 	void RangeSet_Pickle( void* rangeSet, unsigned* nBytes, Stg_Byte** bytes );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,7 +53,6 @@
 /* Textual name of this class */
 const Type UIntMap_Type = "UIntMap";
 
-
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
@@ -150,46 +149,59 @@
 ** Public Functions
 */
 
-void UIntMap_Insert( void* map, unsigned key, unsigned val ) {
+void UIntMap_Insert( void* map, unsigned key, unsigned value ) {
 	UIntMap*	self = (UIntMap*)map;
-	unsigned	data[2];
+	BTreeNode*	node;
 
 	assert( self );
 
-	data[0] = key;
-	data[1] = val;
-	BTree_InsertNode( self->btree, data, 2 * sizeof(unsigned) );
-	self->size = self->btree->nodeCount;
+	node = BTree_FindNode( self->btree, &key );
+	if( node )
+		((unsigned*)node->data)[1] = value;
+	else {
+		unsigned	data[2];
+
+		data[0] = key;
+		data[1] = value;
+		BTree_InsertNode( self->btree, data, 2 * sizeof(unsigned) );
+		self->size = self->btree->nodeCount;
+	}
 }
 
-void UIntMap_Clear( void* map ) {
+void UIntMap_Remove( void* map, unsigned key ) {
 	UIntMap*	self = (UIntMap*)map;
+	BTreeNode*	node;
 
 	assert( self );
 
-	FreeObject( self->btree );
-	self->btree = BTree_New( UIntMap_DataCompare, UIntMap_DataCopy, UIntMap_DataDelete, NULL, 
-				  BTREE_NO_DUPLICATES );
+	node = BTree_FindNode( self->btree, &key );
+	assert( node );
+	BTree_DeleteNode( self->btree, node );
 }
 
-Bool UIntMap_HasKey( void* map, unsigned key ) {
+void UIntMap_Clear( void* map ) {
 	UIntMap*	self = (UIntMap*)map;
 
 	assert( self );
 
-	return (BTree_FindNode( self->btree, &key ) != NULL) ? True : False;
+	FreeObject( self->btree );
+	self->btree = BTree_New( UIntMap_DataCompare, UIntMap_DataCopy, UIntMap_DataDelete, NULL, 
+				  BTREE_NO_DUPLICATES );
 }
 
-unsigned UIntMap_Map( void* map, unsigned key ) {
+Bool UIntMap_Map( void* map, unsigned key, unsigned* value ) {
 	UIntMap*	self = (UIntMap*)map;
 	BTreeNode*	node;
 
 	assert( self );
 
 	node = BTree_FindNode( self->btree, &key );
-	assert( node );
+	if( node ) {
+		*value = ((unsigned*)node->data)[1];
+		return True;
+	}
 
-	return ((unsigned*)node->data)[1];
+	return False;
 }
 
 void UIntMap_GetItems( void* map, unsigned* nItems, unsigned** keys, unsigned** values ) {
@@ -208,6 +220,14 @@
 	*values = parseStruct.vals;
 }
 
+unsigned UIntMap_GetSize( void* map ) {
+	UIntMap*	self = (UIntMap*)map;
+
+	assert( self );
+
+	return self->size;
+}
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/UIntMap.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -90,12 +90,12 @@
 	** Public functions
 	*/
 
-	void UIntMap_Insert( void* map, unsigned key, unsigned val );
+	void UIntMap_Insert( void* map, unsigned key, unsigned value );
+	void UIntMap_Remove( void* map, unsigned key );
 	void UIntMap_Clear( void* map );
-
-	Bool UIntMap_HasKey( void* map, unsigned key );
-	unsigned UIntMap_Map( void* map, unsigned key );
+	Bool UIntMap_Map( void* map, unsigned key, unsigned* value );
 	void UIntMap_GetItems( void* map, unsigned* nItems, unsigned** keys, unsigned** values );
+	unsigned UIntMap_GetSize( void* map );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/src/types.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/src/types.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -50,6 +50,9 @@
 	typedef struct PtrMap				PtrMap;
 	typedef struct IndexMap				IndexMap;
 	typedef struct List				List;
+	typedef struct Hasher				Hasher;
+	typedef struct NumberHasher			NumberHasher;
+	typedef struct Mapping				Mapping;
 	typedef struct Array				Array;
 	typedef struct LinkedListNode			LinkedListNode;
 	typedef struct LinkedList			LinkedList;
@@ -57,10 +60,8 @@
 	typedef struct HashTable_Entry		HashTable_Entry;
 	typedef struct HashTable_Index		HashTable_Index;
 	typedef struct HashTable			HashTable;
-	typedef struct UniqueList			UniqueList;
 	typedef struct Set				Set;
 	typedef struct PtrSet				PtrSet;
-	typedef struct Map				Map;
 	typedef struct _Heap			_Heap;
 	typedef struct MaxHeap			MaxHeap;
 	typedef struct UIntMap			UIntMap;

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMPIRoutines.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMPIRoutines.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMPIRoutines.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -285,7 +285,7 @@
 		srcArrays[i][0] = i;
 	}
 
-	MPIArray2D_Alltoall( srcSizes, (void**)srcArrays, &dstSizes, (void***)&dstArrays, sizeof(unsigned), MPI_COMM_WORLD );
+	MPIArray_Alltoall( srcSizes, (void**)srcArrays, &dstSizes, (void***)&dstArrays, sizeof(unsigned), MPI_COMM_WORLD );
 	FreeArray( srcSizes );
 	FreeArray( srcArrays );
 	if( rank == watch ) {

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMapping.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMapping.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testMapping.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,143 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: testNumberHasher.c 2136 2004-09-30 02:47:13Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+#include "Base/Container/Container.h"
+
+
+void genSet( unsigned maxItems, unsigned range, unsigned* set ) {
+	unsigned	curItem;
+
+	srand( time( NULL ) );
+
+	curItem = 0;
+	while( curItem < maxItems ) {
+		unsigned	item;
+		unsigned	itm_j;
+
+		item = (unsigned)(((double)rand() / (double)RAND_MAX) * (double)range);
+		for( itm_j = 0; itm_j < curItem; itm_j++ ) {
+			if( set[itm_j] == item )
+				break;
+		}
+		if( itm_j < curItem )
+			continue;
+
+		set[curItem++] = item;
+	}
+}
+
+
+Bool testMapping( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
+	unsigned	maxItems = 100;
+	unsigned	range = 10 * maxItems;
+	Mapping*	map;
+	unsigned*	items;
+	unsigned	itm_i;
+
+	map = Mapping_New();
+	Mapping_SetTupleSizes( map, sizeof(unsigned), sizeof(unsigned) );
+	Mapping_SetMaxSize( map, maxItems );
+
+	items = Memory_Alloc_Array_Unnamed( unsigned, maxItems );
+	genSet( maxItems, range, items );
+
+	for( itm_i = 0; itm_i < maxItems; itm_i++ )
+		Mapping_Insert( map, items + itm_i, items + itm_i );
+
+	if( Mapping_GetSize( map ) != maxItems ) {
+		result = False;
+		goto done;
+	}
+
+	for( itm_i = 0; itm_i < maxItems; itm_i++ ) {
+		unsigned*	val;
+
+		Mapping_Map( map, items + itm_i, (void**)&val );
+		if( *val != items[itm_i] ) {
+			result = False;
+			goto done;
+		}
+	}
+
+done:
+	FreeArray( items );
+	FreeObject( map );
+
+	return result;
+}
+
+
+#define nTests	1
+
+TestSuite_Test	tests[nTests] = {{"mapping", testMapping, 10}};
+
+
+int main( int argc, char* argv[] ) {
+	TestSuite*	suite;
+
+	/* Initialise MPI, get world info. */
+	MPI_Init( &argc, &argv );
+
+	/* Initialise StGermain. */
+	BaseFoundation_Init( &argc, &argv );
+	BaseIO_Init( &argc, &argv );
+	BaseContainer_Init( &argc, &argv );
+
+	/* Create the test suite. */
+	suite = TestSuite_New();
+	TestSuite_SetProcToWatch( suite, (argc >= 2) ? atoi( argv[1] ) : 0 );
+	TestSuite_SetTests( suite, nTests, tests );
+
+	/* Run the tests. */
+	TestSuite_Run( suite );
+
+	/* Destroy test suites. */
+	FreeObject( suite );
+
+	/* Finalise StGermain. */
+	BaseContainer_Finalise();
+	BaseIO_Finalise();
+	BaseFoundation_Finalise();
+
+	/* Close off MPI */
+	MPI_Finalize();
+
+	return MPI_SUCCESS;
+}

Added: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testNumberHasher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testNumberHasher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testNumberHasher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,184 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: testNumberHasher.c 2136 2004-09-30 02:47:13Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Foundation/Foundation.h"
+#include "Base/IO/IO.h"
+#include "Base/Container/Container.h"
+
+
+void genSet( unsigned maxItems, unsigned range, unsigned* set ) {
+	unsigned	curItem;
+
+	srand( time( NULL ) );
+
+	curItem = 0;
+	while( curItem < maxItems ) {
+		unsigned	item;
+		unsigned	itm_j;
+
+		item = (unsigned)(((double)rand() / (double)RAND_MAX) * (double)range);
+		for( itm_j = 0; itm_j < curItem; itm_j++ ) {
+			if( set[itm_j] == item )
+				break;
+		}
+		if( itm_j < curItem )
+			continue;
+
+		set[curItem++] = item;
+	}
+}
+
+double genFill( unsigned maxItems, unsigned range ) {
+	unsigned	nIts = 100;
+	NumberHasher*	hasher;
+	unsigned*	items;
+	unsigned*	stats;
+	double		fill, avgFill;
+	unsigned	itm_i, it_i;
+
+	hasher = NumberHasher_New();
+	Hasher_SetKeySize( hasher, sizeof(unsigned) );
+	Hasher_SetMaxItems( hasher, maxItems );
+
+	items = Memory_Alloc_Array_Unnamed( unsigned, maxItems );
+	stats = Memory_Alloc_Array_Unnamed( unsigned, Hasher_GetTableSize( hasher ) );
+
+	avgFill = 0.0;
+
+	for( it_i = 0; it_i < nIts; it_i++ ) {
+		genSet( maxItems, range, items );
+		memset( stats, 0, Hasher_GetTableSize( hasher ) * sizeof(unsigned) );
+
+		for( itm_i = 0; itm_i < maxItems; itm_i++ ) {
+			unsigned	hashInd;
+
+			hashInd = Hasher_Hash( hasher, items + itm_i );
+			stats[hashInd]++;
+		}
+
+		fill = 0.0;
+
+		for( itm_i = 0; itm_i < Hasher_GetTableSize( hasher ); itm_i++ ) {
+			if( stats[itm_i] )
+				fill += 1.0;
+		}
+		fill /= (double)maxItems;
+
+		avgFill += fill;
+	}
+
+	avgFill /= (double)nIts;
+
+	FreeArray( items );
+	FreeArray( stats );
+	FreeObject( hasher );
+
+	return avgFill;
+}
+
+
+Bool testCompleteFill( unsigned rank, unsigned nProcs, unsigned watch ) {
+	unsigned	maxItems = 100;
+	double		avgFill;
+
+	avgFill = genFill( maxItems, maxItems );
+
+	return avgFill > (1.0 - 1e-8) && avgFill < (1.0 + 1e-8);
+}
+
+Bool testCloseFill( unsigned rank, unsigned nProcs, unsigned watch ) {
+	unsigned	maxItems = 100;
+	double		fillTol = 0.6;
+	unsigned	rangeFac = 10;
+	double		avgFill;
+
+	avgFill = genFill( maxItems, maxItems * rangeFac );
+
+	return avgFill >= fillTol;
+}
+
+Bool testFarFill( unsigned rank, unsigned nProcs, unsigned watch ) {
+	unsigned	maxItems = 100;
+	double		fillTol = 0.6;
+	unsigned	rangeFac = 1000;
+	double		avgFill;
+
+	avgFill = genFill( maxItems, maxItems * rangeFac );
+
+	return avgFill >= fillTol;
+}
+
+
+#define nTests	3
+
+TestSuite_Test	tests[nTests] = {{"complete fill ratio", testCompleteFill, 1}, 
+				 {"close fill ratio", testCloseFill, 100}, 
+				 {"far fill ratio", testFarFill, 100}};
+
+
+int main( int argc, char* argv[] ) {
+	TestSuite*	suite;
+
+	/* Initialise MPI, get world info. */
+	MPI_Init( &argc, &argv );
+
+	/* Initialise StGermain. */
+	BaseFoundation_Init( &argc, &argv );
+	BaseIO_Init( &argc, &argv );
+	BaseContainer_Init( &argc, &argv );
+
+	/* Create the test suite. */
+	suite = TestSuite_New();
+	TestSuite_SetProcToWatch( suite, (argc >= 2) ? atoi( argv[1] ) : 0 );
+	TestSuite_SetTests( suite, nTests, tests );
+
+	/* Run the tests. */
+	TestSuite_Run( suite );
+
+	/* Destroy test suites. */
+	FreeObject( suite );
+
+	/* Finalise StGermain. */
+	BaseContainer_Finalise();
+	BaseIO_Finalise();
+	BaseFoundation_Finalise();
+
+	/* Close off MPI */
+	MPI_Finalize();
+
+	return MPI_SUCCESS;
+}

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testRangeSet.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testRangeSet.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testRangeSet.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -158,7 +158,7 @@
 	RangeSet_Union( set0, set1 );
 	FreeObject( set1 );
 	if( rank == watch ) {
-		if( RangeSet_GetNIndices( set0 ) != nInds + nInds / 2 || 
+		if( RangeSet_GetSize( set0 ) != nInds + nInds / 2 || 
 		    RangeSet_GetNRanges( set0 ) != nInds / 10 + nInds / 20 )
 		{
 			FreeObject( set0 );
@@ -192,7 +192,7 @@
 	RangeSet_Intersection( set0, set1 );
 	FreeObject( set1 );
 	if( rank == watch ) {
-		if( RangeSet_GetNIndices( set0 ) != nInds / 2 || 
+		if( RangeSet_GetSize( set0 ) != nInds / 2 || 
 		    RangeSet_GetNRanges( set0 ) != nInds / 20 )
 		{
 			FreeObject( set0 );
@@ -226,7 +226,7 @@
 	RangeSet_Subtraction( set0, set1 );
 	FreeObject( set1 );
 	if( rank == watch ) {
-		if( RangeSet_GetNIndices( set0 ) != nInds / 2 || 
+		if( RangeSet_GetSize( set0 ) != nInds / 2 || 
 		    RangeSet_GetNRanges( set0 ) != nInds / 20 )
 		{
 			FreeObject( set0 );

Modified: long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testUIntMap.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testUIntMap.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Container/tests/testUIntMap.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -112,11 +112,12 @@
 	if( rank == watch ) {
 		unsigned	size = 5;
 		UIntMap*	map = UIntMap_New();
+		unsigned	val;
 		unsigned	i;
 
 		fillMap( map, size );
 		for( i = 0; i < size; i++ )
-			if( UIntMap_Map( map, i ) != size + i ) break;
+			if( !UIntMap_Map( map, i, &val ) || val != size + i ) break;
 		if( i < size ) {
 			FreeObject( map );
 			return False;
@@ -133,6 +134,7 @@
 		unsigned	size = 5;
 		unsigned	nReps = 10;
 		UIntMap*	map;
+		unsigned	val;
 		unsigned	r_i;
 
 		for( r_i = 0; r_i < nReps; r_i++ ) {
@@ -141,7 +143,7 @@
 			map = UIntMap_New();
 			fillMap( map, size );
 			for( i = 0; i < size; i++ )
-				if( UIntMap_Map( map, i ) != size + i ) break;
+				if( !UIntMap_Map( map, i, &val ) || val != size + i ) break;
 			if( i < size ) {
 				FreeObject( map );
 				return False;

Modified: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Foundation.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Foundation.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Foundation.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -57,6 +57,7 @@
 	#include "NamedObject_Register.h"
 	#include "TimeMonitor.h"
 	#include "MemMonitor.h"
+	#include "Numerics.h"
 	#include "TestSuite.h"
 	#include "Init.h"
 	#include "Finalise.h"

Modified: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Memory.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -733,10 +733,10 @@
 		_Memory_InternalMalloc( (itemSize) * (xLength) * (yLength) * (zLength) * (wLength) )
 	
 	#define _Memory_Realloc_Macro( ptr, newSize ) \
-		_Memory_InternalRealloc( (ptr), (newSize) );
+		_Memory_InternalRealloc( (ptr), (newSize) )
 
 	#define _Memory_Realloc_Array_Macro( ptr, itemSize, newLength ) \
-		_Memory_InternalRealloc( (ptr), (itemSize) * (newLength) );
+		_Memory_InternalRealloc( (ptr), (itemSize) * (newLength) )
 
 	#define _Memory_Free_Macro( ptr ) \
 		_Memory_InternalFree( (ptr) )

Added: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,43 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Numerics.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "types.h"
+#include "Numerics.h"
+
+
+const double	Num_Epsilon = 1e-13;
+
+
+Bool Num_Approx( double var, double val ) {
+	return (var >= val - Num_Epsilon && var <= val + Num_Epsilon);
+}

Added: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/Numerics.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,48 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: RangeSet.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Base_Foundation_Numerics_h__
+#define __Base_Foundation_Numerics_h__
+
+	extern const double	Num_Epsilon;
+
+	Bool Num_Approx( double var, double val );
+
+#endif /* __Base_Foundation_Numerics_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/shortcuts.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/shortcuts.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Base/Foundation/src/shortcuts.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,8 +47,38 @@
 #endif
 #ifndef MIN
 #define MIN( a, b ) ( ( (a) < (b) ) ? (a) : (b) )
-#endif	
+#endif
 
+
+#define AllocArray( type, size )					\
+	((size) ? Memory_Alloc_Array_Unnamed( type, size ) : NULL)
+
+#define AllocNamedArray( type, size, name )				\
+	((size) ? Memory_Alloc_Array( type, size, name ) : NULL)
+
+#define AllocArray2D( type, size0, size1 )						\
+	((size0 && size1) ? Memory_Alloc_2DArray_Unnamed( type, size0, size1 ) : NULL)
+
+#define AllocNamedArray2D( type, size0, size1, name )					\
+	((size0 && size1) ? Memory_Alloc_2DArray( type, size0, size1, name ) : NULL)
+
+#define AllocComplex2D( type, base, sizes )						\
+	((base && sizes) ? Memory_Alloc_2DComplex_Unnamed( type, base, sizes ) : NULL)
+
+#define AllocNamedComplex2D( type, base, sizes, name )					\
+	((base && sizes) ? Memory_Alloc_2DComplex( type, base, sizes, name ) : NULL)
+
+#define ReallocArray( ptr, type, size )					\
+	((ptr) ? ((size) ? Memory_Realloc_Array( ptr, type, size ) : 	\
+		  (Memory_Free( ptr ), NULL)) : 			\
+	 (size) ? Memory_Alloc_Array_Unnamed( type, size ) : NULL)
+
+#define ReallocNamedArray( ptr, type, size, name )			\
+	((ptr) ? ((size) ? Memory_Realloc_Array( ptr, type, size ) : 	\
+		  (Memory_Free( ptr ), NULL)) : 			\
+	 ((size) ? Memory_Alloc_Array( type, size, name ) : NULL))
+
+
 #define FreeArray( ptr )			\
 	if( ptr )				\
 		Memory_Free( ptr )

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Geometry.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Geometry.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Geometry.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -71,6 +71,8 @@
 	#include "stg_lapack.h"
 /*	#include "FullTensorMath.h" */
 	#include "TensorMultMath.h"
+	#include "Simplex.h"
+	#include "Hex.h"
 	#include "Init.h"
 	#include "Finalise.h"
 

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,64 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Simplex.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Geometry.h"
+
+
+double Hex_Volume( double** verts, unsigned* inc, unsigned* inds ) {
+	static const unsigned	nTets = 5;
+	static const unsigned	tets[5][4] = {{0, 1, 2, 4}, 
+					      {1, 2, 3, 7}, 
+					      {1, 4, 5, 7}, 
+					      {2, 4, 6, 7}, 
+					      {1, 2, 4, 7}};
+	unsigned		curTet[4];
+	double			vol;
+	unsigned		tet_i, ind_i;
+
+	assert( verts );
+	assert( inc );
+	assert( inds );
+
+	vol = 0.0;
+	for( tet_i = 0; tet_i < nTets; tet_i++ ) {
+		for( ind_i = 0; ind_i < 4; ind_i++ )
+			curTet[ind_i] = inds[tets[tet_i][ind_i]];
+		vol += Simplex_Volume( verts, inc, curTet );
+	}
+
+	return vol;
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Hex.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,46 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Hex.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Geometry_Hex_h__
+#define __Discretisaton_Geometry_Hex_h__
+
+	double Hex_Volume( double** verts, unsigned* inc, unsigned* inds );
+
+#endif /* __Discretisaton_Geometry_Hex_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Line.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Line.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Line.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,11 +47,11 @@
 		(line)[0] = (a)[1] - (b)[1]; \
 		(line)[1] = (b)[0] - (a)[0]; \
 		(line)[2] = 0.0; \
-		Vector_Norm( line, line ); \
-		(line)[3] = Vector_Dot( line, a )
+		Vec_Norm3D( line, line ); \
+		(line)[3] = Vec_Dot3D( line, a )
 	
 	#define Stg_Line_PointIsInside( line, point ) \
-		((Vector_Dot( line, point) >= line[3]) ? True : False)
+		((Vec_Dot3D( line, point) >= line[3]) ? True : False)
 
 
 	/*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Plane.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Plane.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Plane.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -46,19 +46,19 @@
 	
 	/* calculate a plane equation from two non-parallel vectors and a point */
 	#define Plane_CalcFromVec( dest, axisA, axisB, pointOnPlane )		\
-		Vector_Cross( dest, axisA, axisB );				\
-		Vector_Norm( dest, dest );					\
-		dest[3] = Vector_Dot( dest, pointOnPlane )
+		Vec_Cross3D( dest, axisA, axisB );				\
+		Vec_Norm3D( dest, dest );					\
+		dest[3] = Vec_Dot3D( dest, pointOnPlane )
 		
 	
 	/* return the plane's normal in dest */
 	#define Plane_Normal( dest, plane )		\
-		Vector_Set( dest, plane )
+		Vec_Set3D( dest, plane )
 		
 	
 	/* calculate the shortest distance from plane to point */
 	#define Plane_DistanceToPoint( plane, point )		\
-		(Vector_Dot( plane, point ) - plane[3])
+		(Vec_Dot3D( plane, point ) - plane[3])
 	
 	
 	/* determines if point is in front of the plane based on the direction of the plane's normal */
@@ -68,7 +68,7 @@
 	
 	/* determines if the point is situated on the plane */
 	#define Plane_PointIsOnPlane( plane, point )				\
-		(Vector_Dot( plane, point ) == plane[3] ? True : False)
+		(Vec_Dot3D( plane, point ) == plane[3] ? True : False)
 		
 
 	/*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/RMatrix.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/RMatrix.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/RMatrix.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -52,10 +52,10 @@
 	
 	RMatrix_LoadIdentity( dest );
 	RMatrix_ApplyRotationY( dest, ArcTan( zAxis[0], zAxis[2] ) );
-	RMatrix_ApplyRotationX( dest, asin( zAxis[1] / Vector_Mag( zAxis ) ) );
+	RMatrix_ApplyRotationX( dest, asin( zAxis[1] / Vec_Mag3D( zAxis ) ) );
 	
 	RMatrix_VectorMult( nxa, dest, xAxis );
-	RMatrix_ApplyRotationZ( dest, asin( nxa[1] / Vector_Mag( nxa ) ) );
+	RMatrix_ApplyRotationZ( dest, asin( nxa[1] / Vec_Mag3D( nxa ) ) );
 }
 
 
@@ -116,5 +116,5 @@
 	tmp[1] = mat[3] * vec[0] + mat[4] * vec[1] + mat[5] * vec[2];
 	tmp[2] = mat[6] * vec[0] + mat[7] * vec[1] + mat[8] * vec[2];
 	
-	Vector_Set( dest, tmp );
+	Vec_Set3D( dest, tmp );
 }

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,216 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Simplex.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Geometry.h"
+
+
+Bool Simplex_Search3D( double** verts, unsigned* inc, 
+		       unsigned nSimplices, unsigned** inds, 
+		       double* point, double* bc, unsigned* inside )
+{
+	unsigned	s_i;
+
+	assert( inds );
+
+	for( s_i = 0; s_i < nSimplices; s_i++ ) {
+		unsigned	ind_i;
+
+		Simplex_Barycenter3D( verts, inc, inds[s_i], point, bc );
+		for( ind_i = 0; ind_i < 4; ind_i++ ) {
+			if( bc[ind_i] < 0.0 || bc[ind_i] > 1.0 )
+				break;
+		}
+		if( ind_i == 4 ) {
+			*inside = s_i;
+			return True;
+		}
+	}
+
+	return False;
+}
+
+Bool Simplex_Search2D( double** verts, unsigned* inc, 
+		       unsigned nSimplices, unsigned** inds, 
+		       double* point, double* bc, unsigned* inside )
+{
+	unsigned	s_i;
+
+	assert( inds );
+
+	for( s_i = 0; s_i < nSimplices; s_i++ ) {
+		unsigned	ind_i;
+
+		Simplex_Barycenter2D( verts, inc, inds[s_i], point, bc );
+		for( ind_i = 0; ind_i < 3; ind_i++ ) {
+			if( bc[ind_i] < 0.0 || bc[ind_i] > 1.0 )
+				break;
+		}
+		if( ind_i == 3 ) {
+			*inside = s_i;
+			return True;
+		}
+	}
+
+	return False;
+}
+
+void Simplex_Barycenter3D( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc ) {
+	double*	tet[4];
+	double	x0, y0, z0;
+	double	x1, y1, z1;
+	double	x2, y2, z2;
+	double	x3, y3, z3;
+	double	px, py, pz;
+	double	den;
+
+	assert( verts );
+	assert( inc );
+	assert( inds );
+	assert( point );
+	assert( bc );
+	assert( verts[inc[inds[0]]] );
+	assert( verts[inc[inds[1]]] );
+	assert( verts[inc[inds[2]]] );
+	assert( verts[inc[inds[3]]] );
+
+	tet[0] = verts[inc[inds[0]]];
+	tet[1] = verts[inc[inds[1]]];
+	tet[2] = verts[inc[inds[2]]];
+	tet[3] = verts[inc[inds[3]]];
+	x0 = tet[0][0]; x1 = tet[1][0]; x2 = tet[2][0]; x3 = tet[3][0];
+	y0 = tet[0][1]; y1 = tet[1][1]; y2 = tet[2][1]; y3 = tet[3][1];
+	z0 = tet[0][2]; z1 = tet[1][2]; z2 = tet[2][2]; z3 = tet[3][2];
+	px = point[0]; py = point[1]; pz = point[2];
+	den = 1.0 / (x1*(y0*(z3 - z2) + y2*(z0 - z3) + y3*(z2 - z0)) + 
+			     x0*(y2*(z3 - z1) + y1*(z2 - z3) + y3*(z1 - z2)) + 
+			     x2*(y1*(z3 - z0) + y0*(z1 - z3) + y3*(z0 - z1)) + 
+			     x3*(y0*(z2 - z1) + y1*(z0 - z2) + y2*(z1 - z0)));
+
+	bc[1] = -(x0*(py*(z3 - z2) + y2*(pz - z3) + y3*(z2 - pz)) + 
+		   px*(y2*(z3 - z0) + y0*(z2 - z3) + y3*(z0 - z2)) + 
+		   x2*(y0*(z3 - pz) + py*(z0 - z3) + y3*(pz - z0)) + 
+		   x3*(py*(z2 - z0) + y0*(pz - z2) + y2*(z0 - pz))) * den;
+	if( Num_Approx( bc[1], 0.0 ) ) bc[1] = 0.0;
+	else if( Num_Approx( bc[1], 1.0 ) ) bc[1] = 1.0;
+
+	bc[2] = (x0*(py*(z3 - z1) + y1*(pz - z3) + y3*(z1 - pz)) + 
+		  px*(y1*(z3 - z0) + y0*(z1 - z3) + y3*(z0 - z1)) + 
+		  x1*(y0*(z3 - pz) + py*(z0 - z3) + y3*(pz - z0)) + 
+		  x3*(py*(z1 - z0) + y0*(pz - z1) + y1*(z0 - pz))) * den;
+	if( Num_Approx( bc[2], 0.0 ) ) bc[2] = 0.0;
+	else if( Num_Approx( bc[2], 1.0 ) ) bc[2] = 1.0;
+
+	bc[3] = -(x0*(py*(z2 - z1) + y1*(pz - z2) + y2*(z1 - pz)) + 
+		   px*(y1*(z2 - z0) + y0*(z1 - z2) + y2*(z0 - z1)) + 
+		   x1*(y0*(z2 - pz) + py*(z0 - z2) + y2*(pz - z0)) + 
+		   x2*(py*(z1 - z0) + y0*(pz - z1) + y1*(z0 - pz))) * den;
+	if( Num_Approx( bc[3], 0.0 ) ) bc[3] = 0.0;
+	else if( Num_Approx( bc[3], 1.0 ) ) bc[3] = 1.0;
+
+	bc[0] = 1.0 - bc[1] - bc[2] - bc[3];
+	if( Num_Approx( bc[0], 0.0 ) ) bc[0] = 0.0;
+	else if( Num_Approx( bc[0], 1.0 ) ) bc[0] = 1.0;
+}
+
+void Simplex_Barycenter2D( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc ) {
+	double*	tri[3];
+	double	a;
+	double	b;
+	double	c;
+	double	d;
+	double	e;
+	double	f;
+
+	assert( verts );
+	assert( inc );
+	assert( inds );
+	assert( point );
+	assert( bc );
+	assert( verts[inc[inds[0]]] );
+	assert( verts[inc[inds[1]]] );
+	assert( verts[inc[inds[2]]] );
+
+	tri[0] = verts[inc[inds[0]]];
+	tri[1] = verts[inc[inds[1]]];
+	tri[2] = verts[inc[inds[2]]];
+	a = tri[0][0] - tri[2][0];
+	b = tri[1][0] - tri[2][0];
+	c = tri[2][0] - point[0];
+	d = tri[0][1] - tri[2][1];
+	e = tri[1][1] - tri[2][1];
+	f = tri[2][1] - point[1];
+
+	bc[0] = (b * f - c * e) / (a * e - b * d);
+	if( Num_Approx( bc[0], 0.0 ) ) bc[0] = 0.0;
+	else if( Num_Approx( bc[0], 1.0 ) ) bc[0] = 1.0;
+	bc[1] = (a * f - c * d) / (b * d - a * e);
+	if( Num_Approx( bc[1], 0.0 ) ) bc[1] = 0.0;
+	else if( Num_Approx( bc[1], 1.0 ) ) bc[1] = 1.0;
+	bc[2] = 1.0 - bc[0] - bc[1];
+	if( Num_Approx( bc[2], 0.0 ) ) bc[2] = 0.0;
+	else if( Num_Approx( bc[2], 1.0 ) ) bc[2] = 1.0;
+}
+
+double Simplex_Volume( double** verts, unsigned* inc, unsigned* inds ) {
+	static const double	fac = 1.0 / 6.0;
+	double			da[3], db[3], dc[3];
+
+	assert( verts );
+	assert( inc );
+	assert( inds );
+
+	Vec_Sub3D( da, verts[inc[inds[2]]], verts[inc[inds[0]]] );
+	Vec_Sub3D( db, verts[inc[inds[2]]], verts[inc[inds[1]]] );
+	Vec_Sub3D( dc, verts[inc[inds[2]]], verts[inc[inds[2]]] );
+	Vec_Cross3D( db, db, dc );
+
+	return fac * fabs( Vec_Dot3D( da, db ) );
+}
+
+double Simplex_Area( double** verts, unsigned* inc, unsigned* inds ) {
+	unsigned	a = inc[inds[0]];
+	unsigned	b = inc[inds[1]];
+	unsigned	c = inc[inds[2]];
+
+	assert( verts );
+	assert( inc );
+	assert( inds );
+
+	return 0.5 * fabs( verts[a][0] * (verts[c][1] - verts[b][1]) + 
+			   verts[b][0] * (verts[a][1] - verts[c][1]) + 
+			   verts[c][0] * (verts[b][1] - verts[a][1]) );
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,57 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Simplex.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Geometry_Simplex_h__
+#define __Discretisaton_Geometry_Simplex_h__
+
+	Bool Simplex_Search3D( double** verts, unsigned* inc, 
+			       unsigned nSimplices, unsigned** inds, 
+			       double* point, double* bc, unsigned* inside );
+	Bool Simplex_Search2D( double** verts, unsigned* inc, 
+			       unsigned nSimplices, unsigned** inds, 
+			       double* point, double* bc, unsigned* inside );
+
+	void Simplex_Barycenter3D( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc );
+	void Simplex_Barycenter2D( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc );
+
+	double Simplex_Volume( double** verts, unsigned* inc, unsigned* inds );
+	double Simplex_Area( double** verts, unsigned* inc, unsigned* inds );
+
+#endif /* __Discretisaton_Geometry_Simplex_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/Simplex.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">Simplex</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StGermain</param>
+<param name="Location">StGermain/Discretisation/Geometry/src</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
+<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
+<param name="Parent">Stg_Component</param>
+<param name="Description">...</param>
+
+</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -50,43 +50,45 @@
 ** Functions
 */
 
-/*
-** Base operations.
-*/
+/** (Assumes 3D) Define a cross product of 2 vectors */
+void Vec_Cross3D( double* dst, double* a, double* b ) {
+	double	tmp[3];
 
-/** (Assumes 3D) Define a cross product of 2 vectors */
-void Vector_Cross( Coord dst, Coord a, Coord b ) {
-	Coord	tmp;
-	
 	tmp[0] = a[1] * b[2] - a[2] * b[1];
 	tmp[1] = a[2] * b[0] - a[0] * b[2];
 	tmp[2] = a[0] * b[1] - a[1] * b[0];
-	
-	Vector_Set( dst, tmp );
+
+	Vec_Set3D( dst, tmp );
 }
 
 /** (Assumes 3D) Divide a vector by a real */
-void Vector_Div( Coord dest, Coord a, double s )
-{
+void Vec_Div2D( double* dst, double* a, double s ) {
 	double	inv = 1.0 / s;
-	
-	dest[0] = a[0] * inv;
-	dest[1] = a[1] * inv;
-	dest[2] = a[2] * inv;
+
+	Vec_Scale2D( dst, a, inv );
 }
 
+void Vec_Div3D( double* dst, double* a, double s ) {
+	double	inv = 1.0 / s;
+
+	Vec_Scale3D( dst, a, inv );
+}
+
 /** Calculate the normal of the vector. (ie length = 1 )*/
-void Vector_Norm( Coord dest, Coord a )
-{
-	double	invMag = 1.0 / sqrt( a[0] * a[0] + a[1] * a[1] + a[2] * a[2] );
-	
-	dest[0] = a[0] * invMag;
-	dest[1] = a[1] * invMag;
-	dest[2] = a[2] * invMag;
+void Vec_Norm3D( double* dst, double* a ) {
+	double	invMag = 1.0 / Vec_Mag3D( a );
+
+	Vec_Scale3D( dst, a, invMag );
 }
 
+void Vec_Norm2D( double* dst, double* a ) {
+	double	invMag = 1.0 / Vec_Mag2D( a );
+
+	Vec_Scale2D( dst, a, invMag );
+}
+
 /** Swap coordinates according to i,j, k index */
-void Vector_Swizzle( Coord dst, Coord src, unsigned char iInd, unsigned char jInd, unsigned char kInd ) {
+void Vec_Swizzle( double* dst, double* src, unsigned char iInd, unsigned char jInd, unsigned char kInd ) {
 	assert( iInd < 3 && jInd < 3 && kInd < 3 );
 	
 	dst[0] = src[iInd];

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/src/VectorMath.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -42,88 +42,88 @@
 
 #ifndef __Discretisation_Geometry_VectorMath_h__
 #define __Discretisation_Geometry_VectorMath_h__
-	
-	
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Macros
 	*/
-	
-	/*
-	** Base operations.
-	*/
-	
-	/** copy src onto dest */
-	#define Vector_Set( dest, src )		\
-		(dest)[0] = (src)[0];		\
-		(dest)[1] = (src)[1];		\
-		(dest)[2] = (src)[2]
-	
-	
-	/** set dest's components to src */
-	#define Vector_SetScalar( dest, x, y, z )		\
-		(dest)[0] = x;					\
-		(dest)[1] = y;					\
-		(dest)[2] = z
-		
-	
-	/** dest = a + b */
-	#define Vector_Add( dest, a, b )		\
-		(dest)[0] = (a)[0] + (b)[0];		\
-		(dest)[1] = (a)[1] + (b)[1];		\
-		(dest)[2] = (a)[2] + (b)[2]
-		
-	
-	/** dest = a - b */
-	#define Vector_Sub( dest, a, b )		\
-		(dest)[0] = (a)[0] - (b)[0];		\
-		(dest)[1] = (a)[1] - (b)[1];		\
-		(dest)[2] = (a)[2] - (b)[2]
-		
-	
-	/** returns the dot product of a and b */
-	#define Vector_Dot( a, b )						\
-		((a)[0] * (b)[0] + (a)[1] * (b)[1] + (a)[2] * (b)[2])
-		
-	
-	/** dest = a * s */
-	#define Vector_Mult( dest, a, s )		\
-		(dest)[0] = (a)[0] * (s);		\
-		(dest)[1] = (a)[1] * (s);		\
-		(dest)[2] = (a)[2] * (s)
-		
-	
-	/** returns the magnitude of a */
-	#define Vector_Mag( a )								\
-		sqrt( (a)[0] * (a)[0] + (a)[1] * (a)[1] + (a)[2] * (a)[2] )
-		
-		
-	/*
-	** Combinations of base operations.
-	*/
-	
-	/** vector projection of a onto b, store result in dest */
-	#define Vector_Proj( dest, a, b )					\
-		Vector_Norm( (dest), (b) );					\
-		Vector_Mult( (dest), (dest), Vector_Dot( a, b ) )
 
+	#define Vec_Set2D( dst, src )			\
+		((dst)[0] = (src)[0],			\
+		 (dst)[1] = (src)[1], 0)
 
+	#define Vec_Set3D( dst, src )			\
+		(Vec_Set2D( dst, src ),			\
+		 (dst)[2] = (src)[2], 0)
+
+	#define Vec_SetScalar2D( dst, x, y )		\
+		((dst)[0] = x,				\
+		 (dst)[1] = y, 0)
+
+	#define Vec_SetScalar3D( dst, x, y, z )		\
+		(Vec_SetScalar2D( dst, x, y ),		\
+		 (dst)[2] = z, 0)
+
+	#define Vec_Add2D( dst, a, b )			\
+		((dst)[0] = (a)[0] + (b)[0],		\
+		 (dst)[1] = (a)[1] + (b)[1], 0)
+
+	#define Vec_Add3D( dst, a, b )			\
+		(Vec_Add2D( dst, a, b ),		\
+		 (dst)[2] = (a)[2] + (b)[2], 0)
+
+	#define Vec_Sub2D( dst, a, b )			\
+		((dst)[0] = (a)[0] - (b)[0],		\
+		 (dst)[1] = (a)[1] - (b)[1], 0)
+
+	#define Vec_Sub3D( dst, a, b )			\
+		(Vec_Sub2D( dst, a, b ),		\
+		 (dst)[2] = (a)[2] - (b)[2], 0)
+
+	#define Vec_Dot2D( a, b )			\
+		((a)[0] * (b)[0] + (a)[1] * (b)[1])
+
+	#define Vec_Dot3D( a, b )			\
+		(Vec_Dot2D( a, b ) + (a)[2] * (b)[2])
+
+	#define Vec_Scale2D( dst, a, s )		\
+		((dst)[0] = (a)[0] * (s),		\
+		 (dst)[1] = (a)[1] * (s), 0)
+
+	#define Vec_Scale3D( dst, a, s )		\
+		(Vec_Scale2D( dst, a, s ),		\
+		 (dst)[2] = (a)[2] * (s), 0)
+
+	#define Vec_MagSq2D( a )			\
+		Vec_Dot2D( a, a )
+
+	#define Vec_MagSq3D( a )			\
+		Vec_Dot3D( a, a )
+
+	#define Vec_Mag2D( a )				\
+		sqrt( Vec_MagSq2D( a ) )
+
+	#define Vec_Mag3D( a )				\
+		sqrt( Vec_MagSq3D( a ) )
+
+	#define Vec_Proj2D( dst, a, b )					\
+		(Vec_Norm2D( dst, b ),					\
+		 Vec_Scale2D( dst, dst, Vec_Dot2D( a, b ) ), 0)
+
+	#define Vec_Proj3D( dst, a, b )					\
+		(Vec_Norm3D( dst, b ),					\
+		 Vec_Scale3D( dst, dst, Vec_Dot3D( a, b ) ), 0)
+
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Functions
 	*/
-	
-	/*
-	** Base operations.
-	*/
-	
-	/* Vector cross-product. */
-	void Vector_Cross( Coord dst, Coord a, Coord b );
-	
-	/* dest = a / s */
-	void Vector_Div( Coord dest, Coord a, double s );
-	
-	/* normalise a, store in dest */
-	void Vector_Norm( Coord dest, Coord a );
 
+	void Vec_Cross3D( double* dst, double* a, double* b );
+	void Vec_Div2D( double* dst, double* a, double s );
+	void Vec_Div3D( double* dst, double* a, double s );
+	void Vec_Norm2D( double* dst, double* a );
+	void Vec_Norm3D( double* dst, double* a );
+
 	void StGermain_RotateVector(double* rotatedVector, double* vector, double* w, double theta) ;
 	void StGermain_RotateCoordinateAxis( double* rotatedVector, double* vector, Index axis, double theta ) ;
 	void StGermain_VectorSubtraction(double* destination, double* vector1, double* vector2, Index dim) ;
@@ -141,20 +141,22 @@
 
 	void StGermain_TriangleCentroid( double* centroid, double* pos0, double* pos1, double* pos2, Index dim) ;
 	double StGermain_TriangleArea( double* pos0, double* pos1, double* pos2, Index dim ) ;
-	double StGermain_ConvexQuadrilateralArea( double* vertexCoord1, double* vertexCoord2, double* vertexCoord3, double* vertexCoord4, Dimension_Index dim ) ;
-	double StGermain_ParallelepipedVolume( 
-		double* coordLeftBottomFront, 
-		double* coordRightBottomFront, 
-		double* coordLeftTopFront, 
-		double* coordLeftBottomBack );
+	double StGermain_ConvexQuadrilateralArea( double* vertexCoord1, double* vertexCoord2, 
+						  double* vertexCoord3, double* vertexCoord4, 
+						  Dimension_Index dim ) ;
+	double StGermain_ParallelepipedVolume( double* coordLeftBottomFront, 
+					       double* coordRightBottomFront, 
+					       double* coordLeftTopFront, 
+					       double* coordLeftBottomBack );
 	double StGermain_ParallelepipedVolumeFromCoordList( Coord_List list ) ;
 	
 	void StGermain_AverageCoord( double* coord, double** coordList, Index count, Dimension_Index dim ) ;
 	void StGermain_PrintVector( Stream* stream, double* vector, Index dim ) ;
+
 	/** Print a named vector. Name comes from vector variable in file*/
-	#define StGermain_PrintNamedVector(stream, vector, dim) \
-		do {	\
-			Journal_Printf( stream, #vector " - " ); \
+	#define StGermain_PrintNamedVector(stream, vector, dim)		\
+		do {							\
+			Journal_Printf( stream, #vector " - " );	\
 			StGermain_PrintVector( stream, vector, dim );	\
 		} while(0)
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testComplexVectorMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testComplexVectorMath.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testComplexVectorMath.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -43,7 +43,6 @@
 	int rank;
 	int numProcessors;
 	int procToWatch;
-	Stream* stream;
 	
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
@@ -56,7 +55,7 @@
 	DiscretisationGeometry_Init( &argc, &argv );
 	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
 	
-	stream = Journal_Register( Info_Type, "ComplexVectorMath" );
+	Stream* stream = Journal_Register( Info_Type, "ComplexVectorMath" );
 	
 	if( argc >= 2 ) {
 		procToWatch = atoi( argv[1] );
@@ -210,8 +209,6 @@
 		Cmplx *coordList[4];
 		int d;
 		double realVector[3], tolerance;
-		Cmplx dotProductResult;
-		Cmplx value;
 		
 		tolerance = STG_COMPLEXVECTOR_TOL;
 		
@@ -396,7 +393,7 @@
 		Journal_Printf( stream, "Check Dot Product Function\n");
 		Journal_Printf( stream, "value = A . B \n");
 		
-		
+		Cmplx dotProductResult;
 		for (d = 0; d <=6; d++) {
 		StGermain_ComplexVectorDotProduct(A, B, d, dotProductResult);			
 		Journal_Printf( stream, "dim = %d dot product = %2.3f + %2.3f i\n",
@@ -449,6 +446,7 @@
 
 		Journal_Printf( stream, "\n****************************\n");
 		Journal_Printf( stream, "Check StGermain_ComplexVectorCrossProductMagnitude\n");
+		Cmplx value;
 		A[0][REAL_PART] = 1.0; A[0][IMAG_PART] = 1.0; 
 		A[1][REAL_PART] = 2.0; A[1][IMAG_PART] = 0.0;
 		A[2][REAL_PART] = 3.0; A[2][IMAG_PART] = 0.0;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testFullTensorMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testFullTensorMath.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testFullTensorMath.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -43,7 +43,6 @@
 	int rank;
 	int numProcessors;
 	int procToWatch;
-	Stream*  stream;
 	
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
@@ -56,8 +55,8 @@
 	DiscretisationGeometry_Init( &argc, &argv );
 	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
 	
-	stream = Journal_Register( InfoStream_Type, "FullTensorMath" );
-
+	
+	Stream*  stream = Journal_Register( InfoStream_Type, "FullTensorMath" );
 	stJournal->firewallProducesAssert = False;
 	Stream_RedirectFile(Journal_Register( Error_Type, "FullTensorMath"), "FullTensorMath.txt");
 	Stream_RedirectFile(stream, "FullTensorMath.txt");

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testTensorMultMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testTensorMultMath.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testTensorMultMath.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,7 +44,6 @@
 	int rank;
 	int numProcessors;
 	int procToWatch;
-	Stream*  stream;
 	
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
@@ -58,7 +57,7 @@
 	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
 	
 	
-	stream = Journal_Register( InfoStream_Type, "TensorMultMath" );
+	Stream*  stream = Journal_Register( InfoStream_Type, "TensorMultMath" );
 	/* stout -> file redirect code */
 	//stJournal->firewallProducesAssert = False;
 	//Stream_RedirectFile(Journal_Register( Error_Type, "TensorMultMath"), "TensorMultMath.txt");
@@ -80,10 +79,6 @@
 		double result, errorValue;
 		Dimension_Index row, col;
 		Bool tensorMultMathTest_Flag;
-		double  **nonSquareMatrixA, **nonSquareMatrixB;
-		double	**nonSquareMatrixResult, **nonSquareMatrixAT;
-		double solutionVector[4], solutionVectorCompare[4];
-		Bool error_flag;
 		#define STG_TENSORMULTMATHTEST_ERROR 1.0e-14;
 		
 		errorValue = STG_TENSORMULTMATHTEST_ERROR;
@@ -733,8 +728,9 @@
 
 		Journal_Printf(stream, "\n/*******************    Test 17   ************************/\n");
 		Journal_Printf( stream, "Test function Journal_PrintNonSquareMatrix \n\n");
+		double  **nonSquareMatrixA, **nonSquareMatrixB;
+		double	**nonSquareMatrixResult, **nonSquareMatrixAT;
 
-
 		nonSquareMatrixA = Memory_Alloc_2DArray(double, 3, 4, "NonSquareMatrixA" );
 		nonSquareMatrixB = Memory_Alloc_2DArray(double, 4, 2, "NonSquareMatrixB" );
 		nonSquareMatrixAT = Memory_Alloc_2DArray(double, 4, 3, "NonSquareMatrixAT" );
@@ -783,6 +779,8 @@
 		Journal_Printf(stream, "\n/*******************    Test 20   ************************/\n");
 		Journal_Printf( stream, "Test function NonSquareMatrix_MatrixVectorMultiplication \n\n");
 		Journal_Printf( stream, "Tested against solutions at http://www.uni-bonn.de/~manfear/solve_lineq.php\n\n");
+		double solutionVector[4], solutionVectorCompare[4];
+		Bool error_flag;
 		
 		vector[0] = 1; vector[1] = 2; vector[2] = 3;
 		solutionVectorCompare[0] = 32; solutionVectorCompare[1] = 38;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testVectorMath.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testVectorMath.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Geometry/tests/testVectorMath.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -67,27 +67,27 @@
 
 		printf( "Basic tests:\n" );
 		printf( "d = { %g, %g, %g }\n", d[0], d[1], d[2] );
-		Vector_SetScalar( d, 2.0, 0.5, 1.5 );
+		Vec_SetScalar3D( d, 2.0, 0.5, 1.5 );
 		printf( "d = { %g, %g, %g }\n", d[0], d[1], d[2] );
 
-		Vector_Set( c, d );
+		Vec_Set3D( c, d );
 		printf( "c = d = { %g, %g, %g }\n", c[0], c[1], c[2] );
 
-		Vector_Add( b, c, d );
+		Vec_Add3D( b, c, d );
 		printf( "b = c + d = {%g, %g, %g}\n", b[0], b[1], b[2] );
 
-		Vector_Sub( a, d, b );
+		Vec_Sub3D( a, d, b );
 		printf( "a = d - b = {%g, %g, %g}\n", a[0], a[1], a[2] );
 
-		Vector_Cross( d, a, e );
+		Vec_Cross3D( d, a, e );
 		printf( "d = a x e = {%g, %g, %g}\n", d[0], d[1], d[2] );
 
-		printf( "a . c = %g\n", Vector_Dot( a, c ) );
+		printf( "a . c = %g\n", Vec_Dot3D( a, c ) );
 
-		Vector_Mult( b, b, 2.0 );
+		Vec_Scale3D( b, b, 2.0 );
 		printf( "b = 2b = { %g, %g, %g }\n", b[0], b[1], b[2] );
 
-		Vector_Norm( b, b );
+		Vec_Norm3D( b, b );
 		printf( "b^ = { %g, %g, %g }\n", b[0], b[1], b[2] );
 
 		printf( "Complete test:\n" );
@@ -110,7 +110,7 @@
 					a[2] = 10.0 / (double)k;
 					b[2] = 30.0 / (double)k;
 
-					Vector_Proj( c, a, b );
+					Vec_Proj3D( c, a, b );
 
 					printf( "{ %g, %g, %g }\n", c[0], c[1], c[2] );
 				}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,357 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "BodyNL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type BodyNL_Type = "BodyNL";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-BodyNL* BodyNL_DefaultNew( Name name )
-{
-	return (BodyNL*) _BodyNL_New( 
-		sizeof(BodyNL), 
-		BodyNL_Type, 
-		_BodyNL_Delete, 
-		_BodyNL_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)BodyNL_DefaultNew,
-		_BodyNL_Construct,
-		_BodyNL_Build,
-		_BodyNL_Initialise,
-		_BodyNL_Execute,
-		_BodyNL_Destroy,
-		name,
-		False,
-		_BodyNL_NodeCoordAt,
-		_BodyNL_BuildNodeCoords,
-		_BodyNL_ElementNodeCount,
-		_BodyNL_BuildElementNodes,
-		_BodyNL_NodeElementCount,
-		_BodyNL_BuildNodeElements,
-		_BodyNL_CalcNodeCountInDimFromElementCount,
-		NULL,
-		NULL,
-		NULL );
-}
-
-BodyNL* BodyNL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	return _BodyNL_New( 
-		sizeof(BodyNL), 
-		BodyNL_Type, 
-		_BodyNL_Delete, 
-		_BodyNL_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)BodyNL_DefaultNew,
-		_BodyNL_Construct,
-		_BodyNL_Build,
-		_BodyNL_Initialise,
-		_BodyNL_Execute,
-		_BodyNL_Destroy,
-		name,
-		True,
-		_BodyNL_NodeCoordAt,
-		_BodyNL_BuildNodeCoords,
-		_BodyNL_ElementNodeCount,
-		_BodyNL_BuildElementNodes,
-		_BodyNL_NodeElementCount,
-		_BodyNL_BuildNodeElements,
-		_BodyNL_CalcNodeCountInDimFromElementCount,
-		dictionary,
-		elementLayout,
-		topology );
-}
-
-
-void BodyNL_Init(
-		BodyNL*						self,
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	/* General info */
-	self->type = BodyNL_Type;
-	self->_sizeOfSelf = sizeof(BodyNL);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _BodyNL_Delete;
-	self->_print = _BodyNL_Print;
-	self->_copy = NULL;
-	self->nodeCoordAt = _BodyNL_NodeCoordAt;
-	self->buildNodeCoords = _BodyNL_BuildNodeCoords;
-	self->elementNodeCount = _BodyNL_ElementNodeCount;
-	self->buildElementNodes = _BodyNL_BuildElementNodes;
-	self->nodeElementCount = _BodyNL_NodeElementCount;
-	self->buildNodeElements = _BodyNL_BuildNodeElements;
-	self->calcNodeCountInDimFromElementCount = _BodyNL_CalcNodeCountInDimFromElementCount;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_NodeLayout_Init( (NodeLayout*)self, elementLayout, topology );
-	
-	/* BodyNL info */
-	_BodyNL_Init( self );
-}
-
-
-BodyNL* _BodyNL_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		NodeLayout_NodeCoordAtFunction*			nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*		buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	BodyNL* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(BodyNL) );
-	self = (BodyNL*)_NodeLayout_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		nodeCoordAt,
-		buildNodeCoords,
-		elementNodeCount,
-		buildElementNodes,
-		nodeElementCount,
-		buildNodeElements,
-		calcNodeCountInDimFromElementCount,
-		dictionary,
-		elementLayout,
-		topology );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* BodyNL info */
-	if( initFlag ){
-		_BodyNL_Init( self );
-	}
-	
-	return self;
-}
-
-void _BodyNL_Init(
-		BodyNL*					self )
-{
-	/* General and Virtual info should already be set */
-	
-	/* BodyNL info */
-	self->isConstructed = True;
-	self->nodeCount = self->elementLayout->elementCount;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _BodyNL_Delete( void* bodyNL ) {
-	BodyNL* self = (BodyNL*)bodyNL;
-	
-	/* Stg_Class_Delete parent */
-	_NodeLayout_Delete( self );
-}
-
-
-void _BodyNL_Print( void* bodyNL, Stream* stream ) {
-	BodyNL* self = (BodyNL*)bodyNL;
-	
-	/* Set the Journal for printing informations */
-	Stream* bodyNLStream;
-	bodyNLStream = Journal_Register( InfoStream_Type, "BodyNLStream" );
-
-	/* Print parent */
-	_NodeLayout_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "BodyNL (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* BodyNL info */
-}
-
-void _BodyNL_Construct( void* bodyNL, Stg_ComponentFactory *cf, void* data ){
-	BodyNL *self = (BodyNL*)bodyNL;
-	ElementLayout *elementLayout = NULL;
-	Topology *topology = NULL;
-
-	self->dictionary = cf->rootDict;
-	
-	elementLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  ElementLayout_Type, ElementLayout,  True, data ) ;	
-	topology =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Topology_Type, Topology,  True, data ) ;
-	
-	_NodeLayout_Init( (NodeLayout*)self, elementLayout, topology );
-	_BodyNL_Init( self );
-}
-	
-void _BodyNL_Build( void* bodyNL, void* data ){
-	
-}
-	
-void _BodyNL_Initialise( void* bodyNL, void* data ){
-	
-}
-	
-void _BodyNL_Execute( void* bodyNL, void* data ){
-	
-}
-
-void _BodyNL_Destroy( void* bodyNL, void* data ){
-	
-}
-
-void _BodyNL_NodeCoordAt( void* bodyNL, Node_Index index, Coord coord ) {
-	BodyNL*		self = (BodyNL*)bodyNL;
-	ElementLayout*  eLayout = self->elementLayout;
-	Geometry*       geometry = eLayout->geometry;
-	Index*		indices = Memory_Alloc_Array( Index, eLayout->elementCornerCount, "BodyNL" );
-	Index		i;
-	
-	eLayout->buildCornerIndices( eLayout, index, indices );
-	coord[0] = 0.0;
-	coord[1] = 0.0;
-	coord[2] = 0.0;
-	
-	for( i = 0; i < eLayout->elementCornerCount; i++ ) {
-		Coord corner;
-		
-		geometry->pointAt( geometry, indices[i], corner );
-		coord[0] += corner[0];
-		coord[1] += corner[1];
-		coord[2] += corner[2];
-	}
-	
-	coord[0] /= (double)eLayout->elementCornerCount;
-	coord[1] /= (double)eLayout->elementCornerCount;
-	coord[2] /= (double)eLayout->elementCornerCount;
-}
-
-
-void _BodyNL_BuildNodeCoords( void* bodyNL, Coord_List coords ) {
-	BodyNL*		self = (BodyNL*)bodyNL;
-	Index		n_I;
-	
-	for( n_I = 0; n_I < self->nodeCount; n_I++ )
-		_BodyNL_NodeCoordAt( self, n_I, coords[n_I] );
-}
-
-
-Node_Index _BodyNL_ElementNodeCount( void* bodyNL, Element_GlobalIndex index ) {
-	return 1;
-}
-
-
-void _BodyNL_BuildElementNodes( void* bodyNL, Element_GlobalIndex globalIndex, Element_Nodes nodes ) {
-	nodes[0] = globalIndex;
-}
-
-
-Element_GlobalIndex _BodyNL_NodeElementCount( void* bodyNL, Node_GlobalIndex globalIndex ) {
-	return 1;
-}
-
-
-void _BodyNL_BuildNodeElements( void* bodyNL, Node_GlobalIndex globalIndex, Node_Elements elements ) {
-	elements[0] = globalIndex;
-}
-
-Node_GlobalIndex _BodyNL_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim )
-{
-	/* A body node layout has exactly as many nodes as elements in each dim */
-	return elementCountInDim;
-}
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,154 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_BodyNL_h__
-#define __Discretisaton_Mesh_BodyNL_h__
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type BodyNL_Type;
-
-	/* BodyNL information */
-	#define __BodyNL \
-		/* General info */ \
-		__NodeLayout \
-		\
-		/* Virtual info */ \
-		\
-		/* BodyNL info ... */
-	struct _BodyNL { __BodyNL };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a BodyNL with all additional parameters */
-	BodyNL* BodyNL_DefaultNew( Name name );
-	
-	BodyNL* BodyNL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-	
-	/* Initialise a BodyNL */
-	void BodyNL_Init(
-		BodyNL*						self,
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-	
-	/* Creation implementation */
-	BodyNL* _BodyNL_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		NodeLayout_NodeCoordAtFunction*			nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*		buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-	
-	/* Initialisation implementation functions */
-	void _BodyNL_Init(
-		BodyNL*						self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete bodyNL implementation */
-	void _BodyNL_Delete( void* bodyNL );
-	
-	/* Print bodyNL implementation */
-	void _BodyNL_Print( void* bodyNL, Stream* stream );
-	
-	void _BodyNL_Construct( void* bodyNL, Stg_ComponentFactory *cf, void* data );
-	
-	void _BodyNL_Build( void* bodyNL, void* data );
-	
-	void _BodyNL_Initialise( void* bodyNL, void* data );
-	
-	void _BodyNL_Execute( void* bodyNL, void* data );
-
-	void _BodyNL_Destroy( void* bodyNL, void* data );
-	
-	void _BodyNL_NodeCoordAt( void* bodyNL, Node_Index index, Coord coord );
-	
-	void _BodyNL_BuildNodeCoords( void* bodyNL, Coord_List coords );
-	
-	Node_GlobalIndex _BodyNL_ElementNodeCount( void* bodyNL, Element_GlobalIndex globalIndex );
-	
-	void _BodyNL_BuildElementNodes( void* bodyNL, Element_GlobalIndex globalIndex, Element_Nodes nodes );
-	
-	Element_GlobalIndex _BodyNL_NodeElementCount( void* bodyNL, Node_GlobalIndex globalIndex );
-	
-	void _BodyNL_BuildNodeElements( void* bodyNL, Node_GlobalIndex globalIndex, Node_Elements elements );
-	
-	Node_GlobalIndex _BodyNL_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_BodyNL_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/BodyNL.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">BodyNL</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">NodeLayout</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">ElementLayout</param>
-		<param name="Type">ElementLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 253 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Topology</param>
-		<param name="Type">Topology</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 254 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -46,14 +46,13 @@
 #include "Decomp.h"
 #include "Decomp_Sync.h"
 #include "MeshTopology.h"
+#include "Mesh_ElementType.h"
+#include "Mesh_HexType.h"
 #include "MeshClass.h"
 #include "MeshGenerator.h"
 #include "CartesianGenerator.h"
 
-#include "MeshDecomp.h"
-#include "HexaMD.h"
 
-
 /* Textual name of this class */
 const Type CartesianGenerator_Type = "CartesianGenerator";
 
@@ -66,7 +65,7 @@
 					CartesianGenerator_Type, 
 					_CartesianGenerator_Delete, 
 					_CartesianGenerator_Print, 
-					_CartesianGenerator_Copy, 
+					NULL, 
 					(void* (*)(Name))_CartesianGenerator_New, 
 					_CartesianGenerator_Construct, 
 					_CartesianGenerator_Build, 
@@ -101,7 +100,8 @@
 	self->crdMin = NULL;
 	self->crdMax = NULL;
 
-	self->topoGrid = NULL;
+	self->vertGrid = NULL;
+	self->elGrid = NULL;
 	self->procGrid = NULL;
 	self->origin = NULL;
 	self->range = NULL;
@@ -133,149 +133,90 @@
 	_MeshGenerator_Print( self, stream );
 }
 
-void* _CartesianGenerator_Copy( void* generator, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	CartesianGenerator*	self = (CartesianGenerator*)generator;
-	CartesianGenerator*	newCartesianGenerator;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
-
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newCartesianGenerator = (CartesianGenerator*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
-
-	/* Deep or shallow? */
-	if( deep ) {
-	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newCartesianGenerator;
-#endif
-
-	return NULL;
-}
-
 void _CartesianGenerator_Construct( void* generator, Stg_ComponentFactory* cf, void* data ) {
 	CartesianGenerator*	self = (CartesianGenerator*)generator;
 	Dictionary*		dict;
+	Dictionary_Entry_Value*	tmp;
+	char*			rootKey;
 	Dictionary_Entry_Value*	sizeList;
-	Dictionary_Entry_Value*	minList;
-	Dictionary_Entry_Value*	maxList;
+	Dictionary_Entry_Value	*minList, *maxList;
 	unsigned		nDims;
-	double*			crdMin;
-	double*			crdMax;
+	double			*crdMin, *crdMax;
 	unsigned*		size;
-	unsigned		rank;
+	unsigned		shadowDepth;
 	unsigned		d_i;
 
-	HexaMD*			decomp;
-
 	assert( self );
 	assert( cf );
 
 	/* Call parent construct. */
 	_MeshGenerator_Construct( self, cf, data );
 
-	/* Check if we're using the antiquated version. */
-	decomp = Stg_ComponentFactory_ConstructByKey( cf, self->name, "decomp", HexaMD, False, data );
-	if( decomp ) {
-		/* Read the number of dimensions. */
-		dict = cf->rootDict;
-		nDims = Dictionary_GetDouble( dict, "dim" );
+	/* Rip out the components structure as a dictionary. */
+	dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
 
-		/* Allocate for values. */
+	/* Read the desired number of dimensions. */
+	nDims = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "dim", 0 );
+	assert( nDims );
+
+	/* Read the sizes. */
+	sizeList = Dictionary_Get( dict, "size" );
+	assert( sizeList );
+	assert( Dictionary_Entry_Value_GetCount( sizeList ) >= nDims );
+	size = Memory_Alloc_Array_Unnamed( unsigned, nDims );
+	for( d_i = 0; d_i < nDims; d_i++ ) {
+		tmp = Dictionary_Entry_Value_GetElement( sizeList, d_i );
+		rootKey = Dictionary_Entry_Value_AsString( tmp );
+
+		if( !Stg_StringIsNumeric( rootKey ) )
+			tmp = Dictionary_Get( cf->rootDict, rootKey );
+		size[d_i] = Dictionary_Entry_Value_AsUnsignedInt( tmp );
+	}
+
+	/* Initial setup. */
+	CartesianGenerator_SetTopologyParams( self, nDims, size, 0, NULL, NULL );
+
+	/* Read geometry. */
+	minList = Dictionary_Get( dict, "minCoord" );
+	maxList = Dictionary_Get( dict, "maxCoord" );
+	if( minList && maxList ) {
+		assert( Dictionary_Entry_Value_GetCount( minList ) >= nDims );
+		assert( Dictionary_Entry_Value_GetCount( maxList ) >= nDims );
 		crdMin = Memory_Alloc_Array_Unnamed( double, nDims );
 		crdMax = Memory_Alloc_Array_Unnamed( double, nDims );
-		size = Memory_Alloc_Array_Unnamed( unsigned, nDims );
+		for( d_i = 0; d_i < nDims; d_i++ ) {
+			tmp = Dictionary_Entry_Value_GetElement( minList, d_i );
+			rootKey = Dictionary_Entry_Value_AsString( tmp );
 
-		/* Read size and coords. */
-		size[0] = Dictionary_GetUnsignedInt( dict, "elementResI" );
-		crdMin[0] = Dictionary_GetDouble( dict, "minX" );
-		crdMax[0] = Dictionary_GetDouble( dict, "maxX" );
-		if( nDims >= 2 ) {
-			size[1] = Dictionary_GetUnsignedInt( dict, "elementResJ" );
-			crdMin[1] = Dictionary_GetDouble( dict, "minY" );
-			crdMax[1] = Dictionary_GetDouble( dict, "maxY" );
+			if( !Stg_StringIsNumeric( rootKey ) )
+				tmp = Dictionary_Get( cf->rootDict, rootKey );
+			crdMin[d_i] = Dictionary_Entry_Value_AsDouble( tmp );
 
-			if( nDims >= 3 ) {
-				size[2] = Dictionary_GetUnsignedInt( dict, "elementResK" );
-				crdMin[2] = Dictionary_GetDouble( dict, "minZ" );
-				crdMax[2] = Dictionary_GetDouble( dict, "maxZ" );
-			}
+			tmp = Dictionary_Entry_Value_GetElement( maxList, d_i );
+			rootKey = Dictionary_Entry_Value_AsString( tmp );
+
+			if( !Stg_StringIsNumeric( rootKey ) )
+				tmp = Dictionary_Get( cf->rootDict, rootKey );
+			crdMax[d_i] = Dictionary_Entry_Value_AsDouble( tmp );
 		}
 
-		/* Read shadow depth. */
-		self->shadowDepth = Dictionary_GetUnsignedInt( dict, "shadowDepth" );
-
-		/* Setup. */
-		CartesianGenerator_SetTopologyParams( self, nDims, size, 0, NULL, NULL );
+		/* Initial setup. */
 		CartesianGenerator_SetGeometryParams( self, crdMin, crdMax );
 
-		/* Free stuff. */
-		FreeArray( size );
+		/* Free coordinate arrays. */
 		FreeArray( crdMin );
 		FreeArray( crdMax );
-
-		/* Make sure we're the same decomp as old mesh. */
-		Grid_SetSizes( self->procGrid, decomp->partition3DCounts );
-		MPI_Comm_rank( self->comm, (int*)&rank );
-		for( d_i = 0; d_i < nDims; d_i++ ) {
-			self->origin[d_i] = decomp->_elementOffsets[rank][d_i];
-			self->range[d_i] = decomp->elementLocal3DCounts[rank][d_i];
-		}
 	}
-	else {
-		/* Rip out the components structure as a dictionary. */
-		dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
 
-		/* Read the sizes. */
-		sizeList = Dictionary_Get( dict, "size" );
-		assert( sizeList );
-		nDims = Dictionary_Entry_Value_GetCount( sizeList );
-		assert( nDims );
-		size = Memory_Alloc_Array_Unnamed( unsigned, nDims );
-		for( d_i = 0; d_i < nDims; d_i++ )
-			size[d_i] = Dictionary_Entry_Value_AsUnsignedInt( Dictionary_Entry_Value_GetElement( sizeList, d_i ) );
+	/* Read and set shadow depth. */
+	shadowDepth = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "shadowDepth", 1 );
+	CartesianGenerator_SetShadowDepth( self, shadowDepth );
 
-		/* Initial setup. */
-		CartesianGenerator_SetTopologyParams( self, nDims, size, 0, NULL, NULL );
+	/* Check if we should build center nodes. */
+	self->enableCNodes = Stg_ComponentFactory_GetBool( cf, self->name, "enableCenterNodes", False );
 
-		/* Read geometry. */
-		minList = Dictionary_Get( dict, "coordMin" );
-		maxList = Dictionary_Get( dict, "coordMax" );
-		if( minList && maxList ) {
-			assert( Dictionary_Entry_Value_GetCount( sizeList ) == nDims );
-			assert( Dictionary_Entry_Value_GetCount( sizeList ) == nDims );
-			crdMin = Memory_Alloc_Array_Unnamed( double, nDims );
-			crdMax = Memory_Alloc_Array_Unnamed( double, nDims );
-			for( d_i = 0; d_i < nDims; d_i++ ) {
-				crdMin[d_i] = Dictionary_Entry_Value_AsDouble( Dictionary_Entry_Value_GetElement( minList, d_i ) );
-				crdMax[d_i] = Dictionary_Entry_Value_AsDouble( Dictionary_Entry_Value_GetElement( maxList, d_i ) );
-			}
-
-			/* Initial setup. */
-			CartesianGenerator_SetGeometryParams( self, crdMin, crdMax );
-
-			/* Free coordinate arrays. */
-			FreeArray( crdMin );
-			FreeArray( crdMax );
-		}
-
-		/* Free stuff. */
-		FreeArray( size );
-	}
+	/* Free stuff. */
+	FreeArray( size );
 }
 
 void _CartesianGenerator_Build( void* generator, void* data ) {
@@ -299,6 +240,7 @@
 					   unsigned maxDecompDims, unsigned* minDecomp, unsigned* maxDecomp )
 {
 	CartesianGenerator*	self = (CartesianGenerator*)generator;
+	unsigned		d_i;
 
 	/* Sanity check. */
 	assert( self );
@@ -306,16 +248,25 @@
 	assert( nDims <= 3 );
 
 	/* Kill everything we have, topologically. */
-	KillObject( self->topoGrid );
-	KillObject( self->procGrid );
-	KillArray( self->origin );
-	KillArray( self->range );
+	CartesianGenerator_DestructTopology( self );
 
+	/* Don't continue if we have nothing. */
+	if( !nDims )
+		return;
+
 	/* Set the parameters. */
-	self->topoGrid = Grid_New();
-	Grid_SetNDims( self->topoGrid, nDims );
-	Grid_SetSizes( self->topoGrid, sizes );
+	self->elGrid = Grid_New();
+	Grid_SetNDims( self->elGrid, nDims );
+	Grid_SetSizes( self->elGrid, sizes );
 
+	self->vertGrid = Grid_New();
+	Grid_SetNDims( self->vertGrid, nDims );
+	for( d_i = 0; d_i < nDims; d_i++ )
+		sizes[d_i]++;
+	Grid_SetSizes( self->vertGrid, sizes );
+	for( d_i = 0; d_i < nDims; d_i++ )
+		sizes[d_i]--;
+
 	/* Allocate and set restrictions. */
 	self->minDecomp = Memory_Alloc_Array( unsigned, nDims, "CartesianGenerator::minDecomp" );
 	self->maxDecomp = Memory_Alloc_Array( unsigned, nDims, "CartesianGenerator::maxDecomp" );
@@ -341,73 +292,83 @@
 
 	/* Sanity check. */
 	assert( self );
-	assert( !self->topoGrid->nDims || (min && max) );
+	assert( !self->elGrid->nDims || (min && max) );
 
 	/* Kill everything we have, geometrically. */
 	KillArray( self->crdMin );
 	KillArray( self->crdMax );
 
 	/* Set the parameters. */
-	if( self->topoGrid->nDims ) {
-		self->crdMin = Memory_Alloc_Array( double, self->topoGrid->nDims, "CartesianGenerator::min" );
-		self->crdMax = Memory_Alloc_Array( double, self->topoGrid->nDims, "CartesianGenerator::max" );
-		memcpy( self->crdMin, min, self->topoGrid->nDims * sizeof(double) );
-		memcpy( self->crdMax, max, self->topoGrid->nDims * sizeof(double) );
+	if( self->elGrid->nDims ) {
+		self->crdMin = Memory_Alloc_Array( double, self->elGrid->nDims, "CartesianGenerator::min" );
+		self->crdMax = Memory_Alloc_Array( double, self->elGrid->nDims, "CartesianGenerator::max" );
+		memcpy( self->crdMin, min, self->elGrid->nDims * sizeof(double) );
+		memcpy( self->crdMax, max, self->elGrid->nDims * sizeof(double) );
 	}
 }
 
+void CartesianGenerator_SetShadowDepth( void* generator, unsigned depth ) {
+	CartesianGenerator*	self = (CartesianGenerator*)generator;
+
+	/* Sanity check. */
+	assert( self );
+
+	self->shadowDepth = depth;
+}
+
 void CartesianGenerator_Generate( void* generator, void* _mesh ) {
 	CartesianGenerator*	self = (CartesianGenerator*)generator;
 	Mesh*			mesh = (Mesh*)_mesh;
-	unsigned*		gSize;
-	unsigned*		lSize;
-	unsigned*		offs;
-	double*			min;
-	double*			max;
-	unsigned		d_i;
+	Grid**			grid;
+	unsigned		*localRange, *localOrigin;
 
 	/* Sanity check. */
 	assert( self );
-	assert( !self->topoGrid || mesh );
+	assert( !self->elGrid || mesh );
 
 	/* If we havn't been given anything, don't do anything. */
-	if( self->topoGrid ) {
+	if( self->elGrid ) {
 		/* Fill topological values. */
-		MeshTopology_SetNDims( mesh->topo, self->topoGrid->nDims );
+		MeshTopology_SetDimSize( mesh->topo, self->elGrid->nDims );
 		CartesianGenerator_GenTopo( self, mesh->topo );
 
 		/* Fill geometric values. */
 		CartesianGenerator_GenGeom( self, mesh );
+
+		/* Fill element types. */
+		CartesianGenerator_GenElementTypes( self, mesh );
 	}
 	else {
-		MeshTopology_SetNDims( mesh->topo, 0 );
+		MeshTopology_SetDimSize( mesh->topo, 0 );
 	}
 
-	/* Add an extension to the mesh and fill with cartesian information. */
-	ExtensionManager_AddArray( mesh->info, "cartesianGlobalSize", sizeof(unsigned), self->topoGrid->nDims );
-	ExtensionManager_AddArray( mesh->info, "cartesianLocalSize", sizeof(unsigned), self->topoGrid->nDims );
-	ExtensionManager_AddArray( mesh->info, "cartesianLocalOffset", sizeof(unsigned), self->topoGrid->nDims );
-	ExtensionManager_AddArray( mesh->info, "cartesianMinCoord", sizeof(double), self->topoGrid->nDims );
-	ExtensionManager_AddArray( mesh->info, "cartesianMaxCoord", sizeof(double), self->topoGrid->nDims );
-	gSize = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
-						 ExtensionManager_GetHandle( mesh->info, "cartesianGlobalSize" ) );
-	lSize = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
-						 ExtensionManager_GetHandle( mesh->info, "cartesianLocalSize" ) );
-	offs = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
-						ExtensionManager_GetHandle( mesh->info, "cartesianLocalOffset" ) );
-	min = (double*)ExtensionManager_Get( mesh->info, mesh, 
-					     ExtensionManager_GetHandle( mesh->info, "cartesianMinCoord" ) );
-	max = (double*)ExtensionManager_Get( mesh->info, mesh, 
-					     ExtensionManager_GetHandle( mesh->info, "cartesianMaxCoord" ) );
-	for( d_i = 0; d_i < self->topoGrid->nDims; d_i++ ) {
-		gSize[d_i] = self->topoGrid->sizes[d_i];
-		lSize[d_i] = self->range[d_i];
-		offs[d_i] = self->origin[d_i];
-		min[d_i] = self->crdMin[d_i];
-		max[d_i] = self->crdMax[d_i];
-	}
+	/* Add extensions to the mesh and fill with cartesian information. */
+	ExtensionManager_Add( mesh->info, "vertexGrid", sizeof(Grid*) );
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+	*grid = Grid_New();
+	Grid_SetNDims( *grid, self->vertGrid->nDims );
+	Grid_SetSizes( *grid, self->vertGrid->sizes );
+
+	ExtensionManager_Add( mesh->info, "elementGrid", sizeof(Grid*) );
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "elementGrid" ) );
+	*grid = Grid_New();
+	Grid_SetNDims( *grid, self->elGrid->nDims );
+	Grid_SetSizes( *grid, self->elGrid->sizes );
+
+	ExtensionManager_AddArray( mesh->info, "localOrigin", sizeof(unsigned), Mesh_GetDimSize( mesh ) );
+	localOrigin = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
+						       ExtensionManager_GetHandle( mesh->info, "localOrigin" ) );
+	memcpy( localOrigin, self->origin, Mesh_GetDimSize( mesh ) * sizeof(unsigned) );
+
+	ExtensionManager_AddArray( mesh->info, "localRange", sizeof(unsigned), Mesh_GetDimSize( mesh ) );
+	localRange = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
+						      ExtensionManager_GetHandle( mesh->info, "localRange" ) );
+	memcpy( localRange, self->range, Mesh_GetDimSize( mesh ) * sizeof(unsigned) );
 }
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */
@@ -429,7 +390,7 @@
 	MPI_Comm_rank( self->comm, (int*)&rank );
 
 	/* Allocate for possible sub-domains. */
-	tmpSubDomains = Memory_Alloc_Array( unsigned, self->topoGrid->nDims, "" );
+	tmpSubDomains = Memory_Alloc_Array( unsigned, self->elGrid->nDims, "" );
 
 	/* Build a list of all acceptable decompositions. */
 	CartesianGenerator_RecurseDecomps( self, 0, nProcs, 
@@ -447,18 +408,18 @@
 		unsigned	decompDims = 0;
 
 		/* If decomposed in more dimensions than allowed, skip. */
-		for( d_i = 0; d_i < self->topoGrid->nDims; d_i++ )
+		for( d_i = 0; d_i < self->elGrid->nDims; d_i++ )
 			decompDims += (posNSubDomains[p_i][d_i] > 1) ? 1 : 0;
 		if( self->maxDecompDims && decompDims > self->maxDecompDims )
 			continue;
 
 		/* Evaluate ratios. */
-		for( d_i = 0; d_i < self->topoGrid->nDims; d_i++ ) {
-			double		nI = (double)self->topoGrid->sizes[d_i] / (double)posNSubDomains[p_i][d_i];
+		for( d_i = 0; d_i < self->elGrid->nDims; d_i++ ) {
+			double		nI = (double)self->elGrid->sizes[d_i] / (double)posNSubDomains[p_i][d_i];
 			unsigned	d_j;
 
-			for( d_j = d_i + 1; d_j < self->topoGrid->nDims; d_j++ ) {
-				double	nJ = (double)self->topoGrid->sizes[d_j] / (double)posNSubDomains[p_i][d_j];
+			for( d_j = d_i + 1; d_j < self->elGrid->nDims; d_j++ ) {
+				double	nJ = (double)self->elGrid->sizes[d_j] / (double)posNSubDomains[p_i][d_j];
 
 				curRatio += (nI > nJ) ? nI / nJ : nJ / nI;
 			}
@@ -473,12 +434,12 @@
 	assert( bestPos != -1 );
 
 	/* Allocate for results. */
-	self->origin = Memory_Alloc_Array( unsigned, self->topoGrid->nDims, "CartesianGenerator::origin" );
-	self->range = Memory_Alloc_Array( unsigned, self->topoGrid->nDims, "CartesianGenerator::range" );
+	self->origin = Memory_Alloc_Array( unsigned, self->elGrid->nDims, "CartesianGenerator::origin" );
+	self->range = Memory_Alloc_Array( unsigned, self->elGrid->nDims, "CartesianGenerator::range" );
 
 	/* Build a sub-domain grid. */
 	self->procGrid = Grid_New();
-	Grid_SetNDims( self->procGrid, self->topoGrid->nDims );
+	Grid_SetNDims( self->procGrid, self->elGrid->nDims );
 	Grid_SetSizes( self->procGrid, posNSubDomains[bestPos] );
 
 	/* Free unneeded space. */
@@ -486,9 +447,9 @@
 
 	/* Lift the rank to a parameterised offset. */
 	Grid_Lift( self->procGrid, rank, self->origin );
-	for( d_i = 0; d_i < self->topoGrid->nDims; d_i++ ) {
-		unsigned	base = self->topoGrid->sizes[d_i] / self->procGrid->sizes[d_i];
-		unsigned	mod = self->topoGrid->sizes[d_i] % self->procGrid->sizes[d_i];
+	for( d_i = 0; d_i < self->elGrid->nDims; d_i++ ) {
+		unsigned	base = self->elGrid->sizes[d_i] / self->procGrid->sizes[d_i];
+		unsigned	mod = self->elGrid->sizes[d_i] % self->procGrid->sizes[d_i];
 		unsigned	origin = self->origin[d_i];
 
 		self->origin[d_i] *= base;
@@ -520,25 +481,25 @@
 		return;
 
 	/* Where are we up to? */
-	if( dim == self->topoGrid->nDims ) {
+	if( dim == self->elGrid->nDims ) {
 		/* If this covers all processors, store it. */
 		if( nSDs == nProcs ) {
 			/* If we havn't already allocated do it now. */
 			if( !*posNSubDomains ) {
 				*nPos = 1;
-				*posNSubDomains = Memory_Alloc_2DArray_Unnamed( unsigned, 2, self->topoGrid->nDims );
+				*posNSubDomains = Memory_Alloc_2DArray_Unnamed( unsigned, 2, self->elGrid->nDims );
 			}
 			else {
 				/* Reallocate the arrays. */
 				(*nPos)++;
 				if( *nPos != 2 ) {
 					*posNSubDomains = Memory_Realloc_2DArray( *posNSubDomains, unsigned, 
-										  *nPos, self->topoGrid->nDims );
+										  *nPos, self->elGrid->nDims );
 				}
 			}
 
 			/* Store status. */
-			memcpy( (*posNSubDomains)[(*nPos) - 1], nSubDomains, self->topoGrid->nDims * sizeof(unsigned) );
+			memcpy( (*posNSubDomains)[(*nPos) - 1], nSubDomains, self->elGrid->nDims * sizeof(unsigned) );
 		}
 	}
 	else {
@@ -547,7 +508,7 @@
 		/* Loop over all remaining */
 		for( p_i = 0; p_i < max; p_i++ ) {
 			/* Don't try and decompose more than this dimension allows. */
-			if( p_i >= self->topoGrid->sizes[dim] || 
+			if( p_i >= self->elGrid->sizes[dim] || 
 			    (self->maxDecomp[dim] && p_i >= self->maxDecomp[dim]) )
 			{
 				break;
@@ -569,27 +530,28 @@
 
 void CartesianGenerator_GenTopo( CartesianGenerator* self, MeshTopology* topo ) {
 	Grid***		grids;
+	CommTopology*	commTopo;
 	unsigned	d_i;
 
 	assert( self );
 	assert( topo );
 
-	MeshTopology_SetNDims( topo, self->topoGrid->nDims );
+	MeshTopology_SetDimSize( topo, self->elGrid->nDims );
 
 	/* Build additional grids for use in numbering. */
 	grids = Memory_Alloc_2DArray_Unnamed( Grid*, topo->nTDims, topo->nTDims );
 	for( d_i = 0; d_i < topo->nTDims; d_i++ )
 		memset( grids[d_i], 0, topo->nTDims * sizeof(Grid*) );
 
-	grids[topo->nDims][0] = self->topoGrid;
+	grids[topo->nDims][0] = self->elGrid;
 
 	grids[0][0] = Grid_New();
 	Grid_SetNDims( grids[0][0], topo->nDims );
 	for( d_i = 0; d_i < topo->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]++;
-	Grid_SetSizes( grids[0][0], self->topoGrid->sizes );
+		self->elGrid->sizes[d_i]++;
+	Grid_SetSizes( grids[0][0], self->elGrid->sizes );
 	for( d_i = 0; d_i < topo->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]--;
+		self->elGrid->sizes[d_i]--;
 
 	grids[1][0] = Grid_New();
 	Grid_SetNDims( grids[1][0], topo->nDims );
@@ -638,8 +600,8 @@
 	}
 
 	/* Generate topological elements. */
+	CartesianGenerator_GenVertices( self, topo, grids );
 	CartesianGenerator_GenElements( self, topo, grids );
-	CartesianGenerator_GenVertices( self, topo, grids );
 	if( topo->nDims >= 2 ) {
 		CartesianGenerator_GenEdges( self, topo, grids );
 		if( topo->nDims >= 3 )
@@ -647,51 +609,32 @@
 	}
 
 	/* Generate topological incidence. */
-	CartesianGenerator_GenEdgeVertexInc( self, topo, grids );
+	CartesianGenerator_GenElementVertexInc( self, topo, grids );
 	if( topo->nDims >= 2 ) {
+		CartesianGenerator_GenEdgeVertexInc( self, topo, grids );
 		CartesianGenerator_GenFaceEdgeInc( self, topo, grids );
 		if( topo->nDims >= 3 )
 			CartesianGenerator_GenVolumeFaceInc( self, topo, grids );
 	}
 
 	/* Set the shadow depth and correct incidence. */
-	if( self->shadowDepth && topo->domains[MT_VERTEX]->commTopo->nProcs > 1 ) {
+	commTopo = MeshTopology_GetCommTopology( topo, MT_VERTEX );
+	if( self->shadowDepth && CommTopology_GetIncidenceSize( commTopo ) > 0 ) {
 		/* Build enough incidence to set shadow depth. */
-		CartesianGenerator_GenElementVertexInc( self, topo, grids );
-		if( topo->nDims >= 3 )
-			MeshTopology_Cascade( topo, MT_VOLUME, MT_EDGE );
 		MeshTopology_Invert( topo, MT_VERTEX, topo->nDims );
-		MeshTopology_Invert( topo, MT_VERTEX, MT_EDGE );
-		MeshTopology_Neighbourhood( topo, MT_VERTEX );
 		MeshTopology_Neighbourhood( topo, topo->nDims );
 
 		MeshTopology_SetShadowDepth( topo, self->shadowDepth );
 
 		/* Kill up relations and neighbours. */
-		for( d_i = 0; d_i < topo->nDims; d_i++ ) {
-			unsigned	d_j;
-
-			for( d_j = d_i; d_j < topo->nTDims; d_j++ ) {
-				KillArray( topo->nIncEls[d_i][d_j] );
-				KillArray( topo->incEls[d_i][d_j] );
-			}
-		}
 		KillArray( topo->nIncEls[topo->nDims][topo->nDims] );
-		KillArray( topo->incEls[topo->nDims][topo->nDims] );
-
-		/* Kill cascaded relations. */
-		for( d_i = 2; d_i < topo->nTDims; d_i++ ) {
-			unsigned	d_j;
-
-			for( d_j = 0; d_j < d_i - 1; d_j++ ) {
-				KillArray( topo->nIncEls[d_i][d_j] );
-				KillArray( topo->incEls[d_i][d_j] );
-			}
-		}
+		KillArray2D( topo->domains[topo->nDims]->nDomains, topo->incEls[topo->nDims][topo->nDims] );
+		KillArray( topo->nIncEls[MT_VERTEX][topo->nDims] );
+		KillArray2D( topo->domains[MT_VERTEX]->nDomains, topo->incEls[MT_VERTEX][topo->nDims] );
 	}
 
 	/* Complete all relations. */
-	/*MeshTopology_Complete( topo );*/
+	MeshTopology_Complete( topo );
 
 	/* Free allocated grids. */
 	grids[topo->nDims][0] = NULL;
@@ -716,7 +659,7 @@
 	assert( grids );
 
 	grid = Grid_New();
-	Grid_SetNDims( grid, self->topoGrid->nDims );
+	Grid_SetNDims( grid, self->elGrid->nDims );
 	Grid_SetSizes( grid, self->range );
 
 	nEls = grid->sizes[0];
@@ -724,16 +667,16 @@
 		nEls *= grid->sizes[d_i];
 	els = Memory_Alloc_Array_Unnamed( unsigned, nEls );
 
-	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->topoGrid->nDims );
+	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->elGrid->nDims );
 
 	for( e_i = 0; e_i < nEls; e_i++ ) {
 		Grid_Lift( grid, e_i, dimInds );
 		for( d_i = 0; d_i < grid->nDims; d_i++ )
 			dimInds[d_i] += self->origin[d_i];
-		els[e_i] = Grid_Project( self->topoGrid, dimInds );
+		els[e_i] = Grid_Project( self->elGrid, dimInds );
 	}
 
-	MeshTopology_SetElements( topo, self->topoGrid->nDims, nEls, els );
+	MeshTopology_SetElements( topo, self->elGrid->nDims, nEls, els );
 
 	FreeArray( dimInds );
 	FreeArray( els );
@@ -753,15 +696,15 @@
 	assert( grids );
 
 	globalGrid = Grid_New();
-	Grid_SetNDims( globalGrid, self->topoGrid->nDims );
+	Grid_SetNDims( globalGrid, self->elGrid->nDims );
 	for( d_i = 0; d_i < globalGrid->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
+		self->elGrid->sizes[d_i]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
 	for( d_i = 0; d_i < globalGrid->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]--;
+		self->elGrid->sizes[d_i]--;
 
 	grid = Grid_New();
-	Grid_SetNDims( grid, self->topoGrid->nDims );
+	Grid_SetNDims( grid, self->elGrid->nDims );
 	for( d_i = 0; d_i < grid->nDims; d_i++ )
 		self->range[d_i]++;
 	Grid_SetSizes( grid, self->range );
@@ -773,7 +716,7 @@
 		nEls *= grid->sizes[d_i];
 	els = Memory_Alloc_Array_Unnamed( unsigned, nEls );
 
-	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->topoGrid->nDims );
+	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->elGrid->nDims );
 
 	for( e_i = 0; e_i < nEls; e_i++ ) {
 		Grid_Lift( grid, e_i, dimInds );
@@ -782,6 +725,29 @@
 		els[e_i] = Grid_Project( globalGrid, dimInds );
 	}
 
+	/* If we need to generate center nodes, do so now. */
+	if( self->enableCNodes ) {
+		Grid*		elGrid;
+		unsigned	nOldEls;
+
+		elGrid = Grid_New();
+		Grid_SetNDims( grid, self->elGrid->nDims );
+		Grid_SetSizes( grid, self->range );
+
+		nOldEls = nEls;
+		nEls += elGrid->nPoints;
+		els = Memory_Realloc_Array( els, unsigned, nEls );
+
+		for( e_i = e_i; e_i < elGrid->nPoints; e_i++ ) {
+			Grid_Lift( self->elGrid, e_i, dimInds );
+			for( d_i = 0; d_i < grid->nDims; d_i++ )
+				dimInds[d_i] += self->origin[d_i];
+			els[nOldEls + e_i] = Grid_Project( self->elGrid, dimInds );
+		}
+
+		FreeObject( elGrid );
+	}
+
 	MeshTopology_SetElements( topo, MT_VERTEX, nEls, els );
 
 	FreeArray( dimInds );
@@ -793,10 +759,10 @@
 void CartesianGenerator_GenEdges( CartesianGenerator* self, MeshTopology* topo, Grid*** grids ) {
 	assert( self );
 	assert( topo );
-	assert( self->topoGrid->nDims >= 2 );
-	assert( self->topoGrid->nDims <= 3 );
+	assert( self->elGrid->nDims >= 2 );
+	assert( self->elGrid->nDims <= 3 );
 
-	if( self->topoGrid->nDims == 2 )
+	if( self->elGrid->nDims == 2 )
 		CartesianGenerator_GenEdges2D( self, topo, grids );
 	else
 		CartesianGenerator_GenEdges3D( self, topo, grids );
@@ -814,16 +780,16 @@
 	assert( self );
 	assert( topo );
 	assert( grids );
-	assert( self->topoGrid->nDims == 2 );
+	assert( self->elGrid->nDims == 2 );
 
 	globalGrid = Grid_New();
-	Grid_SetNDims( globalGrid, self->topoGrid->nDims );
-	self->topoGrid->sizes[1]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[1]--;
+	Grid_SetNDims( globalGrid, self->elGrid->nDims );
+	self->elGrid->sizes[1]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[1]--;
 
 	grid = Grid_New();
-	Grid_SetNDims( grid, self->topoGrid->nDims );
+	Grid_SetNDims( grid, self->elGrid->nDims );
 	self->range[1]++;
 	Grid_SetSizes( grid, self->range );
 	self->range[1]--;
@@ -836,7 +802,7 @@
 	}
 	els = Memory_Alloc_Array_Unnamed( unsigned, nEls[0] );
 
-	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->topoGrid->nDims );
+	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->elGrid->nDims );
 
 	for( e_i = 0; e_i < nEls[0]; e_i++ ) {
 		Grid_Lift( grid, e_i, dimInds );
@@ -845,9 +811,9 @@
 		els[e_i] = Grid_Project( globalGrid, dimInds );
 	}
 
-	self->topoGrid->sizes[0]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[0]--;
+	self->elGrid->sizes[0]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[0]--;
 
 	self->range[0]++;
 	Grid_SetSizes( grid, self->range );
@@ -885,18 +851,18 @@
 	assert( self );
 	assert( topo );
 	assert( grids );
-	assert( self->topoGrid->nDims == 3 );
+	assert( self->elGrid->nDims == 3 );
 
 	globalGrid = Grid_New();
-	Grid_SetNDims( globalGrid, self->topoGrid->nDims );
-	self->topoGrid->sizes[1]++;
-	self->topoGrid->sizes[2]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[1]--;
-	self->topoGrid->sizes[2]--;
+	Grid_SetNDims( globalGrid, self->elGrid->nDims );
+	self->elGrid->sizes[1]++;
+	self->elGrid->sizes[2]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[1]--;
+	self->elGrid->sizes[2]--;
 
 	grid = Grid_New();
-	Grid_SetNDims( grid, self->topoGrid->nDims );
+	Grid_SetNDims( grid, self->elGrid->nDims );
 	self->range[1]++;
 	self->range[2]++;
 	Grid_SetSizes( grid, self->range );
@@ -911,7 +877,7 @@
 	}
 	els = Memory_Alloc_Array_Unnamed( unsigned, nEls[0] );
 
-	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->topoGrid->nDims );
+	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->elGrid->nDims );
 
 	for( e_i = 0; e_i < nEls[0]; e_i++ ) {
 		Grid_Lift( grid, e_i, dimInds );
@@ -920,11 +886,11 @@
 		els[e_i] = Grid_Project( globalGrid, dimInds );
 	}
 
-	self->topoGrid->sizes[0]++;
-	self->topoGrid->sizes[2]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[0]--;
-	self->topoGrid->sizes[2]--;
+	self->elGrid->sizes[0]++;
+	self->elGrid->sizes[2]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[0]--;
+	self->elGrid->sizes[2]--;
 
 	self->range[0]++;
 	self->range[2]++;
@@ -947,11 +913,11 @@
 		els[nEls[0] + e_i] = nGlobalEls[0] + Grid_Project( globalGrid, dimInds );
 	}
 
-	self->topoGrid->sizes[0]++;
-	self->topoGrid->sizes[1]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[0]--;
-	self->topoGrid->sizes[1]--;
+	self->elGrid->sizes[0]++;
+	self->elGrid->sizes[1]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[0]--;
+	self->elGrid->sizes[1]--;
 
 	self->range[0]++;
 	self->range[1]++;
@@ -991,16 +957,16 @@
 	assert( self );
 	assert( topo );
 	assert( grids );
-	assert( self->topoGrid->nDims == 3 );
+	assert( self->elGrid->nDims == 3 );
 
 	globalGrid = Grid_New();
-	Grid_SetNDims( globalGrid, self->topoGrid->nDims );
-	self->topoGrid->sizes[2]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[2]--;
+	Grid_SetNDims( globalGrid, self->elGrid->nDims );
+	self->elGrid->sizes[2]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[2]--;
 
 	grid = Grid_New();
-	Grid_SetNDims( grid, self->topoGrid->nDims );
+	Grid_SetNDims( grid, self->elGrid->nDims );
 	self->range[2]++;
 	Grid_SetSizes( grid, self->range );
 	self->range[2]--;
@@ -1013,7 +979,7 @@
 	}
 	els = Memory_Alloc_Array_Unnamed( unsigned, nEls[0] );
 
-	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->topoGrid->nDims );
+	dimInds = Memory_Alloc_Array_Unnamed( unsigned, self->elGrid->nDims );
 
 	for( e_i = 0; e_i < nEls[0]; e_i++ ) {
 		Grid_Lift( grid, e_i, dimInds );
@@ -1022,9 +988,9 @@
 		els[e_i] = Grid_Project( globalGrid, dimInds );
 	}
 
-	self->topoGrid->sizes[1]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[1]--;
+	self->elGrid->sizes[1]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[1]--;
 
 	self->range[1]++;
 	Grid_SetSizes( grid, self->range );
@@ -1045,9 +1011,9 @@
 		els[nEls[0] + e_i] = nGlobalEls[0] + Grid_Project( globalGrid, dimInds );
 	}
 
-	self->topoGrid->sizes[0]++;
-	Grid_SetSizes( globalGrid, self->topoGrid->sizes );
-	self->topoGrid->sizes[0]--;
+	self->elGrid->sizes[0]++;
+	Grid_SetSizes( globalGrid, self->elGrid->sizes );
+	self->elGrid->sizes[0]--;
 
 	self->range[0]++;
 	Grid_SetSizes( grid, self->range );
@@ -1085,52 +1051,60 @@
 	assert( grids );
 
 	vertsPerEl = (topo->nDims == 1) ? 2 : (topo->nDims == 2) ? 4 : 8;
+	if( self->enableCNodes )
+		vertsPerEl += 1;
 
-	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->nDomainEls[topo->nDims] );
-	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->nDomainEls[topo->nDims], vertsPerEl );
+	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->domains[topo->nDims]->nDomains );
+	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->domains[topo->nDims]->nDomains, vertsPerEl );
 	dimInds = Memory_Alloc_Array_Unnamed( unsigned, topo->nDims );
-	for( e_i = 0; e_i < topo->nDomainEls[topo->nDims]; e_i++ ) {
+	for( e_i = 0; e_i < topo->domains[topo->nDims]->nDomains; e_i++ ) {
 		unsigned	gInd = Decomp_Sync_DomainToGlobal( topo->domains[topo->nDims], e_i );
+		unsigned	curNode = 0;
 
 		nIncEls[e_i] = vertsPerEl;
 		Grid_Lift( grids[topo->nDims][0], gInd, dimInds );
 
-		incEls[e_i][0] = Grid_Project( grids[0][0], dimInds );
+		incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 
 		dimInds[0]++;
-		incEls[e_i][1] = Grid_Project( grids[0][0], dimInds );
+		incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 		dimInds[0]--;
 
 		if( topo->nDims >= 2 ) {
 			dimInds[1]++;
-			incEls[e_i][2] = Grid_Project( grids[0][0], dimInds );
+			incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 
 			dimInds[0]++;
-			incEls[e_i][3] = Grid_Project( grids[0][0], dimInds );
+			incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 			dimInds[0]--;
 			dimInds[1]--;
 
 			if( topo->nDims >= 3 ) {
 				dimInds[2]++;
-				incEls[e_i][4] = Grid_Project( grids[0][0], dimInds );
+				incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 
 				dimInds[0]++;
-				incEls[e_i][5] = Grid_Project( grids[0][0], dimInds );
+				incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 				dimInds[0]--;
 
 				dimInds[1]++;
-				incEls[e_i][6] = Grid_Project( grids[0][0], dimInds );
+				incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 
 				dimInds[0]++;
-				incEls[e_i][7] = Grid_Project( grids[0][0], dimInds );
+				incEls[e_i][curNode++] = Grid_Project( grids[0][0], dimInds );
 				dimInds[0]--;
 				dimInds[1]--;
 				dimInds[2]--;
 			}
 		}
+
+		if( self->enableCNodes ) {
+			incEls[e_i][curNode] = self->vertGrid->nPoints + gInd;
+		}
 	}
 
-	CartesianGenerator_MapToDomain( self, topo->domains[MT_VERTEX], topo->nDomainEls[topo->nDims], nIncEls, incEls );
+	CartesianGenerator_MapToDomain( self, topo->domains[MT_VERTEX], topo->domains[topo->nDims]->nDomains, 
+					nIncEls, incEls );
 	MeshTopology_SetIncidence( topo, topo->nDims, MT_VERTEX, nIncEls, incEls );
 	FreeArray( nIncEls );
 	FreeArray( incEls );
@@ -1148,10 +1122,10 @@
 	assert( grids );
 	assert( topo->nDims >= 3 );
 
-	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->nDomainEls[topo->nDims] );
-	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->nDomainEls[topo->nDims], 6 );
+	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->domains[topo->nDims]->nDomains );
+	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->domains[topo->nDims]->nDomains, 6 );
 	dimInds = Memory_Alloc_Array_Unnamed( unsigned, topo->nDims );
-	for( e_i = 0; e_i < topo->nDomainEls[MT_VOLUME]; e_i++ ) {
+	for( e_i = 0; e_i < topo->domains[MT_VOLUME]->nDomains; e_i++ ) {
 		unsigned	gInd = Decomp_Sync_DomainToGlobal( topo->domains[MT_VOLUME], e_i );
 
 		nIncEls[e_i] = 6;
@@ -1176,7 +1150,8 @@
 		dimInds[0]--;
 	}
 
-	CartesianGenerator_MapToDomain( self, topo->domains[MT_FACE], topo->nDomainEls[MT_VOLUME], nIncEls, incEls );
+	CartesianGenerator_MapToDomain( self, topo->domains[MT_FACE], topo->domains[MT_VOLUME]->nDomains, 
+					nIncEls, incEls );
 	MeshTopology_SetIncidence( topo, MT_VOLUME, MT_FACE, nIncEls, incEls );
 	FreeArray( nIncEls );
 	FreeArray( incEls );
@@ -1194,10 +1169,10 @@
 	assert( grids );
 	assert( topo->nDims >= 2 );
 
-	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->nDomainEls[MT_FACE] );
-	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->nDomainEls[MT_FACE], 4 );
+	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->domains[MT_FACE]->nDomains );
+	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->domains[MT_FACE]->nDomains, 4 );
 	dimInds = Memory_Alloc_Array_Unnamed( unsigned, topo->nDims );
-	for( e_i = 0; e_i < topo->nDomainEls[MT_FACE]; e_i++ ) {
+	for( e_i = 0; e_i < topo->domains[MT_FACE]->nDomains; e_i++ ) {
 		unsigned	gInd = Decomp_Sync_DomainToGlobal( topo->domains[MT_FACE], e_i );
 
 		nIncEls[e_i] = 4;
@@ -1254,7 +1229,8 @@
 		}
 	}
 
-	CartesianGenerator_MapToDomain( self, topo->domains[MT_EDGE], topo->nDomainEls[MT_FACE], nIncEls, incEls );
+	CartesianGenerator_MapToDomain( self, topo->domains[MT_EDGE], topo->domains[MT_FACE]->nDomains, 
+					nIncEls, incEls );
 	MeshTopology_SetIncidence( topo, MT_FACE, MT_EDGE, nIncEls, incEls );
 	FreeArray( nIncEls );
 	FreeArray( incEls );
@@ -1271,10 +1247,10 @@
 	assert( topo );
 	assert( grids );
 
-	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->nDomainEls[MT_EDGE] );
-	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->nDomainEls[MT_EDGE], 2 );
+	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, topo->domains[MT_EDGE]->nDomains );
+	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, topo->domains[MT_EDGE]->nDomains, 2 );
 	dimInds = Memory_Alloc_Array_Unnamed( unsigned, topo->nDims );
-	for( e_i = 0; e_i < topo->nDomainEls[MT_EDGE]; e_i++ ) {
+	for( e_i = 0; e_i < topo->domains[MT_EDGE]->nDomains; e_i++ ) {
 		unsigned	gInd = Decomp_Sync_DomainToGlobal( topo->domains[MT_EDGE], e_i );
 
 		nIncEls[e_i] = 2;
@@ -1313,7 +1289,8 @@
 		}
 	}
 
-	CartesianGenerator_MapToDomain( self, topo->domains[MT_VERTEX], topo->nDomainEls[MT_EDGE], nIncEls, incEls );
+	CartesianGenerator_MapToDomain( self, topo->domains[MT_VERTEX], topo->domains[MT_EDGE]->nDomains, 
+					nIncEls, incEls );
 	MeshTopology_SetIncidence( topo, MT_EDGE, MT_VERTEX, nIncEls, incEls );
 	FreeArray( nIncEls );
 	FreeArray( incEls );
@@ -1334,7 +1311,7 @@
 		unsigned	inc_i;
 
 		for( inc_i = 0; inc_i < nIncEls[e_i]; inc_i++ )
-			incEls[e_i][inc_i] = Decomp_Sync_GlobalToDomain( sync, incEls[e_i][inc_i] );
+			insist( Decomp_Sync_GlobalToDomain( sync, incEls[e_i][inc_i], incEls[e_i] + inc_i ) );
 	}
 }
 
@@ -1351,10 +1328,10 @@
 	grid = Grid_New();
 	Grid_SetNDims( grid, mesh->topo->nDims );
 	for( d_i = 0; d_i < mesh->topo->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]++;
-	Grid_SetSizes( grid, self->topoGrid->sizes );
+		self->elGrid->sizes[d_i]++;
+	Grid_SetSizes( grid, self->elGrid->sizes );
 	for( d_i = 0; d_i < mesh->topo->nDims; d_i++ )
-		self->topoGrid->sizes[d_i]--;
+		self->elGrid->sizes[d_i]--;
 	inds = Memory_Alloc_Array_Unnamed( unsigned, mesh->topo->nDims );
 
 	/* Calculate steps. */
@@ -1363,20 +1340,23 @@
 		steps[d_i] = self->crdMax[d_i] - self->crdMin[d_i];
 
 	/* Allocate for coordinates. */
-	mesh->nodeCoord = Memory_Alloc_Array( Coord, MeshTopology_GetDomainSize( mesh->topo, MT_VERTEX ), 
-					      "Mesh::nodeCoord" );
+	mesh->verts = AllocNamedArray2D( double, MeshTopology_GetDomainSize( mesh->topo, MT_VERTEX ), 
+					 mesh->topo->nDims, 
+					 "Mesh::verts" );
 
 	/* Loop over domain nodes. */
 	for( n_i = 0; n_i < MeshTopology_GetDomainSize( mesh->topo, MT_VERTEX ); n_i++ ) {
+		double*		vert;
 		unsigned	gNode;
 
 		gNode = MeshTopology_DomainToGlobal( mesh->topo, MT_VERTEX, n_i );
 		Grid_Lift( grid, gNode, inds );
+		vert = Mesh_GetVertex( mesh, n_i );
 
 		/* Calculate coordinate. */
 		for( d_i = 0; d_i < mesh->topo->nDims; d_i++ ) {
-			mesh->nodeCoord[n_i][d_i] = self->crdMin[d_i] + 
-				((double)inds[d_i] / (double)self->topoGrid->sizes[d_i]) * steps[d_i];
+			vert[d_i] = self->crdMin[d_i] + 
+				((double)inds[d_i] / (double)self->elGrid->sizes[d_i]) * steps[d_i];
 		}
 	}
 
@@ -1386,13 +1366,44 @@
 	FreeObject( grid );
 }
 
+void CartesianGenerator_GenElementTypes( CartesianGenerator* self, Mesh* mesh ) {
+	unsigned	nDomainEls;
+	unsigned	e_i;
+
+	assert( self );
+
+	mesh->nElTypes = 1;
+	mesh->elTypes = Memory_Alloc_Array( Mesh_ElementType*, mesh->nElTypes, "Mesh::elTypes" );
+	mesh->elTypes[0] = (Mesh_ElementType*)Mesh_HexType_New();
+	nDomainEls = Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) );
+	mesh->elTypeMap = Memory_Alloc_Array( unsigned, nDomainEls, "Mesh::elTypeMap" );
+	for( e_i = 0; e_i < nDomainEls; e_i++ )
+		mesh->elTypeMap[e_i] = 0;
+}
+
 void CartesianGenerator_Destruct( CartesianGenerator* self ) {
 	assert( self );
 
-	FreeObject( self->topoGrid );
+	CartesianGenerator_DestructTopology( self );
+	CartesianGenerator_DestructGeometry( self );
+}
+
+void CartesianGenerator_DestructTopology( CartesianGenerator* self ) {
+	assert( self );
+
+	self->maxDecompDims = 0;
+	KillArray( self->minDecomp );
+	KillArray( self->maxDecomp );
+	KillObject( self->vertGrid );
+	KillObject( self->elGrid );
+	KillObject( self->procGrid );
+	KillArray( self->origin );
+	KillArray( self->range );
+}
+
+void CartesianGenerator_DestructGeometry( CartesianGenerator* self ) {
+	assert( self );
+
 	FreeArray( self->crdMin );
 	FreeArray( self->crdMax );
-	FreeObject( self->procGrid );
-	FreeArray( self->origin );
-	FreeArray( self->range );
 }

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CartesianGenerator.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -60,8 +60,10 @@
 		unsigned	shadowDepth;	\
 		double*		crdMin;		\
 		double*		crdMax;		\
+		Bool		enableCNodes;	\
 						\
-		Grid*		topoGrid;	\
+		Grid*		vertGrid;	\
+		Grid*		elGrid;		\
 		Grid*		procGrid;	\
 		unsigned*	origin;		\
 		unsigned*	range;
@@ -88,13 +90,6 @@
 
 	void _CartesianGenerator_Delete( void* generator );
 	void _CartesianGenerator_Print( void* generator, Stream* stream );
-
-	#define CartesianGenerator_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define CartesianGenerator_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _CartesianGenerator_Copy( void* generator, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
 	void _CartesianGenerator_Construct( void* generator, Stg_ComponentFactory* cf, void* data );
 	void _CartesianGenerator_Build( void* generator, void* data );
 	void _CartesianGenerator_Initialise( void* generator, void* data );
@@ -110,6 +105,7 @@
 	void CartesianGenerator_SetTopologyParams( void* generator, unsigned nDims, unsigned* sizes, 
 						   unsigned maxDecompDims, unsigned* minDecomp, unsigned* maxDecomp );
 	void CartesianGenerator_SetGeometryParams( void* generator, double* min, double* max );
+	void CartesianGenerator_SetShadowDepth( void* generator, unsigned depth );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
@@ -134,6 +130,9 @@
 	void CartesianGenerator_MapToDomain( CartesianGenerator* self, Decomp_Sync* sync, 
 					     unsigned size, unsigned* nIncEls, unsigned** incEls );
 	void CartesianGenerator_GenGeom( CartesianGenerator* self, Mesh* mesh );
+	void CartesianGenerator_GenElementTypes( CartesianGenerator* self, Mesh* mesh );
 	void CartesianGenerator_Destruct( CartesianGenerator* self );
+	void CartesianGenerator_DestructTopology( CartesianGenerator* self );
+	void CartesianGenerator_DestructGeometry( CartesianGenerator* self );
 
 #endif /* __Discretisaton_Mesh_CartesianGenerator_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -36,33 +36,23 @@
 
 #include "Base/Base.h"
 #include "Discretisation/Geometry/Geometry.h"
+#include "Mesh.h"
 
-#include "types.h"
-#include "shortcuts.h"
-#include "CommTopology.h"
 
-
 /* Textual name of this class */
 const Type CommTopology_Type = "CommTopology";
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
 
-CommTopology* CommTopology_New( Name name ) {
+CommTopology* CommTopology_New() {
 	return _CommTopology_New( sizeof(CommTopology), 
 				  CommTopology_Type, 
 				  _CommTopology_Delete, 
 				  _CommTopology_Print, 
-				  _CommTopology_Copy, 
-				  (void* (*)(Name))_CommTopology_New, 
-				  _CommTopology_Construct, 
-				  _CommTopology_Build, 
-				  _CommTopology_Initialise, 
-				  _CommTopology_Execute, 
-				  _CommTopology_Destroy, 
-				  name, 
-				  NON_GLOBAL );
+				  NULL );
 }
 
 CommTopology* _CommTopology_New( COMMTOPOLOGY_DEFARGS ) {
@@ -70,7 +60,7 @@
 	
 	/* Allocate memory */
 	assert( sizeOfSelf >= sizeof(CommTopology) );
-	self = (CommTopology*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+	self = (CommTopology*)_Stg_Class_New( STG_CLASS_PASSARGS );
 
 	/* Virtual info */
 
@@ -82,10 +72,9 @@
 
 void _CommTopology_Init( CommTopology* self ) {
 	self->comm = MPI_COMM_WORLD;
-	MPI_Comm_size( self->comm, (int*)&self->nProcs );
-	MPI_Comm_rank( self->comm, (int*)&self->rank );
-	self->nInc = 0;
-	self->inc = NULL;
+	self->nIncRanks = 0;
+	self->incRanks = NULL;
+	self->glMap = UIntMap_New();
 }
 
 
@@ -93,171 +82,160 @@
 ** Virtual functions
 */
 
-void _CommTopology_Delete( void* generator ) {
-	CommTopology*	self = (CommTopology*)generator;
+void _CommTopology_Delete( void* commTopology ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 
 	CommTopology_Destruct( self );
+	FreeObject( self->glMap );
 
 	/* Delete the parent. */
-	_Stg_Component_Delete( self );
+	_Stg_Class_Delete( self );
 }
 
-void _CommTopology_Print( void* generator, Stream* stream ) {
-	CommTopology*	self = (CommTopology*)generator;
+void _CommTopology_Print( void* commTopology, Stream* stream ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 	
 	/* Set the Journal for printing informations */
-	Stream* generatorStream;
-	generatorStream = Journal_Register( InfoStream_Type, "CommTopologyStream" );
+	Stream* commTopologyStream;
+	commTopologyStream = Journal_Register( InfoStream_Type, "CommTopologyStream" );
 
 	/* Print parent */
 	Journal_Printf( stream, "CommTopology (ptr): (%p)\n", self );
-	_Stg_Component_Print( self, stream );
+	_Stg_Class_Print( self, stream );
 }
 
-void* _CommTopology_Copy( void* generator, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	CommTopology*	self = (CommTopology*)generator;
-	CommTopology*	newCommTopology;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
 
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newCommTopology = (CommTopology*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
 
-	/* Deep or shallow? */
-	if( deep ) {
-	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newCommTopology;
-#endif
+void CommTopology_SetComm( void* commTopology, MPI_Comm comm ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 
-	return NULL;
-}
+	assert( self );
 
-void _CommTopology_Construct( void* generator, Stg_ComponentFactory* cf, void* data ) {
+	CommTopology_Destruct( self );
+	self->comm = comm;
 }
 
-void _CommTopology_Build( void* generator, void* data ) {
-}
+void CommTopology_SetIncidence( void* commTopology, unsigned nIncRanks, unsigned* incRanks ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 
-void _CommTopology_Initialise( void* generator, void* data ) {
+	assert( self );
+	assert( !nIncRanks || incRanks );
+
+	CommTopology_Destruct( self );
+	CommTopology_AddIncidence( self, nIncRanks, incRanks );
 }
 
-void _CommTopology_Execute( void* generator, void* data ) {
+void CommTopology_AddIncidence( void* commTopology, unsigned nIncRanks, unsigned* incRanks ) {
+	CommTopology*	self = (CommTopology*)commTopology;
+	unsigned	r_i;
+
+	assert( self );
+	assert( !nIncRanks || incRanks );
+	assert( CommTopology_ValidateIncidence( self, nIncRanks, incRanks ) );
+
+	if( nIncRanks ) {
+		unsigned*	order;
+
+		for( r_i = 0; r_i < nIncRanks; r_i++ )
+			UIntMap_Insert( self->glMap, incRanks[r_i], self->nIncRanks + r_i );
+
+		self->incRanks = ReallocNamedArray( self->incRanks, unsigned, self->nIncRanks + nIncRanks, 
+						    "CommTopology::incRanks" );
+		memcpy( self->incRanks + self->nIncRanks, incRanks, nIncRanks * sizeof(unsigned) );
+		self->nIncRanks += nIncRanks;
+
+		order = AllocArray( unsigned, self->nIncRanks * 2 );
+		for( r_i = 0; r_i < self->nIncRanks; r_i++ ) {
+			order[2 * r_i] = self->incRanks[r_i];
+			order[2 * r_i + 1] = r_i;
+		}
+		qsort( order, self->nIncRanks, 2 * sizeof(unsigned), CommTopology_CmpRanks );
+		self->order = ReallocNamedArray( self->order, unsigned, self->nIncRanks, "CommTopology::order" );
+		for( r_i = 0; r_i < self->nIncRanks; r_i++ )
+			self->order[r_i] = order[2 * r_i + 1];
+		FreeArray( order );
+	}
 }
 
-void _CommTopology_Destroy( void* generator, void* data ) {
+MPI_Comm CommTopology_GetComm( void* commTopology ) {
+	CommTopology*	self = (CommTopology*)commTopology;
+
+	assert( self );
+
+	return self->comm;
 }
 
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void CommTopology_SetComm( void* commTopology, MPI_Comm comm ) {
+unsigned CommTopology_GetCommSize( void* commTopology ) {
 	CommTopology*	self = (CommTopology*)commTopology;
+	unsigned	nProcs;
 
 	assert( self );
 
-	CommTopology_Destruct( self );
-	self->comm = comm;
-	MPI_Comm_size( comm, (int*)&self->nProcs );
-	MPI_Comm_rank( comm, (int*)&self->rank );
+	MPI_Comm_size( self->comm, (int*)&nProcs );
+
+	return nProcs;
 }
 
-
-void CommTopology_SetIncidence( void* commTopology, unsigned nInc, unsigned* inc ) {
+unsigned CommTopology_GetCommRank( void* commTopology ) {
 	CommTopology*	self = (CommTopology*)commTopology;
+	unsigned	rank;
 
 	assert( self );
-	assert( !nInc || inc );
-#ifndef NDEBUG
-	{
-		unsigned	inc_i;
 
-		for( inc_i = 0; inc_i < nInc; inc_i++ ) {
-			assert( inc[inc_i] < self->nProcs );
-			assert( inc[inc_i] != self->rank );
-		}
-	}
-#endif
+	MPI_Comm_rank( self->comm, (int*)&rank );
 
-	self->nInc = nInc;
-	if( nInc ) {
-		if( !self->inc )
-			self->inc = Memory_Alloc_Array( unsigned, nInc, "CommTopology::inc" );
-		else
-			self->inc = Memory_Realloc_Array( self->inc, unsigned, nInc );
-		memcpy( self->inc, inc, nInc * sizeof(unsigned) );
-		qsort( self->inc, nInc, sizeof(unsigned), CommTopology_CmpRanks );
-	}
-	else {
-		KillArray( self->inc );
-	}
+	return rank;
 }
 
+unsigned CommTopology_GetIncidenceSize( void* commTopology ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 
-void CommTopology_GetIncidence( void* commTopology, unsigned proc, 
-				unsigned* nInc, unsigned** inc )
-{
+	assert( self );
+
+	return self->nIncRanks;
+}
+
+void CommTopology_GetIncidence( void* commTopology, unsigned* nIncRanks, unsigned** incRanks ) {
 	CommTopology*	self = (CommTopology*)commTopology;
 
 	assert( self );
-	assert( proc < self->nProcs );
-	assert( nInc && inc );
+	assert( nIncRanks && incRanks );
 
-	if( proc == self->rank ) {
-		*nInc = self->nInc;
-		*inc = self->inc;
-	}
-	else {
-		fprintf( stderr, "*** Error: Processor topology does not yet support retrieving\n" );
-		fprintf( stderr, "***        incidence from other processors.\n" );
-		abort();
-	}
+	*nIncRanks = self->nIncRanks;
+	*incRanks = self->incRanks;
 }
 
+unsigned CommTopology_LocalToGlobal( void* commTopology, unsigned local ) {
+	CommTopology*	self = (CommTopology*)commTopology;
 
-void CommTopology_ReturnIncidence( void* commTopology, unsigned proc, 
-				   unsigned* nInc, unsigned** inc )
-{
+	assert( self );
+	assert( local < self->nIncRanks );
+	assert( self->incRanks );
+	assert( self->order );
+
+	return self->incRanks[local];
+}
+
+Bool CommTopology_GlobalToLocal( void* commTopology, unsigned global, unsigned* local ) {
 	CommTopology*	self = (CommTopology*)commTopology;
 
 	assert( self );
-	assert( proc < self->nProcs );
-	assert( nInc && inc );
 
-	if( proc != self->rank )
-		KillArray( *inc );
-	else
-		*inc = NULL;
-	*nInc = 0;
+	return UIntMap_Map( self->glMap, global, local );
 }
 
-
-void CommTopology_Allgather( void* commTopology, 
-			     unsigned srcSize, void* srcArray, 
-			     unsigned** dstSizes, void*** dstArrays, 
-			     unsigned itemSize )
+void _CommTopology_Allgather( void* commTopology, 
+			      unsigned srcSize, void* srcArray, 
+			      unsigned** dstSizes, void*** dstArrays, 
+			      unsigned itemSize )
 {
 	CommTopology*	self = (CommTopology*)commTopology;
 	unsigned	tag = 669;
 	MPI_Status	status;
 	unsigned*	nbrSizes;
-	unsigned*	tmpSizes;
 	Stg_Byte**	nbrArrays;
 	unsigned	p_i;
 
@@ -267,59 +245,54 @@
 	assert( dstArrays );
 
 	/* Skip this if we have no neighbours. */
-	if( !self->nInc ) {
+	if( !self->nIncRanks ) {
 		*dstSizes = NULL;
 		*dstArrays = NULL;
 		return;
 	}
 
-	/* Need space for neighbour sizes. */
-	nbrSizes = Memory_Alloc_Array_Unnamed( unsigned, self->nInc );
-	tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, self->nInc );
+	/* Allocate base arrays. */
+	nbrSizes = AllocArray( unsigned, self->nIncRanks );
+	nbrArrays = AllocArray( Stg_Byte*, self->nIncRanks );
 
 	/* Send/recv with each neighbour.  There won't be deadlocks because the neighbouring
 	   ranks are ordered from lowest to highest. Start with sizes. */
-	for( p_i = 0; p_i < self->nInc; p_i++ ) {
-		unsigned	nbr = self->inc[p_i];
+	for( p_i = 0; p_i < self->nIncRanks; p_i++ ) {
+		unsigned	pos = self->order[p_i];
+		unsigned	nbr = self->incRanks[pos];
+		unsigned	tmpSize;
 
 		MPI_Sendrecv( &srcSize, 1, MPI_UNSIGNED, nbr, tag, 
-			      nbrSizes + p_i, 1, MPI_UNSIGNED, nbr, tag, 
+			      nbrSizes + pos, 1, MPI_UNSIGNED, nbr, tag, 
 			      self->comm, &status );
 
-		tmpSizes[p_i] = nbrSizes[p_i] * itemSize;
-	}
+		tmpSize = nbrSizes[pos] * itemSize;
 
-	/* Allocate space for results. */
-	nbrArrays = Memory_Alloc_2DComplex_Unnamed( Stg_Byte, self->nInc, tmpSizes );
+		/* Alloc storage. */
+		if( tmpSize )
+			nbrArrays[pos] = AllocArray( Stg_Byte, tmpSize );
+		else
+			nbrArrays[pos] = NULL;
 
-	/* Transfer arrays. */
-	for( p_i = 0; p_i < self->nInc; p_i++ ) {
-		unsigned	nbr = self->inc[p_i];
-
 		MPI_Sendrecv( srcArray, srcSize * itemSize, MPI_BYTE, nbr, tag, 
-			      nbrArrays[p_i], tmpSizes[p_i], MPI_BYTE, nbr, tag, 
+			      nbrArrays[pos], tmpSize, MPI_BYTE, nbr, tag, 
 			      self->comm, &status );
 	}
 
-	/* Free temporary sizes. */
-	FreeArray( tmpSizes );
-
 	/* Store results. */
 	*dstSizes = nbrSizes;
 	*dstArrays = (void**)nbrArrays;
 }
 
-
-void CommTopology_Alltoall( void* commTopology, 
-			    unsigned* srcSizes, void** srcArrays, 
-			    unsigned** dstSizes, void*** dstArrays, 
-			    unsigned itemSize )
+void _CommTopology_Alltoall( void* commTopology, 
+			     unsigned* srcSizes, void** srcArrays, 
+			     unsigned** dstSizes, void*** dstArrays, 
+			     unsigned itemSize )
 {
 	CommTopology*	self = (CommTopology*)commTopology;
 	unsigned	tag = 669;
 	MPI_Status	status;
 	unsigned*	nbrSizes;
-	unsigned*	tmpSizes;
 	Stg_Byte**	nbrArrays;
 	unsigned	p_i;
 
@@ -329,43 +302,41 @@
 	assert( dstArrays );
 
 	/* Skip this if we have no neighbours. */
-	if( !self->nInc ) {
+	if( !self->nIncRanks ) {
 		*dstSizes = NULL;
 		*dstArrays = NULL;
 		return;
 	}
 
-	/* Need space for neighbour sizes. */
-	nbrSizes = Memory_Alloc_Array_Unnamed( unsigned, self->nInc );
-	tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, self->nInc );
+	/* Allocate base array. */
+	nbrSizes = AllocArray( unsigned, self->nIncRanks );
+	nbrArrays = AllocArray( Stg_Byte*, self->nIncRanks );
 
 	/* Send/recv with each neighbour.  There won't be deadlocks because the neighbouring
 	   ranks are ordered from lowest to highest. Start with sizes. */
-	for( p_i = 0; p_i < self->nInc; p_i++ ) {
-		unsigned	nbr = self->inc[p_i];
+	for( p_i = 0; p_i < self->nIncRanks; p_i++ ) {
+		unsigned	pos = self->order[p_i];
+		unsigned	nbr = self->incRanks[pos];
+		unsigned	tmpSize;
 
-		MPI_Sendrecv( srcSizes + p_i, 1, MPI_UNSIGNED, nbr, tag, 
-			      nbrSizes + p_i, 1, MPI_UNSIGNED, nbr, tag, 
+		MPI_Sendrecv( srcSizes + pos, 1, MPI_UNSIGNED, nbr, tag, 
+			      nbrSizes + pos, 1, MPI_UNSIGNED, nbr, tag, 
 			      self->comm, &status );
 
-		tmpSizes[p_i] = nbrSizes[p_i] * itemSize;
-	}
+		tmpSize = nbrSizes[pos] * itemSize;
 
-	/* Allocate space for results. */
-	nbrArrays = Memory_Alloc_2DComplex_Unnamed( Stg_Byte, self->nInc, tmpSizes );
+		/* Alloc storage. */
+		if( tmpSize )
+			nbrArrays[pos] = AllocArray( Stg_Byte, tmpSize );
+		else
+			nbrArrays[pos] = NULL;
 
-	/* Transfer arrays. */
-	for( p_i = 0; p_i < self->nInc; p_i++ ) {
-		unsigned	nbr = self->inc[p_i];
-
-		MPI_Sendrecv( srcArrays[p_i], srcSizes[p_i] * itemSize, MPI_BYTE, nbr, tag, 
-			      nbrArrays[p_i], tmpSizes[p_i], MPI_BYTE, nbr, tag, 
+		/* Transfer between current neighbour. */
+		MPI_Sendrecv( srcArrays[pos], srcSizes[pos] * itemSize, MPI_BYTE, nbr, tag, 
+			      nbrArrays[pos], tmpSize, MPI_BYTE, nbr, tag, 
 			      self->comm, &status );
 	}
 
-	/* Free temporary sizes. */
-	FreeArray( tmpSizes );
-
 	/* Store results. */
 	*dstSizes = nbrSizes;
 	*dstArrays = (void**)nbrArrays;
@@ -386,6 +357,41 @@
 }
 
 void CommTopology_Destruct( CommTopology* self ) {
-	KillArray( self->inc );
-	self->nInc = 0;
+	KillArray( self->incRanks );
+	self->nIncRanks = 0;
+	UIntMap_Clear( self->glMap );
 }
+
+#ifndef NDEBUG
+Bool CommTopology_ValidateIncidence( CommTopology* self, unsigned nIncRanks, unsigned* incRanks ) {
+	RangeSet	*exSet, *newSet;
+	unsigned	nProcs, rank;
+	unsigned	size;
+	unsigned	inc_i;
+
+	assert( self );
+	assert( !nIncRanks || incRanks );
+
+	/* Validate basics. */
+	MPI_Comm_size( self->comm, (int*)&nProcs );
+	MPI_Comm_rank( self->comm, (int*)&rank );
+	for( inc_i = 0; inc_i < nIncRanks; inc_i++ ) {
+		if( incRanks[inc_i] >= nProcs || incRanks[inc_i] == rank )
+			return False;
+	}
+
+	/* Ensure no existing overlap. */
+	exSet = RangeSet_New();
+	newSet = RangeSet_New();
+	RangeSet_SetIndices( exSet, self->nIncRanks, self->incRanks );
+	RangeSet_SetIndices( newSet, nIncRanks, incRanks );
+	RangeSet_Intersection( newSet, exSet );
+	size = RangeSet_GetSize( newSet );
+	FreeObject( newSet );
+	FreeObject( exSet );
+	if( size )
+		return False;
+
+	return True;
+}
+#endif

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CommTopology.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,19 +47,18 @@
 	/** Virtual function types */
 
 	/** Class contents */
-	#define __CommTopology				\
-		/* General info */			\
-		__Stg_Component				\
-							\
-		/* Virtual info */			\
-							\
-		/* CommTopology info */			\
-		MPI_Comm		comm;		\
-		unsigned		nProcs;		\
-		unsigned		rank; 		\
-							\
-		unsigned		nInc;		\
-		unsigned*		inc;
+	#define __CommTopology			\
+		/* General info */		\
+		__Stg_Class			\
+						\
+		/* Virtual info */		\
+						\
+		/* CommTopology info */		\
+		MPI_Comm	comm;		\
+		unsigned	nIncRanks;	\
+		unsigned*	incRanks;	\
+		unsigned*	order;		\
+		UIntMap*	glMap;
 
 	struct CommTopology { __CommTopology };
 
@@ -68,12 +67,12 @@
 	*/
 
 	#define COMMTOPOLOGY_DEFARGS	\
-		STG_COMPONENT_DEFARGS
+		STG_CLASS_DEFARGS
 
 	#define COMMTOPOLOGY_PASSARGS	\
-		STG_COMPONENT_PASSARGS
+		STG_CLASS_PASSARGS
 
-	CommTopology* CommTopology_New( Name name );
+	CommTopology* CommTopology_New();
 	CommTopology* _CommTopology_New( COMMTOPOLOGY_DEFARGS );
 	void _CommTopology_Init( CommTopology* self );
 
@@ -81,41 +80,53 @@
 	** Virtual functions
 	*/
 
-	void _CommTopology_Delete( void* generator );
-	void _CommTopology_Print( void* generator, Stream* stream );
+	void _CommTopology_Delete( void* commTopology );
+	void _CommTopology_Print( void* commTopology, Stream* stream );
 
-	#define CommTopology_Copy( self )				\
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define CommTopology_DeepCopy( self )				\
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _CommTopology_Copy( void* generator, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
-	void _CommTopology_Construct( void* generator, Stg_ComponentFactory* cf, void* data );
-	void _CommTopology_Build( void* generator, void* data );
-	void _CommTopology_Initialise( void* generator, void* data );
-	void _CommTopology_Execute( void* generator, void* data );
-	void _CommTopology_Destroy( void* generator, void* data );
-
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
 	void CommTopology_SetComm( void* commTopology, MPI_Comm comm );
-	void CommTopology_SetIncidence( void* commTopology, unsigned nInc, unsigned* inc );
+	void CommTopology_SetIncidence( void* commTopology, unsigned nIncRanks, unsigned* incRanks );
+	void CommTopology_AddIncidence( void* commTopology, unsigned nIncRanks, unsigned* incRanks );
 
-	void CommTopology_GetIncidence( void* commTopology, unsigned proc, 
-					unsigned* nInc, unsigned** inc );
-	void CommTopology_ReturnIncidence( void* commTopology, unsigned proc, 
-					   unsigned* nInc, unsigned** inc );
-	void CommTopology_Allgather( void* commTopology, 
-				     unsigned srcSize, void* srcArray, 
+	MPI_Comm CommTopology_GetComm( void* commTopology );
+	unsigned CommTopology_GetCommSize( void* commTopology );
+	unsigned CommTopology_GetCommRank( void* commTopology );
+	unsigned CommTopology_GetIncidenceSize( void* commTopology );
+	void CommTopology_GetIncidence( void* commTopology, unsigned* nIncRanks, unsigned** incRanks );
+
+	unsigned CommTopology_LocalToGlobal( void* commTopology, unsigned local );
+	Bool CommTopology_GlobalToLocal( void* commTopology, unsigned global, unsigned* local );
+
+	void _CommTopology_Allgather( void* commTopology, 
+				      unsigned srcSize, void* srcArray, 
+				      unsigned** dstSizes, void*** dstArrays, 
+				      unsigned itemSize );
+	void _CommTopology_Alltoall( void* commTopology, 
+				     unsigned* srcSizes, void** srcArrays, 
 				     unsigned** dstSizes, void*** dstArrays, 
 				     unsigned itemSize );
-	void CommTopology_Alltoall( void* commTopology, 
-				    unsigned* srcSizes, void** srcArrays, 
-				    unsigned** dstSizes, void*** dstArrays, 
-				    unsigned itemSize );
 
+	#define CommTopology_Allgather( commTopology, 			\
+					srcSize, srcArray,		\
+					dstSizes, dstArrays,		\
+					itemSize )			\
+		_CommTopology_Allgather( commTopology,			\
+					 srcSize, (void*)srcArray,	\
+					 dstSizes, (void***)dstArrays,	\
+					 itemSize )
+
+	#define CommTopology_Alltoall( commTopology, 			\
+				       srcSizes, srcArrays,		\
+				       dstSizes, dstArrays,		\
+				       itemSize )			\
+		_CommTopology_Alltoall( commTopology,			\
+					srcSizes, (void**)srcArrays,	\
+					dstSizes, (void***)dstArrays,	\
+					itemSize )
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
@@ -123,4 +134,8 @@
 	int CommTopology_CmpRanks( const void* rank0, const void* rank1 );
 	void CommTopology_Destruct( CommTopology* self );
 
+#ifndef NDEBUG
+	Bool CommTopology_ValidateIncidence( CommTopology* self, unsigned nIncRanks, unsigned* incRanks );
+#endif
+
 #endif /* __Discretisaton_Mesh_CommTopology_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,360 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "CornerNL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type CornerNL_Type = "CornerNL";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-CornerNL* CornerNL_DefaultNew( Name name )
-{
-	return (CornerNL*)_CornerNL_New( 
-		sizeof(CornerNL), 
-		CornerNL_Type, 
-		_CornerNL_Delete, 
-		_CornerNL_Print,
-		_CornerNL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)CornerNL_DefaultNew,
-		_CornerNL_Construct,
-		_CornerNL_Build,
-		_CornerNL_Initialise,
-		_CornerNL_Execute,
-		_CornerNL_Destroy,
-		name,
-		False,
-		_CornerNL_NodeCoordAt,
-		_CornerNL_BuildNodeCoords,
-		_CornerNL_ElementNodeCount,
-		_CornerNL_BuildElementNodes,
-		_CornerNL_NodeElementCount,
-		_CornerNL_BuildNodeElements,
-		_CornerNL_CalcNodeCountInDimFromElementCount,
-		NULL,
-		NULL,
-		NULL );
-}
-	
-CornerNL* CornerNL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	return _CornerNL_New( 
-		sizeof(CornerNL), 
-		CornerNL_Type, 
-		_CornerNL_Delete, 
-		_CornerNL_Print,
-		_CornerNL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)CornerNL_DefaultNew,
-		_CornerNL_Construct,
-		_CornerNL_Build,
-		_CornerNL_Initialise,
-		_CornerNL_Execute,
-		_CornerNL_Destroy,
-		name,
-		True,
-		_CornerNL_NodeCoordAt,
-		_CornerNL_BuildNodeCoords,
-		_CornerNL_ElementNodeCount,
-		_CornerNL_BuildElementNodes,
-		_CornerNL_NodeElementCount,
-		_CornerNL_BuildNodeElements,
-		_CornerNL_CalcNodeCountInDimFromElementCount,
-		dictionary,
-		elementLayout,
-		topology );
-}
-
-void CornerNL_Init(
-		CornerNL*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	/* General info */
-	self->type = CornerNL_Type;
-	self->_sizeOfSelf = sizeof(CornerNL);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _CornerNL_Delete;
-	self->_print = _CornerNL_Print;
-	self->_copy = _CornerNL_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)CornerNL_DefaultNew;
-	self->_construct = _CornerNL_Construct;
-	self->_build = _CornerNL_Build;
-	self->_initialise = _CornerNL_Initialise;
-	self->_execute = _CornerNL_Execute;
-	self->_destroy = _CornerNL_Destroy;
-	self->nodeCoordAt = _CornerNL_NodeCoordAt;
-	self->buildNodeCoords = _CornerNL_BuildNodeCoords;
-	self->elementNodeCount = _CornerNL_ElementNodeCount;
-	self->buildElementNodes = _CornerNL_BuildElementNodes;
-	self->nodeElementCount = _CornerNL_NodeElementCount;
-	self->buildNodeElements = _CornerNL_BuildNodeElements;
-	self->calcNodeCountInDimFromElementCount = _CornerNL_CalcNodeCountInDimFromElementCount;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_NodeLayout_Init( (NodeLayout*)self, elementLayout, topology );
-	
-	/* CornerNL info */
-	_CornerNL_Init( self );
-}
-
-CornerNL* _CornerNL_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		NodeLayout_NodeCoordAtFunction*			nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*		buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology)
-{
-	CornerNL* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(CornerNL) );
-	self = (CornerNL*)_NodeLayout_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		nodeCoordAt,
-		buildNodeCoords,
-		elementNodeCount,
-		buildElementNodes,
-		nodeElementCount,
-		buildNodeElements,
-		calcNodeCountInDimFromElementCount,
-		dictionary,
-		elementLayout,
-		topology );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* CornerNL info */
-	if( initFlag ){
-		_CornerNL_Init( self );
-	}
-	
-	return self;
-}
-
-void _CornerNL_Init(
-		CornerNL*					self )
-{
-	/* General and Virtual info should already be set */
-	
-	/* CornerNL info */
-	self->isConstructed = True;
-	self->nodeCount = self->elementLayout->geometry->pointCount;
-}
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _CornerNL_Delete( void* cornerNL ) {
-	CornerNL* self = (CornerNL*)cornerNL;
-	
-	/* Stg_Class_Delete parent */
-	_NodeLayout_Delete( self );
-}
-
-
-void _CornerNL_Print( void* cornerNL, Stream* stream ) {
-	CornerNL* self = (CornerNL*)cornerNL;
-	
-	/* Set the Journal for printing informations */
-	Stream* cornerNLStream;
-	cornerNLStream = Journal_Register( InfoStream_Type, "CornerNLStream" );
-
-	/* Print parent */
-	_NodeLayout_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "CornerNL (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* CornerNL info */
-}
-	
-void _CornerNL_Construct( void* cornerNL, Stg_ComponentFactory* cf, void* data ){
-	CornerNL *self = (CornerNL*)cornerNL;
-	ElementLayout *elementLayout = NULL;
-	Topology *topology = NULL;
-
-	self->dictionary = cf->rootDict;
-	
-	elementLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  ElementLayout_Type, ElementLayout,  True, data ) ;	
-	topology =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Topology_Type, Topology,  True, data ) ;
-	
-	_NodeLayout_Init( (NodeLayout*)self, elementLayout, topology );
-	_CornerNL_Init( self );
-}
-	
-void _CornerNL_Build( void* cornerNL, void* data ){
-	
-}
-	
-void _CornerNL_Initialise( void* cornerNL, void* data ){
-	
-}
-	
-void _CornerNL_Execute( void* cornerNL, void* data ){
-	
-}
-	
-void _CornerNL_Destroy( void* cornerNL, void* data ){
-	
-}
-
-void* _CornerNL_Copy( void* cornerNL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	CornerNL*	self = (CornerNL*)cornerNL;
-	CornerNL*	newCornerNL;
-	
-	newCornerNL = (CornerNL*)_NodeLayout_Copy( self, dest, deep, nameExt, ptrMap );
-	
-	return (void*)newCornerNL;
-}
-
-
-void _CornerNL_NodeCoordAt( void* cornerNL, Node_Index index, Coord coord ) {
-	CornerNL*       self = (CornerNL*)cornerNL;
-	Geometry*       geometry = self->elementLayout->geometry;
-	
-	geometry->pointAt( geometry, index, coord );
-}
-
-
-void _CornerNL_BuildNodeCoords( void* cornerNL, Coord_List coords ) {
-	CornerNL*	self = (CornerNL*)cornerNL;
-	Geometry*       geometry = self->elementLayout->geometry;
-	
-	geometry->buildPoints( geometry, coords );
-}
-
-
-Node_Index _CornerNL_ElementNodeCount( void* cornerNL, Element_GlobalIndex index ) {
-	CornerNL* self = (CornerNL*)cornerNL;
-	
-	return self->elementLayout->elementCornerCount;
-}
-
-
-void _CornerNL_BuildElementNodes( void* cornerNL, Element_GlobalIndex globalIndex, Element_Nodes nodes ) {
-	CornerNL*       self = (CornerNL*)cornerNL;
-	ElementLayout*  eLayout = self->elementLayout;
-	
-	eLayout->buildCornerIndices( eLayout, globalIndex, nodes );
-}
-
-
-Element_GlobalIndex _CornerNL_NodeElementCount( void* cornerNL, Node_GlobalIndex globalIndex ) {
-	CornerNL*	self = (CornerNL*)cornerNL;
-	ElementLayout*  eLayout = self->elementLayout;
-	
-	return eLayout->cornerElementCount( eLayout, globalIndex );
-}
-
-
-void _CornerNL_BuildNodeElements( void* cornerNL, Node_GlobalIndex globalIndex, Node_Elements elements ) {
-	CornerNL*	self = (CornerNL*)cornerNL;
-	ElementLayout*    eLayout = self->elementLayout;
-	
-	eLayout->buildCornerElements( eLayout, globalIndex, elements );
-}
-
-
-Node_GlobalIndex _CornerNL_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim )
-{
-	/* Corner node layout means we just add 1 to the element count to account for the 2 ends */
-	return elementCountInDim+1;
-}
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,164 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_CornerNL_h__
-#define __Discretisaton_Mesh_CornerNL_h__
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type CornerNL_Type;
-
-	/* CornerNL information */
-	#define __CornerNL \
-		/* General info */ \
-		__NodeLayout \
-		\
-		/* Virtual info */ \
-		\
-		/* CornerNL info ... */
-	struct _CornerNL { __CornerNL };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a CornerNL with all additional parameters */
-	CornerNL* CornerNL_DefaultNew( Name name );
-	
-	CornerNL* CornerNL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-
-	void CornerNL_LoadFromDict( void* nodeLayout, Dictionary* subDict, Dictionary* dictionary, Stg_ObjectList* objList);
-	
-	/* Initialise a CornerNL */
-	void CornerNL_Init(
-		CornerNL*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-	
-	/* Creation implementation */
-	CornerNL* _CornerNL_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		NodeLayout_NodeCoordAtFunction*			nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*		buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-
-	/* Initialisation implementation functions */
-	void _CornerNL_Init(
-		CornerNL*					self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete cornerNL implementation */
-	void _CornerNL_Delete( void* cornerNL );
-	
-	/* Print cornerNL implementation */
-	void _CornerNL_Print( void* cornerNL, Stream* stream );
-	
-	void _CornerNL_Construct( void* cornerNL, Stg_ComponentFactory* cf, void* data );
-	
-	void _CornerNL_Build( void* cornerNL, void* data );
-	
-	void _CornerNL_Initialise( void* cornerNL, void* data );
-	
-	void _CornerNL_Execute( void* cornerNL, void* data );
-	
-	void _CornerNL_Destroy( void* cornerNL, void* data );
-	
-	/* Copy */
-	#define CornerNL_Copy( self ) \
-		(CornerNL*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define CornerNL_DeepCopy( self ) \
-		(CornerNL*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _CornerNL_Copy( void* cornerNL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	void _CornerNL_NodeCoordAt( void* cornerNL, Node_Index index, Coord coord );
-	
-	void _CornerNL_BuildNodeCoords( void* cornerNL, Coord_List coords );
-	
-	Node_GlobalIndex _CornerNL_ElementNodeCount( void* cornerNL, Element_GlobalIndex globalIndex );
-	
-	void _CornerNL_BuildElementNodes( void* cornerNL, Element_GlobalIndex globalIndex, Element_Nodes nodes );
-	
-	Element_GlobalIndex _CornerNL_NodeElementCount( void* cornerNL, Node_GlobalIndex globalIndex );
-	
-	void _CornerNL_BuildNodeElements( void* cornerNL, Node_GlobalIndex globalIndex, Node_Elements elements );
-	
-	Node_GlobalIndex _CornerNL_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_CornerNL_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/CornerNL.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">CornerNL</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">NodeLayout</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">ElementLayout</param>
-		<param name="Type">ElementLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 257 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Topology</param>
-		<param name="Type">Topology</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 258 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -35,17 +35,13 @@
 #include <mpi.h>
 
 #include "Base/Base.h"
+#include "Mesh.h"
 
-#include "types.h"
-#include "shortcuts.h"
-#include "CommTopology.h"
-#include "Decomp_Sync.h"
-#include "Decomp.h"
 
-
 /* Textual name of this class */
 const Type Decomp_Type = "Decomp";
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
@@ -55,15 +51,7 @@
 			    Decomp_Type, 
 			    _Decomp_Delete, 
 			    _Decomp_Print, 
-			    _Decomp_Copy, 
-			    (void* (*)(Name))_Decomp_New, 
-			    _Decomp_Construct, 
-			    _Decomp_Build, 
-			    _Decomp_Initialise, 
-			    _Decomp_Execute, 
-			    _Decomp_Destroy, 
-			    name, 
-			    NON_GLOBAL );
+			    NULL );
 }
 
 Decomp* _Decomp_New( DECOMP_DEFARGS ) {
@@ -71,7 +59,7 @@
 	
 	/* Allocate memory */
 	assert( sizeOfSelf >= sizeof(Decomp) );
-	self = (Decomp*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+	self = (Decomp*)_Stg_Class_New( STG_CLASS_PASSARGS );
 
 	/* Virtual info */
 
@@ -88,7 +76,10 @@
 	self->nLocals = 0;
 	self->locals = NULL;
 
-	self->glMap = NULL;
+	self->glMap = UIntMap_New();
+
+	self->syncs = List_New();
+	List_SetItemSize( self->syncs, sizeof(Decomp_Sync*) );
 }
 
 
@@ -100,9 +91,11 @@
 	Decomp*	self = (Decomp*)decomp;
 
 	Decomp_Destruct( self );
+	FreeObject( self->glMap );
+	FreeObject( self->syncs );
 
 	/* Delete the parent. */
-	_Stg_Component_Delete( self );
+	_Stg_Class_Delete( self );
 }
 
 void _Decomp_Print( void* decomp, Stream* stream ) {
@@ -114,199 +107,185 @@
 
 	/* Print parent */
 	Journal_Printf( stream, "Decomp (ptr): (%p)\n", self );
-	_Stg_Component_Print( self, stream );
+	_Stg_Class_Print( self, stream );
 }
 
-void* _Decomp_Copy( void* decomp, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	Decomp*	self = (Decomp*)decomp;
-	Decomp*	newDecomp;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
 
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newDecomp = (Decomp*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
-
-	/* Deep or shallow? */
-	if( deep ) {
-	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newDecomp;
-#endif
-
-	return NULL;
-}
-
-void _Decomp_Construct( void* decomp, Stg_ComponentFactory* cf, void* data ) {
-}
-
-void _Decomp_Build( void* decomp, void* data ) {
-}
-
-void _Decomp_Initialise( void* decomp, void* data ) {
-}
-
-void _Decomp_Execute( void* decomp, void* data ) {
-}
-
-void _Decomp_Destroy( void* decomp, void* data ) {
-}
-
-
 /*--------------------------------------------------------------------------------------------------------------------------
 ** Public Functions
 */
 
-#define DECOMP_OK		0x0000
-#define DECOMP_OVERLAPPING	0x0001
-#define DECOMP_INCOMPLETE	0x0002
-
 void Decomp_SetComm( void* decomp, MPI_Comm comm ) {
 	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
 
 	Decomp_Destruct( self );
-
 	self->comm = comm;
 }
 
 void Decomp_SetLocals( void* decomp, unsigned nLocals, unsigned* locals ) {
-	Decomp*		self = (Decomp*)decomp;
-	unsigned	status;
+	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
 	assert( !nLocals || locals );
+	assert( Decomp_ValidateDomain( self, nLocals, locals ) );
 
-	Decomp_DestructLocals( self );
-
-	/* Store local information. */
+	Decomp_Destruct( self );
 	self->nLocals = nLocals;
-	self->locals = Memory_Alloc_Array( unsigned, nLocals, "Decomp::locals" );
-	memcpy( self->locals, locals, nLocals * sizeof(unsigned) );
+	if( self->nLocals ) {
+		self->locals = AllocNamedArray( unsigned, nLocals, "Decomp::locals" );
+		memcpy( self->locals, locals, nLocals * sizeof(unsigned) );
+	}
 
-	/* Validate the domain. */
-	Decomp_ValidateDomain( self, &status );
-	assert( status == DECOMP_OK );
-
-	/* Build global to local map. */
+	Decomp_CalcGlobalSize( self );
 	Decomp_BuildGLMap( self );
+	Decomp_UpdateSyncs( self );
 }
 
-void Decomp_AddSync( void* decomp, Decomp_Sync* sync ) {
-	Decomp*		self = (Decomp*)decomp;
+MPI_Comm Decomp_GetComm( void* decomp ) {
+	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
-	assert( sync );
 
-	if( !self->nSyncs )
-		self->syncs = Memory_Alloc_Array( Decomp_Sync*, ++self->nSyncs, "Decomp::syncs" );
-	else
-		self->syncs = Memory_Realloc_Array( self->syncs, Decomp_Sync*, ++self->nSyncs );
-	self->syncs[self->nSyncs - 1] = sync;
+	return self->comm;
 }
 
-void Decomp_RemoveSync( void* decomp, Decomp_Sync* sync ) {
-	Decomp*		self = (Decomp*)decomp;
-	unsigned	s_i = 0;
+unsigned Decomp_GetGlobalSize( void* decomp ) {
+	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
-	assert( sync );
 
-	while( self->syncs[s_i++] != sync && s_i < self->nSyncs );
-	assert( s_i <= self->nSyncs );
-	for( ; s_i < self->nSyncs; s_i++ )
-		self->syncs[s_i - 1] = self->syncs[s_i];
-
-	if( --self->nSyncs == 0 ) {
-		KillArray( self->syncs );
-	}
-	else
-		self->syncs = Memory_Realloc_Array( self->syncs, Decomp_Sync*, self->nSyncs );
+	return self->nGlobals;
 }
 
-Bool Decomp_IsLocal( void* decomp, unsigned global ) {
+unsigned Decomp_GetLocalSize( void* decomp ) {
 	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
-	assert( global < self->nGlobals );
-	assert( self->glMap );
 
-	return UIntMap_HasKey( self->glMap, global );
+	return self->nLocals;
 }
 
-unsigned Decomp_LocalToGlobal( void* decomp, unsigned local ) {
+void Decomp_GetLocals( void* decomp, unsigned* nLocals, unsigned** locals ) {
 	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
-	assert( local < self->nLocals );
-	assert( self->locals );
+	assert( nLocals );
+	assert( locals );
 
-	return self->locals[local];
+	*nLocals = self->nLocals;
+	*locals = self->locals;
 }
 
-unsigned Decomp_GlobalToLocal( void* decomp, unsigned global ) {
+List* Decomp_GetSyncList( void* decomp ) {
 	Decomp*	self = (Decomp*)decomp;
 
 	assert( self );
+
+	return self->syncs;
+}
+
+Bool Decomp_GlobalToLocal( void* decomp, unsigned global, unsigned* local ) {
+	Decomp*		self = (Decomp*)decomp;
+
+	assert( self );
 	assert( global < self->nGlobals );
-	assert( self->glMap );
+	assert( local );
 
-	return UIntMap_Map( self->glMap, global );
+	return UIntMap_Map( self->glMap, global, local );
 }
 
+unsigned Decomp_LocalToGlobal( void* decomp, unsigned local ) {
+	Decomp*	self = (Decomp*)decomp;
 
+	assert( self );
+	assert( local < self->nLocals );
+	assert( self->locals );
+
+	return self->locals[local];
+}
+
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */
 
 void Decomp_BuildGLMap( Decomp* self ) {
-	UIntMap*	map;
 	unsigned	l_i;
 
-	FreeObject( self->glMap );
+	assert( self );
 
-	map = UIntMap_New();
+	UIntMap_Clear( self->glMap );
 	for( l_i = 0; l_i < self->nLocals; l_i++ )
-		UIntMap_Insert( map, self->locals[l_i], l_i );
-	self->glMap = map;
+		UIntMap_Insert( self->glMap, self->locals[l_i], l_i );
 }
 
-void Decomp_ValidateDomain( Decomp* self, unsigned* status ) {
+void Decomp_CalcGlobalSize( Decomp* self ) {
+	assert( self );
+
+	MPI_Allreduce( &self->nLocals, &self->nGlobals, 1, MPI_UNSIGNED, MPI_SUM, self->comm );
+}
+
+void Decomp_UpdateSyncs( Decomp* self ) {
+	unsigned	s_i;
+
+	assert( self );
+
+	for( s_i = 0; s_i < List_GetSize( self->syncs ); s_i++ ) {
+		Decomp_Sync*	sync;
+
+		sync = *List_Get( self->syncs, s_i, Decomp_Sync* );
+		Decomp_Sync_Update( sync );
+	}
+}
+
+void Decomp_Destruct( Decomp* self ) {
+	assert( self );
+
+	Decomp_DestructSyncs( self );
+
+	self->nLocals = 0;
+	KillArray( self->locals );
+	UIntMap_Clear( self->glMap );
+}
+
+void Decomp_DestructSyncs( Decomp* self ) {
+	unsigned	s_i;
+
+	assert( self );
+
+	for( s_i = 0; s_i < List_GetSize( self->syncs ); s_i++ ) {
+		Decomp_Sync*	sync;
+
+		sync = *List_Get( self->syncs, s_i, Decomp_Sync* );
+		Decomp_Sync_SetDecomp( sync, NULL );
+	}
+
+	List_Clear( self->syncs );
+}
+
+#ifndef NDEBUG
+Bool Decomp_ValidateDomain( Decomp* self, unsigned nLocals, unsigned* locals ) {
 	unsigned	rank, nProcs;
 	unsigned	nBytes;
-	Stg_Byte*		bytes;
-	unsigned	tag = 6669;
+	Stg_Byte*	bytes;
+	unsigned	tag = 5559;
 	RangeSet*	lSet;
 	RangeSet*	gSet;
 	unsigned	netInds;
+	unsigned	nGlobals;
 
 	assert( self );
+	assert( !nLocals || locals );
 
-	/* Clear the status. */
-	*status = DECOMP_OK;
-
 	/* Get basic MPI info. */
 	MPI_Comm_rank( self->comm, (int*)&rank );
 	MPI_Comm_size( self->comm, (int*)&nProcs );
 
 	/* Create a local range set. */
 	lSet = RangeSet_New();
-	RangeSet_SetIndices( lSet, self->nLocals, self->locals );
+	RangeSet_SetIndices( lSet, nLocals, locals );
 
 	/* Create a global range set. */
 	gSet = RangeSet_New();
@@ -316,7 +295,7 @@
 		MPI_Status	mpiStatus;
 
 		MPI_Recv( &nBytes, 1, MPI_UNSIGNED, rank - 1, tag, self->comm, &mpiStatus );
-		bytes = Memory_Alloc_Array_Unnamed( Stg_Byte, nBytes );
+		bytes = AllocArray( Stg_Byte, nBytes );
 		MPI_Recv( bytes, nBytes, MPI_BYTE, rank - 1, tag, self->comm, &mpiStatus );
 		RangeSet_Unpickle( gSet, nBytes, bytes );
 		FreeArray( bytes );
@@ -332,43 +311,23 @@
 		FreeArray( bytes );
 	}
 	else {
-		self->nGlobals = RangeSet_GetNIndices( gSet );
+		nGlobals = RangeSet_GetSize( gSet );
 		if( RangeSet_GetNRanges( gSet ) > 1 )
-			*status |= DECOMP_INCOMPLETE;
+			return False;
 	}
 
 	/* Transfer global count to all. */
-	MPI_Bcast( &self->nGlobals, 1, MPI_UNSIGNED, nProcs - 1, self->comm );
+	MPI_Bcast( &nGlobals, 1, MPI_UNSIGNED, nProcs - 1, self->comm );
 
 	/* Check for overlap. */
 	MPI_Allreduce( &lSet->nInds, &netInds, 1, MPI_UNSIGNED, MPI_SUM, self->comm );
-	if( netInds != self->nGlobals )
-		*status |= DECOMP_OVERLAPPING;
+	if( netInds != nGlobals )
+		return False;
 
 	/* Free the sets. */
 	FreeObject( lSet );
 	FreeObject( gSet );
-}
 
-void Decomp_Destruct( Decomp* self ) {
-	Decomp_DestructLocals( self );
+	return True;
 }
-
-void Decomp_DestructLocals( Decomp* self ) {
-	Decomp_DestructSyncs( self );
-	self->nLocals = 0;
-	KillArray( self->locals );
-	KillObject( self->glMap );
-}
-
-void Decomp_DestructSyncs( Decomp* self ) {
-	unsigned	s_i;
-	unsigned	tmpNSyncs;
-	Decomp_Sync**	tmpSyncs;
-
-	tmpNSyncs = self->nSyncs;
-	tmpSyncs = Memory_Alloc_Array_Unnamed( Decomp_Sync*, tmpNSyncs );
-	memcpy( tmpSyncs, self->syncs, tmpNSyncs * sizeof(Decomp_Sync*) );
-	for( s_i = 0; s_i < tmpNSyncs; s_i++ )
-		Decomp_Sync_SetDecomp( tmpSyncs[s_i], NULL );
-}
+#endif

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -42,28 +42,27 @@
 #define __Discretisaton_Mesh_Decomp_h__
 
 	/** Textual name of this class */
-	extern const Type Decomp_Type;
+	extern const Type	Decomp_Type;
 
 	/** Virtual function types */
 
 	/** Class contents */
-	#define __Decomp				\
-		/* General info */			\
-		__Stg_Component				\
-							\
-		/* Virtual info */			\
-							\
-		/* Decomp info */			\
-		MPI_Comm		comm;		\
-							\
-		unsigned		nGlobals;	\
-		unsigned		nLocals;	\
-		unsigned*		locals;		\
-							\
-		UIntMap*		glMap;		\
-							\
-		unsigned		nSyncs;		\
-		Decomp_Sync**		syncs;
+	#define __Decomp			\
+		/* General info */		\
+		__Stg_Class			\
+						\
+		/* Virtual info */		\
+						\
+		/* Decomp info */		\
+		MPI_Comm	comm;		\
+						\
+		unsigned	nGlobals;	\
+		unsigned	nLocals;	\
+		unsigned*	locals;		\
+						\
+		UIntMap*	glMap;		\
+						\
+		List*		syncs;
 
 	struct Decomp { __Decomp };
 
@@ -72,12 +71,12 @@
 	*/
 
 	#define DECOMP_DEFARGS		\
-		STG_COMPONENT_DEFARGS
+		STG_CLASS_DEFARGS
 
 	#define DECOMP_PASSARGS		\
-		STG_COMPONENT_PASSARGS
+		STG_CLASS_PASSARGS
 
-	Decomp* Decomp_New( Name name );
+	Decomp* Decomp_New();
 	Decomp* _Decomp_New( DECOMP_DEFARGS );
 	void _Decomp_Init( Decomp* self );
 
@@ -88,29 +87,20 @@
 	void _Decomp_Delete( void* decomp );
 	void _Decomp_Print( void* decomp, Stream* stream );
 
-	#define Decomp_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define Decomp_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _Decomp_Copy( void* decomp, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
-	void _Decomp_Construct( void* decomp, Stg_ComponentFactory* cf, void* data );
-	void _Decomp_Build( void* decomp, void* data );
-	void _Decomp_Initialise( void* decomp, void* data );
-	void _Decomp_Execute( void* decomp, void* data );
-	void _Decomp_Destroy( void* decomp, void* data );
-
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
 	void Decomp_SetComm( void* decomp, MPI_Comm comm );
 	void Decomp_SetLocals( void* decomp, unsigned nLocals, unsigned* locals );
-	void Decomp_AddSync( void* decomp, Decomp_Sync* sync );
-	void Decomp_RemoveSync( void* decomp, Decomp_Sync* sync );
 
-	Bool Decomp_IsLocal( void* decomp, unsigned global );
-	unsigned Decomp_GlobalToLocal( void* decomp, unsigned global );
+	MPI_Comm Decomp_GetComm( void* decomp );
+	unsigned Decomp_GetGlobalSize( void* decomp );
+	unsigned Decomp_GetLocalSize( void* decomp );
+	void Decomp_GetLocals( void* decomp, unsigned* nLocals, unsigned** locals );
+	List* Decomp_GetSyncList( void* decomp );
+
+	Bool Decomp_GlobalToLocal( void* decomp, unsigned global, unsigned* local );
 	unsigned Decomp_LocalToGlobal( void* decomp, unsigned local );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -118,9 +108,14 @@
 	*/
 
 	void Decomp_BuildGLMap( Decomp* self );
-	void Decomp_ValidateDomain( Decomp* self, unsigned* status );
+	void Decomp_CalcGlobalSize( Decomp* self );
+	void Decomp_UpdateSyncs( Decomp* self );
+
 	void Decomp_Destruct( Decomp* self );
-	void Decomp_DestructLocals( Decomp* self );
 	void Decomp_DestructSyncs( Decomp* self );
 
+#ifndef NDEBUG
+	Bool Decomp_ValidateDomain( Decomp* self, unsigned nLocals, unsigned* locals );
+#endif
+
 #endif /* __Discretisaton_Mesh_Decomp_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DecompTransfer.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DecompTransfer.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DecompTransfer.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -233,7 +233,7 @@
 void DecompTransfer_TransferArray( void* decompTransfer, DecompTransfer_Array* array ) {
 	DecompTransfer*	self = (DecompTransfer*)decompTransfer;
 	CommTopology*	commTopo;
-	unsigned	rank;
+	MPI_Comm	comm;
 	unsigned	nInc;
 	unsigned*	inc;
 	Stg_Byte*	snkArray;
@@ -247,7 +247,7 @@
 
 	/* Shortcuts. */
 	commTopo = self->commTopo;
-	MPI_Comm_rank( commTopo->comm, (int*)&rank );
+	comm = CommTopology_GetComm( commTopo );
 
 	/* Pack from locals to a contiguous array. */
 	if( self->netSnks > 0 ) {
@@ -270,7 +270,7 @@
 		srcArray = NULL;
 
 	/* Get incidence. */
-	CommTopology_GetIncidence( commTopo, rank, &nInc, &inc );
+	CommTopology_GetIncidence( commTopo, &nInc, &inc );
 
 	/* Transfer. */
 	for( p_i = 0; p_i < nInc; p_i++ ) {
@@ -283,7 +283,7 @@
 
 		MPI_Sendrecv( snkArray + snkDisp, snkSize, MPI_BYTE, inc[p_i], tag, 
 			      srcArray + srcDisp, srcSize, MPI_BYTE, inc[p_i], tag, 
-			      commTopo->comm, &status );
+			      comm, &status );
 	}
 
 	/* Free the sink array. */
@@ -348,7 +348,7 @@
 	** Shortcuts.
 	*/
 
-	comm = self->decomps[0]->comm;
+	comm = Decomp_GetComm( self->decomps[0] );
 	MPI_Comm_size( comm, (int*)&nProcs );
 	MPI_Comm_rank( comm, (int*)&rank );
 
@@ -373,8 +373,7 @@
 	for( ind_i = 0; ind_i < self->nIncIndices; ind_i++ ) {
 		unsigned	mappedInd;
 
-		if( Decomp_IsLocal( self->decomps[1], self->incIndices[1][ind_i] ) ) {
-			mappedInd = Decomp_GlobalToLocal( self->decomps[1], self->incIndices[1][ind_i] );
+		if( Decomp_GlobalToLocal( self->decomps[1], self->incIndices[1][ind_i], &mappedInd ) ) {
 			self->srcLocalInds[self->nLocalInds] = self->incIndices[0][ind_i];
 			self->dstLocalInds[self->nLocalInds++] = mappedInd;
 		}
@@ -439,7 +438,7 @@
 	*/
 
 	retSets = Memory_Alloc_Array_Unnamed( RangeSet*, nProcs );
-	MPIArray2D_Alltoall( nFndBytes, (void**)fndBytes, &nRetBytes, (void***)&retBytes, sizeof(unsigned), comm );
+	MPIArray_Alltoall( nFndBytes, (void**)fndBytes, &nRetBytes, (void***)&retBytes, sizeof(unsigned), comm );
 	for( p_i = 0; p_i < nProcs; p_i++ ) {
 		if( p_i == rank || !nRetBytes[p_i] ) {
 			retSets[p_i] = NULL;
@@ -474,35 +473,35 @@
 	** Dump range sets into source and sink arrays.
 	*/
 
-	if( self->commTopo->nInc ) {
-	self->nSnks = Memory_Alloc_Array( unsigned, self->commTopo->nInc, "DecompTransfer::nSnks" );
-	self->nSrcs = Memory_Alloc_Array( unsigned, self->commTopo->nInc, "DecompTransfer::nSrcs" );
-	self->snks = Memory_Alloc_Array( unsigned*, self->commTopo->nInc, "DecompTransfer::nSnks" );
-	self->srcs = Memory_Alloc_Array( unsigned*, self->commTopo->nInc, "DecompTransfer::nSrcs" );
-	for( p_i = 0; p_i < nProcs; p_i++ ) {
-		unsigned	incRank;
+	if( self->commTopo->nIncRanks ) {
+		self->nSnks = Memory_Alloc_Array( unsigned, self->commTopo->nIncRanks, "DecompTransfer::nSnks" );
+		self->nSrcs = Memory_Alloc_Array( unsigned, self->commTopo->nIncRanks, "DecompTransfer::nSrcs" );
+		self->snks = Memory_Alloc_Array( unsigned*, self->commTopo->nIncRanks, "DecompTransfer::nSnks" );
+		self->srcs = Memory_Alloc_Array( unsigned*, self->commTopo->nIncRanks, "DecompTransfer::nSrcs" );
+		for( p_i = 0; p_i < nProcs; p_i++ ) {
+			unsigned	incRank;
 
-		incRank = self->commTopo->inc[p_i];
-		if( retSets[incRank] )
-			RangeSet_GetIndices( retSets[incRank], self->nSnks + p_i, self->snks + p_i );
-		else {
-			self->nSnks[p_i] = 0;
-			self->snks[p_i] = NULL;
-		}
+			incRank = self->commTopo->incRanks[p_i];
+			if( retSets[incRank] )
+				RangeSet_GetIndices( retSets[incRank], self->nSnks + p_i, self->snks + p_i );
+			else {
+				self->nSnks[p_i] = 0;
+				self->snks[p_i] = NULL;
+			}
 
-		if( fndSets[incRank] )
-			RangeSet_GetIndices( fndSets[incRank], self->nSrcs + p_i, self->srcs + p_i );
-		else {
-			self->nSrcs[p_i] = 0;
-			self->srcs[p_i] = NULL;
-		}
+			if( fndSets[incRank] )
+				RangeSet_GetIndices( fndSets[incRank], self->nSrcs + p_i, self->srcs + p_i );
+			else {
+				self->nSrcs[p_i] = 0;
+				self->srcs[p_i] = NULL;
+			}
 
-		FreeObject( retSets[incRank] );
-		FreeObject( fndSets[incRank] );
+			FreeObject( retSets[incRank] );
+			FreeObject( fndSets[incRank] );
+		}
+		FreeArray( retSets );
+		FreeArray( fndSets );
 	}
-	FreeArray( retSets );
-	FreeArray( fndSets );
-	}
 	else {
 		self->nSnks = NULL;
 		self->nSrcs = NULL;
@@ -516,35 +515,29 @@
 
 	self->netSnks = 0;
 	self->netSrcs = 0;
-	for( p_i = 0; p_i < self->commTopo->nInc; p_i++ ) {
+	for( p_i = 0; p_i < self->commTopo->nIncRanks; p_i++ ) {
 		self->netSnks += self->nSnks[p_i];
 		for( ind_i = 0; ind_i < self->nSnks[p_i]; ind_i++ ) {
-			self->snks[p_i][ind_i] = UIntMap_Map( invMap, self->snks[p_i][ind_i] );
-			self->snks[p_i][ind_i] = Decomp_GlobalToLocal( self->decomps[0], self->snks[p_i][ind_i] );
+			insist( UIntMap_Map( invMap, self->snks[p_i][ind_i], &self->snks[p_i][ind_i] ) );
+			insist( Decomp_GlobalToLocal( self->decomps[0], self->snks[p_i][ind_i], self->snks[p_i] + ind_i ) );
 		}
 
 		self->netSrcs += self->nSrcs[p_i];
 		for( ind_i = 0; ind_i < self->nSrcs[p_i]; ind_i++ )
-			self->srcs[p_i][ind_i] = Decomp_GlobalToLocal( self->decomps[1], self->srcs[p_i][ind_i] );
+			insist( Decomp_GlobalToLocal( self->decomps[1], self->srcs[p_i][ind_i], self->srcs[p_i] + ind_i ) );
 	}
 	FreeObject( invMap );
 }
 
 void DecompTransfer_BuildArray( DecompTransfer* self, DecompTransfer_Array* array ) {
-	CommTopology*	commTopo;
-	unsigned	rank;
 	unsigned	nInc;
 	unsigned*	inc;
 
 	assert( self );
 	assert( self->commTopo );
 
-	/* Shortcuts. */
-	commTopo = self->commTopo;
-	MPI_Comm_rank( commTopo->comm, (int*)&rank );
-
 	/* Extract incidence. */
-	CommTopology_GetIncidence( commTopo, rank, &nInc, &inc );
+	CommTopology_GetIncidence( self->commTopo, &nInc, &inc );
 
 	if( nInc ) {
 		/* Determine sink (local) information. */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -35,19 +35,13 @@
 #include <mpi.h>
 
 #include "Base/Base.h"
+#include "Mesh.h"
 
-#include "types.h"
-#include "shortcuts.h"
-#include "CommTopology.h"
-#include "Decomp.h"
-#include "Decomp_Sync_Claim.h"
-#include "Decomp_Sync_Negotiate.h"
-#include "Decomp_Sync.h"
 
-
 /* Textual name of this class */
 const Type Decomp_Sync_Type = "Decomp_Sync";
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
@@ -57,15 +51,7 @@
 				 Decomp_Sync_Type, 
 				 _Decomp_Sync_Delete, 
 				 _Decomp_Sync_Print, 
-				 _Decomp_Sync_Copy, 
-				 (void* (*)(Name))_Decomp_Sync_New, 
-				 _Decomp_Sync_Construct, 
-				 _Decomp_Sync_Build, 
-				 _Decomp_Sync_Initialise, 
-				 _Decomp_Sync_Execute, 
-				 _Decomp_Sync_Destroy, 
-				 name, 
-				 NON_GLOBAL );
+				 NULL );
 }
 
 Decomp_Sync* _Decomp_Sync_New( DECOMP_SYNC_DEFARGS ) {
@@ -73,7 +59,7 @@
 	
 	/* Allocate memory */
 	assert( sizeOfSelf >= sizeof(Decomp_Sync) );
-	self = (Decomp_Sync*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+	self = (Decomp_Sync*)_Stg_Class_New( STG_CLASS_PASSARGS );
 
 	/* Virtual info */
 
@@ -85,16 +71,20 @@
 
 void _Decomp_Sync_Init( Decomp_Sync* self ) {
 	self->decomp = NULL;
-	self->commTopo = NULL;
+	self->commTopo = CommTopology_New();
 
-	self->claim = Decomp_Sync_Claim_New( "" );
-	self->negotiate = Decomp_Sync_Negotiate_New( "" );
-
+	self->nDomains = 0;
 	self->nRemotes = 0;
 	self->remotes = NULL;
 	self->nShared = 0;
 	self->shared = NULL;
+	self->nSharers = NULL;
+	self->sharers = NULL;
+	self->owners = NULL;
 
+	self->grMap = UIntMap_New();
+	self->lsMap = UIntMap_New();
+
 	self->netSrcs = 0;
 	self->nSrcs = NULL;
 	self->srcs = NULL;
@@ -102,8 +92,10 @@
 	self->nSnks = NULL;
 	self->snks = NULL;
 
-	self->nArrays = 0;
-	self->arrays = NULL;
+	self->arrays = List_New();
+	List_SetItemSize( self->arrays, sizeof(Decomp_Sync_Array*) );
+
+	self->nRefs = 1;
 }
 
 
@@ -115,11 +107,10 @@
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	Decomp_Sync_Destruct( self );
-	FreeObject( self->claim );
-	FreeObject( self->negotiate );
+	FreeObject( self->arrays );
 
 	/* Delete the parent. */
-	_Stg_Component_Delete( self );
+	_Stg_Class_Delete( self );
 }
 
 void _Decomp_Sync_Print( void* sync, Stream* stream ) {
@@ -131,222 +122,428 @@
 
 	/* Print parent */
 	Journal_Printf( stream, "Decomp_Sync (ptr): (%p)\n", self );
-	_Stg_Component_Print( self, stream );
+	_Stg_Class_Print( self, stream );
 }
 
-void* _Decomp_Sync_Copy( void* sync, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Decomp_Sync_SetDecomp( void* sync, Decomp* decomp ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	Decomp_Sync*	newDecomp_Sync;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
 
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newDecomp_Sync = (Decomp_Sync*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
+	assert( self );
+	assert( Decomp_Sync_ValidateComms( self ) );
 
-	/* Deep or shallow? */
-	if( deep ) {
-	}
+	Decomp_Sync_DestructDecomp( self );
+	self->decomp = decomp;
+	assert( Decomp_Sync_ValidateComms( self ) );
+
+	if( decomp )
+		List_Append( Decomp_GetSyncList( decomp ), &self );
+	Decomp_Sync_InitArrays( self );
+}
+
+void Decomp_Sync_SetCommTopology( void* sync, CommTopology* commTopo ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+
+	assert( self );
+
+	Decomp_Sync_DestructComm( self );
+	if( commTopo )
+		self->commTopo = commTopo;
 	else {
+		self->commTopo = CommTopology_New();
+		if( self->decomp )
+			CommTopology_SetComm( self->commTopo, Decomp_GetComm( self->decomp ) );
 	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newDecomp_Sync;
-#endif
+	assert( Decomp_Sync_ValidateComms( self ) );
 
-	return NULL;
+	Decomp_Sync_InitArrays( self );
 }
 
-void _Decomp_Sync_Construct( void* sync, Stg_ComponentFactory* cf, void* data ) {
-}
+void Decomp_Sync_AddRemoteRanks( void* sync, unsigned nRanks, unsigned* ranks ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-void _Decomp_Sync_Build( void* sync, void* data ) {
-}
+	assert( self );
+	assert( !nRanks || ranks );
 
-void _Decomp_Sync_Initialise( void* sync, void* data ) {
+	CommTopology_AddIncidence( self->commTopo, nRanks, ranks );
+	Decomp_Sync_ExpandArrays( self, nRanks );
 }
 
-void _Decomp_Sync_Execute( void* sync, void* data ) {
-}
+void Decomp_Sync_SetRemotes( void* sync, unsigned nRemotes, unsigned* remotes ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-void _Decomp_Sync_Destroy( void* sync, void* data ) {
+	assert( self );
+
+	Decomp_Sync_DestructRemotes( self );
+	Decomp_Sync_AddRemotes( self, nRemotes, remotes );
 }
 
+void Decomp_Sync_AddRemotes( void* sync, unsigned nRemotes, unsigned* remotes ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+	unsigned	nIncRanks, *incRanks, *ranks;
+	unsigned	*nSrcRemotes, **srcRemotes;
+	unsigned	*nSnkRemotes, **snkRemotes;
+	unsigned	p_i;
 
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
+	assert( self );
+	assert( self->decomp );
+	assert( !nRemotes || remotes );
+	assert( Decomp_Sync_ValidateRemotes( self, nRemotes, remotes ) );
 
-void Decomp_Sync_SetDecomp( void* sync, Decomp* decomp ) {
+	/* If we're not connected to anything, just exit. */
+	CommTopology_GetIncidence( self->commTopo, &nIncRanks, &incRanks );
+	if( !nIncRanks )
+		return;
+
+	/* Prepare source and sink arrays. */
+	nSrcRemotes = AllocArray( unsigned, nIncRanks );
+	nSnkRemotes = AllocArray( unsigned, nIncRanks );
+	srcRemotes = AllocArray( unsigned*, nIncRanks );
+	snkRemotes = AllocArray( unsigned*, nIncRanks );
+
+	/* Split these remotes for each processor. */
+	Decomp_Sync_SplitRemotes( self, nRemotes, remotes, 
+				  nSrcRemotes, srcRemotes, 
+				  nSnkRemotes, snkRemotes );
+
+	/* Add them. */
+	ranks = AllocArray( unsigned, nIncRanks );
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		ranks[p_i] = p_i;
+	Decomp_Sync_AddSources( self, nIncRanks, ranks, nSrcRemotes, srcRemotes );
+	Decomp_Sync_AddSinks( self, nIncRanks, ranks, nSnkRemotes, snkRemotes );
+	FreeArray( ranks );
+
+	/* Free the space. */
+	FreeArray( nSrcRemotes );
+	FreeArray( nSnkRemotes );
+	FreeArray2D( nIncRanks, srcRemotes );
+	FreeArray2D( nIncRanks, snkRemotes );
+}
+
+void Decomp_Sync_SetSources( void* sync, unsigned nRanks, unsigned* ranks, 
+			     unsigned* nSources, unsigned** sources )
+{
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
+	unsigned	p_i, s_i;
 
-	assert( self );
+	assert( nRanks <= CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( !nRanks || ranks );
 
-	Decomp_Sync_Destruct( self );
+	for( p_i = 0; p_i < nRanks; p_i++ ) {
+		assert( ranks[p_i] < CommTopology_GetIncidenceSize( self->commTopo ) );
+		for( s_i = 0; s_i < self->nSrcs[ranks[p_i]]; s_i++ )
+			UIntMap_Remove( self->grMap, Decomp_Sync_DomainToGlobal( self, self->srcs[ranks[p_i]][s_i] ) );
+		KillArray( self->srcs[ranks[p_i]] );
+		self->netSrcs -= self->nSrcs[ranks[p_i]];
+		self->nDomains -= self->nSrcs[ranks[p_i]];
+		self->nRemotes -= self->nSrcs[ranks[p_i]];
+		self->nSrcs[ranks[p_i]] = 0;
+	}
 
-	self->decomp = decomp;
-	if( decomp )
-		Decomp_AddSync( decomp, self );
+	Decomp_Sync_AddSources( self, nRanks, ranks, nSources, sources );
 }
 
-void Decomp_Sync_SetClaim( void* sync, Decomp_Sync_Claim* claim ) {
+void Decomp_Sync_SetSinks( void* sync, unsigned nRanks, unsigned* ranks, 
+			   unsigned* nSinks, unsigned** sinks )
+{
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
+	unsigned	p_i;
 
-	assert( self );
+	assert( nRanks <= CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( !nRanks || ranks );
 
-	Decomp_Sync_DestructRemotes( self );
-	FreeObject( self->claim );
+	for( p_i = 0; p_i < nRanks; p_i++ ) {
+		assert( ranks[p_i] < CommTopology_GetIncidenceSize( self->commTopo ) );
+		KillArray( self->snks[ranks[p_i]] );
+		self->netSnks -= self->nSnks[ranks[p_i]];
+		self->nSnks[ranks[p_i]] = 0;
+	}
 
-	if( claim )
-		self->claim = claim;
-	else
-		self->claim = Decomp_Sync_Claim_New( "" );
+	Decomp_Sync_AddSinks( self, nRanks, ranks, nSinks, sinks );
 }
 
-void Decomp_Sync_SetNegotiate( void* sync, Decomp_Sync_Negotiate* negotiate ) {
+void Decomp_Sync_AddSources( void* sync, unsigned nRanks, unsigned* ranks, 
+			     unsigned* nSources, unsigned** sources )
+{
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
+	unsigned	nNewRemotes;
+	unsigned	domainInd;
+	unsigned	offs;
+	unsigned	p_i;
 
 	assert( self );
+	assert( self->decomp );
+	assert( nRanks <= CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( !nRanks || ranks );
+	assert( nSources && sources );
 
-	Decomp_Sync_DestructRemotes( self );
-	FreeObject( self->negotiate );
+	nNewRemotes = 0;
+	for( p_i = 0; p_i < nRanks; p_i++ ) {
+		assert( ranks[p_i] < CommTopology_GetIncidenceSize( self->commTopo ) );
+		assert( Decomp_Sync_ValidateRemotes( self, nSources[p_i], sources[p_i] ) );
+		nNewRemotes += nSources[p_i];
+	}
 
-	if( negotiate )
-		self->negotiate = negotiate;
-	else
-		self->negotiate = Decomp_Sync_Negotiate_New( "" );
+	if( nNewRemotes ) {
+		self->remotes = ReallocNamedArray( self->remotes, unsigned, self->nRemotes + nNewRemotes, 
+						   "Decomp_Sync::remotes" );
+		self->owners = ReallocNamedArray( self->owners, unsigned, self->nRemotes + nNewRemotes, 
+						  "Decomp_Sync::owners" );
+		offs = self->nRemotes;
+		for( p_i = 0; p_i < nRanks; p_i++ ) {
+			unsigned	r_i;
+
+			for( r_i = 0; r_i < nSources[p_i]; r_i++ ) {
+				self->remotes[offs] = sources[p_i][r_i];
+				UIntMap_Insert( self->grMap, sources[p_i][r_i], offs );
+				self->owners[offs++] = ranks[p_i];
+			}
+		}
+		self->nRemotes += nNewRemotes;
+		self->nDomains += nNewRemotes;
+	}
+
+	for( p_i = 0; p_i < nRanks; p_i++ ) {
+		unsigned	rank = ranks[p_i];
+		unsigned	s_i;
+
+		self->srcs[rank] = ReallocArray( self->srcs[rank], unsigned, self->nSrcs[rank] + nSources[p_i] );
+		for( s_i = 0; s_i < nSources[p_i]; s_i++ ) {
+			insist( Decomp_Sync_GlobalToDomain( self, sources[p_i][s_i], &domainInd ) );
+			self->srcs[rank][self->nSrcs[rank] + s_i] = domainInd;
+		}
+		self->nSrcs[rank] += nSources[p_i];
+		self->netSrcs += nSources[p_i];
+	}
 }
 
-void Decomp_Sync_SetRemotes( void* sync, unsigned nRemotes, unsigned* remotes ) {
+void Decomp_Sync_AddSinks( void* sync, unsigned nRanks, unsigned* ranks, 
+			   unsigned* nSinks, unsigned** sinks )
+{
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	RangeSet*	lSet;
-	RangeSet*	rSet;
-	unsigned	nInds;
-	unsigned*	inds;
+	unsigned	domainInd;
+	unsigned	p_i;
 
 	assert( self );
 	assert( self->decomp );
-	assert( !nRemotes || remotes );
-#ifndef NDEBUG
-	{
-		lSet = RangeSet_New();
-		rSet = RangeSet_New();
-		RangeSet_SetIndices( lSet, self->decomp->nLocals, self->decomp->locals );
-		RangeSet_SetIndices( rSet, nRemotes, remotes );
-		RangeSet_Intersection( rSet, lSet );
-		assert( !RangeSet_GetNIndices( rSet ) );
-		FreeObject( lSet );
-		FreeObject( rSet );
+	assert( nRanks <= CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( !nRanks || ranks );
+	assert( nSinks && sinks );
+
+	for( p_i = 0; p_i < nRanks; p_i++ ) {
+		unsigned	rank = ranks[p_i];
+		unsigned	s_i;
+
+		assert( rank < CommTopology_GetIncidenceSize( self->commTopo ) );
+		assert( Decomp_Sync_ValidateSinks( self, nSinks[p_i], sinks[p_i] ) );
+		self->snks[rank] = ReallocArray( self->snks[rank], unsigned, self->nSnks[rank] + nSinks[p_i] );
+		for( s_i = 0; s_i < nSinks[p_i]; s_i++ ) {
+			insist( Decomp_Sync_GlobalToDomain( self, sinks[p_i][s_i], &domainInd ) );
+			self->snks[rank][self->nSnks[rank] + s_i] = domainInd;
+		}
+		self->nSnks[rank] += nSinks[p_i];
+		self->netSnks += nSinks[p_i];
 	}
-#endif
 
+	Decomp_Sync_BuildShared( self );
+}
+
+void Decomp_Sync_SetRequired( void* sync, unsigned nRequired, unsigned* required ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+
+	assert( self );
+
 	Decomp_Sync_DestructRemotes( self );
+	Decomp_Sync_AddRequired( self, nRequired, required );
+}
 
-	/* Store remote values. */
-	self->nRemotes = nRemotes;
-	if( nRemotes ) {
-		self->remotes = Memory_Alloc_Array( unsigned, nRemotes, "Decomp_Sync::remotes" );
-		memcpy( self->remotes, remotes, nRemotes * sizeof(unsigned) );
+void Decomp_Sync_AddRequired( void* sync, unsigned nRequired, unsigned* required ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+	MPI_Comm	comm;
+	unsigned	nProcs, rank;
+	RangeSet	*reqSet, *remReqSet, *lSet;
+	unsigned	nLocals, *locals;
+	unsigned	nOldIncRanks, nIncRanks;
+	unsigned	nBytes;
+	Stg_Byte*	bytes;
+	unsigned	tag = 8849;
+	unsigned	p_i;
+
+	assert( self && Stg_CheckType( self, Decomp_Sync ) );
+	assert( Decomp_Sync_ValidateRemotes( self, nRequired, required ) );
+
+	comm = CommTopology_GetComm( self->commTopo );
+	MPI_Comm_rank( comm, (int*)&rank );
+	MPI_Comm_size( comm, (int*)&nProcs );
+
+	reqSet = RangeSet_New();
+	RangeSet_SetIndices( reqSet, nRequired, required );
+
+	Decomp_GetLocals( self->decomp, &nLocals, &locals );
+	lSet = RangeSet_New();
+	RangeSet_SetIndices( lSet, nLocals, locals );
+
+	nOldIncRanks = nIncRanks;
+	remReqSet = RangeSet_New();
+	for( p_i = 0; p_i < nProcs; p_i++ ) {
+		Stg_Byte	state;
+		unsigned	nInds, *inds;
+		unsigned	localRank;
+
+		if( rank == p_i )
+			RangeSet_Pickle( reqSet, &nBytes, &bytes );
+		MPI_Bcast( &nBytes, 1, MPI_UNSIGNED, p_i, comm );
+		if( rank != p_i )
+			bytes = AllocArray( Stg_Byte, nBytes );
+		MPI_Bcast( bytes, nBytes, MPI_BYTE, p_i, comm );
+
+		if( rank != p_i ) {
+			RangeSet_Unpickle( remReqSet, nBytes, bytes );
+			FreeArray( bytes );
+
+			RangeSet_Intersection( remReqSet, lSet );
+			if( RangeSet_GetSize( remReqSet ) ) {
+				state = 1;
+				MPI_Gather( &state, 1, MPI_BYTE, NULL, 1, MPI_BYTE, p_i, comm );
+
+				RangeSet_Pickle( remReqSet, &nBytes, &bytes );
+				MPI_Send( &nBytes, 1, MPI_UNSIGNED, p_i, tag, comm );
+				MPI_Send( bytes, nBytes, MPI_BYTE, p_i, tag, comm );
+				FreeArray( bytes );
+
+				RangeSet_GetIndices( remReqSet, &nInds, &inds );
+				if( !CommTopology_GlobalToLocal( self->commTopo, p_i, &localRank ) ) {
+					Decomp_Sync_AddRemoteRanks( self, 1, &p_i );
+					insist( CommTopology_GlobalToLocal( self->commTopo, p_i, &localRank ) );
+					nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+				}
+				Decomp_Sync_AddSinks( sync, 1, &localRank, &nInds, &inds );
+				FreeArray( inds );
+			}
+			else {
+				state = 0;
+				MPI_Gather( &state, 1, MPI_BYTE, NULL, 1, MPI_BYTE, p_i, comm );
+			}
+		}
+		else {
+			Stg_Byte*	states;
+			unsigned	nActive, *active;
+			MPI_Status	status;
+			unsigned	nNewRanks, *newRanks;
+			unsigned	p_j;
+
+			FreeArray( bytes );
+
+			state = 0;
+			states = AllocArray( Stg_Byte, nProcs );
+			MPI_Gather( &state, 1, MPI_BYTE, states, 1, MPI_BYTE, p_i, comm );
+			nActive = 0;
+			nNewRanks = 0;
+			for( p_j = 0; p_j < nProcs; p_j++ ) {
+				if( states[p_j] ) {
+					nActive++;
+					if( !CommTopology_GlobalToLocal( self->commTopo, p_j, &localRank ) )
+						nNewRanks++;
+				}
+			}
+			active = AllocArray( unsigned, nActive );
+			newRanks = AllocArray( unsigned, nNewRanks );
+			nActive = 0;
+			nNewRanks = 0;
+			for( p_j = 0; p_j < nProcs; p_j++ ) {
+				if( states[p_j] ) {
+					active[nActive++] = p_j;
+					if( !CommTopology_GlobalToLocal( self->commTopo, p_j, &localRank ) )
+						newRanks[nNewRanks++] = p_j;
+				}
+			}
+			FreeArray( states );
+
+			Decomp_Sync_AddRemoteRanks( sync, nNewRanks, newRanks );
+			if( nNewRanks )
+				nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+			FreeArray( newRanks );
+
+			for( p_j = 0; p_j < nActive; p_j++ ) {
+				MPI_Recv( &nBytes, 1, MPI_UNSIGNED, active[p_j], tag, comm, &status );
+				bytes = AllocArray( Stg_Byte, nBytes );
+				MPI_Recv( bytes, nBytes, MPI_BYTE, active[p_j], tag, comm, &status );
+				RangeSet_Unpickle( reqSet, nBytes, bytes );
+				FreeArray( bytes );
+				RangeSet_GetIndices( reqSet, &nInds, &inds );
+				insist( CommTopology_GlobalToLocal( self->commTopo, active[p_j], &localRank ) );
+				Decomp_Sync_AddSources( sync, 1, &localRank, &nInds, &inds );
+				FreeArray( inds );
+			}
+
+			FreeArray( active );
+		}
 	}
-	else
-		self->remotes = NULL;
 
-	/* Build a communication topology and intersections. */
-	lSet = RangeSet_New();
-	rSet = RangeSet_New();
-	RangeSet_SetIndices( lSet, self->decomp->nLocals, self->decomp->locals );
-	RangeSet_SetIndices( rSet, nRemotes, remotes );
-	RangeSet_Union( lSet, rSet );
-	FreeObject( rSet );
-	RangeSet_GetIndices( lSet, &nInds, &inds );
+	FreeObject( reqSet );
+	FreeObject( remReqSet );
 	FreeObject( lSet );
-	Decomp_Sync_BuildIntersections( self, nInds, inds );
-	FreeArray( inds );
+}
 
-	/* Negotiate sources and sinks. */
-	Decomp_Sync_Negotiate_Select( self->negotiate, self );
+unsigned Decomp_Sync_GetGlobalSize( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	/* Build the global to remote map. */
-	Decomp_Sync_BuildGRMap( self );
+	assert( self );
+	assert( self->decomp );
 
-	/* Build shared information. */
-	Decomp_Sync_BuildShared( self );
+	return Decomp_GetGlobalSize( self->decomp );
 }
 
-void Decomp_Sync_Decompose( void* sync, unsigned nRequired, unsigned* required ) {
+unsigned Decomp_Sync_GetLocalSize( void* sync ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	Decomp*		decomp;
-	unsigned	nLocals;
-	unsigned*	locals;
 
 	assert( self );
 	assert( self->decomp );
-	assert( !nRequired || required );
 
-	/* Destroy self. */
-	decomp = self->decomp;
-	Decomp_Sync_Destruct( self );
-	self->decomp = decomp;
+	return Decomp_GetLocalSize( self->decomp );
+}
 
-	/* Build index intersections and communication topology. */
-	Decomp_Sync_BuildIntersections( self, nRequired, required );
+unsigned Decomp_Sync_GetRemoteSize( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	/* Claim ownership. */
-	Decomp_Sync_Claim_Select( self->claim, self, nRequired, required, 
-				  &nLocals, &locals );
+	assert( self );
 
-	/* Reset the decomposition. */
-	Decomp_SetLocals( decomp, nLocals, locals );
-	self->decomp = decomp;
-	Decomp_AddSync( decomp, self );
-	Decomp_Sync_Negotiate_Select( self->negotiate, self );
-	Decomp_Sync_BuildGRMap( self );
-	Decomp_Sync_BuildShared( self );
+	return self->nRemotes;
 }
 
 unsigned Decomp_Sync_GetDomainSize( void* sync ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
-	assert( self->decomp );
 
-	return self->decomp->nLocals + self->nRemotes;
+	return self->nDomains;
 }
 
-Bool Decomp_Sync_IsDomain( void* sync, unsigned global ) {
+unsigned Decomp_Sync_GetSharedSize( void* sync ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
-	assert( self->decomp );
-	assert( global < self->decomp->nGlobals );
-	assert( self->decomp->glMap );
-	assert( self->grMap );
 
-	return Decomp_IsLocal( self->decomp, global ) || UIntMap_HasKey( self->grMap, global );
+	return self->nShared;
 }
 
-Bool Decomp_Sync_IsRemote( void* sync, unsigned domain ) {
+void Decomp_Sync_GetRemotes( void* sync, unsigned* nRemotes, unsigned** remotes ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
-	assert( self->decomp );
-	assert( domain < self->decomp->nLocals + self->nRemotes );
+	assert( nRemotes );
+	assert( remotes );
 
-	return domain >= self->decomp->nLocals;
+	*nRemotes = self->nRemotes;
+	*remotes = self->remotes;
 }
 
-unsigned Decomp_Sync_GlobalToDomain( void* sync, unsigned global ) {
+Bool Decomp_Sync_GlobalToDomain( void* sync, unsigned global, unsigned* domain ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
@@ -354,11 +551,16 @@
 	assert( global < self->decomp->nGlobals );
 	assert( self->decomp->glMap );
 	assert( self->grMap );
+	assert( domain );
 
-	if( Decomp_IsLocal( self->decomp, global ) )
-		return Decomp_GlobalToLocal( self->decomp, global );
-	else
-		return self->decomp->nLocals + UIntMap_Map( self->grMap, global );
+	if( Decomp_GlobalToLocal( self->decomp, global, domain ) )
+		return True;
+	else if( UIntMap_Map( self->grMap, global, domain ) ) {
+		*domain += Decomp_GetLocalSize( self->decomp );
+		return True;
+	}
+
+	return False;
 }
 
 unsigned Decomp_Sync_DomainToGlobal( void* sync, unsigned domain ) {
@@ -371,21 +573,22 @@
 	if( domain < self->decomp->nLocals )
 		return Decomp_LocalToGlobal( self->decomp, domain );
 	else
-		return self->remotes[domain - self->decomp->nLocals];
+		return self->remotes[domain - Decomp_GetLocalSize( self->decomp )];
 }
 
-unsigned Decomp_Sync_DomainToShared( void* sync, unsigned domain ) {
+Bool Decomp_Sync_LocalToShared( void* sync, unsigned local, unsigned* shared ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
 	assert( self->decomp );
-	assert( domain < self->decomp->nLocals + self->nRemotes );
-	assert( self->dsMap );
+	assert( local < Decomp_GetLocalSize( self->decomp ) );
+	assert( self->lsMap );
+	assert( shared );
 
-	return UIntMap_Map( self->dsMap, domain );
+	return UIntMap_Map( self->lsMap, local, shared );
 }
 
-unsigned Decomp_Sync_SharedToDomain( void* sync, unsigned shared ) {
+unsigned Decomp_Sync_SharedToLocal( void* sync, unsigned shared ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
 	assert( self );
@@ -395,79 +598,74 @@
 	return self->shared[shared];
 }
 
-Decomp_Sync_Array* Decomp_Sync_AddArray( void* sync, void* localArray, void* remoteArray, 
-					 size_t localStride, size_t remoteStride, size_t itemSize )
+unsigned Decomp_Sync_GetOwner( void* sync, unsigned remote ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+
+	assert( self );
+	assert( remote < self->nRemotes );
+	assert( self->owners );
+
+	return self->owners[remote];
+}
+
+void Decomp_Sync_GetSharers( void* sync, unsigned shared, 
+			     unsigned* nSharers, unsigned** sharers )
 {
-	Decomp_Sync*		self = (Decomp_Sync*)sync;
-	Decomp_Sync_Array*	array;
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	/* Sanity checks. */
 	assert( self );
-	assert( self->decomp );
-	assert( !self->decomp->nLocals || localArray );
-	assert( !self->nRemotes || remoteArray );
-	assert( itemSize );
+	assert( shared < self->nShared );
+	assert( self->nSharers );
+	assert( self->sharers );
+	assert( nSharers );
+	assert( sharers );
 
-	/* Resize the array array (?). */
-	if( self->nArrays ) {
-		self->arrays = Memory_Realloc_Array( self->arrays, Decomp_Sync_Array*, ++self->nArrays );
-	}
-	else {
-		self->arrays = Memory_Alloc_Array( Decomp_Sync_Array*, ++self->nArrays, "Decomp_Sync::Arrays" );
-	}
-	self->arrays[self->nArrays - 1] = Memory_Alloc_Array_Unnamed( Decomp_Sync_Array, 1 );
-	array = self->arrays[self->nArrays - 1];
+	*nSharers = self->nSharers[shared];
+	*sharers = self->sharers[shared];
+}
 
-	/* Store information. */
-	array->snkArray = localArray;
-	array->snkStride = localStride;
-	array->srcArray = remoteArray;
-	array->srcStride = remoteStride;
-	array->itemSize = itemSize;
+void Decomp_Sync_GetSources( void* sync, unsigned rank, unsigned* nSources, unsigned** sources ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	/* Build this array. */
-	Decomp_Sync_BuildArray( self, array );
+	assert( self );
+	assert( rank < CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( nSources && sources );
+	assert( self->nSrcs && self->srcs );
 
-	return array;
+	*nSources = self->nSrcs[rank];
+	*sources = self->srcs[rank];
 }
 
-void Decomp_Sync_RemoveArray( void* sync, Decomp_Sync_Array* array ) {
+void Decomp_Sync_GetSinks( void* sync, unsigned rank, unsigned* nSinks, unsigned** sinks ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	unsigned	a_i;
 
 	assert( self );
+	assert( rank < CommTopology_GetIncidenceSize( self->commTopo ) );
+	assert( nSinks && sinks );
+	assert( self->nSnks && self->snks );
 
-	a_i = 0;
-	while( self->arrays[a_i++] != array && a_i < self->nArrays );
-	assert( a_i <= self->nArrays );
-	for( ; a_i < self->nArrays; a_i++ )
-		self->arrays[a_i - 1] = self->arrays[a_i];
+	*nSinks = self->nSnks[rank];
+	*sinks = self->snks[rank];
+}
 
-	if( --self->nArrays == 0 ) {
-		KillArray( self->arrays );
-	}
-	else
-		self->arrays = Memory_Realloc_Array( self->arrays, Decomp_Sync_Array*, self->nArrays );
+Decomp* Decomp_Sync_GetDecomp( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	Decomp_Sync_DestructArray( array );
+	assert( self );
+
+	return self->decomp;
 }
 
-void Decomp_Sync_Sync( void* sync ) {
+CommTopology* Decomp_Sync_GetCommTopology( void* sync ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	unsigned	a_i;
 
-	/* Sanity checks. */
 	assert( self );
-	assert( !self->nArrays || self->arrays );
 
-	for( a_i = 0; a_i < self->nArrays; a_i++ )
-		Decomp_Sync_SyncArray( self, self->arrays[a_i] );
+	return self->commTopo;
 }
 
 void Decomp_Sync_SyncArray( void* sync, Decomp_Sync_Array* array ) {
 	Decomp_Sync*	self = (Decomp_Sync*)sync;
-	CommTopology*	commTopo;
-	unsigned	rank;
 	unsigned	nInc;
 	unsigned*	inc;
 	Stg_Byte*	snkArray;
@@ -476,18 +674,14 @@
 
 	/* Sanity checks. */
 	assert( self );
-	assert( self->commTopo );
+	assert( self->decomp );
 	assert( array );
 
-	/* Shortcuts. */
-	commTopo = self->commTopo;
-	MPI_Comm_rank( commTopo->comm, (int*)&rank );
-
 	/* Pack from locals to a contiguous array. */
 	if( self->netSnks > 0 ) {
 		unsigned	snk_i;
 
-		snkArray = Memory_Alloc_Array_Unnamed( Stg_Byte, self->netSnks * array->itemSize );
+		snkArray = AllocArray( Stg_Byte, self->netSnks * array->itemSize );
 		for( snk_i = 0; snk_i < self->netSnks; snk_i++ ) {
 			memcpy( snkArray + snk_i * array->itemSize, 
 				(Stg_Byte*)array->snkArray + array->snkOffs[snk_i], 
@@ -498,13 +692,10 @@
 		snkArray = NULL;
 
 	/* Allocate for sources. */
-	if( self->netSrcs > 0 )
-		srcArray = Memory_Alloc_Array_Unnamed( Stg_Byte, self->netSrcs * array->itemSize );
-	else
-		srcArray = NULL;
+	srcArray = AllocArray( Stg_Byte, self->netSrcs * array->itemSize );
 
 	/* Get incidence. */
-	CommTopology_GetIncidence( commTopo, rank, &nInc, &inc );
+	CommTopology_GetIncidence( self->commTopo, &nInc, &inc );
 
 	/* Transfer. */
 	for( p_i = 0; p_i < nInc; p_i++ ) {
@@ -517,17 +708,14 @@
 
 		MPI_Sendrecv( snkArray + snkDisp, snkSize, MPI_BYTE, inc[p_i], tag, 
 			      srcArray + srcDisp, srcSize, MPI_BYTE, inc[p_i], tag, 
-			      commTopo->comm, &status );
+			      CommTopology_GetComm( self->commTopo ), &status );
 	}
 
-	/* Return incidence. */
-	CommTopology_ReturnIncidence( commTopo, rank, &nInc, &inc );
-
 	/* Free the sink array. */
 	FreeArray( snkArray );
 
 	/* Unpack sources. */
-	if( self->netSnks > 0 ) {
+	if( self->netSrcs > 0 ) {
 		unsigned	src_i;
 
 		for( src_i = 0; src_i < self->netSrcs; src_i++ ) {
@@ -541,417 +729,335 @@
 	FreeArray( srcArray );
 }
 
+void Decomp_Sync_Update( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
+	assert( self );
 
-void Decomp_Sync_BuildIntersections( Decomp_Sync* self, unsigned nIndices, unsigned* indices ) {
-	unsigned	rank, nProcs;
-	RangeSet*	lSet;
-	MPI_Group	worldGroup;
-	unsigned*	worldRanks;
-	unsigned*	subRanks;
-	unsigned	nCommInc;
-	unsigned*	commInc;
-	RangeSet**	iSets;
-	unsigned	nInc;
-	unsigned*	inc;
-	unsigned	p_i;
+	Decomp_Sync_DestructRemotes( self );
+}
 
+void Decomp_Sync_AddRef( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
+
 	assert( self );
-	assert( !nIndices || indices );
 
-	/* Get basic MPI info. */
-	MPI_Comm_rank( self->decomp->comm, (int*)&rank );
-	MPI_Comm_size( self->decomp->comm, (int*)&nProcs );
+	self->nRefs++;
+}
 
-	/* We'll need to modify the world group. */
-	MPI_Comm_group( self->decomp->comm, &worldGroup );
-	worldRanks = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-	subRanks = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
+void Decomp_Sync_RemoveRef( void* sync ) {
+	Decomp_Sync*	self = (Decomp_Sync*)sync;
 
-	/* We need space to store index intersections. */
-	iSets = Memory_Alloc_Array_Unnamed( RangeSet*, nProcs );
-	memset( iSets, 0, nProcs * sizeof(RangeSet*) );
+	assert( self );
 
-	/* Create a local set of required indices. */
-	lSet = RangeSet_New();
-	RangeSet_SetIndices( lSet, nIndices, indices );
+	if( !(--self->nRefs) )
+		Stg_Class_Delete( self );
+}
 
-	/* Tackle each processor one at a time. */
-	for( p_i = 0; p_i < nProcs - 1; p_i++ ) {
-		int		groupRange[3];
-		MPI_Group	subGroup;
-		MPI_Comm	subComm;
-		unsigned	p_j;
 
-		/* Set the processor range. */
-		groupRange[0] = p_i;
-		groupRange[1] = nProcs - 1;
-		groupRange[2] = 1;
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
 
-		/* We'll need a new group, as we only want to communicate using a triangular scheme. */
-		MPI_Group_range_incl( worldGroup, 1, &groupRange, &subGroup );
-		MPI_Comm_create( self->decomp->comm, subGroup, &subComm );
+void Decomp_Sync_InitArrays( Decomp_Sync* self ) {
+	unsigned	nIncRanks;
 
-		/* Only continue if we're part of the sub-communicator. */
-		if( rank >= p_i ) {
-			unsigned	nBytes;
-			Stg_Byte*	bytes;
-			unsigned*	nFounds;
-			Stg_Byte**	founds;
+	assert( self );
 
-			/* Create a mapping between ranks. */
-			for( p_j = p_i; p_j < nProcs; p_j++ )
-				subRanks[p_j] = p_j - p_i;
-			MPI_Group_translate_ranks( subGroup, nProcs - p_i, (int*)(subRanks + p_i), 
-						   worldGroup, (int*)worldRanks );
+	if( self->commTopo ) {
+		nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+		if( nIncRanks ) {
+			self->nSrcs = AllocNamedArray( unsigned, nIncRanks, "Decomp_Sync::nSrcs" );
+			self->srcs = AllocNamedArray( unsigned*, nIncRanks, "Decomp_Sync::srcs" );
+			self->nSnks = AllocNamedArray( unsigned, nIncRanks, "Decomp_Sync::nSnks" );
+			self->snks = AllocNamedArray( unsigned*, nIncRanks, "Decomp_Sync::snks" );
+			memset( self->nSrcs, 0, nIncRanks * sizeof(unsigned) );
+			memset( self->srcs, 0, nIncRanks * sizeof(unsigned*) );
+			memset( self->nSnks, 0, nIncRanks * sizeof(unsigned) );
+			memset( self->snks, 0, nIncRanks * sizeof(unsigned*) );
+		}
+	}
+}
 
-			if( p_i == rank )
-				RangeSet_Pickle( lSet, &nBytes, &bytes );
+void Decomp_Sync_ExpandArrays( Decomp_Sync* self, unsigned nNewRanks ) {
+	unsigned	nIncRanks, nOldIncRanks;
 
-			MPIArray_Bcast( &nBytes, (void**)&bytes, sizeof(Stg_Byte), subRanks[p_i], subComm );
+	assert( self );
+	assert( !self->nShared || (self->nSharers && self->sharers) );
+	assert( !self->nRemotes || self->owners );
 
-			if( p_i != rank ) {
-				/* Create the intersection. */
-				iSets[p_i] = RangeSet_New();
-				RangeSet_Unpickle( iSets[p_i], nBytes, bytes );
-				RangeSet_Intersection( iSets[p_i], lSet );
+	nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+	nOldIncRanks = nIncRanks - nNewRanks;
+	self->nSrcs = ReallocNamedArray( self->nSrcs, unsigned, nIncRanks, "Decomp_Sync::nSrcs" );
+	self->srcs = ReallocNamedArray( self->srcs, unsigned*, nIncRanks, "Decomp_Sync::srcs" );
+	self->nSnks = ReallocNamedArray( self->nSnks, unsigned, nIncRanks, "Decomp_Sync::nSnks" );
+	self->snks = ReallocNamedArray( self->snks, unsigned*, nIncRanks, "Decomp_Sync::snks" );
+	memset( self->nSrcs + nOldIncRanks, 0, nNewRanks * sizeof(unsigned) );
+	memset( self->srcs + nOldIncRanks, 0, nNewRanks * sizeof(unsigned*) );
+	memset( self->nSnks + nOldIncRanks, 0, nNewRanks * sizeof(unsigned) );
+	memset( self->snks + nOldIncRanks, 0, nNewRanks * sizeof(unsigned*) );
+}
 
-				/* Pickle the intersection to send back. */
-				FreeArray( bytes );
-				RangeSet_Pickle( iSets[p_i], &nBytes, &bytes );
-			}
-			else {
-				KillArray( bytes );
-				nBytes = 0;
-			}
+void Decomp_Sync_SplitRemotes( Decomp_Sync* self, unsigned nRemotes, unsigned* remotes, 
+			       unsigned* nSrcs, unsigned** srcs, 
+			       unsigned* nSnks, unsigned** snks )
+{
+	unsigned	nLocals, *locals;
+	unsigned	nIncRanks;
+	RangeSet	*remSet, *locSet;
+	unsigned	nBytes, *nRemBytes, *nFndBytes;
+	Stg_Byte	*bytes, **remBytes, **fndBytes;
+	unsigned	p_i;
 
-			/* Retrieve the results and unpickle each of them. */
-			MPIArray_Gather( nBytes, bytes, &nFounds, (void***)&founds, sizeof(Stg_Byte), 
-					 subRanks[p_i], subComm );
-			if( p_i == rank ) {
-				for( p_j = 0; p_j < nProcs - p_i; p_j++ ) {
-					if( !nFounds[p_j] )
-						continue;
+	assert( self );
+	assert( self->decomp );
 
-					iSets[worldRanks[p_j]] = RangeSet_New();
-					RangeSet_Unpickle( iSets[worldRanks[p_j]], nFounds[p_j], founds[p_j] );
-				}
+	/* Make a range set of our remotes. */
+	remSet = RangeSet_New();
+	RangeSet_SetIndices( remSet, nRemotes, remotes );
+	RangeSet_Pickle( remSet, &nBytes, &bytes );
 
-				/* Free the found arrays. */
-				FreeArray( nFounds );
-				FreeArray( founds );
-			}
-			else {
-				/* Free pickled range set. */
-				FreeArray( bytes );
-			}
+	/* Collect neighbouring remotes. */
+	CommTopology_Allgather( self->commTopo, 
+				nBytes, bytes, 
+				&nRemBytes, (void***)&remBytes, 
+				sizeof(Stg_Byte) );
 
-			/* Destroy the sub-communicator. */
-			MPI_Comm_free( &subComm );
-		}
+	/* Done with the bytes. */
+	FreeArray( bytes );
 
-		/* Destroy the sub-group. */
-		MPI_Group_free( &subGroup );
-	}
+	/* Build a range set of our locals. */
+	locSet = RangeSet_New();
+	Decomp_GetLocals( self->decomp, &nLocals, &locals );
+	RangeSet_SetIndices( locSet, nLocals, locals );
 
-	/* Free rank translation arrays and local range set. */
-	FreeArray( worldRanks );
-	FreeArray( subRanks );
+	/* Intersect our locals and our neighbours remotes to build our sink sets. */
+	nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+	remSet = RangeSet_New();
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		RangeSet_Unpickle( remSet, nRemBytes[p_i], remBytes[p_i] );
 
-	/* Build a set of communication incidence. */
-	nCommInc = 0;
-	commInc = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-	for( p_i = 0; p_i < nProcs; p_i++ ) {
-		if( iSets[p_i] && iSets[p_i]->nInds )
-			commInc[nCommInc++] = p_i;
+		/* Done with the remote bytes. */
+		FreeArray( remBytes[p_i] );
+
+		RangeSet_Intersection( remSet, locSet );
+		RangeSet_GetIndices( remSet, nSnks + p_i, snks + p_i );
+		RangeSet_Pickle( remSet, nRemBytes + p_i, remBytes + p_i );
 	}
 
-	/* Create the communication topology. */
-	self->commTopo = CommTopology_New( "Decomp_Sync::commTopo" );
-	CommTopology_SetComm( self->commTopo, self->decomp->comm );
-	CommTopology_SetIncidence( self->commTopo, nCommInc, commInc );
-	FreeArray( commInc );
+	/* Local set is no longer needed. */
+	FreeObject( locSet );
 
-	/* Build final intersections. */
-	CommTopology_GetIncidence( self->commTopo, rank, &nInc, &inc );
-	if( nInc ) {
-		unsigned	inc_i;
+	/* Return what we've found. */
+	CommTopology_Alltoall( self->commTopo, 
+			       nRemBytes, (void**)remBytes, 
+			       &nFndBytes, (void***)&fndBytes, 
+			       sizeof(Stg_Byte) );
 
-		self->isects = Memory_Alloc_Array_Unnamed( RangeSet*, nInc );
-		for( inc_i = 0; inc_i < nInc; inc_i++ )
-			self->isects[inc_i] = iSets[inc[inc_i]];
+	/* Done with the remote bytes arrays. */
+	FreeArray( nRemBytes );
+	FreeArray2D( nIncRanks, remBytes );
+
+	/* Construct our source arrays with what was found. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		RangeSet_Unpickle( remSet, nFndBytes[p_i], fndBytes[p_i] );
+
+		/* Empty the internal found arrays. */
+		FreeArray( fndBytes[p_i] );
+
+		RangeSet_GetIndices( remSet, nSrcs + p_i, srcs + p_i );
 	}
-	else
-		self->isects = NULL;
-	CommTopology_ReturnIncidence( self->commTopo, rank, &nInc, &inc );
 
-	/* Free intersection array. */
-	FreeArray( iSets );
+	/* Free everything else. */
+	FreeArray( nFndBytes );
+	FreeArray( fndBytes );
+	FreeObject( remSet );
 }
 
 void Decomp_Sync_BuildShared( Decomp_Sync* self ) {
-	unsigned	rank;
-	RangeSet*	sharedSet;
-	unsigned	nInc;
-	unsigned*	inc;
-	unsigned**	sharers;
-	unsigned	s_i, p_i;
+	unsigned	nIncRanks;
+	RangeSet	*snkSet, *tmpSet;
+	unsigned	**sharers;
+	unsigned	p_i, s_i;
 
 	assert( self );
-	assert( self->commTopo );
 
-	/* Get basic MPI info. */
-	MPI_Comm_rank( self->decomp->comm, (int*)&rank );
+	/* Free shared info. */
+	FreeArray( self->shared );
+	FreeArray( self->nSharers );
+	FreeArray( self->sharers );
 
-	/* Get incidence. */
-	CommTopology_GetIncidence( self->commTopo, rank, &nInc, &inc );
+	/* Create a range set of all sinks. */
+	nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
+	snkSet = RangeSet_New();
+	tmpSet = RangeSet_New();
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		RangeSet_SetIndices( tmpSet, self->nSnks[p_i], self->snks[p_i] );
+		RangeSet_Union( snkSet, tmpSet );
+	}
+	FreeObject( tmpSet );
 
-	if( nInc ) {
-		assert( self->isects );
+	/* These indices are the shared elements. */
+	RangeSet_GetIndices( snkSet, &self->nShared, &self->shared );
+	FreeObject( snkSet );
 
-		/* Take the union of all intersections to determine how many shared indices we have. */
-		sharedSet = RangeSet_New();
-		for( p_i = 0; p_i < nInc; p_i++ )
-			RangeSet_Union( sharedSet, self->isects[p_i] );
+	/* If there are no shared indices, exit now. */
+	if( !self->nShared )
+		return;
 
-		/* Build table and map. */
-		RangeSet_GetIndices( sharedSet, &self->nShared, &self->shared );
-		self->dsMap = UIntMap_New();
-		for( s_i = 0; s_i < self->nShared; s_i++ ) {
-			self->shared[s_i] = Decomp_Sync_GlobalToDomain( self, self->shared[s_i] );
-			UIntMap_Insert( self->dsMap, self->shared[s_i], s_i );
-		}
-		FreeObject( sharedSet );
+	/* Build the shared mapping. */
+	for( s_i = 0; s_i < self->nShared; s_i++ )
+		UIntMap_Insert( self->lsMap, self->shared[s_i], s_i );
 
-		/* Allocate enough space to hold maximum results. */
-		self->nSharers = Memory_Alloc_Array( unsigned, self->nShared, "Decomp_Sync::nSharers" );
-		sharers = Memory_Alloc_2DArray_Unnamed( unsigned, self->nShared, nInc );
-		memset( self->nSharers, 0, self->nShared * sizeof(unsigned) );
+	/* Create temporary storage for the sharers. */
+	self->nSharers = AllocNamedArray( unsigned, self->nShared, "Decomp_Sync::nSharers" );
+	sharers = Memory_Alloc_2DArray_Unnamed( unsigned, self->nShared, nIncRanks );
+	memset( self->nSharers, 0, self->nShared * sizeof(unsigned) );
 
-		/* Collect processors. */
-		for( p_i = 0; p_i < nInc; p_i++ ) {
-			unsigned	nInds;
-			unsigned*	inds;
-			unsigned	ind_i;
+	/* Build the sharer lists. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( s_i = 0; s_i < self->nSnks[p_i]; s_i++ ) {
+			unsigned	sharedInd;
+			unsigned	curSharer;
 
-			RangeSet_GetIndices( self->isects[p_i], &nInds, &inds );
-			for( ind_i = 0; ind_i < nInds; ind_i++ ) {
-				unsigned	dInd = Decomp_Sync_GlobalToDomain( self, inds[ind_i] );
-				unsigned       	sInd = Decomp_Sync_DomainToShared( self, dInd );
-
-				sharers[sInd][self->nSharers[sInd]++] = p_i;
-			}
-			FreeArray( inds );
+			insist( UIntMap_Map( self->lsMap, self->snks[p_i][s_i], &sharedInd ) );
+			curSharer = self->nSharers[sharedInd]++;
+			sharers[sharedInd][curSharer] = p_i;
 		}
+	}
 
-		/* Transfer results to self. */
-		self->sharers = Memory_Alloc_2DComplex( unsigned, self->nShared, self->nSharers, "Decomp_Sync::sharers" );
-		for( s_i = 0; s_i < self->nShared; s_i++ )
-			memcpy( self->sharers[s_i], sharers[s_i], self->nSharers[s_i] * sizeof(unsigned) );
+	/* Transfer to final storage. */
+	self->sharers = Memory_Alloc_2DComplex( unsigned, self->nShared, self->nSharers, "Decomp_Sync::sharers" );
+	for( s_i = 0; s_i < self->nShared; s_i++ )
+		memcpy( self->sharers[s_i], sharers[s_i], self->nSharers[s_i] * sizeof(unsigned) );
 
-		/* Cleanup. */
-		FreeArray( sharers );
-	}
-
-	/* Return incidence. */
-	CommTopology_ReturnIncidence( self->commTopo, rank, &nInc, &inc );
+	/* Free the old sharers array. */
+	FreeArray( sharers );
 }
 
-void Decomp_Sync_BuildGRMap( Decomp_Sync* self ) {
-	UIntMap*	map;
-	unsigned	r_i;
+void Decomp_Sync_Destruct( Decomp_Sync* self ) {
+	assert( self );
 
-	FreeObject( self->grMap );
-
-	map = UIntMap_New();
-	for( r_i = 0; r_i < self->nRemotes; r_i++ )
-		UIntMap_Insert( map, self->remotes[r_i], r_i );
-	self->grMap = map;
+	Decomp_Sync_DestructDecomp( self );
+	Decomp_Sync_DestructComm( self );
 }
 
-void Decomp_Sync_BuildArray( Decomp_Sync* self, Decomp_Sync_Array* array ) {
-	CommTopology*	commTopo;
-	Decomp*		decomp;
-	unsigned	rank;
-	unsigned	nInc;
-	unsigned*	inc;
-
+void Decomp_Sync_DestructDecomp( Decomp_Sync* self ) {
 	assert( self );
-	assert( self->commTopo );
 
-	/* Shortcuts. */
-	decomp = self->decomp;
-	commTopo = self->commTopo;
-	MPI_Comm_rank( commTopo->comm, (int*)&rank );
+	Decomp_Sync_DestructRemotes( self );
+	if( self->decomp ) {
+		List_Remove( Decomp_GetSyncList( self->decomp ), &self );
+		self->decomp = NULL;
+	}
+}
 
-	/* Extract incidence. */
-	CommTopology_GetIncidence( commTopo, rank, &nInc, &inc );
+void Decomp_Sync_DestructComm( Decomp_Sync* self ) {
+	assert( self );
 
-	if( nInc ) {
-		/* Determine sink (local) information. */
-		if( self->netSnks > 0 ) {
-			unsigned*	snkOffs;
-			unsigned*	snkSizes;
-			unsigned*	snkDisps;
-			unsigned	snkInd = 0;
-			unsigned	p_i;
+	Decomp_Sync_DestructRemotes( self );
+	KillObject( self->commTopo );
+	KillArray( self->nSrcs );
+	KillArray( self->srcs );
+	KillArray( self->nSnks );
+	KillArray( self->snks );
+}
 
-			/* Allocate/reallocate memory. */
-			snkDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkDisps" );
-			snkSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkSizes" );
-			snkOffs = Memory_Alloc_Array( unsigned, self->netSnks, "Decomp_Sync_Array::snkOffs" );
+void Decomp_Sync_DestructRemotes( Decomp_Sync* self ) {
+	assert( self );
 
-			/* Calculate offsets and sizes. */
-			for( p_i = 0; p_i < nInc; p_i++ ) {
-				unsigned	snk_i;
+	Decomp_Sync_DestructArrays( self );
+	Decomp_Sync_DestructSources( self );
+	Decomp_Sync_DestructSinks( self );
+}
 
-				snkSizes[p_i] = 0;
-				for( snk_i = 0; snk_i < self->nSnks[p_i]; snk_i++ ) {
-					unsigned	dInd = Decomp_Sync_GlobalToDomain( self, self->snks[p_i][snk_i] );
+void Decomp_Sync_DestructSources( Decomp_Sync* self ) {
+	unsigned	nIncRanks;
+	unsigned	p_i;
 
-					snkOffs[snkInd] = dInd * array->snkStride;
-					snkSizes[p_i] += array->itemSize;
-					snkInd++;
-				}
-			}
+	assert( self );
 
-			/* Calculate the displacements. */
-			snkDisps[0] = 0;
-			for( p_i = 1; p_i < nInc; p_i++ )
-				snkDisps[p_i] = snkDisps[p_i - 1] + snkSizes[p_i - 1];
+	if( self->commTopo )
+		nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
 
-			/* Store arrays. */
-			array->snkOffs = snkOffs;
-			array->snkDisps = snkDisps;
-			array->snkSizes = snkSizes;
-		}
-		else {
-			/* Store null information. */
-			array->snkOffs = NULL;
-			array->snkDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkDisps" );
-			array->snkSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkSizes" );
-			memset( array->snkDisps, 0, nInc * sizeof(unsigned) );
-			memset( array->snkSizes, 0, nInc * sizeof(unsigned) );
-		}
+	if( self->decomp )
+		self->nDomains = Decomp_GetLocalSize( self->decomp );
 
-		/* Determine source (shadow) information. */
-		if( self->netSrcs > 0 ) {
-			unsigned*	srcOffs;
-			unsigned*	srcSizes;
-			unsigned*	srcDisps;
-			unsigned	srcInd = 0;
-			unsigned	p_i;
+	KillArray( self->remotes );
+	self->nRemotes = 0;
+	UIntMap_Clear( self->grMap );
+	self->netSrcs = 0;
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		KillArray( self->srcs[p_i] );
+}
 
-			/* Allocate/reallocate memory. */
-			srcDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcDisps" );
-			srcSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcSizes" );
-			srcOffs = Memory_Alloc_Array( unsigned, self->netSrcs, "Decomp_Sync_Array::srcOffs" );
+void Decomp_Sync_DestructSinks( Decomp_Sync* self ) {
+	unsigned	nIncRanks;
+	unsigned	p_i;
 
-			/* Calculate offsets and sizes. */
-			for( p_i = 0; p_i < nInc; p_i++ ) {
-				unsigned	src_i;
+	if( self->commTopo )
+		nIncRanks = CommTopology_GetIncidenceSize( self->commTopo );
 
-				srcSizes[p_i] = 0;
-				for( src_i = 0; src_i < self->nSrcs[p_i]; src_i++ ) {
-					unsigned	sInd = Decomp_Sync_GlobalToDomain( self, self->srcs[p_i][src_i] );
+	KillArray( self->shared );
+	self->nShared = 0;
+	KillArray( self->nSharers );
+	KillArray( self->sharers );
+	UIntMap_Clear( self->lsMap );
+	self->netSnks = 0;
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		KillArray( self->snks[p_i] );
+}
 
-					assert( sInd >= decomp->nLocals );
-					sInd -= decomp->nLocals;
-					srcOffs[srcInd] = sInd * array->srcStride;
-					srcSizes[p_i] += array->itemSize;
-					srcInd++;
-				}
-			}
+void Decomp_Sync_DestructArrays( Decomp_Sync* self ) {
+	unsigned	a_i;
 
-			/* Calculate the displacements. */
-			srcDisps[0] = 0;
-			for( p_i = 1; p_i < nInc; p_i++ )
-				srcDisps[p_i] = srcDisps[p_i - 1] + srcSizes[p_i - 1];
+	for( a_i = 0; a_i < List_GetSize( self->arrays ); a_i++ ) {
+		Decomp_Sync_Array*	array = *(Decomp_Sync_Array**)List_GetItem( self->arrays, a_i );
 
-			/* Store arrays. */
-			array->srcOffs = srcOffs;
-			array->srcDisps = srcDisps;
-			array->srcSizes = srcSizes;
-		}
-		else {
-			/* Store null information. */
-			array->srcOffs = NULL;
-			array->srcDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcDisps" );
-			array->srcSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcSizes" );
-			memset( array->srcDisps, 0, nInc * sizeof(unsigned) );
-			memset( array->srcSizes, 0, nInc * sizeof(unsigned) );
-		}
+		Decomp_Sync_Array_SetSync( array, self );
 	}
-	else {
-		array->snkOffs = NULL;
-		array->snkDisps = NULL;
-		array->snkSizes = NULL;
-		array->srcOffs = NULL;
-		array->srcDisps = NULL;
-		array->srcSizes = NULL;
-	}
 
-	/* Return incidence. */
-	CommTopology_ReturnIncidence( commTopo, rank, &nInc, &inc );
+	List_Clear( self->arrays );
 }
 
-void Decomp_Sync_Destruct( Decomp_Sync* self ) {
-	Decomp_Sync_DestructRemotes( self );
+#ifndef NDEBUG
+Bool Decomp_Sync_ValidateRemotes( Decomp_Sync* self, unsigned nRemotes, unsigned* remotes ) {
+	unsigned	domainInd;
+	unsigned	r_i;
 
-	if( self->decomp ) {
-		Decomp_RemoveSync( self->decomp, self );
-		self->decomp = NULL;
+	for( r_i = 0; r_i < nRemotes; r_i++ ) {
+		if( Decomp_Sync_GlobalToDomain( self, remotes[r_i], &domainInd ) )
+			return False;
 	}
+
+	return True;
 }
 
-void Decomp_Sync_DestructRemotes( Decomp_Sync* self ) {
-	Decomp_Sync_DestructArrays( self );
+Bool Decomp_Sync_ValidateSinks( Decomp_Sync* self, unsigned nSinks, unsigned* sinks ) {
+	RangeSet	*lSet, *sSet;
+	unsigned	nLocals, *locals;
+	unsigned	nInds;
 
-	if( self->commTopo ) {
-		unsigned	p_i;
+	Decomp_GetLocals( self->decomp, &nLocals, &locals );
 
-		for( p_i = 0; p_i < self->commTopo->nInc; p_i++ )
-			FreeObject( self->isects[p_i] );
-	}
-	KillArray( self->isects );
-	KillObject( self->commTopo );
+	lSet = RangeSet_New();
+	sSet = RangeSet_New();
+	RangeSet_SetIndices( lSet, nLocals, locals );
+	RangeSet_SetIndices( sSet, nSinks, sinks );
+	RangeSet_Subtraction( sSet, lSet );
+	nInds = RangeSet_GetSize( sSet );
+	FreeObject( lSet );
+	FreeObject( sSet );
 
-	KillArray( self->remotes );
-	self->nRemotes = 0;
-	KillArray( self->shared );
-	self->nShared = 0;
-	KillArray( self->nSharers );
-	KillArray( self->sharers );
-
-	KillObject( self->grMap );
-	KillObject( self->dsMap );
-
-	self->netSrcs = 0;
-	KillArray( self->nSrcs );
-	KillArray( self->srcs );
-	self->netSnks = 0;
-	KillArray( self->nSnks );
-	KillArray( self->snks );
+	return !nInds;
 }
 
-void Decomp_Sync_DestructArrays( Decomp_Sync* self ) {
-	unsigned	a_i;
+Bool Decomp_Sync_ValidateComms( Decomp_Sync* self ) {
+	assert( self );
 
-	for( a_i = 0; a_i < self->nArrays; a_i++ )
-		Decomp_Sync_DestructArray( self->arrays[a_i] );
-	KillArray( self->arrays );
-	self->nArrays = 0;
+	if( self->decomp && self->commTopo )
+		return Decomp_GetComm( self->decomp ) == CommTopology_GetComm( self->commTopo );
+	else
+		return True;
 }
-
-void Decomp_Sync_DestructArray( Decomp_Sync_Array* array ) {
-	FreeArray( array->snkDisps );
-	FreeArray( array->snkSizes );
-	FreeArray( array->snkOffs );
-	FreeArray( array->srcDisps );
-	FreeArray( array->srcSizes );
-	FreeArray( array->srcOffs );
-	FreeArray( array );
-}
+#endif

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,22 +47,6 @@
 	/** Virtual function types */
 
 	/** Mesh class contents */
-	typedef struct {
-		void*		snkArray;
-		unsigned	snkStride;
-		unsigned*	snkDisps;
-		unsigned*	snkSizes;
-		unsigned*	snkOffs;
-
-		void*		srcArray;
-		unsigned	srcStride;
-		unsigned*	srcDisps;
-		unsigned*	srcSizes;
-		unsigned*	srcOffs;
-
-		size_t		itemSize;
-	} Decomp_Sync_Array;
-
 	#define __Decomp_Sync				\
 		/* General info */			\
 		__Stg_Component				\
@@ -72,20 +56,18 @@
 		/* Decomp_Sync info */			\
 		Decomp*			decomp;		\
 		CommTopology*		commTopo;	\
-		RangeSet**		isects;		\
 							\
-		Decomp_Sync_Claim*	claim;		\
-		Decomp_Sync_Negotiate*	negotiate;	\
-							\
+		unsigned		nDomains;	\
 		unsigned		nRemotes;	\
 		unsigned*		remotes;	\
 		unsigned		nShared;	\
 		unsigned*		shared;		\
 		unsigned*		nSharers;	\
 		unsigned**		sharers;	\
+		unsigned*		owners;		\
 							\
 		UIntMap*		grMap;		\
-		UIntMap*		dsMap;		\
+		UIntMap*		lsMap;		\
 							\
 		unsigned		netSrcs;	\
 		unsigned*		nSrcs;		\
@@ -94,8 +76,9 @@
 		unsigned*		nSnks;		\
 		unsigned**		snks;		\
 							\
-		unsigned		nArrays;	\
-		Decomp_Sync_Array**	arrays;
+		List*			arrays;		\
+							\
+		unsigned		nRefs;
 
 	struct Decomp_Sync { __Decomp_Sync };
 
@@ -104,12 +87,12 @@
 	*/
 
 	#define DECOMP_SYNC_DEFARGS	\
-		STG_COMPONENT_DEFARGS
+		STG_CLASS_DEFARGS
 
 	#define DECOMP_SYNC_PASSARGS	\
-		STG_COMPONENT_PASSARGS
+		STG_CLASS_PASSARGS
 
-	Decomp_Sync* Decomp_Sync_New( Name name );
+	Decomp_Sync* Decomp_Sync_New();
 	Decomp_Sync* _Decomp_Sync_New( DECOMP_SYNC_DEFARGS );
 	void _Decomp_Sync_Init( Decomp_Sync* self );
 
@@ -120,55 +103,77 @@
 	void _Decomp_Sync_Delete( void* sync );
 	void _Decomp_Sync_Print( void* sync, Stream* stream );
 
-	#define Decomp_Sync_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define Decomp_Sync_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _Decomp_Sync_Copy( void* sync, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
-	void _Decomp_Sync_Construct( void* sync, Stg_ComponentFactory* cf, void* data );
-	void _Decomp_Sync_Build( void* sync, void* data );
-	void _Decomp_Sync_Initialise( void* sync, void* data );
-	void _Decomp_Sync_Execute( void* sync, void* data );
-	void _Decomp_Sync_Destroy( void* sync, void* data );
-
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
 	void Decomp_Sync_SetDecomp( void* sync, Decomp* decomp );
-	void Decomp_Sync_SetClaim( void* sync, Decomp_Sync_Claim* claim );
-	void Decomp_Sync_SetNegotiate( void* sync, Decomp_Sync_Negotiate* negotiate );
+	void Decomp_Sync_SetCommTopology( void* sync, CommTopology* commTopo );
+	void Decomp_Sync_AddRemoteRanks( void* sync, unsigned nRanks, unsigned* ranks );
 	void Decomp_Sync_SetRemotes( void* sync, unsigned nRemotes, unsigned* remotes );
-	void Decomp_Sync_Decompose( void* sync, unsigned nRequired, unsigned* required );
+	void Decomp_Sync_AddRemotes( void* sync, unsigned nRemotes, unsigned* remotes );
+	void Decomp_Sync_SetSources( void* sync, unsigned nRanks, unsigned* ranks, 
+				     unsigned* nSources, unsigned** sources );
+	void Decomp_Sync_SetSinks( void* sync, unsigned nRanks, unsigned* ranks, 
+				   unsigned* nSinks, unsigned** sinks );
+	void Decomp_Sync_AddSources( void* sync, unsigned nRanks, unsigned* ranks, 
+				     unsigned* nSources, unsigned** sources );
+	void Decomp_Sync_AddSinks( void* sync, unsigned nRanks, unsigned* ranks, 
+				   unsigned* nSinks, unsigned** sinks );
+	void Decomp_Sync_SetRequired( void* sync, unsigned nRequired, unsigned* required );
+	void Decomp_Sync_AddRequired( void* sync, unsigned nRequired, unsigned* required );
 
+	unsigned Decomp_Sync_GetGlobalSize( void* sync );
+	unsigned Decomp_Sync_GetLocalSize( void* sync );
+	unsigned Decomp_Sync_GetRemoteSize( void* sync );
 	unsigned Decomp_Sync_GetDomainSize( void* sync );
-	Bool Decomp_Sync_IsDomain( void* sync, unsigned global );
-	Bool Decomp_Sync_IsRemote( void* sync, unsigned domain );
-	Bool Decomp_Sync_IsShared( void* sync, unsigned domain );
-	unsigned Decomp_Sync_GlobalToDomain( void* sync, unsigned global );
+	unsigned Decomp_Sync_GetSharedSize( void* sync );
+	Decomp* Decomp_Sync_GetDecomp( void* sync );
+	CommTopology* Decomp_Sync_GetCommTopology( void* sync );
+	void Decomp_Sync_GetRemotes( void* sync, unsigned* nRemotes, unsigned** remotes );
+	unsigned Decomp_Sync_GetOwner( void* sync, unsigned remote );
+	void Decomp_Sync_GetSharers( void* sync, unsigned shared, 
+				     unsigned* nSharers, unsigned** sharers );
+	void Decomp_Sync_GetSources( void* sync, unsigned rank, unsigned* nSources, unsigned** sources );
+	void Decomp_Sync_GetSinks( void* sync, unsigned rank, unsigned* nSinks, unsigned** sinks );
+
+	Bool Decomp_Sync_GlobalToDomain( void* sync, unsigned global, unsigned* domain );
 	unsigned Decomp_Sync_DomainToGlobal( void* sync, unsigned domain );
-	unsigned Decomp_Sync_DomainToShared( void* sync, unsigned domain );
-	unsigned Decomp_Sync_SharedToDomain( void* sync, unsigned shared );
+	Bool Decomp_Sync_LocalToShared( void* sync, unsigned local, unsigned* shared );
+	unsigned Decomp_Sync_SharedToLocal( void* sync, unsigned shared );
 
-	Decomp_Sync_Array* Decomp_Sync_AddArray( void* sync, void* localArray, void* remoteArray, 
-						 size_t localStride, size_t remoteStride, size_t itemSize );
-	void Decomp_Sync_RemoveArray( void* sync, Decomp_Sync_Array* array );
-	void Decomp_Sync_Sync( void* sync );
-	void Decomp_Sync_SyncArray( void* self, Decomp_Sync_Array* array );
+	void Decomp_Sync_SyncArray( void* sync, Decomp_Sync_Array* array );
 
+	void Decomp_Sync_Update( void* sync );
+
+	void Decomp_Sync_AddRef( void* sync );
+	void Decomp_Sync_RemoveRef( void* sync );
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
 
-	void Decomp_Sync_BuildIntersections( Decomp_Sync* self, unsigned nIndices, unsigned* indices );
+	void Decomp_Sync_InitArrays( Decomp_Sync* self );
+	void Decomp_Sync_ExpandArrays( Decomp_Sync* self, unsigned nNewRanks );
+
+	void Decomp_Sync_SplitRemotes( Decomp_Sync* self, unsigned nRemotes, unsigned* remotes, 
+				       unsigned* nSrcs, unsigned** srcs, 
+				       unsigned* nSnks, unsigned** snks );
+
 	void Decomp_Sync_BuildShared( Decomp_Sync* self );
-	void Decomp_Sync_BuildGRMap( Decomp_Sync* self );
 
-	void Decomp_Sync_BuildArray( Decomp_Sync* self, Decomp_Sync_Array* array );
 	void Decomp_Sync_Destruct( Decomp_Sync* self );
+	void Decomp_Sync_DestructDecomp( Decomp_Sync* self );
+	void Decomp_Sync_DestructComm( Decomp_Sync* self );
 	void Decomp_Sync_DestructRemotes( Decomp_Sync* self );
+	void Decomp_Sync_DestructSources( Decomp_Sync* self );
+	void Decomp_Sync_DestructSinks( Decomp_Sync* self );
 	void Decomp_Sync_DestructArrays( Decomp_Sync* self );
-	void Decomp_Sync_DestructArray( Decomp_Sync_Array* array );
 
+#ifndef NDEBUG
+	Bool Decomp_Sync_ValidateRemotes( Decomp_Sync* self, unsigned nRemotes, unsigned* remotes );
+	Bool Decomp_Sync_ValidateSinks( Decomp_Sync* self, unsigned nSinks, unsigned* sinks );
+	Bool Decomp_Sync_ValidateComms( Decomp_Sync* self );
+#endif
+
 #endif /* __Discretisaton_Mesh_Decomp_Sync_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,312 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Decomp_Sync.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+
+#include "types.h"
+#include "shortcuts.h"
+#include "CommTopology.h"
+#include "Decomp.h"
+#include "Decomp_Sync.h"
+#include "Decomp_Sync_Array.h"
+
+
+/* Textual name of this class */
+const Type Decomp_Sync_Array_Type = "Decomp_Sync_Array";
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Decomp_Sync_Array* Decomp_Sync_Array_New() {
+	return _Decomp_Sync_Array_New( sizeof(Decomp_Sync_Array), 
+				       Decomp_Sync_Array_Type, 
+				       _Decomp_Sync_Array_Delete, 
+				       _Decomp_Sync_Array_Print, 
+				       NULL );
+}
+
+Decomp_Sync_Array* _Decomp_Sync_Array_New( DECOMP_SYNC_ARRAY_DEFARGS ) {
+	Decomp_Sync_Array* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Decomp_Sync_Array) );
+	self = (Decomp_Sync_Array*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+
+	/* Decomp_Sync_Array info */
+	_Decomp_Sync_Array_Init( self );
+
+	return self;
+}
+
+void _Decomp_Sync_Array_Init( Decomp_Sync_Array* self ) {
+	self->sync = NULL;
+
+	self->snkArray = NULL;
+	self->snkStride = 0;
+	self->snkDisps = NULL;
+	self->snkSizes = NULL;
+	self->snkOffs = NULL;
+
+	self->srcArray = NULL;
+	self->srcStride = 0;
+	self->srcDisps = NULL;
+	self->srcSizes = NULL;
+	self->srcOffs = NULL;
+
+	self->itemSize = 0;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Decomp_Sync_Array_Delete( void* sync ) {
+	Decomp_Sync_Array*	self = (Decomp_Sync_Array*)sync;
+
+	Decomp_Sync_Array_Destruct( self );
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Decomp_Sync_Array_Print( void* sync, Stream* stream ) {
+	Decomp_Sync_Array*	self = (Decomp_Sync_Array*)sync;
+
+	/* Set the Journal for printing informations */
+	Stream* syncStream;
+	syncStream = Journal_Register( InfoStream_Type, "Decomp_Sync_ArrayStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Decomp_Sync_Array (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Decomp_Sync_Array_SetSync( void* array, Decomp_Sync* sync ) {
+	Decomp_Sync_Array*	self = (Decomp_Sync_Array*)array;
+
+	assert( self );
+
+	Decomp_Sync_Array_Destruct( self );
+
+	self->sync = sync;
+	if( sync )
+		List_Append( sync->arrays, &self );
+}
+
+void Decomp_Sync_Array_SetMemory( void* array, 
+				  void* localArray, void* remoteArray, 
+				  size_t localStride, size_t remoteStride, 
+				  size_t itemSize )
+{
+	Decomp_Sync_Array*	self = (Decomp_Sync_Array*)array;
+
+	/* Sanity checks. */
+	assert( self );
+	assert( self->sync );
+
+	/* Store information. */
+	self->snkArray = localArray;
+	self->snkStride = localStride;
+	self->srcArray = remoteArray;
+	self->srcStride = remoteStride;
+	self->itemSize = itemSize;
+
+	/* Build this array. */
+	Decomp_Sync_Array_BuildArray( self );
+}
+
+void Decomp_Sync_Array_Sync( void* array ) {
+	Decomp_Sync_Array*	self = (Decomp_Sync_Array*)array;
+
+	assert( self );
+
+	Decomp_Sync_SyncArray( self->sync, self );
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+void Decomp_Sync_Array_BuildArray( Decomp_Sync_Array* self ) {
+	Decomp*		decomp;
+	CommTopology*	commTopo;
+	unsigned	nInc, *inc;
+
+	assert( self );
+	assert( self->sync );
+
+	/* Shortcuts. */
+	decomp = Decomp_Sync_GetDecomp( self->sync );
+	commTopo = Decomp_Sync_GetCommTopology( self->sync );
+
+	/* Extract incidence. */
+	CommTopology_GetIncidence( commTopo, &nInc, &inc );
+
+	if( nInc ) {
+		/* Determine sink (local) information. */
+		if( self->sync->netSnks > 0 ) {
+			unsigned*	snkOffs;
+			unsigned*	snkSizes;
+			unsigned*	snkDisps;
+			unsigned	snkInd = 0;
+			unsigned	p_i;
+
+			/* Allocate/reallocate memory. */
+			snkDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkDisps" );
+			snkSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkSizes" );
+			snkOffs = Memory_Alloc_Array( unsigned, self->sync->netSnks, "Decomp_Sync_Array::snkOffs" );
+
+			/* Calculate offsets and sizes. */
+			for( p_i = 0; p_i < nInc; p_i++ ) {
+				unsigned	snk_i;
+
+				snkSizes[p_i] = 0;
+				for( snk_i = 0; snk_i < self->sync->nSnks[p_i]; snk_i++ ) {
+					unsigned	dInd;
+
+					dInd = self->sync->snks[p_i][snk_i];
+					snkOffs[snkInd] = dInd * self->snkStride;
+					snkSizes[p_i] += self->itemSize;
+					snkInd++;
+				}
+			}
+
+			/* Calculate the displacements. */
+			snkDisps[0] = 0;
+			for( p_i = 1; p_i < nInc; p_i++ )
+				snkDisps[p_i] = snkDisps[p_i - 1] + snkSizes[p_i - 1];
+
+			/* Store arrays. */
+			self->snkOffs = snkOffs;
+			self->snkDisps = snkDisps;
+			self->snkSizes = snkSizes;
+		}
+		else {
+			/* Store null information. */
+			self->snkOffs = NULL;
+			self->snkDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkDisps" );
+			self->snkSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::snkSizes" );
+			memset( self->snkDisps, 0, nInc * sizeof(unsigned) );
+			memset( self->snkSizes, 0, nInc * sizeof(unsigned) );
+		}
+
+		/* Determine source (shadow) information. */
+		if( self->sync->netSrcs > 0 ) {
+			unsigned*	srcOffs;
+			unsigned*	srcSizes;
+			unsigned*	srcDisps;
+			unsigned	srcInd = 0;
+			unsigned	p_i;
+
+			/* Allocate/reallocate memory. */
+			srcDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcDisps" );
+			srcSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcSizes" );
+			srcOffs = Memory_Alloc_Array( unsigned, self->sync->netSrcs, "Decomp_Sync_Array::srcOffs" );
+
+			/* Calculate offsets and sizes. */
+			for( p_i = 0; p_i < nInc; p_i++ ) {
+				unsigned	src_i;
+
+				srcSizes[p_i] = 0;
+				for( src_i = 0; src_i < self->sync->nSrcs[p_i]; src_i++ ) {
+					unsigned	sInd;
+
+					sInd = self->sync->srcs[p_i][src_i];
+					assert( sInd >= Decomp_GetLocalSize( decomp ) );
+					sInd -= Decomp_GetLocalSize( decomp );
+					srcOffs[srcInd] = sInd * self->srcStride;
+					srcSizes[p_i] += self->itemSize;
+					srcInd++;
+				}
+			}
+
+			/* Calculate the displacements. */
+			srcDisps[0] = 0;
+			for( p_i = 1; p_i < nInc; p_i++ )
+				srcDisps[p_i] = srcDisps[p_i - 1] + srcSizes[p_i - 1];
+
+			/* Store arrays. */
+			self->srcOffs = srcOffs;
+			self->srcDisps = srcDisps;
+			self->srcSizes = srcSizes;
+		}
+		else {
+			/* Store null information. */
+			self->srcOffs = NULL;
+			self->srcDisps = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcDisps" );
+			self->srcSizes = Memory_Alloc_Array( unsigned, nInc, "Decomp_Sync_Array::srcSizes" );
+			memset( self->srcDisps, 0, nInc * sizeof(unsigned) );
+			memset( self->srcSizes, 0, nInc * sizeof(unsigned) );
+		}
+	}
+	else {
+		self->snkOffs = NULL;
+		self->snkDisps = NULL;
+		self->snkSizes = NULL;
+		self->srcOffs = NULL;
+		self->srcDisps = NULL;
+		self->srcSizes = NULL;
+	}
+}
+
+void Decomp_Sync_Array_Destruct( Decomp_Sync_Array* self ) {
+	if( self->sync )
+		List_Remove( self->sync->arrays, &self );
+
+	self->snkArray = NULL;
+	self->snkStride = 0;
+	self->srcArray = NULL;
+	self->srcStride = 0;
+	self->itemSize = 0;
+
+	KillArray( self->snkDisps );
+	KillArray( self->snkSizes );
+	KillArray( self->snkOffs );
+	KillArray( self->srcDisps );
+	KillArray( self->srcSizes );
+	KillArray( self->srcOffs );
+	self->itemSize = 0;
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Array.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,114 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Decomp_Sync_Array.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_Decomp_Sync_Array_h__
+#define __Discretisaton_Mesh_Decomp_Sync_Array_h__
+
+	/** Textual name of this class */
+	extern const Type Decomp_Sync_Array_Type;
+
+	/** Virtual function types */
+
+	/** Mesh class contents */
+	#define __Decomp_Sync_Array		\
+		/* General info */		\
+		__Stg_Class			\
+						\
+		/* Virtual info */		\
+						\
+		/* Decomp_Sync_Array info */	\
+		Decomp_Sync*	sync;		\
+						\
+		void*		snkArray;	\
+		unsigned	snkStride;	\
+		unsigned*	snkDisps;	\
+		unsigned*	snkSizes;	\
+		unsigned*	snkOffs;	\
+						\
+		void*		srcArray;	\
+		unsigned	srcStride;	\
+		unsigned*	srcDisps;	\
+		unsigned*	srcSizes;	\
+		unsigned*	srcOffs;	\
+						\
+		size_t		itemSize;
+
+	struct Decomp_Sync_Array { __Decomp_Sync_Array };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define DECOMP_SYNC_ARRAY_DEFARGS	\
+		STG_CLASS_DEFARGS
+
+	#define DECOMP_SYNC_ARRAY_PASSARGS	\
+		STG_CLASS_PASSARGS
+
+	Decomp_Sync_Array* Decomp_Sync_Array_New();
+	Decomp_Sync_Array* _Decomp_Sync_Array_New( DECOMP_SYNC_ARRAY_DEFARGS );
+	void _Decomp_Sync_Array_Init( Decomp_Sync_Array* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Decomp_Sync_Array_Delete( void* array );
+	void _Decomp_Sync_Array_Print( void* array, Stream* stream );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void Decomp_Sync_Array_SetSync( void* array, Decomp_Sync* sync );
+	void Decomp_Sync_Array_SetMemory( void* array, 
+					  void* localArray, void* remoteArray, 
+					  size_t localStride, size_t remoteStride, 
+					  size_t itemSize );
+	void Decomp_Sync_Array_Sync( void* array );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void Decomp_Sync_Array_BuildArray( Decomp_Sync_Array* self );
+	void Decomp_Sync_Array_Destruct( Decomp_Sync_Array* self );
+
+#endif /* __Discretisaton_Mesh_Decomp_Sync_Array_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Claim.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Claim.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Claim.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -196,20 +196,22 @@
 				       unsigned* nLocals, unsigned** locals, unsigned* nRemotes, unsigned** remotes )
 {
 	unsigned	rank, nProcs;
+	MPI_Comm	comm;
 	unsigned	nInc;
 	unsigned*	inc;
 	unsigned	nBytes;
-	Stg_Byte*		bytes;
+	Stg_Byte*	bytes;
 	RangeSet*	tmpClaimed;
 	unsigned	tag = 6669;
 	unsigned	p_i, p_j;
 
 	/* Get basic MPI info. */
-	MPI_Comm_rank( topo->comm, (int*)&rank );
-	MPI_Comm_size( topo->comm, (int*)&nProcs );
+	rank = CommTopology_GetGlobalCommRank( topo );
+	nProcs = CommTopology_GetGlobalCommSize( topo );
+	comm = CommTopology_GetGlobalComm( topo );
 
 	/* Extract our neighbouring processors. */
-	CommTopology_GetIncidence( topo, rank, &nInc, &inc );
+	CommTopology_GetIncidence( topo, &nInc, &inc );
 
 	/* Figure out where info is coming from and going to. Note that the incidence
 	   is always ordered from lowest to highest rank. */
@@ -221,9 +223,9 @@
 			break;
 
 		/* Receive from neighbour which indices it has taken. */
-		MPI_Recv( &nBytes, 1, MPI_UNSIGNED, inc[p_i], tag, topo->comm, &status );
+		MPI_Recv( &nBytes, 1, MPI_UNSIGNED, inc[p_i], tag, comm, &status );
 		bytes = Memory_Alloc_Array_Unnamed( Stg_Byte, nBytes );
-		MPI_Recv( bytes, nBytes, MPI_BYTE, inc[p_i], tag, topo->comm, &status );
+		MPI_Recv( bytes, nBytes, MPI_BYTE, inc[p_i], tag, comm, &status );
 		RangeSet_Unpickle( tmpClaimed, nBytes, bytes );
 		FreeArray( bytes );
 
@@ -243,13 +245,10 @@
 		intersect = RangeSet_DeepCopy( isects[p_j] );
 		RangeSet_Intersection( intersect, lSet );
 		RangeSet_Pickle( intersect, &nBytes, &bytes );
-		MPI_Send( &nBytes, 1, MPI_UNSIGNED, inc[p_j], tag, topo->comm );
-		MPI_Send( bytes, nBytes, MPI_BYTE, inc[p_j], tag, topo->comm );
+		MPI_Send( &nBytes, 1, MPI_UNSIGNED, inc[p_j], tag, comm );
+		MPI_Send( bytes, nBytes, MPI_BYTE, inc[p_j], tag, comm );
 		FreeArray( bytes );
 	}
-
-	/* Return incidence. */
-	CommTopology_ReturnIncidence( topo, rank, &nInc, &inc );
 }
 
 void Decomp_Sync_Claim_BuildIndices( Decomp_Sync_Claim* self, unsigned nRequired, unsigned* required, RangeSet* claimed, 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Negotiate.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Negotiate.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomp_Sync_Negotiate.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -180,13 +180,13 @@
 
 	/* Shortcuts. */
 	commTopo = sync->commTopo;
-	MPI_Comm_rank( commTopo->comm, (int*)&rank );
+	rank = CommTopology_GetGlobalCommRank( commTopo );
 
 	/* Locate remote indices. */
 	Decomp_Sync_Negotiate_RemoteSearch( self, sync, &nFound, &found );
 
 	/* Get processor incidence. */
-	CommTopology_GetIncidence( commTopo, rank, &nInc, &inc );
+	CommTopology_GetIncidence( commTopo, &nInc, &inc );
 
 	if( nInc ) {
 		/* Set up the source arrays. */
@@ -277,9 +277,6 @@
 			sync->netSnks += sync->nSnks[p_i];
 		}
 	}
-
-	/* Return incidence. */
-	CommTopology_ReturnIncidence( commTopo, rank, &nInc, &inc );
 }
 
 

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,461 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Decomposer.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Mesh.h"
+
+
+/* Textual name of this class */
+const Type Decomposer_Type = "Decomposer";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Decomposer* Decomposer_New( Name name ) {
+	return _Decomposer_New( sizeof(Decomposer), 
+				Decomposer_Type, 
+				_Decomposer_Delete, 
+				_Decomposer_Print, 
+				NULL, 
+				_Decomposer_Decompose );
+}
+
+Decomposer* _Decomposer_New( DECOMPOSER_DEFARGS ) {
+	Decomposer* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Decomposer) );
+	self = (Decomposer*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+	self->decomposeFunc = decomposeFunc;
+
+	/* Decomposer info */
+	_Decomposer_Init( self );
+
+	return self;
+}
+
+void _Decomposer_Init( Decomposer* self ) {
+	self->comm = MPI_COMM_WORLD;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Decomposer_Delete( void* decomposer ) {
+	Decomposer*	self = (Decomposer*)decomposer;
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Decomposer_Print( void* decomposer, Stream* stream ) {
+	Decomposer*	self = (Decomposer*)decomposer;
+	
+	/* Set the Journal for printing informations */
+	Stream* decomposerStream;
+	decomposerStream = Journal_Register( InfoStream_Type, "DecomposerStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Decomposer (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+void _Decomposer_Decompose( void* decomposer, unsigned nDomains, unsigned* domains, 
+			    CommTopology** commTopo, Decomp** decomp, Decomp_Sync** sync )
+{
+	Decomposer*	self = (Decomposer*)decomposer;
+	CommTopology*	tmpCommTopo;
+	Decomp*		tmpDecomp;
+	RangeSet**	isects;
+
+	assert( self );
+	assert( sync );
+
+	if( commTopo && *commTopo ) {
+		Decomposer_BuildLocalIntersections( self, nDomains, domains, 
+						    *commTopo, &isects );
+		tmpCommTopo = *commTopo;
+	}
+	else {
+		Decomposer_BuildCommTopology( self, nDomains, domains, 
+					      &tmpCommTopo, &isects );
+
+		/* Keep communication topology? */
+		if( commTopo )
+			*commTopo = tmpCommTopo;
+	}
+
+	Decomposer_Claim( self, tmpCommTopo, isects, nDomains, domains, 
+			  &tmpDecomp, sync );
+
+	/* Interested in keeping decomp? */
+	if( decomp )
+		*decomp = tmpDecomp;
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void Decomposer_SetComm( void* decomposer, MPI_Comm comm ) {
+	Decomposer*	self = (Decomposer*)decomposer;
+
+	assert( self );
+
+	self->comm = comm;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+void Decomposer_BuildCommTopology( Decomposer* self, unsigned nDomains, unsigned* domains, 
+				   CommTopology** commTopo, RangeSet*** isects )
+{
+	unsigned	rank, nProcs;
+	RangeSet*	lSet;
+	MPI_Group	worldGroup;
+	unsigned*	worldRanks;
+	unsigned*	subRanks;
+	unsigned	nCommInc;
+	unsigned*	commInc;
+	RangeSet**	iSets;
+	unsigned	nInc;
+	unsigned*	inc;
+	unsigned	p_i;
+
+	assert( self );
+	assert( !nDomains || domains );
+	assert( commTopo );
+	assert( isects );
+
+	/* Get basic MPI info. */
+	MPI_Comm_rank( self->comm, (int*)&rank );
+	MPI_Comm_size( self->comm, (int*)&nProcs );
+
+	/* We'll need to modify the world group. */
+	MPI_Comm_group( self->comm, &worldGroup );
+	worldRanks = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
+	subRanks = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
+
+	/* We need space to store index intersections. */
+	iSets = Memory_Alloc_Array_Unnamed( RangeSet*, nProcs );
+	memset( iSets, 0, nProcs * sizeof(RangeSet*) );
+
+	/* Create a local set of required indices. */
+	lSet = RangeSet_New();
+	RangeSet_SetIndices( lSet, nDomains, domains );
+
+	/* Tackle each processor one at a time. */
+	for( p_i = 0; p_i < nProcs - 1; p_i++ ) {
+		int		groupRange[3];
+		MPI_Group	subGroup;
+		MPI_Comm	subComm;
+		unsigned	p_j;
+
+		/* Set the processor range. */
+		groupRange[0] = p_i;
+		groupRange[1] = nProcs - 1;
+		groupRange[2] = 1;
+
+		/* We'll need a new group, as we only want to communicate using a triangular scheme. */
+		MPI_Group_range_incl( worldGroup, 1, &groupRange, &subGroup );
+		MPI_Comm_create( self->comm, subGroup, &subComm );
+
+		/* Only continue if we're part of the sub-communicator. */
+		if( rank >= p_i ) {
+			unsigned	nBytes;
+			Stg_Byte*	bytes;
+			unsigned*	nFounds;
+			Stg_Byte**	founds;
+
+			/* Create a mapping between ranks. */
+			for( p_j = p_i; p_j < nProcs; p_j++ )
+				subRanks[p_j] = p_j - p_i;
+			MPI_Group_translate_ranks( subGroup, nProcs - p_i, (int*)(subRanks + p_i), 
+						   worldGroup, (int*)worldRanks );
+
+			if( p_i == rank )
+				RangeSet_Pickle( lSet, &nBytes, &bytes );
+
+			MPIArray_Bcast( &nBytes, (void**)&bytes, sizeof(Stg_Byte), subRanks[p_i], subComm );
+
+			if( p_i != rank ) {
+				/* Create the intersection. */
+				iSets[p_i] = RangeSet_New();
+				RangeSet_Unpickle( iSets[p_i], nBytes, bytes );
+				RangeSet_Intersection( iSets[p_i], lSet );
+
+				/* Pickle the intersection to send back. */
+				FreeArray( bytes );
+				RangeSet_Pickle( iSets[p_i], &nBytes, &bytes );
+			}
+			else {
+				KillArray( bytes );
+				nBytes = 0;
+			}
+
+			/* Retrieve the results and unpickle each of them. */
+			MPIArray_Gather( nBytes, bytes, &nFounds, (void***)&founds, sizeof(Stg_Byte), 
+					 subRanks[p_i], subComm );
+			if( p_i == rank ) {
+				for( p_j = 0; p_j < nProcs - p_i; p_j++ ) {
+					if( !nFounds[p_j] )
+						continue;
+
+					iSets[worldRanks[p_j]] = RangeSet_New();
+					RangeSet_Unpickle( iSets[worldRanks[p_j]], nFounds[p_j], founds[p_j] );
+				}
+
+				/* Free the found arrays. */
+				FreeArray( nFounds );
+				FreeArray( founds );
+			}
+			else {
+				/* Free pickled range set. */
+				FreeArray( bytes );
+			}
+
+			/* Destroy the sub-communicator. */
+			MPI_Comm_free( &subComm );
+		}
+
+		/* Destroy the sub-group. */
+		MPI_Group_free( &subGroup );
+	}
+
+	/* Free rank translation arrays and local range set. */
+	FreeArray( worldRanks );
+	FreeArray( subRanks );
+
+	/* Build a set of communication incidence. */
+	nCommInc = 0;
+	commInc = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
+	for( p_i = 0; p_i < nProcs; p_i++ ) {
+		if( iSets[p_i] && iSets[p_i]->nInds )
+			commInc[nCommInc++] = p_i;
+	}
+
+	/* Create the communication topology, unless one has already been specified. */
+	*commTopo = CommTopology_New();
+	CommTopology_SetComm( *commTopo, self->comm );
+	CommTopology_SetIncidence( *commTopo, nCommInc, commInc );
+	FreeArray( commInc );
+
+	/* Build final intersections. */
+	CommTopology_GetIncidence( *commTopo, &nInc, &inc );
+	if( nInc ) {
+		unsigned	inc_i;
+
+		*isects = Memory_Alloc_Array_Unnamed( RangeSet*, nInc );
+		for( inc_i = 0; inc_i < nInc; inc_i++ )
+			(*isects)[inc_i] = iSets[inc[inc_i]];
+	}
+	else
+		*isects = NULL;
+
+	/* Free intersection array. */
+	FreeArray( iSets );
+}
+
+void Decomposer_BuildLocalIntersections( Decomposer* self, unsigned nDomains, unsigned* domains, 
+					 CommTopology* commTopo, RangeSet*** isects )
+{
+	unsigned	nIncRanks;
+	RangeSet*	lSet;
+	unsigned	nBytes, *nRemBytes, *nFndBytes;
+	Stg_Byte	*bytes, **remBytes, **fndBytes;
+	unsigned	p_i;
+
+	assert( self );
+	assert( !nDomains || domains );
+	assert( commTopo );
+	assert( isects );
+
+	/* Get some crap. */
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+
+	/* We need space to store index intersections. */
+	*isects = Memory_Alloc_Array_Unnamed( RangeSet*, nIncRanks );
+	memset( *isects, 0, nIncRanks * sizeof(RangeSet*) );
+
+	/* Create a local set of required indices, send to everyone. */
+	lSet = RangeSet_New();
+	RangeSet_SetIndices( lSet, nDomains, domains );
+	RangeSet_Pickle( lSet, &nBytes, &bytes );
+	CommTopology_Allgather( commTopo, 
+				nBytes, bytes, 
+				&nRemBytes, &remBytes, 
+				sizeof(Stg_Byte) );
+
+	/* Done with bytes. */
+	FreeArray( bytes );
+
+	/* Build intersections. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		(*isects)[p_i] = RangeSet_New();
+		RangeSet_Unpickle( (*isects)[p_i], nRemBytes[p_i], remBytes[p_i] );
+		RangeSet_Intersection( (*isects)[p_i], lSet );
+		FreeArray( remBytes[p_i] );
+		RangeSet_Pickle( (*isects)[p_i], nRemBytes + p_i, remBytes + p_i );
+	}
+
+	/* Send back. */
+	CommTopology_Alltoall( commTopo, 
+			       nRemBytes, remBytes, 
+			       &nFndBytes, &fndBytes, 
+			       sizeof(Stg_Byte) );
+
+	/* Free unused arrays. */
+	FreeArray( nRemBytes );
+	FreeArray2D( nIncRanks, remBytes );
+
+	/* Extract our intersections. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		RangeSet_Unpickle( (*isects)[p_i], nFndBytes[p_i], fndBytes[p_i] );
+
+	/* Free remaining arrays. */
+	FreeArray( nFndBytes );
+	FreeArray2D( nIncRanks, fndBytes );
+}
+
+void Decomposer_Claim( Decomposer* self, CommTopology* commTopo, RangeSet** isects, 
+		       unsigned nDomains, unsigned* domains, 
+		       Decomp** decomp, Decomp_Sync** sync )
+{
+	unsigned	rank, nProcs;
+	MPI_Comm	comm;
+	unsigned	nInc;
+	unsigned*	inc;
+	RangeSet*	lSet;
+	unsigned	nBytes;
+	Stg_Byte*	bytes;
+	RangeSet*	tmpClaimed;
+	unsigned	tag = 6669;
+	unsigned	p_i, p_j;
+
+	/* Get basic MPI info. */
+	comm = CommTopology_GetComm( commTopo );
+	MPI_Comm_rank( comm, (int*)&rank );
+	MPI_Comm_size( comm, (int*)&nProcs );
+
+	/* Build a set of domains. */
+	lSet = RangeSet_New();
+	RangeSet_SetIndices( lSet, nDomains, domains );
+
+	/* Extract our neighbouring processors. */
+	CommTopology_GetIncidence( commTopo, &nInc, &inc );
+
+	/* Figure out where info is coming from and going to. Note that the incidence
+	   is always ordered from lowest to highest rank. */
+	tmpClaimed = RangeSet_New();
+	for( p_i = 0; p_i < nInc; p_i++ ) {
+		MPI_Status	status;
+
+		if( inc[p_i] > rank )
+			break;
+
+		/* Receive from neighbour which indices it has taken. */
+		MPI_Recv( &nBytes, 1, MPI_UNSIGNED, inc[p_i], tag, comm, &status );
+		bytes = Memory_Alloc_Array_Unnamed( Stg_Byte, nBytes );
+		MPI_Recv( bytes, nBytes, MPI_BYTE, inc[p_i], tag, comm, &status );
+		RangeSet_Unpickle( tmpClaimed, nBytes, bytes );
+		FreeArray( bytes );
+
+		/* Subtract from our claimed set. */
+		RangeSet_Subtraction( lSet, tmpClaimed );
+	}
+	FreeObject( tmpClaimed );
+
+	/* Update remaining neighbours as to which indices we've taken. */
+	for( p_j = p_i; p_j < nInc; p_j++ ) {
+		RangeSet*	intersect;
+
+		intersect = RangeSet_DeepCopy( isects[p_j] );
+		RangeSet_Intersection( intersect, lSet );
+		RangeSet_Pickle( intersect, &nBytes, &bytes );
+		MPI_Send( &nBytes, 1, MPI_UNSIGNED, inc[p_j], tag, comm );
+		MPI_Send( bytes, nBytes, MPI_BYTE, inc[p_j], tag, comm );
+		FreeArray( bytes );
+		FreeObject( intersect );
+	}
+
+	/* Extract our ownership. */
+	Decomposer_BuildIndices( self, nDomains, domains, lSet, 
+				 commTopo, decomp, sync );
+
+	/* Free local range set. */
+	FreeObject( lSet );
+}
+
+void Decomposer_BuildIndices( Decomposer* self, unsigned nDomains, unsigned* domains, RangeSet* claimed, 
+			      CommTopology* commTopo, Decomp** decomp, Decomp_Sync** sync )
+{
+	RangeSet*	rSet;
+	unsigned	nLocals, *locals;
+	unsigned	nRemotes, *remotes;
+
+	/* Extract local indices. */
+	*decomp = Decomp_New();
+	Decomp_SetComm( *decomp, self->comm );
+	RangeSet_GetIndices( claimed, &nLocals, &locals );
+	Decomp_SetLocals( *decomp, nLocals, locals );
+	FreeArray( locals );
+
+	/* Build a set of remotes. */
+	rSet = RangeSet_New();
+	RangeSet_SetIndices( rSet, nDomains, domains );
+	RangeSet_Subtraction( rSet, claimed );
+
+	/* Set remote indices. */
+	*sync = Decomp_Sync_New();
+	Decomp_Sync_SetDecomp( *sync, *decomp );
+	Decomp_Sync_SetCommTopology( *sync, commTopo );
+	RangeSet_GetIndices( rSet, &nRemotes, &remotes );
+	Decomp_Sync_SetRemotes( *sync, nRemotes, remotes );
+	FreeArray( remotes );
+
+	/* Destroy rental set. */
+	FreeObject( rSet );
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Decomposer.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,113 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Decomposer.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_Decomposer_h__
+#define __Discretisaton_Mesh_Decomposer_h__
+
+	/** Textual name of this class */
+	extern const Type	Decomposer_Type;
+
+	/** Virtual function types */
+	typedef void (Decomposer_DecomposeFunc)( void* decomposer, unsigned nDomains, unsigned* domains, 
+						 CommTopology** commTopology, Decomp** decomp, Decomp_Sync** sync );
+
+	/** Class contents */
+	#define __Decomposer					\
+		/* General info */				\
+		__Stg_Class					\
+								\
+		/* Virtual info */				\
+		Decomposer_DecomposeFunc*	decomposeFunc;	\
+								\
+		/* Decomposer info */				\
+		MPI_Comm		comm;
+
+	struct Decomposer { __Decomposer };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define DECOMPOSER_DEFARGS				\
+		STG_CLASS_DEFARGS,				\
+		Decomposer_DecomposeFunc*	decomposeFunc
+
+	#define DECOMPOSER_PASSARGS			\
+		STG_CLASS_PASSARGS, decomposeFunc
+
+	Decomposer* Decomposer_New();
+	Decomposer* _Decomposer_New( DECOMPOSER_DEFARGS );
+	void _Decomposer_Init( Decomposer* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Decomposer_Delete( void* decomposer );
+	void _Decomposer_Print( void* decomposer, Stream* stream );
+
+	void _Decomposer_Decompose( void* decomposer, unsigned nDomains, unsigned* domains, 
+				    CommTopology** commTopology, Decomp** decomp, Decomp_Sync** sync );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void Decomposer_SetComm( void* decomposer, MPI_Comm comm );
+
+	#define Decomposer_Decompose( decomposer, nDomains, domains, commTopo, decomp, sync )				\
+		(assert( (decomposer) && ((Decomposer*)decomposer)->decomposeFunc ),					\
+		 ((Decomposer*)decomposer)->decomposeFunc( decomposer, nDomains, domains, commTopo, decomp, sync ))
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void Decomposer_BuildCommTopology( Decomposer* self, unsigned nDomains, unsigned* domains, 
+					   CommTopology** commTopo, RangeSet*** isects );
+	void Decomposer_BuildLocalIntersections( Decomposer* self, unsigned nDomains, unsigned* domains, 
+						 CommTopology* commTopo, RangeSet*** isects );
+	void Decomposer_Claim( Decomposer* self, CommTopology* topo, RangeSet** isects, 
+			       unsigned nDomains, unsigned* domains, 
+			       Decomp** decomp, Decomp_Sync** sync );
+	void Decomposer_BuildIndices( Decomposer* self, unsigned nDomains, unsigned* domains, RangeSet* claimed, 
+				      CommTopology* commTopo, Decomp** decomp, Decomp_Sync** sync );
+
+#endif /* __Discretisaton_Mesh_Decomposer_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,159 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: DictionaryGenerator.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include <mpi.h>
+#include "Base/Base.h"
+
+#include "Discretisation/Geometry/Geometry.h"
+#include "Discretisation/Shape/Shape.h"
+
+#include "Mesh.h"
+
+
+/* Textual name of this class */
+const Type DictionaryGenerator_Type = "DictionaryGenerator";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+DictionaryGenerator* DictionaryGenerator_New( Name name ) {
+	return _DictionaryGenerator_New( sizeof(DictionaryGenerator), 
+					DictionaryGenerator_Type, 
+					_DictionaryGenerator_Delete, 
+					_DictionaryGenerator_Print, 
+					 NULL, 
+					(void* (*)(Name))_DictionaryGenerator_New, 
+					_DictionaryGenerator_Construct, 
+					_DictionaryGenerator_Build, 
+					_DictionaryGenerator_Initialise, 
+					_DictionaryGenerator_Execute, 
+					_DictionaryGenerator_Destroy, 
+					name, 
+					NON_GLOBAL, 
+					DictionaryGenerator_Generate );
+}
+
+DictionaryGenerator* _DictionaryGenerator_New( DICTIONARYGENERATOR_DEFARGS ) {
+	DictionaryGenerator* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(DictionaryGenerator) );
+	self = (DictionaryGenerator*)_MeshGenerator_New( MESHGENERATOR_PASSARGS );
+
+	/* Virtual info */
+
+	/* DictionaryGenerator info */
+	_DictionaryGenerator_Init( self );
+
+	return self;
+}
+
+void _DictionaryGenerator_Init( DictionaryGenerator* self ) {
+	self->dict = NULL;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _DictionaryGenerator_Delete( void* generator ) {
+	DictionaryGenerator*	self = (DictionaryGenerator*)generator;
+
+	/* Delete the parent. */
+	_MeshGenerator_Delete( self );
+}
+
+void _DictionaryGenerator_Print( void* generator, Stream* stream ) {
+	DictionaryGenerator*	self = (DictionaryGenerator*)generator;
+	
+	/* Set the Journal for printing informations */
+	Stream* generatorStream;
+	generatorStream = Journal_Register( InfoStream_Type, "DictionaryGeneratorStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "DictionaryGenerator (ptr): (%p)\n", self );
+	_MeshGenerator_Print( self, stream );
+}
+
+void _DictionaryGenerator_Construct( void* generator, Stg_ComponentFactory* cf, void* data ) {
+	DictionaryGenerator*	self = (DictionaryGenerator*)generator;
+	Dictionary*		dict;
+
+	assert( self );
+	assert( cf );
+
+	/* Call parent construct. */
+	_MeshGenerator_Construct( self, cf, data );
+
+	/* Set the dictionary to the component dictionary. */
+	DictionaryGenerator_SetDictionary( self, cf->componentDict );
+}
+
+void _DictionaryGenerator_Build( void* generator, void* data ) {
+	_MeshGenerator_Build( generator, data );
+}
+
+void _DictionaryGenerator_Initialise( void* generator, void* data ) {
+}
+
+void _DictionaryGenerator_Execute( void* generator, void* data ) {
+}
+
+void _DictionaryGenerator_Destroy( void* generator, void* data ) {
+}
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void DictionaryGenerator_Generate( void* generator, void* _mesh ) {
+	DictionaryGenerator*	self = (DictionaryGenerator*)generator;
+	Mesh*			mesh = (Mesh*)_mesh;
+
+	/* Sanity check. */
+	assert( self );
+	assert( self->dict );
+
+	/* For now, this can only work in serial. */
+	
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,99 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: DictionaryGenerator.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_DictionaryGenerator_h__
+#define __Discretisaton_Mesh_DictionaryGenerator_h__
+
+	/** Textual name of this class */
+	extern const Type DictionaryGenerator_Type;
+
+	/** Virtual function types */
+
+	/** DictionaryGenerator class contents */
+	#define __DictionaryGenerator		\
+		/* General info */		\
+		__MeshGenerator			\
+						\
+		/* Virtual info */		\
+						\
+		/* DictionaryGenerator info */	\
+		Dictionary*	dict;
+
+	struct DictionaryGenerator { __DictionaryGenerator };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define DICTIONARYGENERATOR_DEFARGS	\
+		MESHGENERATOR_DEFARGS
+
+	#define DICTIONARYGENERATOR_PASSARGS	\
+		MESHGENERATOR_PASSARGS
+
+	DictionaryGenerator* DictionaryGenerator_New( Name name );
+	DictionaryGenerator* _DictionaryGenerator_New( DICTIONARYGENERATOR_DEFARGS );
+	void _DictionaryGenerator_Init( DictionaryGenerator* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _DictionaryGenerator_Delete( void* generator );
+	void _DictionaryGenerator_Print( void* generator, Stream* stream );
+	void _DictionaryGenerator_Construct( void* generator, Stg_ComponentFactory* cf, void* data );
+	void _DictionaryGenerator_Build( void* generator, void* data );
+	void _DictionaryGenerator_Initialise( void* generator, void* data );
+	void _DictionaryGenerator_Execute( void* generator, void* data );
+	void _DictionaryGenerator_Destroy( void* generator, void* data );
+
+	void DictionaryGenerator_Generate( void* generator, void* _mesh );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void DictionaryGenerator_SetDictionary( void* generator, Dictionary* dict );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+#endif /* __Discretisaton_Mesh_DictionaryGenerator_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DictionaryGenerator.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">DictionaryGenerator</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StGermain</param>
+<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
+<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
+<param name="Parent"></param>
+<param name="Description">...</param>
+
+</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,386 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "MeshDecomp.h"
-#include "DummyMD.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type DummyMD_Type = "DummyMD";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-DummyMD* DummyMD_DefaultNew( Name name ){
-	
-	return (DummyMD*)_DummyMD_New( 
-		sizeof(DummyMD), 
-		DummyMD_Type, 
-		_DummyMD_Delete, 
-		_DummyMD_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)DummyMD_DefaultNew,
-		_DummyMD_Construct,
-		_DummyMD_Build,
-		_DummyMD_Initialise,
-		_DummyMD_Execute,
-		_DummyMD_Destroy,
-		name,
-		False,
-		_MeshDecomp_Node_LocalToGlobal1D,
-		_MeshDecomp_Node_DomainToGlobal1D,
-		_MeshDecomp_Node_ShadowToGlobal1D, 
-		_MeshDecomp_Node_GlobalToLocal1D, 
-		_MeshDecomp_Node_GlobalToDomain1D, 
-		_MeshDecomp_Node_GlobalToShadow1D,
-		_MeshDecomp_Element_LocalToGlobal1D,
-		_MeshDecomp_Element_DomainToGlobal1D,
-		_MeshDecomp_Element_ShadowToGlobal1D, 
-		_MeshDecomp_Element_GlobalToLocal1D, 
-		_MeshDecomp_Element_GlobalToDomain1D, 
-		_MeshDecomp_Element_GlobalToShadow1D,
-		_DummyMD_Shadow_ProcCount,
-		_DummyMD_Shadow_BuildProcs,
-		_MeshDecomp_Shadow_ProcElementCount,
-		_MeshDecomp_Proc_WithElement,
-		NULL,
-		MPI_COMM_WORLD,
-		NULL,
-		NULL );
-}
-
-DummyMD* DummyMD_New(
-		Name						name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout )
-{
-	return _DummyMD_New( 
-		sizeof(DummyMD), 
-		DummyMD_Type, 
-		_DummyMD_Delete, 
-		_DummyMD_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)DummyMD_DefaultNew,
-		_DummyMD_Construct,
-		_DummyMD_Build,
-		_DummyMD_Initialise,
-		_DummyMD_Execute,
-		_DummyMD_Destroy,
-		name,
-		True,
-		_MeshDecomp_Node_LocalToGlobal1D,
-		_MeshDecomp_Node_DomainToGlobal1D,
-		_MeshDecomp_Node_ShadowToGlobal1D, 
-		_MeshDecomp_Node_GlobalToLocal1D, 
-		_MeshDecomp_Node_GlobalToDomain1D, 
-		_MeshDecomp_Node_GlobalToShadow1D,
-		_MeshDecomp_Element_LocalToGlobal1D,
-		_MeshDecomp_Element_DomainToGlobal1D,
-		_MeshDecomp_Element_ShadowToGlobal1D, 
-		_MeshDecomp_Element_GlobalToLocal1D, 
-		_MeshDecomp_Element_GlobalToDomain1D, 
-		_MeshDecomp_Element_GlobalToShadow1D,
-		_DummyMD_Shadow_ProcCount,
-		_DummyMD_Shadow_BuildProcs,
-		_MeshDecomp_Shadow_ProcElementCount,
-		_MeshDecomp_Proc_WithElement,
-		dictionary,
-		communicator,
-		eLayout,
-		nLayout );
-}
-
-
-void DummyMD_Init(
-		DummyMD*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout )
-{
-	/* General info */
-	self->type = DummyMD_Type;
-	self->_sizeOfSelf = sizeof(DummyMD);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _DummyMD_Delete;
-	self->_print = _DummyMD_Print;
-	self->_copy = NULL;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)DummyMD_DefaultNew;
-	self->_construct = _DummyMD_Construct;
-	self->_build = _DummyMD_Build;
-	self->_initialise = _DummyMD_Initialise;
-	self->_execute = _DummyMD_Execute;
-	self->_destroy = _DummyMD_Destroy;
-	self->nodeMapLocalToGlobal = _MeshDecomp_Node_LocalToGlobal1D;
-	self->nodeMapDomainToGlobal = _MeshDecomp_Node_DomainToGlobal1D;
-	self->nodeMapShadowToGlobal = _MeshDecomp_Node_ShadowToGlobal1D;
-	self->nodeMapGlobalToLocal = _MeshDecomp_Node_GlobalToLocal1D;
-	self->nodeMapGlobalToDomain = _MeshDecomp_Node_GlobalToDomain1D;
-	self->nodeMapGlobalToShadow = _MeshDecomp_Node_GlobalToShadow1D;
-	self->elementMapLocalToGlobal = _MeshDecomp_Element_LocalToGlobal1D;
-	self->elementMapDomainToGlobal = _MeshDecomp_Element_DomainToGlobal1D;
-	self->elementMapShadowToGlobal = _MeshDecomp_Element_ShadowToGlobal1D;
-	self->elementMapGlobalToLocal = _MeshDecomp_Element_GlobalToLocal1D;
-	self->elementMapGlobalToDomain = _MeshDecomp_Element_GlobalToDomain1D;
-	self->elementMapGlobalToShadow = _MeshDecomp_Element_GlobalToShadow1D;
-	self->shadowProcCount = _DummyMD_Shadow_ProcCount;
-	self->shadowBuildProcs = _DummyMD_Shadow_BuildProcs;
-	self->shadowProcElementCount = _MeshDecomp_Shadow_ProcElementCount;
-	self->procWithElement = _MeshDecomp_Proc_WithElement;
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_MeshDecomp_Init( (MeshDecomp*)self, communicator, eLayout, nLayout, NULL );
-	
-	/* DummyMD info */
-	_DummyMD_Init( self );
-}
-
-
-DummyMD* _DummyMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout )
-{
-	DummyMD* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(DummyMD) );
-	self = (DummyMD*)_MeshDecomp_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		nodeMapLocalToGlobal, 
-		nodeMapDomainToGlobal,
-		nodeMapShadowToGlobal,
-		nodeMapGlobalToLocal,
-		nodeMapGlobalToDomain,
-		nodeMapGlobalToShadow, 
-		elementMapLocalToGlobal,
-		elementMapDomainToGlobal,
-		elementMapShadowToGlobal, 
-		elementMapGlobalToLocal,
-		elementMapGlobalToDomain, 
-		elementMapGlobalToShadow,
-		shadowProcCount,
-		shadowBuildProcs,
-		shadowProcElementCount,
-		procWithElement,
-		dictionary, 
-		communicator,
-		eLayout,
-		nLayout );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* DummyMD info */
-	if( initFlag ){
-		_DummyMD_Init( self );
-	}
-	
-	return self;
-}
-
-
-void _DummyMD_Init(
-		DummyMD*					self )
-{
-	/* General and Virtual info should already be set */
-	Element_GlobalIndex e_I;
-	
-	assert( self->rank == 0 );
-	/* DummyMD info */
-	
-	self->isConstructed = True;
-	self->procsInUse = 1;
-	
-	self->elementGlobalCount = self->elementLayout->elementCount;
-	self->nodeGlobalCount = self->nodeLayout->nodeCount;
-	
-	self->localElementSets = Memory_Alloc( IndexSet*, "DummyMD" );
-	self->localElementSets[0] = IndexSet_New( self->elementGlobalCount );
-	for( e_I = 0; e_I < self->elementGlobalCount; e_I++ )
-		IndexSet_Add( self->localElementSets[0], e_I );
-	
-	_MeshDecomp_DecomposeNodes( self );
-	
-	self->elementLocalCount = self->elementGlobalCount;
-	self->elementShadowCount = 0;
-	self->elementDomainCount = self->elementLocalCount;
-	
-	self->nodeLocalCount = self->nodeGlobalCount;
-	self->nodeShadowCount = 0;
-	self->nodeDomainCount = self->nodeLocalCount;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _DummyMD_Delete( void* dummyMD ) {
-	DummyMD* self = (DummyMD*)dummyMD;
-	
-	/* Stg_Class_Delete parent */
-	_MeshDecomp_Delete( self );
-}
-
-void _DummyMD_Print( void* dummyMD, Stream* stream ) {
-	DummyMD* self = (DummyMD*)dummyMD;
-	
-	/* Set the Journal for printing informations */
-	Stream* dummyMDStream;
-	dummyMDStream = Journal_Register( InfoStream_Type, "DummyMDStream" );
-
-	/* Print parent */
-	_MeshDecomp_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "DummyMD (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* DummyMD info */
-}
-
-void _DummyMD_Construct( void* dummyMD, Stg_ComponentFactory *cf, void* data ){
-	DummyMD*        self          = (DummyMD*)dummyMD;
-	ElementLayout*  elementLayout = NULL;
-	NodeLayout*     nodeLayout    = NULL;
-	Stg_ObjectList* pointerRegister;
-
-	self->dictionary = cf->rootDict;
-	
-	elementLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  ElementLayout_Type, ElementLayout,  True, data ) ;
-	nodeLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  NodeLayout_Type, NodeLayout,  True, data ) ;
-	pointerRegister = Stg_ObjectList_Get( cf->registerRegister, "Pointer_Register" );
-
-	_MeshDecomp_Init( (MeshDecomp*)self, MPI_COMM_WORLD, elementLayout, nodeLayout, pointerRegister );
-	_DummyMD_Init( self );
-}
-	
-void _DummyMD_Build( void* dummyMD, void* data ){
-	
-}
-	
-void _DummyMD_Initialise( void* dummyMD, void* data ){
-	
-}
-	
-void _DummyMD_Execute( void* dummyMD, void* data ){
-	
-}
-	
-void _DummyMD_Destroy( void* dummyMD, void* data ){
-	
-}
-
-Partition_Index _DummyMD_Shadow_ProcCount( void* dummyMD ) {
-	return 0;
-}
-
-
-void _DummyMD_Shadow_BuildProcs( void* dummyMD, Partition_Index* procs ) {
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,157 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_DummyMD_h__
-#define __Discretisaton_Mesh_DummyMD_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type DummyMD_Type;
-
-	/* DummyMD information */
-	#define __DummyMD \
-		/* General info */ \
-		__MeshDecomp \
-		\
-		/* Virtual info */ \
-		\
-		/* DummyMD info ... */
-	struct _DummyMD { __DummyMD };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a DummyMD */
-	DummyMD* DummyMD_DefaultNew( Name name );
-	
-	DummyMD* DummyMD_New(
-		Name						name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout );
-	
-	/* Initialise a DummyMD */
-	void DummyMD_Init(
-		DummyMD*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout );
-	
-	/* Creation implementation */
-	DummyMD* _DummyMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nlayout );
-	
-	/* Initialisation implementation functions */
-	void _DummyMD_Init(
-		DummyMD*					self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete DummyMD implementation */
-	void _DummyMD_Delete( void* dummyMD );
-	
-	/* Print DummyMD implementation */
-	void _DummyMD_Print( void* dummyMD, Stream* stream );
-	
-	void _DummyMD_Construct( void* dummyMD, Stg_ComponentFactory *cf, void* data );
-	
-	void _DummyMD_Build( void* dummyMD, void* data );
-	
-	void _DummyMD_Initialise( void* dummyMD, void* data );
-	
-	void _DummyMD_Execute( void* dummyMD, void* data );
-	
-	void _DummyMD_Destroy( void* dummyMD, void* data );
-	
-	Partition_Index _DummyMD_Shadow_ProcCount( void* dummyMD );
-	
-	void _DummyMD_Shadow_BuildProcs( void* dummyMD, Partition_Index* procs );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-#endif /* __Discretisaton_Mesh_DummyMD_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/DummyMD.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">DummyMD</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">MeshDecomp</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">ElementLayout</param>
-		<param name="Type">ElementLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 338 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">NodeLayout</param>
-		<param name="Type">NodeLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 339 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,300 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-
-#include <assert.h>
-
-/* Textual name of this class */
-const Type ElementLayout_Type = "ElementLayout";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-ElementLayout* _ElementLayout_New(
-		SizeT							_sizeOfSelf, 
-		Type							type,
-		Stg_Class_DeleteFunction*					_delete,
-		Stg_Class_PrintFunction*					_print,
-		Stg_Class_CopyFunction*					_copy,
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		ElementLayout_BuildFunction*  						build,
-		ElementLayout_BuildCornerIndicesFunction*       	buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*       	cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*      	buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*			buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*			edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*		buildEdgeElements,
-		ElementLayout_EdgeAtFunction*				edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*	getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*	getStaticMinAndMaxGlobalCoords,
-		ElementLayout_ElementWithPointFunction*			elementWithPoint,
-		Dictionary*						dictionary,
-		Geometry*						geometry,
-		Topology*						topology )
-{
-	ElementLayout* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(ElementLayout) );
-	self = (ElementLayout*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-			_initialise, _execute, _destroy, name, NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->build = build;
-	self->buildCornerIndices = buildCornerIndices;
-	self->cornerElementCount = cornerElementCount;
-	self->buildCornerElements = buildCornerElements;
-	self->buildEdgeIndices = buildEdgeIndices;
-	self->edgeElementCount = edgeElementCount;
-	self->buildEdgeElements = buildEdgeElements;
-	self->edgeAt = edgeAt;
-	self->getStaticMinAndMaxLocalCoords = getStaticMinAndMaxLocalCoords;
-	self->getStaticMinAndMaxGlobalCoords = getStaticMinAndMaxGlobalCoords;
-	self->elementWithPoint = elementWithPoint;
-	
-	/* ElementLayout info */
-	if( initFlag ){
-		_ElementLayout_Init( self, geometry, topology );
-	}
-	
-	return self;
-}
-
-void _ElementLayout_Init(
-		ElementLayout*					self,
-		Geometry*					geometry,
-		Topology*					topology )
-{
-	/* General and Virtual info should already be set */
-	
-	/* ElementLayout info */
-	self->isConstructed = True;
-	self->geometry = geometry;
-	self->topology = topology;
-	self->elementCount = 0;
-	self->elementCornerCount = 0;
-	self->cornerCount = 0;
-	self->topo = NULL;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _ElementLayout_Delete( void* elementLayout ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-	
-	/* Stg_Class_Delete parent */
-	_Stg_Component_Delete( self );
-}
-
-
-void _ElementLayout_Print( void* elementLayout, Stream* stream ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-	
-	/* Set the Journal for printing informations */
-	Stream* elementLayoutStream;
-	elementLayoutStream = Journal_Register( InfoStream_Type, "ElementLayoutStream" );
-
-	/* Print parent */
-	_Stg_Component_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "ElementLayout (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* ElementLayout info */
-}
-
-
-void* _ElementLayout_Copy( void* elementLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	ElementLayout*	self = (ElementLayout*)elementLayout;
-	ElementLayout*	newElementLayout;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newElementLayout = (ElementLayout*)_Stg_Component_Copy( self, dest, deep, nameExt, map );
-	
-	/* Virtual methods */
-	newElementLayout->build = self->build;
-	newElementLayout->buildCornerIndices = self->buildCornerIndices;
-	newElementLayout->cornerElementCount = self->cornerElementCount;
-	newElementLayout->buildCornerElements = self->buildCornerElements;
-	newElementLayout->buildEdgeIndices = self->buildEdgeIndices;
-	newElementLayout->edgeElementCount = self->edgeElementCount;
-	newElementLayout->buildEdgeElements = self->buildEdgeElements;
-	newElementLayout->edgeAt = self->edgeAt;
-	newElementLayout->elementWithPoint = self->elementWithPoint;
-	
-	newElementLayout->dictionary = self->dictionary;
-	newElementLayout->elementCount = self->elementCount;
-	newElementLayout->elementCornerCount = self->elementCornerCount;
-	newElementLayout->cornerCount = self->cornerCount;
-	newElementLayout->elementEdgeCount = self->elementEdgeCount;
-	newElementLayout->edgeCount = self->edgeCount;
-	
-	if( deep ) {
-		newElementLayout->geometry = (Geometry*)Stg_Class_Copy( self->geometry, NULL, deep, nameExt, map );
-		newElementLayout->topology = (Topology*)Stg_Class_Copy( self->topology, NULL, deep, nameExt, map );
-	}
-	else {
-		newElementLayout->geometry = self->geometry;
-		newElementLayout->topology = self->topology;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newElementLayout;
-}
-
-
-void ElementLayout_Build( void* elementLayout, void* decomp ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	self->build( self, decomp );
-}
-
-
-void _ElementLayout_Build( void* elementLayout, void* decomp ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	/* Default implementation does nothing. */
-	Build( self->geometry, NULL, False );
-}
-
-void ElementLayout_BuildCornerElements( void* elementLayout, Index corner, Element_GlobalIndex* elements ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	self->buildCornerElements( self, corner, elements );
-}
-
-void ElementLayout_BuildEdgeIndices( void* elementLayout, Element_GlobalIndex globalIndex, Index* edges ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	self->buildEdgeIndices( self, globalIndex, edges );
-}
-
-void ElementLayout_EdgeAt( void* elementLayout, Index index, Edge edge ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	self->edgeAt( self, index, edge );
-}
-
-Element_GlobalIndex ElementLayout_ElementWithPoint( void* elementLayout, void* decomp, Coord point, void* mesh, 
-						    PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-
-	return self->elementWithPoint( self, decomp, point, mesh, boundaryStatus, nHints, hints );
-}
-
-Bool ElementLayout_GetStaticMinAndMaxLocalCoords( void* elementLayout, Coord min, Coord max ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-	return self->getStaticMinAndMaxLocalCoords( self, min, max );
-}
-
-Bool _ElementLayout_GetStaticMinAndMaxLocalCoords( void* elementLayout, Coord min, Coord max ) {
-	/* Default implementation: no static shortcut known:- return false. */
-	return False;
-}
-
-
-Bool ElementLayout_GetStaticMinAndMaxGlobalCoords( void* elementLayout, Coord min, Coord max ) {
-	ElementLayout* self = (ElementLayout*)elementLayout;
-	return self->getStaticMinAndMaxGlobalCoords( self, min, max );
-}
-
-Bool _ElementLayout_GetStaticMinAndMaxGlobalCoords( void* elementLayout, Coord min, Coord max ) {
-	/* Default implementation: no static shortcut known:- return false. */
-	return False;
-}
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-Index ElementLayout_BuildEdgeSubset( void* elementLayout, Index elementCount, Index* elements, Index** edges ) {
-	ElementLayout*		self = (ElementLayout*)elementLayout;
-	Element_GlobalIndex	edgeCnt = 0;
-	Element_GlobalIndex     element_I;
-	Index*			eEdges;
-	IndexSet*		set;
-	
-	set = IndexSet_New( self->edgeCount );
-	eEdges = Memory_Alloc_Array( Element_GlobalIndex, self->elementEdgeCount, "ElementLayout" );
-	
-	for( element_I = 0; element_I < elementCount; element_I++ ) {
-		Index   edge_I;
-		
-		self->buildEdgeIndices( self, elements[element_I], eEdges );
-		for( edge_I = 0; edge_I < self->elementEdgeCount; edge_I++ )
-			IndexSet_Add( set, eEdges[edge_I] );
-	}
-	
-	Memory_Free( eEdges );
-	
-	IndexSet_GetMembers( set, &edgeCnt, edges );
-	Stg_Class_Delete( set );
-	
-	return edgeCnt;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,184 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_ElementLayout_h__
-#define __Discretisaton_Mesh_ElementLayout_h__
-
-
-	/* Virtual function types */
-	typedef void			(ElementLayout_BuildFunction)				( void* elementLayout, void* decomp );
-	typedef void			(ElementLayout_BuildCornerIndicesFunction)		( void* elementLayout, Element_GlobalIndex globalIndex, Index* points );
-	typedef Element_GlobalIndex     (ElementLayout_CornerElementCountFunction)		( void* elementLayout, Index corner );
-	typedef void			(ElementLayout_BuildCornerElementsFunction)		( void* elementLayout, Index corner, Element_GlobalIndex* elements );
-	typedef void			(ElementLayout_BuildEdgeIndicesFunction)		( void* elementLayout, Element_GlobalIndex globalIndex, Index* edges );
-	typedef Element_GlobalIndex     (ElementLayout_EdgeElementCountFunction)		( void* elementLayout, Index edge );
-	typedef void			(ElementLayout_BuildEdgeElementsFunction)		( void* elementLayout, Index edge, Element_GlobalIndex* elements );
-	
-	typedef void			(ElementLayout_EdgeAtFunction)				( void* elementLayout, Index index, Edge edge );
-	typedef Element_GlobalIndex     (ElementLayout_ElementWithPointFunction)		( void* elementLayout,
-												  void* meshDecomp, Coord point, void* mesh, PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	typedef Bool			(ElementLayout_GetStaticMinAndMaxLocalCoordsFunction)	( void* elementLayout, Coord min, Coord max );
-	typedef Bool			(ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction)	( void* elementLayout, Coord min, Coord max );
-		
-	
-	/* Textual name of this class */
-	extern const Type ElementLayout_Type;
-
-	/* ElementLayout information */
-	#define __ElementLayout \
-		/* General info */ \
-		__Stg_Component \
-		Dictionary*					dictionary; \
-		\
-		/* Virtual info */ \
-		ElementLayout_BuildFunction*				build; \
-		ElementLayout_BuildCornerIndicesFunction*       	buildCornerIndices; \
-		ElementLayout_CornerElementCountFunction*       	cornerElementCount; \
-		ElementLayout_BuildCornerElementsFunction*      	buildCornerElements; \
-		ElementLayout_BuildEdgeIndicesFunction*			buildEdgeIndices; \
-		ElementLayout_EdgeElementCountFunction*			edgeElementCount; \
-		ElementLayout_BuildEdgeElementsFunction*		buildEdgeElements; \
-		ElementLayout_EdgeAtFunction*				edgeAt; \
-		ElementLayout_ElementWithPointFunction*			elementWithPoint; \
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*	getStaticMinAndMaxLocalCoords; \
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*	getStaticMinAndMaxGlobalCoords; \
-		\
-		/* ElementLayout info ... */ \
-		Geometry*						geometry; \
-		Topology*						topology; \
-		Element_Index						elementCount; \
-		\
-		Index							elementCornerCount; \
-		Index							cornerCount; \
-		Index							elementEdgeCount; \
-		Index							edgeCount; \
-		\
-		MeshTopology*						topo;
-
-	struct _ElementLayout { __ElementLayout };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Creation implementation */
-
-	ElementLayout* _ElementLayout_New(
-		SizeT							_sizeOfSelf, 
-		Type							type,
-		Stg_Class_DeleteFunction*					_delete,
-		Stg_Class_PrintFunction*					_print,
-		Stg_Class_CopyFunction*					_copy,
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		ElementLayout_BuildFunction*  						build,
-		ElementLayout_BuildCornerIndicesFunction*       	buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*       	cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*      	buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*			buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*			edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*		buildEdgeElements,
-		ElementLayout_EdgeAtFunction*				edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*	getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*	getStaticMinAndMaxGlobalCoords,
-		ElementLayout_ElementWithPointFunction*			elementWithPoint,
-		Dictionary*						dictionary,
-		Geometry*						geometry,
-		Topology*						topology );
-
-	/* Initialisation implementation functions */
-	void _ElementLayout_Init(
-		ElementLayout*					self,
-		Geometry*					geometry,
-		Topology*					topology );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete ElementLayout implementation */
-	void _ElementLayout_Delete( void* elementLayout );
-	
-	/* Print ElementLayout implementation */
-	void _ElementLayout_Print( void* elementLayout, Stream* stream );
-	
-	/* Copy */
-	#define ElementLayout_Copy( self ) \
-		(ElementLayout*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define ElementLayout_DeepCopy( self ) \
-		(ElementLayout*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _ElementLayout_Copy( void* elementLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	/** Build: For preparing point searching stuff etc. */
-	void ElementLayout_Build( void* elementLayout, void* decomp );
-	/** Default implementation, does nothing. */
-	void _ElementLayout_Build( void* elementLayout, void* decomp );
-	
-	void ElementLayout_BuildCornerElements( void* elementLayout, Index corner, Element_GlobalIndex* elements ) ;
-	void ElementLayout_BuildEdgeIndices( void* elementLayout, Element_GlobalIndex globalIndex, Index* edges ) ;
-	void ElementLayout_EdgeAt( void* elementLayout, Index index, Edge edge ) ;
-	Element_GlobalIndex ElementLayout_ElementWithPoint( void* elementLayout, void* decomp, Coord point, void* mesh, 
-							    PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints ) ;
-	Bool ElementLayout_GetStaticMinAndMaxLocalCoords( void* elementLayout, Coord min, Coord max );
-	Bool _ElementLayout_GetStaticMinAndMaxLocalCoords( void* elementLayout, Coord min, Coord max );
-	
-	Bool ElementLayout_GetStaticMinAndMaxGlobalCoords( void* elementLayout, Coord min, Coord max );
-	Bool _ElementLayout_GetStaticMinAndMaxGlobalCoords( void* elementLayout, Coord min, Coord max );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	Index ElementLayout_BuildEdgeSubset( void* elementLayout, Index elementCount, Index* elements, Index** edges );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_ElementLayout_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ElementLayout.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">ElementLayout</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1617 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "HexaEL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "MeshDecomp.h"
-#include "Decomp.h"
-#include "Decomp_Sync.h"
-#include "MeshTopology.h"
-#include "HexaMD.h"
-#include "MeshClass.h"
-
-
-/* Textual name of this class */
-const Type HexaEL_Type = "HexaEL";
-const Name defaultHexaEL_IJK26TopologyName = "defaultHexaEL_IJK26TopologyName";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-HexaEL* HexaEL_DefaultNew( Name name )
-{
-	return (HexaEL*)_HexaEL_New( 
-		sizeof(HexaEL), 
-		HexaEL_Type, 
-		_HexaEL_Delete, 
-		_HexaEL_Print,
-		_HexaEL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)HexaEL_DefaultNew,
-		_HexaEL_Construct,
-		_HexaEL_Build,
-		_HexaEL_Initialise,
-		_HexaEL_Execute,
-		_HexaEL_Destroy,
-		name,
-		False,
-		_ElementLayout_Build,
-		_HexaEL_BuildCornerIndices,
-		_HexaEL_CornerElementCount,
-		_HexaEL_BuildCornerElements,
-		_HexaEL_BuildEdgeIndices,
-		_HexaEL_EdgeElementCount,
-		_HexaEL_BuildEdgeElements,
-		_HexaEL_EdgeAt,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,
-		_ElementLayout_GetStaticMinAndMaxGlobalCoords,
-		_HexaEL_ElementWithPoint,
-		0,
-		NULL,
-		NULL );
-}
-
-HexaEL* HexaEL_New(
-	Name						name,
-	Dimension_Index             dim,
-	Dictionary*					dictionary,
-	Geometry*					geometry )
-{
-	return _HexaEL_New( 
-		sizeof(HexaEL), 
-		HexaEL_Type, 
-		_HexaEL_Delete, 
-		_HexaEL_Print,
-		_HexaEL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)HexaEL_DefaultNew,
-		_HexaEL_Construct,
-		_HexaEL_Build,
-		_HexaEL_Initialise,
-		_HexaEL_Execute,
-		_HexaEL_Destroy,
-		name,
-		True,
-		_ElementLayout_Build,
-		_HexaEL_BuildCornerIndices,
-		_HexaEL_CornerElementCount,
-		_HexaEL_BuildCornerElements,
-		_HexaEL_BuildEdgeIndices,
-		_HexaEL_EdgeElementCount,
-		_HexaEL_BuildEdgeElements,
-		_HexaEL_EdgeAt,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,
-		_ElementLayout_GetStaticMinAndMaxGlobalCoords,
-		_HexaEL_ElementWithPoint,
-		dim,
-		dictionary,
-		geometry );
-}
-
-void HexaEL_Init(
-	HexaEL*						self,
-	Name						name,
-	Dimension_Index             dim,
-	Dictionary*					dictionary,
-	Geometry*					geometry )
-{
-	/* General info */
-	self->type = HexaEL_Type;
-	self->_sizeOfSelf = sizeof(HexaEL);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _HexaEL_Delete;
-	self->_print = _HexaEL_Print;
-	self->_copy = _HexaEL_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)HexaEL_DefaultNew;
-	self->_construct = _HexaEL_Construct;
-	self->_build = _HexaEL_Build;
-	self->_initialise = _HexaEL_Initialise;
-	self->_execute = _HexaEL_Execute;
-	self->_destroy = _HexaEL_Destroy;
-	self->build = _ElementLayout_Build;
-	self->buildCornerIndices = _HexaEL_BuildCornerIndices;
-	self->cornerElementCount = _HexaEL_CornerElementCount;
-	self->buildCornerElements = _HexaEL_BuildCornerElements;
-	self->buildEdgeIndices = _HexaEL_BuildEdgeIndices;
-	self->edgeElementCount = _HexaEL_EdgeElementCount;
-	self->buildEdgeElements = _HexaEL_BuildEdgeElements;
-	self->edgeAt = _HexaEL_EdgeAt;
-	self->getStaticMinAndMaxLocalCoords = _ElementLayout_GetStaticMinAndMaxLocalCoords;
-	self->getStaticMinAndMaxGlobalCoords = _ElementLayout_GetStaticMinAndMaxGlobalCoords;
-	self->elementWithPoint = _HexaEL_ElementWithPoint;
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_ElementLayout_Init( (ElementLayout*)self, geometry, (Topology*)IJK26Topology_New( defaultHexaEL_IJK26TopologyName, dictionary ) );
-	self->topologyWasCreatedInternally = True;
-	
-	/* HexaEL info */
-	_HexaEL_Init( self, dim, NULL, NULL );
-}
-
-HexaEL* _HexaEL_New(
-	SizeT                                                   _sizeOfSelf, 
-	Type                                                    type,
-	Stg_Class_DeleteFunction*                               _delete,
-	Stg_Class_PrintFunction*                                _print,
-	Stg_Class_CopyFunction*                                 _copy, 
-	Stg_Component_DefaultConstructorFunction*               _defaultConstructor,
-	Stg_Component_ConstructFunction*                        _construct,
-	Stg_Component_BuildFunction*                            _build,
-	Stg_Component_InitialiseFunction*                       _initialise,
-	Stg_Component_ExecuteFunction*                          _execute,
-	Stg_Component_DestroyFunction*                          _destroy,
-	Name                                                    name,
-	Bool                                                    initFlag,
-	ElementLayout_BuildFunction*                            build,		
-	ElementLayout_BuildCornerIndicesFunction*               buildCornerIndices,
-	ElementLayout_CornerElementCountFunction*               cornerElementCount,
-	ElementLayout_BuildCornerElementsFunction*              buildCornerElements,
-	ElementLayout_BuildEdgeIndicesFunction*                 buildEdgeIndices,
-	ElementLayout_EdgeElementCountFunction*                 edgeElementCount,
-	ElementLayout_BuildEdgeElementsFunction*                buildEdgeElements,
-	ElementLayout_EdgeAtFunction*                           edgeAt,
-	ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*    getStaticMinAndMaxLocalCoords,
-	ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*   getStaticMinAndMaxGlobalCoords,				
-	ElementLayout_ElementWithPointFunction*                 elementWithPoint,
-	Dimension_Index                                         dim,
-	Dictionary*                                             dictionary,
-	Geometry*                                               geometry )
-{
-	HexaEL* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(HexaEL) );
-	self = (HexaEL*)_ElementLayout_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		build,
-		buildCornerIndices,
-		cornerElementCount,
-		buildCornerElements,
-		buildEdgeIndices,
-		edgeElementCount,
-		buildEdgeElements,
-		edgeAt,
-		getStaticMinAndMaxLocalCoords,
-		getStaticMinAndMaxGlobalCoords,
-		elementWithPoint,
-		dictionary,
-		geometry,
-		(initFlag)?(Topology*)IJK26Topology_New( defaultHexaEL_IJK26TopologyName, dictionary ):NULL );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* HexaEL info */
-	if( initFlag ){
-		_HexaEL_Init( self, dim, NULL, NULL );
-		self->topologyWasCreatedInternally = True;
-	}
-	
-	return self;
-}
-
-void _HexaEL_Init( HexaEL* self, Dimension_Index dim, IJK pointSize, IJK elementSize ) {
-	/* General and Virtual info should already be set */
-	
-	/* HexaEL info */
-	self->isConstructed = True;
-	self->dim = dim;
-	if (pointSize) {
-		memcpy( self->pointSize, pointSize, sizeof(IJK) );
-	}
-	else {
-		self->pointSize[ I_AXIS ] = Dictionary_GetUnsignedInt_WithDefault( self->dictionary, "meshSizeI", 2 );
-		self->pointSize[ J_AXIS ] = Dictionary_GetUnsignedInt_WithDefault( self->dictionary, "meshSizeJ", 2 );
-		self->pointSize[ K_AXIS ] = Dictionary_GetUnsignedInt_WithDefault( self->dictionary, "meshSizeK", 2 );
-	}
-
-	if ( dim <= 2 ) {
-		self->pointSize[ K_AXIS ] = 1;
-		if( dim == 1 )
-			self->pointSize[J_AXIS] = 1;
-	}
-	assert( self->pointSize[0] * self->pointSize[1] * self->pointSize[2] );
-	
-	if ( elementSize ) {
-		memcpy( self->elementSize, elementSize, sizeof(IJK) );
-	}
-	else {
-		self->elementSize[0] = self->pointSize[0] - 1;
-		self->elementSize[1] = self->pointSize[1] - 1;
-		self->elementSize[2] = self->pointSize[2] - 1;
-	}
-	if ( dim <= 2 ) {
-		self->elementSize[ K_AXIS ] = 1;
-		if( dim == 1 )
-			self->elementSize[J_AXIS] = 1;
-	}
-	self->elementCount = self->elementSize[0] * self->elementSize[1] * self->elementSize[2];
-	assert( self->elementCount );
-	
-	self->cornerCount = self->geometry->pointCount;
-	if( dim == 1 ) {
-		self->elementCornerCount = 2;
-		self->elementEdgeCount = 0;
-		self->edgeCount = 0;
-	}
-	else if ( dim == 2 ) {
-		self->elementCornerCount = 4;
-		self->elementEdgeCount = 4;
-		self->edgeCount = self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0];
-	}
-	else {
-		self->elementCornerCount = 8;
-		self->elementEdgeCount = 12;
-		self->edgeCount = (self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0]) * 
-			self->pointSize[2] + self->pointSize[0] * self->pointSize[1] * self->elementSize[2];
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _HexaEL_Delete( void* hexaEL ) {
-	HexaEL* self = (HexaEL*)hexaEL;
-	
-
-	/* modified by Patrick Sunter 18 May 2006 : in this component's construct it now grabs a topology from
-	   the component factory : thus we shouldn't delete it as it may be shared. Only delete if its using
-	   the default name and was thus constructed the old way */
-	if ( self->topologyWasCreatedInternally == True ) {
-		Stg_Class_Delete( self->topology );
-		self->topology = NULL;
-	}
-	
-	/* Stg_Class_Delete parent */
-	_ElementLayout_Delete( self );
-}
-
-
-void _HexaEL_Print( void* hexaEL, Stream* stream ) {
-	HexaEL* self = (HexaEL*)hexaEL;
-	
-	/* Set the Journal for printing informations */
-	Stream* hexaELStream;
-	hexaELStream = Journal_Register( InfoStream_Type, "HexaELStream" );
-
-	/* Print parent */
-	_ElementLayout_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "HexaEL (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* HexaEL info */
-}
-
-
-void* _HexaEL_Copy( void* hexaEL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	HexaEL*	self = (HexaEL*)hexaEL;
-	HexaEL*	newHexaEL;
-	
-	newHexaEL = (HexaEL*)_ElementLayout_Copy( self, dest, deep, nameExt, ptrMap );
-	
-	newHexaEL->pointSize[0] = self->pointSize[0];
-	newHexaEL->pointSize[1] = self->pointSize[1];
-	newHexaEL->pointSize[2] = self->pointSize[2];
-	newHexaEL->elementSize[0] = self->elementSize[0];
-	newHexaEL->elementSize[1] = self->elementSize[1];
-	newHexaEL->elementSize[2] = self->elementSize[2];
-	
-	return (void*)newHexaEL;
-}
-
-void _HexaEL_Construct( void* hexaEL, Stg_ComponentFactory* cf, void* data ) {
-	HexaEL*   self = (HexaEL*) hexaEL;
-	IJK26Topology *topology = NULL;
-	Geometry *geometry = NULL;
-	Dimension_Index dim;
-
-	self->dictionary = cf->rootDict;
-	
-	topology =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Topology_Type, IJK26Topology,  True, data  ) ;
-	geometry =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Geometry_Type, Geometry,  True, data  ) ;
-
-	dim = Dictionary_GetUnsignedInt( self->dictionary, "dim" );
-	
-	_ElementLayout_Init( (ElementLayout*)self, geometry, (Topology*)topology );
-	_HexaEL_Init( (HexaEL*)self, dim, ((BlockGeometry*) geometry)->size, topology->size );
-}
-	
-void _HexaEL_Build( void* hexaEL, void* data )
-{
-	
-}
-	
-void _HexaEL_Initialise( void* hexaEL, void* data )
-{
-	
-}
-	
-void _HexaEL_Execute( void* hexaEL, void* data )
-{
-	
-}
-	
-void _HexaEL_Destroy( void* hexaEL, void* data )
-{
-	
-}
-
-#define HEL_P_3DTo1D_3( self, i, j, k )					\
-	((k) * (self)->pointSize[0] * (self)->pointSize[1] + (j) * (self)->pointSize[0] + (i))
-
-#define HEL_P_3DTo1D( self, ijk )			\
-	HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] )
-
-
-#define HEL_P_1DTo3D_3( self, index, i, j, k )				\
-	*(i) = (index) % (self)->pointSize[0];				\
-	*(j) = ((index) / (self)->pointSize[0]) % (self)->pointSize[1]; \
-	*(k) = (index) / ((self)->pointSize[0] * (self)->pointSize[1])
-
-#define HEL_P_1DTo3D( self, index, ijk )				\
-	HEL_P_1DTo3D_3( self, index, &(ijk)[0], &(ijk)[1], &(ijk)[2] )
-
-
-#define HEL_E_3DTo1D_3( self, i, j, k )					\
-	((k) * (self)->elementSize[0] * (self)->elementSize[1] + (j) * (self)->elementSize[0] + (i))
-
-
-#define HEL_E_1DTo3D_3( self, index, i, j, k )				\
-	*(i) = (index) % (self)->elementSize[0];			\
-	*(j) = ((index) / (self)->elementSize[0]) % (self)->elementSize[1]; \
-	*(k) = (index) / ((self)->elementSize[0] * (self)->elementSize[1])
-
-#define HEL_E_1DTo3D( self, index, ijk )				\
-	HEL_E_1DTo3D_3( self, index, &(ijk)[0], &(ijk)[1], &(ijk)[2] )
-
-#define HEL_P_2DTo1D_2( self, i, j )		\
-	((j) * (self)->pointSize[0] + (i))
-
-#define HEL_P_2DTo1D( self, ij )		\
-	HEL_P_2DTo1D_2( self, ij[0], ij[1] )
-
-
-#define HEL_P_1DTo2D_2( self, index, i, j)				\
-	*(i) = (index) % (self)->pointSize[0];				\
-	*(j) = ((index) / (self)->pointSize[0]) % (self)->pointSize[1]
-
-#define HEL_P_1DTo2D( self, index, ij )				\
-	HEL_P_1DTo2D_2( self, index, &(ij)[0], &(ij)[1] )
-
-
-#define HEL_E_2DTo1D_2( self, i, j )		\
-	((j) * (self)->elementSize[0] + (i))
-
-
-#define HEL_E_1DTo2D_2( self, index, i, j )				\
-	*(i) = (index) % (self)->elementSize[0];			\
-	*(j) = ((index) / (self)->elementSize[0]) % (self)->elementSize[1]
-
-#define HEL_E_1DTo2D( self, index, ij )				\
-	HEL_E_1DTo2D_2( self, index, &(ij)[0], &(ij)[1] )
-
-
-void _HexaEL_BuildCornerIndices( void* hexaEL, Element_GlobalIndex globalIndex, Index* points ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	IJK		ijk;
-	
-	HEL_E_1DTo3D( self, globalIndex, ijk );
-	
-	points[0] = HEL_P_3DTo1D_3( self, ijk[0],       ijk[1],		ijk[2] );
-	points[1] = HEL_P_3DTo1D_3( self, ijk[0] + 1,	ijk[1],		ijk[2] );
-	points[3] = HEL_P_3DTo1D_3( self, ijk[0],       ijk[1] + 1,	ijk[2] );
-	points[2] = HEL_P_3DTo1D_3( self, ijk[0] + 1,	ijk[1] + 1,	ijk[2] );
-	if ( self->dim == 3 ) {
-		points[4] = HEL_P_3DTo1D_3( self, ijk[0],       ijk[1],		ijk[2] + 1 );
-		points[5] = HEL_P_3DTo1D_3( self, ijk[0] + 1,	ijk[1],		ijk[2] + 1 );
-		points[7] = HEL_P_3DTo1D_3( self, ijk[0],       ijk[1] + 1,	ijk[2] + 1 );
-		points[6] = HEL_P_3DTo1D_3( self, ijk[0] + 1,	ijk[1] + 1,	ijk[2] + 1 );
-	}
-}
-
-Element_GlobalIndex _HexaEL_CornerElementCount( void* hexaEL, Index corner ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	return ( self->dim == 1 ? 2 : self->dim == 2 ? 4 : 8 );
-}
-
-void _HexaEL_BuildCornerElements( void* hexaEL, Index corner, Element_GlobalIndex* elements ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-
-	self->buildCornerElements = (self->dim == 1 ? _HexaEL_BuildCornerElements1D : 
-				     self->dim == 2 ? _HexaEL_BuildCornerElements2D : _HexaEL_BuildCornerElements3D );
-
-	ElementLayout_BuildCornerElements( self, corner, elements );
-}
-
-void _HexaEL_BuildCornerElements1D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-
-	if( corner > 0 )
-		elements[0] = corner;
-	else
-		elements[0] = self->elementCount;
-
-	if( corner < self->elementCount - 1 )
-		elements[1] = corner + 1;
-	else
-		elements[1] = self->elementCount;
-}
-
-void _HexaEL_BuildCornerElements2D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	IJK		ij;
-	
-	HEL_P_1DTo2D( self, corner, ij );
-	
-	if( ij[0] > 0 && ij[1] > 0 )
-		elements[0] = HEL_E_2DTo1D_2( self, ij[0] - 1, ij[1] - 1 );
-	else
-		elements[0] = self->elementCount;
-	
-	if( ij[0] < self->elementSize[0] && ij[1] > 0 )
-		elements[1] = HEL_E_2DTo1D_2( self, ij[0], ij[1] - 1 );
-	else
-		elements[1] = self->elementCount;
-	
-	if( ij[0] > 0 && ij[1] < self->elementSize[1] )
-		elements[2] = HEL_E_2DTo1D_2( self, ij[0] - 1, ij[1] );
-	else
-		elements[2] = self->elementCount;
-	
-	if( ij[0] < self->elementSize[0] && ij[1] < self->elementSize[1] )
-		elements[3] = HEL_E_2DTo1D_2( self, ij[0], ij[1] );
-	else
-		elements[3] = self->elementCount;
-}
-
-void _HexaEL_BuildCornerElements3D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	IJK		ijk;
-	
-	HEL_P_1DTo3D( self, corner, ijk );
-	
-	if( ijk[0] > 0 && ijk[1] > 0 && ijk[2] > 0 )
-		elements[0] = HEL_E_3DTo1D_3( self, ijk[0] - 1, ijk[1] - 1, ijk[2] - 1 );
-	else
-		elements[0] = self->elementCount;
-	
-	if( ijk[0] < self->elementSize[0] && ijk[1] > 0 && ijk[2] > 0 )
-		elements[1] = HEL_E_3DTo1D_3( self, ijk[0], ijk[1] - 1, ijk[2] - 1 );
-	else
-		elements[1] = self->elementCount;
-	
-	if( ijk[0] > 0 && ijk[1] < self->elementSize[1] && ijk[2] > 0 )
-		elements[2] = HEL_E_3DTo1D_3( self, ijk[0] - 1, ijk[1], ijk[2] - 1 );
-	else
-		elements[2] = self->elementCount;
-	
-	if( ijk[0] < self->elementSize[0] && ijk[1] < self->elementSize[1] && ijk[2] > 0 )
-		elements[3] = HEL_E_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] - 1 );
-	else
-		elements[3] = self->elementCount;
-	
-	if( ijk[0] > 0 && ijk[1] > 0 && ijk[2] < self->elementSize[2] )
-		elements[4] = HEL_E_3DTo1D_3( self, ijk[0] - 1, ijk[1] - 1, ijk[2] );
-	else
-		elements[4] = self->elementCount;
-	
-	if( ijk[0] < self->elementSize[0] && ijk[1] > 0 && ijk[2] < self->elementSize[2] )
-		elements[5] = HEL_E_3DTo1D_3( self, ijk[0], ijk[1] - 1, ijk[2] );
-	else
-		elements[5] = self->elementCount;
-	
-	if( ijk[0] > 0 && ijk[1] < self->elementSize[1] && ijk[2] < self->elementSize[2] )
-		elements[6] = HEL_E_3DTo1D_3( self, ijk[0] - 1, ijk[1], ijk[2] );
-	else
-		elements[6] = self->elementCount;
-	
-	if( ijk[0] < self->elementSize[0] && ijk[1] < self->elementSize[1] && ijk[2] < self->elementSize[2] )
-		elements[7] = HEL_E_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] );
-	else
-		elements[7] = self->elementCount;
-}
-
-void _HexaEL_BuildEdgeIndices( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-
-	self->buildEdgeIndices = (self->dim == 1 ? _HexaEL_BuildEdgeIndices1D : 
-				  self->dim == 2 ? _HexaEL_BuildEdgeIndices2D : _HexaEL_BuildEdgeIndices3D );
-
-	ElementLayout_BuildEdgeIndices( self, globalIndex, edges );
-}
-
-void _HexaEL_BuildEdgeIndices1D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) {
-	abort();
-}
-
-void _HexaEL_BuildEdgeIndices2D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	IJK		ij;
-	
-	HEL_E_1DTo2D( self, globalIndex, ij );
-	
-	edges[0] = (self->elementSize[0] + self->pointSize[0]) * ij[1];
-	edges[0] += ij[0];
-	
-	edges[1] = edges[0] + self->elementSize[0];
-	
-	edges[2] = edges[1] + 1;
-	
-	edges[3] = edges[2] + self->elementSize[0];
-}
-
-void _HexaEL_BuildEdgeIndices3D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	IJK		ijk;
-	
-	HEL_E_1DTo3D( self, globalIndex, ijk );
-	
-	edges[0] = (self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0] + 
-		    self->pointSize[0] * self->pointSize[1]) * ijk[2];
-	edges[0] += (self->elementSize[0] + self->pointSize[0]) * ijk[1];
-	edges[0] += ijk[0];
-	
-	edges[1] = edges[0] + self->elementSize[0];
-	
-	edges[2] = edges[1] + 1;
-	
-	edges[3] = edges[2] + self->elementSize[0];
-	
-	edges[4] = (self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0] + 
-		    self->pointSize[0] * self->pointSize[1]) * ijk[2] + 
-		self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0];
-	edges[4] += ijk[1] * self->pointSize[0] + ijk[0];
-	
-	edges[5] = edges[4] + 1;
-	
-	edges[6] = edges[4] + self->pointSize[0];
-	
-	edges[7] = edges[6] + 1;
-
-	edges[8] = (self->elementSize[0] * self->pointSize[1] + self->elementSize[1] * self->pointSize[0] + 
-		    self->pointSize[0] * self->pointSize[1]) * (ijk[2] + 1);
-	edges[8] += (self->elementSize[0] + self->pointSize[0]) * ijk[1];
-	edges[8] += ijk[0];
-	
-	edges[9] = edges[8] + self->elementSize[0];
-	
-	edges[10] = edges[9] + 1;
-	
-	edges[11] = edges[10] + self->elementSize[0];
-}
-
-
-Element_GlobalIndex _HexaEL_EdgeElementCount( void* hexaEL, Index edge ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-
-	return (self->dim == 1 ? 0 : self->dim == 2 ? 2 : 4 );
-}
-
-
-void _HexaEL_BuildEdgeElements( void* hexaEL, Index edge, Element_GlobalIndex* elements ) {
-	/*HexaEL*		self = (HexaEL*)hexaEL; */
-	/* TODO */
-	assert( 0 );
-}
-
-void _HexaEL_EdgeAt( void* hexaEL, Index index, Edge edge ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-
-	self->edgeAt = (self->dim == 1 ? _HexaEL_EdgeAt1D : 
-			self->dim == 2 ? _HexaEL_EdgeAt2D : _HexaEL_EdgeAt3D );
-	ElementLayout_EdgeAt( self, index, edge );
-}
-
-void _HexaEL_EdgeAt1D( void* hexaEL, Index index, Edge edge ) {
-	abort();
-}
-
-void _HexaEL_EdgeAt2D( void* hexaEL, Index index, Edge edge ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	
-	if( index < self->edgeCount ) {
-		IJK     ij;
-		Index   base;
-		
-		base = self->elementSize[0] + self->pointSize[0];
-		
-		ij[1] = index / base;
-		ij[0] = index % base;
-		
-		if( ij[0] < self->elementSize[0] ) {
-			edge[1] = HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] );
-		}
-		else {
-			ij[0] -= self->elementSize[0];
-			edge[1] = HEL_P_2DTo1D_2( self, ij[0], ij[1] + 1 );
-		}
-		
-		edge[0] = HEL_P_2DTo1D( self, ij );
-	}
-	else {
-		edge[0] = self->geometry->pointCount;
-		edge[1] = self->geometry->pointCount;
-	}
-}
-
-
-void _HexaEL_EdgeAt3D( void* hexaEL, Index index, Edge edge ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	
-	if( index < self->edgeCount ) {
-		IJK     ijk, base;
-		Index   mod;
-		
-		base[0] = self->elementSize[0] + self->pointSize[0];
-		base[1] = base[0] * self->elementSize[1] + self->elementSize[0];
-		base[2] = base[1] + self->pointSize[0] * self->pointSize[1];
-		
-		ijk[2] = index / base[2];
-		mod = index % base[2];
-		
-		if( mod < base[1] ) {
-			ijk[1] = mod / base[0];
-			ijk[0] = mod % base[0];
-			
-			if( ijk[0] < self->elementSize[0] ) {
-				edge[1] = HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] );
-			}
-			else {
-				ijk[0] -= self->elementSize[0];
-				edge[1] = HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] );
-			}
-		}
-		else {
-			ijk[1] = (mod - base[1]) / self->pointSize[0];
-			ijk[0] = (mod - base[1]) % self->pointSize[0];
-			
-			edge[1] = HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] + 1 );
-		}
-		
-		edge[0] = HEL_P_3DTo1D( self, ijk );
-	}
-	else {
-		edge[0] = self->geometry->pointCount;
-		edge[1] = self->geometry->pointCount;
-	}
-}
-
-Element_DomainIndex _HexaEL_ElementWithPoint( void* hexaEL, void* decomp, Coord point, void* mesh, 
-					      PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{		
-	HexaEL*			self = (HexaEL*)hexaEL;
-
-	self->elementWithPoint = (self->dim == 1 ? _HexaEL_ElementWithPoint1D : 
-				  self->dim == 2 ? _HexaEL_ElementWithPoint2D : _HexaEL_ElementWithPoint3D );
-
-	return ElementLayout_ElementWithPoint( self, decomp, point, mesh, boundaryStatus, nHints, hints );
-}
-
-
-Bool _HexaEL_Equiv( double var, double val ) {
-	static const double	fac = 1e-13;
-
-	return (var > val - fac && var < val + fac);
-}
-
-
-void _HexaEL_TriBarycenter( Coord tri[3], const Coord pnt, Coord dst ) {
-	double	a = tri[0][0] - tri[2][0];
-	double	b = tri[1][0] - tri[2][0];
-	double	c = tri[2][0] - pnt[0];
-	double	d = tri[0][1] - tri[2][1];
-	double	e = tri[1][1] - tri[2][1];
-	double	f = tri[2][1] - pnt[1];
-
-	dst[0] = (b * f - c * e) / (a * e - b * d);
-	if( _HexaEL_Equiv( dst[0], 0.0 ) ) dst[0] = 0.0;
-	else if( _HexaEL_Equiv( dst[0], 1.0 ) ) dst[0] = 1.0;
-
-	dst[1] = (a * f - c * d) / (b * d - a * e);
-	if( _HexaEL_Equiv( dst[1], 0.0 ) ) dst[1] = 0.0;
-	else if( _HexaEL_Equiv( dst[1], 1.0 ) ) dst[1] = 1.0;
-
-	dst[2] = 1.0 - dst[0] - dst[1];
-	if( _HexaEL_Equiv( dst[2], 0.0 ) ) dst[2] = 0.0;
-	else if( _HexaEL_Equiv( dst[2], 1.0 ) ) dst[2] = 1.0;
-}
-
-
-void _HexaEL_TetBarycenter( Coord tet[4], const Coord pnt, double* dst ) {
-	double	x0 = tet[0][0], x1 = tet[1][0], x2 = tet[2][0], x3 = tet[3][0];
-	double	y0 = tet[0][1], y1 = tet[1][1], y2 = tet[2][1], y3 = tet[3][1];
-	double	z0 = tet[0][2], z1 = tet[1][2], z2 = tet[2][2], z3 = tet[3][2];
-	double	px = pnt[0], py = pnt[1], pz = pnt[2];
-	double	den = 1.0 / (x1*(y0*(z3 - z2) + y2*(z0 - z3) + y3*(z2 - z0)) + 
-			     x0*(y2*(z3 - z1) + y1*(z2 - z3) + y3*(z1 - z2)) + 
-			     x2*(y1*(z3 - z0) + y0*(z1 - z3) + y3*(z0 - z1)) + 
-			     x3*(y0*(z2 - z1) + y1*(z0 - z2) + y2*(z1 - z0)));
-
-	dst[1] = -(x0*(py*(z3 - z2) + y2*(pz - z3) + y3*(z2 - pz)) + 
-		   px*(y2*(z3 - z0) + y0*(z2 - z3) + y3*(z0 - z2)) + 
-		   x2*(y0*(z3 - pz) + py*(z0 - z3) + y3*(pz - z0)) + 
-		   x3*(py*(z2 - z0) + y0*(pz - z2) + y2*(z0 - pz))) * den;
-	if( _HexaEL_Equiv( dst[1], 0.0 ) ) dst[1] = 0.0;
-	else if( _HexaEL_Equiv( dst[1], 1.0 ) ) dst[1] = 1.0;
-
-	dst[2] = (x0*(py*(z3 - z1) + y1*(pz - z3) + y3*(z1 - pz)) + 
-		  px*(y1*(z3 - z0) + y0*(z1 - z3) + y3*(z0 - z1)) + 
-		  x1*(y0*(z3 - pz) + py*(z0 - z3) + y3*(pz - z0)) + 
-		  x3*(py*(z1 - z0) + y0*(pz - z1) + y1*(z0 - pz))) * den;
-	if( _HexaEL_Equiv( dst[2], 0.0 ) ) dst[2] = 0.0;
-	else if( _HexaEL_Equiv( dst[2], 1.0 ) ) dst[2] = 1.0;
-
-	dst[3] = -(x0*(py*(z2 - z1) + y1*(pz - z2) + y2*(z1 - pz)) + 
-		   px*(y1*(z2 - z0) + y0*(z1 - z2) + y2*(z0 - z1)) + 
-		   x1*(y0*(z2 - pz) + py*(z0 - z2) + y2*(pz - z0)) + 
-		   x2*(py*(z1 - z0) + y0*(pz - z1) + y1*(z0 - pz))) * den;
-	if( _HexaEL_Equiv( dst[3], 0.0 ) ) dst[3] = 0.0;
-	else if( _HexaEL_Equiv( dst[3], 1.0 ) ) dst[3] = 1.0;
-
-	dst[0] = 1.0 - dst[1] - dst[2] - dst[3];
-	if( _HexaEL_Equiv( dst[0], 0.0 ) ) dst[0] = 0.0;
-	else if( _HexaEL_Equiv( dst[0], 1.0 ) ) dst[0] = 1.0;
-}
-
-
-Bool _HexaEL_FindTriBarycenter( const Coord crds[4], const Coord pnt, double* bcs, unsigned* dstInds, 
-				PartitionBoundaryStatus bndStatus, MeshTopology* topo, unsigned gElInd )
-{
-	const unsigned	nTris = 2;
-	const unsigned	inds[2][3] = {{0, 1, 2}, {1, 3, 2}};
-	Coord		tri[3];
-	unsigned	tri_i;
-
-	for( tri_i = 0; tri_i < nTris; tri_i++ ) {
-		unsigned	ind_i;
-
-		/* Copy coordinate. */
-		for( ind_i = 0; ind_i < 3; ind_i++ ) {
-			dstInds[ind_i] = inds[tri_i][ind_i];
-			memcpy( tri[ind_i], crds[inds[tri_i][ind_i]], sizeof(Coord) );
-		}
-
-		/* Clac the barycenter. */
-		_HexaEL_TriBarycenter( tri, pnt, bcs );
-
-		/* Check for completeness. */
-		for( ind_i = 0; ind_i < 3; ind_i++ ) {
-			if( bcs[ind_i] < 0.0 || bcs[ind_i] > 1.0 )
-				break;
-		}
-		if( ind_i == 3 ) {
-			if( topo && topo->domains && bndStatus == EXCLUSIVE_UPPER_BOUNDARY ) {
-				Decomp*		decomp;
-				unsigned	telInd;
-				unsigned	dElInd = Decomp_Sync_GlobalToDomain( topo->domains[MT_FACE], gElInd );
-
-				assert( dElInd < MeshTopology_GetDomainSize( topo, MT_FACE ) );
-
-				/* Check boundary ownership. */
-				if( bcs[0] == 0.0 || bcs[0] == -0.0 ) {
-					if( bcs[1] == 0.0 || bcs[1] == -0.0 ) {
-						decomp = topo->domains[MT_VERTEX]->decomp;
-						telInd = topo->incEls[MT_FACE][MT_VERTEX][dElInd][inds[tri_i][2]];
-					}
-					else if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-						decomp = topo->domains[MT_VERTEX]->decomp;
-						telInd = topo->incEls[MT_FACE][MT_VERTEX][dElInd][inds[tri_i][1]];
-					}
-					else {
-						decomp = topo->domains[MT_EDGE]->decomp;
-						if( tri_i == 0 )
-							return True;
-						else if( tri_i == 1 )
-							telInd = topo->incEls[MT_FACE][MT_EDGE][dElInd][1];
-					}
-					return telInd < decomp->nLocals;
-				}
-				else if( bcs[1] == 0.0 || bcs[1] == -0.0 ) {
-					if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-						decomp = topo->domains[MT_VERTEX]->decomp;
-						telInd = topo->incEls[MT_FACE][MT_VERTEX][dElInd][inds[tri_i][0]];
-					}
-					else {
-						decomp = topo->domains[MT_EDGE]->decomp;
-						if( tri_i == 0 )
-							telInd = topo->incEls[MT_FACE][MT_EDGE][dElInd][2];
-						else if( tri_i == 1 )
-							return True;
-					}
-					return telInd < decomp->nLocals;
-				}
-				else if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-					decomp = topo->domains[MT_EDGE]->decomp;
-					if( tri_i == 0 )
-						telInd = topo->incEls[MT_FACE][MT_EDGE][dElInd][0];
-					else if( tri_i == 1 )
-						telInd = topo->incEls[MT_FACE][MT_EDGE][dElInd][3];
-					return telInd < decomp->nLocals;
-				}
-			}
-
-			return True;
-		}
-	}
-
-	return False;
-}
-
-
-Bool _HexaEL_FindTetBarycenter( const Coord crds[8], const Coord pnt, double* bcs, unsigned* dstInds, 
-				PartitionBoundaryStatus bndStatus, MeshTopology* topo, unsigned gElInd )
-{
-	const unsigned	nTets = 10;
-	const unsigned	inds[10][4] = {{0, 1, 2, 4}, 
-				       {1, 2, 3, 7}, 
-				       {1, 4, 5, 7}, 
-				       {2, 4, 6, 7}, 
-				       {1, 2, 4, 7}, 
-				       {0, 1, 3, 5}, 
-				       {0, 4, 5, 6}, 
-				       {0, 2, 3, 6}, 
-				       {3, 5, 6, 7}, 
-				       {0, 3, 5, 6}};
-	Coord		tet[4];
-	int		tet_i;
-
-	for( tet_i = 0; tet_i < nTets; tet_i++ ) {
-		int	ind_i;
-
-		/* Copy coordinates to the correct order. */
-		for( ind_i = 0; ind_i < 4; ind_i++ ) {
-			dstInds[ind_i] = inds[tet_i][ind_i];
-			memcpy( tet[ind_i], crds[inds[tet_i][ind_i]], sizeof(Coord) );
-		}
-
-		/* Calc barycenter. */
-		_HexaEL_TetBarycenter( tet, pnt, bcs );
-
-		/* Is this the right tetrahedron? */
-		for( ind_i = 0; ind_i < 4; ind_i++ ) {
-			if( bcs[ind_i] < 0.0 || bcs[ind_i] > 1.0 )
-				break;
-		}
-		if( ind_i == 4 ){
-			if( topo && topo->domains && bndStatus == EXCLUSIVE_UPPER_BOUNDARY ) {
-				Decomp*		decomp;
-				unsigned	telInd;
-				unsigned	dElInd = Decomp_Sync_GlobalToDomain( topo->domains[MT_VOLUME], gElInd );
-
-				assert( dElInd < MeshTopology_GetDomainSize( topo, MT_VOLUME ) );
-
-				/* Check boundary ownership. */
-				if( bcs[0] == 0.0 || bcs[0] == -0.0 ) {
-					if( bcs[1] == 0.0 || bcs[1] == -0.0 ) {
-						if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-							decomp = topo->domains[MT_VERTEX]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_VERTEX][dElInd][inds[tet_i][3]];
-						}
-						else if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-							decomp = topo->domains[MT_VERTEX]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_VERTEX][dElInd][inds[tet_i][2]];
-						}
-						else {
-							if( tet_i == 0 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-							}
-							else if( tet_i == 1 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][11];
-							}
-							else if( tet_i == 2 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][7];
-							}
-							else if( tet_i == 3 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][5];
-							}
-							else if( tet_i == 4 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-							}
-							else if( tet_i == 5 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-							}
-							else if( tet_i == 6 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-							}
-							else if( tet_i == 7 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-							}
-							else if( tet_i == 8 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][5];
-							}
-							else {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-							}
-						}
-					}
-					else if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-						if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-							decomp = topo->domains[MT_VERTEX]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_VERTEX][dElInd][inds[tet_i][1]];
-						}
-						else {
-							if( tet_i == 0 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-							}
-							else if( tet_i == 1 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-							}
-							else if( tet_i == 2 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-							}
-							else if( tet_i == 3 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-							}
-							else if( tet_i == 4 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-							}
-							else if( tet_i == 5 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][9];
-							}
-							else if( tet_i == 6 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][6];
-							}
-							else if( tet_i == 7 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][10];
-							}
-							else if( tet_i == 8 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][7];
-							}
-							else {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-							}
-						}
-					}
-					else if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-						if( tet_i == 0 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-						else if( tet_i == 1 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][1];
-						}
-						else if( tet_i == 2 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][4];
-						}
-						else if( tet_i == 3 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][6];
-						}
-						else if( tet_i == 4 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-						}
-						else if( tet_i == 5 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][3];
-						}
-						else if( tet_i == 6 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][4];
-						}
-						else if( tet_i == 7 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][1];
-						}
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-						}
-						else {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-					}
-					else {
-						if( tet_i == 0 )
-							return True;
-						else if( tet_i == 1 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-						}
-						else if( tet_i == 2 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-						}
-						else if( tet_i == 3 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-						}
-						else if( tet_i == 4 )
-							return True;
-						else if( tet_i == 5 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-						else if( tet_i == 6 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-						}
-						else if( tet_i == 7 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-						}
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][1];
-						}
-						else
-							return True;
-					}
-
-					return telInd < decomp->nLocals;
-				}
-				else if( bcs[1] == 0.0 || bcs[1] == -0.0 ) {
-					if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-						if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-							decomp = topo->domains[MT_VERTEX]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_VERTEX][dElInd][inds[tet_i][0]];
-						}
-						else {
-							if( tet_i == 0 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][8];
-							}
-							else if( tet_i == 1 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-							}
-							else if( tet_i == 2 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-							}
-							else if( tet_i == 3 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-							}
-							else if( tet_i == 4 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-							}
-							else if( tet_i == 5 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-							}
-							else if( tet_i == 6 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-							}
-							else if( tet_i == 7 ) {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-							}
-							else if( tet_i == 8 ) {
-								decomp = topo->domains[MT_EDGE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][7];
-							}
-							else {
-								decomp = topo->domains[MT_FACE]->decomp;
-								telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-							}
-						}
-					}
-					else if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-						if( tet_i == 0 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][2];
-						}
-						else if( tet_i == 1 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][3];
-						}
-						else if( tet_i == 2 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][9];
-						}
-						else if( tet_i == 3 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][10];
-						}
-						else if( tet_i == 4 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-						else if( tet_i == 5 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-						else if( tet_i == 6 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-						else if( tet_i == 7 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-						}
-						else {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-					}
-					else {
-						if( tet_i == 0 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-						}
-						else if( tet_i == 1 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-						else if( tet_i == 2 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-						else if( tet_i == 3 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-						}
-						else if( tet_i == 4 )
-							return True;
-						else if( tet_i == 5 )
-							return True;
-						else if( tet_i == 6 )
-							return True;
-						else if( tet_i == 7 )
-							return True;
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][3];
-						}
-						else
-							return True;
-					}
-
-					return telInd < decomp->nLocals;
-				}
-				else if( bcs[2] == 0.0 || bcs[2] == -0.0 ) {
-					if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-						if( tet_i == 0 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][0];
-						}
-						else if( tet_i == 1 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-						else if( tet_i == 2 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-						else if( tet_i == 3 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-						}
-						else if( tet_i == 4 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-						else if( tet_i == 5 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][0];
-						}
-						else if( tet_i == 6 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][8];
-						}
-						else if( tet_i == 7 ) {
-							decomp = topo->domains[MT_EDGE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_EDGE][dElInd][2];
-						}
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-						else {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-						}
-					}
-					else {
-						if( tet_i == 0 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-						else if( tet_i == 1 )
-							return True;
-						else if( tet_i == 2 )
-							return True;
-						else if( tet_i == 3 )
-							return True;
-						else if( tet_i == 4 )
-							return True;
-						else if( tet_i == 5 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-						}
-						else if( tet_i == 6 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-						}
-						else if( tet_i == 7 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-						}
-						else if( tet_i == 8 ) {
-							decomp = topo->domains[MT_FACE]->decomp;
-							telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][5];
-						}
-						else
-							return True;
-					}
-
-					return telInd < decomp->nLocals;
-				}
-				else if( bcs[3] == 0.0 || bcs[3] == -0.0 ) {
-					if( tet_i == 0 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-					}
-					else if( tet_i == 1 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-					}
-					else if( tet_i == 2 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-					}
-					else if( tet_i == 3 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][4];
-					}
-					else if( tet_i == 4 )
-						return True;
-					else if( tet_i == 5 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-					}
-					else if( tet_i == 6 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][2];
-					}
-					else if( tet_i == 7 ) {
-						decomp = topo->domains[MT_FACE]->decomp;
-						telInd = topo->incEls[MT_VOLUME][MT_FACE][dElInd][0];
-					}
-					else if( tet_i == 8 )
-						return True;
-					else
-						return True;
-
-					return telInd < decomp->nLocals;
-				}
-			}
-
-			return True;
-		}
-	}
-
-	return False;
-}
-
-Element_DomainIndex _HexaEL_ElementWithPoint1D( void* hexaEL, void* _decomp, Coord point, void* _mesh, 
-						PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{
-	abort();
-}
-
-Element_DomainIndex _HexaEL_ElementWithPoint2D( void* hexaEL, void* _decomp, Coord point, void* _mesh, 
-						PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{
-	HexaEL*		self = (HexaEL*)hexaEL;
-	HexaMD*		decomp = (HexaMD*)_decomp;
-	Geometry*       geometry = self->geometry;
-	Mesh*		mesh = (Mesh*)_mesh;
-	IJK		ij;
-	Coord		crds[4];
-	unsigned	inds[3];
-	Coord		bc;
-	unsigned	nEls = nHints ? nHints : decomp->elementDomainCount;
-	unsigned	e_i;
-
-	for( e_i = 0; e_i < nEls; e_i++ ) {
-		unsigned	elInd = nHints ? hints[e_i] : e_i;
-
-		if( elInd >= decomp->elementDomainCount ) {
-			continue;
-		}
-
-		/* Convert global point to 2D. */
-		if( mesh )
-			elInd = Mesh_ElementMapDomainToGlobal( mesh, elInd );
-		else
-			elInd = decomp->elementMapDomainToGlobal( decomp, elInd );
-		HEL_E_1DTo2D( self, elInd, ij );
-
-		/* Collect points. */
-		geometry->pointAt( geometry, 
-				   HEL_P_2DTo1D_2( self, ij[0], ij[1] ), 
-				   crds[0] );
-		geometry->pointAt( geometry, 
-				   HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] ), 
-				   crds[1] );
-		geometry->pointAt( geometry, 
-				   HEL_P_2DTo1D_2( self, ij[0], ij[1] + 1 ), 
-				   crds[2] );
-		geometry->pointAt( geometry, 
-				   HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] + 1 ), 
-				   crds[3] );
-		if( _HexaEL_FindTriBarycenter( (const Coord*)crds, point, bc, inds, 
-					       boundaryStatus, self->topo, elInd ) )
-		{
-			return decomp->elementMapGlobalToDomain( decomp, elInd );
-		}
-	}
-
-	return decomp->elementDomainCount;
-}
-
-
-Element_DomainIndex _HexaEL_ElementWithPoint3D( void* hexaEL, void* _decomp, Coord point, void* _mesh, 
-						PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{
-	HexaEL*		self = (HexaEL*)hexaEL;
-	HexaMD*		decomp = (HexaMD*)_decomp;
-	Geometry*       geometry = self->geometry;
-	Mesh*		mesh = (Mesh*)_mesh;
-	IJK		ijk;
-	Coord		crds[8];
-	unsigned	inds[4];
-	double		bc[4];
-	unsigned	nEls = nHints ? nHints : decomp->elementDomainCount;
-	unsigned	e_i;
-
-	for( e_i = 0; e_i < nEls; e_i++ ) {
-		unsigned	elInd = nHints ? hints[e_i] : e_i;
-
-		/* Safety check. */
-		if( elInd >= decomp->elementDomainCount )
-			continue;
-
-		/* Convert global point to 3D. */
-		if( mesh )
-			elInd = Mesh_ElementMapDomainToGlobal( mesh, elInd );
-		else
-			elInd = decomp->elementMapDomainToGlobal( decomp, elInd );
-		HEL_E_1DTo3D( self, elInd, ijk );
-
-		/* Collect the coordinates. */
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] ), 
-				   crds[0] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] ), 
-				   crds[1] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] ), 
-				   crds[2] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1] + 1, ijk[2] ), 
-				   crds[3] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] + 1 ), 
-				   crds[4] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] + 1 ), 
-				   crds[5] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] + 1 ), 
-				   crds[6] );
-		geometry->pointAt( geometry, 
-				   HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1] + 1, ijk[2] + 1 ), 
-				   crds[7] );
-
-		/* Find the barycenter. */
-		if( _HexaEL_FindTetBarycenter( (const Coord*)crds, point, bc, inds, 
-					       boundaryStatus, self->topo, elInd ) )
-		{
-			return decomp->elementMapGlobalToDomain( decomp, elInd );
-		}
-	}
-
-	return decomp->elementDomainCount;
-}
-
-#if 0
-Element_DomainIndex _HexaEL_ElementWithPoint3D( void* hexaEL, void* decomp, Coord point,
-						PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{		
-	HexaEL*			self = (HexaEL*)hexaEL;
-	HexaMD*			hexaDecomp = (HexaMD*)decomp;
-	Element_GlobalIndex     e_I;
-	Plane			planes[6];
-	unsigned		nEls = nHints ? nHints : hexaDecomp->elementDomainCount;
-	
-	for( e_I = 0; e_I < nEls; e_I++ ) {
-		unsigned	elInd = nHints ? hints[e_I] : e_I;
-		Index		i;
-
-		if( elInd >= hexaDecomp->elementDomainCount ) continue;
-		
-		_HexaEL_BuildElementPlanes( self, elInd, planes );
-		
-		for( i = 0; i < 6; i++ )
-			if( Plane_DistanceToPoint( planes[i], point ) > 0.0 )
-				break;
-		
-		if( i == 6 )
-			return elInd;
-	}
-	
-	return hexaDecomp->elementDomainCount;
-}
-#endif
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-void _HexaEL_BuildElementPlanes( void* hexaEL, Element_GlobalIndex globalIndex, Plane_List planes ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	Geometry*   geometry = self->geometry;
-	Coord		a, b, c, axisA, axisB;
-	IJK		ijk;
-	
-	HEL_E_1DTo3D( self, globalIndex, ijk );
-	
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] ), a );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] ), b );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] ), c );
-	Vector_Sub( axisA, b, a );
-	Vector_Sub( axisB, c, a );
-	Plane_CalcFromVec( planes[0], axisB, axisA, a );
-
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] + 1 ), b );
-	Vector_Sub( axisA, b, a );
-	Plane_CalcFromVec( planes[1], axisA, axisB, a );
-	
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] ), b );
-	Vector_Sub( axisB, b, a );
-	Plane_CalcFromVec( planes[2], axisB, axisA, a );
-	
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1] + 1, ijk[2] + 1 ), a );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] + 1 ), b );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] + 1 ), c );
-	Vector_Sub( axisA, b, a );
-	Vector_Sub( axisB, c, a );
-	Plane_CalcFromVec( planes[3], axisA, axisB, a );
-	
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1] + 1, ijk[2] ), b );
-	Vector_Sub( axisA, b, a );
-	Plane_CalcFromVec( planes[4], axisB, axisA, a );
-	
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] + 1 ), c );
-	Vector_Sub( axisB, c, a );
-	Plane_CalcFromVec( planes[5], axisA, axisB, a );
-
-#ifndef NDEBUG
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1] + 1, ijk[2] ), b );
-	assert( Plane_DistanceToPoint( planes[0], b ) > -1e-9 && Plane_DistanceToPoint( planes[0], b ) < 1e-9 );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] + 1 ), b );
-	assert( Plane_DistanceToPoint( planes[1], b ) > -1e-9 && Plane_DistanceToPoint( planes[1], b ) < 1e-9 );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] + 1 ), b );
-	assert( Plane_DistanceToPoint( planes[2], b ) > -1e-9 && Plane_DistanceToPoint( planes[2], b ) < 1e-9 );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1], ijk[2] + 1 ), b );
-	assert( Plane_DistanceToPoint( planes[3], b ) > -1e-9 && Plane_DistanceToPoint( planes[3], b ) < 1e-9 );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0] + 1, ijk[1], ijk[2] ), b );
-	assert( Plane_DistanceToPoint( planes[4], b ) > -1e-9 && Plane_DistanceToPoint( planes[4], b ) < 1e-9 );
-	geometry->pointAt( geometry, HEL_P_3DTo1D_3( self, ijk[0], ijk[1] + 1, ijk[2] ), b );
-	assert( Plane_DistanceToPoint( planes[5], b ) > -1e-9 && Plane_DistanceToPoint( planes[5], b ) < 1e-9 );
-#endif
-}
-
-void _HexaEL_BuildElementLines( void* hexaEL, Element_GlobalIndex globalIndex, Stg_Line_List lines ) {
-	HexaEL*		self = (HexaEL*)hexaEL;
-	Geometry*       geometry = self->geometry;
-	Coord		a, b;
-	IJK		ij;
-	
-	HEL_E_1DTo2D( self, globalIndex, ij );
-	
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0], ij[1] ), a );
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] ), b );
-	Stg_Line_CalcFromPoints( lines[0], a, b );
-	
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0], ij[1] + 1 ), b );
-	Stg_Line_CalcFromPoints( lines[1], b, a );
-	
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] + 1 ), a );
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0], ij[1] + 1 ), b );
-	Stg_Line_CalcFromPoints( lines[2], a, b );
-	
-	geometry->pointAt( geometry, HEL_P_2DTo1D_2( self, ij[0] + 1, ij[1] ), b );
-	Stg_Line_CalcFromPoints( lines[3], b, a );
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,201 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_HexaEL_h__
-#define __Discretisaton_Mesh_HexaEL_h__
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type HexaEL_Type;
-
-	/* HexaEL information */
-	#define __HexaEL \
-		/* General info */ \
-		__ElementLayout \
-		\
-		/* Virtual info */ \
-		\
-		/* HexaEL info ... */ \
-		Dimension_Index dim;       \
-		IJK				pointSize; \
-		IJK				elementSize; \
-		Bool                            topologyWasCreatedInternally;
-		
-	struct _HexaEL { __HexaEL };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a HexaEL */
-	HexaEL* HexaEL_DefaultNew( Name name );
-	
-	HexaEL* HexaEL_New(
-		Name                        name,
-		Dimension_Index             dim,
-		Dictionary*                 dictionary,
-		Geometry*                   geometry );
-
-	/* Initialise a HexaEL */
-	void HexaEL_Init(
-		HexaEL*                     self,
-		Name                        name,
-		Dimension_Index             dim,
-		Dictionary*                 dictionary,
-		Geometry*                   geometry );
-	
-	/* Creation implementation */
-	HexaEL* _HexaEL_New(
-		SizeT                                                   _sizeOfSelf, 
-		Type                                                    type,
-		Stg_Class_DeleteFunction*                               _delete,
-		Stg_Class_PrintFunction*                                _print,
-		Stg_Class_CopyFunction*                                 _copy, 
-		Stg_Component_DefaultConstructorFunction*               _defaultConstructor,
-		Stg_Component_ConstructFunction*                        _construct,
-		Stg_Component_BuildFunction*                            _build,
-		Stg_Component_InitialiseFunction*                       _initialise,
-		Stg_Component_ExecuteFunction*                          _execute,
-		Stg_Component_DestroyFunction*                          _destroy,
-		Name                                                    name,
-		Bool                                                    initFlag,
-		ElementLayout_BuildFunction*                            build,		
-		ElementLayout_BuildCornerIndicesFunction*               buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*               cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*              buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*                 buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*                 edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*                buildEdgeElements,
-		ElementLayout_EdgeAtFunction*                           edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*    getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*   getStaticMinAndMaxGlobalCoords,				
-		ElementLayout_ElementWithPointFunction*                 elementWithPoint,
-		Dimension_Index                                         dim,
-		Dictionary*                                             dictionary,
-		Geometry*                                               geometry );
-
-	/* Initialisation implementation functions */
-	void _HexaEL_Init( HexaEL* self, Dimension_Index dim, IJK pointSize, IJK elementSize ) ;
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete HexaEL implementation */
-	void _HexaEL_Delete( void* hexaEL );
-	
-	/* Print HexaEL implementation */
-	void _HexaEL_Print( void* hexaEL, Stream* stream );
-	
-	void _HexaEL_Construct( void* hexaEL, Stg_ComponentFactory* cf, void* data );
-	
-	void _HexaEL_Build( void* hexaEL, void* data );
-	
-	void _HexaEL_Initialise( void* hexaEL, void* data );
-	
-	void _HexaEL_Execute( void* hexaEL, void* data );
-	
-	void _HexaEL_Destroy( void* hexaEL, void* data );
-	
-	/* Copy */
-	#define HexaEL_Copy( self ) \
-		(HexaEL*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define HexaEL_DeepCopy( self ) \
-		(HexaEL*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _HexaEL_Copy( void* hexaEL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	void _HexaEL_BuildCornerIndices( void* hexaEL, Element_GlobalIndex globalIndex, Index* points );
-	
-	Element_GlobalIndex _HexaEL_CornerElementCount( void* hexaEL, Index corner );
-	
-	void _HexaEL_BuildCornerElements( void* hexaEL, Index corner, Element_GlobalIndex* elements );
-	void _HexaEL_BuildCornerElements1D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) ;
-	void _HexaEL_BuildCornerElements2D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) ;
-	void _HexaEL_BuildCornerElements3D( void* hexaEL, Index corner, Element_GlobalIndex* elements ) ;
-	
-	void _HexaEL_BuildEdgeIndices( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges );
-	void _HexaEL_BuildEdgeIndices1D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges );
-	void _HexaEL_BuildEdgeIndices2D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) ;
-	void _HexaEL_BuildEdgeIndices3D( void* hexaEL, Element_GlobalIndex globalIndex, Index* edges ) ;
-	
-	Element_GlobalIndex _HexaEL_EdgeElementCount( void* hexaEL, Index edge );
-	
-	void _HexaEL_BuildEdgeElements( void* hexaEL, Index edge, Element_GlobalIndex* elements );
-	
-	void _HexaEL_EdgeAt( void* hexaEL, Index index, Edge edge );
-	void _HexaEL_EdgeAt1D( void* hexaEL, Index index, Edge edge ) ;
-	void _HexaEL_EdgeAt2D( void* hexaEL, Index index, Edge edge ) ;
-	void _HexaEL_EdgeAt3D( void* hexaEL, Index index, Edge edge ) ;
-
-	void _HexaEL_TriBarycenter( Coord tri[3], const Coord pnt, Coord dst );
-	void _HexaEL_TetBarycenter( Coord tet[4], const Coord pnt, double* dst );
-	Bool _HexaEL_FindTriBarycenter( const Coord crds[4], const Coord pnt, double* bcs, unsigned* dstInds, 
-					PartitionBoundaryStatus bndStatus, MeshTopology* topo, unsigned gElInd );
-	Bool _HexaEL_FindTetBarycenter( const Coord crds[8], const Coord pnt, double* bcs, unsigned* dstInds, 
-					PartitionBoundaryStatus bndStatus, MeshTopology* topo, unsigned gElInd );
-	
-	/** TODO: not sure how these functions handle points on the upper border. Have to test.
-		PatrickSunter, 7 Mar 2006 */
-	Element_GlobalIndex _HexaEL_ElementWithPoint( void* hexaEL, void* decomp, Coord point, void* mesh, 
-						      PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	Element_DomainIndex _HexaEL_ElementWithPoint1D( void* hexaEL, void* _decomp, Coord point, void* _mesh, 
-							PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	Element_DomainIndex _HexaEL_ElementWithPoint2D( void* hexaEL, void* decomp, Coord point, void* mesh, 
-							PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	Element_DomainIndex _HexaEL_ElementWithPoint3D( void* hexaEL, void* decomp, Coord point, void* mesh, 
-							PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	void _HexaEL_BuildElementPlanes( void* hexaEL, Element_GlobalIndex globalIndex, Plane_List planes );
-	void _HexaEL_BuildElementLines( void* hexaEL, Element_GlobalIndex globalIndex, Stg_Line_List lines ) ;
-	
-	
-#endif /* __Discretisaton_Mesh_HexaEL_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaEL.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">HexaEL</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">ElementLayout</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Topology</param>
-		<param name="Type">Topology</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 345 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Geometry</param>
-		<param name="Type">Geometry</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 346 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1897 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "MeshDecomp.h"
-#include "HexaMD.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "CornerNL.h"
-#include "BodyNL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <assert.h>
-#include <string.h>
-
-/* Textual name of this class */
-const Type HexaMD_Type = "HexaMD";
-const Name HexaMDIJK26TopologyName = "defaultHexaMDIJK26TopologyName";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-HexaMD* HexaMD_DefaultNew( Name name )
-{
-	return (HexaMD*)_HexaMD_New( 
-		sizeof(HexaMD), 
-		HexaMD_Type, 
-		_HexaMD_Delete, 
-		_HexaMD_Print,
-		_HexaMD_Copy,
-		(Stg_Component_DefaultConstructorFunction*)HexaMD_DefaultNew,
-		_HexaMD_Construct,
-		_HexaMD_Build,
-		_HexaMD_Initialise,
-		_HexaMD_Execute,
-		(Stg_Component_DestroyFunction*)_HexaMD_Destroy,
-		name,
-		False,
-		// TODO: these should all be over-ridden with fast specific versions using the existing macros,
-		//	which are maybe in regMeshUtils ?
-		_MeshDecomp_Node_LocalToGlobal1D,
-		_MeshDecomp_Node_DomainToGlobal1D,
-		_MeshDecomp_Node_ShadowToGlobal1D, 
-		_MeshDecomp_Node_GlobalToLocal1D, 
-		_MeshDecomp_Node_GlobalToDomain1D, 
-		_MeshDecomp_Node_GlobalToShadow1D,
-		_MeshDecomp_Element_LocalToGlobal1D,
-		_MeshDecomp_Element_DomainToGlobal1D,
-		_MeshDecomp_Element_ShadowToGlobal1D, 
-		_MeshDecomp_Element_GlobalToLocal1D, 
-		_MeshDecomp_Element_GlobalToDomain1D, 
-		_MeshDecomp_Element_GlobalToShadow1D,
-		_HexaMD_Shadow_ProcCount,
-		_HexaMD_Shadow_BuildProcs,
-		_MeshDecomp_Shadow_ProcElementCount,
-		_MeshDecomp_Proc_WithElement,
-		NULL,
-		MPI_COMM_WORLD,
-		NULL,
-		NULL,
-		0 );
-}
-
-HexaMD* HexaMD_New_All(
-		Name							name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout,
-		unsigned char					numPartitionedDims )
-{
-	return _HexaMD_New( 
-		sizeof(HexaMD), 
-		HexaMD_Type, 
-		_HexaMD_Delete, 
-		_HexaMD_Print,
-		_HexaMD_Copy,
-		(Stg_Component_DefaultConstructorFunction*)HexaMD_DefaultNew,
-		_HexaMD_Construct,
-		_HexaMD_Build,
-		_HexaMD_Initialise,
-		_HexaMD_Execute,
-		(Stg_Component_DestroyFunction*)_HexaMD_Destroy,
-		name,
-		True,
-		_MeshDecomp_Node_LocalToGlobal1D,
-		_MeshDecomp_Node_DomainToGlobal1D,
-		_MeshDecomp_Node_ShadowToGlobal1D, 
-		_MeshDecomp_Node_GlobalToLocal1D, 
-		_MeshDecomp_Node_GlobalToDomain1D, 
-		_MeshDecomp_Node_GlobalToShadow1D,
-		_MeshDecomp_Element_LocalToGlobal1D,
-		_MeshDecomp_Element_DomainToGlobal1D,
-		_MeshDecomp_Element_ShadowToGlobal1D, 
-		_MeshDecomp_Element_GlobalToLocal1D, 
-		_MeshDecomp_Element_GlobalToDomain1D, 
-		_MeshDecomp_Element_GlobalToShadow1D,
-		_HexaMD_Shadow_ProcCount,
-		_HexaMD_Shadow_BuildProcs,
-		_MeshDecomp_Shadow_ProcElementCount,
-		_MeshDecomp_Proc_WithElement,
-		dictionary,
-		communicator,
-		eLayout,
-		nLayout,
-		numPartitionedDims );
-}
-
-void HexaMD_Init(
-		HexaMD*						self,
-		Name							name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout,
-		unsigned char					numPartitionedDims )
-{
-	/* General info */
-	self->type = HexaMD_Type;
-	self->_sizeOfSelf = sizeof(HexaMD);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _HexaMD_Delete;
-	self->_print = _HexaMD_Print;
-	self->_copy = _HexaMD_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)HexaMD_DefaultNew;
-	self->_construct = _HexaMD_Construct;
-	self->_build = _HexaMD_Build;
-	self->_initialise = _HexaMD_Initialise;
-	self->_execute = _HexaMD_Execute;
-	self->_destroy = (Stg_Component_DestroyFunction*)_HexaMD_Destroy;
-	// TODO: these should all be over-ridden with fast specific versions using the existing macros,
-	//	which are maybe in regMeshUtils ?
-	self->nodeMapLocalToGlobal = _MeshDecomp_Node_LocalToGlobal1D;
-	self->nodeMapDomainToGlobal = _MeshDecomp_Node_DomainToGlobal1D;
-	self->nodeMapShadowToGlobal = _MeshDecomp_Node_ShadowToGlobal1D;
-	self->nodeMapGlobalToLocal = _MeshDecomp_Node_GlobalToLocal1D;
-	self->nodeMapGlobalToDomain = _MeshDecomp_Node_GlobalToDomain1D;
-	self->nodeMapGlobalToShadow = _MeshDecomp_Node_GlobalToShadow1D;
-	self->elementMapLocalToGlobal = _MeshDecomp_Element_LocalToGlobal1D;
-	self->elementMapDomainToGlobal = _MeshDecomp_Element_DomainToGlobal1D;
-	self->elementMapShadowToGlobal = _MeshDecomp_Element_ShadowToGlobal1D;
-	self->elementMapGlobalToLocal = _MeshDecomp_Element_GlobalToLocal1D;
-	self->elementMapGlobalToDomain = _MeshDecomp_Element_GlobalToDomain1D;
-	self->elementMapGlobalToShadow = _MeshDecomp_Element_GlobalToShadow1D;
-	self->shadowProcCount = _HexaMD_Shadow_ProcCount;
-	self->shadowBuildProcs = _HexaMD_Shadow_BuildProcs;
-	self->shadowProcElementCount = _MeshDecomp_Shadow_ProcElementCount;
-	self->procWithElement = _MeshDecomp_Proc_WithElement;
-
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_MeshDecomp_Init( (MeshDecomp*)self, communicator, eLayout, nLayout, NULL );
-	
-	/* HexaMD info */
-	_HexaMD_Init( self, numPartitionedDims );
-}
-
-
-HexaMD* _HexaMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout,
-		unsigned char					numPartitionedDims )
-{
-	HexaMD* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(HexaMD) );
-	self = (HexaMD*)_MeshDecomp_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		nodeMapLocalToGlobal, 
-		nodeMapDomainToGlobal,
-		nodeMapShadowToGlobal,
-		nodeMapGlobalToLocal,
-		nodeMapGlobalToDomain,
-		nodeMapGlobalToShadow, 
-		elementMapLocalToGlobal,
-		elementMapDomainToGlobal,
-		elementMapShadowToGlobal, 
-		elementMapGlobalToLocal,
-		elementMapGlobalToDomain, 
-		elementMapGlobalToShadow,
-		shadowProcCount,
-		shadowBuildProcs,
-		shadowProcElementCount,
-		procWithElement,
-		dictionary, 
-		communicator,
-		eLayout,
-		nLayout );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* HexaMD info */
-	if( initFlag ){
-		_HexaMD_Init( self, numPartitionedDims );
-	}
-	
-	return self;
-}
-
-#define HMD_E_3DTo1D( self, i, j, k ) \
-	(((self)->elementGlobal3DCounts[2] ? (k) * ((self)->elementGlobal3DCounts[0] ? (self)->elementGlobal3DCounts[0] : 1) * \
-		((self)->elementGlobal3DCounts[1] ? (self)->elementGlobal3DCounts[1] : 1) : 0) + \
-		((self)->elementGlobal3DCounts[1] ? (j) * ((self)->elementGlobal3DCounts[0] ? \
-		(self)->elementGlobal3DCounts[0] : 1) : 0) + \
-		((self)->elementGlobal3DCounts[0] ? (i) : 0))
-
-
-void _HexaMD_Init(
-		HexaMD*						self,
-		unsigned char					numPartitionedDims )
-{
-	/* General and Virtual info should already be set */
-	
-	/* HexaMD info */
-	Partition_Index		proc_I;
-	Index			axis;
-	unsigned char		axisIJK[3];
-	Element_GlobalIndex*	localSizes[3];
-	Element_GlobalIndex*	localOffsets[3];
-	Index			dim_I;
-	Stream*			debug;
-	Stream*			error;
-	SizeT			candidateSize;
-	IJK*			candidate;
-	IJK*			candidateIJK;
-	Index			candidateCount;
-	Index*			candidateResidual;
-	IJK			ijk;
-	Index			candidate_I;
-	IndexSet*		filter;
-	Index			filterCount;
-	IndexSet*		bestFilter;
-	Index			bestCount;
-	Index			lowest;
-	Index			highest;
-	Element_GlobalIndex	ecI[3]; /* frequently accessed... cached on stack */
-	double			ecD[3]; /* frequently accessed... cached on stack */
-	Index			bestCandidate_I;
-	double			lowestD;
-
-	/* Assign function pointers in case the decomp is serial */
-	MeshDecomp_OverrideMethodsIfSerial(self);
-	
-	debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-	error = Journal_Register( ErrorStream_Type, HexaMD_Type );
-	
-	self->isConstructed = True;
-	self->numPartitionedDims = (numPartitionedDims <= 3) ? numPartitionedDims : 3;
-	
-	Journal_Firewall( 
-		self->nodeLayout->nodeCount > 1,
-		error,
-		"Error: %s component \"%s\" asked to decompose mesh based on NodeLayout \"%s\", but "
-		"provided NodeLayout has only 1 node. Did you specify a valid input file? Did you specify "
-		"the number of elements/nodes in your input file?\n",
-		self->type, self->name, self->nodeLayout->name );
-
-	self->nodeGlobalCount = self->nodeLayout->nodeCount;
-	self->elementGlobalCount = self->elementLayout->elementCount;
-	
-	/* Start Steve 20040103 */
-	
-	/* Changed by Patrick Sunter, 22/7/2004, so Body meshes work properly
-	(which have same number of elements and nodes in each axis ) */
-	for (dim_I = 0; dim_I < 3; dim_I++) {
-		self->nodeGlobal3DCounts[dim_I] = ((IJKTopology*)self->nodeLayout->topology)->size[dim_I];
-		/* element global counts stored as an integer */
-		ecI[dim_I] = self->elementGlobal3DCounts[dim_I] = ((IJKTopology*)self->elementLayout->topology)->size[dim_I];
-		/* element global counts stored as a double */
-		ecD[dim_I] = (double)ecI[dim_I];
-	}
-	Journal_Firewall( 
-		self->nodeGlobal3DCounts[I_AXIS] * self->nodeGlobal3DCounts[J_AXIS] * self->nodeGlobal3DCounts[K_AXIS],
-		error,
-		"Error: you specified node Global counts of { %u, %u, %u }, but mesh must have at least 1 node in each dimension "
-		"(If you want a 2d mesh set node count to 1 in one of the dimensions.\n",
-		self->nodeGlobal3DCounts[0], 
-		self->nodeGlobal3DCounts[1], 
-		self->nodeGlobal3DCounts[2] );
-	Journal_Printf( debug, "nodeGlobalCount: %u, elementGlobalCount: %u\n", self->nodeGlobalCount, self->elementGlobalCount );
-	Journal_Printf( 
-		debug, 
-		"nodeGlobal3DCount: { %u, %u, %u }, elementGlobal3DCount: { %u, %u, %u }\n",
-		self->nodeGlobal3DCounts[0], 
-		self->nodeGlobal3DCounts[1], 
-		self->nodeGlobal3DCounts[2], 
-		ecI[0],
-		ecI[1],
-		ecI[2] );
-	
-	/* Phase 1:Find all combinations of i, j, k that multiply to nproc. We do this by trying all i,j,k = 0->nproc combinations.
-	   Once the combination is > nproc, we can forfiet the rest of the loop */
-	candidateSize = self->nproc; /* initial guess */
-	candidate = Memory_Alloc_Array( IJK, candidateSize, "candidate" );
-	candidateCount = 0;
-	for( ijk[2] = 1; ijk[2] <= self->nproc; ijk[2]++ ) {
-		for( ijk[1] = 1; ijk[1] <= self->nproc; ijk[1]++ ) {
-			for( ijk[0] = 1; ijk[0] <= self->nproc; ijk[0]++ ) {
-				Index total = ijk[0] * ijk[1] * ijk[2];
-				
-				if( total == self->nproc ) {
-					Index			dim_I;
-					
-					/* If list is full... increase array size */
-					if( candidateCount == candidateSize ) {
-						candidateSize += self->nproc;
-						candidate = Memory_Realloc_Array( candidate, IJK, candidateSize );
-					}
-					
-					for( dim_I = 0; dim_I < 3; dim_I++ ) {
-						candidate[candidateCount][dim_I] = ijk[dim_I];
-					}
-					candidateCount++;
-					break;
-				}
-				else if( total > self->nproc ) {
-					break;
-				}
-			}
-		
-		}
-	}
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition candidates count (phase 1): %u\n", candidateCount );
-		Journal_Printf( debug, "Decomposition candidates (phase 1): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			Journal_Printf( 
-				debug, 
-				"{ %u, %u, %u } ", 
-				candidate[candidate_I][0], 
-				candidate[candidate_I][1], 
-				candidate[candidate_I][2] );
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	/* Phase 2: Cull out candidates of an order of decomposition greater than asked for. */
-	filter = IndexSet_New( candidateCount );
-	filterCount = 0;
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		Bool			decomposeAxis[3];
-		Index			decomposeCount;
-
-		decomposeCount = 0;
-		for( dim_I = 0; dim_I < 3; dim_I++ ) {
-			decomposeAxis[dim_I] = candidate[candidate_I][dim_I] > 1 ? True : False;
-			decomposeCount += decomposeAxis[dim_I];
-		}
-		
-		if( decomposeCount <= self->numPartitionedDims ) {
-			IndexSet_Add( filter, candidate_I );
-			filterCount++;
-		}
-	}
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition candidates count (phase 2): %u\n", filterCount );
-		Journal_Printf( debug, "Decomposition candidates (phase 2): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			if( IndexSet_IsMember( filter, candidate_I ) ) {
-				Journal_Printf( 
-					debug, 
-					"{ %u, %u, %u } ", 
-					candidate[candidate_I][0], 
-					candidate[candidate_I][1], 
-					candidate[candidate_I][2] );
-			}
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	/* Phase 3: Make sure there are enough elements to decompose across, then calculate
-	    the residual elements.  Note that residual processors have not yet been
-		    considered. */
-	candidateIJK = Memory_Alloc_Array( IJK, candidateCount, "candidateIJK" );
-	candidateResidual = Memory_Alloc_Array( Index, candidateCount, "candidateResidual" );
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		Index   dim_I;
-		Index   residual[3];
-		
-		for( dim_I = 0; dim_I < 3; dim_I++ ) {
-			candidateIJK[candidate_I][dim_I] = candidate[candidate_I][dim_I] <= ecI[dim_I] ?
-				candidate[candidate_I][dim_I] : ecI[dim_I];
-			residual[dim_I] = 
-				ecI[dim_I] - 
-				ecI[dim_I] / candidateIJK[candidate_I][dim_I] * 
-				candidateIJK[candidate_I][dim_I];
-		}
-		
-		if( residual[0] || residual[1] || residual[2] ) {
-			candidateResidual[candidate_I] = 
-				residual[0] ? residual[0] : 1 * 
-				residual[1] ? residual[1] : 1 * 
-				residual[2] ? residual[2] : 1;
-		}
-		else {
-			candidateResidual[candidate_I] = 0;
-		}
-	}
-
-/* This formula could be useful for direct calculation of the decomposition, so I thought it best
-   not to delete it. */
-#if 0
-	/* Phase 3 (a): Work out the element counts...
-	   fi * fj * fk = pi * pj * pk = fPrime, where px > 1, else fx = ex = px = 1
-	                  --   --   --
-	                  ei   ej   ek
-	   fx = proc to element fraction in dir, px = proc count in dir, ex = element count in dir
-	   
-	   Logically px     = fx
-	             ------   ------
-	             p(x+1)   f(x+1)
-	*/
-	candidateIJK = Memory_Alloc_Array( IJK, candidateCount, "candidateIJK" );
-	candidateResidual = Memory_Alloc_Array( Index, candidateCount, "candidateResidual" );
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		/* Only work out legitimate values for real candidates */
-		if( IndexSet_IsMember( filter, candidate_I ) ) {
-			Bool			decomposeAxis[3];
-			Index			decomposeCount;
-			Index			dim_I;
-			double			f[3];
-			Index			residual[3];
-			
-			/* if decomposed in a dimension, calculate inverse element count, store in f[dim_I] */
-			decomposeCount = 0;
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				decomposeAxis[dim_I] = candidate[candidate_I][dim_I] > 1 ? True : False;
-				decomposeCount += decomposeAxis[dim_I];
-				f[dim_I] = (double)1.0f / ecD[dim_I];
-			}
-			
-			if( decomposeCount == 0 ) {
-				/* Do nothing... no decomposition */
-			}
-			else if( decomposeCount == 1 ) {
-				Index			dim_I1 = decomposeAxis[0] ? 0 : decomposeAxis[1] ? 1 : 2;
-				
-				f[dim_I1] = (double)candidate[candidate_I][dim_I1] / ecD[dim_I1];
-			}
-			else if( decomposeCount == 2 ) {
-				Index			dim_I1 = decomposeAxis[0] ? 0 : 1;
-				Index			dim_I2 = dim_I1 == 0 ? (decomposeAxis[1] ? 1 : 2) : 2;
-				double			fPrime;
-				double			ratio;
-				
-				fPrime = 
-					(double)candidate[candidate_I][dim_I1] * 
-					(double)candidate[candidate_I][dim_I2] / 
-					ecD[dim_I1] /
-					ecD[dim_I2];
-				
-				ratio = (double)candidate[candidate_I][dim_I1] / (double)candidate[candidate_I][dim_I2];
-				
-				f[dim_I2] = pow( fPrime / ratio, 1.0f / 2.0f );
-				f[dim_I1] = ratio * f[dim_I2];
-			}
-			else if( decomposeCount == 3 ) {
-				double			fPrime;
-				double			ratio1;
-				double			ratio2;
-				
-				fPrime = 
-					(double)candidate[candidate_I][0] * 
-					(double)candidate[candidate_I][1] * 
-					(double)candidate[candidate_I][2] / 
-					ecD[0] /
-					ecD[1] /
-					ecD[2];
-				
-				ratio1 = (double)candidate[candidate_I][0] / (double)candidate[candidate_I][1];
-				ratio2 = (double)candidate[candidate_I][1] / (double)candidate[candidate_I][2];
-				
-				f[2] = pow( fPrime / ratio1 / ratio2 / ratio2, 1.0f / 3.0f );
-				f[1] = ratio2 * f[2];
-				f[0] = ratio1 * f[1];
-			}
-			else {
-				Journal_Firewall( 
-					0, 
-					error,
-					"Illegal number of decomposition axis.\n" );
-			}
-			
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				candidateIJK[candidate_I][dim_I] = rint( f[dim_I] * ecD[dim_I] );
-				residual[dim_I] = 
-					ecI[dim_I] - 
-					ecI[dim_I] / candidateIJK[candidate_I][dim_I] * 
-					candidateIJK[candidate_I][dim_I];
-			}
-			if( residual[0] || residual[1] || residual[2] ) {
-				candidateResidual[candidate_I] = 
-					residual[0] ? residual[0] : 1 * 
-					residual[1] ? residual[1] : 1 * 
-					residual[2] ? residual[2] : 1;
-			}
-			else {
-				candidateResidual[candidate_I] = 0;
-			}
-		}
-		else {
-			Index			dim_I;
-			
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				candidateIJK[candidate_I][dim_I] = 0;
-			}
-			candidateResidual[candidate_I] = -1;
-		}
-	}
-#endif
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition candidates element counts & residual (phase 3): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			if( IndexSet_IsMember( filter, candidate_I ) ) {
-				Journal_Printf( 
-					debug, 
-					"{ %u, %u, %u (%u) } ", 
-					candidateIJK[candidate_I][0], 
-					candidateIJK[candidate_I][1], 
-					candidateIJK[candidate_I][2],
-					candidateResidual[candidate_I] );
-			}
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	
-	/* Phase 3 (b): Cull out those with residuals (unless allowUnsed or allowUnBalanced is enabled), or are no longer the 
-	   processor count*/
-	if( self->allowUnusedCPUs || self->allowUnbalancing ) {
-		/* Do nothing... code further on will deal with the residuals */
-	}
-	else {
-		Index			count;
-		
-		count = 0;
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			/* Only for those that we have considered so far as real candidates */
-			if( IndexSet_IsMember( filter, candidate_I ) ) {
-				/* If it has a residual, it is no longer a candidate */
-				if( candidateResidual[candidate_I] ) {
-					IndexSet_Remove( filter, candidate_I );
-					filterCount--;
-				}
-				else if( 
-					( candidateIJK[candidate_I][0] * 
-					  candidateIJK[candidate_I][1] * 
-					  candidateIJK[candidate_I][2] ) != self->nproc ) 
-				{
-					IndexSet_Remove( filter, candidate_I );
-					filterCount--;
-				}
-				else {
-					count++;
-				}
-			}
-		}
-		
-		/* If there are no more candidates left, inform and error */
-		if( !count ) {
-			Journal_Firewall( 
-				0, 
-				error,
-				"Cannot decompose mesh of dimensions %u %u %u by %u processors allowing for upto %uD decomposition (unbalancing and/or unused cpus disallowed).\n",
-				ecI[0],
-				ecI[1],
-				ecI[2],
-				self->nproc,
-				self->numPartitionedDims );
-		}
-	}
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition candidates count (phase 3): %u\n", filterCount );
-		Journal_Printf( debug, "Decomposition candidates (phase 3): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			if( IndexSet_IsMember( filter, candidate_I ) ) {
-				Journal_Printf( 
-					debug, 
-					"{ %u, %u, %u } ", 
-					candidateIJK[candidate_I][0], 
-					candidateIJK[candidate_I][1], 
-					candidateIJK[candidate_I][2] );
-			}
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	/* Phase 4a. Find the highest decomposition count. */
-	highest = 0;
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		if( IndexSet_IsMember( filter, candidate_I ) ) {
-			Bool			decomposeAxis[3];
-			Index			decomposeCount;
-			
-			decomposeCount = 0;
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				decomposeAxis[dim_I] = candidateIJK[candidate_I][dim_I] > 1 ? True : False;
-				decomposeCount += decomposeAxis[dim_I];
-			}
-			
-			if( decomposeCount > highest ) {
-				highest = decomposeCount;
-			}
-		}
-	}
-	/* TODO: Steve, this firewall causes it to always exit when using 1 processor...please fix*/
-	/*Journal_Firewall( highest != 0, error, "Highest decomposition count not found... something is wrong!\n" );*/
-	Journal_DPrintf( debug, "Decomposition count highest value: %u\n", highest );
-	
-	/* Phase 4b. Choose the best decomposition(s) based on using the highest decomposition count. */
-	bestFilter = IndexSet_New( candidateCount );
-	bestCount = 0;
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		if( IndexSet_IsMember( filter, candidate_I ) ) {
-			Bool			decomposeAxis[3];
-			Index			decomposeCount;
-			
-			decomposeCount = 0;
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				decomposeAxis[dim_I] = candidateIJK[candidate_I][dim_I] > 1 ? True : False;
-				decomposeCount += decomposeAxis[dim_I];
-			}
-			
-			if( decomposeCount == highest ) {
-				IndexSet_Add( bestFilter, candidate_I );
-				bestCount++;
-			}
-		}
-	}
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition best decomposition candidates count (phase 4): %u\n", bestCount );
-		Journal_Printf( debug, "Decomposition best decomposition candidates (phase 4): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			if( IndexSet_IsMember( bestFilter, candidate_I ) ) {
-				Journal_Printf( 
-					debug, 
-					"{ %u, %u, %u } ", 
-					candidateIJK[candidate_I][0], 
-					candidateIJK[candidate_I][1], 
-					candidateIJK[candidate_I][2] );
-			}
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	/* Phase 5a. Find the lowest surface boundary area proxy value. */
-	lowest = (unsigned)-1;
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		if( IndexSet_IsMember( bestFilter, candidate_I ) ) {
-			Index count = 
-				ecI[0] / 
-				candidateIJK[candidate_I][0] + 
-				ecI[1] /
-				candidateIJK[candidate_I][1] + 
-				ecI[2] /
-				candidateIJK[candidate_I][2];
-			
-			if( count < lowest ) {
-				lowest = count;
-			}
-		}
-	}
-	Journal_Firewall( lowest != (unsigned)-1, error, "Lowest surface area proxy not found... something is wrong!\n" );
-	#ifdef DEBUG
-		Journal_Printf( debug, "Decomposition lowest surface area proxy value: %u\n", lowest );
-	#endif
-	
-	/* Phase 5b. Choose the best decomposition(s) based on the lowest surface boundary area. */
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		if( IndexSet_IsMember( bestFilter, candidate_I ) ) {
-			Index count = 
-				ecI[0] / 
-				candidateIJK[candidate_I][0] + 
-				ecI[1] /
-				candidateIJK[candidate_I][1] + 
-				ecI[2] /
-				candidateIJK[candidate_I][2];
-			
-			if( count != lowest ) {
-				IndexSet_Remove( bestFilter, candidate_I );
-				bestCount--;
-			}
-		}
-	}
-	#ifdef DEBUG
-	{
-		Index			candidate_I;
-		
-		Journal_Printf( debug, "Decomposition best surface area candidates count (phase 5): %u\n", bestCount );
-		Journal_Printf( debug, "Decomposition best surface area candidates (phase 5): { " );
-		for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-			if( IndexSet_IsMember( bestFilter, candidate_I ) ) {
-				Journal_Printf( 
-					debug, 
-					"{ %u, %u, %u } ", 
-					candidateIJK[candidate_I][0], 
-					candidateIJK[candidate_I][1], 
-					candidateIJK[candidate_I][2] );
-			}
-		}
-		Journal_Printf( debug, "}\n" );
-	}
-	#endif
-	
-	/* Phase 6: Choose the candidate that provides the most work per cpu */
-	bestCandidate_I = 0;
-	
-	lowestD = ecD[0] * ecD[1] * ecD[2];
-	bestCandidate_I = 0;
-	for( candidate_I = 0; candidate_I < candidateCount; candidate_I++ ) {
-		if( IndexSet_IsMember( bestFilter, candidate_I ) ) {
-			double			average;
-			Index			dim_I;
-			
-			average = 0;
-			for( dim_I = 0; dim_I < 3; dim_I++ ) {
-				average += ecD[dim_I] / (double)candidateIJK[candidate_I][dim_I];
-			}
-			average /= 3;
-			
-			if( average < lowestD ) {
-				lowestD = average;
-				bestCandidate_I = candidate_I;
-			}
-		}
-	}
-	Journal_Firewall( 
-		lowestD != ecD[0] * ecD[1] * ecD[2], 
-		error, 
-		"Couldn't choose out of the best... something is wrong!\n" );
-	for( dim_I = 0; dim_I < 3; dim_I++) {
-		self->partitionedAxis[dim_I] = candidate[bestCandidate_I][dim_I] == 1 ? 0 : 1;
-		self->partition3DCounts[dim_I] = candidateIJK[bestCandidate_I][dim_I];
-	}
-	Journal_Printf( 
-		debug, 
-		"Out of %u valid decomposition candidates, %u are best surface area candidates. Best work rate is: { %u, %u, %u }\n", 
-		filterCount,
-		bestCount,
-		self->partition3DCounts[0],
-		self->partition3DCounts[1],
-		self->partition3DCounts[2] );
-	
-	/* End Steve 20040103 */
-	
-	/* Decompose each dimension */
-	self->procsInUse = 1;
-	for( axis = 0; axis < 3; axis++ ) {
-		localSizes[axis] = Memory_Alloc_Array( Element_GlobalIndex, self->partition3DCounts[axis],
-			"HexaMD ... localSizes" );
-		localOffsets[axis] = Memory_Alloc_Array( Element_GlobalIndex, self->partition3DCounts[axis],
-			"HexaMD ... localOffsets" );
-		
-		if( self->partitionedAxis[axis] ) {
-			_HexaMD_DecomposeDimension(
-				self,
-				self->elementGlobal3DCounts[axis],
-				self->partition3DCounts[axis],
-				localSizes[axis],
-				localOffsets[axis] );
-		}
-		else {
-			for( proc_I = 0; proc_I < self->partition3DCounts[axis]; proc_I++ ) {
-				localSizes[axis][proc_I] = self->elementGlobal3DCounts[axis];
-				localOffsets[axis][proc_I] = 0;
-			}
-		}
-		
-		proc_I = 0;
-		while( proc_I < self->partition3DCounts[axis] && localSizes[axis][proc_I] )
-			proc_I++;
-		
-		self->partition3DCounts[axis] = proc_I;
-		if( self->partition3DCounts[axis] == 1 )
-			self->partitionedAxis[axis] = False;
-		
-		self->procsInUse *= proc_I;
-	}
-	
-	if( self->rank < self->procsInUse ) {
-		/* processors being used now need to fill in all counts */
-		Partition_Index		procCnt;
-		Partition_Index*	procs;
-		Bool			isPeriodic[3];
-		
-		/* Allocate enough memory for everything */
-		self->elementLocal3DCounts = Memory_Alloc_Array( Element_LocalIJK, self->procsInUse, "HexaMD" );
-		self->_elementOffsets = Memory_Alloc_Array( Element_GlobalIJK, self->procsInUse, "HexaMD" );
-		self->nodeLocal3DCounts = Memory_Alloc_Array( Node_LocalIJK, self->procsInUse, "HexaMD" );
-		self->_nodeOffsets = Memory_Alloc_Array( Node_GlobalIJK, self->procsInUse, "HexaMD" );
-		
-		proc_I = 0;
-		for( axisIJK[2] = 0; axisIJK[2] < self->partition3DCounts[2]; axisIJK[2]++ ) {
-			for( axisIJK[1] = 0; axisIJK[1] < self->partition3DCounts[1]; axisIJK[1]++ ) {
-				for( axisIJK[0] = 0; axisIJK[0] < self->partition3DCounts[0]; axisIJK[0]++ ) {
-
-					for ( dim_I=0; dim_I < 3; dim_I++ ) {
-						self->elementLocal3DCounts[proc_I][dim_I] = localSizes[dim_I][axisIJK[dim_I]];
-						self->_elementOffsets[proc_I][dim_I] = localOffsets[dim_I][axisIJK[dim_I]];
-					
-						Journal_Firewall( self->elementLocal3DCounts[proc_I][dim_I]
-							<= self->elementGlobal3DCounts[dim_I], error,
-							"Error - in %s(), proc %d: elementLocal3DCounts[%d]=%d is > than "
-							"elementGlobalCounts[%d]=%d for proc %d.\n", __func__,
-							self->rank, dim_I, self->elementLocal3DCounts[proc_I][dim_I],
-							dim_I, self->elementGlobal3DCounts[dim_I], self->rank ); 
-					}	
-		
-					for ( dim_I=0; dim_I < 3; dim_I++ ) {
-
-						/* Fixed by Patrick Sunter, 15 May 2006: now calculates node counts
-						 * correctly for body node layouts */
-						self->nodeLocal3DCounts[proc_I][dim_I] = NodeLayout_CalcNodeCountInDimFromElementCount(
-							self->nodeLayout, localSizes[dim_I][axisIJK[dim_I]] );
-
-						/* Correct for special case of 2D meshes : node count always 1, not 2 */
-						if ( self->nodeGlobal3DCounts[dim_I] == 1 ) {
-							self->nodeLocal3DCounts[proc_I][dim_I] = 1;
-						}
-						self->_nodeOffsets[proc_I][dim_I] = localOffsets[dim_I][axisIJK[dim_I]];
-
-						Journal_Firewall( self->nodeLocal3DCounts[proc_I][dim_I]
-							<= self->nodeGlobal3DCounts[dim_I], error,
-							"Error - in %s(), proc %d: nodeLocal3DCounts[%d]=%d is > than "
-							"nodeGlobalCounts[%d]=%d for proc %d.\n", __func__,
-							self->rank, dim_I, self->nodeLocal3DCounts[proc_I][dim_I],
-							dim_I, self->nodeGlobal3DCounts[dim_I], self->rank ); 
-					}	
-
-					proc_I++;
-				}
-			}
-		}
-		
-		for( axis = 0; axis < 3; axis++ ) {
-			if( localSizes[axis] )
-				Memory_Free( localSizes[axis] );
-			
-			if( localOffsets[axis] )
-				Memory_Free( localOffsets[axis] );
-		}
-		
-		isPeriodic[I_AXIS] = Dictionary_GetBool_WithDefault( self->dictionary, "isPeriodicI", False );
-		isPeriodic[J_AXIS] = Dictionary_GetBool_WithDefault( self->dictionary, "isPeriodicJ", False );
-		isPeriodic[K_AXIS] = Dictionary_GetBool_WithDefault( self->dictionary, "isPeriodicK", False );
-		
-		/* Construct processor topology */
-		self->procTopology = (Topology*)IJK26Topology_New_All( HexaMDIJK26TopologyName, NULL,
-			self->partition3DCounts, isPeriodic );
-		((IJK26Topology*)self->procTopology)->dynamicSizes = True;
-		
-		/* Build local element IndexSets */
-		self->localElementSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "HexaMD->localElementSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			self->localElementSets[proc_I] = NULL;
-		
-		if( self->storage == StoreAll ) {
-			procCnt = self->procsInUse;
-			procs = Memory_Alloc_Array( Partition_Index, procCnt, "HexaMD" );
-			for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-				procs[proc_I] = proc_I;
-		}
-		else if( self->storage == StoreSelf ) {
-			procCnt = 1;
-			procs = Memory_Alloc_Array( Partition_Index, procCnt, "HexaMD" );
-			procs[0] = self->rank;
-		}
-		else /*( self->storage == StoreNeighbours )*/ {
-			procCnt = self->shadowProcCount( self ) + 1;
-			procs = Memory_Alloc_Array( Partition_Index, procCnt, "HexaMD" );
-			procs[0] = self->rank;
-			self->shadowBuildProcs( self, &procs[1] );
-		}
-		
-		for( proc_I = 0; proc_I < procCnt; proc_I++ ) {
-			IJK		max = { 1, 1, 1 };
-			Index		sizeI, sizeJ, sizeK;
-			Dimension_Index	dim_I;
-
-			for ( dim_I=0; dim_I < 3; dim_I++ ) {
-				if ( self->elementLocal3DCounts[procs[proc_I]][dim_I] ) {
-					max[dim_I] = self->elementLocal3DCounts[procs[proc_I]][dim_I];
-				}	
-			}
-			
-			self->localElementSets[procs[proc_I]] = IndexSet_New( self->elementGlobalCount );
-			
-			for( sizeK = 0; sizeK < max[2]; sizeK++ ) {
-				for( sizeJ = 0; sizeJ < max[1]; sizeJ++ ) {
-					for( sizeI = 0; sizeI < max[0]; sizeI++ ) {
-						IndexSet_Add( self->localElementSets[procs[proc_I]], HMD_E_3DTo1D( self, 
-							self->_elementOffsets[procs[proc_I]][0] + sizeI, 
-							self->_elementOffsets[procs[proc_I]][1] + sizeJ, 
-							self->_elementOffsets[procs[proc_I]][2] + sizeK ) );
-					}
-				}
-			}
-		}
-		
-		/* Decompose local nodes based on element decomp */
-		_MeshDecomp_DecomposeNodes( self );
-		
-		/* Calculate local totals */
-		self->elementLocalCount = IndexSet_UpdateMembersCount( self->localElementSets[self->rank] );
-		self->nodeLocalCount = IndexSet_UpdateMembersCount( self->localNodeSets[self->rank] );
-		
-		/* Setup shadowing information */
-		self->shadowDepth = Dictionary_Entry_Value_AsUnsignedInt( Dictionary_GetDefault( self->dictionary, "shadowDepth", 
-			Dictionary_Entry_Value_FromUnsignedInt( 0 ) ) );
-		
-		if( self->shadowDepth && self->procsInUse > 1 ) {
-			Processor_Index    lastProcIndex = self->nproc;
-
-			for( proc_I = 0; proc_I < procCnt; proc_I++ ) {
-				/* Special case for 2 processors with periodic : lower nbr proc = upper nbr proc */
-				if ( procs[proc_I] == lastProcIndex ) continue;
-				_HexaMD_BuildShadowSets( self, procs[proc_I] );
-				lastProcIndex = procs[proc_I];
-			}
-		}
-		
-		if( procs )
-			Memory_Free( procs );
-			
-		/* Calculate totals */
-		if( self->shadowElementSets && self->shadowElementSets[self->rank] ) {
-			self->elementShadowCount = IndexSet_UpdateMembersCount( self->shadowElementSets[self->rank] );
-		}
-		else
-			self->elementShadowCount = 0;
-
-		self->elementDomainCount = self->elementLocalCount + self->elementShadowCount;
-		
-		if( self->shadowNodeSets && self->shadowNodeSets[self->rank] ) {
-			self->nodeShadowCount = IndexSet_UpdateMembersCount( self->shadowNodeSets[self->rank] );
-		}
-		else
-			self->nodeShadowCount = 0;
-
-		self->nodeDomainCount = self->nodeLocalCount + self->nodeShadowCount;
-	}
-	else {
-		/* processors not being used fill necessary arrays with null values */
-		for( axis = 0; axis < 3; axis++ ) {
-			if( localSizes[axis] )
-				Memory_Free( localSizes[axis] );
-			
-			if( localOffsets[axis] )
-				Memory_Free( localOffsets[axis] );
-		}
-
-		/* Clear all values for ranks that are not in use */
-		self->partitionedAxis[I_AXIS] = False;
-		self->partitionedAxis[J_AXIS] = False;
-		self->partitionedAxis[K_AXIS] = False;
-		self->procTopology = NULL;
-		
-		for( axis = 0; axis < 3; axis++ ) {
-			self->partition3DCounts[axis] = 0;
-			self->elementGlobal3DCounts[axis] = 0;
-		}
-		
-		self->shadowDepth = 0;
-	}
-	
-	Memory_Free( candidateResidual );
-	Memory_Free( candidateIJK );
-	Memory_Free( candidate );
-	Stg_Class_Delete( bestFilter );
-	Stg_Class_Delete( filter );
-
-	_HexaMD_CalculateDomain3DCounts( self );
-}
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _HexaMD_Delete( void* hexaMD ) {
-	HexaMD* self = (HexaMD*)hexaMD;
-	
-	if( self->elementLocal3DCounts )
-		Memory_Free( self->elementLocal3DCounts );
-	
-	if( self->_elementOffsets )
-		Memory_Free( self->_elementOffsets );
-	
-	if( self->nodeLocal3DCounts )
-		Memory_Free( self->nodeLocal3DCounts );
-	
-	if( self->_nodeOffsets )
-		Memory_Free( self->_nodeOffsets );
-	
-	/* Stg_Class_Delete parent */
-	_MeshDecomp_Delete( self );
-}
-
-
-void _HexaMD_Print( void* hexaMD, Stream* stream ) {
-	HexaMD* self = (HexaMD*)hexaMD;
-	
-	/* Set the Journal for printing informations */
-	Stream* hexaMDStream;
-	hexaMDStream = Journal_Register( InfoStream_Type, "HexaMDStream" );
-
-	/* Print parent */
-	_MeshDecomp_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "HexaMD (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* HexaMD info */
-}
-
-
-void* _HexaMD_Copy( void* hexaMD, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	HexaMD*		self = (HexaMD*)hexaMD;
-	HexaMD*		newHexaMD;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	Index		idx_I;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newHexaMD = (HexaMD*)_MeshDecomp_Copy( self, dest, deep, nameExt, map );
-	
-	newHexaMD->numPartitionedDims = self->numPartitionedDims;
-	for( idx_I = 0; idx_I < 3; idx_I++ ) {
-		newHexaMD->partitionedAxis[idx_I] = self->partitionedAxis[idx_I];
-		newHexaMD->partition3DCounts[idx_I] = self->partition3DCounts[idx_I];
-		newHexaMD->nodeGlobal3DCounts[idx_I] = self->nodeGlobal3DCounts[idx_I];
-		newHexaMD->elementGlobal3DCounts[idx_I] = self->elementGlobal3DCounts[idx_I];
-		newHexaMD->elementDomain3DCounts[idx_I] = self->elementDomain3DCounts[idx_I];
-	}
-	
-	if( deep ) {
-		if( (newHexaMD->nodeLocal3DCounts = PtrMap_Find( map, self->nodeLocal3DCounts )) == NULL && self->nodeLocal3DCounts ) {
-			Partition_Index		proc_I;
-			
-			newHexaMD->nodeLocal3DCounts = Memory_Alloc_Array( Node_LocalIJK, newHexaMD->procsInUse, "HexaMD->nodeLocal3DCounts" );
-			for( proc_I = 0; proc_I < newHexaMD->procsInUse; proc_I++ ) {
-				newHexaMD->nodeLocal3DCounts[proc_I][0] = self->nodeLocal3DCounts[proc_I][0];
-				newHexaMD->nodeLocal3DCounts[proc_I][1] = self->nodeLocal3DCounts[proc_I][1];
-				newHexaMD->nodeLocal3DCounts[proc_I][2] = self->nodeLocal3DCounts[proc_I][2];
-			}
-		}
-		
-		if( (newHexaMD->_nodeOffsets = PtrMap_Find( map, self->_nodeOffsets )) == NULL && self->_nodeOffsets ) {
-			Partition_Index		proc_I;
-			
-			newHexaMD->_nodeOffsets = Memory_Alloc_Array( Node_LocalIJK, newHexaMD->procsInUse, "HexaMD->_nodeOffsets" );
-			for( proc_I = 0; proc_I < newHexaMD->procsInUse; proc_I++ ) {
-				newHexaMD->_nodeOffsets[proc_I][0] = self->_nodeOffsets[proc_I][0];
-				newHexaMD->_nodeOffsets[proc_I][1] = self->_nodeOffsets[proc_I][1];
-				newHexaMD->_nodeOffsets[proc_I][2] = self->_nodeOffsets[proc_I][2];
-			}
-		}
-		
-		if( (newHexaMD->elementLocal3DCounts = PtrMap_Find( map, self->elementLocal3DCounts )) == NULL && self->elementLocal3DCounts ) {
-			Partition_Index		proc_I;
-			
-			newHexaMD->elementLocal3DCounts = Memory_Alloc_Array( Node_LocalIJK, newHexaMD->procsInUse, "HexaMD->elementLocal3DCounts" );
-			for( proc_I = 0; proc_I < newHexaMD->procsInUse; proc_I++ ) {
-				newHexaMD->elementLocal3DCounts[proc_I][0] = self->elementLocal3DCounts[proc_I][0];
-				newHexaMD->elementLocal3DCounts[proc_I][1] = self->elementLocal3DCounts[proc_I][1];
-				newHexaMD->elementLocal3DCounts[proc_I][2] = self->elementLocal3DCounts[proc_I][2];
-			}
-		}
-		
-		if( (newHexaMD->_elementOffsets = PtrMap_Find( map, self->_elementOffsets )) == NULL && self->_elementOffsets ) {
-			Partition_Index		proc_I;
-			
-			newHexaMD->_elementOffsets = Memory_Alloc_Array( Node_LocalIJK, newHexaMD->procsInUse, "HexaMD->_elementOffsets" );
-			for( proc_I = 0; proc_I < newHexaMD->procsInUse; proc_I++ ) {
-				newHexaMD->_elementOffsets[proc_I][0] = self->_elementOffsets[proc_I][0];
-				newHexaMD->_elementOffsets[proc_I][1] = self->_elementOffsets[proc_I][1];
-				newHexaMD->_elementOffsets[proc_I][2] = self->_elementOffsets[proc_I][2];
-			}
-		}
-	}
-	else {
-		newHexaMD->nodeLocal3DCounts = self->nodeLocal3DCounts;;
-		newHexaMD->_nodeOffsets = self->_nodeOffsets;
-		newHexaMD->elementLocal3DCounts = self->elementLocal3DCounts;
-		newHexaMD->_elementOffsets = self->_elementOffsets;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newHexaMD;
-}
-
-void _HexaMD_Construct( void* hexaMD, Stg_ComponentFactory *cf, void* data ) {
-	HexaMD *        self            = (HexaMD*)hexaMD;
-	ElementLayout*  elementLayout   = NULL;
-	NodeLayout*     nodeLayout      = NULL;
-	Stg_ObjectList* pointerRegister;
-	Index           numPartitionedDims = 1;
-
-	self->dictionary = cf->rootDict;
-	
-	elementLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  ElementLayout_Type, ElementLayout, True, data ) ;
-	nodeLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  NodeLayout_Type, NodeLayout,  True, data ) ;
-	numPartitionedDims = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "numPartitionedDims", 1 ); 
-	
-	pointerRegister = Stg_ObjectList_Get( cf->registerRegister, "Pointer_Register" );
-	_MeshDecomp_Init( (MeshDecomp*)self, MPI_COMM_WORLD, elementLayout, nodeLayout, pointerRegister );
-	_HexaMD_Init( self, numPartitionedDims );
-}
-	
-void _HexaMD_Build( void* hexaMD, void* data ){
-	HexaMD *        self            = (HexaMD*)hexaMD;
-
-	/* TODO _MeshDecomp_Build( self, data ); */
-	Build( self->elementLayout, self /* TODO - WHY IS ELEMENT LAYOUT EXPECTING DECOMP */, False );
-	Build( self->nodeLayout, data, False );
-}
-	
-void _HexaMD_Initialise( void* hexaMD, void* data ){
-	
-}
-	
-void _HexaMD_Execute( void* hexaMD, void* data ){
-	
-}
-
-Partition_Index _HexaMD_Shadow_ProcCount( void* hexaMD ) {
-	HexaMD* self = (HexaMD*)hexaMD;
-	
-	return self->procTopology->neighbourCount( self->procTopology, self->rank );
-}
-
-
-void _HexaMD_Shadow_BuildProcs( void* hexaMD, Partition_Index* procs ) {
-	HexaMD* self = (HexaMD*)hexaMD;
-	
-	self->procTopology->buildNeighbours( self->procTopology, self->rank, procs );
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-
-/* Find boundary elements */
-void _HexaMD_GetBoundarySet(
-		HexaMD*            self,
-		Processor_Index    proc_I,
-		IndexSet*          boundaryElementSet )
-{
-	IJK               min, max, ijk;
-	Dimension_Index   boundaryAxis, otherAxisA, otherAxisB, dim_I;
-
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		min[dim_I] = self->_elementOffsets[proc_I][dim_I];
-		max[dim_I] = self->_elementOffsets[proc_I][dim_I] + self->elementLocal3DCounts[proc_I][dim_I] - 1;
-	}
-	
-	/* Iterate through all the boundary elements, and add them to the element set. Have to go through the mix and
-	   max boundary for each axis, then add every element on that surface */ 
-	for ( boundaryAxis = I_AXIS; boundaryAxis < 3; boundaryAxis++ ) {	
-		otherAxisA = (boundaryAxis+1) % 3;
-		otherAxisB = (boundaryAxis+2) % 3;
-		
-		ijk[boundaryAxis] = min[boundaryAxis];
-		while ( ijk[boundaryAxis] <= max[boundaryAxis] ) {
-			for ( ijk[otherAxisA] = min[otherAxisA]; ijk[otherAxisA] <= max[otherAxisA]; ijk[otherAxisA]++ )
-			{
-				for ( ijk[otherAxisB] = min[otherAxisB]; ijk[otherAxisB] <= max[otherAxisB]; ijk[otherAxisB]++ )
-				{
-					IndexSet_Add( boundaryElementSet, ijk[2] * self->elementGlobal3DCounts[0] * 
-						self->elementGlobal3DCounts[1] + ijk[1] * 
-						self->elementGlobal3DCounts[0] + ijk[0] );
-				}
-			}	
-				
-			/* Necessary for 2D runs, where num elements in a dimension may be zero,
-			   or for thin decomps where the slice in a dim is 1 wide, therefore min = max */
-			if ( min[boundaryAxis] == max[boundaryAxis] ) break;
-
-			ijk[boundaryAxis] += self->elementLocal3DCounts[proc_I][boundaryAxis] - 1;
-		}
-	}
-}
-
-
-void _HexaMD_BuildShadowSets( HexaMD* self, Processor_Index procIndexToBuildFor ) {
-	Dimension_Index   shadowAxis;
-	int               lowerStartShadowRegions[3]; 
-	int               upperStartShadowRegions[3]; 
-	unsigned int      lowerAdjustedShadowDepth;
-	unsigned int      upperAdjustedShadowDepth;
-	unsigned int      shadowRegionTotalWidth[3];
-	Stream*           debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-	Index             shadowElementsFoundCount = 0;
-	Index             shadowNodesFoundCount = 0;
-	IJK               currProcMin, currProcMax;
-	Dimension_Index   dim_I;
-	Stream*           error = Journal_Register( Error_Type, self->type );
-	Processor_Index   proc_I = 0;
-
-	Journal_DPrintfL( debug, 1, "In %s(): calculating shadow elements & nodes for processor %d, shadow depth=%d:\n",
-		__func__, procIndexToBuildFor, self->shadowDepth );
-	Stream_Indent( debug );	
-
-	Journal_Firewall( self->shadowDepth > 0, error, "Error: %s() called when shadow depth set to 0.\n",
-		__func__ );
-
-	Journal_Firewall( self->nproc > 1, error, "Error: %s() called when number of processors is 1.\n",
-		__func__ );
-	
-	/* If the shadow set arrays have not yet been allocated, do it now */
-	if( !self->shadowElementSets ) {
-		self->shadowElementSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "MeshDecomp->shadowElementSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			self->shadowElementSets[proc_I] = NULL;
-	}
-	
-	if( !self->shadowNodeSets ) {
-		self->shadowNodeSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "MeshDecomp->shadowNodeSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			self->shadowNodeSets[proc_I] = NULL;
-	}
-	
-	/* If the IndexSets for this proc have not been constructed, do it now */
-	if( !self->shadowElementSets[procIndexToBuildFor] )
-		self->shadowElementSets[procIndexToBuildFor] = IndexSet_New( self->elementGlobalCount );
-	
-	if( !self->shadowNodeSets[procIndexToBuildFor] )
-		self->shadowNodeSets[procIndexToBuildFor] = IndexSet_New( self->nodeGlobalCount );
-
-	Journal_DPrintfL( debug, 2, "calculating shadow elements:\n", shadowAxis );
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		currProcMin[dim_I] = self->_elementOffsets[procIndexToBuildFor][dim_I];
-		currProcMax[dim_I] = self->_elementOffsets[procIndexToBuildFor][dim_I] +
-			self->elementLocal3DCounts[procIndexToBuildFor][dim_I] - 1;
-	}
-	Stream_Indent( debug );
-	shadowElementsFoundCount = 0;
-	for ( shadowAxis = I_AXIS; shadowAxis < 3; shadowAxis++ ) {	
-
-		lowerStartShadowRegions[shadowAxis] = currProcMin[shadowAxis];
-		upperStartShadowRegions[shadowAxis] = currProcMin[shadowAxis];
-		shadowRegionTotalWidth[shadowAxis] = 0;
-
-		if ( False == self->partitionedAxis[shadowAxis] ) continue;
-	
-		/* Calculate shadow elements on the lower end of the partitioned axis */
-		Journal_DPrintfL( debug, 2, "calculating lower shadow elements for Axis %d:\n", shadowAxis );
-		_HexaMD_CalculateLowerShadowStartAndEnd( self, shadowAxis, ELEMENT_ITEM_TYPE,
-			currProcMin[shadowAxis], self->elementGlobal3DCounts[shadowAxis],
-			&lowerStartShadowRegions[shadowAxis], &lowerAdjustedShadowDepth );
-
-		shadowElementsFoundCount += _HexaMD_AddItemsInSliceToSet( self, shadowAxis,
-			lowerStartShadowRegions[shadowAxis], lowerAdjustedShadowDepth,
-			currProcMin, currProcMax, self->elementGlobal3DCounts,
-			self->shadowElementSets[procIndexToBuildFor] );
-
-		/* Calculate shadow elements on the upper end of the partitioned axis */
-		Journal_DPrintfL( debug, 2, "calculating upper shadow elements for Axis %d:\n", shadowAxis );
-		_HexaMD_CalculateUpperShadowStartAndEnd( self, shadowAxis, ELEMENT_ITEM_TYPE,
-			currProcMax[shadowAxis], self->elementGlobal3DCounts[shadowAxis],
-			&upperStartShadowRegions[shadowAxis], &upperAdjustedShadowDepth );
-
-		shadowElementsFoundCount += _HexaMD_AddItemsInSliceToSet( self, shadowAxis,
-			upperStartShadowRegions[shadowAxis], upperAdjustedShadowDepth,
-			currProcMin, currProcMax, self->elementGlobal3DCounts,
-			self->shadowElementSets[procIndexToBuildFor] );
-
-		shadowRegionTotalWidth[shadowAxis] = lowerAdjustedShadowDepth + upperAdjustedShadowDepth;  
-	}	
-
-	if ( self->numPartitionedDims > 1 ) {
-		/* now add the corner elements in case this is a 2D decomp */
-		Journal_DPrintfL( debug, 2, "calculating corner shadow elements:\n" );
-		shadowElementsFoundCount += _HexaMD_AddItemsInBlockCornersOutsideInnerBlockToSet( 
-			self, lowerStartShadowRegions, shadowRegionTotalWidth,
-			currProcMin, currProcMax, self->elementGlobal3DCounts,
-			self->shadowElementSets[procIndexToBuildFor] );
-	}
-
-	Stream_UnIndent( debug );
-
-	Journal_DPrintfL( debug, 1, "%s(): calculated there were %d shadow elements for processor %d:\n",
-		__func__, shadowElementsFoundCount, procIndexToBuildFor );
-
-	
-	Journal_DPrintfL( debug, 2, "calculating shadow nodes:\n", shadowAxis );
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		currProcMin[dim_I] = self->_nodeOffsets[procIndexToBuildFor][dim_I];
-		currProcMax[dim_I] = self->_nodeOffsets[procIndexToBuildFor][dim_I] +
-			self->nodeLocal3DCounts[procIndexToBuildFor][dim_I] - 1;
-	}
-	Stream_Indent( debug );
-	shadowNodesFoundCount = 0;
-	for ( shadowAxis = I_AXIS; shadowAxis < 3; shadowAxis++ ) {	
-
-		if ( False == self->partitionedAxis[shadowAxis] ) continue;
-	
-		/* Calculate shadow nodes on the lower end of the partitioned axis */
-		Journal_DPrintfL( debug, 2, "calculating lower shadow nodes in Axis %d:\n", shadowAxis );
-		_HexaMD_CalculateLowerShadowStartAndEnd( self, shadowAxis, NODE_ITEM_TYPE,
-			currProcMin[shadowAxis], self->nodeGlobal3DCounts[shadowAxis],
-			&lowerStartShadowRegions[shadowAxis], &lowerAdjustedShadowDepth );
-
-		shadowNodesFoundCount += _HexaMD_AddItemsInSliceToSet( self, shadowAxis,
-			lowerStartShadowRegions[shadowAxis], lowerAdjustedShadowDepth, currProcMin, currProcMax,
-			self->nodeGlobal3DCounts, self->shadowNodeSets[procIndexToBuildFor] );
-		
-		/* Calculate shadow nodes on the upper end of the partitioned axis */
-		Journal_DPrintfL( debug, 2, "calculating upper shadow nodes in Axis %d:\n", shadowAxis );
-		_HexaMD_CalculateUpperShadowStartAndEnd( self, shadowAxis, NODE_ITEM_TYPE,
-			currProcMax[shadowAxis], self->nodeGlobal3DCounts[shadowAxis],
-			&upperStartShadowRegions[shadowAxis], &upperAdjustedShadowDepth );
-
-		shadowNodesFoundCount += _HexaMD_AddItemsInSliceToSet( self, shadowAxis,
-			upperStartShadowRegions[shadowAxis], upperAdjustedShadowDepth, currProcMin, currProcMax,
-			self->nodeGlobal3DCounts, self->shadowNodeSets[procIndexToBuildFor] );
-
-		shadowRegionTotalWidth[shadowAxis] = lowerAdjustedShadowDepth + upperAdjustedShadowDepth;  
-	}	
-
-	if ( self->numPartitionedDims > 1 ) {
-		/* now add the corner nodes in case this is a 2D decomp */
-		Journal_DPrintfL( debug, 2, "calculating corner shadow nodes:\n" );
-		shadowNodesFoundCount += _HexaMD_AddItemsInBlockCornersOutsideInnerBlockToSet( 
-			self, lowerStartShadowRegions, shadowRegionTotalWidth,
-			currProcMin, currProcMax, self->nodeGlobal3DCounts,
-			self->shadowNodeSets[procIndexToBuildFor] );
-	}
-
-	Stream_UnIndent( debug );
-
-	Journal_DPrintfL( debug, 1, "%s(): calculated there were %d shadow nodes for processor %d:\n",
-		__func__, shadowNodesFoundCount, procIndexToBuildFor );
-
-	Stream_UnIndent( debug );	
-}
-
-
-/* Selecting start and end of lower shadow region, taking into account periodicity */
-void _HexaMD_CalculateLowerShadowStartAndEnd(
-		HexaMD*         self,
-		Dimension_Index shadowAxis,
-		MeshItemType    itemType,
-		GlobalIndex     currProcMinInShadowAxis,
-		GlobalIndex     globalCountInShadowAxis,            
-		int*            startIndexInShadowAxis,
-		Index*          adjustedShadowDepth )
-{	
-	Stream*           debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-
-	/* Can safely refer to elementLayout's periodicity since both nodes & elements must be the same periodicity */
-	if ( False == ((IJKTopology*)self->elementLayout->topology)->isPeriodic[shadowAxis] ) {
-		/* If not periodic, we have to truncate shadow depth if it crosses the global zero element */
-		(*startIndexInShadowAxis) = currProcMinInShadowAxis - self->shadowDepth;
-		if ( (*startIndexInShadowAxis) < 0 ) {
-			(*startIndexInShadowAxis) = 0;
-		}
-		
-		(*adjustedShadowDepth) = currProcMinInShadowAxis - (*startIndexInShadowAxis);
-		Journal_DPrintfL( debug, 2, "Not periodic -> start at index %d, go for %d\n",
-			(*startIndexInShadowAxis), (*adjustedShadowDepth) );
-	}
-	else {	/* Periodic elements in decomp dim */
-		/* When periodic, wrap around the start to the other end */
-		(*startIndexInShadowAxis) = currProcMinInShadowAxis - self->shadowDepth;
-		(*adjustedShadowDepth) = self->shadowDepth;
-
-		if ( (*startIndexInShadowAxis) < 0 ) {
-
-			(*startIndexInShadowAxis) += globalCountInShadowAxis;
-
-			if ( (itemType == NODE_ITEM_TYPE) && (self->nodeLayout->type == CornerNL_Type ) ) {
-				/* If we are going to hit a period boundary, and are on nodes, need to add one to depth */
-				(*startIndexInShadowAxis) -= 1;
-				(*adjustedShadowDepth) += 1;
-			}	
-
-			// TODO
-			/* Need to check if shadow depth is so high that we've wrapped around into
-			   our own element/node space */
-			/*   
-			if ( (*startIndexInShadowAxis) <= currProcMaxInShadowAxis ) {
-				(*startIndexIn 
-				// TODO: print warning
-			}
-			*/
-		}
-
-		Journal_DPrintfL( debug, 2, "periodic -> start at index %d, go for %d\n", 
-			(*startIndexInShadowAxis), (*adjustedShadowDepth) );
-	}
-}	
-
-
-/* Selecting start and end of upper shadow region, taking into account periodicity */
-void _HexaMD_CalculateUpperShadowStartAndEnd(
-		HexaMD*         self,
-		Dimension_Index shadowAxis,
-		MeshItemType    itemType,
-		GlobalIndex     currProcMaxInShadowAxis,
-		GlobalIndex     globalCountInShadowAxis,            
-		int*            startIndexInShadowAxis,
-		Index*          adjustedShadowDepth )
-{	
-	Stream*           debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-
-
-	/* Selecting start and end of upper shadow region, taking into account periodicity */
-	if ( False == ((IJKTopology*)self->elementLayout->topology)->isPeriodic[shadowAxis] ) {
-		/* If not periodic, we have to truncate shadow depth if it crosses the global max element */
-		(*startIndexInShadowAxis) = currProcMaxInShadowAxis + 1;
-
-		(*adjustedShadowDepth) = self->shadowDepth;
-		if ( (currProcMaxInShadowAxis + self->shadowDepth) >= globalCountInShadowAxis ) {
-			/* truncate */
-			(*adjustedShadowDepth) = globalCountInShadowAxis - (*startIndexInShadowAxis);
-		}
-		
-		Journal_DPrintfL( debug, 2, "Not periodic -> start at index %d, go for %d\n",
-			(*startIndexInShadowAxis), (*adjustedShadowDepth) );
-	}
-	else {	/* Periodic elements in decomp dim */
-		(*startIndexInShadowAxis) = currProcMaxInShadowAxis + 1;
-		/* In case this is the last processor: need to wrap the start */
-		(*startIndexInShadowAxis) = (*startIndexInShadowAxis) % (int)globalCountInShadowAxis;
-
-		(*adjustedShadowDepth) = self->shadowDepth;
-		if ( (currProcMaxInShadowAxis + self->shadowDepth) >= globalCountInShadowAxis ) {
-			/* For periodic corner nodes, need to add an extra one to get the right element shadow depth */
-			if ( (itemType == NODE_ITEM_TYPE) && (self->nodeLayout->type == CornerNL_Type ) ) {
-				(*adjustedShadowDepth) += 1;
-			}
-		}
-
-		Journal_DPrintfL( debug, 2, "periodic -> start at index %d, go for %d\n", 
-			(*startIndexInShadowAxis), (*adjustedShadowDepth) );
-	}
-}
-
-
-GlobalIndex _HexaMD_AddItemsInBlockCornersOutsideInnerBlockToSet( 
-		HexaMD*         self,
-		IJK             outerBlockMin,
-		IJK             outerBlockCounts,
-		IJK             innerBlockMin,
-		IJK             innerBlockMax,
-		IJK             itemGlobal3DCounts,   
-		IndexSet*       itemSet )
-{	
-	IJK                  ijk;
-	Index                block_I[3];
-	Index                itemsFoundInCornersCount = 0;
-	Stream*              debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-	Dimension_Index      dim_I, axisA, axisB, internalAxis;
-	GlobalIndex          gItem_I;
-
-	Journal_DPrintfL( debug, 3, "In %s(): Filling in corner element/nodes around block (%d,%d,%d) - (%d,%d,%d)\n",
-		__func__, innerBlockMin[0], innerBlockMin[1], innerBlockMin[2],
-		innerBlockMax[0], innerBlockMax[1], innerBlockMax[2] );
-
-	Stream_Indent( debug );
-
-	/* We have to deal with the potentially 8 blocks of 2D corners where one axis is still internal to the 
-	   inner block first */
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		axisA = dim_I;
-		axisB = (dim_I+1) % 3;
-		internalAxis = (dim_I+2) % 3;
-
-		Journal_DPrintfL( debug, 3, "Filling 2D side corners items in the %c,%c planes around block\n",
-			IJKTopology_DimNumToDimLetter[axisA], IJKTopology_DimNumToDimLetter[axisB] );
-
-		memcpy( ijk, outerBlockMin, sizeof(IJK) );
-
-		Stream_Indent( debug );
-		for ( ijk[internalAxis] = innerBlockMin[internalAxis]; ijk[internalAxis] <= innerBlockMax[internalAxis]; ijk[internalAxis]++ ) {
-			ijk[axisB] = outerBlockMin[axisB];
-
-			for ( block_I[axisB] = 0; block_I[axisB] < outerBlockCounts[axisB]; block_I[axisB]++ ) {
-				if ( ijk[axisB] == innerBlockMin[axisB] ) {
-					/* Fast-forward to end of inner block */
-					ijk[axisB] = innerBlockMax[axisB] + 1;
-				}
-				ijk[axisB] = ijk[axisB] % itemGlobal3DCounts[axisB];
-
-				ijk[axisA] = outerBlockMin[axisA];
-				
-				for ( block_I[axisA] = 0; block_I[axisA] < outerBlockCounts[axisA]; block_I[axisA]++ ) {
-					if ( ijk[axisA] == innerBlockMin[axisA] ) {
-						/* Fast-forward to end of inner block */
-						ijk[axisA] = innerBlockMax[axisA] + 1;
-					}
-					ijk[axisA] = ijk[axisA] % itemGlobal3DCounts[axisA];
-
-					/* Convert ijk to global item, and add */
-					gItem_I = ijk[2] * itemGlobal3DCounts[0] * itemGlobal3DCounts[1]
-						+ ijk[1] * itemGlobal3DCounts[0]
-						+ ijk[0];
-					Journal_DPrintfL( debug, 3, "Adding 2D corner element/node at global index (%d,%d,%d) -> %d\n",
-						ijk[0], ijk[1], ijk[2], gItem_I );
-					IndexSet_Add( itemSet, gItem_I );
-					itemsFoundInCornersCount++;	
-
-					ijk[axisA]++;
-				}	
-				ijk[axisB]++;
-			}
-		}
-		Stream_UnIndent( debug );
-	}	
-
-	Journal_DPrintfL( debug, 3, "Filling 3D corners items\n" );
-
-	Stream_Indent( debug );
-	memcpy( ijk, outerBlockMin, sizeof(IJK) );
-	for ( block_I[K_AXIS] = 0; block_I[K_AXIS] < outerBlockCounts[K_AXIS]; block_I[K_AXIS]++ ) {
-		if ( ijk[K_AXIS] == innerBlockMin[K_AXIS] ) {
-			/* Fast-forward to end of inner block */
-			ijk[K_AXIS] = innerBlockMax[K_AXIS] + 1;
-		}
-		ijk[K_AXIS] = ijk[K_AXIS] % itemGlobal3DCounts[K_AXIS];
-
-		ijk[J_AXIS] = outerBlockMin[J_AXIS];
-
-		for ( block_I[J_AXIS] = 0; block_I[J_AXIS] < outerBlockCounts[J_AXIS]; block_I[J_AXIS]++ ) {
-			if ( ijk[J_AXIS] == innerBlockMin[J_AXIS] ) {
-				/* Fast-forward to end of inner block */
-				ijk[J_AXIS] = innerBlockMax[J_AXIS] + 1;
-			}
-			ijk[J_AXIS] = ijk[J_AXIS] % itemGlobal3DCounts[J_AXIS];
-
-			ijk[I_AXIS] = outerBlockMin[I_AXIS];
-		
-			for ( block_I[I_AXIS] = 0; block_I[I_AXIS] < outerBlockCounts[I_AXIS]; block_I[I_AXIS]++ ) {
-				if ( ijk[I_AXIS] == innerBlockMin[I_AXIS] ) {
-					/* Fast-forward to end of inner block */
-					ijk[I_AXIS] = innerBlockMax[I_AXIS] + 1;
-				}
-				ijk[I_AXIS] = ijk[I_AXIS] % itemGlobal3DCounts[I_AXIS];
-
-				/* Convert ijk to global item, and add */
-				gItem_I = ijk[2] * itemGlobal3DCounts[0] * itemGlobal3DCounts[1]
-					+ ijk[1] * itemGlobal3DCounts[0]
-					+ ijk[0];
-				Journal_DPrintfL( debug, 3, "Adding 3D corner element/node at global index (%d,%d,%d) -> %d\n",
-					ijk[0], ijk[1], ijk[2], gItem_I );
-				IndexSet_Add( itemSet, gItem_I );
-				itemsFoundInCornersCount++;	
-				ijk[I_AXIS]++;
-			}
-			ijk[J_AXIS]++;
-		}
-
-		ijk[K_AXIS]++;
-	}
-	Stream_UnIndent( debug );
-	Stream_UnIndent( debug );
-
-	return itemsFoundInCornersCount;
-}
-
-
-GlobalIndex  _HexaMD_AddItemsInSliceToSet(
-		HexaMD*         self,
-		Dimension_Index sliceAxis,
-		Index           startOfRange,
-		Index           widthOfSlice,
-		IJK             otherAxisMinimums,
-		IJK             otherAxisMaximums,
-		IJK             itemGlobal3DCounts,   
-		IndexSet*       itemSet )
-{	
-	Stream*              debug = Journal_Register( DebugStream_Type, HexaMD_Type );
-	Index                sliceWidth_I;
-	IJK                  ijk;
-	Dimension_Index      otherAxisA, otherAxisB;
-	GlobalIndex          gItem_I;
-	Index                itemsFoundInSliceCount = 0;
-
-	otherAxisA = (sliceAxis+1) % 3;
-	otherAxisB = (sliceAxis+2) % 3;
-		
-	ijk[sliceAxis] = startOfRange;
-
-	Stream_Indent( debug );
-	for ( sliceWidth_I=0; sliceWidth_I < widthOfSlice; sliceWidth_I++ ) {
-		/* to handle when periodic, check if we have flipped from upper->lower end */
-		ijk[sliceAxis] = ijk[sliceAxis] % itemGlobal3DCounts[sliceAxis];
-		
-		for ( ijk[otherAxisB] = otherAxisMinimums[otherAxisB]; ijk[otherAxisB] <= otherAxisMaximums[otherAxisB]; ijk[otherAxisB]++ )
-		{
-			for ( ijk[otherAxisA] = otherAxisMinimums[otherAxisA]; ijk[otherAxisA] <= otherAxisMaximums[otherAxisA]; ijk[otherAxisA]++ )
-			{
-				gItem_I = ijk[2] * itemGlobal3DCounts[0] * itemGlobal3DCounts[1]
-					+ ijk[1] * itemGlobal3DCounts[0]
-					+ ijk[0];
-				Journal_DPrintfL( debug, 3, "Adding element/node at global index (%d,%d,%d) -> %d\n",
-					ijk[0], ijk[1], ijk[2], gItem_I );
-				IndexSet_Add( itemSet, gItem_I );
-				itemsFoundInSliceCount++;	
-			}
-		}	
-		(ijk[sliceAxis])++;
-	}
-	Stream_UnIndent( debug );
-
-	return itemsFoundInSliceCount;
-}
-
-
-void _HexaMD_DecomposeDimension(
-		HexaMD*				self,
-		Element_GlobalIndex		numElementsThisDim,
-		Partition_Index			procCount,
-		Element_LocalIndex*		localElementCounts,
-		Element_LocalIndex*		localElementOffsets )
-{
-	Partition_Index		procCountToUse = procCount;
-	Partition_Index		proc_I;
-	Partition_Index		div;
-	Partition_Index		rem;
-	Index				offsetIncrement;
-	
-	/* We need at least one processor */
-	assert( procCount );
-	
-	/* Clear values to zero */
-	for( proc_I = 0; proc_I < procCount; proc_I++ ) {
-		localElementCounts[proc_I] = 0;
-		localElementOffsets[proc_I] = 0;
-	}
-	
-	if( self->allowUnbalancing ) {
-		/* prefer partition on node */
-		if( self->allowPartitionOnNode ) {
-			
-			div = numElementsThisDim / procCount;
-			rem = numElementsThisDim % procCount;
-			if( !div ) {
-				assert( self->allowUnusedCPUs );
-				procCountToUse = rem;
-			}
-		}
-		else if( self->allowPartitionOnElement ) {
-			Element_GlobalIndex     ae;
-			
-			procCountToUse = (numElementsThisDim + 1) / 2;
-			if( procCountToUse > procCount ) {
-				procCountToUse = procCount;
-			}	
-			else if( procCountToUse < procCount )
-				assert( self->allowUnusedCPUs );
-			
-			ae = numElementsThisDim - procCountToUse + 1;
-			
-			div = ae / procCountToUse;
-			rem = ae % procCountToUse;
-			
-			for( proc_I = 1; proc_I < procCount; proc_I++ )
-				localElementOffsets[proc_I] = proc_I;
-		}
-	}
-	else {
-		/* Ok, so unbalanced numbers of elements aren't allowed.
-		Go through trying to find an even division partitioned on nodes or
-		elements, progressively reducing the procs to use if allowed to. */
-		do {
-			if( self->allowPartitionOnNode ) {
-				rem = numElementsThisDim % procCountToUse;
-				if( 0 == rem ) {
-					div = numElementsThisDim / procCountToUse;
-					break;
-				}
-			}
-			
-			if( self->allowPartitionOnElement &&
-				(procCountToUse <= ((numElementsThisDim + 1) / 2)) ) {
-				Element_GlobalIndex     ae = numElementsThisDim - procCountToUse + 1;
-				
-				rem = ae % procCountToUse;
-				if( 0 == rem ) {
-					div = ae / procCountToUse;
-					
-					for( proc_I = 1; proc_I < procCount; proc_I++ )
-						localElementOffsets[proc_I] = proc_I;
-					
-					break;
-				}
-			}
-			else {
-				assert( self->allowUnusedCPUs );
-				--procCountToUse;
-				assert( procCountToUse );
-			}
-		}
-		while( True );
-	}
-	
-	/* Now we work out the initial local sizes and offsets */
-	for( proc_I = 0; proc_I < procCountToUse; proc_I++ ) {
-		localElementCounts[proc_I] = div;
-		localElementOffsets[proc_I] += proc_I * div;
-	}
-	
-	/* If there was a remainder, we now need to update the sizes and offsets */
-	if ( rem != 0 ) {
-		/* only the first 'rem' processors have their size increased to take up
-		the remainder */
-		for( proc_I = 0; proc_I < rem; proc_I++ )
-			localElementCounts[proc_I]++;
-
-		/* Now we update the offsets - this is a little tricky ... each time
-		a size was increased, we need to increase the _offset to add_ to the
-		existing offset of every subsequent processor by 1 */
-		offsetIncrement = 1;
-		for( proc_I = 1; proc_I < procCountToUse; proc_I++ ) {
-			localElementOffsets[proc_I] += offsetIncrement;
-			
-			if (offsetIncrement < rem ) {
-				offsetIncrement++;
-			}	
-		
-		}	
-	}
-}
-
-
-void _HexaMD_CalculateDomain3DCounts( HexaMD* self )
-{
-	Dimension_Index		dim_I = 0;
-	Processor_Index		myRank = self->rank;
-
-	if ( myRank < self->procsInUse ) {	
-		for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-			self->elementDomain3DCounts[dim_I] = self->elementLocal3DCounts[myRank][dim_I];
-		}
-
-		if ( self->elementShadowCount > 0 ) {
-			for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-				if ( self->_elementOffsets[myRank][dim_I] != 0
-					|| (((IJKTopology*)self->procTopology)->isPeriodic[dim_I] ) )
-				{	
-					self->elementDomain3DCounts[dim_I] += self->shadowDepth;
-				}
-				if ( self->_elementOffsets[myRank][dim_I] + self->elementLocal3DCounts[myRank][dim_I] != self->elementGlobal3DCounts[dim_I]
-					|| (((IJKTopology*)self->procTopology)->isPeriodic[dim_I] ) )
-				{	
-					self->elementDomain3DCounts[dim_I] += self->shadowDepth;
-				}	
-			}
-		}
-	}	
-	else {
-		for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-			self->elementDomain3DCounts[dim_I] = 0;
-		}	
-	}		
-}
-
-
-void _HexaMD_Destroy( HexaMD* self, void *data ) {
-	if( self->elementLocal3DCounts )
-		Memory_Free( self->elementLocal3DCounts );
-	
-	if( self->_elementOffsets )
-		Memory_Free( self->_elementOffsets );
-	
-	if( self->nodeLocal3DCounts )
-		Memory_Free( self->nodeLocal3DCounts );
-	
-	if( self->_nodeOffsets )
-		Memory_Free( self->_nodeOffsets );
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,284 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_HexaMD_h__
-#define __Discretisaton_Mesh_HexaMD_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type HexaMD_Type;
-
-	/* HexaMD information */
-	#define __HexaMD \
-		/* General info */ \
-		__MeshDecomp \
-		\
-		/* Virtual info */ \
-		\
-		/* HexaMD info ... */ \
-		Index				numPartitionedDims; \
-		Bool				partitionedAxis[3]; \
-		Partition_IJK			partition3DCounts; \
-		\
-		Node_GlobalIJK			nodeGlobal3DCounts; \
-		Node_LocalIJK*			nodeLocal3DCounts; \
-		Node_GlobalIJK*			_nodeOffsets; \
-		\
-		Element_GlobalIJK		elementGlobal3DCounts; \
-		Element_LocalIJK*		elementLocal3DCounts; \
-		Element_DomainIJK		elementDomain3DCounts; \
-		Element_GlobalIJK*		_elementOffsets;
-
-	struct _HexaMD { __HexaMD };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	#define HexaMD_New( name, dictionary, communicator, eLayout, nLayout ) \
-		HexaMD_New_All( name, dictionary, communicator, eLayout, nLayout, 1 )
-
-	/* Create a HexaMD */
-	
-	/* Create a HexaMD */
-	HexaMD* HexaMD_DefaultNew( Name name );
-	
-	HexaMD* HexaMD_New_All(
-		Name							name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout,
-		unsigned char					numPartitionedDims );
-	
-	/* Initialise a HexaMD */
-	void HexaMD_Init(
-		HexaMD*						self,
-		Name							name,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nLayout,
-		unsigned char					numPartitionedDims );
-
-	/* Creation implementation */
-	HexaMD* _HexaMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					eLayout,
-		NodeLayout*					nlayout,
-		unsigned char					numPartitionedDims );
-
-	/* Initialisation implementation functions */
-	void _HexaMD_Init(
-		HexaMD*						self,
-		unsigned char					numPartitionedDims );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete HexaMD implementation */
-	void _HexaMD_Delete( void* hexaMD );
-	
-	/* Print HexaMD implementation */
-	void _HexaMD_Print( void* hexaMD, Stream* stream );
-	
-	/* Copy */
-	#define HexaMD_Copy( self ) \
-		(HexaMD*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define HexaMD_DeepCopy( self ) \
-		(HexaMD*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _HexaMD_Copy( void* hexaMD, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	void _HexaMD_Construct( void* hexaMD, Stg_ComponentFactory *cf, void* data );
-	
-	void _HexaMD_Build( void* hexaMD, void* data );
-	
-	void _HexaMD_Initialise( void* hexaMD, void* data );
-	
-	void _HexaMD_Execute( void* hexaMD, void* data );
-
-	Partition_Index _HexaMD_Shadow_ProcCount( void* hexaMD );
-	
-	void _HexaMD_Shadow_BuildProcs( void* hexaMD, Partition_Index* procs );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	/** Function to calculate the set of Boundary elements of a given processor. The element
-	    set given must be of size element global count */
-	void _HexaMD_GetBoundarySet(
-		HexaMD*            self,
-		Processor_Index    proc_I,
-		IndexSet*          boundaryElementSet );	    
-	
-	/** Function to calculate the shadow elements of a processor. Works for cases of shadow
-		depth > 1 */
-	void _HexaMD_BuildShadowSets( HexaMD* self, Processor_Index proc_I );
-	
-
-	/** Calculates the start and end of the lower shadow region in a given axis, taking into account periodicity.
-		can be re-used for both nodes and elements by passing the appropriate parameters. */
-	void _HexaMD_CalculateLowerShadowStartAndEnd(
-		HexaMD*         self,
-		Dimension_Index shadowAxis,
-		MeshItemType    itemType,
-		GlobalIndex     currProcMinInShadowAxis,
-		GlobalIndex     globalCountInShadowAxis,            
-		int*            startIndexInShadowAxis, /* needs to be an int rather than unsigned since it may be < zero in 
-							* calcs */
-		Index*          adjustedShadowDepth );
-
-	/** Selecting start and end of upper shadow region, taking into account periodicity */
-	void _HexaMD_CalculateUpperShadowStartAndEnd(
-		HexaMD*         self,
-		Dimension_Index shadowAxis,
-		MeshItemType    itemType,
-		GlobalIndex     currProcMaxInShadowAxis,
-		GlobalIndex     globalCountInShadowAxis,            
-		int*            startIndexInShadowAxis,
-		Index*          adjustedShadowDepth );
-
-	/** Fills the "corners" around a 2D or 3D block - used as part of setting up shadow nodes if more than
-		one decomp dimension. Automatically handles periodicity in the outer block. */
-	GlobalIndex _HexaMD_AddItemsInBlockCornersOutsideInnerBlockToSet( 
-		HexaMD*         self,
-		IJK             outerBlockMin,
-		IJK             outerBlockCounts,
-		IJK             innerBlockMin,
-		IJK             innerBlockMax,
-		IJK             itemGlobal3DCounts,   
-		IndexSet*       itemSet );
-
-	/** Utility function to fill an IndexSet representing global element/node indices with 1s for all
-	     element/nodes that live inside a slice for a particular dimension. Slices can handle periodic meshes
-	     	\param self HexaMD object
-		\param sliceAxis the primary axis you wish to slice along
-		\param startOfRange where the slice should start 
-		\param widthOfSlice how wide the slice should be
-		\param otherAxisMinimums IJK object containing the 3D coords of where the other parts of the slice start
-			in the mesh
-		\param otherAxisMaximums IJK object specifying where the other Axis end in space
-		\param itemGlobal3DCounts 3D Count of global max in each dim
-		\param itemSet the IndexSet to store the results in. */
-	GlobalIndex  _HexaMD_AddItemsInSliceToSet(
-		HexaMD*         self,
-		Dimension_Index sliceAxis,
-		Index           startOfRange,
-		Index           widthOfSlice,
-		IJK             otherAxisMinimums,
-		IJK             otherAxisMaximums,
-		IJK             itemGlobal3DCounts,   
-		IndexSet*       itemSet );
-
-	/** Decomposes the elements in a particular dimension, given the
-	size of the partition and the number of processors available.
-	
-	If the number of processors doesn't divide evenly into the number of
-	elements in the dimension to be decomposed on; the following occurs:
-
-	If HexaMD::allowUnbalancing is True, then the remaining nodes will
-	be distributed among the first few processors.
-
-	If HexaMD::allowUnbalancing is False, then if and only if 
-	HexaMD::allowUnusedCPUs is True, the number of processors
-	to be used will be reduced until the division is even. Otherwise, an
-	assert() and exit will occur.
-
-	In either of the above 2 cases, the default behaviour is to decompose
-	on nodes. Only if this is disallowed, or in the balanced case where
-	the node partition is uneven, will partition on elements be used.
-
-	TODO: Allow partition on node in the unbalanced case causes problems
-	later on - not sure if it's a problem with this code or the
-	way it's interpreted later.
-	*/
-	void _HexaMD_DecomposeDimension(
-		HexaMD*				self,
-		Element_GlobalIndex		numElementsThisDim,
-		Partition_Index			procCount,
-		Element_LocalIndex*		localElementCounts,
-		Element_LocalIndex*		localElementOffsets );
-	
-	void _HexaMD_CalculateDomain3DCounts( HexaMD* self );
-	
-	void _HexaMD_Destroy( HexaMD* self, void *data );
-	
-#endif /* __Discretisaton_Mesh_HexaMD_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/HexaMD.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">HexaMD</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">MeshDecomp</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">ElementLayout</param>
-		<param name="Type">ElementLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 1197 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">NodeLayout</param>
-		<param name="Type">NodeLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 1198 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,83 +28,45 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
 #include <mpi.h>
 #include "Base/Base.h"
 
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "Init.h"
-
-#include "MeshClass.h"
-#include "MeshLayout.h"
-#include "MeshDecomp.h"
-#include "HexaMD.h"
-#include "DummyMD.h"
-#include "NodeLayout.h"
-#include "BodyNL.h"
-#include "CornerNL.h"
-#include "ElementLayout.h"
-#include "HexaEL.h"
-#include "IrregEL.h"
-#include "ParallelPipedHexaEL.h"
-#include "MeshGeometry.h"
 #include "Mesh.h"
-#include <stdio.h>
 
+
 Stream* Mesh_VerboseConfig = NULL;
 Stream* Mesh_Debug = NULL;
 Stream* Mesh_Warning = NULL;
 Stream* Mesh_Error = NULL;
 
+
 Bool DiscretisationMesh_Init( int* argc, char** argv[] ) {
 	Mesh_VerboseConfig = Journal_Register( Info_Type, "Mesh_VerboseConfig" );
 	Mesh_Debug = Journal_Register( Debug_Type, "Mesh" );
 	Mesh_Warning = Journal_Register( Error_Type, "Mesh" );
 	Mesh_Error = Journal_Register( Error_Type, "Mesh" );
-	
+
 	Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */
 
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
+				   Mesh_Algorithms_Type, "0", (Stg_Component_DefaultConstructorFunction*)Mesh_Algorithms_New );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
 				   MeshTopology_Type, "0", (Stg_Component_DefaultConstructorFunction*)MeshTopology_New );
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
 				   CartesianGenerator_Type, "0", (Stg_Component_DefaultConstructorFunction*)CartesianGenerator_New );
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
-				   SurfaceAdaptor_Type, "0", (Stg_Component_DefaultConstructorFunction*)SurfaceAdaptor_New );
-	
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), BodyNL_Type, "0", (Stg_Component_DefaultConstructorFunction*)BodyNL_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), CornerNL_Type, "0", (Stg_Component_DefaultConstructorFunction*)CornerNL_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), DummyMD_Type, "0", (Stg_Component_DefaultConstructorFunction*)DummyMD_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), HexaMD_Type, "0", (Stg_Component_DefaultConstructorFunction*)HexaMD_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), HexaEL_Type, "0", (Stg_Component_DefaultConstructorFunction*)HexaEL_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), IrregEL_Type, "0", (Stg_Component_DefaultConstructorFunction*)IrregEL_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ParallelPipedHexaEL_Type, "0", (Stg_Component_DefaultConstructorFunction*)ParallelPipedHexaEL_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), MeshGeometry_Type, "0", (Stg_Component_DefaultConstructorFunction*)MeshGeometry_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), Mesh_Type, "0", (Stg_Component_DefaultConstructorFunction*)Mesh_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), MeshLayout_Type, "0", (Stg_Component_DefaultConstructorFunction*)MeshLayout_DefaultNew );
+				   Mesh_Type, "0", (Stg_Component_DefaultConstructorFunction*)Mesh_New );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
+				   MeshVariable_Type, "0", (Stg_Component_DefaultConstructorFunction*)MeshVariable_New );
 
+	RegisterParent( Mesh_Algorithms_Type, Stg_Component_Type );
 	RegisterParent( MeshTopology_Type, Stg_Component_Type );
 	RegisterParent( CartesianGenerator_Type, MeshGenerator_Type );
-	RegisterParent( SurfaceAdaptor_Type, MeshAdaptor_Type );
+	RegisterParent( Mesh_Type, Stg_Component_Type );
+	RegisterParent( MeshVariable_Type, Variable_Type );
 
-	RegisterParent( NodeLayout_Type,          Stg_Component_Type );
-	RegisterParent( BodyNL_Type,              NodeLayout_Type );
-	RegisterParent( CornerNL_Type,            NodeLayout_Type );
-	
-	RegisterParent( MeshDecomp_Type,          Stg_Component_Type );
-	RegisterParent( DummyMD_Type,             MeshDecomp_Type );
-	RegisterParent( HexaMD_Type,              MeshDecomp_Type );
-	
-	RegisterParent( ElementLayout_Type,       Stg_Component_Type );
-	RegisterParent( IrregEL_Type,             ElementLayout_Type );
-	RegisterParent( HexaEL_Type,              ElementLayout_Type );
-	RegisterParent( ParallelPipedHexaEL_Type, HexaEL_Type );
-	RegisterParent( MeshGeometry_Type,	  BlockGeometry_Type );
-	
-	RegisterParent( MeshLayout_Type,          Stg_Component_Type );
-	RegisterParent( Mesh_Type,                Stg_Component_Type );
-	
 	return True;
 }

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,523 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "IrregEL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <mpi.h>
-
-
-
-/* Textual name of this class */
-const Type IrregEL_Type = "IrregEL";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-IrregEL* IrregEL_DefaultNew( Name name )
-{
-	return (IrregEL*)_IrregEL_New( 
-		sizeof(IrregEL), 
-		IrregEL_Type, 
-		_IrregEL_Delete, 
-		_IrregEL_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)IrregEL_DefaultNew,
-		_IrregEL_Construct,
-		_IrregEL_ComponentBuild,
-		_IrregEL_Initialise,
-		_IrregEL_Execute,
-		_IrregEL_Destroy,
-		name,
-		False,
-		_ElementLayout_Build,
-		_IrregEL_BuildCornerIndices,
-		_IrregEL_CornerElementCount,
-		_IrregEL_BuildCornerElements,
-		_IrregEL_BuildEdgeIndices,
-		_IrregEL_EdgeElementCount,
-		_IrregEL_BuildEdgeElements,
-		_IrregEL_EdgeAt,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,		
-		_IrregEL_ElementWithPoint,
-		NULL,
-		NULL,
-		NULL,
-		NULL );
-}
-
-IrregEL* IrregEL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		Geometry*					geometry,
-		Topology*					topology,
-		Name						listKey )
-{
-	return _IrregEL_New( 
-		sizeof(IrregEL), 
-		IrregEL_Type, 
-		_IrregEL_Delete, 
-		_IrregEL_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)IrregEL_DefaultNew,
-		_IrregEL_Construct,
-		_IrregEL_ComponentBuild,
-		_IrregEL_Initialise,
-		_IrregEL_Execute,
-		_IrregEL_Destroy,
-		name,
-		True,
-		_ElementLayout_Build,
-		_IrregEL_BuildCornerIndices,
-		_IrregEL_CornerElementCount,
-		_IrregEL_BuildCornerElements,
-		_IrregEL_BuildEdgeIndices,
-		_IrregEL_EdgeElementCount,
-		_IrregEL_BuildEdgeElements,
-		_IrregEL_EdgeAt,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,
-		_ElementLayout_GetStaticMinAndMaxLocalCoords,		
-		_IrregEL_ElementWithPoint,
-		dictionary,
-		geometry,
-		topology,
-		listKey );
-}
-
-
-void IrregEL_Init(
-		IrregEL*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		Geometry*					geometry,
-		Topology*					topology,
-		Name						listKey )
-{
-	/* General info */
-	self->type = IrregEL_Type;
-	self->_sizeOfSelf = sizeof(IrregEL);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _IrregEL_Delete;
-	self->_print = _IrregEL_Print;
-	self->_copy = NULL;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)IrregEL_DefaultNew;
-	self->_construct = _IrregEL_Construct;
-	self->_build = _IrregEL_ComponentBuild;
-	self->_initialise = _IrregEL_Initialise;
-	self->_execute = _IrregEL_Execute;
-	self->_destroy = _IrregEL_Destroy;
-	self->build = _ElementLayout_Build;
-	self->buildCornerIndices = _IrregEL_BuildCornerIndices;
-	self->cornerElementCount = _IrregEL_CornerElementCount;
-	self->buildCornerElements = _IrregEL_BuildCornerElements;
-	self->buildEdgeIndices = _IrregEL_BuildEdgeIndices;
-	self->edgeElementCount = _IrregEL_EdgeElementCount;
-	self->buildEdgeElements = _IrregEL_BuildEdgeElements;
-	self->edgeAt = _IrregEL_EdgeAt;
-	self->getStaticMinAndMaxLocalCoords = _ElementLayout_GetStaticMinAndMaxLocalCoords;
-	self->getStaticMinAndMaxGlobalCoords = _ElementLayout_GetStaticMinAndMaxGlobalCoords;	
-	self->elementWithPoint = _IrregEL_ElementWithPoint;
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_ElementLayout_Init( (ElementLayout*)self, geometry, topology );
-	
-	/* IrregEL info */
-	_IrregEL_Init( self, listKey );
-}
-
-
-IrregEL* _IrregEL_New(
-		SizeT							_sizeOfSelf, 
-		Type							type,
-		Stg_Class_DeleteFunction*					_delete,
-		Stg_Class_PrintFunction*					_print,
-		Stg_Class_CopyFunction*					_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		ElementLayout_BuildFunction*  				build,		
-		ElementLayout_BuildCornerIndicesFunction*       	buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*       	cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*      	buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*			buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*			edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*		buildEdgeElements,
-		ElementLayout_EdgeAtFunction*				edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*	getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*	getStaticMinAndMaxGlobalCoords,				
-		ElementLayout_ElementWithPointFunction*			elementWithPoint,
-		Dictionary*						dictionary,
-		Geometry*						geometry,		
-		Topology*						topology,
-		Name							listKey )
-{
-	IrregEL* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(IrregEL) );
-	self = (IrregEL*)_ElementLayout_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		build,
-		buildCornerIndices,
-		cornerElementCount,
-		buildCornerElements,
-		buildEdgeIndices,
-		edgeElementCount,
-		buildEdgeElements,
-		edgeAt,
-		getStaticMinAndMaxLocalCoords,
-		getStaticMinAndMaxGlobalCoords,		
-		elementWithPoint,
-		dictionary,
-		geometry,
-		topology );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* IrregEL info */
-	if ( initFlag ){
-		_IrregEL_Init( self, listKey );
-	}
-	
-	return self;
-}
-
-void _IrregEL_Init(
-		IrregEL*					self,
-		Name						listKey )
-{
-	/* General and Virtual info should already be set */
-	
-	/* IrregEL info */
-	Dictionary_Entry_Value*		list;
-	Dictionary_Entry_Value*		elementList;
-	Dictionary_Entry_Value*		element;
-	Dictionary_Entry_Value*		point;
-	Index				e_I;
-	
-	self->isConstructed = True;
-	list = Dictionary_Get( self->dictionary, listKey );
-	self->elementCornerCount = Dictionary_Entry_Value_AsUnsignedInt( Dictionary_Entry_Value_GetMember( list, "elementCornerCount" ) );
-	if ( 0 == self->elementCornerCount ) {
-		fprintf( stderr, "Error - %s: Required Dictionary entry for this element layout\" elementCornerCount\" "
-			"not found. Aborting.\n", __func__ );
-		MPI_Finalize();
-		exit(EXIT_FAILURE);
-	}
-	
-	elementList = Dictionary_Entry_Value_GetMember( list, "elementList" );
-	self->elementCount = Dictionary_Entry_Value_GetCount( elementList );
-	
-/* TEMPORARY. Until test are verified the following #ifdef will be used */
-#ifdef USE_2D_CODE
-
-	self->elementTbl = Memory_Alloc_2DArray( Index, self->elementCount, self->elementCornerCount, "IrregEL->elementTbl" );
-		
-	element = Dictionary_Entry_Value_GetFirstElement( elementList );		
-	for( e_I = 0; e_I < self->elementCount; e_I++) {
-		Index p_I;
-		
-		point = Dictionary_Entry_Value_GetFirstElement( element );
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ ) {
-			self->elementTbl[e_I][p_I] = Dictionary_Entry_Value_AsUnsignedInt( point );
-			point = point->next;
-		}
-		
-		element = element->next;	
-	}
-
-#else
-	
-	self->elementTbl = Memory_Alloc_Array( Index*, self->elementCount, "IrregEL->elementTbl" );
-
-	element = Dictionary_Entry_Value_GetFirstElement( elementList );			
-	for( e_I = 0; e_I < self->elementCount; e_I++ ) {
-		Index p_I;
-		
-		point = Dictionary_Entry_Value_GetFirstElement( element );
-		self->elementTbl[e_I] = Memory_Alloc_Array( Index, self->elementCornerCount, "IrregEL->elementTbl[]" );
-		
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ ) {
-			self->elementTbl[e_I][p_I] = Dictionary_Entry_Value_AsUnsignedInt( point );
-			point = point->next;
-		}
-		
-		element = element->next;
-	}
-#endif
-
-	self->cornerCount = self->geometry->pointCount;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _IrregEL_Delete( void* irregEL ) {
-	IrregEL*		self = (IrregEL*)irregEL;
-	Element_GlobalIndex     e_I;
-
-#ifdef USE_2D_CODE
-
-	Memory_Free( self->elementTbl );
-	self->elementTbl = NULL;
-
-#else
-	
-	for( e_I = 0; e_I < self->elementCount; e_I++ )
-		if( self->elementTbl[e_I] )
-			Memory_Free( self->elementTbl[e_I] );
-	if( self->elementTbl ) {
-		Memory_Free( self->elementTbl );
-		self->elementTbl = NULL;
-	}
-
-#endif
-	
-	/* Stg_Class_Delete parent */
-	_ElementLayout_Delete( self );
-}
-
-
-void _IrregEL_Print( void* irregEL, Stream* stream ) {
-	IrregEL* self = (IrregEL*)irregEL;
-	
-	/* Set the Journal for printing informations */
-	Stream* irregELStream;
-	irregELStream = Journal_Register( InfoStream_Type, "IrregELStream" );
-
-	/* Print parent */
-	_ElementLayout_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "IrregEL (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* IrregEL info */
-}
-
-void _IrregEL_Construct( void* irregEL, Stg_ComponentFactory* cf, void* data ){
-	IrregEL *self = (IrregEL*)irregEL;
-	Name listName = NULL;
-	Topology *topology = NULL;
-	Geometry *geometry = NULL;
-
-	self->dictionary = cf->rootDict;
-	listName = Stg_ComponentFactory_GetString( cf, self->name, "ListName", "" ); 
-	
-	topology =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Topology_Type, Topology,  True, data  ) ;
-	geometry =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  Geometry_Type, Geometry,  True, data ) ;
-
-	_ElementLayout_Init( (ElementLayout*)self, geometry, topology );
-	_IrregEL_Init( self, listName );
-}
-	
-void _IrregEL_ComponentBuild( void* irregEL, void* data ){
-	
-}
-	
-void _IrregEL_Initialise( void* irregEL, void* data ){
-	
-}
-	
-void _IrregEL_Execute( void* irregEL, void* data ){
-	
-}
-	
-void _IrregEL_Destroy( void* irregEL, void* data ){
-	
-}
-
-void _IrregEL_BuildCornerIndices( void* irregEL, Element_GlobalIndex globalIndex, Index* points ) {
-	IrregEL*	self = (IrregEL*)irregEL;
-	Index		p_I;
-	
-	for( p_I = 0; p_I < self->elementCornerCount; p_I++ )
-		points[p_I] = self->elementTbl[globalIndex][p_I];
-}
-
-
-Element_GlobalIndex _IrregEL_CornerElementCount( void* irregEL, Index corner ) {
-	IrregEL*		self = (IrregEL*)irregEL;
-	Topology*		topology = self->topology;
-	Index			e_I;
-	Element_GlobalIndex     eNbrCnt;
-	Element_Neighbours      eNbrs;
-	Element_GlobalIndex     eCnt = 1;
-	
-	for( e_I = 0; e_I < self->elementCount; e_I++ ) {
-		Index p_I;
-		
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ )
-			if( self->elementTbl[e_I][p_I] == corner )
-				break;
-		
-		if( p_I < self->elementCornerCount )
-			break;
-	}
-	
-	if( e_I == self->elementCount )
-		assert( 0 );
-	
-	eNbrCnt = topology->neighbourCount( topology, e_I );
-	eNbrs = Memory_Alloc_Array( Element_GlobalIndex, eNbrCnt, "IrregEL" );
-	topology->buildNeighbours( topology, e_I, eNbrs );
-	
-	for( e_I = 0; e_I < eNbrCnt; e_I++ ) {
-		Index p_I;
-		
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ )
-			if( self->elementTbl[eNbrs[e_I]][p_I] == corner ) {
-				eCnt++;
-				break;
-			}
-	}
-	
-	return eCnt;
-}
-
-
-void _IrregEL_BuildCornerElements( void* irregEL, Index corner, Element_GlobalIndex* elements ) {
-	IrregEL*		self = (IrregEL*)irregEL;
-	Topology*		topology = self->topology;
-	Index			e_I;
-	Element_GlobalIndex     eCnt = 1;
-	Element_GlobalIndex     eNbrCnt;
-	Element_Neighbours      eNbrs;
-	
-	for( e_I = 0; e_I < self->elementCount; e_I++ ) {
-		Index p_I;
-		
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ )
-			if( self->elementTbl[e_I][p_I] == corner )
-				break;
-		
-		if( p_I < self->elementCornerCount )
-			break;
-	}
-	
-	if( e_I == self->elementCount )
-		assert( 0 );
-	
-	eNbrCnt = topology->neighbourCount( topology, e_I );
-	eNbrs = Memory_Alloc_Array( Element_GlobalIndex, eNbrCnt, "IrregEL" );
-	topology->buildNeighbours( topology, e_I, eNbrs );
-	
-	elements[0] = e_I;
-	
-	for( e_I = 0; e_I < eNbrCnt; e_I++ ) {
-		Index p_I;
-		
-		for( p_I = 0; p_I < self->elementCornerCount; p_I++ )
-			if( self->elementTbl[eNbrs[e_I]][p_I] == corner ) {
-				elements[eCnt++] = eNbrs[e_I];
-				break;
-			}
-	}
-}
-
-
-void _IrregEL_BuildEdgeIndices( void* irregEL, Element_GlobalIndex globalIndex, Index* edges ) {
-	assert( 0 );
-}
-
-
-Element_GlobalIndex _IrregEL_EdgeElementCount( void* irregEL, Index edge ) {
-	assert( 0 );
-	return 0;
-}
-
-
-void _IrregEL_BuildEdgeElements( void* irregEL, Index edge, Element_GlobalIndex* elements ) {
-	assert( 0 );
-}
-
-
-void _IrregEL_EdgeAt( void* irregEL, Index index, Edge edge ) {
-	assert( 0 );
-}
-
-
-Element_GlobalIndex _IrregEL_ElementWithPoint( void* irregEL, void* decomp, Coord point, void* mesh, 
-					       PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{		
-	/* Not yet supported */
-	assert( 0 );
-	return 0;
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,167 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_IrregEL_h__
-#define __Discretisaton_Mesh_IrregEL_h__
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type IrregEL_Type;
-
-	/* IrregEL information */
-	#define __IrregEL \
-		/* General info */ \
-		__ElementLayout \
-		\
-		/* Virtual info */ \
-		\
-		/* IrregEL info ... */ \
-		Index**				elementTbl;
-	struct _IrregEL { __IrregEL };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a IrregEL */
-	IrregEL* IrregEL_DefaultNew( Name name );
-
-	IrregEL* IrregEL_New(
-		Name						name,
-		Dictionary*					dictionary,
-		Geometry*					geometry,
-		Topology*					topology,
-		Name						listKey );
-	
-	/* Initialise a IrregEL */
-	void IrregEL_Init(
-		IrregEL*					self,
-		Name						name,
-		Dictionary*					dictionary,
-		Geometry*					geometry,
-		Topology*					topology,
-		Name						listKey );
-	
-	/* Creation implementation */
-	IrregEL* _IrregEL_New(
-		SizeT							_sizeOfSelf, 
-		Type							type,
-		Stg_Class_DeleteFunction*					_delete,
-		Stg_Class_PrintFunction*					_print,
-		Stg_Class_CopyFunction*					_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		ElementLayout_BuildFunction*  				build,		
-		ElementLayout_BuildCornerIndicesFunction*       	buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*       	cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*      	buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*			buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*			edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*		buildEdgeElements,
-		ElementLayout_EdgeAtFunction*				edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*	getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*	getStaticMinAndMaxGlobalCoords,				
-		ElementLayout_ElementWithPointFunction*			elementWithPoint,
-		Dictionary*						dictionary,
-		Geometry*						geometry,		
-		Topology*						topology,
-		Name							listKey );
-	
-	/* Initialisation implementation functions */
-	void _IrregEL_Init(
-		IrregEL*					self,
-		Name						listKey );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete IrregEL implementation */
-	void _IrregEL_Delete( void* irregEL );
-	
-	/* Print IrregEL implementation */
-	void _IrregEL_Print( void* irregEL, Stream* stream );
-	
-	void _IrregEL_Construct( void* irregEL, Stg_ComponentFactory* cf, void* data );
-	
-	void _IrregEL_ComponentBuild( void* irregEL, void* data );
-	
-	void _IrregEL_Initialise( void* irregEL, void* data );
-	
-	void _IrregEL_Execute( void* irregEL, void* data );
-	
-	void _IrregEL_Destroy( void* irregEL, void* data );
-	
-	void _IrregEL_BuildCornerIndices( void* irregEL, Element_GlobalIndex globalIndex, Index* points );
-	
-	Element_GlobalIndex _IrregEL_CornerElementCount( void* irregEL, Index corner );
-	
-	void _IrregEL_BuildCornerElements( void* irregEL, Index corner, Element_GlobalIndex* elements );
-	
-	void _IrregEL_BuildEdgeIndices( void* irregEL, Element_GlobalIndex globalIndex, Index* edges );
-	
-	Element_GlobalIndex _IrregEL_EdgeElementCount( void* irregEL, Index edge );
-	
-	void _IrregEL_BuildEdgeElements( void* irregEL, Index edge, Element_GlobalIndex* elements );
-	
-	void _IrregEL_EdgeAt( void* irregEL, Index index, Edge edge );
-	
-	Element_GlobalIndex _IrregEL_ElementWithPoint( void* irregEL, void* decomp, Coord point, void* mesh, 
-						       PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_IrregEL_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/IrregEL.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">IrregEL</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">ElementLayout</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-	<struct>
-		<param name="Name">ListName</param>
-		<param name="Type">String</param>
-		<param name="Default">""</param>
-		<param name="Description">...</param>
-	</struct>
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Topology</param>
-		<param name="Type">Topology</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 367 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">Geometry</param>
-		<param name="Type">Geometry</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 368 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,36 +44,24 @@
 	
 	#include "types.h"
 	#include "shortcuts.h"
+
 	#include "Grid.h"
 	#include "CommTopology.h"
 	#include "Decomp.h"
 	#include "Decomp_Sync.h"
-	#include "Decomp_Sync_Claim.h"
-	#include "Decomp_Sync_Negotiate.h"
+	#include "Decomp_Sync_Array.h"
+	#include "Decomposer.h"
 	#include "DecompTransfer.h"
 	#include "MeshTopology.h"
+	#include "Mesh_ElementType.h"
+	#include "Mesh_HexType.h"
+	#include "Mesh_Algorithms.h"
+	#include "MeshClass.h"
 	#include "MeshGenerator.h"
 	#include "CartesianGenerator.h"
-	#include "MeshAdaptor.h"
-	#include "SurfaceAdaptor.h"
+	#include "MeshVariable.h"
 
-	#include "ElementLayout.h"
-	#include "HexaEL.h"
-	#include "ParallelPipedHexaEL.h"
-	#include "IrregEL.h"
-	#include "NodeLayout.h"
-	#include "CornerNL.h"
-	#include "BodyNL.h"
-	#include "MeshDecomp.h"
-	#include "HexaMD.h"
-	/*#include "StencilMD.h"*/
-	#include "DummyMD.h"
-	#include "MeshGeometry.h"
-	#include "MeshLayout.h"
-	#include "MeshClass.h"
-	#include "ShadowInfo.h"
 	#include "Init.h"
 	#include "Finalise.h"
 
 #endif /* __Discretisaton_Mesh_h__ */
-

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,6 +41,9 @@
 
 #include "types.h"
 #include "shortcuts.h"
+#include "Decomp.h"
+#include "Decomp_Sync.h"
+#include "MeshTopology.h"
 #include "MeshClass.h"
 #include "MeshGenerator.h"
 #include "MeshAdaptor.h"
@@ -70,6 +73,7 @@
 
 void _MeshAdaptor_Init( MeshAdaptor* self ) {
 	self->generator = NULL;
+	self->srcMesh = NULL;
 }
 
 
@@ -77,92 +81,72 @@
 ** Virtual functions
 */
 
-void _MeshAdaptor_Delete( void* meshAdaptor ) {
-	MeshAdaptor*	self = (MeshAdaptor*)meshAdaptor;
+void _MeshAdaptor_Delete( void* adaptor ) {
+	MeshAdaptor*	self = (MeshAdaptor*)adaptor;
 
 	/* Delete the parent. */
 	_MeshGenerator_Delete( self );
 }
 
-void _MeshAdaptor_Print( void* meshAdaptor, Stream* stream ) {
-	MeshAdaptor*	self = (MeshAdaptor*)meshAdaptor;
+void _MeshAdaptor_Print( void* adaptor, Stream* stream ) {
+	MeshAdaptor*	self = (MeshAdaptor*)adaptor;
 	
 	/* Set the Journal for printing informations */
-	Stream* meshAdaptorStream;
-	meshAdaptorStream = Journal_Register( InfoStream_Type, "MeshAdaptorStream" );
+	Stream* adaptorStream;
+	adaptorStream = Journal_Register( InfoStream_Type, "MeshAdaptorStream" );
 
 	/* Print parent */
 	Journal_Printf( stream, "MeshAdaptor (ptr): (%p)\n", self );
 	_Stg_Component_Print( self, stream );
 }
 
-void* _MeshAdaptor_Copy( void* meshAdaptor, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	MeshAdaptor*	self = (MeshAdaptor*)meshAdaptor;
-	MeshAdaptor*	newMeshAdaptor;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
+void _MeshAdaptor_Construct( void* adaptor, Stg_ComponentFactory* cf, void* data ) {
+	MeshAdaptor*	self = (MeshAdaptor*)adaptor;
 
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMeshAdaptor = (MeshAdaptor*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
+	_MeshGenerator_Construct( self, cf, data );
 
-	/* Deep or shallow? */
-	if( deep ) {
+	/* There could be either a generator or a mesh to use as a template.  Prefer the mesh. */
+	self->mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceMesh", Mesh, False, data );
+	if( !self->mesh ) {
+		/* Read the source generator. */
+		self->generator = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceGenerator", 
+								       MeshGenerator, True, data );
 	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newMeshAdaptor;
-#endif
-
-	return NULL;
 }
 
-void _MeshAdaptor_Construct( void* meshAdaptor, Stg_ComponentFactory* cf, void* data ) {
-	MeshAdaptor*	self = (MeshAdaptor*)meshAdaptor;
-
-	_MeshGenerator_Construct( self, cf, data );
-
-	/* Read the source generator. */
-	self->generator = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceGenerator", 
-							       MeshGenerator, True, data );
+void _MeshAdaptor_Build( void* adaptor, void* data ) {
+	_MeshGenerator_Build( adaptor, data );
 }
 
-void _MeshAdaptor_Build( void* meshAdaptor, void* data ) {
-	_MeshGenerator_Build( meshAdaptor, data );
+void _MeshAdaptor_Initialise( void* adaptor, void* data ) {
 }
 
-void _MeshAdaptor_Initialise( void* meshAdaptor, void* data ) {
+void _MeshAdaptor_Execute( void* adaptor, void* data ) {
 }
 
-void _MeshAdaptor_Execute( void* meshAdaptor, void* data ) {
+void _MeshAdaptor_Destroy( void* adaptor, void* data ) {
 }
 
-void _MeshAdaptor_Destroy( void* meshAdaptor, void* data ) {
-}
-
 /*--------------------------------------------------------------------------------------------------------------------------
 ** Public Functions
 */
 
-void MeshAdaptor_SetGenerator( void* meshAdaptor, void* generator ) {
-	MeshAdaptor*	self = (MeshAdaptor*)meshAdaptor;
+void MeshAdaptor_SetGenerator( void* adaptor, void* generator ) {
+	MeshAdaptor*	self = (MeshAdaptor*)adaptor;
 
 	self->generator = generator;
+	if( self->generator )
+		self->srcMesh = NULL;
 }
 
+void MeshAdaptor_SetSourceMesh( void* adaptor, void* mesh ) {
+	MeshAdaptor*	self = (MeshAdaptor*)adaptor;
+
+	self->srcMesh = (Mesh*)mesh;
+	if( self->srcMesh )
+		self->generator = NULL;
+}
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,14 +47,15 @@
 	/** Virtual function types */
 
 	/** MeshAdaptor class contents */
-	#define __MeshAdaptor					\
-		/* General info */				\
-		__MeshGenerator					\
-								\
-		/* Virtual info */				\
-								\
-		/* MeshAdaptor info */				\
-		MeshGenerator*		generator;
+	#define __MeshAdaptor				\
+		/* General info */			\
+		__MeshGenerator				\
+							\
+		/* Virtual info */			\
+							\
+		/* MeshAdaptor info */			\
+		MeshGenerator*		generator;	\
+		Mesh*			srcMesh;
 
 	struct MeshAdaptor { __MeshAdaptor };
 
@@ -75,26 +76,20 @@
 	** Virtual functions
 	*/
 
-	void _MeshAdaptor_Delete( void* meshAdaptor );
-	void _MeshAdaptor_Print( void* meshAdaptor, Stream* stream );
+	void _MeshAdaptor_Delete( void* adaptor );
+	void _MeshAdaptor_Print( void* adaptor, Stream* stream );
+	void _MeshAdaptor_Construct( void* adaptor, Stg_ComponentFactory* cf, void* data );
+	void _MeshAdaptor_Build( void* adaptor, void* data );
+	void _MeshAdaptor_Initialise( void* adaptor, void* data );
+	void _MeshAdaptor_Execute( void* adaptor, void* data );
+	void _MeshAdaptor_Destroy( void* adaptor, void* data );
 
-	#define MeshAdaptor_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define MeshAdaptor_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _MeshAdaptor_Copy( void* meshAdaptor, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
-	void _MeshAdaptor_Construct( void* meshAdaptor, Stg_ComponentFactory* cf, void* data );
-	void _MeshAdaptor_Build( void* meshAdaptor, void* data );
-	void _MeshAdaptor_Initialise( void* meshAdaptor, void* data );
-	void _MeshAdaptor_Execute( void* meshAdaptor, void* data );
-	void _MeshAdaptor_Destroy( void* meshAdaptor, void* data );
-
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
-	void MeshAdaptor_SetGenerator( void* meshAdaptor, void* generator );
+	void MeshAdaptor_SetGenerator( void* adaptor, void* generator );
+	void MeshAdaptor_SetSourceMesh( void* adaptor, void* mesh );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,552 +28,108 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
 #include <mpi.h>
-#include "Base/Base.h"
 
+#include "Base/Base.h"
 #include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
 
-#include "types.h"
-#include "shortcuts.h"
-#include "MeshTopology.h"
-#include "MeshClass.h"
+#include "Mesh.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "MeshDecomp.h"
-#include "MeshLayout.h"
-#include "ShadowInfo.h"
-#include "MeshGeometry.h"
-#include "HexaEL.h"
-#include "ParallelPipedHexaEL.h"
 
 /* Textual name of this class */
 const Type Mesh_Type = "Mesh";
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
 
-Mesh* Mesh_DefaultNew( Name name )
-{
-	return _Mesh_New( 
-		sizeof(Mesh), 
-		Mesh_Type, 
-		_Mesh_Delete, 
-		_Mesh_Print, 
-		_Mesh_Copy, 
-		(void* (*)(Name))Mesh_DefaultNew,
-		_Mesh_Construct,
-		_Mesh_Build, 
-		_Mesh_Initialise, 
-		_Mesh_Execute,
-		_Mesh_Destroy,
-		name,
-		False,
-		_Mesh_Node_IsLocal1D,
-		_Mesh_Node_IsShadow1D,
-		_Mesh_Element_IsLocal1D,
-		_Mesh_Element_IsShadow1D,
-		NULL, 
-		0,
-		0, 
-		NULL, 
-		NULL );
+Mesh* Mesh_New( Name name ) {
+	return _Mesh_New( sizeof(Mesh), 
+			  Mesh_Type, 
+			  _Mesh_Delete, 
+			  _Mesh_Print, 
+			  NULL, 
+			  (void* (*)(Name))_Mesh_New, 
+			  _Mesh_Construct, 
+			  _Mesh_Build, 
+			  _Mesh_Initialise, 
+			  _Mesh_Execute, 
+			  _Mesh_Destroy, 
+			  name, 
+			  NON_GLOBAL );
 }
 
-Mesh* Mesh_New(
-	Name						name,
-	void*						layout,
-	SizeT						_nodeSize,
-	SizeT						_elementSize,
-	void*						extensionMgr_Register,
-	Dictionary*					dictionary )
-{
-	return _Mesh_New( 
-		sizeof(Mesh), 
-		Mesh_Type, 
-		_Mesh_Delete, 
-		_Mesh_Print, 
-		_Mesh_Copy, 
-		(void* (*)(Name))Mesh_DefaultNew,
-		_Mesh_Construct,
-		_Mesh_Build, 
-		_Mesh_Initialise, 
-		_Mesh_Execute,
-		_Mesh_Destroy,
-		name,
-		True,
-		_Mesh_Node_IsLocal1D,
-		_Mesh_Node_IsShadow1D,
-		_Mesh_Element_IsLocal1D,
-		_Mesh_Element_IsShadow1D,
-		layout, 
-		_nodeSize,
-		_elementSize, 
-		extensionMgr_Register, 
-		dictionary );
-}
-
-
-void Mesh_Init(
-	Mesh*						self,
-	Name						name,
-	void*						layout,
-	SizeT						_nodeSize,
-	SizeT						_elementSize,
-	void*						extensionMgr_Register,
-	Dictionary*					dictionary )
-{
-	/* General info */
-	self->type = Mesh_Type;
-	self->_sizeOfSelf = sizeof(Mesh);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _Mesh_Delete;
-	self->_print = _Mesh_Print;
-	self->_copy = _Mesh_Copy;
-	self->_defaultConstructor = (void* (*)(Name))Mesh_DefaultNew;
-	self->_construct = _Mesh_Construct,
-		self->_build = _Mesh_Build;
-	self->_initialise = _Mesh_Initialise;
-	self->_execute = _Mesh_Execute;
-	self->_destroy = _Mesh_Destroy,
-		self->nodeIsLocal = _Mesh_Node_IsLocal1D;
-	self->nodeIsShadow = _Mesh_Node_IsShadow1D;
-	self->elementIsLocal = _Mesh_Element_IsLocal1D;
-	self->elementIsShadow = _Mesh_Element_IsShadow1D;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	/* Mesh info */
-	_Mesh_Init( self, layout, _nodeSize, _elementSize, extensionMgr_Register );
-}
-
-
-Mesh* _Mesh_New(
-	SizeT						_sizeOfSelf, 
-	Type						type,
-	Stg_Class_DeleteFunction*				_delete,
-	Stg_Class_PrintFunction*				_print, 
-	Stg_Class_CopyFunction*				_copy, 
-	Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-	Stg_Component_ConstructFunction*			_construct,
-	Stg_Component_BuildFunction*			_build,
-	Stg_Component_InitialiseFunction*			_initialise,
-	Stg_Component_ExecuteFunction*			_execute,
-	Stg_Component_DestroyFunction*			_destProc_Iroy,
-	Name								name,
-	Bool								initFlag,
-	Mesh_Node_IsLocalFunction*			_nodeIsLocal,
-	Mesh_Node_IsShadowFunction*			_nodeIsShadow,
-	Mesh_Element_IsLocalFunction*			_elementIsLocal,
-	Mesh_Element_IsShadowFunction*			_elementIsShadow,
-	void*						layout,
-	SizeT						nodeSize,
-	SizeT						elementSize, 
-	void*						extensionMgr_Register,
-	Dictionary*					dictionary )
-{
+Mesh* _Mesh_New( MESH_DEFARGS ) {
 	Mesh* self;
 	
 	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(Mesh) );
-	self = (Mesh*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-					  _initialise, _execute, _destProc_Iroy, name, NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
+	assert( sizeOfSelf >= sizeof(Mesh) );
+	self = (Mesh*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+
 	/* Virtual info */
-	self->nodeIsLocal = _nodeIsLocal;
-	self->nodeIsShadow = _nodeIsShadow;
-	self->elementIsLocal = _elementIsLocal;
-	self->elementIsShadow = _elementIsShadow;
-	
+
 	/* Mesh info */
-	if( initFlag ){
-		_Mesh_Init( self, layout, nodeSize, elementSize, extensionMgr_Register );
-	}
-	
+	_Mesh_Init( self );
+
 	return self;
 }
 
-void _Mesh_Init(
-	Mesh*						self,
-	void*						layout,
-	SizeT						_nodeSize,
-	SizeT						_elementSize,
-	void*						extensionMgr_Register )
-{
-	/* General and Virtual info should already be set */
-	
-	/* Mesh info */
-	self->isConstructed = True;
-	self->layout = (MeshLayout*)layout;
-	self->nodeExtensionMgr = ExtensionManager_New_OfStruct( "node", _nodeSize );
-	self->elementExtensionMgr = ExtensionManager_New_OfStruct( "element", _elementSize );
-	ExtensionManager_Register_Add( extensionMgr_Register, self->nodeExtensionMgr );
-	ExtensionManager_Register_Add( extensionMgr_Register, self->elementExtensionMgr );
-	self->extensionMgr_Register = extensionMgr_Register;
-	self->debug = Journal_Register( Debug_Type, self->type );
-
-	/* New topology stuff. */
+void _Mesh_Init( Mesh* self ) {
 	self->topo = MeshTopology_New( "" );
-	self->useTopo = False;
-	self->generator = NULL;
-	self->info = ExtensionManager_New_OfExistingObject( "mesh_info", self );
-	
-	/* Nodes */
-	self->nodeLocalCount = 0;
-	self->nodeDomainCount = 0;
-	self->nodeShadowCount = 0;
-	self->nodeGlobalCount = 0;
-	self->nodeL2G = 0;
-	self->nodeD2G = 0;
-	self->nodeG2L = 0;
-	self->nodeG2D = 0;
-	self->nodeNeighbourTbl = 0;
-	self->nodeNeighbourCountTbl = 0;
-	self->nodeElementTbl = 0;
-	self->nodeElementCountTbl = 0;
-	/* By default, build the local to global table for speed. The global to local tables are
-	   potentially memory-hungry for large parallel runs, so don't build them by default */
-	self->buildNodeLocalToGlobalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeLocalToGlobalMap",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildNodeDomainToGlobalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeDomainToGlobalMap",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildNodeGlobalToLocalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeGlobalToLocalMap",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->buildNodeGlobalToDomainMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeGlobalToDomainMap",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildNodeNeighbourTbl = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeNeighbourTbl",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildNodeElementTbl = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildNodeElementTbl",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->ownsNodeLocalToGlobalMap = True;
-	self->ownsNodeDomainToGlobalMap = True;
-	self->ownsNodeGlobalToDomainMap = True;
-	self->ownsNodeGlobalToLocalMap = True;
-	self->ownsNodeNeighbourTbl = True;
-	self->ownsNodeNeighbourCountTbl = True;
-	self->ownsNodeElementTbl = True;
-	self->ownsNodeElementCountTbl = True;
-	
-	/* Element */
-	self->elementDomainCount = 0;
-	self->elementLocalCount = 0;
-	self->elementShadowCount = 0;
-	self->elementGlobalCount = 0;
-	self->elementL2G = 0;
-	self->elementD2G = 0;
-	self->elementG2L = 0;
-	self->elementG2D = 0;
-	self->elementNodeTbl = 0;
-	self->elementNodeCountTbl = 0;
-	self->elementNeighbourTbl = 0;
-	self->elementNeighbourCountTbl = 0;
-	self->buildElementLocalToGlobalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementLocalToGlobalMap",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildElementDomainToGlobalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementDomainToGlobalMap",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->buildElementGlobalToLocalMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementGlobalToLocalMap",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->buildElementGlobalToDomainMap = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementGlobalToDomainMap",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->buildElementNodeTbl = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementNodeTbl",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->buildElementNeighbourTbl = Dictionary_Entry_Value_AsBool(
-		Dictionary_GetDefault( self->dictionary, "buildElementNeighbourTbl",
-				       Dictionary_Entry_Value_FromBool( False ) ) );
-	self->buildTemporaryGlobalTables = Dictionary_Entry_Value_AsBool(		
-		Dictionary_GetDefault( self->dictionary, "buildTemporaryGlobalTables",
-				       Dictionary_Entry_Value_FromBool( True ) ) );
-	self->ownsElementLocalToGlobalMap = True;
-	self->ownsElementDomainToGlobalMap = True;
-	self->ownsElementGlobalToDomainMap = True;
-	self->ownsElementGlobalToLocalMap = True;
-	self->ownsElementNodeTbl = True;
-	self->ownsElementNodeCountTbl = True;
-	self->ownsElementNeighbourTbl = True;
-	self->ownsElementNeighbourCountTbl = True;
-	
-	/* sync info */
-	self->procNbrInfo = Memory_Alloc( ProcNbrInfo, "Mesh->procNbrInfo" );
-	self->procNbrInfo->procNbrCnt = 0;
-	self->procNbrInfo->procNbrTbl = NULL;
-	self->elementShadowInfo = Memory_Alloc( ShadowInfo, "Mesh->elementShadowInfo" );
-	self->elementShadowInfo->procShadowedCnt = NULL;
-	self->elementShadowInfo->procShadowedTbl = NULL;
-	self->elementShadowInfo->procShadowCnt = NULL;
-	self->elementShadowInfo->procShadowTbl = NULL;
-	self->nodeShadowInfo = Memory_Alloc( ShadowInfo, "Mesh->nodeShadowInfo" );
-	self->nodeShadowInfo->procShadowedCnt = NULL;
-	self->nodeShadowInfo->procShadowedTbl = NULL;
-	self->nodeShadowInfo->procShadowCnt = NULL;
-	self->nodeShadowInfo->procShadowTbl = NULL;
-	
-	self->syncRequestTbl = NULL;
-	self->syncElementTbl = NULL;
-	self->syncNodeCoordTbl = NULL;
-	self->syncNodeTbl = NULL;
-	self->syncElementSendTbl = NULL;
-	self->syncNodeCoordTbl = NULL;
-	self->syncNodeTbl = NULL;
-}
+	self->verts = NULL;
+	self->vertSyncArray = NULL;
 
+	self->vars = List_New();
+	List_SetItemSize( self->vars, sizeof(MeshVariable*) );
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
+	self->minSep = 0.0;
+	self->minAxialSep = NULL;
+	self->minLocalCrd = NULL;
+	self->maxLocalCrd = NULL;
+	self->minDomainCrd = NULL;
+	self->maxDomainCrd = NULL;
+	self->minGlobalCrd = NULL;
+	self->maxGlobalCrd = NULL;
 
-void _Mesh_Construct( void* mesh, Stg_ComponentFactory* cf, void* data ) {
-	Mesh* self = (Mesh*)mesh;
-	Dictionary *componentDict = NULL;
-	Dictionary *thisComponentDict = NULL;
-	MeshLayout *meshLayout = NULL;
-	void *extensionManager_Register = NULL;
-	unsigned int elementSize = 0;
-	unsigned int nodeSize = 0;
+	self->algorithms = Mesh_Algorithms_New( "" );
+	self->nElTypes = 0;
+	self->elTypes = NULL;
+	self->elTypeMap = NULL;
 
-	self->dictionary = cf->rootDict;
-	componentDict = cf->componentDict;
-	assert( componentDict );
-	thisComponentDict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( componentDict, self->name ) );
-	assert( thisComponentDict );
-	
-	meshLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  MeshLayout_Type, MeshLayout,  True, data ) ;
-	
-	extensionManager_Register = Stg_ObjectList_Get( cf->registerRegister, "ExtensionManager_Register" );
-	assert( extensionManager_Register );
-	
+	self->topoDataSizes = UIntMap_New();
+	self->topoDataInfos = NULL;
+	self->topoDatas = NULL;
+	self->dataSyncArrays = NULL;
+	self->info = ExtensionManager_New_OfExistingObject( "mesh_info", self );
 
-	elementSize = Dictionary_GetUnsignedInt_WithDefault( thisComponentDict, "ElementSize", 8 );
-	nodeSize = Dictionary_GetUnsignedInt_WithDefault( thisComponentDict, "NodeSize", 0 );
-
-	self->nSpaceDims = Stg_ComponentFactory_GetRootDictUnsignedInt( cf, "dim", 0 );
-
-	_Mesh_Init( (Mesh*)self, meshLayout, nodeSize, elementSize, extensionManager_Register );
+	self->generator = NULL;
+	self->emReg = NULL;
 }
 
-void _Mesh_Destroy( void* mesh, void* data )
-{
-	
-}
 
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
 void _Mesh_Delete( void* mesh ) {
-	Mesh* self = (Mesh*)mesh;
+	Mesh*	self = (Mesh*)mesh;
 
-	FreeObject( self->topo );
-	Memory_Free( self->nodeCoord );
+	Mesh_Destruct( self );
+	KillObject( self->algorithms );
+	KillObject( self->topo );
+	KillObject( self->info );
 
-	Mesh_DestroyTables( self );
-	
-	/* Stg_Class_Delete the mesh itself */
-	if( self->element ) {
-		ExtensionManager_Free( self->elementExtensionMgr, self->element );
-	}
-	if( self->node ) {
-		ExtensionManager_Free( self->nodeExtensionMgr, self->node );
-	}
-	
-	/* Stg_Class_Delete parent */
+	/* Delete the parent. */
 	_Stg_Component_Delete( self );
 }
 
-
-void Mesh_DestroyTables( void* mesh ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	/* Because remeshing may have the same connectivity, we may want to pass this onto the new mesh, hence "owns" flags */
-	if( self->ownsElementNeighbourTbl && self->elementNeighbourTbl ) {
-		Memory_Free( self->elementNeighbourTbl );
-	}
-	if( self->ownsElementNeighbourCountTbl && self->elementNeighbourCountTbl ) {
-		Memory_Free( self->elementNeighbourCountTbl );
-	}
-	if( self->ownsElementNodeTbl && self->elementNodeTbl ) {
-		Memory_Free( self->elementNodeTbl );
-	}
-	if( self->ownsElementNodeCountTbl && self->elementNodeCountTbl ) {
-		Memory_Free( self->elementNodeCountTbl );
-	}
-	if( self->ownsElementGlobalToDomainMap && self->elementG2D ) {
-		Memory_Free( self->elementG2D );
-	}
-	/* Note: G2D is same ptr as G2L if both active and no shadowing */
-	if( self->ownsElementGlobalToLocalMap && self->elementG2L && 
-	    !(self->elementG2D && (self->nodeShadowCount == 0) ) )
-	{
-		Memory_Free( self->elementG2L );
-	}
-	if( self->ownsElementDomainToGlobalMap && self->elementD2G ) {
-		Memory_Free( self->elementD2G );
-	}
-	/* L2G is same ptr as D2G if both requested */
-	if( self->ownsElementLocalToGlobalMap && self->elementL2G && !self->elementD2G ) {
-		Memory_Free( self->elementL2G );
-	}
-	if( self->ownsNodeElementTbl && self->nodeElementTbl ) {
-		Memory_Free( self->nodeElementTbl );
-	}
-	if( self->ownsNodeElementCountTbl && self->nodeElementCountTbl ) {
-		Memory_Free( self->nodeElementCountTbl );
-	}
-	if( self->ownsNodeNeighbourTbl && self->nodeNeighbourTbl ) {
-		Memory_Free( self->nodeNeighbourTbl );
-	}
-	if( self->ownsNodeNeighbourCountTbl && self->nodeNeighbourCountTbl ) {
-		Memory_Free( self->nodeNeighbourCountTbl );
-	}
-	if( self->ownsNodeGlobalToDomainMap && self->nodeG2D ) {
-		Memory_Free( self->nodeG2D );
-	}
-	/* G2D is same ptr as G2L if both active and no shadowing */
-	if( self->ownsNodeGlobalToLocalMap && self->nodeG2L && 
-	    !(self->nodeG2D && (self->nodeShadowCount == 0) ) )
-	{	
-		Memory_Free( self->nodeG2L );
-	}
-	if( self->ownsElementDomainToGlobalMap && self->nodeD2G ) {
-		Memory_Free( self->nodeD2G );
-	}
-	/* L2G is same ptr as D2G if both requested */
-	if( self->ownsElementLocalToGlobalMap && self->nodeL2G && !self->nodeD2G ) {
-		Memory_Free( self->nodeL2G );
-	}
-	
-	/* sync info */
-	if( self->procNbrInfo->procNbrTbl ) {
-		Memory_Free( self->procNbrInfo->procNbrTbl );
-	}
-	
-	if( self->elementShadowInfo->procShadowedCnt ) {
-		Memory_Free( self->elementShadowInfo->procShadowedCnt );
-	}
-	if( self->elementShadowInfo->procShadowedTbl ) {
-		NeighbourIndex			nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->elementShadowInfo->procShadowedTbl[nbr_I] ) {
-				Memory_Free( self->elementShadowInfo->procShadowedTbl[nbr_I] );
-			}
-		}
-		Memory_Free( self->elementShadowInfo->procShadowedTbl );
-	}
-	if( self->elementShadowInfo->procShadowCnt ) {
-		Memory_Free( self->elementShadowInfo->procShadowCnt );
-	}
-	if( self->elementShadowInfo->procShadowTbl ) {
-		NeighbourIndex			nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->elementShadowInfo->procShadowTbl[nbr_I] ) {
-				Memory_Free( self->elementShadowInfo->procShadowTbl[nbr_I] );
-			}
-		}
-		Memory_Free( self->elementShadowInfo->procShadowTbl );
-	}
-	
-	if( self->nodeShadowInfo->procShadowedCnt ) {
-		Memory_Free( self->nodeShadowInfo->procShadowedCnt );
-	}
-	if( self->nodeShadowInfo->procShadowedTbl ) {
-		NeighbourIndex			nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->nodeShadowInfo->procShadowedTbl[nbr_I] ) {
-				Memory_Free( self->nodeShadowInfo->procShadowedTbl[nbr_I] );
-			}
-		}
-		Memory_Free( self->nodeShadowInfo->procShadowedTbl );
-	}
-	if( self->nodeShadowInfo->procShadowCnt ) {
-		Memory_Free( self->nodeShadowInfo->procShadowCnt );
-	}
-	if( self->nodeShadowInfo->procShadowTbl ) {
-		NeighbourIndex			nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->nodeShadowInfo->procShadowTbl[nbr_I] ) {
-				Memory_Free( self->nodeShadowInfo->procShadowTbl[nbr_I] );
-			}
-		}
-		Memory_Free( self->nodeShadowInfo->procShadowTbl );
-	}
-	
-	if( self->syncRequestTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->syncRequestTbl[nbr_I] )
-				Memory_Free( self->syncRequestTbl[nbr_I] );
-		}
-		Memory_Free( self->syncRequestTbl );
-	}
-	if( self->syncElementTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->syncElementTbl[nbr_I] )
-				Memory_Free( self->syncElementTbl[nbr_I] );
-		}
-		Memory_Free( self->syncElementTbl );
-	}
-	if( self->syncNodeCoordTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->syncNodeCoordTbl[nbr_I] )
-				Memory_Free( self->syncNodeCoordTbl[nbr_I] );
-		}
-		Memory_Free( self->syncNodeCoordTbl );
-	}
-	if( self->syncNodeTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			if( self->syncNodeTbl[nbr_I] )
-				Memory_Free( self->syncNodeTbl[nbr_I] );
-		}
-		Memory_Free( self->syncNodeTbl );
-	}
-	
-	if( self->syncElementSendTbl ) {
-		Memory_Free( self->syncElementSendTbl );
-	}
-	if( self->syncNodeCoordSendTbl ) {
-		Memory_Free( self->syncNodeCoordSendTbl );
-	}
-	if( self->syncNodeTbl ) {
-		Memory_Free( self->syncNodeSendTbl );
-	}
-	Memory_Free( self->elementShadowInfo );
-	Memory_Free( self->nodeShadowInfo );
-	Memory_Free( self->procNbrInfo );
-}
-
-
 void _Mesh_Print( void* mesh, Stream* stream ) {
-	Mesh* self = (Mesh*)mesh;
+	Mesh*	self = (Mesh*)mesh;
 	
 	/* Set the Journal for printing informations */
 	Stream* meshStream;
@@ -582,1941 +138,506 @@
 	/* Print parent */
 	Journal_Printf( stream, "Mesh (ptr): (%p)\n", self );
 	_Stg_Component_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "\tdictionary (ptr): %p\n", self->dictionary );
-	
-	/* Virtual info */
-	
-	/* Mesh info */
-	Journal_Printf( stream, "\tlayout (ptr): %p\n", self->layout );
-	Print( self->nodeExtensionMgr, stream );
-	Print( self->elementExtensionMgr, stream );
-	
-	/* Nodes */
-	Journal_Printf( stream, "\tnode (ptr): %p\n", self->node );
-	Journal_Printf( stream, "\tnodeLocalCount: %d\n", self->nodeLocalCount );
-	Journal_Printf( stream, "\tnodeDomainCount: %d\n", self->nodeDomainCount );
-	Journal_Printf( stream, "\tnodeShadowCount: %d\n", self->nodeShadowCount );
-	Journal_Printf( stream, "\tnodeGlobalCount: %d\n", self->nodeGlobalCount );
-	_Mesh_PrintCoords( self, stream );
+}
 
-	Journal_Printf( stream, "\townsNodeLocalToGlobalMap: %u\n", self->ownsNodeLocalToGlobalMap );
-	_Mesh_PrintTable( stream, self->nodeL2G, "nodeL2G", self->nodeLocalCount );
-	Journal_Printf( stream, "\townsNodeDomainToGlobalMap: %u\n", self->ownsNodeDomainToGlobalMap );
-	_Mesh_PrintTable( stream, self->nodeD2G, "nodeD2G", self->nodeDomainCount );
-	Journal_Printf( stream, "\townsNodeGlobalToLocalMap: %u\n", self->ownsNodeGlobalToLocalMap );
-	_Mesh_PrintTable( stream, self->nodeG2L, "nodeG2L", self->nodeGlobalCount );
-	Journal_Printf( stream, "\townsNodeGlobalToDomainMap: %u\n", self->ownsNodeGlobalToDomainMap );
-	_Mesh_PrintTable( stream, self->nodeG2D, "nodeG2D", self->nodeGlobalCount );
-
-	Journal_Printf( stream, "\townsNodeNeighbourCountTbl: %u\n", self->ownsNodeNeighbourCountTbl );
-	Journal_Printf( stream, "\tnodeNeighbourCountTbl (ptr): %p\n", self->nodeNeighbourCountTbl );
-	Journal_Printf( stream, "\townsNodeNeighbourTbl: %u\n", self->ownsNodeNeighbourTbl );
-	_Mesh_Print2DTable( stream, self->nodeNeighbourTbl, self->nodeNeighbourCountTbl, "nodeNeighbourTbl",
-			    self->nodeDomainCount );
-
-	Journal_Printf( stream, "\townsNodeElementCountTbl: %u\n", self->ownsNodeElementCountTbl );
-	Journal_Printf( stream, "\tnodeElementCountTbl (ptr): %p\n", self->nodeElementCountTbl );
-	Journal_Printf( stream, "\townsNodeElementTbl: %u\n", self->ownsNodeElementTbl );
-	_Mesh_Print2DTable( stream, self->nodeElementTbl, self->nodeElementCountTbl, "nodeElementTbl",
-			    self->nodeDomainCount );
-	
-	/* Element */
-	Journal_Printf( stream, "\telement (ptr): %p\n", self->element );
-	Journal_Printf( stream, "\telementLocalCount: %d\n", self->elementLocalCount );
-	Journal_Printf( stream, "\telementDomainCount: %d\n", self->elementDomainCount );
-	Journal_Printf( stream, "\telementShadowCount: %d\n", self->elementShadowCount );
-	Journal_Printf( stream, "\telementGlobalCount: %d\n", self->elementGlobalCount );
-
-	Journal_Printf( stream, "\townsElementLocalToGlobalMap: %u\n", self->ownsElementLocalToGlobalMap );
-	_Mesh_PrintTable( stream, self->elementL2G, "elementL2G", self->elementLocalCount );
-	Journal_Printf( stream, "\townsElementDomainToGlobalMap: %u\n", self->ownsElementDomainToGlobalMap );
-	_Mesh_PrintTable( stream, self->elementD2G, "elementD2G", self->elementDomainCount );
-	Journal_Printf( stream, "\townsElementGlobalToLocalMap: %u\n", self->ownsElementGlobalToLocalMap );
-	_Mesh_PrintTable( stream, self->elementG2L, "elementG2L", self->elementGlobalCount );
-	Journal_Printf( stream, "\townsElementGlobalToDomainMap: %u\n", self->ownsElementGlobalToDomainMap );
-	_Mesh_PrintTable( stream, self->elementG2D, "elementG2D", self->elementGlobalCount );
-
-	Journal_Printf( stream, "\townsElementNeighbourCountTbl: %u\n", self->ownsElementNeighbourCountTbl );
-	Journal_Printf( stream, "\telementNeighbourCountTbl (ptr): %p\n", self->elementNeighbourCountTbl );
-	Journal_Printf( stream, "\townsElementNeighbourTbl: %u\n", self->ownsElementNeighbourTbl );
-	_Mesh_Print2DTable( stream, self->elementNeighbourTbl, self->elementNeighbourCountTbl, "elementNeighbourTbl",
-			    self->elementDomainCount );
-	Journal_Printf( stream, "\townsElementNodeCountTbl: %u\n", self->ownsElementNodeCountTbl );
-	Journal_Printf( stream, "\telementNodeCountTbl (ptr): %p\n", self->elementNodeCountTbl );
-	Journal_Printf( stream, "\townsElementNodeTbl: %u\n", self->ownsElementNodeTbl );
-	_Mesh_Print2DTable( stream, self->elementNodeTbl, self->elementNodeCountTbl, "elementNodeTbl",
-			    self->elementDomainCount );
-	
-	/* sync info */
-	Journal_Printf( stream, "\tprocNbrCnt: %d\n", self->procNbrInfo->procNbrCnt );
-	Journal_Printf( stream, "\tprocNbrTbl (ptr): %p\n", self->procNbrInfo->procNbrTbl );
-	if( self->procNbrInfo->procNbrTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\tprocNbrTbl[%d]: %d\n", nbr_I, self->procNbrInfo->procNbrTbl[nbr_I] );
-		}
-	}
-	
-	Journal_Printf( stream, "\telementShadowInfo->procShadowedCnt (ptr): %p\n", self->elementShadowInfo->procShadowedCnt );
-	if( self->elementShadowInfo->procShadowedCnt ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\telementShadowInfo->procShadowedCnt[%d]: %d\n", nbr_I, 
-					self->elementShadowInfo->procShadowedCnt[nbr_I] );
-		}
-	}
-	Journal_Printf( stream, "\telementShadowInfo->procShadowedTbl (ptr): %p\n", self->elementShadowInfo->procShadowedTbl );
-	if( self->elementShadowInfo->procShadowedTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\telementShadowInfo->procShadowedTbl[%d] (ptr): %p\n", nbr_I, 
-					self->elementShadowInfo->procShadowedTbl[nbr_I] );
-			if( self->elementShadowInfo->procShadowedTbl[nbr_I] ) {
-				Element_LocalIndex		element_lI;
-				
-				for( element_lI = 0; element_lI < self->elementShadowInfo->procShadowedCnt[nbr_I]; element_lI++ ) {
-					Journal_Printf( stream, "\t\t\telementShadowInfo->procShadowedTbl[%d][%d]: %d\n", nbr_I, element_lI, 
-							self->elementShadowInfo->procShadowedTbl[nbr_I][element_lI] );
-				}
-			}
-		}
-	}
-	
-	Journal_Printf( stream, "\telementShadowInfo->procShadowCnt (ptr): %p\n", self->elementShadowInfo->procShadowCnt );
-	if( self->elementShadowInfo->procShadowCnt ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\telementShadowInfo->procShadowCnt[%d]: %d\n", nbr_I, 
-					self->elementShadowInfo->procShadowCnt[nbr_I] );
-		}
-	}
-	Journal_Printf( stream, "\telementShadowInfo->procShadowTbl (ptr): %p\n", self->elementShadowInfo->procShadowTbl );
-	if( self->elementShadowInfo->procShadowTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\telementShadowInfo->procShadowTbl[%d] (ptr): %p\n", nbr_I, 
-					self->elementShadowInfo->procShadowTbl[nbr_I] );
-			if( self->elementShadowInfo->procShadowTbl[nbr_I] ) {
-				Element_ShadowIndex		element_sI;
-				
-				for( element_sI = 0; element_sI < self->elementShadowInfo->procShadowCnt[nbr_I]; element_sI++ ) {
-					Journal_Printf( stream, "\t\t\telementShadowInfo->procShadowTbl[%d][%d]: %d\n", nbr_I, element_sI, 
-							self->elementShadowInfo->procShadowTbl[nbr_I][element_sI] );
-				}
-			}
-		}
-	}
-	
-	Journal_Printf( stream, "\tnodeShadowInfo->procShadowedCnt (ptr): %p\n", self->nodeShadowInfo->procShadowedCnt );
-	if( self->nodeShadowInfo->procShadowedCnt ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\tnodeShadowInfo->procShadowedCnt[%d]: %d\n", nbr_I, 
-					self->nodeShadowInfo->procShadowedCnt[nbr_I] );
-		}
-	}
-	Journal_Printf( stream, "\tnodeShadowInfo->procShadowedTbl (ptr): %p\n", self->nodeShadowInfo->procShadowedTbl );
-	if( self->nodeShadowInfo->procShadowedTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\tnodeShadowInfo->procShadowedTbl[%d] (ptr): %p\n", nbr_I,
-					self->nodeShadowInfo->procShadowedTbl[nbr_I] );
-			if( self->nodeShadowInfo->procShadowedTbl[nbr_I] ) {
-				Node_LocalIndex		node_lI;
-				
-				for( node_lI = 0; node_lI < self->nodeShadowInfo->procShadowedCnt[nbr_I]; node_lI++ ) {
-					Journal_Printf( stream, "\t\t\tnodeShadowInfo->procShadowedTbl[%d][%d]: %d\n", nbr_I, node_lI, 
-							self->nodeShadowInfo->procShadowedTbl[nbr_I][node_lI] );
-				}
-			}
-		}
-	}
-	
-	Journal_Printf( stream, "\tnodeShadowInfo->procShadowCnt (ptr): %p\n", self->nodeShadowInfo->procShadowCnt );
-	if( self->nodeShadowInfo->procShadowCnt ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\tnodeShadowInfo->procShadowCnt[%d]: %d\n", nbr_I, 
-					self->nodeShadowInfo->procShadowCnt[nbr_I] );
-		}
-	}
-	Journal_Printf( stream, "\tnodeShadowInfo->procShadowTbl (ptr): %p\n", self->nodeShadowInfo->procShadowTbl );
-	if( self->nodeShadowInfo->procShadowTbl ) {
-		NeighbourIndex		nbr_I;
-		
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_Printf( stream, "\t\tnodeShadowInfo->procShadowTbl[%d] (ptr): %p\n", nbr_I,
-					self->nodeShadowInfo->procShadowTbl[nbr_I] );
-			if( self->nodeShadowInfo->procShadowTbl[nbr_I] ) {
-				Node_ShadowIndex		node_sI;
-				
-				for( node_sI = 0; node_sI < self->nodeShadowInfo->procShadowCnt[nbr_I]; node_sI++ ) {
-					Journal_Printf( stream, "\t\t\tnodeShadowInfo->procShadowTbl[%d][%d]: %d\n", nbr_I, node_sI, 
-							self->nodeShadowInfo->procShadowTbl[nbr_I][node_sI] );
-				}
-			}
-		}
-	}
+void _Mesh_Construct( void* mesh, Stg_ComponentFactory* cf, void* data ) {
 }
 
+void _Mesh_Build( void* mesh, void* data ) {
+	Mesh*		self = (Mesh*)mesh;
+	unsigned	nDims;
+	unsigned	d_i;
 
-void _Mesh_PrintCoords( Mesh* self, Stream* meshStream )
-{
-	Index	itemCount = self->nodeDomainCount;
-	Index	 item_I;
+	assert( self );
 
-	Journal_Printf( meshStream, "\tnodeCoord (ptr): %p\n", self->nodeCoord );
-	Journal_Printf( meshStream, "\t%s[0-%u]:   ", "nodeCoord", itemCount );
-	if( self->nodeCoord ) {
-		Coord* coordPtr = NULL;
+	if( !self->generator )
+		return;
 
-		for( item_I = 0; item_I < itemCount; item_I++ ) {
-			coordPtr = &self->nodeCoord[item_I];
-			Journal_Printf( meshStream, "(%.2f,%.2f,%.2f), ", (*coordPtr)[0], (*coordPtr)[1],
-					(*coordPtr)[2] );
-		}
-		Journal_Printf( meshStream, "\n" );
-	}
-	else {
-		Journal_Printf( meshStream, "(null)\n");
-	}
-}
+	MeshGenerator_Generate( self->generator, self );
 
+	nDims = Mesh_GetDimSize( self );
+	if( !nDims )
+		return;
 
-void _Mesh_PrintTable( Stream* meshStream, Index* table, const Name tableName, Index itemCount )
-{
-	Index item_I;
+	self->vertSyncArray = Decomp_Sync_Array_New();
+	Decomp_Sync_Array_SetSync( self->vertSyncArray, self->topo->domains[MT_VERTEX] );
+	Decomp_Sync_Array_SetMemory( self->vertSyncArray, 
+				     self->verts[0], self->verts[Mesh_GetLocalSize( self, MT_VERTEX )], 
+				     nDims * sizeof(double), nDims * sizeof(double), 
+				     nDims * sizeof(double) );
 
-	Journal_Printf( meshStream, "\t%s (ptr): %p\n", tableName, table );
-	Journal_Printf( meshStream, "\t%s[0-%u]:   ", tableName, itemCount );
-	if( table ) {
-		for( item_I = 0; item_I < itemCount; item_I++ ) {
-			Journal_Printf( meshStream, "%.3u ", table[item_I] );
-		}
-		Journal_Printf( meshStream, "\n" );
-	}
-	else {
-		Journal_Printf( meshStream, "(null)\n");
-	}
-}
+	self->topoDataInfos = Memory_Alloc_Array( ExtensionManager*, nDims, "mesh::topoDataInfos" );
+	self->topoDatas = Memory_Alloc_Array( void*, nDims, "mesh::topoDatas" );
+	self->dataSyncArrays = Memory_Alloc_Array( Decomp_Sync_Array*, nDims, "mesh::dataSyncArrays" );
 
+	for( d_i = 0; d_i < nDims; d_i++ ) {
+		char		name[20];
+		unsigned	size;
 
-void _Mesh_Print2DTable( Stream* meshStream, Index** table, Index* tableEntryCounts, const Name tableName, Index entryCount )
-{
-	Index entry_I;
-	Index item_I;
-	Index itemCount;
-	
-	Journal_Printf( meshStream, "\t%s (ptr): %p\n", tableName, table );
-	if( table && tableEntryCounts ) {
-		Journal_Printf( meshStream, "\t%s[0-%u]:\n", tableName, entryCount );
-		for( entry_I = 0; entry_I < entryCount; entry_I++ ) {
-			itemCount = tableEntryCounts[entry_I];
-
-			Journal_Printf( meshStream, "\t\t%s[%u][0-%u]: ", tableName, entry_I, itemCount );
-
-			for( item_I = 0; item_I < itemCount; item_I++ ) {
-				Journal_Printf( meshStream, "%.3u ", table[entry_I][item_I] );
-			}
-			Journal_Printf( meshStream, "\n" );
+		if( !UIntMap_Map( self->topoDataSizes, d_i, &size ) || !size ||
+		    !Mesh_GetDomainSize( self, d_i ) )
+		{
+			self->topoDataInfos[d_i] = NULL;
+			self->topoDatas[d_i] = NULL;
+			self->dataSyncArrays[d_i] = NULL;
+			continue;
 		}
-	}
-}
 
+		sprintf( name, "topoData(%d)", d_i );
+		self->topoDataInfos[d_i] = ExtensionManager_New_OfStruct( name, size );
+		self->topoDatas[d_i] = (void*)ExtensionManager_Malloc( self->topoDataInfos[d_i], Mesh_GetDomainSize( self, d_i ) );
 
-void* _Mesh_Copy( void* mesh, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	Mesh*		self = (Mesh*)mesh;
-	Mesh*		newMesh;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMesh = (Mesh*)_Stg_Component_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Virtual methods */
-	newMesh->nodeIsLocal = self->nodeIsLocal;
-	newMesh->nodeIsShadow = self->nodeIsShadow;
-	newMesh->elementIsLocal = self->elementIsLocal;
-	newMesh->elementIsShadow = self->elementIsShadow;
-	
-	newMesh->dictionary = self->dictionary;
-	newMesh->nodeLocalCount = self->nodeLocalCount;
-	newMesh->nodeDomainCount = self->nodeDomainCount;
-	newMesh->nodeShadowCount = self->nodeShadowCount;
-	newMesh->nodeGlobalCount = self->nodeGlobalCount;
-	newMesh->buildNodeLocalToGlobalMap = self->buildNodeLocalToGlobalMap;
-	newMesh->buildNodeDomainToGlobalMap = self->buildNodeDomainToGlobalMap;
-	newMesh->buildNodeGlobalToLocalMap = self->buildNodeGlobalToLocalMap;
-	newMesh->buildNodeGlobalToDomainMap = self->buildNodeGlobalToDomainMap;
-	newMesh->ownsNodeLocalToGlobalMap = self->ownsNodeLocalToGlobalMap;
-	newMesh->ownsNodeDomainToGlobalMap = self->ownsNodeDomainToGlobalMap;
-	newMesh->ownsNodeGlobalToLocalMap = self->ownsNodeGlobalToLocalMap;
-	newMesh->ownsNodeGlobalToDomainMap = self->ownsNodeGlobalToDomainMap;
-	newMesh->buildNodeNeighbourTbl = self->buildNodeNeighbourTbl;
-	newMesh->buildNodeElementTbl = self->buildNodeElementTbl;
-	newMesh->ownsNodeNeighbourTbl = self->ownsNodeNeighbourTbl;
-	newMesh->ownsNodeNeighbourCountTbl = self->ownsNodeNeighbourCountTbl;
-	newMesh->ownsNodeElementTbl = self->ownsNodeElementTbl;
-	newMesh->ownsNodeElementCountTbl = self->ownsNodeElementCountTbl;
-	newMesh->elementLocalCount = self->elementLocalCount;
-	newMesh->elementDomainCount = self->elementDomainCount;
-	newMesh->elementShadowCount = self->elementShadowCount;
-	newMesh->elementGlobalCount = self->elementGlobalCount;
-	newMesh->buildElementLocalToGlobalMap = self->buildElementLocalToGlobalMap;
-	newMesh->buildElementDomainToGlobalMap = self->buildElementDomainToGlobalMap;
-	newMesh->buildElementGlobalToLocalMap = self->buildElementGlobalToLocalMap;
-	newMesh->buildElementGlobalToDomainMap = self->buildElementGlobalToDomainMap;
-	newMesh->ownsElementLocalToGlobalMap = self->ownsElementLocalToGlobalMap;
-	newMesh->ownsElementDomainToGlobalMap = self->ownsElementDomainToGlobalMap;
-	newMesh->ownsElementGlobalToLocalMap = self->ownsElementGlobalToLocalMap;
-	newMesh->ownsElementGlobalToDomainMap = self->ownsElementGlobalToDomainMap;
-	newMesh->buildElementNeighbourTbl = self->buildElementNeighbourTbl;
-	newMesh->buildElementNodeTbl = self->buildElementNodeTbl;
-	newMesh->ownsElementNeighbourTbl = self->ownsElementNeighbourTbl;
-	newMesh->ownsElementNeighbourCountTbl = self->ownsElementNeighbourCountTbl;
-	newMesh->ownsElementNodeTbl = self->ownsElementNodeTbl;
-	newMesh->ownsElementNodeCountTbl = self->ownsElementNodeCountTbl;
-	newMesh->buildTemporaryGlobalTables = self->buildTemporaryGlobalTables;
-	
-	if( deep ) {
-		newMesh->layout = (MeshLayout*)Stg_Class_Copy( self->layout, NULL, deep, nameExt, map );
-		newMesh->nodeExtensionMgr = (ExtensionManager*)Stg_Class_Copy( self->nodeExtensionMgr, NULL, deep, nameExt, map );
-		newMesh->elementExtensionMgr = (ExtensionManager*)Stg_Class_Copy( self->elementExtensionMgr, NULL, deep, nameExt, map );
-		
-		/* TODO: Temporary */
-		newMesh->node = NULL;
-		newMesh->nodeCoord = NULL;
-		newMesh->nodeL2G = NULL;
-		newMesh->nodeD2G = NULL;
-		newMesh->nodeG2L = NULL;
-		newMesh->nodeG2D = NULL;
-		newMesh->nodeNeighbourTbl = NULL;
-		newMesh->nodeNeighbourCountTbl = NULL;
-		newMesh->nodeElementTbl = NULL;
-		newMesh->nodeElementCountTbl = NULL;
-		newMesh->element = NULL;
-		newMesh->elementL2G = NULL;
-		newMesh->elementD2G = NULL;
-		newMesh->elementG2L = NULL;
-		newMesh->elementG2D = NULL;
-		newMesh->elementNeighbourTbl = NULL;
-		newMesh->elementNeighbourCountTbl = NULL;
-		newMesh->elementNodeTbl = NULL;
-		newMesh->elementNodeCountTbl = NULL;
-		newMesh->syncRequestTbl = NULL;
-		newMesh->syncElementTbl = NULL;
-		newMesh->syncNodeCoordTbl = NULL;
-		newMesh->syncNodeTbl = NULL;
-		newMesh->syncElementSendTbl = NULL;
-		newMesh->syncNodeCoordSendTbl = NULL;
-		newMesh->syncNodeSendTbl = NULL;
-		
-		if( (newMesh->procNbrInfo = PtrMap_Find( map, self->procNbrInfo )) == NULL && self->procNbrInfo ) {
-			newMesh->procNbrInfo = Memory_Alloc( ProcNbrInfo, "Mesh->procNbrInfo" );
-			memcpy( newMesh->procNbrInfo, self->procNbrInfo, sizeof(ProcNbrInfo) );
-		}
-		
-		if( (newMesh->nodeShadowInfo = PtrMap_Find( map, self->nodeShadowInfo )) == NULL && self->nodeShadowInfo ) {
-			newMesh->nodeShadowInfo = Memory_Alloc( ShadowInfo, "Mesh->nodeShadowInfo" );
-			memcpy( newMesh->nodeShadowInfo, self->nodeShadowInfo, sizeof(ShadowInfo) );
-		}
-		
-		if( (newMesh->elementShadowInfo = PtrMap_Find( map, self->elementShadowInfo )) == NULL && self->elementShadowInfo ) {
-			newMesh->elementShadowInfo = Memory_Alloc( ShadowInfo, "Mesh->elementShadowInfo" );
-			memcpy( newMesh->elementShadowInfo, self->elementShadowInfo, sizeof(ShadowInfo) );
-		}
-		
-		/*
-		** TODO: copy everything else.  We can leave it off now though, as we know it won't be used
-		**	 until copying after the build phase.
+		self->dataSyncArrays[d_i] = Decomp_Sync_Array_New();
+		Decomp_Sync_Array_SetSync( self->dataSyncArrays[d_i], self->topo->domains[MT_VERTEX] );
+		/* TODO: Why setting verts as the memory to be synced?
+		Decomp_Sync_Array_SetMemory( self->dataSyncArrays[d_i], 
+					     self->verts[0], self->verts[Mesh_GetLocalSize( self, d_i )], 
+					     size, size, 
+					     size );
 		*/
 	}
-	else {
-		newMesh->layout = self->layout;
-		newMesh->nodeExtensionMgr = self->nodeExtensionMgr;
-		newMesh->elementExtensionMgr = self->elementExtensionMgr;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newMesh;
-}
 
+	/*
+	** Set up the geometric information.
+	*/
 
-void _Mesh_Build( void* mesh, void* data ) {
-	Mesh* self = (Mesh*) mesh;
-
-	/* Run the generator if we have one. */
-	if( self->generator )
-		Build( self->generator, data, False );
-
-	/* Build Layout */
-	Build( self->layout, data, False );
-
-	/* KIND OF HACK: Add the topology to the element layout. */
-	self->layout->elementLayout->topo = self->topo;
-	
-	if ( self->layout->decomp->rank >= self->layout->decomp->procsInUse ) return;
-
-	/* Node counts */
-	self->nodeLocalCount = self->layout->decomp->nodeLocalCount;
-	self->nodeDomainCount = self->layout->decomp->nodeDomainCount;
-	self->nodeShadowCount = self->layout->decomp->nodeShadowCount;
-	self->nodeGlobalCount = self->layout->decomp->nodeGlobalCount;
-
-	/* Element counts */
-	self->elementDomainCount = self->layout->decomp->elementDomainCount;
-	self->elementLocalCount = self->layout->decomp->elementLocalCount;
-	self->elementShadowCount = self->layout->decomp->elementShadowCount;
-	self->elementGlobalCount = self->layout->decomp->elementGlobalCount;
-	
-	_Mesh_BuildNodes( self );
-
-	/* this func checks the individual if statements inside it. */
-	_Mesh_BuildNodeMaps( self );
-
-	if ( self->buildNodeNeighbourTbl )
-		_Mesh_BuildNodeNeighbours( self );
-	if ( self->buildNodeElementTbl ) 
-		_Mesh_BuildNodeElements( self );
-	
-	
-	/* TODO: should we add the option to not build elements for FD 
-	   schemes? will have to think about repercussions */
-
-	_Mesh_BuildElements( self );
-	/* Build element tables */
-	/* this func checks the individual if statements inside it. */
-	_Mesh_BuildElementMaps( self );
-	
-	if ( self->buildElementNeighbourTbl )
-		_Mesh_BuildElementNeighbours( self );
-	if ( self->buildElementNodeTbl ) 
-		_Mesh_BuildElementNodes( self );
-	
-	/* build sync tables (note that they will only build if there is shadowDepth > 0 and
-	   procsInUse > 1) */
-	_Mesh_BuildSyncTables( self );
-
-	ElementLayout_Build( self->layout->elementLayout, self->layout->decomp );
-
-	_Mesh_InitialNodeGeometries( self );
+	self->minAxialSep = Memory_Alloc_Array( double, nDims, "Mesh::minAxialSep" );
+	self->minLocalCrd = Memory_Alloc_Array( double, nDims, "Mesh::minLocalCrd" );
+	self->maxLocalCrd = Memory_Alloc_Array( double, nDims, "Mesh::maxLocalCrd" );
+	self->minDomainCrd = Memory_Alloc_Array( double, nDims, "Mesh::minLocalCrd" );
+	self->maxDomainCrd = Memory_Alloc_Array( double, nDims, "Mesh::maxLocalCrd" );
+	self->minGlobalCrd = Memory_Alloc_Array( double, nDims, "Mesh::minGlobalCrd" );
+	self->maxGlobalCrd = Memory_Alloc_Array( double, nDims, "Mesh::maxGlobalCrd" );
+	Mesh_DeformationUpdate( self );
 }
 
-
-void _Mesh_BuildNodes( void* mesh ) {
-	Mesh*		self = (Mesh*) mesh;
-	
-	/* Allocate node array (local node array appended by shadow node arrays) */
-	self->node = (Node_List)ExtensionManager_Malloc( self->nodeExtensionMgr, self->nodeDomainCount );
+void _Mesh_Initialise( void* mesh, void* data ) {
 }
 
-
-void _Mesh_BuildElements( void* mesh ) {
- 	Mesh*		self = (Mesh*)mesh;
-	
-	/* Allocate node array (local node array appended by shadow node arrays) */
-	self->element = (Element_List)ExtensionManager_Malloc( self->elementExtensionMgr, self->elementDomainCount );
+void _Mesh_Execute( void* mesh, void* data ) {
 }
 
-
-void _Mesh_BuildNodeMaps( void* mesh ) {
-	Mesh*		self = (Mesh*) mesh;
-	MeshDecomp*     decomp = self->layout->decomp;
-
-	if( self->buildNodeDomainToGlobalMap ) {
-		self->nodeD2G = MeshDecomp_BuildNodeDomainToGlobalMap( decomp );
-	}
-	if( self->buildNodeLocalToGlobalMap ) {
-		/* if domain to global built, share pointer */
-		if ( self->nodeD2G ) {
-			self->nodeL2G = self->nodeD2G;
-		}
-		else {
-			self->nodeL2G = MeshDecomp_BuildNodeLocalToGlobalMap( decomp );
-		}	
-	}
-	if( self->buildNodeGlobalToDomainMap ) {
-		self->nodeG2D = MeshDecomp_BuildNodeGlobalToDomainMap( decomp );
-	}
-	if( self->buildNodeGlobalToLocalMap ) {
-		/* if we have build nodeG2D, and no shadowing is active, then
-		   nodeG2L will be exactly the same as it - just share the 
-		   pointer */
-		if ( self->nodeG2D && (0 == self->nodeShadowCount) ) {
-			self->nodeG2L = self->nodeG2D;
-		}
-		else {	
-			self->nodeG2L = MeshDecomp_BuildNodeGlobalToLocalMap( decomp );
-		}	
-	}
+void _Mesh_Destroy( void* mesh, void* data ) {
 }
 
 
-void _Mesh_BuildNodeNeighbours( void* mesh ) {
-	Mesh*		self = (Mesh*)mesh;
-	MeshDecomp*     decomp = self->layout->decomp;
-	Topology*       topology = self->layout->nodeLayout->topology;
-	Node_Index      dNode_I;
-	Node_NeighbourIndex neighbourIndex;
-	Node_GlobalIndex* nodeD2G = self->nodeD2G;
-	Bool nodeD2GBuiltTemporarily = False;
-	Bool nodeG2DBuiltTemporarily = False;
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
 
-	if ( !nodeD2G ) {
-		nodeD2G = MeshDecomp_BuildNodeDomainToGlobalMap( decomp );
-		nodeD2GBuiltTemporarily = True;
-	}
+void Mesh_SetExtensionManagerRegister( void* mesh, void* extMgrReg ) {
+	Mesh*	self = (Mesh*)mesh;
 
-	if ( (self->buildTemporaryGlobalTables == True) && (self->nodeG2D == 0) ) {
-		self->nodeG2D = MeshDecomp_BuildNodeGlobalToDomainMap( self->layout->decomp );
-		nodeG2DBuiltTemporarily = True;
-	}
+	assert( self );
 
-	self->nodeNeighbourCountTbl = Memory_Alloc_Array( Node_NeighbourIndex, self->nodeDomainCount,
-							  "Mesh->nodeNeighbourCountTbl" );
-	
-	/* Build complex 2D array indices */
-	for( dNode_I = 0; dNode_I < self->nodeDomainCount; dNode_I++ ) {
-
-		self->nodeNeighbourCountTbl[dNode_I] = topology->neighbourCount( topology, nodeD2G[dNode_I] );	
-	}
-	
-	self->nodeNeighbourTbl = Memory_Alloc_2DComplex( Node_DomainIndex, self->nodeDomainCount, self->nodeNeighbourCountTbl,
-							 "Mesh->nodeNeighbourTbl" );
-	
-	/* Build neighbour list */
-	for( dNode_I = 0; dNode_I < self->nodeDomainCount; dNode_I++ ) {
-		
-		/* Build neighbour info for global index */
-		topology->buildNeighbours( topology, nodeD2G[dNode_I], self->nodeNeighbourTbl[dNode_I] );
-		
-		/* self->nodeNeighbourTbl currently stores global indices... map to node array indices */
-		/* TODO: should change nLayout to store in local indices */
-		for( neighbourIndex = 0; neighbourIndex < self->nodeNeighbourCountTbl[dNode_I]; neighbourIndex++ ) {
-			self->nodeNeighbourTbl[dNode_I][neighbourIndex] = Mesh_NodeMapGlobalToDomain( self, 
-												      self->nodeNeighbourTbl[dNode_I][neighbourIndex] );
-		}
-	}
-	
-	if ( nodeD2GBuiltTemporarily == True) {
-		Memory_Free( nodeD2G );
-		self->nodeD2G = NULL;
-	}	
-	if ( nodeG2DBuiltTemporarily ) {
-		Memory_Free( self->nodeG2D );
-		self->nodeG2D = NULL;
-	}
+	self->emReg = extMgrReg;
+	if( extMgrReg )
+		ExtensionManager_Register_Add( extMgrReg, self->info );
 }
 
+void Mesh_SetTopologyDataSize( void* mesh, MeshTopology_Dim dim, unsigned size ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_BuildNodeElements( void* mesh ) {
-	Mesh*		self = (Mesh*)mesh;
-	MeshDecomp*     decomp = self->layout->decomp;
-	NodeLayout*     nLayout = self->layout->nodeLayout;
-	Node_DomainIndex	dNode_I;
-	Node_GlobalIndex*	nodeD2G = self->nodeD2G;
-	Bool				nodeD2GBuiltTemporarily = False;
-	Bool				elementG2DBuiltTemporarily = False;
+	assert( self );
 
-	Node_ElementIndex elementIndex;
+	UIntMap_Insert( self->topoDataSizes, dim, size );
+}
 
-	if ( !nodeD2G ) {
-		nodeD2G = MeshDecomp_BuildNodeDomainToGlobalMap( decomp );
-		nodeD2GBuiltTemporarily = True;
-	}
+void Mesh_SetGenerator( void* mesh, void* generator ) {
+	Mesh*	self = (Mesh*)mesh;
 
-	if	( (self->buildTemporaryGlobalTables == True) && (self->elementG2D == 0) ) 
-	{
-		self->elementG2D = MeshDecomp_BuildElementGlobalToDomainMap( self->layout->decomp );
-		elementG2DBuiltTemporarily = True;
-	}
-	
-	self->nodeElementCountTbl = Memory_Alloc_Array( Node_ElementIndex, self->nodeDomainCount, "Mesh->nodeElementCountTbl" );
+	assert( self );
 
-	/* Build counts of nodes per element */
-	for( dNode_I = 0; dNode_I < self->nodeDomainCount; dNode_I++ ) {
-		self->nodeElementCountTbl[dNode_I] = nLayout->nodeElementCount( nLayout, nodeD2G[dNode_I] );
-	}
-
-	self->nodeElementTbl = (Node_ElementsList)Memory_Alloc_2DComplex( Element_DomainIndex,
-									  self->nodeDomainCount, self->nodeElementCountTbl, "Mesh->nodeElementTbl" );
-	
-	/* Build element list */
-	for( dNode_I = 0; dNode_I < self->nodeDomainCount; dNode_I++ ) {
-		/* Build element info for global index */
-
-		nLayout->buildNodeElements( nLayout, nodeD2G[dNode_I], self->nodeElementTbl[dNode_I] );
-		
-		/* self->nodeElementTbl currently stores global indices... map to node array indices */
-		for( elementIndex = 0; elementIndex < self->nodeElementCountTbl[dNode_I]; elementIndex++ ) {
-			self->nodeElementTbl[dNode_I][elementIndex] = Mesh_ElementMapGlobalToDomain( self, 
-												     self->nodeElementTbl[dNode_I][elementIndex] );
-		}
-	}
-	
-	if ( nodeD2GBuiltTemporarily ) {
-		Memory_Free( nodeD2G );
-		self->nodeD2G = NULL;
-	}
-	
-	if ( elementG2DBuiltTemporarily == True ) {
-		Memory_Free( self->elementG2D );
-		self->elementG2D = NULL;
-	}
+	Mesh_Destruct( self );
+	self->generator = generator;
 }
 
+void Mesh_SetAlgorithms( void* mesh, void* algorithms ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_BuildElementMaps( void* mesh ) {
-	Mesh*		self = (Mesh*) mesh;
-	MeshDecomp*  decomp = self->layout->decomp;
+	assert( self && Stg_CheckType( self, Mesh ) );
 
-	if( self->buildElementDomainToGlobalMap ) {
-		self->elementD2G = MeshDecomp_BuildElementDomainToGlobalMap( decomp );
+	FreeObject( self->algorithms );
+	if( algorithms ) {
+		assert( Stg_CheckType( algorithms, Mesh_Algorithms ) );
+		self->algorithms = algorithms;
 	}
-	if( self->buildElementLocalToGlobalMap ) {
-		/* if domain to global built, share pointer */
-		if ( self->elementD2G ) {
-			self->elementL2G = self->elementD2G;
-		}
-		else {
-			self->elementL2G = MeshDecomp_BuildElementLocalToGlobalMap( decomp );
-		}	
-	}
-	if( self->buildElementGlobalToDomainMap ) {
-		self->elementG2D = MeshDecomp_BuildElementGlobalToDomainMap( decomp );
-	}
-	if( self->buildElementGlobalToLocalMap ) {
-		/* if we have build elementG2D, and no shadowing is active, then
-		   elementG2L will be exactly the same as it - just share the 
-		   pointer */
-		if ( self->elementG2D && (0 == self->elementShadowCount) ) {
-			self->elementG2L = self->elementG2D;
-		}
-		else {	
-			self->elementG2L = MeshDecomp_BuildElementGlobalToLocalMap( decomp );
-		}	
-	}
+	else
+		self->algorithms = Mesh_Algorithms_New( "" );
 }
 
+unsigned Mesh_GetDimSize( void* mesh ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_BuildElementNeighbours( void* mesh ) {
-	Mesh*		self = (Mesh*)mesh;
-	MeshDecomp*     decomp = self->layout->decomp;
-	Topology*       topology = self->layout->elementLayout->topology;
-	Element_Index      dElement_I;
-	Element_NeighbourIndex neighbourIndex;
-	Element_GlobalIndex* elementD2G = self->elementD2G;
-	Bool elementD2GBuiltTemporarily = False;
-	Bool elementG2DBuiltTemporarily = False;
+	assert( self );
+	assert( self->topo );
 
-	if ( !elementD2G ) {
-		elementD2G = MeshDecomp_BuildElementDomainToGlobalMap( decomp );
-		elementD2GBuiltTemporarily = True;
-	}
-
-	if	( (self->buildTemporaryGlobalTables == True) && (self->elementG2D == 0) ) 
-	{
-		self->elementG2D = MeshDecomp_BuildElementGlobalToDomainMap( self->layout->decomp );
-		elementG2DBuiltTemporarily = True;
-	}
-	self->elementNeighbourCountTbl = Memory_Alloc_Array( Element_NeighbourIndex, self->elementDomainCount,
-							     "Mesh->elementNeighbourCountTbl" );
-	/* Build complex 2D array indices */
-	for( dElement_I = 0; dElement_I < self->elementDomainCount; dElement_I++ ) {
-		self->elementNeighbourCountTbl[dElement_I] = topology->neighbourCount( topology, elementD2G[dElement_I] );	
-	}
-	
-	self->elementNeighbourTbl = Memory_Alloc_2DComplex( Element_DomainIndex, self->elementDomainCount,
-							    self->elementNeighbourCountTbl, "Mesh->elementNeighbourTbl" );
-	
-	/* Build neighbour list */
-	for( dElement_I = 0; dElement_I < self->elementDomainCount; dElement_I++ ) {
-		
-		/* Build neighbour info for global index */
-		topology->buildNeighbours( topology, elementD2G[dElement_I], self->elementNeighbourTbl[dElement_I] );
-		
-		/* self->elementNeighbourTbl currently stores global indices... map to domain array indices */
-		/* TODO: should change eLayout to store in local indices */
-		for( neighbourIndex = 0; neighbourIndex < self->elementNeighbourCountTbl[dElement_I]; neighbourIndex++ ) {
-			self->elementNeighbourTbl[dElement_I][neighbourIndex] = Mesh_ElementMapGlobalToDomain( self, 
-													       self->elementNeighbourTbl[dElement_I][neighbourIndex] );
-		}
-	}
-	
-	if ( elementD2GBuiltTemporarily == True) {
-		Memory_Free( elementD2G );
-		self->elementD2G = NULL;
-	}	
-
-	if ( elementG2DBuiltTemporarily == True ) {
-		Memory_Free( self->elementG2D );
-		self->elementG2D = NULL;
-	}
+	return self->topo->nDims;
 }
 
+unsigned Mesh_GetGlobalSize( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_BuildElementNodes( void* mesh ) {
-	Mesh*			self = (Mesh*)mesh;
-	MeshDecomp*		decomp = self->layout->decomp;
-	NodeLayout*		nLayout = self->layout->nodeLayout;
-	Element_DomainIndex	dElement_I;
-	Element_GlobalIndex*	elementD2G = self->elementD2G;
-	Bool			elementD2GBuiltTemporarily = False;
-	Bool			nodeG2DBuiltTemporarily = False;
+	assert( self );
+	assert( self->topo );
 
-	Element_NodeIndex nodeIndex;
+	return MeshTopology_GetGlobalSize( self->topo, dim );
+}
 
-	if ( !elementD2G ) {
-		elementD2G = MeshDecomp_BuildElementDomainToGlobalMap( decomp );
-		elementD2GBuiltTemporarily = True;
-	}
-	
-	if ( (self->buildTemporaryGlobalTables == True) && (self->nodeG2D == 0) ) {
-		self->nodeG2D = MeshDecomp_BuildNodeGlobalToDomainMap( self->layout->decomp );
-		nodeG2DBuiltTemporarily = True;
-	}
+unsigned Mesh_GetLocalSize( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-	self->elementNodeCountTbl = Memory_Alloc_Array( Element_NodeIndex, self->elementDomainCount, "Mesh->elementNodeCountTbl" );
+	assert( self );
+	assert( self->topo );
 
-	/* Build counts of nodes per element */
-	for( dElement_I = 0; dElement_I < self->elementDomainCount; dElement_I++ ) {
-		self->elementNodeCountTbl[dElement_I] = nLayout->elementNodeCount( nLayout, elementD2G[dElement_I] );
-	}
-
-	self->elementNodeTbl = Memory_Alloc_2DComplex( Node_DomainIndex,
-						       self->elementDomainCount, self->elementNodeCountTbl, "Mesh->elementNodeTbl" );
-	
-	/* Build element list */
-	for( dElement_I = 0; dElement_I < self->elementDomainCount; dElement_I++ ) {
-		/* Build element info for global index */
-
-		nLayout->buildElementNodes( nLayout, elementD2G[dElement_I], self->elementNodeTbl[dElement_I] );
-		
-		/* self->elementNodesTbl currently stores global indices... map to element array indices */
-		for( nodeIndex = 0; nodeIndex < self->elementNodeCountTbl[dElement_I]; nodeIndex++ ) {
-			self->elementNodeTbl[dElement_I][nodeIndex] = Mesh_NodeMapGlobalToDomain( self, 
-												  self->elementNodeTbl[dElement_I][nodeIndex] );
-		}
-	}
-	
-	if ( elementD2GBuiltTemporarily ) {
-		Memory_Free( elementD2G );
-		self->elementD2G = NULL;
-	}
-
-	if ( nodeG2DBuiltTemporarily ) {
-		Memory_Free( self->nodeG2D );
-		self->nodeG2D = NULL;
-	}
+	return MeshTopology_GetLocalSize( self->topo, dim );
 }
 
+unsigned Mesh_GetRemoteSize( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_Initialise( void* mesh, void* data ) {
-	
-}
+	assert( self );
+	assert( self->topo );
 
-
-void _Mesh_Execute( void* mesh, void* data ) {
-	/* Do nothing */
+	return MeshTopology_GetRemoteSize( self->topo, dim );
 }
 
+unsigned Mesh_GetDomainSize( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
+	assert( self );
+	assert( self->topo );
 
-
-Node_GlobalIndex Mesh_NodeMapLocalToGlobal( void* mesh, Node_LocalIndex localIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( localIndex >= self->nodeLocalCount )
-		return Mesh_Node_Invalid( self );
-
-	if( self->nodeL2G ) {
-		return self->nodeL2G[localIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapLocalToGlobal( decomp, localIndex );
-	}
+	return MeshTopology_GetDomainSize( self->topo, dim );
 }
 
+unsigned Mesh_GetSharedSize( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Node_GlobalIndex Mesh_NodeMapShadowToGlobal( void* mesh, Node_ShadowIndex shadowIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( shadowIndex >= self->nodeShadowCount ) {
-		return Mesh_Node_Invalid( self );
-	}	
-	else if (self->nodeD2G ) {
-		return self->nodeD2G[self->nodeLocalCount+shadowIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapShadowToGlobal( self, shadowIndex );
-	}
-}
+	assert( self );
+	assert( self->topo );
 
-
-Node_GlobalIndex Mesh_NodeMapDomainToGlobal( void* mesh, Node_DomainIndex domainIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( domainIndex >= self->nodeDomainCount ) {
-		return Mesh_Element_Invalid( self );
-	}	
-	else if (self->nodeD2G ) {
-		return self->nodeD2G[domainIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapDomainToGlobal( decomp, domainIndex );
-	}
+	return MeshTopology_GetSharedSize( self->topo, dim );
 }
 
+MeshTopology* Mesh_GetTopology( void* mesh ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Node_LocalIndex Mesh_NodeMapGlobalToLocal( void* mesh, Node_GlobalIndex globalIndex ) {
-	Mesh*		self = (Mesh*)mesh;
-	
-	if ( globalIndex >= self->nodeGlobalCount ) 
-	{	
-		return Mesh_Node_Invalid( self );
-	}	
-	else if( self->nodeG2L ) {
-		return self->nodeG2L[globalIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapGlobalToLocal( decomp, globalIndex);
-	}
-}
+	assert( self );
 
-
-Node_DomainIndex Mesh_NodeMapGlobalToDomain( void* mesh, Node_GlobalIndex globalIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if( globalIndex >= self->nodeGlobalCount ) {
-		return Mesh_Node_Invalid( self );
-	}	
-	else if ( self->nodeG2D ) {
-		return self->nodeG2D[globalIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapGlobalToDomain( decomp, globalIndex);
-	}
+	return self->topo;
 }
 
+Decomp_Sync* Mesh_GetSync( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Node_ShadowIndex Mesh_NodeMapGlobalToShadow( void* mesh, Node_GlobalIndex globalIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( ( globalIndex >= self->nodeGlobalCount ) || 
-	     (0 == self->nodeShadowCount ) ) 
-	{	
-		return Mesh_Node_Invalid( self );
-	}	
-	else if ( self->nodeG2D ) {
-		Node_DomainIndex dNode_I;
-		dNode_I = self->nodeG2D[globalIndex];
-		if ( (dNode_I != MD_N_Invalid( self )) && (dNode_I >= self->nodeLocalCount ) ) {
-			return dNode_I - self->nodeLocalCount;
-		}
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->nodeMapGlobalToShadow( decomp, globalIndex );
-	}
-	
-	return Mesh_Node_Invalid( self );
-}
+	assert( self );
 
-
-#define M_N_IsL1D( self, localIndex )				\
-	((localIndex) < (self)->nodeLocalCount ? True : False)
-
-Bool _Mesh_Node_IsLocal1D( void* mesh, Node_LocalIndex localIndex ) {
-	return M_N_IsL1D( (Mesh*)mesh, localIndex );
+	return MeshTopology_GetSync( self->topo, dim );
 }
 
+Bool Mesh_GlobalToDomain( void* mesh, MeshTopology_Dim dim, unsigned global, unsigned* domain ) {
+	Mesh*	self = (Mesh*)mesh;
 
-#define M_N_IsS1D( self, shadowIndex )					\
-	((shadowIndex) < (self)->nodeShadowCount ? True : False)
+	assert( self );
+	assert( self->topo );
 
-Bool _Mesh_Node_IsShadow1D( void* mesh, Node_ShadowIndex shadowIndex ) {
-	return M_N_IsS1D( (Mesh*)mesh, shadowIndex );
+	return MeshTopology_GlobalToDomain( self->topo, dim, global, domain );
 }
 
+unsigned Mesh_DomainToGlobal( void* mesh, MeshTopology_Dim dim, unsigned domain ) {
+	Mesh*	self = (Mesh*)mesh;
 
-/* Element virtual functions */
+	assert( self );
+	assert( self->topo );
 
-Element_GlobalIndex Mesh_ElementMapLocalToGlobal( void* mesh, Element_LocalIndex localIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( localIndex >= self->elementLocalCount )
-		return Mesh_Element_Invalid( self );
-
-	if( self->elementL2G ) {
-		return self->elementL2G[localIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapLocalToGlobal( decomp, localIndex );
-	}
+	return MeshTopology_DomainToGlobal( self->topo, dim, domain );
 }
 
+Bool Mesh_LocalToShared( void* mesh, MeshTopology_Dim dim, unsigned local, unsigned* shared ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Element_GlobalIndex Mesh_ElementMapShadowToGlobal( void* mesh, Element_ShadowIndex shadowIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( shadowIndex >= self->elementShadowCount ) {
-		return Mesh_Element_Invalid( self );
-	}	
-	else if (self->elementD2G ) {
-		return self->elementD2G[self->elementLocalCount+shadowIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapShadowToGlobal( self, shadowIndex );
-	}
-}
+	assert( self );
+	assert( self->topo );
 
-
-Element_GlobalIndex Mesh_ElementMapDomainToGlobal( void* mesh, Element_DomainIndex domainIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( domainIndex >= self->elementDomainCount ) {
-		return Mesh_Element_Invalid( self );
-	}	
-	else if (self->elementD2G ) {
-		return self->elementD2G[domainIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapDomainToGlobal( decomp, domainIndex );
-	}
+	return MeshTopology_LocalToShared( self->topo, dim, local, shared );
 }
 
+unsigned Mesh_SharedToLocal( void* mesh, MeshTopology_Dim dim, unsigned shared ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Element_LocalIndex Mesh_ElementMapGlobalToLocal( void* mesh, Element_GlobalIndex globalIndex ) {
-	Mesh*		self = (Mesh*)mesh;
-	
-	if ( globalIndex >= self->elementGlobalCount ) 
-	{	
-		return Mesh_Element_Invalid( self );
-	}	
-	else if( self->elementG2L ) {
-		return self->elementG2L[globalIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapGlobalToLocal( decomp, globalIndex);
-	}
-}
+	assert( self );
+	assert( self->topo );
 
-
-Element_DomainIndex Mesh_ElementMapGlobalToDomain( void* mesh, Element_GlobalIndex globalIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if( globalIndex >= self->elementGlobalCount ) {
-		return Mesh_Element_Invalid( self );
-	}	
-	else if ( self->elementG2D ) {
-		return self->elementG2D[globalIndex];
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapGlobalToDomain( decomp, globalIndex);
-	}
+	return MeshTopology_SharedToLocal( self->topo, dim, shared );
 }
 
+unsigned Mesh_GetOwner( void* mesh, MeshTopology_Dim dim, unsigned remote ) {
+	Mesh*	self = (Mesh*)mesh;
 
-Element_ShadowIndex Mesh_ElementMapGlobalToShadow( void* mesh, Element_GlobalIndex globalIndex ) {
-	Mesh* self = (Mesh*)mesh;
-	
-	if ( ( globalIndex >= self->elementGlobalCount ) || 
-	     (0 == self->elementShadowCount ) ) 
-	{	
-		return Mesh_Element_Invalid( self );
-	}	
-	else if ( self->elementG2D ) {
-		Element_DomainIndex dElement_I;
-		dElement_I = self->elementG2D[globalIndex];
-		if ( (dElement_I != MD_E_Invalid( self )) && (dElement_I >= self->elementLocalCount ) ) {
-			return dElement_I - self->elementLocalCount;
-		}
-	}
-	else {
-		MeshDecomp*     decomp = self->layout->decomp;
-		return decomp->elementMapGlobalToShadow( decomp, globalIndex );
-	}
-	
-	return Mesh_Element_Invalid( self );
-}
+	assert( self );
 
-
-#define M_E_IsL1D( self, localIndex )					\
-	(((localIndex) < (self)->nodeLocalCount) ? True : False)
-
-Bool _Mesh_Element_IsLocal1D( void* mesh, Element_LocalIndex localIndex ) {
-	return M_E_IsL1D( (Mesh*)mesh, localIndex );
+	return MeshTopology_GetOwner( self->topo, dim, remote );
 }
 
+void Mesh_GetSharers( void* mesh, MeshTopology_Dim dim, unsigned shared, 
+		      unsigned* nSharers, unsigned** sharers )
+{
+	Mesh*	self = (Mesh*)mesh;
 
-#define M_E_IsS1D( self, shadowIndex )					\
-	(((shadowIndex) < (self)->nodeShadowCount) ? True : False)
+	assert( self );
+	assert( self->topo );
 
-Bool _Mesh_Element_IsShadow1D( void* mesh, Element_ShadowIndex shadowIndex ) {
-	return M_E_IsS1D( (Mesh*)mesh, shadowIndex );
+	MeshTopology_GetSharers( self->topo, dim, shared, nSharers, sharers );
 }
 
+Bool Mesh_HasIncidence( void* mesh, MeshTopology_Dim fromDim, MeshTopology_Dim toDim ) {
+	Mesh*	self = (Mesh*)mesh;
 
+	assert( self );
+	assert( self->topo );
 
-
-double* Mesh_CoordAtFunc( Mesh* self, Node_DomainIndex node_dI ) {
-	return Mesh_CoordAtMacro( self, node_dI );
+	return MeshTopology_HasIncidence( self->topo, fromDim, toDim );
 }
 
-Node* Mesh_NodeAtFunc( Mesh* self, Node_DomainIndex node_dI ) {
-	return Mesh_NodeAtMacro( self, node_dI );
-}
+unsigned Mesh_GetIncidenceSize( void* mesh, MeshTopology_Dim fromDim, unsigned fromInd, 
+				MeshTopology_Dim toDim )
+{
+	Mesh*	self = (Mesh*)mesh;
 
-Element* Mesh_ElementAtFunc( Mesh* self, Element_DomainIndex element_dI ) {
-	return Mesh_ElementAtMacro( self, element_dI );
-}
+	assert( self );
 
-
-void Mesh_GetNodeCoordPtrsOfElement( void* mesh, Element_DomainIndex element_dI, Coord** nodeCoordPtrs ) {
-	Mesh*			self = (Mesh*)mesh;
-	Node_ElementLocalIndex	node_elLocalI = 0;
-	Node_ElementLocalIndex	currElNodeCount = 0;
-
-	currElNodeCount = self->elementNodeCountTbl[element_dI];
-	
-	for ( node_elLocalI=0; node_elLocalI < currElNodeCount; node_elLocalI++ ) {
-		nodeCoordPtrs[node_elLocalI] = &( Mesh_CoordAt( self, self->elementNodeTbl[element_dI][node_elLocalI] ));
-	}
+	return MeshTopology_GetIncidenceSize( self->topo, fromDim, fromInd, toDim );
 }
 
+void Mesh_GetIncidence( void* mesh, MeshTopology_Dim fromDim, unsigned fromInd, MeshTopology_Dim toDim, 
+			unsigned* nInc, unsigned** inc )
+{
+	Mesh*	self = (Mesh*)mesh;
 
-void Mesh_PrintNodeCoordsOfElement( void* mesh, Element_DomainIndex element_dI, Stream* stream ) {
-	Mesh*			self = (Mesh*)mesh;
-	Node_ElementLocalIndex	node_elLocalI = 0;
-	Node_ElementLocalIndex	currElementNodeCount = 0;
-	Coord**			coordPtrs = Memory_Alloc_Array_Unnamed( Coord*, self->elementNodeCountTbl[element_dI] );
-	Coord*			coordPtr = NULL;
+	assert( self );
+	assert( self->topo );
 
-	currElementNodeCount = self->elementNodeCountTbl[element_dI];
-	Mesh_GetNodeCoordPtrsOfElement( self, element_dI, coordPtrs );
-
-	for ( node_elLocalI = 0; node_elLocalI < currElementNodeCount; node_elLocalI++ ) {
-		coordPtr = coordPtrs[node_elLocalI];
-		Journal_Printf( stream, "(%.2f,%.2f,%.2f), ", (*coordPtr)[0], (*coordPtr)[1],
-				(*coordPtr)[2] );
-	}
-	Journal_Printf( stream, "\n" );
-	Memory_Free( coordPtrs );
+	MeshTopology_GetIncidence( self->topo, fromDim, fromInd, toDim, nInc, inc );
 }
 
+#define Vec_Sep( nDims, v0, v1 )		    				\
+	(((v0)[0] - (v1)[0]) * ((v0)[0] - (v1)[0]) + 				\
+	((v0)[1] - (v1)[1]) * ((v0)[1] - (v1)[1]) + 				\
+	(((nDims) == 3) ? (((v0)[2] - (v1)[2]) * ((v0)[2] - (v1)[2])) : 0))
 
-unsigned Mesh_ClosestNode( void* _self, Coord crd ) {
-	Mesh*		self = (Mesh*)_self;
+unsigned Mesh_NearestVertex( void* mesh, double* point ) {
+	Mesh*		self = (Mesh*)mesh;
+	unsigned	nDims;
+	unsigned	curVert;
+	double		sep;
 	Bool		done;
-	Coord*		nodeCrds = self->nodeCoord;
-	unsigned	curNode;
-	unsigned	nDims = self->nSpaceDims;
-	double		dist, tmp;
-	unsigned	d_i;
 
-	/* Must have neighbours enabled. */
-	assert( self->buildNodeNeighbourTbl && self->nodeNeighbourTbl );
+	assert( self );
+	assert( Mesh_HasIncidence( self, MT_VERTEX, MT_VERTEX ) );
 
+	/* Get dimensionality. */
+	nDims = Mesh_GetDimSize( self );
+
 	/* Begin somewhere in the middle. */
-	curNode = self->nodeDomainCount / 2;
+	curVert = Mesh_GetDomainSize( self, MT_VERTEX ) / 2;
 
 	/* Calc distance squared to current node. */
-	tmp = nodeCrds[curNode][0] - crd[0];
-	dist = tmp * tmp;
-	for( d_i = 1; d_i < nDims; d_i++ ) {
-		tmp = nodeCrds[curNode][d_i] - crd[d_i];
-		dist += tmp * tmp;
-	}
+	sep = Vec_Sep( nDims, Mesh_GetVertex( self, curVert ), point );
 
 	/* Loop until we've found closest local node. */
 	do {
-		unsigned	nNbrs = self->nodeNeighbourCountTbl[curNode];
-		unsigned*	nbrs = self->nodeNeighbourTbl[curNode];
+		unsigned	nNbrs;
+		unsigned*	nbrs;
 		unsigned	nbr_i;
 
+		/* Get neighbouring vertices. */
+		Mesh_GetIncidence( self, MT_VERTEX, curVert, MT_VERTEX, &nNbrs, &nbrs );
+
 		/* Assume we'll be done after this loop. */
 		done = True;
 
 		/* Compare to neighbours. */
 		for( nbr_i = 0; nbr_i < nNbrs; nbr_i++ ) {
-			double	nbrDist;
+			double	nbrSep;
 
-			/* Skip invalid neighbours. */
-			if( nbrs[nbr_i] >= self->nodeDomainCount )
-				continue;
+			/* Calculate neighbour separation. */
+			nbrSep = Vec_Sep( nDims, Mesh_GetVertex( self, nbrs[nbr_i] ), point );
 
-			tmp = nodeCrds[nbrs[nbr_i]][0] - crd[0];
-			nbrDist = tmp * tmp;
-			for( d_i = 1; d_i < nDims; d_i++ ) {
-				tmp = nodeCrds[nbrs[nbr_i]][d_i] - crd[d_i];
-				nbrDist += tmp * tmp;
-			}
-
-			if( nbrDist < dist ) {
-				curNode = nbrs[nbr_i];
-				dist = nbrDist;
+			/* Closer? */
+			if( nbrSep < sep ) {
+				curVert = nbrs[nbr_i];
+				sep = nbrSep;
 				done = False;
 			}
 		}
 	}
 	while( !done );
 
-	return curNode;
+	return curVert;
 }
 
+Bool Mesh_Search( void* mesh, double* point, 
+		  MeshTopology_Dim* dim, unsigned* ind )
+{
+	Mesh*	self = (Mesh*)mesh;
 
-double Mesh_NodeSeparation( Mesh* self ) {
-	double		sep = HUGE_VAL;
-	unsigned	e_i;
-
 	assert( self );
 
-	for( e_i = 0; e_i < self->elementDomainCount; e_i++ ) {
-		unsigned	en_i;
+	return Mesh_Algorithms_Search( self->algorithms, self, point, dim, ind );
+}
 
-		for( en_i = 0; en_i < self->elementNodeCountTbl[e_i]; en_i++ ) {
-			unsigned	nIndI = self->elementNodeTbl[e_i][en_i];
-			unsigned	en_j;
+Bool Mesh_ElementHasPoint( void* mesh, unsigned element, double* point, 
+			   MeshTopology_Dim* dim, unsigned* ind )
+{
+	Mesh*	self = (Mesh*)mesh;
 
-			for( en_j = en_i + 1; en_j < self->elementNodeCountTbl[e_i]; en_j++ ) {
-				unsigned	nIndJ = self->elementNodeTbl[e_i][en_j];
-				Coord		tmp;
-				double		curSep;
+	assert( self );
+	assert( element < Mesh_GetDomainSize( self, Mesh_GetDimSize( self ) ) );
+	assert( self->elTypeMap );
+	assert( self->elTypeMap[element] < self->nElTypes );
+	assert( self->elTypes[self->elTypeMap[element]] );
 
-				Vector_Sub( tmp, self->nodeCoord[nIndI], self->nodeCoord[nIndJ] );
-				curSep = Vector_Mag( tmp );
-				if( curSep < sep ) sep = curSep;
-			}
-		}
-	}
-
-	return sep;
+	return Mesh_ElementType_ElementHasPoint( self->elTypes[self->elTypeMap[element]], self, element, point, 
+						 dim, ind );
 }
 
+Mesh_ElementType* Mesh_GetElementType( void* mesh, unsigned element ) {
+	Mesh*	self = (Mesh*)mesh;
 
-unsigned Mesh_ElementWithPoint( void* mesh, Coord pnt, PartitionBoundaryStatus bndStat ) {
-	Mesh*		self = (Mesh*)mesh;
-	ElementLayout*	eLyt = self->layout->elementLayout;
+	assert( self );
+	assert( element < Mesh_GetDomainSize( self, Mesh_GetDimSize( self ) ) );
+	assert( self->elTypeMap );
+	assert( self->elTypeMap[element] < self->nElTypes );
+	assert( self->elTypes );
 
-	/* If using ParallelPipedHexaEL, just run it as it's bloody quick. */
-	if( eLyt->type == ParallelPipedHexaEL_Type )
-		return eLyt->elementWithPoint( eLyt, self->layout->decomp, pnt, self, bndStat, 0, NULL );
-	else if( self->nodeNeighbourTbl ) {
-		unsigned	closeNode;
-		unsigned	elInd;
+	return self->elTypes[self->elTypeMap[element]];
+}
 
-		/* If node neighbour table is built, use it to speed things up. */
-		closeNode = Mesh_ClosestNode( self, pnt );
-		elInd = eLyt->elementWithPoint( eLyt, self->layout->decomp, pnt, self, bndStat, 
-						self->nodeElementCountTbl[closeNode], self->nodeElementTbl[closeNode] );
-		if( elInd >= self->elementDomainCount )
-			elInd = eLyt->elementWithPoint( eLyt, self->layout->decomp, pnt, self, bndStat, 0, NULL );
+CommTopology* Mesh_GetCommTopology( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
 
-		return elInd;
-	}
-	else
-		return eLyt->elementWithPoint( eLyt, self->layout->decomp, pnt, self, bndStat, 0, NULL );
+	assert( self );
+
+	return MeshTopology_GetCommTopology( self->topo, dim );
 }
 
+double* Mesh_GetVertex( void* mesh, unsigned domain ) {
+	Mesh*	self = (Mesh*)mesh;
 
-#define tagElementExt	300
-#define tagNodeCoord	301
-#define tagNodeExt	302
+	assert( self );
+	assert( domain < Mesh_GetDomainSize( self, MT_VERTEX ) );
+	assert( self->verts );
 
-void Mesh_Sync( void* mesh ) {
-	Mesh*			self = (Mesh*)mesh;
-	Neighbour_Index		nbr_I;
-	
+	return self->verts[domain];
+}
+
+void* Mesh_GetTopologyData( void* mesh, MeshTopology_Dim dim ) {
+	Mesh*	self = (Mesh*)mesh;
+
 	assert( self );
+	assert( self->topoDatas );
+	assert( dim < Mesh_GetDimSize( self ) );
 
-#if 0
-	if( self->layout->decomp->shadowDepth == 0 || self->layout->decomp->procsInUse == 1 ) {
-		printf( "Warning: attempting to sync a mesh under inappropriate circumstances (either\
-			shadowDepth = 0 or only one CPU in use)." );
-		return;
-	}
-#endif
-	
-	
-	/*
-	 * Initiate non-blocking receives for all data.
-	 */
-	
-	for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-		NeighbourIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-		MPI_Comm			comm = self->layout->decomp->communicator;
-		SizeT				size;
-		
-		if( self->elementShadowInfo->procShadowCnt[nbr_I] ) {
-			unsigned			finalSize = self->elementExtensionMgr->finalSize;
-			
-			size = finalSize * self->elementShadowInfo->procShadowCnt[nbr_I];
-			MPI_Irecv( self->syncElementTbl[nbr_I], size, MPI_BYTE, srcProc_I, tagElementExt, comm, 
-				   &self->syncRequestTbl[nbr_I][0] );
-		}
-		
-		if( self->nodeShadowInfo->procShadowCnt[nbr_I] ) {
-			unsigned				finalSize = self->nodeExtensionMgr->finalSize;
-			
-			/* receive the node coords */
-			size = sizeof(Coord) * self->nodeShadowInfo->procShadowCnt[nbr_I];
-			MPI_Irecv( self->syncNodeCoordTbl[nbr_I], size, MPI_BYTE, srcProc_I, tagNodeCoord, comm,
-				   &self->syncRequestTbl[nbr_I][1] );
-			
-			/* recieve the nodes */
-			size = finalSize * self->nodeShadowInfo->procShadowCnt[nbr_I];
-			MPI_Irecv( self->syncNodeTbl[nbr_I], size, MPI_BYTE, srcProc_I, tagNodeExt, comm,
-				   &self->syncRequestTbl[nbr_I][2] );
-		}
-	}
+	return self->topoDatas[dim];
+}
 
-	
-	/*
-	 * Send node coordinates, node extension info and element extension info to neighbouring procs
-	 */
-	 
-	for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-		PartitionIndex			destProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-		MPI_Comm			comm = self->layout->decomp->communicator;
-		SizeT				size;
-		
-		/* send element extensions */
-		if( self->elementShadowInfo->procShadowedCnt[nbr_I] ) {
-			Element_LocalIndex		element_lI;
-			unsigned			finalSize = self->elementExtensionMgr->finalSize;
-			
-			for( element_lI = 0; element_lI < self->elementShadowInfo->procShadowedCnt[nbr_I]; element_lI++ ) {
-				Element_LocalIndex			ncIdx;
-				
-				ncIdx =	self->elementShadowInfo->procShadowedTbl[nbr_I][element_lI];
-				
-				memcpy( (unsigned char*)self->syncElementSendTbl + finalSize * element_lI, 
-					(unsigned char*)self->element + finalSize * ncIdx, finalSize );
-			}
+void Mesh_GetMinimumSeparation( void* mesh, double* minSep, double* axial ) {
+	Mesh*	self = (Mesh*)mesh;
 
-			size = finalSize * self->elementShadowInfo->procShadowedCnt[nbr_I];
-			MPI_Send( self->syncElementSendTbl, size, MPI_BYTE, destProc_I, tagElementExt, comm );
-		}
+	assert( self );
+	assert( minSep );
 
-		/* move the node coords intended for nbr_I into the array */
-		if( self->nodeShadowInfo->procShadowedCnt[nbr_I] ) {
-			Node_LocalIndex			node_lI;
-			unsigned			finalSize = self->nodeExtensionMgr->finalSize;
-			
-			for( node_lI = 0; node_lI < self->nodeShadowInfo->procShadowedCnt[nbr_I]; node_lI++ ) {
-				Node_LocalIndex			ncIdx;
-				
-				ncIdx =	self->nodeShadowInfo->procShadowedTbl[nbr_I][node_lI];
-				
-				self->syncNodeCoordSendTbl[node_lI][0] = self->nodeCoord[ncIdx][0];
-				self->syncNodeCoordSendTbl[node_lI][1] = self->nodeCoord[ncIdx][1];
-				self->syncNodeCoordSendTbl[node_lI][2] = self->nodeCoord[ncIdx][2];
-				
-				memcpy( (unsigned char*)self->syncNodeSendTbl + finalSize * node_lI, 
-					(unsigned char*)self->node + finalSize * ncIdx, finalSize );
-			}
-			
-			size = sizeof(Coord) * self->nodeShadowInfo->procShadowedCnt[nbr_I];
-			MPI_Send( self->syncNodeCoordSendTbl, size, MPI_BYTE, destProc_I, tagNodeCoord, comm );
-			
-			size = finalSize * self->nodeShadowInfo->procShadowedCnt[nbr_I];
-			MPI_Send( self->syncNodeSendTbl, size, MPI_BYTE, destProc_I, tagNodeExt, comm );
-		}
-	}
-	
-	
-	/*
-	 * Receive node coordinates, node extension, blah blah blah
-	 */
-	
-	for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-		MPI_Status			status;
-		
-		/* grab the element extension */
-		if( self->elementShadowInfo->procShadowCnt[nbr_I] ) {
-			Element_ShadowIndex			element_sI;
-			unsigned				finalSize = self->elementExtensionMgr->finalSize;
-			
-			/* recieve the elements */
-			MPI_Wait( &self->syncRequestTbl[nbr_I][0], &status );
-			
-			for( element_sI = 0; element_sI < self->elementShadowInfo->procShadowCnt[nbr_I]; element_sI++ ) {
-				Element_ShadowIndex			ncIdx;
-				
-				ncIdx = self->elementShadowInfo->procShadowTbl[nbr_I][element_sI];
-				
-				memcpy( (unsigned char*)self->element + finalSize * ncIdx,
-					(unsigned char*)self->syncElementTbl[nbr_I] + finalSize * element_sI, finalSize );
-			}
-		}
-		
-		if( self->nodeShadowInfo->procShadowCnt[nbr_I] ) {
-			Node_ShadowIndex			node_sI;
-			unsigned				finalSize = self->nodeExtensionMgr->finalSize;
-			
-			/* receive the node coords */
-			MPI_Wait( &self->syncRequestTbl[nbr_I][1], &status );
-			
-			/* recieve the nodes */
-			MPI_Wait( &self->syncRequestTbl[nbr_I][2], &status );
-			
-			for( node_sI = 0; node_sI < self->nodeShadowInfo->procShadowCnt[nbr_I]; node_sI++ ) {
-				Node_ShadowIndex			ncIdx;
-				
-				ncIdx = self->nodeShadowInfo->procShadowTbl[nbr_I][node_sI];
-				
-				self->nodeCoord[ncIdx][0] = self->syncNodeCoordTbl[nbr_I][node_sI][0];
-				self->nodeCoord[ncIdx][1] = self->syncNodeCoordTbl[nbr_I][node_sI][1];
-				self->nodeCoord[ncIdx][2] = self->syncNodeCoordTbl[nbr_I][node_sI][2];
-				
-				memcpy( (unsigned char*)self->node + finalSize * ncIdx,
-					(unsigned char*)self->syncNodeTbl[nbr_I] + finalSize * node_sI, finalSize );
-			}
-		}
-	}
+	*minSep = self->minSep;
+	if( axial )
+		memcpy( axial, self->minAxialSep, Mesh_GetDimSize( self ) * sizeof(double) );
 }
 
+void Mesh_GetLocalCoordRange( void* mesh, double* min, double* max ) {
+	Mesh*	self = (Mesh*)mesh;
 
+	assert( self );
+	assert( min );
+	assert( max );
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
+	memcpy( min, self->minLocalCrd, Mesh_GetDimSize( self ) * sizeof(double) );
+	memcpy( max, self->maxLocalCrd, Mesh_GetDimSize( self ) * sizeof(double) );
+}
 
-void _Mesh_InitialNodeGeometries( void* mesh ) {
-	Mesh*			self = (Mesh*)mesh;
-	NodeLayout*		nLayout = self->layout->nodeLayout;
-	Node_DomainIndex	index;
-	
-	/* If we're using the new generation methods, skip this bit. */
-	if( !self->nodeCoord ) {
-		self->nodeCoord = Memory_Alloc_Array( Coord, self->nodeDomainCount, "Mesh->nodeCoord" );
-		for( index = 0;  index < self->nodeDomainCount; index++ ) {
-			Node_GlobalIndex globalIndex;
-		
-			globalIndex = Mesh_NodeMapDomainToGlobal( self, index );
-			nLayout->nodeCoordAt( nLayout, globalIndex, self->nodeCoord[index] );
-		}
-	}
-	else {
-		Coord*		newCoords;
-		unsigned	n_i;
+void Mesh_GetDomainCoordRange( void* mesh, double* min, double* max ) {
+	Mesh*	self = (Mesh*)mesh;
 
-		newCoords = Memory_Alloc_Array( Coord, self->nodeDomainCount, "Mesh->nodeCoord" );
-		for( n_i = 0; n_i < MeshTopology_GetDomainSize( self->topo, MT_VERTEX ); n_i++ ) {
-			unsigned	dInd;
+	assert( self );
+	assert( min );
+	assert( max );
 
-			dInd = MeshTopology_DomainToGlobal( self->topo, MT_VERTEX, n_i );
-			dInd = Mesh_NodeMapGlobalToDomain( self, dInd );
-			memcpy( newCoords[dInd], self->nodeCoord[n_i], sizeof(Coord) );
-		}
-		FreeArray( self->nodeCoord );
-		self->nodeCoord = newCoords;
-	}
+	memcpy( min, self->minDomainCrd, Mesh_GetDimSize( self ) * sizeof(double) );
+	memcpy( max, self->maxDomainCrd, Mesh_GetDimSize( self ) * sizeof(double) );
+}
 
-	/* After we collect initial node geometries, we need to flag the element geometry so. */
-	if( !strcmp( self->layout->elementLayout->geometry->type, MeshGeometry_Type ) ) {
-		((MeshGeometry*)self->layout->elementLayout->geometry)->useMesh = True;
-	}
+void Mesh_GetGlobalCoordRange( void* mesh, double* min, double* max ) {
+	Mesh*	self = (Mesh*)mesh;
+
+	assert( self );
+
+	memcpy( min, self->minGlobalCrd, Mesh_GetDimSize( self ) * sizeof(double) );
+	memcpy( max, self->maxGlobalCrd, Mesh_GetDimSize( self ) * sizeof(double) );
 }
 
+void Mesh_DeformationUpdate( void* mesh ) {
+	Mesh*	self = (Mesh*)mesh;
 
-void _Mesh_BuildSyncTables( void* mesh ) {
-	Mesh*			self = (Mesh*)mesh;
-	
 	assert( self );
-	
-	if( self->layout->decomp->shadowDepth > 0 && self->layout->decomp->procsInUse > 1 ) {
-		MeshDecomp*		decomp = self->layout->decomp;
-		MPI_Comm		comm = decomp->communicator;
-		PartitionIndex		myRank = decomp->rank;
-		Topology*		procTop = decomp->procTopology;
-		NeighbourIndex		nbrCnt;
-		NeighbourIndex*		tempNbrArray = NULL;
-		NeighbourIndex		nbr_I;
-		NeighbourIndex		prevNbr_I;
-		Element_ShadowIndex*	elementTbl;
-		Element_ShadowIndex	element_sI;
-		Element_LocalIndex	element_lI;
-		Node_ShadowIndex*	nodeTbl;
-		Node_ShadowIndex	node_sI;
-		Node_LocalIndex		node_lI;
-		Index                   maxElementCnt;
-                Index                   maxNodeCnt;
-		MPI_Request*		request;
-		Bool			nodeG2LBuiltTemporarily = False;
-		Bool			nodeG2DBuiltTemporarily = False;
-		Bool			elementG2LBuiltTemporarily = False;
-		Bool			elementG2DBuiltTemporarily = False;
-		Stream*                 errorStream = Journal_Register( Error_Type, self->type );
 
-		Journal_DPrintf( self->debug, "In %s(), Proc %d:\n", __func__, myRank );
-		Stream_Indent( self->debug );
+	self->minSep = Mesh_Algorithms_GetMinimumSeparation( self->algorithms, self, self->minAxialSep );
+	Mesh_Algorithms_GetLocalCoordRange( self->algorithms, self, self->minLocalCrd, self->maxLocalCrd );
+	Mesh_Algorithms_GetDomainCoordRange( self->algorithms, self, self->minDomainCrd, self->maxDomainCrd );
+	Mesh_Algorithms_GetGlobalCoordRange( self->algorithms, self, self->minGlobalCrd, self->maxGlobalCrd );
+}
 
-		if (self->buildTemporaryGlobalTables == True) {
-			if (self->nodeG2L == NULL) {
-				self->nodeG2L = MeshDecomp_BuildNodeGlobalToLocalMap( self->layout->decomp );
-				nodeG2LBuiltTemporarily = True;
-			}	
-			if (self->nodeG2D == NULL) {
-				self->nodeG2D = MeshDecomp_BuildNodeGlobalToDomainMap( self->layout->decomp );
-				nodeG2DBuiltTemporarily = True;
-			}	
-			if (self->elementG2L == NULL) {
-				self->elementG2L = MeshDecomp_BuildElementGlobalToLocalMap( self->layout->decomp );
-				elementG2LBuiltTemporarily = True;
-			}	
-			if (self->elementG2D == NULL) {
-				self->elementG2D = MeshDecomp_BuildElementGlobalToDomainMap( self->layout->decomp );
-				elementG2DBuiltTemporarily = True;
-			}	
-		}
+void Mesh_Sync( void* mesh ) {
+	Mesh*	self = (Mesh*)mesh;
 
-		/* Build the set of valid proc neighbours */
-		/* modified by PatrickSunter, 16 May 2006 :
-		   For periodic problems the nbrs aren't necessarily unique, so we need to check
-		   to avoid adding the same one twice.
-		   
-		   Also, previously this part used to check for but silently ignore
-		   nbrs pointing to inactive processors, but this is no good as it has to
-		   be the responsibility of the meshDecomp to adjust its own procTopology if there are
-		   inactive processors, and return adjusted nbrs accordingly - since otherwise things 
-		   such as periodicity may not work.
-		*/
-		nbrCnt = procTop->neighbourCount( procTop, myRank );
-		tempNbrArray = Memory_Alloc_Array( NeighbourIndex, nbrCnt, "tempNbrArray" );
-		/* Just allocate the procNbrTbl to be the same size, even if there might be duplicates:
-		   doesn't hurt to have a few blank spots in the array so long as count is correct */
-		self->procNbrInfo->procNbrTbl = Memory_Alloc_Array( NeighbourIndex, nbrCnt, "Mesh->procNbrTbl" );
-		procTop->buildNeighbours( procTop, myRank, tempNbrArray );
+	assert( self );
 
-#if DEBUG
-		if ( 0 == strcmp( IJK26Topology_Type, procTop->type ) ) {
-			Journal_DPrintf( self->debug, "Calculated my neighbour processor are:\n" );
-			Stream_Indent( self->debug );
-			((IJK26Topology*)procTop)->dynamicSizes = False;
-			IJK26Topology_PrintNeighboursOfIndex( (IJK26Topology*)procTop, myRank, self->debug );
-			((IJK26Topology*)procTop)->dynamicSizes = True;
-			Stream_UnIndent( self->debug );
-		}
-#endif
-		Stream_Indent( self->debug );
-		self->procNbrInfo->procNbrCnt = 0;
-		/* Ok, now search through the temp list, and only add the unique Ids to our real list */
-		for( nbr_I = 0; nbr_I < nbrCnt; nbr_I++ ) {
+	if( self->vertSyncArray )
+		Decomp_Sync_Array_Sync( self->vertSyncArray );
 
-			Journal_Firewall( tempNbrArray[nbr_I] < decomp->procsInUse, errorStream,
-					  "Error - in %s() on proc %u: nbr %u in my ProcNbrInfo mapped "
-					  "to processor ID %u, which is >= calculated "
-					  "procs in use %u! Check the decomp info.\n",
-					  __func__, myRank, nbr_I, tempNbrArray[nbr_I], decomp->procsInUse );
-			
-			/* Check the current candidate in temp list for equality against prev acceptances */
-			for ( prevNbr_I = 0; prevNbr_I < self->procNbrInfo->procNbrCnt; prevNbr_I++ ) {
-				if ( self->procNbrInfo->procNbrTbl[prevNbr_I] == tempNbrArray[nbr_I] ) 
-				{	
-					Journal_DPrintfL( self->debug, 2, "In %s() on proc %u: nbr %u in my "
-							  "ProcNbrInfo mapped to proc ID %u, but have already added that "
-							  "processor to unique nbr list - ignoring duplicate.\n",
-							  __func__, myRank, nbr_I, tempNbrArray[nbr_I] );
-					break;	
-				}	
-			}
-			/* Only if we successfully checked each prev should we accept the new one - otherwise
-			   let it get over-written by not incrementing the count */
-			if ( prevNbr_I == self->procNbrInfo->procNbrCnt ) {
-				self->procNbrInfo->procNbrTbl[self->procNbrInfo->procNbrCnt] = tempNbrArray[nbr_I];
-				self->procNbrInfo->procNbrCnt++;
-			}
-		}
-		Stream_UnIndent( self->debug );
-		Memory_Free( tempNbrArray );
+	if( self->dataSyncArrays ) {
+		unsigned	d_i;
 
-#if DEBUG
-		Journal_DPrintf( self->debug, "Calculated my unique list of %u nbr procs is:\n\t{",
-				 self->procNbrInfo->procNbrCnt );
-		for ( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Journal_DPrintf( self->debug, "%u, ", self->procNbrInfo->procNbrTbl[nbr_I] );
+		for( d_i = 0; d_i < Mesh_GetDimSize( self ); d_i++ ) {
+			if( self->dataSyncArrays[d_i] )
+				Decomp_Sync_Array_Sync( self->dataSyncArrays[d_i] );
 		}
-		Journal_DPrintf( self->debug, "}\n" );
-#endif
+	}
+}
 
-		self->nodeShadowInfo->procNbrInfo = self->procNbrInfo;
-		self->elementShadowInfo->procNbrInfo = self->procNbrInfo;
-		
-		/*
-		 * Calculate where my shadow elements are going to come from.
-		 */
-		
-		/* TODO: FIX TAGS */
-		/* TODO: see if some of this can be reduced into re-usable funcs */
 
-		/* allocate some work space */
-		request = Memory_Alloc_Array( MPI_Request , self->procNbrInfo->procNbrCnt, "MPI_Request_procNbrCnt" );
-		assert( request );
-		
-		/* convert my shadow element indices to global element indices */
-		elementTbl = Memory_Alloc_Array(Element_ShadowIndex, self->elementShadowCount, "Element_ShadowIndex_ElementShadowCount" );
-		assert( elementTbl );
-		for( element_sI = 0; element_sI < self->elementShadowCount; element_sI++ ) {
-			elementTbl[element_sI] = Mesh_ElementMapShadowToGlobal( self, element_sI );
-		}
-		
-		/* prepare my 'shadowed tables' */
-		self->elementShadowInfo->procShadowedCnt = Memory_Alloc_Array( Element_LocalIndex,
-									       self->procNbrInfo->procNbrCnt, 
-									       "Mesh->elementShadowInfo->procShadowedCnt" );
-		self->elementShadowInfo->procShadowedTbl = Memory_Alloc_Array( Element_LocalIndex*,
-									       self->procNbrInfo->procNbrCnt,
-									       "Mesh->elementShadowInfo->procShadowedTbl" );
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			self->elementShadowInfo->procShadowedCnt[nbr_I] = 0;
-			self->elementShadowInfo->procShadowedTbl[nbr_I] = NULL;
-		}
-		
-		/* prepare non-blocking recieve for size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( &self->elementShadowInfo->procShadowedCnt[nbr_I], 1, MPI_UNSIGNED, srcProc_I, 100, comm,
-				   &request[nbr_I] );
-		}
-		
-		/* send my shadow element count to each neighbour */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( &self->elementShadowCount, 1, MPI_UNSIGNED, dst, 100, comm );
-		}
-		
-		/* retrieve the size and prepare tables */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status		status;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			self->elementShadowInfo->procShadowedTbl[nbr_I] = 
-				Memory_Alloc_Array(
-					Element_LocalIndex,
-					self->elementShadowInfo->procShadowedCnt[nbr_I],
-					"self->elementShadowInfo->procShadowedTbl[nbr_I]" );
-			assert( self->elementShadowInfo->procShadowedTbl[nbr_I] );
-		}
-		
-		/* prepare non-bloking recieve for elements */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( self->elementShadowInfo->procShadowedTbl[nbr_I],
-				   self->elementShadowInfo->procShadowedCnt[nbr_I], MPI_UNSIGNED, srcProc_I, 
-				   101, comm, &request[nbr_I] );
-		}
-		
-		/* send my shadow elements to each neighbour */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( elementTbl, self->elementShadowCount, MPI_UNSIGNED, dst, 101, comm );
-		}
-		
-		/* recieve elements from all neighbours one at a time and process them */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Element_GlobalIndex		element_gI;
-			MPI_Status			status;
-			IndexSet*			localElementSet;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			
-			localElementSet = IndexSet_New( self->elementLocalCount );
-			assert( localElementSet );
-			for( element_gI = 0; element_gI < self->elementShadowInfo->procShadowedCnt[nbr_I]; element_gI++ ) {
-				Element_LocalIndex		elementIdx;
-				
-				elementIdx = Mesh_ElementMapGlobalToLocal( self, 
-									   self->elementShadowInfo->procShadowedTbl[nbr_I][element_gI] );
-				if( elementIdx < self->elementLocalCount ) {
-					IndexSet_Add( localElementSet, elementIdx );
-				}
-			}
-			
-			Memory_Free( self->elementShadowInfo->procShadowedTbl[nbr_I] );
-			IndexSet_GetMembers( localElementSet, &self->elementShadowInfo->procShadowedCnt[nbr_I], 
-					     &self->elementShadowInfo->procShadowedTbl[nbr_I] );
-		}
-		
-		/* setup tables to store feedback */
-		self->elementShadowInfo->procShadowCnt = Memory_Alloc_Array( Element_DomainIndex, self->procNbrInfo->procNbrCnt,
-									     "Mesh->elementShadowInfo->procShadowCnt" );
-		self->elementShadowInfo->procShadowTbl = Memory_Alloc_Array( Element_DomainIndex*, self->procNbrInfo->procNbrCnt,
-									     "Mesh->elementShadowInfo->procShadowTbl" );
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			self->elementShadowInfo->procShadowCnt[nbr_I] = 0;
-			self->elementShadowInfo->procShadowTbl[nbr_I] = NULL;
-		}
-		
-		/* prepare non-blocking recieve for size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( &self->elementShadowInfo->procShadowCnt[nbr_I], 1, MPI_UNSIGNED, srcProc_I, 200,
-				   comm, &request[nbr_I] );
-		}
-		
-		/* send the size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( &self->elementShadowInfo->procShadowedCnt[nbr_I], 1, MPI_UNSIGNED, dst, 200, comm );
-		}
-		
-		/* recieve the feedback size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status			status;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			self->elementShadowInfo->procShadowTbl[nbr_I] = Memory_Alloc_Array( Element_DomainIndex,
-											    self->elementShadowInfo->procShadowCnt[nbr_I], "Mesh->elementShadowInfo->procShadowTbl[][]" );
-		}
-		
-		/* prepare non-blocking recieve for feedback */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( self->elementShadowInfo->procShadowTbl[nbr_I],
-				   self->elementShadowInfo->procShadowCnt[nbr_I], MPI_UNSIGNED, 
-				   srcProc_I, 201, comm, &request[nbr_I] );
-		}
-		
-		/* convert the shadowed local indices to global indices and send back to the appropriate proc */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			destProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			Element_LocalIndex		elementCnt;
-			Element_GlobalIndex*		globalElementTbl;
-			
-			elementCnt = self->elementShadowInfo->procShadowedCnt[nbr_I];
-			globalElementTbl = Memory_Alloc_Array(Element_GlobalIndex, elementCnt, "Element_GlobalIndex_ElementCnt" );
-			assert( globalElementTbl );
-			for( element_lI = 0; element_lI < elementCnt; element_lI++ ) {
-				globalElementTbl[element_lI] = Mesh_ElementMapLocalToGlobal( self,
-											     self->elementShadowInfo->procShadowedTbl[nbr_I][element_lI] );
-			}
-			
-			MPI_Send( globalElementTbl, elementCnt, MPI_UNSIGNED, destProc_I, 201, comm );
-			
-			Memory_Free( globalElementTbl );
-		}
-		
-		/* recieve the feedback, convert to domain indices and store */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status			status;
-			Element_DomainIndex		element_dI;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			
-			for( element_dI = 0; element_dI < self->elementShadowInfo->procShadowCnt[nbr_I]; element_dI++ ) {
-				Element_DomainIndex		elementIdx;
-				
-				elementIdx = Mesh_ElementMapGlobalToDomain( self,
-									    self->elementShadowInfo->procShadowTbl[nbr_I][element_dI] );
-				assert( elementIdx < self->elementDomainCount );
-				self->elementShadowInfo->procShadowTbl[nbr_I][element_dI] = elementIdx;
-			}
-		}
-		
-		
-		/*
-		 * Use the calculated shadow elements and shadowed elements to build the same tables for nodes.
-		 * On second thought, just repeat everything above.
-		 */
-		
-		/* convert my shadow node indices to global node indices */
-		nodeTbl = Memory_Alloc_Array(Node_ShadowIndex, self->nodeShadowCount, "Node_ShadowIndex_nodeShadowCount" );
-		assert( nodeTbl );
-		for( node_sI = 0; node_sI < self->nodeShadowCount; node_sI++ ) {
-			nodeTbl[node_sI] = Mesh_NodeMapShadowToGlobal( self, node_sI );
-		}
-		
-		/* prepare my 'shadowed tables' */
-		self->nodeShadowInfo->procShadowedCnt = Memory_Alloc_Array( Node_LocalIndex, self->procNbrInfo->procNbrCnt, 
-									    "Mesh->nodeShadowInfo->procShadowedCnt" );
-		self->nodeShadowInfo->procShadowedTbl = Memory_Alloc_Array( Node_LocalIndex*, self->procNbrInfo->procNbrCnt,
-									    "Mesh->nodeShadowInfo->procShadowedTbl" );
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			self->nodeShadowInfo->procShadowedCnt[nbr_I] = 0;
-			self->nodeShadowInfo->procShadowedTbl[nbr_I] = NULL;
-		}
-		
-		/* prepare non-blocking recieve for size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( &self->nodeShadowInfo->procShadowedCnt[nbr_I], 1, MPI_UNSIGNED, srcProc_I,
-				   100, comm, &request[nbr_I] );
-		}
-		
-		/* send my shadow node count to each neighbour */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( &self->nodeShadowCount, 1, MPI_UNSIGNED, dst, 100, comm );
-		}
-		
-		/* retrieve the size and prepare tables */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status		status;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			self->nodeShadowInfo->procShadowedTbl[nbr_I] = 
-				Memory_Alloc_Array(
-					Node_GlobalIndex,
-					self->nodeShadowInfo->procShadowedCnt[nbr_I],
-					"self->nodeShadowInfo->procShadowedTbl[nbr_I]" );
-			assert( self->nodeShadowInfo->procShadowedTbl[nbr_I] );
-		}
-		
-		/* prepare non-bloking recieve for nodes */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( self->nodeShadowInfo->procShadowedTbl[nbr_I],
-				   self->nodeShadowInfo->procShadowedCnt[nbr_I], MPI_UNSIGNED, srcProc_I, 
-				   101, comm, &request[nbr_I] );
-		}
-		
-		/* send my shadow nodes to each neighbour */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( nodeTbl, self->nodeShadowCount, MPI_UNSIGNED, dst, 101, comm );
-		}
-		
-		/* recieve nodes from all neighbours one at a time and process them */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			Node_GlobalIndex		node_gI;
-			MPI_Status			status;
-			IndexSet*			localNodeSet;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			
-			localNodeSet = IndexSet_New( self->nodeLocalCount );
-			assert( localNodeSet );
-			for( node_gI = 0; node_gI < self->nodeShadowInfo->procShadowedCnt[nbr_I]; node_gI++ ) {
-				Node_LocalIndex		nodeIdx;
-				
-				nodeIdx = Mesh_NodeMapGlobalToLocal( self, 
-								     self->nodeShadowInfo->procShadowedTbl[nbr_I][node_gI] );
-				if( nodeIdx < self->nodeLocalCount ) {
-					IndexSet_Add( localNodeSet, nodeIdx );
-				}
-			}
-			
-			Memory_Free( self->nodeShadowInfo->procShadowedTbl[nbr_I] );
-			IndexSet_GetMembers( localNodeSet, &self->nodeShadowInfo->procShadowedCnt[nbr_I], 
-					     &self->nodeShadowInfo->procShadowedTbl[nbr_I] );
-		}
-		
-		/* setup tables to store feedback */
-		self->nodeShadowInfo->procShadowCnt = Memory_Alloc_Array( Node_DomainIndex, self->procNbrInfo->procNbrCnt,
-									  "Mesh->nodeShadowInfo->procShadowCnt" );
-		self->nodeShadowInfo->procShadowTbl = Memory_Alloc_Array( Node_DomainIndex*, self->procNbrInfo->procNbrCnt,
-									  "Mesh->nodeShadowInfo->procShadowTbl" );
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			self->nodeShadowInfo->procShadowCnt[nbr_I] = 0;
-			self->nodeShadowInfo->procShadowTbl[nbr_I] = NULL;
-		}
-		
-		/* prepare non-blocking recieve for size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( &self->nodeShadowInfo->procShadowCnt[nbr_I], 1, MPI_UNSIGNED,
-				   srcProc_I, 200, comm, &request[nbr_I] );
-		}
-		
-		/* send the size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			dst = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Send( &self->nodeShadowInfo->procShadowedCnt[nbr_I], 1, MPI_UNSIGNED, dst, 200, comm );
-		}
-		
-		/* recieve the feedback size */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status			status;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			self->nodeShadowInfo->procShadowTbl[nbr_I] = Memory_Alloc_Array( Node_DomainIndex,
-											 self->nodeShadowInfo->procShadowCnt[nbr_I], "Mesh->nodeShadowInfo->procShadowTbl[][]" );
-		}
-		
-		/* prepare non-blocking recieve for feedback */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			srcProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			
-			MPI_Irecv( self->nodeShadowInfo->procShadowTbl[nbr_I],
-				   self->nodeShadowInfo->procShadowCnt[nbr_I], MPI_UNSIGNED, 
-				   srcProc_I, 201, comm, &request[nbr_I] );
-		}
-		
-		/* convert the shadowed local indices to global indices and send back to the appropriate proc */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			PartitionIndex			destProc_I = self->procNbrInfo->procNbrTbl[nbr_I];
-			Node_LocalIndex		nodeCnt;
-			Node_GlobalIndex*		globalNodeTbl;
-			
-			nodeCnt = self->nodeShadowInfo->procShadowedCnt[nbr_I];
-			globalNodeTbl = Memory_Alloc_Array( Node_GlobalIndex, nodeCnt, "Node_GlobalIndex_nodeCnt" );
-			assert( globalNodeTbl );
-			for( node_lI = 0; node_lI < nodeCnt; node_lI++ ) {
-				globalNodeTbl[node_lI] = Mesh_NodeMapLocalToGlobal( self,
-										    self->nodeShadowInfo->procShadowedTbl[nbr_I][node_lI] );
-			}
-			
-			MPI_Send( globalNodeTbl, nodeCnt, MPI_UNSIGNED, destProc_I, 201, comm );
-			
-			Memory_Free( globalNodeTbl );
-		}
-		
-		/* recieve the feedback, convert to domain indices and store */
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			MPI_Status			status;
-			Node_DomainIndex		node_dI;
-			
-			MPI_Wait( &request[nbr_I], &status );
-			
-			for( node_dI = 0; node_dI < self->nodeShadowInfo->procShadowCnt[nbr_I]; node_dI++ ) {
-				Node_DomainIndex		nodeIdx;
-				
-				nodeIdx = Mesh_NodeMapGlobalToDomain( self, self->nodeShadowInfo->procShadowTbl[nbr_I][node_dI] );
-				assert( nodeIdx < self->nodeDomainCount );
-				self->nodeShadowInfo->procShadowTbl[nbr_I][node_dI] = nodeIdx;
-			}
-		}
-		if ( True == nodeG2LBuiltTemporarily ) {
-			Memory_Free( self->nodeG2L );
-			self->nodeG2L = NULL;
-		}
-		if ( True == nodeG2DBuiltTemporarily ) {
-			Memory_Free( self->nodeG2D );
-			self->nodeG2D = NULL;
-		}
-		if ( True == elementG2LBuiltTemporarily ) {
-			Memory_Free( self->elementG2L );
-			self->elementG2L = NULL;
-		}
-		if ( True == elementG2DBuiltTemporarily ) {
-			Memory_Free( self->elementG2D );
-			self->elementG2D = NULL;
-		}
-		
-		if( request )
-			Memory_Free( request );
-		
-		
-		/*
-		 * Set up the tables needed for sending and receiving when Mesh_Sync is called.
-		 */
-		
-		self->syncRequestTbl = Memory_Alloc_Array( MPI_Request*, self->procNbrInfo->procNbrCnt, "Mesh->syncRequestTbl" );
-		self->syncElementTbl = Memory_Alloc_Array( Element*, self->procNbrInfo->procNbrCnt, "Mesh->syncElementTbl" );
-		self->syncNodeCoordTbl = Memory_Alloc_Array( Coord*, self->procNbrInfo->procNbrCnt, "Mesh->syncNodeCoordTbl" );
-		self->syncNodeTbl = Memory_Alloc_Array( Node*, self->procNbrInfo->procNbrCnt, "Mesh->syncNodeTbl" );
-		for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-			self->syncRequestTbl[nbr_I] = Memory_Alloc_Array( MPI_Request, 3, "Mesh->syncRequestTbl[...]" );
-			self->syncElementTbl[nbr_I] = Memory_Alloc_Array_Bytes( self->elementExtensionMgr->finalSize, 
-										self->elementShadowInfo->procShadowCnt[nbr_I], "Element", "Mesh->syncElementTbl[...]" );
-			self->syncNodeCoordTbl[nbr_I] = Memory_Alloc_Array( Coord,
-									    self->nodeShadowInfo->procShadowCnt[nbr_I], 
-									    "Mesh->syncNodeCoordTbl[...]" );
-			self->syncNodeTbl[nbr_I] = Memory_Alloc_Array_Bytes( self->nodeExtensionMgr->finalSize, 
-									     self->nodeShadowInfo->procShadowCnt[nbr_I], "Node", "Mesh->syncNodeTbl[...]" );
-		}
-		
-		/* send tables */
-		maxElementCnt = 0;
-                maxNodeCnt = 0;
-                for( nbr_I = 0; nbr_I < self->procNbrInfo->procNbrCnt; nbr_I++ ) {
-                        if( self->elementShadowInfo->procShadowedCnt[nbr_I] > maxElementCnt )
-                                maxElementCnt = self->elementShadowInfo->procShadowedCnt[nbr_I];
-                        if( self->elementShadowInfo->procShadowCnt[nbr_I] > maxElementCnt )
-                                maxElementCnt = self->elementShadowInfo->procShadowCnt[nbr_I];
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
 
-                        if( self->nodeShadowInfo->procShadowedCnt[nbr_I] > maxNodeCnt )
-                                maxNodeCnt = self->nodeShadowInfo->procShadowedCnt[nbr_I];
-                        if( self->nodeShadowInfo->procShadowCnt[nbr_I] > maxNodeCnt )
-                                maxNodeCnt = self->nodeShadowInfo->procShadowCnt[nbr_I];
-                }
+void Mesh_Destruct( Mesh* self ) {
+	unsigned	et_i, v_i;
 
-                self->syncElementSendTbl = Memory_Alloc_Array_Bytes( self->elementExtensionMgr->finalSize, maxElementCnt,
-								     "Element", "Mesh->syncElementSendTbl" );
-                self->syncNodeCoordSendTbl = Memory_Alloc_Array( Coord, maxNodeCnt, "Mesh->syncNodeCoordSendTbl" );
-                self->syncNodeSendTbl = Memory_Alloc_Array_Bytes( self->nodeExtensionMgr->finalSize, maxNodeCnt, 
-								  "Node", "Mesh->syncNodeSendTbl" );
-		Stream_UnIndent( self->debug );
-	}
-	else {
-		/* Cancel everything to zero */
-		self->procNbrInfo->procNbrCnt = 0;
-		self->procNbrInfo->procNbrTbl = NULL;
-		self->elementShadowInfo->procShadowedCnt = NULL;
-		self->elementShadowInfo->procShadowedTbl = NULL;
-		self->elementShadowInfo->procShadowCnt = NULL;
-		self->elementShadowInfo->procShadowTbl = NULL;
-		self->nodeShadowInfo->procShadowedCnt = NULL;
-		self->nodeShadowInfo->procShadowedTbl = NULL;
-		self->nodeShadowInfo->procShadowCnt = NULL;
-		self->nodeShadowInfo->procShadowTbl = NULL;
-		self->syncElementTbl = NULL;
-		self->syncNodeCoordTbl = NULL;
-		self->syncNodeTbl = NULL;
-	}
-}
+	for( et_i = 0; et_i < self->nElTypes; et_i++ )
+		FreeObject( self->elTypes[et_i] );
+	KillArray( self->elTypes );
+	KillArray( self->elTypeMap );
+	self->nElTypes = 0;
 
+	KillArray( self->verts );
+	KillObject( self->vertSyncArray );
 
-IndexSet* Mesh_CreateIndexSetFromShape( void* mesh, void* _shape ) {
-	Mesh*             self              = Stg_CheckType( mesh, Mesh );
-	Stg_Shape*        shape             = Stg_CheckType( _shape, Stg_Shape );
-	Node_DomainIndex  dNode_I;
-	Node_DomainIndex  nodeDomainCount;
-	IndexSet*         indexSet;
-	double*           coord;
+	self->generator = NULL;
+	self->emReg = NULL;
 
-	nodeDomainCount = self->nodeDomainCount;
-	indexSet = IndexSet_New( nodeDomainCount );
-	for( dNode_I = 0; dNode_I < nodeDomainCount; dNode_I++ ) {
-		coord = Mesh_CoordAt( self, dNode_I );
-		if ( Stg_Shape_IsCoordInside( shape, coord ) ) {
-			IndexSet_Add( indexSet, dNode_I );
-		}
-	}
+	for( v_i = 0; v_i < List_GetSize( self->vars ); v_i++ ) {
+		MeshVariable*	var;
 
-	return indexSet;
+		var = *(MeshVariable**)List_GetItem( self->vars, v_i );
+		MeshVariable_SetMesh( var, NULL );
+	}
+	List_Clear( self->vars );
 }

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshClass.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -27,456 +27,147 @@
 */
 /** \file
 **  Role:
-**	This module represents the state of a mesh on a serial or parallel implementation.
-**	It may take out any form supported by the attached MeshLayout.
-**	Its behaviour is dedicated to ensuring the integrity of the mesh... it does not effect the state of what the mesh contains.
 **
 ** Assumptions:
-**	The Node and Element state storage types are defined elsewhere.
-**	The Node and Element (if shadowed) state storage types can be mem-copied and MPI-sent/recvd (i.e they contain no pointers).
 **
 ** Invariants:
-**	If shadowing is enabled, then shadow nodes are always placed after any local nodes in the domain tables. This
-**	means that a local node index is always the same as its domain equivalent. It also implies a shadow node index
-**	can be converted to a domain index by subtracting the appropriate local count.
 **
 ** Comments:
-**	Originally made for Snark and Snac in mind. The Mesh class should be used as the interface to
-**	the Mesh's contents for other parts of the code (including e.g. mapping node numbers between
-**	global to local indices.)
 **
-**	Note for all the functions to map global indices to local ones such as Mesh::nodeMapGlobalToLocal, if
-**	the given global index corresponds to a node not held in the requested set (Local|Domain|Shadow), then the
-**	value looked up will be Mesh_Node_Invalid() or Mesh_Element_Invalid(), as appropriate.
-**	
-**	Client classes can perform local to global and vice versa transformations by either
-**	a) using the Mesh_NodeMapLocalToGlobal() and other public functions,
-**	since these will use the tables if they have been build, but otherwise calculate
-**	them on the fly.
-**	b) Asserting that the appropriate table has been built, then using it directly 
-**	(more efficient, so use if the mapping will be made frequently.)
-**	
-**	Not building the tables saves memory, but can cause a _very significant_ 
-**	performance hit for large meshes where the mappings are frequently required.
-**	Consequently, the local to global mapping tables are built by default, but
-**	the global to local ones aren't since they could be memory-hungry for large
-**	parallel runs.
-**	
-**	Mesh tables will be re-used where appropriate, e.g. the Mesh::nodeL2G and the Mesh::nodeD2G
-**	tables, if both requested, will point to the same mappings. (This can be done because of
-**	the invariant mentioned above.)
-**
 ** $Id$
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
-#ifndef __Discretisaton_Mesh_MeshClass_h__
-#define __Discretisaton_Mesh_MeshClass_h__
-	
+#ifndef __Discretisaton_Mesh_Mesh_h__
+#define __Discretisaton_Mesh_Mesh_h__
 
 	/** Textual name of this class */
 	extern const Type Mesh_Type;
 
-	/* Virtual function types */
-	typedef Bool			(Mesh_Node_IsLocalFunction)		( void* mesh, Node_DomainIndex domainIndex );
-	typedef Bool			(Mesh_Node_IsShadowFunction)		( void* mesh, Node_DomainIndex domainIndex );
-	typedef Bool			(Mesh_Element_IsLocalFunction)		( void* mesh, Element_DomainIndex domainIndex );
-	typedef Bool			(Mesh_Element_IsShadowFunction)		( void* mesh, Element_DomainIndex domainIndex );
-	
-	/** Mesh class contents */
-	#define __Mesh								\
-		/* General info */						\
-		__Stg_Component							\
-		Stream*					debug;			\
-		Dictionary*				dictionary;		\
-										\
-		/* Virtual info */						\
-										\
-		MeshTopology*				topo;			\
-		Bool					useTopo;		\
-		MeshGenerator*				generator;		\
-		ExtensionManager*			info;			\
-										\
-		/* Node mapping functions */					\
-		Mesh_Node_IsLocalFunction*		nodeIsLocal;		\
-		Mesh_Node_IsShadowFunction*		nodeIsShadow;		\
-		/* Element mapping functions */					\
-		Mesh_Element_IsLocalFunction*		elementIsLocal;		\
-		Mesh_Element_IsShadowFunction*		elementIsShadow;	\
-										\
-		/* Mesh info ... */ \
-		MeshLayout*				layout; \
-		/** Extensions to individual nodes */ \
-		ExtensionManager*			nodeExtensionMgr; \
-		/** Extensions to individual elements */ \
-		ExtensionManager*			elementExtensionMgr; \
-		ExtensionManager_Register*		extensionMgr_Register; \
-		\
-		/* Node */ \
-		Node_List				node; \
-		Coord*					nodeCoord; \
-		unsigned				nSpaceDims;\
-		/* counts */ \
-		Node_LocalIndex				nodeLocalCount; \
-		Node_DomainIndex			nodeDomainCount; \
-		Node_ShadowIndex			nodeShadowCount; \
-		Node_GlobalIndex			nodeGlobalCount; \
-		/* permanent mapping table options */ \
-		Bool					buildNodeLocalToGlobalMap; \
-		Bool					buildNodeDomainToGlobalMap; \
-		Bool					buildNodeGlobalToLocalMap; \
-		Bool					buildNodeGlobalToDomainMap; \
-		/* permanent mapping tables */ \
-		Node_GlobalIndex*			nodeL2G; \
-		Node_GlobalIndex*			nodeD2G; \
-		Node_DomainIndex*			nodeG2L; \
-		Node_DomainIndex*			nodeG2D; \
-		/* ownership status of mapping tables */ \
-		Bool					ownsNodeLocalToGlobalMap; \
-		Bool					ownsNodeDomainToGlobalMap; \
-		Bool					ownsNodeGlobalToLocalMap; \
-		Bool					ownsNodeGlobalToDomainMap; \
-		/* node neighbour and node->elements table options */ \
-		Bool					buildNodeNeighbourTbl; \
-		Bool					buildNodeElementTbl; \
-		/* node neighbour and node->elements tables */ \
-		Node_NeighboursList			nodeNeighbourTbl; \
-		Node_NeighbourIndexList			nodeNeighbourCountTbl; \
-		Node_ElementsList			nodeElementTbl; \
-		Node_ElementIndexList			nodeElementCountTbl; \
-		/* ownership of node neighbour and node->element tables */ \
-		Bool					ownsNodeNeighbourTbl; \
-		Bool					ownsNodeNeighbourCountTbl; \
-		Bool					ownsNodeElementTbl;\
-		Bool					ownsNodeElementCountTbl; \
-		\
-		/* Element */ \
-		Element_List				element; \
-		/* counts */ \
-		Element_LocalIndex			elementLocalCount; \
-		Element_DomainIndex			elementDomainCount; \
-		Element_ShadowIndex			elementShadowCount; \
-		Element_GlobalIndex			elementGlobalCount; \
-		/* permanent mapping table options */ \
-		Bool					buildElementLocalToGlobalMap; \
-		Bool					buildElementDomainToGlobalMap; \
-		Bool					buildElementGlobalToLocalMap; \
-		Bool					buildElementGlobalToDomainMap; \
-		/* permanent mapping tables */ \
-		Element_DomainIndex*			elementL2G; \
-		Element_GlobalIndex*			elementD2G; \
-		Element_DomainIndex*			elementG2L; \
-		Element_DomainIndex*			elementG2D; \
-		/* ownership status of mapping tables */ \
-		Bool					ownsElementLocalToGlobalMap; \
-		Bool					ownsElementDomainToGlobalMap; \
-		Bool					ownsElementGlobalToLocalMap; \
-		Bool					ownsElementGlobalToDomainMap; \
-		/* element neighbour and element->node sets table options */ \
-		Bool					buildElementNodeTbl; \
-		Bool					buildElementNeighbourTbl; \
-		/* element neighbour and element->node sets tables */ \
-		Element_NodesList			elementNodeTbl; \
-		Element_NodeIndexList			elementNodeCountTbl; \
-		Element_NeighboursList			elementNeighbourTbl; \
-		Element_NeighbourIndexList		elementNeighbourCountTbl; \
-		/* element neighbour and element->node sets table ownership */ \
-		Bool					ownsElementNodeTbl; \
-		Bool					ownsElementNodeCountTbl; \
-		Bool					ownsElementNeighbourTbl; \
-		Bool					ownsElementNeighbourCountTbl; \
-		\
-		/** Determines if G2D tables will be built temporarily to speed up building of \
-		neighbour tables or nodeElement/elementNode tables */ \
-		Bool					buildTemporaryGlobalTables; \
-		\
-		/* sync info */ \
-		\
-		/** Info on nbr procs for shadowing purposes */ \
-		ProcNbrInfo*				procNbrInfo; \
-		/** Shadow information for all the elements */ \
-		ShadowInfo*				elementShadowInfo; \
-		/** Shadow information for all the nodes */ \
-		ShadowInfo*				nodeShadowInfo;	\
-		\
-		MPI_Request**				syncRequestTbl; \
-		Element**				syncElementTbl; \
-		Coord**					syncNodeCoordTbl; \
-		Node**					syncNodeTbl; \
-		\
-		Element*				syncElementSendTbl; \
-		Coord*					syncNodeCoordSendTbl; \
-		Node*					syncNodeSendTbl;
-		
+	/** Virtual function types */
 
-	struct _Mesh { __Mesh };
-	
-	
+	/** Class contents */
+	#define __Mesh						\
+		/* General info */				\
+		__Stg_Component					\
+								\
+		/* Virtual info */				\
+								\
+		/* Mesh info */					\
+		MeshTopology*			topo;		\
+		double**			verts;		\
+		Decomp_Sync_Array*		vertSyncArray;	\
+								\
+		List*				vars;		\
+								\
+		double				minSep;		\
+		double*				minAxialSep;	\
+		double*				minLocalCrd;	\
+		double*				maxLocalCrd;	\
+		double*				minDomainCrd;	\
+		double*				maxDomainCrd;	\
+		double*				minGlobalCrd;	\
+		double*				maxGlobalCrd;	\
+								\
+		Mesh_Algorithms*		algorithms;	\
+		unsigned			nElTypes;	\
+		Mesh_ElementType**		elTypes;	\
+		unsigned*			elTypeMap;	\
+								\
+		UIntMap*			topoDataSizes;	\
+		ExtensionManager**		topoDataInfos;	\
+		void**				topoDatas;	\
+		Decomp_Sync_Array**		dataSyncArrays;	\
+		ExtensionManager*		info;		\
+								\
+		MeshGenerator*			generator;	\
+		ExtensionManager_Register*	emReg;
+
+	struct Mesh { __Mesh };
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Constructors
 	*/
-	
-	/* Create a Mesh */
-	Mesh* Mesh_DefaultNew( Name name );
-	
-	Mesh* Mesh_New( 
-		Name						name,
-		void*						layout,
-		SizeT						_nodeSize,
-		SizeT						_elementSize,
-		void*						extension_Register,
-		Dictionary*					dictionary );
 
-	/* Initialise a Mesh */
-	void Mesh_Init(
-		Mesh*						self,
-		Name						name,
-		void*						layout,
-		SizeT						_nodeSize,
-		SizeT						_elementSize,
-		void*						extension_Register,
-		Dictionary*					dictionary );
-	
-	/* Creation implementation */
-	Mesh* _Mesh_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name								name,
-		Bool								initFlag,
-		Mesh_Node_IsLocalFunction*			nodeIsLocal,
-		Mesh_Node_IsShadowFunction*			nodeIsShadow,
-		Mesh_Element_IsLocalFunction*			elementIsLocal,
-		Mesh_Element_IsShadowFunction*			elementIsShadow,
-		void*						layout,
-		SizeT						_nodeSize,
-		SizeT						_elementSize, 
-		void*						extension_Register,
-		Dictionary*					dictionary );
+	#define MESH_DEFARGS		\
+		STG_COMPONENT_DEFARGS
 
-	void _Mesh_LoadFromDict( void* mesh, Dictionary* subDict, Dictionary* dictionary, Stg_ObjectList* objList);
+	#define MESH_PASSARGS		\
+		STG_COMPONENT_PASSARGS
 
-	/* Initialisation implementation functions */
-	void _Mesh_Init(
-		Mesh*						self,
-		void*						layout,
-		SizeT						_nodeSize,
-		SizeT						_elementSize,
-		void*						extension_Register );
+	Mesh* Mesh_New( Name name );
+	Mesh* _Mesh_New( MESH_DEFARGS );
+	void _Mesh_Init( Mesh* self );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Virtual functions
 	*/
-	
-	/* Stg_Class_Delete mesh implementation */
+
 	void _Mesh_Delete( void* mesh );
-	
-	void Mesh_DestroyTables( void* mesh );
-	
-	/* Print mesh implementation */
 	void _Mesh_Print( void* mesh, Stream* stream );
-	
-	void _Mesh_PrintCoords( Mesh* self, Stream* meshStream );
-
-	void _Mesh_PrintTable( Stream* meshStream, Index* table, const Name tableName, Index itemCount );
-	
-	void _Mesh_Print2DTable( Stream* meshStream, Index** table, Index* tableEntryCounts, const Name tableName, Index entryCount );
-	
-	/* Copy */
-	#define Mesh_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define Mesh_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _Mesh_Copy( void* mesh, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	/* Build implementation */
-	void _Mesh_Build( void* mesh, void* data );
-	
-	/* Construct implementation */
 	void _Mesh_Construct( void* mesh, Stg_ComponentFactory* cf, void* data );
-	
-	/* Initialisation implementation */
+	void _Mesh_Build( void* mesh, void* data );
 	void _Mesh_Initialise( void* mesh, void* data );
-	
-	/* Execution implementation */
 	void _Mesh_Execute( void* mesh, void* data );
-	
-	/* Destruct implementation */
 	void _Mesh_Destroy( void* mesh, void* data );
-	
-	Bool _Mesh_Node_IsLocal1D( void* mesh, Node_LocalIndex localIndex );
-	
-	Bool _Mesh_Node_IsShadow1D( void* mesh, Node_ShadowIndex shadowIndex );
-	
-	Bool _Mesh_Element_IsLocal1D( void* mesh, Element_LocalIndex localIndex );
-	
-	Bool _Mesh_Element_IsShadow1D( void* mesh, Element_ShadowIndex shadowIndex );
-	
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
-	
-	Node_GlobalIndex Mesh_NodeMapLocalToGlobal( void* mesh, Node_LocalIndex localIndex );
-	
-	Node_GlobalIndex Mesh_NodeMapShadowToGlobal( void* mesh, Node_ShadowIndex shadowIndex );
 
-	Node_GlobalIndex Mesh_NodeMapDomainToGlobal( void* mesh, Node_DomainIndex domainIndex );
+	void Mesh_SetGenerator( void* mesh, void* generator );
+	void Mesh_SetAlgorithms( void* mesh, void* algorithms );
 
-	Node_LocalIndex Mesh_NodeMapGlobalToLocal( void* mesh, Node_GlobalIndex globalIndex );
+	void Mesh_SetExtensionManagerRegister( void* mesh, void* extMgrReg );
+	void Mesh_SetTopologyDataSize( void* mesh, MeshTopology_Dim dim, unsigned size );
+	void* Mesh_GetTopologyData( void* mesh, MeshTopology_Dim dim );
 
-	Node_DomainIndex Mesh_NodeMapGlobalToDomain( void* mesh, Node_GlobalIndex globalIndex );
+	unsigned Mesh_GetDimSize( void* mesh );
+	unsigned Mesh_GetGlobalSize( void* mesh, MeshTopology_Dim dim );
+	unsigned Mesh_GetLocalSize( void* mesh, MeshTopology_Dim dim );
+	unsigned Mesh_GetRemoteSize( void* mesh, MeshTopology_Dim dim );
+	unsigned Mesh_GetDomainSize( void* mesh, MeshTopology_Dim dim );
+	unsigned Mesh_GetSharedSize( void* mesh, MeshTopology_Dim dim );
+	MeshTopology* Mesh_GetTopology( void* mesh );
+	Decomp_Sync* Mesh_GetSync( void* mesh, MeshTopology_Dim dim );
 
-	Node_ShadowIndex Mesh_NodeMapGlobalToShadow( void* mesh, Node_GlobalIndex globalIndex );
+	Bool Mesh_GlobalToDomain( void* mesh, MeshTopology_Dim dim, unsigned global, unsigned* domain );
+	unsigned Mesh_DomainToGlobal( void* mesh, MeshTopology_Dim dim, unsigned domain );
+	Bool Mesh_LocalToShared( void* meshTopology, MeshTopology_Dim dim, unsigned local, unsigned* shared );
+	unsigned Mesh_SharedToLocal( void* meshTopology, MeshTopology_Dim dim, unsigned shared );
 
-	Element_GlobalIndex Mesh_ElementMapLocalToGlobal( void* mesh, Element_LocalIndex localIndex );
-	
-	Element_GlobalIndex Mesh_ElementMapShadowToGlobal( void* mesh, Element_ShadowIndex shadowIndex );
+	unsigned Mesh_GetOwner( void* mesh, MeshTopology_Dim dim, unsigned remote );
+	void Mesh_GetSharers( void* mesh, MeshTopology_Dim dim, unsigned shared, 
+			      unsigned* nSharers, unsigned** sharers );
 
-	Element_GlobalIndex Mesh_ElementMapDomainToGlobal( void* mesh, Element_DomainIndex domainIndex );
+	Bool Mesh_HasIncidence( void* mesh, MeshTopology_Dim fromDim, MeshTopology_Dim toDim );
+	unsigned Mesh_GetIncidenceSize( void* mesh, MeshTopology_Dim fromDim, unsigned fromInd, 
+					MeshTopology_Dim toDim );
+	void Mesh_GetIncidence( void* mesh, MeshTopology_Dim fromDim, unsigned fromInd, MeshTopology_Dim toDim, 
+				unsigned* nInc, unsigned** inc );
 
-	Element_LocalIndex Mesh_ElementMapGlobalToLocal( void* mesh, Element_GlobalIndex globalIndex );
+	unsigned Mesh_NearestVertex( void* mesh, double* point );
+	Bool Mesh_Search( void* mesh, double* point, 
+			  MeshTopology_Dim* dim, unsigned* ind );
+	Bool Mesh_ElementHasPoint( void* mesh, unsigned element, double* point, 
+				   MeshTopology_Dim* dim, unsigned* ind );
+	Mesh_ElementType* Mesh_GetElementType( void* mesh, unsigned element );
 
-	Element_DomainIndex Mesh_ElementMapGlobalToDomain( void* mesh, Element_GlobalIndex globalIndex );
+	CommTopology* Mesh_GetCommTopology( void* mesh, MeshTopology_Dim dim );
+	double* Mesh_GetVertex( void* mesh, unsigned domain );
 
-	Element_ShadowIndex Mesh_ElementMapGlobalToShadow( void* mesh, Element_GlobalIndex globalIndex );
+	void Mesh_GetMinimumSeparation( void* mesh, double* minSep, double* axial );
+	void Mesh_GetLocalCoordRange( void* mesh, double* min, double* max );
+	void Mesh_GetDomainCoordRange( void* mesh, double* min, double* max );
+	void Mesh_GetGlobalCoordRange( void* mesh, double* min, double* max );
 
-	#define Mesh_Node_Invalid( self ) \
-		(self)->nodeGlobalCount
-
-	#define Mesh_Element_Invalid( self ) \
-		(self)->elementGlobalCount
-	
-	#define Mesh_CoordAtMacro( self, node_I ) \
-		((self)->nodeCoord[(node_I)] )
-	double* Mesh_CoordAtFunc( Mesh* self, Node_DomainIndex node_dI );
-	#ifdef MACRO_AS_FUNC
-		#define Mesh_CoordAt Mesh_CoordAtFunc
-	#else
-		#define Mesh_CoordAt Mesh_CoordAtMacro
-	#endif
-	
-	#define Mesh_NodeAtMacro( self, node_I ) \
-		((Node*)((ArithPointer)(self)->node + ((node_I) * (self)->nodeExtensionMgr->finalSize)))
-	Node* Mesh_NodeAtFunc( Mesh* self, Node_DomainIndex node_dI );
-	#ifdef MACRO_AS_FUNC
-		#define Mesh_NodeAt Mesh_NodeAtFunc
-	#else
-		#define Mesh_NodeAt Mesh_NodeAtMacro
-	#endif
-	
-	#define Mesh_ElementAtMacro( self, element_I ) \
-		((Element*)((ArithPointer)(self)->element + ((element_I) * (self)->elementExtensionMgr->finalSize)))
-	Element* Mesh_ElementAtFunc( Mesh* self, Element_DomainIndex element_dI );
-	#ifdef MACRO_AS_FUNC
-		#define Mesh_ElementAt Mesh_ElementAtFunc
-	#else
-		#define Mesh_ElementAt Mesh_ElementAtMacro
-	#endif
-	
-	/** Places into the input argument nodeCoordPtrs the pointers to the Coord value of each node in the
-	given element (often needed in F.E. stuff) */
-	void Mesh_GetNodeCoordPtrsOfElement( void* mesh, Element_DomainIndex element_dI, Coord** nodeCoordPtrs );
-
-	/** Prints the coordinates of every node in the current element */
-	void Mesh_PrintNodeCoordsOfElement( void* mesh, Element_DomainIndex element_dI, Stream* stream );
-
-	unsigned Mesh_ClosestNode( void* _self, Coord crd );
-
-	double Mesh_NodeSeparation( Mesh* self );
-
-	unsigned Mesh_ElementWithPoint( void* mesh, Coord pnt, PartitionBoundaryStatus bndStat );
-
+	void Mesh_DeformationUpdate( void* mesh );
 	void Mesh_Sync( void* mesh );
-	
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
-		
-	/* Build nodes list */
-	void _Mesh_BuildNodes( void* mesh );
-	
-	/* Build node mappings */
-	void _Mesh_BuildNodeMaps( void* mesh );
-	
-	/* Build element list */
-	void _Mesh_BuildElements( void* mesh );
-	
-	/* Build node mappings */
-	void _Mesh_BuildElementMaps( void* mesh );
-	
-	#define Mesh_ActivateNodeLocalToGlobalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildNodeLocalToGlobalMap, nodeL2G, MeshDecomp_BuildNodeLocalToGlobalMap ) 
-	#define Mesh_ActivateNodeDomainToGlobalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildNodeDomainToGlobalMap, nodeD2G, MeshDecomp_BuildNodeDomainToGlobalMap ) 
-	#define Mesh_ActivateNodeGlobalToLocalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, NodeGlobalToLocalMap, nodeG2L, MeshDecomp_BuildNodeGlobalToLocalMap ) 
-	#define Mesh_ActivateNodeGlobalToDomainMap( mesh ) \
-		_Mesh_ActivateMap( mesh, NodeGlobalToDomainMap, nodeG2D, MeshDecomp_BuildNodeGlobalToDomainMap ) 
 
-	#define Mesh_ActivateNodeNeighbourTbl( mesh ) \
-		_Mesh_ActivateTable( mesh, buildNodeNeighbourTbl, _Mesh_BuildNodeNeighbours ) 
-	#define Mesh_ActivateNodeElementTbl( mesh ) \
-		_Mesh_ActivateTable( mesh, buildNodeElementTbl, _Mesh_BuildNodeElements ) 
+	void Mesh_Destruct( Mesh* self );
 
-	#define Mesh_ActivateElementLocalToGlobalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildElementLocalToGlobalMap, nodeL2G, MeshDecomp_BuildElementLocalToGlobalMap ) 
-	#define Mesh_ActivateElementDomainToGlobalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildElementDomainToGlobalMap, nodeD2G, MeshDecomp_BuildElementDomainToGlobalMap ) 
-	#define Mesh_ActivateElementGlobalToLocalMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildElementGlobalToLocalMap, nodeG2L, MeshDecomp_BuildElementGlobalToLocalMap ) 
-	#define Mesh_ActivateElementGlobalToDomainMap( mesh ) \
-		_Mesh_ActivateMap( mesh, buildElementGlobalToDomainMap, nodeG2D, MeshDecomp_BuildElementGlobalToDomainMap ) 
-	
-	#define Mesh_ActivateElementNeighbourTbl( mesh ) \
-		_Mesh_ActivateTable( mesh, buildElementNeighbourTbl, _Mesh_BuildElementNeighbours ) 
-	#define Mesh_ActivateElementNodeTbl( mesh ) \
-		_Mesh_ActivateTable( mesh, buildElementNodeTbl, _Mesh_BuildElementNodes ) 
-
-	#define _Mesh_ActivateMap( mesh, mapBuildOption, mapName, mapBuildFunction ) \
-		do { \
-			(mesh)->mapBuildOption = True; \
-			Dictionary_Set( (mesh)->dictionary, #mapBuildOption, Dictionary_Entry_Value_FromBool( True ) ); \
-			if ( True == (mesh)->isBuilt ) { \
-				(mesh)->mapName = mapBuildFunction( (mesh)->layout->decomp ); \
-			} \
-		} while (0)
-
-	
-	#define _Mesh_ActivateTable( mesh, tableBuildOption, tableBuildFunction ) \
-		do { \
-			(mesh)->tableBuildOption = True; \
-			Dictionary_Set( (mesh)->dictionary, #tableBuildOption, Dictionary_Entry_Value_FromBool( True ) ); \
-			if ( True == (mesh)->isBuilt ) { \
-				tableBuildFunction( mesh ); \
-			} \
-		} while (0)
-
-	/* Build node neighbours list */
-	void _Mesh_BuildNodeNeighbours( void* mesh );
-	
-	/* Build node elements list */
-	void _Mesh_BuildNodeElements( void* mesh );
-	
-	/* Build element neighbours list */
-	void _Mesh_BuildElementNeighbours( void* mesh );
-	
-	/* Build element nodes list */
-	void _Mesh_BuildElementNodes( void* mesh );
-	
-	/* Set the initial Node Geometries */
-	void _Mesh_InitialNodeGeometries( void* mesh );
-	
-	void _Mesh_BuildSyncTables( void* mesh );
-
-	IndexSet* Mesh_CreateIndexSetFromShape( void* mesh, void* _shape );
-	
-#endif /* __Discretisaton_Mesh_MeshClass_h__ */
+#endif /* __Discretisaton_Mesh_Mesh_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1071 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "MeshDecomp.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type MeshDecomp_Type = "MeshDecomp";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-MeshDecomp* _MeshDecomp_New(
-		SizeT                                           _sizeOfSelf, 
-		Type                                            type,
-		Stg_Class_DeleteFunction*                       _delete,
-		Stg_Class_PrintFunction*                        _print,
-		Stg_Class_CopyFunction*                         _copy, 
-		Stg_Component_DefaultConstructorFunction*       _defaultConstructor,
-		Stg_Component_ConstructFunction*                _construct,
-		Stg_Component_BuildFunction*                    _build,
-		Stg_Component_InitialiseFunction*               _initialise,
-		Stg_Component_ExecuteFunction*                  _execute,
-		Stg_Component_DestroyFunction*                  _destroy,
-		Name                                            name,
-		Bool                                            initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*            shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*           shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*            procWithElement,
-		Dictionary*                                     dictionary,
-		MPI_Comm                                        communicator,
-		ElementLayout*                                  elementLayout,
-		NodeLayout*                                     nodeLayout )
-{
-	MeshDecomp* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(MeshDecomp) );
-	self = (MeshDecomp*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-			_initialise, _execute, _destroy, name, NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->nodeMapLocalToGlobal = nodeMapLocalToGlobal;
-	self->nodeMapDomainToGlobal = nodeMapDomainToGlobal;
-	self->nodeMapShadowToGlobal = nodeMapShadowToGlobal;
-	self->nodeMapGlobalToLocal = nodeMapGlobalToLocal;
-	self->nodeMapGlobalToDomain = nodeMapGlobalToDomain;
-	self->nodeMapGlobalToShadow = nodeMapGlobalToShadow;
-	self->elementMapLocalToGlobal = elementMapLocalToGlobal;
-	self->elementMapDomainToGlobal = elementMapDomainToGlobal;
-	self->elementMapShadowToGlobal = elementMapShadowToGlobal;
-	self->elementMapGlobalToLocal = elementMapGlobalToLocal;
-	self->elementMapGlobalToDomain = elementMapGlobalToDomain;
-	self->elementMapGlobalToShadow = elementMapGlobalToShadow;
-	self->shadowProcCount = shadowProcCount;
-	self->shadowBuildProcs = shadowBuildProcs;
-	self->shadowProcElementCount = shadowProcElementCount;
-	self->procWithElement = procWithElement;
-
-	if( initFlag ){
-		_MeshDecomp_Init( self, communicator, elementLayout, nodeLayout, NULL );
-	}
-	
-	return self;
-}
-
-void _MeshDecomp_Init(
-		MeshDecomp*					self,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		Stg_ObjectList*             pointer_Register )
-{
-	/* General and Virtual info should already be set */
-	
-	/* MeshDecomp info */
-	char*   storageStr;
-	
-	self->isConstructed = True;
-	self->communicator = communicator;
-	
-	MPI_Comm_rank( self->communicator, (int*)&self->rank );
-	MPI_Comm_size( self->communicator, (int*)&self->nproc );
-	self->procsInUse = 0;
-	
-	self->allowUnusedCPUs = Dictionary_GetBool_WithDefault( self->dictionary, "allowUnusedCPUs", False ) ;
-	self->allowPartitionOnNode = Dictionary_GetBool_WithDefault( self->dictionary, "allowPartitionOnNode", True );
-	self->allowPartitionOnElement = Dictionary_GetBool_WithDefault( self->dictionary, "allowPartitionOnElement", False );
-
-	assert( self->allowPartitionOnNode || self->allowPartitionOnElement );
-
-	self->allowUnbalancing = Dictionary_GetBool_WithDefault( self->dictionary, "allowUnbalancing", False );
-
-	self->procTopology = NULL;
-	
-	/* Determine IndexSet storage type */
-	storageStr = Dictionary_GetString_WithDefault( self->dictionary, "selfStorage", "storeNeighbours" );
-	if( !strcmp( storageStr, "storeAll" ) ) {
-		self->storage = StoreAll;
-	}
-	else if( !strcmp( storageStr, "storeSelf" ) ) {
-		self->storage = StoreSelf;
-	}
-	else { /* !strcmp( storageStr, "storeNeighbours" ) */
-		self->storage = StoreNeighbours;
-	}
-	
-	self->elementLayout = elementLayout;
-	self->nodeLayout = nodeLayout;
-	self->localElementSets = NULL;
-	self->shadowElementSets = NULL;
-	self->localNodeSets = NULL;
-	self->shadowNodeSets = NULL;
-	
-	self->nodeGlobalCount = 0;
-	self->nodeLocalCount = 0;
-	self->nodeShadowCount = 0;
-	self->nodeDomainCount = 0;
-	
-	self->elementGlobalCount = 0;
-	self->elementLocalCount = 0;
-	self->elementShadowCount = 0;
-	self->elementDomainCount = 0;
-
-	/* TODO - Hack: Registering pointer to node domain count */
-	if (pointer_Register) {
-		Name nodeDomainCountName;
-
-		Stg_asprintf( &nodeDomainCountName, "%s-nodeDomainCount", self->name );  /* Need to free memory somewhere! */
-		Stg_ObjectList_GlobalPointerAppend( pointer_Register, &self->nodeDomainCount, nodeDomainCountName );
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _MeshDecomp_Delete( void* meshDecomp ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	
-	if( self->procTopology ) {
-		Stg_Class_Delete( self->procTopology );
-		self->procTopology = NULL;
-	}
-	
-	if( self->localElementSets ) {
-		Partition_Index proc_I;
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			if( self->localElementSets[proc_I] )
-				Stg_Class_Delete( self->localElementSets[proc_I] );
-		Memory_Free( self->localElementSets );
-		self->localElementSets = NULL;
-	}
-	
-	if( self->shadowElementSets ) {
-		Partition_Index proc_I;	
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			if( self->shadowElementSets[proc_I] )
-				Stg_Class_Delete( self->shadowElementSets[proc_I] );
-		Memory_Free( self->shadowElementSets );
-		self->shadowElementSets = NULL;
-	}
-	
-	if( self->localNodeSets ) {
-		Partition_Index proc_I;
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			if( self->localNodeSets[proc_I] )
-				Stg_Class_Delete( self->localNodeSets[proc_I] );
-		Memory_Free( self->localNodeSets );
-		self->localNodeSets = NULL;
-	}
-	
-	if( self->shadowNodeSets ) {
-		Partition_Index proc_I;
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			if( self->shadowNodeSets[proc_I] )
-				Stg_Class_Delete( self->shadowNodeSets[proc_I] );
-		Memory_Free( self->shadowNodeSets );
-		self->shadowNodeSets = NULL;
-	}
-	
-	/* Stg_Class_Delete parent */
-	_Stg_Component_Delete( self );
-}
-
-
-void _MeshDecomp_Print( void* meshDecomp, Stream* stream ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	
-	/* Set the Journal for printing informations */
-	Stream* meshDecompStream;
-	meshDecompStream = Journal_Register( InfoStream_Type, "MeshDecompStream" );
-
-	/* Print parent */
-	_Stg_Component_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "MeshDecomp (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* MeshDecomp info */
-}
-
-
-void* _MeshDecomp_Copy( void* meshDecomp, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	MeshDecomp*	self = (MeshDecomp*)meshDecomp;
-	MeshDecomp*	newMeshDecomp;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMeshDecomp = (MeshDecomp*)_Stg_Component_Copy( self, dest, deep, nameExt, map );
-	
-	/* Virtual methods */
-	newMeshDecomp->nodeMapLocalToGlobal = self->nodeMapLocalToGlobal;
-	newMeshDecomp->nodeMapDomainToGlobal = self->nodeMapDomainToGlobal;
-	newMeshDecomp->nodeMapShadowToGlobal = self->nodeMapShadowToGlobal;
-	newMeshDecomp->nodeMapGlobalToLocal = self->nodeMapGlobalToLocal;
-	newMeshDecomp->nodeMapGlobalToDomain = self->nodeMapGlobalToDomain;
-	newMeshDecomp->nodeMapGlobalToShadow = self->nodeMapGlobalToShadow;
-	newMeshDecomp->elementMapLocalToGlobal = self->elementMapLocalToGlobal;
-	newMeshDecomp->elementMapDomainToGlobal = self->elementMapDomainToGlobal;
-	newMeshDecomp->elementMapShadowToGlobal = self->elementMapShadowToGlobal;
-	newMeshDecomp->elementMapGlobalToLocal = self->elementMapGlobalToLocal;
-	newMeshDecomp->elementMapGlobalToDomain = self->elementMapGlobalToDomain;
-	newMeshDecomp->elementMapGlobalToShadow = self->elementMapGlobalToShadow;
-	newMeshDecomp->shadowProcCount = self->shadowProcCount;
-	newMeshDecomp->shadowBuildProcs = self->shadowBuildProcs;
-	newMeshDecomp->shadowProcElementCount = self->shadowProcElementCount;
-	newMeshDecomp->procWithElement = self->procWithElement;
-	
-	newMeshDecomp->dictionary = self->dictionary;
-	newMeshDecomp->communicator = self->communicator;
-	newMeshDecomp->rank = self->rank;
-	newMeshDecomp->nproc = self->nproc;
-	newMeshDecomp->procsInUse = self->procsInUse;
-	newMeshDecomp->allowUnusedCPUs = self->allowUnusedCPUs;
-	newMeshDecomp->allowPartitionOnNode = self->allowPartitionOnNode;
-	newMeshDecomp->allowPartitionOnElement = self->allowPartitionOnElement;
-	newMeshDecomp->allowUnbalancing = self->allowUnbalancing;
-	newMeshDecomp->storage = self->storage;
-	newMeshDecomp->shadowDepth = self->shadowDepth;
-	newMeshDecomp->nodeGlobalCount = self->nodeGlobalCount;
-	newMeshDecomp->nodeLocalCount = self->nodeLocalCount;
-	newMeshDecomp->nodeShadowCount = self->nodeShadowCount;
-	newMeshDecomp->nodeDomainCount = self->nodeDomainCount;
-	newMeshDecomp->elementGlobalCount = self->elementGlobalCount;
-	newMeshDecomp->elementLocalCount = self->elementLocalCount;
-	newMeshDecomp->elementShadowCount = self->elementShadowCount;
-	newMeshDecomp->elementDomainCount = self->elementDomainCount;
-	
-	if( deep ) {
-		newMeshDecomp->procTopology = (Topology*)Stg_Class_Copy( self->procTopology, NULL, deep, nameExt, map );
-		newMeshDecomp->elementLayout = (ElementLayout*)Stg_Class_Copy( self->elementLayout, NULL, deep, nameExt, map );
-		newMeshDecomp->nodeLayout = (NodeLayout*)Stg_Class_Copy( self->nodeLayout, NULL, deep, nameExt, map );
-		
-		if( (newMeshDecomp->localNodeSets = PtrMap_Find( map, self->localNodeSets )) == NULL && self->localNodeSets ) {
-			Partition_Index		proc_I;
-			
-			newMeshDecomp->localNodeSets = Memory_Alloc_Array( IndexSet*, newMeshDecomp->procsInUse, "MeshDecomp->localNodeSets" );
-			for( proc_I = 0; proc_I < newMeshDecomp->procsInUse; proc_I++ ) {
-				newMeshDecomp->localNodeSets[proc_I] = (IndexSet*)Stg_Class_Copy( self->localNodeSets[proc_I], NULL, deep, nameExt, map );
-			}
-		}
-		
-		if( (newMeshDecomp->shadowNodeSets = PtrMap_Find( map, self->shadowNodeSets )) == NULL && self->shadowNodeSets ) {
-			Partition_Index		proc_I;
-			
-			newMeshDecomp->shadowNodeSets = Memory_Alloc_Array( IndexSet*, newMeshDecomp->procsInUse, "MeshDecomp->shadowNodeSets" );
-			for( proc_I = 0; proc_I < newMeshDecomp->procsInUse; proc_I++ ) {
-				newMeshDecomp->shadowNodeSets[proc_I] = (IndexSet*)Stg_Class_Copy( self->shadowNodeSets[proc_I], NULL, deep, nameExt, map );
-			}
-		}
-		
-		if( (newMeshDecomp->localElementSets = PtrMap_Find( map, self->localElementSets )) == NULL && self->localElementSets ) {
-			Partition_Index		proc_I;
-			
-			newMeshDecomp->localElementSets = Memory_Alloc_Array( IndexSet*, newMeshDecomp->procsInUse, "MeshDecomp->localElementSets" );
-			for( proc_I = 0; proc_I < newMeshDecomp->procsInUse; proc_I++ ) {
-				newMeshDecomp->localElementSets[proc_I] = (IndexSet*)Stg_Class_Copy( self->localElementSets[proc_I], NULL, deep, nameExt, map );
-			}
-		}
-		
-		if( (newMeshDecomp->shadowElementSets = PtrMap_Find( map, self->shadowElementSets )) == NULL && self->shadowElementSets ) {
-			Partition_Index		proc_I;
-			
-			newMeshDecomp->shadowElementSets = Memory_Alloc_Array( IndexSet*, newMeshDecomp->procsInUse, "MeshDecomp->shadowElementSets" );
-			for( proc_I = 0; proc_I < newMeshDecomp->procsInUse; proc_I++ ) {
-				newMeshDecomp->shadowElementSets[proc_I] = (IndexSet*)Stg_Class_Copy( self->shadowElementSets[proc_I], NULL, deep, nameExt, map );
-			}
-		}
-	}
-	else {
-		newMeshDecomp->procTopology = self->procTopology;
-		newMeshDecomp->elementLayout = self->elementLayout;
-		newMeshDecomp->nodeLayout = self->nodeLayout;
-		newMeshDecomp->localNodeSets = self->localNodeSets;
-		newMeshDecomp->shadowNodeSets = self->shadowNodeSets;
-		newMeshDecomp->localElementSets = self->localElementSets;
-		newMeshDecomp->shadowElementSets = self->shadowElementSets;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newMeshDecomp;
-}
-
-
-/* Shadow virtual functions */
-
-Element_ShadowIndex _MeshDecomp_Shadow_ProcElementCount(void* meshDecomp, Partition_Index rank) {
-	assert( 0 );
-	return 0;
-}
-
-
-/* Processor virtual functions */
-Partition_Index _MeshDecomp_Proc_WithElement( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	MeshDecomp*     self = (MeshDecomp*)meshDecomp;
-	Partition_Index proc_I;
-	
-	for( proc_I = 0; proc_I < self->procsInUse; proc_I++ ) {
-		if( self->localElementSets[proc_I] && IndexSet_IsMember( self->localElementSets[proc_I], globalIndex ) )
-			return proc_I;
-	}
-	
-	return self->nproc;
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-Node_GlobalIndex* MeshDecomp_BuildNodeLocalToGlobalMap( void* meshDecomp ) {
-	MeshDecomp*	self = (MeshDecomp*)meshDecomp;
-	Node_LocalIndex lNodeCnt;
-	Node_GlobalIndex* nodeL2G;
-	IndexSet* myLocalNodeSet;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	myLocalNodeSet = self->localNodeSets[self->rank];
-	
-	lNodeCnt = IndexSet_UpdateMembersCount( myLocalNodeSet );
-	nodeL2G = Memory_Alloc_Array( Node_GlobalIndex, lNodeCnt, "nodeL2G" );
-	IndexSet_GetMembers2( myLocalNodeSet, nodeL2G );
-	return nodeL2G;
-}
-
-
-Node_GlobalIndex* MeshDecomp_BuildNodeDomainToGlobalMap( void* meshDecomp ) {
-	MeshDecomp*	self = (MeshDecomp*)meshDecomp;
-	Node_LocalIndex lNodeCnt;
-	Node_GlobalIndex* nodeD2G;
-	Node_ShadowIndex sNodeCnt;
-	Node_GlobalIndex* tempNodeS2G;
-	IndexSet* myLocalNodeSet;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	myLocalNodeSet = self->localNodeSets[self->rank];
-	lNodeCnt = IndexSet_UpdateMembersCount( myLocalNodeSet );
-	nodeD2G = Memory_Alloc_Array( Node_GlobalIndex, lNodeCnt, "nodeD2G" );
-	IndexSet_GetMembers2( myLocalNodeSet, nodeD2G );
-
-	if ( self->nodeShadowCount > 0 ) {
-		IndexSet* myShadowNodeSet = self->shadowNodeSets[self->rank];
-		IndexSet_GetMembers( myShadowNodeSet, &sNodeCnt, &tempNodeS2G );
-		/* combine the two */
-		nodeD2G = Memory_Realloc_Array( nodeD2G, Node_GlobalIndex, lNodeCnt + sNodeCnt );
-		memcpy( &nodeD2G[lNodeCnt], tempNodeS2G, sNodeCnt * sizeof(Node_GlobalIndex) );
-		Memory_Free( tempNodeS2G );
-	}
-
-	return nodeD2G;
-}
-
-
-Node_LocalIndex* MeshDecomp_BuildNodeGlobalToLocalMap( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Node_GlobalIndex	gNode_I = 0;
-	Node_LocalIndex		lNode_I = 0;
-	Node_LocalIndex* nodeG2L;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	nodeG2L = Memory_Alloc_Array( Node_LocalIndex, self->nodeGlobalCount, "nodeG2L" );
-	
-	for( gNode_I = 0; gNode_I < self->nodeGlobalCount; gNode_I++ ) {
-		if ( IndexSet_IsMember( self->localNodeSets[self->rank], gNode_I ) ) {
-			nodeG2L[gNode_I] = lNode_I++;
-		}	
-		else {
-			nodeG2L[gNode_I] = MD_N_Invalid( self );
-		}	
-	}	
-
-	return nodeG2L;
-}
-
-
-Node_DomainIndex* MeshDecomp_BuildNodeGlobalToDomainMap( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Node_GlobalIndex	gNode_I = 0;
-	Node_DomainIndex	lNode_I = 0;
-	Node_DomainIndex	sNode_I = self->nodeLocalCount;
-	IndexSet*			localSet  = NULL;
-	IndexSet*			shadowSet = NULL;
-	Node_DomainIndex*	nodeG2D;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	nodeG2D = Memory_Alloc_Array( Node_DomainIndex, self->nodeGlobalCount, "nodeG2D" );
-	
-	localSet = self->localNodeSets[self->rank];
-	if ( 0 != self->nodeShadowCount ) {
-		shadowSet = self->shadowNodeSets[self->rank];
-	}
-	
-	for( gNode_I = 0; gNode_I < self->nodeGlobalCount; gNode_I++ ) {
-		if ( IndexSet_IsMember( localSet, gNode_I ) ) {
-			nodeG2D[gNode_I] = lNode_I++;
-		}	
-		else if ( (0 != self->nodeShadowCount) && IndexSet_IsMember( shadowSet, gNode_I ) ) {
-			nodeG2D[gNode_I] = sNode_I++;
-		}
-		else {
-			nodeG2D[gNode_I] = MD_N_Invalid( self );
-		}	
-	}	
-
-	return nodeG2D;
-}
-
-
-Element_GlobalIndex* MeshDecomp_BuildElementLocalToGlobalMap( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Element_LocalIndex		lElementCnt;
-	Element_GlobalIndex*	elementL2G;
-	IndexSet* myLocalElementSet;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-	myLocalElementSet = self->localElementSets[self->rank];
-	
-	lElementCnt = IndexSet_UpdateMembersCount( myLocalElementSet );
-	elementL2G = Memory_Alloc_Array( Element_GlobalIndex, lElementCnt, "elementL2G" );
-	IndexSet_GetMembers2( myLocalElementSet, elementL2G );
-	return elementL2G;
-}	
-
-
-Element_GlobalIndex* MeshDecomp_BuildElementDomainToGlobalMap( void* meshDecomp ) {
-	MeshDecomp*	self = (MeshDecomp*)meshDecomp;
-	Element_LocalIndex lElementCnt;
-	Element_ShadowIndex sElementCnt;
-	Element_DomainIndex* elementD2G;
-	Element_DomainIndex* tempElementS2G;
-	IndexSet* myLocalElementSet = self->localElementSets[self->rank];
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-	myLocalElementSet = self->localElementSets[self->rank];
-
-	lElementCnt = IndexSet_UpdateMembersCount( myLocalElementSet );
-	elementD2G = Memory_Alloc_Array( Element_GlobalIndex, lElementCnt, "elementD2G" );
-	IndexSet_GetMembers2( myLocalElementSet, elementD2G );
-
-	if ( self->elementShadowCount > 0 ) {
-		IndexSet_GetMembers( self->shadowElementSets[self->rank], &sElementCnt, &tempElementS2G );
-		/* combine the two */
-		elementD2G = Memory_Realloc_Array( elementD2G, Element_GlobalIndex, lElementCnt + sElementCnt );
-		memcpy( &elementD2G[lElementCnt], tempElementS2G, sElementCnt * sizeof(Element_GlobalIndex) );
-		Memory_Free( tempElementS2G );
-	}
-
-	return elementD2G;
-}
-
-
-Element_LocalIndex* MeshDecomp_BuildElementGlobalToLocalMap( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Element_GlobalIndex	gEl_I = 0;
-	Element_LocalIndex	lEl_I = 0;
-	Element_LocalIndex* elementG2L;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	elementG2L = Memory_Alloc_Array( Element_LocalIndex, self->elementGlobalCount, "elementG2L" );
-		
-	for( gEl_I = 0; gEl_I < self->elementGlobalCount; gEl_I++ ) {
-		if( IndexSet_IsMember( self->localElementSets[self->rank], gEl_I ) ) {
-			elementG2L[gEl_I] = lEl_I++;
-		}
-		else {
-			elementG2L[gEl_I] = MD_E_Invalid( self );
-		}	
-	}	
-
-	return elementG2L;
-}
-
-
-Element_DomainIndex* MeshDecomp_BuildElementGlobalToDomainMap( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Element_GlobalIndex	gElement_I = 0;
-	Element_LocalIndex		lElement_I = 0;
-	Element_LocalIndex		sElement_I = self->elementLocalCount;
-	IndexSet*			localSet  = NULL;
-	IndexSet*			shadowSet = NULL;
-	Element_DomainIndex* elementG2D;
-	
-	if ( self->rank >= self->procsInUse ) return NULL;
-
-	elementG2D = Memory_Alloc_Array( Element_DomainIndex, self->elementGlobalCount, "elementG2D" );
-	
-	localSet = self->localElementSets[self->rank];
-	if ( 0 != self->elementShadowCount ) {
-		sElement_I = self->elementLocalCount;
-		shadowSet = self->shadowElementSets[self->rank];
-	}
-
-	for( gElement_I = 0; gElement_I < self->elementGlobalCount; gElement_I++ ) {
-		if ( IndexSet_IsMember( localSet, gElement_I ) ) {
-			elementG2D[gElement_I] = lElement_I++;
-		}	
-		else if ( ( 0 != self->elementShadowCount ) && ( IndexSet_IsMember( shadowSet, gElement_I ) ) ) {
-			elementG2D[gElement_I] = sElement_I++;
-		}
-		else {
-			elementG2D[gElement_I] = MD_E_Invalid( self );
-		}	
-	}	
-
-	return elementG2D;
-}
-
-
-/* *** On-the-fly conversion functions *** */
-
-Node_GlobalIndex _MeshDecomp_Node_LocalToGlobal1D( void* meshDecomp, Node_LocalIndex localIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	return IndexSet_GetIndexOfNthMember( self->localNodeSets[self->rank], localIndex );
-}
-
-
-Node_GlobalIndex _MeshDecomp_Node_ShadowToGlobal1D( void* meshDecomp, Node_ShadowIndex shadowIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	if (self->nodeShadowCount == 0)
-		return MD_N_Invalid(self);
-	else
-		return IndexSet_GetIndexOfNthMember( self->shadowNodeSets[self->rank], shadowIndex );
-}
-
-
-Node_GlobalIndex _MeshDecomp_Node_DomainToGlobal1D( void* meshDecomp, Node_DomainIndex domainIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	if ( domainIndex < self->nodeLocalCount ) {
-		return self->nodeMapLocalToGlobal( self, domainIndex );
-	}
-	else if ( domainIndex < self->nodeDomainCount ) {
-		return  self->nodeMapShadowToGlobal( self, domainIndex - self->nodeLocalCount );
-	}
-	else return MD_N_Invalid( self );
-}
-
-
-Node_LocalIndex _MeshDecomp_Node_GlobalToLocal1D( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	
-	if (!IndexSet_IsMember( self->localNodeSets[self->rank], globalIndex ) ) {
-		return MD_N_Invalid( self );
-	}
-	else {
-		int		lNode_I = 0;
-		IndexSet_Index	index;
-		
-		/* since we now know this global index corresponds to a local node, just 
-		find out how many other local nodes there are before it.
-		
-		THIS IS THE SLOWEST FUNCTION IN THE WORLD YET DISCOVERED 
-		 */
-		for( index = 0; index < globalIndex; index++ ) {
-			if( IndexSet_IsMember( self->localNodeSets[self->rank], index ) ) {
-				lNode_I++;
-			}
-		}	
-		
-		return lNode_I;
-	}
-}
-
-
-Node_ShadowIndex _MeshDecomp_Node_GlobalToShadow1D( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	
-	if ( (self->nodeShadowCount == 0) || !IndexSet_IsMember( self->shadowNodeSets[self->rank], globalIndex ) ) 
-	{	
-		return MD_N_Invalid( self );
-	}	
-	else {
-		IndexSet_Index	index;
-		Node_ShadowIndex	sNode_I = 0;
-		
-		/* since we now know this global index corresponds to a shadow node, just 
-		find out how many other shadow nodes there are before it. */
-		for( index = 0; index < globalIndex; index++ ) {
-			if( IndexSet_IsMember( self->shadowNodeSets[self->rank], index ) ) {
-				sNode_I++;
-			}
-		}	
-		
-		return sNode_I;
-	}
-	
-	return MD_N_Invalid( self );
-}
-
-
-Node_DomainIndex _MeshDecomp_Node_GlobalToDomain1D( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	Node_LocalIndex lNode_I;
-	Node_ShadowIndex sNode_I;
-
-	if ( (lNode_I = self->nodeMapGlobalToLocal( self, globalIndex)) != MD_N_Invalid(self) ) {
-		return lNode_I;
-	}
-	else if ( (sNode_I = self->nodeMapGlobalToShadow( self, globalIndex)) != MD_N_Invalid(self) ) {
-		return self->nodeLocalCount + sNode_I;
-	}
-	
-	return MD_N_Invalid( self );
-}
-
-
-Element_GlobalIndex _MeshDecomp_Element_LocalToGlobal1D( void* meshDecomp, Element_LocalIndex localIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	return IndexSet_GetIndexOfNthMember( self->localElementSets[self->rank], localIndex );
-}
-
-
-Element_GlobalIndex _MeshDecomp_Element_ShadowToGlobal1D( void* meshDecomp, Element_ShadowIndex shadowIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	if (self->elementShadowCount == 0)
-		return MD_E_Invalid(self);
-	else
-		return IndexSet_GetIndexOfNthMember( self->shadowElementSets[self->rank], shadowIndex );
-}
-
-
-Element_GlobalIndex _MeshDecomp_Element_DomainToGlobal1D( void* meshDecomp, Element_DomainIndex domainIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	if ( domainIndex < self->elementLocalCount ) {
-		return self->elementMapLocalToGlobal( self, domainIndex );
-	}
-	else if ( domainIndex < self->elementDomainCount ) {
-		return  self->elementMapShadowToGlobal( self, domainIndex - self->elementLocalCount );
-	}
-	else return MD_E_Invalid( self );
-}
-
-
-Element_LocalIndex _MeshDecomp_Element_GlobalToLocal1D( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	
-	if (!IndexSet_IsMember( self->localElementSets[self->rank], globalIndex ) ) {
-		return MD_E_Invalid( self );
-	}
-	else {
-		int		lElement_I = 0;
-		IndexSet_Index	index;
-		
-		/* since we now know this global index corresponds to a local element, just 
-		find out how many other local elements there are before it. */
-		for( index = 0; index < globalIndex; index++ ) {
-			if( IndexSet_IsMember( self->localElementSets[self->rank], index ) ) {
-				lElement_I++;
-			}
-		}	
-		
-		return lElement_I;
-	}
-}
-
-
-Element_ShadowIndex _MeshDecomp_Element_GlobalToShadow1D( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	
-	if ( (self->elementShadowCount == 0) || !IndexSet_IsMember( self->shadowElementSets[self->rank], globalIndex ) ) 
-	{	
-		return MD_E_Invalid( self );
-	}	
-	else {
-		IndexSet_Index	index;
-		Element_ShadowIndex	sElement_I = 0;
-		
-		/* since we now know this global index corresponds to a shadow element, just 
-		find out how many other shadow elements there are before it. */
-		for( index = 0; index < globalIndex; index++ ) {
-			if( IndexSet_IsMember( self->shadowElementSets[self->rank], index ) ) {
-				sElement_I++;
-			}
-		}	
-		
-		return sElement_I;
-	}
-	
-	return MD_E_Invalid( self );
-}
-
-
-Element_DomainIndex _MeshDecomp_Element_GlobalToDomain1D( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	MeshDecomp* self = (MeshDecomp*)meshDecomp;
-	Element_LocalIndex lElement_I;
-	Element_ShadowIndex sElement_I;
-
-	if ( (lElement_I = self->elementMapGlobalToLocal( self, globalIndex)) != MD_E_Invalid(self) ) {
-		return lElement_I;
-	}
-	else if ( (sElement_I = self->elementMapGlobalToShadow( self, globalIndex)) != MD_E_Invalid(self) ) {
-		return self->elementLocalCount + sElement_I;
-	}
-	
-	return MD_E_Invalid( self );
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-void _MeshDecomp_DecomposeNodes( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Partition_Index		procCnt;
-	Partition_Index*	procs;
-	Partition_Index		proc_I;
-	
-	self->localNodeSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "MeshDecomp->localNodeSets" );
-	for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-		self->localNodeSets[proc_I] = NULL;
-	
-	if( self->storage == StoreAll ) {
-		procCnt = self->procsInUse;
-		procs = Memory_Alloc_Array( Partition_Index, procCnt, "procs" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			procs[proc_I] = proc_I;
-	}
-	else if( self->storage == StoreSelf ) {
-		procCnt = 1;
-		procs = Memory_Alloc_Array( Partition_Index, procCnt, "procs" );
-		procs[proc_I] = self->rank;
-	}
-	else /* self->storage == StoreNeighbours */{
-		procCnt = self->shadowProcCount( self ) + 1;
-		procs = Memory_Alloc_Array( Partition_Index, procCnt, "procs" );
-		procs[0] = self->rank;
-		self->shadowBuildProcs( self, &procs[1] );
-	}
-	
-	for( proc_I = 0; proc_I < procCnt; proc_I++ ) {
-		Index*  indices = NULL;
-		Index   indexCnt;
-		
-		self->localNodeSets[procs[proc_I]] = IndexSet_New( self->nodeGlobalCount );
-		IndexSet_GetMembers( self->localElementSets[procs[proc_I]], &indexCnt, &indices );
-		
-		if( indexCnt ) {
-			Node_GlobalIndex	nodeCnt;
-			Node_GlobalIndex*       nodes;
-			Node_GlobalIndex	n_I;
-			
-			nodeCnt = NodeLayout_BuildSubset( self->nodeLayout, indexCnt, indices, &nodes );
-			
-			if( nodeCnt ) {
-				for( n_I = 0; n_I < nodeCnt; n_I++ )
-					IndexSet_Add( self->localNodeSets[procs[proc_I]], nodes[n_I] );
-				
-				Memory_Free( nodes );
-			}
-			else {
-				Stg_Class_Delete( self->localNodeSets[procs[proc_I]] );
-				self->localNodeSets[procs[proc_I]] = NULL;
-			}
-			
-			Memory_Free( indices );
-		}
-	}
-	
-	if( procs )
-		Memory_Free( procs );
-}
-
-
-/* Note this func only works for shadow depth 1 - see the firewall below */
-void _MeshDecomp_BuildShadowSets(
-		void*					meshDecomp,
-		Partition_Index				proc,
-		Element_GlobalIndex			edgeElementCount,
-		Element_GlobalIndex*			edgeElements )
-{
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	Topology*		topology = self->elementLayout->topology;
-	Index			indexCnt;
-	Index*			indices;
-	Node_ShadowIndex	nodeCnt, sNode_I;
-	Node_ShadowIndex*       nodes;
-	Element_LocalIndex      lElement_I;
-	Partition_Index		proc_I;
-	Stream*                 error = Journal_Register( Error_Type, self->type );
-	
-	Journal_Firewall( self->shadowDepth > 0, error, "Error: %s() called when shadow depth set to 0.\n",
-		__func__ );
-
-	Journal_Firewall( self->shadowDepth == 1, error, "Error: %s() called when shadow depth > 1. This function "
-		"for arbitrary mesh types uses Topology_BuildNeighbours() to calculate shadow nodes, and "
-		"thus currently only works for shadow depth 1.\n", __func__ );
-	
-	/* We can only build shadow information for procs that have local element/node info, check
-	   that 'storage' is set to an appropriate value */
-	   
-	/* If user has requested self storage only, then we can only build shadow
-	   info for the current proc. Check that the user's hasn't requested it for
-	   another proc. */
-	if ( self->storage == StoreSelf ) {
-		Journal_Firewall( proc == self->rank, error, "Error- in %s: Cannot build shadow sets "
-			"for proc %d, since you have only requested 'StoreSelf' storage - thus "
-			"cannot build info for processors other than this one's rank of %d.\n",
-			__func__, proc, self->rank );
-	}
-	
-	/* If user has requested self+neighbour storage only, then check that the given
-	   processor to build shadow info for is actually on one our neighbours */
-	if( self->storage == StoreNeighbours && proc != self->rank ) {
-		NeighbourIndex  nbrCnt = self->procTopology->neighbourCount( self->procTopology, self->rank );
-		
-		if( nbrCnt ) {
-			NeighbourIndex*		nbrs = Memory_Alloc_Array( NeighbourIndex, nbrCnt, "nbrs" );
-			
-			self->procTopology->buildNeighbours( self->procTopology, self->rank, nbrs );
-			for( proc_I = 0; proc_I < nbrCnt; proc_I++ ) {
-				if( nbrs[proc_I] == proc )
-					break;
-			}
-			
-			Memory_Free( nbrs );
-			
-			if( proc_I == nbrCnt )
-				Journal_Firewall( 0, error, "Error- in %s: Cannot build shadow sets "
-					"for proc %d, since you have requested 'StoreNeighbours' storage but "
-					"requested proc is not among the current processor %d's %d neighbours.\n",
-					__func__, proc, nbrCnt, self->rank );
-		}
-		else
-			Journal_Firewall( 0, error, "Error- in %s: Cannot build shadow sets "
-				"for proc %d, since you have requested 'StoreNeighbours' storage but "
-				"the current processor %d has no neighbours.\n",
-				__func__, proc, self->rank );
-	}
-	
-	/* If the shadow set arrays have not yet been allocated, do it now */
-	if( !self->shadowElementSets ) {
-		self->shadowElementSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "MeshDecomp->shadowElementSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			self->shadowElementSets[proc_I] = NULL;
-	}
-	
-	if( !self->shadowNodeSets ) {
-		self->shadowNodeSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "MeshDecomp->shadowNodeSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ )
-			self->shadowNodeSets[proc_I] = NULL;
-	}
-	
-	/* If the IndexSets for this proc have not been constructed, do it now */
-	if( !self->shadowElementSets[proc] )
-		self->shadowElementSets[proc] = IndexSet_New( self->elementGlobalCount );
-	
-	if( !self->shadowNodeSets[proc] )
-		self->shadowNodeSets[proc] = IndexSet_New( self->nodeGlobalCount );
-	
-	/* Build shadow elements for this proc */
-	for( lElement_I = 0; lElement_I < edgeElementCount; lElement_I++ ) {
-		Element_GlobalIndex     gElement_I = edgeElements[lElement_I];
-		Element_NeighbourIndex  eNbrCnt = topology->neighbourCount( topology, gElement_I );
-		
-		if( eNbrCnt ) {
-			Element_NeighbourIndex		eNbr_I;
-			Element_NeighbourIndex*		eNbrs = Memory_Alloc_Array( Element_NeighbourIndex, eNbrCnt, "eNbrs" );
-			
-			/* Note: using the neighbour only allows shadow depth of 1 */
-			topology->buildNeighbours( topology, gElement_I, eNbrs );
-			
-			for( eNbr_I = 0; eNbr_I < eNbrCnt; eNbr_I++ ) {
-				/* First check if this neigbour position is a real element. */
-				if ( eNbrs[eNbr_I] < topology->indexCount ) {
-					/* Now, only add the element to the shadow set if its on the Neigbour processor. */
-					if( !IndexSet_IsMember( self->localElementSets[proc], eNbrs[eNbr_I] ) )
-						IndexSet_Add( self->shadowElementSets[proc], eNbrs[eNbr_I] );
-				}		
-			}
-			
-			Memory_Free( eNbrs );
-		}
-	}
-	
-	IndexSet_GetMembers( self->shadowElementSets[proc], &indexCnt, &indices );
-	nodeCnt = NodeLayout_BuildSubset( self->nodeLayout, indexCnt, indices, &nodes );
-	
-	for( sNode_I = 0; sNode_I < nodeCnt; sNode_I++ ) {
-		if( !IndexSet_IsMember( self->localNodeSets[proc], nodes[sNode_I] ) )
-			IndexSet_Add( self->shadowNodeSets[proc], nodes[sNode_I] );
-	}
-	
-	Memory_Free( nodes );
-}
-
-/* Serial Functions - Reassign function pointers for superfast serial implementations */
-void MeshDecomp_OverrideMethodsIfSerial( void* meshDecomp ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-
-	/* if I am not a serial decomposition - then return */
-	if ( self->nproc > 1 )
-		return;
-
-	self->nodeMapLocalToGlobal = _MeshDecomp_Node_MapLocalToGlobal_Serial;
-	self->nodeMapDomainToGlobal = _MeshDecomp_Node_MapDomainToGlobal_Serial;
-	self->nodeMapShadowToGlobal = _MeshDecomp_Node_MapShadowToGlobal_Serial;
-	self->nodeMapGlobalToLocal = _MeshDecomp_Node_MapGlobalToLocal_Serial;
-	self->nodeMapGlobalToDomain = _MeshDecomp_Node_MapGlobalToDomain_Serial;
-	self->nodeMapGlobalToShadow = _MeshDecomp_Node_MapGlobalToShadow_Serial;
-
-	self->elementMapLocalToGlobal = _MeshDecomp_Element_MapLocalToGlobal_Serial;
-	self->elementMapDomainToGlobal = _MeshDecomp_Element_MapDomainToGlobal_Serial;
-	self->elementMapShadowToGlobal = _MeshDecomp_Element_MapGlobalToShadow_Serial;
-	self->elementMapGlobalToLocal = _MeshDecomp_Element_MapGlobalToLocal_Serial;
-	self->elementMapGlobalToDomain = _MeshDecomp_Element_MapGlobalToDomain_Serial;
-	self->elementMapGlobalToShadow = _MeshDecomp_Element_MapGlobalToShadow_Serial;
-
-	self->shadowProcCount = _MeshDecomp_Shadow_ProcCount_Serial;
-	self->shadowBuildProcs = _MeshDecomp_Shadow_BuildProcs_Serial;
-	self->shadowProcElementCount = _MeshDecomp_Shadow_ProcElementCount_Serial;
-	self->procWithElement = _MeshDecomp_Proc_WithElement_Serial;
-}
-
-Node_GlobalIndex _MeshDecomp_Node_MapLocalToGlobal_Serial( void* meshDecomp, Node_LocalIndex localIndex ) {
-	return localIndex;
-}
-
-Node_GlobalIndex _MeshDecomp_Node_MapDomainToGlobal_Serial( void* meshDecomp, Node_DomainIndex domainIndex ) {
-	return domainIndex;
-}
-Node_GlobalIndex _MeshDecomp_Node_MapShadowToGlobal_Serial( void* meshDecomp, Node_ShadowIndex shadowIndex ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	/* There should not be shadow nodes in serial */
-	return MD_N_Invalid( self );
-}
-
-Node_LocalIndex _MeshDecomp_Node_MapGlobalToLocal_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	return globalIndex;
-}
-
-Node_DomainIndex _MeshDecomp_Node_MapGlobalToDomain_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	return globalIndex;
-}
-
-Node_ShadowIndex _MeshDecomp_Node_MapGlobalToShadow_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	/* There should not be shadow nodes in serial */
-	return MD_N_Invalid( self );	
-}
-
-Element_GlobalIndex _MeshDecomp_Element_MapLocalToGlobal_Serial( void* meshDecomp, Element_LocalIndex localIndex ) {
-	return localIndex;
-}
-
-Element_GlobalIndex _MeshDecomp_Element_MapDomainToGlobal_Serial( void* meshDecomp, Element_DomainIndex domainIndex ) {
-	return domainIndex;
-}
-
-Element_GlobalIndex _MeshDecomp_Element_MapShadowToGlobal_Serial( void* meshDecomp, Element_DomainIndex domainIndex ) {
-	return domainIndex;
-}
-
-Element_LocalIndex _MeshDecomp_Element_MapGlobalToLocal_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	return globalIndex;
-}
-
-Element_DomainIndex _MeshDecomp_Element_MapGlobalToDomain_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	return globalIndex;
-}
-
-Element_ShadowIndex _MeshDecomp_Element_MapGlobalToShadow_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	MeshDecomp*		self = (MeshDecomp*)meshDecomp;
-	/* There should not be shadow elements in serial */
-	return MD_E_Invalid( self );
-}
-Partition_Index _MeshDecomp_Shadow_ProcCount_Serial( void* meshDecomp ) {
-	return 0; /* I think that this is right - not sure though */
-}
-void _MeshDecomp_Shadow_BuildProcs_Serial( void* meshDecomp, Partition_Index* procs ) {}
-Element_ShadowIndex _MeshDecomp_Shadow_ProcElementCount_Serial( void* meshDecomp, Partition_Index rank ) {
-	return 0; /* There are no shadow elements in serial */
-}
-Partition_Index _MeshDecomp_Proc_WithElement_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) {
-	return 0; /* The only processor is Procesor 0 - this function is easy */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,328 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-** Role:
-**	Interface class for dividing a mesh into partitions between processors, and
-**	mapping from local to global numbers.
-**
-** Assumptions:
-**
-** Comments:
-**	TODO: partition on element is currently known not to work. Have turned it off by default.
-**
-**	Note: all of the options controlling mesh building, such as MeshDecomp::allowUnbalancing, can be set through
-**	the dictionary by adding a Bool entry with the same name as the option you wish to set.
-**
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_MeshDecomp_h__
-#define __Discretisaton_Mesh_MeshDecomp_h__
-
-
-	/** determines which sets of global->local node information are stored. */
-	typedef enum {
-		/** Only store 1 set, for the current processor */
-		StoreSelf,
-		/** (DEFAULT) Store the set for the current processor, plus all processors which neighbour this one.
-		The current processor's set goes first. Makes shadow calculations faster. */
-		StoreNeighbours,		/* default */
-		/** Store the set for every processor. Potentially memory-hungry, even for IndexSets. */
-		StoreAll
-	} MDStorage;
-
-	/* Textual name of this class */
-	extern const Type MeshDecomp_Type;
-
-	/* Virtual function types */
-	typedef Node_GlobalIndex	(MeshDecomp_Node_MapLocalToGlobalFunction)      ( void* meshDecomp, Node_LocalIndex localIndex );
-	typedef Node_GlobalIndex	(MeshDecomp_Node_MapDomainToGlobalFunction)     ( void* meshDecomp, Node_DomainIndex domainIndex );
-	typedef Node_GlobalIndex	(MeshDecomp_Node_MapShadowToGlobalFunction)     ( void* meshDecomp, Node_ShadowIndex shadowIndex );
-	typedef Node_LocalIndex		(MeshDecomp_Node_MapGlobalToLocalFunction)      ( void* meshDecomp, Node_GlobalIndex globalIndex );
-	typedef Node_DomainIndex	(MeshDecomp_Node_MapGlobalToDomainFunction)     ( void* meshDecomp, Node_GlobalIndex globalIndex );
-	typedef Node_ShadowIndex	(MeshDecomp_Node_MapGlobalToShadowFunction)     ( void* meshDecomp, Node_GlobalIndex globalIndex );
-	typedef Element_GlobalIndex	(MeshDecomp_Element_MapLocalToGlobalFunction)	( void* meshDecomp, Element_LocalIndex localIndex );
-	typedef Element_GlobalIndex	(MeshDecomp_Element_MapDomainToGlobalFunction)	( void* meshDecomp, Element_DomainIndex domainIndex );
-	typedef Element_GlobalIndex	(MeshDecomp_Element_MapShadowToGlobalFunction)	( void* meshDecomp, Element_ShadowIndex shadowIndex );
-	typedef Element_LocalIndex	(MeshDecomp_Element_MapGlobalToLocalFunction)	( void* meshDecomp, Element_GlobalIndex globalIndex );
-	typedef Element_DomainIndex	(MeshDecomp_Element_MapGlobalToDomainFunction)	( void* meshDecomp, Element_GlobalIndex globalIndex );
-	typedef Element_ShadowIndex	(MeshDecomp_Element_MapGlobalToShadowFunction)	( void* meshDecomp, Element_GlobalIndex globalIndex );
-	typedef Partition_Index         (MeshDecomp_Shadow_ProcCountFunction)           ( void* meshDecomp );
-	typedef void			(MeshDecomp_Shadow_BuildProcsFunction)		( void* meshDecomp, Partition_Index* procs );
-	typedef Element_ShadowIndex	(MeshDecomp_Shadow_ProcElementCountFunction)	( void* meshDecomp, Partition_Index rank );
-	typedef Partition_Index		(MeshDecomp_Proc_WithElementFunction)		( void* meshDecomp, Element_GlobalIndex globalIndex );
-
-	/** MeshDecomp class contents. */
-	#define __MeshDecomp \
-		/* General info */ \
-		__Stg_Component \
-		Stream*				debug; \
-		Dictionary*					dictionary; \
-		\
-		/* Virtual info */ \
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal; \
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal; \
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal; \
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal; \
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain; \
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow; \
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal; \
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal; \
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal; \
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal; \
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain; \
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow; \
-		MeshDecomp_Shadow_ProcCountFunction*            shadowProcCount; \
-		MeshDecomp_Shadow_BuildProcsFunction*           shadowBuildProcs; \
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount; \
-		MeshDecomp_Proc_WithElementFunction*            procWithElement; \
-		\
-		/* MeshDecomp info ... */ \
-		/** communicator for this mesh. */ \
-		MPI_Comm                                        communicator; \
-		/** rank of current processor. */ \
-		Partition_Index                                 rank; \
-		/** total processors available - other classes should use MeshDecomp::procsInUse instead in most cases. */ \
-		Partition_Index                                 nproc; \
-		/** Processors actually in use (may be lower than nproc if MeshDecomp::allowUnusedCPUs enabled. */ \
-		Partition_Index                                 procsInUse; \
-		/** Determines whether some CPUs will sit idle if MeshDecomp::allowUnbalancing is disabled and nodes don't
-		divide evenly between processors */ \
-		Bool                                            allowUnusedCPUs; \
-		/** determines if the mesh should be decomposed so that nodes form the boundaries between partitions,
-		and thus the boundary nodes are shared between neighbour partitions. Used in preference to
-		partition by element if activated. */ \
-		Bool                                            allowPartitionOnNode; \
-		/** determines if the mesh should be decomposed so that elements form the boundaries between partitions,
-		and thus the boundary elements are shared between neighbour partitions. */ \
-		Bool						allowPartitionOnElement; \
-		/** */ \
-		Bool						allowUnbalancing; \
-		/** determines processor arrangement - and thus which processors are neighbours for shadow purposes. */ \
-		Topology*					procTopology; \
-		\
-		/** controls element layout. */ \
-		ElementLayout*					elementLayout; \
-		/** controls node layout. */ \
-		NodeLayout*					nodeLayout; \
-		/** determines which sets of global->local node information are stored - see MDStorage doc for what
-		the values mean. */ \
-		MDStorage					storage; \
-		/** Records which of the global nodes are also local nodes. Which processors these 
-		are stored for is determined by MeshDecomp::storage */ \
-		IndexSet**					localNodeSets; \
-		/** Records which of the global nodes are also local nodes. Which processors these 
-		are stored for is determined by MeshDecomp::storage */ \
-		IndexSet**					shadowNodeSets; \
-		/** Records which of the global elements are also local elements. Which processors these 
-		are stored for is determined by MeshDecomp::storage */ \
-		IndexSet**					localElementSets; \
-		/** Records which of the global elements are also shadow elements. Which processors these 
-		are stored for is determined by MeshDecomp::storage */ \
-		IndexSet**					shadowElementSets; \
-		\
-		/** determines how many nodes/elements deep shadowing should be done. */ \
-		Node_ShadowIndex				shadowDepth; \
-		/* counts */ \
-		Node_GlobalIndex				nodeGlobalCount; \
-		Node_LocalIndex					nodeLocalCount; \
-		Node_ShadowIndex				nodeShadowCount; \
-		Node_DomainIndex				nodeDomainCount; \
-		Element_GlobalIndex				elementGlobalCount; \
-		Element_LocalIndex				elementLocalCount; \
-		Element_ShadowIndex				elementShadowCount; \
-		Element_DomainIndex				elementDomainCount; 
-
-	/** Controls mesh decomposition - see MeshDecomp.h for further documentation. */
-	struct MeshDecomp { __MeshDecomp };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-	/** Class_New() Creation implementation */
-
-	MeshDecomp* _MeshDecomp_New(
-		SizeT                                           _sizeOfSelf, 
-		Type                                            type,
-		Stg_Class_DeleteFunction*                       _delete,
-		Stg_Class_PrintFunction*                        _print,
-		Stg_Class_CopyFunction*                         _copy, 
-		Stg_Component_DefaultConstructorFunction*       _defaultConstructor,
-		Stg_Component_ConstructFunction*                _construct,
-		Stg_Component_BuildFunction*                    _build,
-		Stg_Component_InitialiseFunction*               _initialise,
-		Stg_Component_ExecuteFunction*                  _execute,
-		Stg_Component_DestroyFunction*                  _destroy,
-		Name                                            name,
-		Bool                                            initFlag,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*            shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*           shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*            procWithElement,
-		Dictionary*                                     dictionary,
-		MPI_Comm                                        communicator,
-		ElementLayout*                                  elementLayout,
-		NodeLayout*                                     nodeLayout );
-
-	/** Class_Init() implementation functions. */
-	void _MeshDecomp_Init(
-		MeshDecomp*					self,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		Stg_ObjectList*             pointer_Register );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/** Stg_Class_Delete() implementation */
-	void _MeshDecomp_Delete( void* meshDecomp );
-	
-	/** Stg_Class_Print() MeshDecomp implementation */
-	void _MeshDecomp_Print( void* meshDecomp, Stream* stream );
-	
-	/* Copy */
-	#define MeshDecomp_Copy( self ) \
-		(MeshDecomp*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define MeshDecomp_DeepCopy( self ) \
-		(MeshDecomp*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _MeshDecomp_Copy( void* meshDecomp, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	Node_GlobalIndex _MeshDecomp_Node_LocalToGlobal1D( void* meshDecomp, Node_LocalIndex localIndex );
-	
-	Node_GlobalIndex _MeshDecomp_Node_ShadowToGlobal1D( void* meshDecomp, Node_ShadowIndex shadowIndex );
-	
-	Node_GlobalIndex _MeshDecomp_Node_DomainToGlobal1D( void* meshDecomp, Node_DomainIndex domainIndex );
-	
-	Node_LocalIndex _MeshDecomp_Node_GlobalToLocal1D( void* meshDecomp, Node_GlobalIndex globalIndex );
-	
-	Node_ShadowIndex _MeshDecomp_Node_GlobalToShadow1D( void* meshDecomp, Node_GlobalIndex globalIndex );
-	
-	Node_DomainIndex _MeshDecomp_Node_GlobalToDomain1D( void* meshDecomp, Node_GlobalIndex globalIndex );
-
-	Element_GlobalIndex _MeshDecomp_Element_LocalToGlobal1D( void* meshDecomp, Element_LocalIndex localIndex );
-	
-	Element_GlobalIndex _MeshDecomp_Element_ShadowToGlobal1D( void* meshDecomp, Element_ShadowIndex shadowIndex );
-	
-	Element_GlobalIndex _MeshDecomp_Element_DomainToGlobal1D( void* meshDecomp, Element_DomainIndex domainIndex );
-
-	Element_LocalIndex _MeshDecomp_Element_GlobalToLocal1D( void* meshDecomp, Element_GlobalIndex globalIndex );
-	
-	Element_ShadowIndex _MeshDecomp_Element_GlobalToShadow1D( void* meshDecomp, Element_GlobalIndex globalIndex );
-
-	Element_DomainIndex _MeshDecomp_Element_GlobalToDomain1D( void* meshDecomp, Element_GlobalIndex globalIndex );
-	
-	Element_ShadowIndex _MeshDecomp_Shadow_ProcElementCount( void* meshDecomp, Partition_Index rank );
-	
-	Partition_Index _MeshDecomp_Proc_WithElement( void* meshDecomp, Element_GlobalIndex globalIndex );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	#define MD_N_Invalid( self ) \
-		(self)->nodeGlobalCount
-
-	#define MD_E_Invalid( self ) \
-		(self)->elementGlobalCount
-
-
-	Node_GlobalIndex* MeshDecomp_BuildNodeLocalToGlobalMap( void* meshDecomp );
-	Node_GlobalIndex* MeshDecomp_BuildNodeDomainToGlobalMap( void* meshDecomp );
-	Node_LocalIndex* MeshDecomp_BuildNodeGlobalToLocalMap( void* meshDecomp );
-	Node_DomainIndex* MeshDecomp_BuildNodeGlobalToDomainMap( void* meshDecomp );
-
-	Element_GlobalIndex* MeshDecomp_BuildElementLocalToGlobalMap( void* meshDecomp );
-	Element_GlobalIndex* MeshDecomp_BuildElementDomainToGlobalMap( void* meshDecomp );
-	Element_LocalIndex* MeshDecomp_BuildElementGlobalToLocalMap( void* meshDecomp );
-	Element_DomainIndex* MeshDecomp_BuildElementGlobalToDomainMap( void* meshDecomp );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	void _MeshDecomp_DecomposeNodes( void* meshDecomp );
-	
-	/** builds shadow element and node information for a given processor relative to its neighbours.
-		NOTE: that it only works for a shadowDepth of 1, since it uses the Topology_BuildNeighbours
-		function to generate shadow nodes from those on the boundary.
-
-		\param meshDecomp self
-		\param proc the neighbour processor to build shadow information for.
-		\param edgeElementCount the number of elements on the edge of home proc's mesh section
-		\param edgeElements array of edge elements to test neighbours of.
-	*/
-	void _MeshDecomp_BuildShadowSets(
-		void*					meshDecomp,
-		Partition_Index				proc,
-		Element_GlobalIndex			edgeElementCount,
-		Element_GlobalIndex*			edgeElements );
-
-	/* Serial Functions - Reassign function pointers for superfast serial implementations */
-	void MeshDecomp_OverrideMethodsIfSerial( void* meshDecomp ) ;
-	Node_GlobalIndex _MeshDecomp_Node_MapLocalToGlobal_Serial( void* meshDecomp, Node_LocalIndex localIndex ) ;
-	Node_GlobalIndex _MeshDecomp_Node_MapDomainToGlobal_Serial( void* meshDecomp, Node_DomainIndex domainIndex ) ;
-	Node_GlobalIndex _MeshDecomp_Node_MapShadowToGlobal_Serial( void* meshDecomp, Node_ShadowIndex shadowIndex ) ;
-
-	Node_LocalIndex _MeshDecomp_Node_MapGlobalToLocal_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) ;
-	Node_DomainIndex _MeshDecomp_Node_MapGlobalToDomain_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) ;
-	Node_ShadowIndex _MeshDecomp_Node_MapGlobalToShadow_Serial( void* meshDecomp, Node_GlobalIndex globalIndex ) ;
-
-	Element_GlobalIndex _MeshDecomp_Element_MapLocalToGlobal_Serial( void* meshDecomp, Element_LocalIndex localIndex ) ;
-	Element_GlobalIndex _MeshDecomp_Element_MapDomainToGlobal_Serial( void* meshDecomp, Element_DomainIndex domainIndex ) ;
-	Element_GlobalIndex _MeshDecomp_Element_MapShadowToGlobal_Serial( void* meshDecomp, Element_DomainIndex domainIndex ) ;
-
-	Element_LocalIndex _MeshDecomp_Element_MapGlobalToLocal_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) ;
-	Element_DomainIndex _MeshDecomp_Element_MapGlobalToDomain_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) ;
-	Element_ShadowIndex _MeshDecomp_Element_MapGlobalToShadow_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) ;
-
-	Partition_Index _MeshDecomp_Shadow_ProcCount_Serial( void* meshDecomp ) ;
-	void _MeshDecomp_Shadow_BuildProcs_Serial( void* meshDecomp, Partition_Index* procs ) ;
-	Element_ShadowIndex _MeshDecomp_Shadow_ProcElementCount_Serial( void* meshDecomp, Partition_Index rank ) ;
-	Partition_Index _MeshDecomp_Proc_WithElement_Serial( void* meshDecomp, Element_GlobalIndex globalIndex ) ;
-
-#endif /* __Discretisaton_Mesh_MeshDecomp_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshDecomp.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">MeshDecomp</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGenerator.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGenerator.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGenerator.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,6 +41,8 @@
 
 #include "types.h"
 #include "shortcuts.h"
+#include "Decomp_Sync.h"
+#include "MeshTopology.h"
 #include "MeshClass.h"
 #include "MeshGenerator.h"
 
@@ -100,40 +102,6 @@
 	_Stg_Component_Print( self, stream );
 }
 
-void* _MeshGenerator_Copy( void* meshGenerator, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	MeshGenerator*	self = (MeshGenerator*)meshGenerator;
-	MeshGenerator*	newMeshGenerator;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
-
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMeshGenerator = (MeshGenerator*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
-
-	/* Deep or shallow? */
-	if( deep ) {
-	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newMeshGenerator;
-#endif
-
-	return NULL;
-}
-
 void _MeshGenerator_Construct( void* meshGenerator, Stg_ComponentFactory* cf, void* data ) {
 	MeshGenerator*		self = (MeshGenerator*)meshGenerator;
 	Dictionary*		dict;
@@ -176,16 +144,6 @@
 }
 
 void _MeshGenerator_Build( void* meshGenerator, void* data ) {
-	MeshGenerator*	self = (MeshGenerator*)meshGenerator;
-	unsigned	m_i;
-
-	/* Sanity check. */
-	assert( self );
-	assert( !self->nMeshes || self->meshes );
-
-	/* Generate each mesh in our list. */
-	for( m_i = 0; m_i < self->nMeshes; m_i++ )
-		MeshGenerator_Generate( self, self->meshes[m_i] );
 }
 
 void _MeshGenerator_Initialise( void* meshGenerator, void* data ) {

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,298 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: /local/local/Discretisation/Geometry/src/MeshGeometry.c 4177 2006-02-23T02:16:21.399539Z boo  $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "MeshDecomp.h"
-#include "MeshClass.h"
-#include "MeshGeometry.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type MeshGeometry_Type = "MeshGeometry";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-MeshGeometry* MeshGeometry_DefaultNew( Name name )
-{
-	return (MeshGeometry*)_MeshGeometry_New(
-		sizeof(MeshGeometry), 
-		MeshGeometry_Type, 
-		_MeshGeometry_Delete, 
-		_MeshGeometry_Print,
-		_MeshGeometry_Copy,
-		(Stg_Component_DefaultConstructorFunction*)MeshGeometry_DefaultNew,
-		_MeshGeometry_Construct,
-		_MeshGeometry_Build,
-		_MeshGeometry_Initialise,
-		_MeshGeometry_Execute,
-		_MeshGeometry_Destroy,
-		name,
-		False,
-		_BlockGeometry_BuildPoints,
-		_MeshGeometry_PointAt,
-		NULL );
-}
-
-MeshGeometry* MeshGeometry_New(
-		Name name,
-		Dictionary*					dictionary )
-{
-	return _MeshGeometry_New( 
-		sizeof(MeshGeometry), 
-		MeshGeometry_Type, 
-		_MeshGeometry_Delete, 
-		_MeshGeometry_Print,
-		_MeshGeometry_Copy,
-		(Stg_Component_DefaultConstructorFunction*)MeshGeometry_DefaultNew,
-		_MeshGeometry_Construct,
-		_MeshGeometry_Build,
-		_MeshGeometry_Initialise,
-		_MeshGeometry_Execute,
-		_MeshGeometry_Destroy,
-		name,
-		True,
-		_BlockGeometry_BuildPoints,
-		_MeshGeometry_PointAt,
-		dictionary );
-}
-
-
-void MeshGeometry_Init(
-		MeshGeometry*					self,
-		Name						name,
-		Dictionary*					dictionary )
-{
-	/* General info */
-	self->type = MeshGeometry_Type;
-	self->_sizeOfSelf = sizeof(MeshGeometry);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _MeshGeometry_Delete;
-	self->_print = _MeshGeometry_Print;
-	self->_copy = _MeshGeometry_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)MeshGeometry_DefaultNew;
-	self->_construct = _MeshGeometry_Construct;
-	self->_build = _MeshGeometry_Build;
-	self->_initialise = _MeshGeometry_Initialise;
-	self->_execute = _MeshGeometry_Execute;
-	self->_destroy = _MeshGeometry_Destroy;
-	self->buildPoints = _BlockGeometry_BuildPoints;
-	self->pointAt = _MeshGeometry_PointAt;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-
-	_Geometry_Init( (Geometry*)self );
-        _BlockGeometry_Init( (BlockGeometry*)self, NULL );
-	
-	/* MeshGeometry info */
-	_MeshGeometry_Init( self );
-}
-
-
-MeshGeometry* _MeshGeometry_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*		_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*		_execute,
-		Stg_Component_DestroyFunction*		_destroy,
-		Name							name,
-		Bool							initFlag,
-		Geometry_BuildPointsFunction*			buildPoints,
-		Geometry_PointAtFunction*			pointAt,
-		Dictionary*					dictionary )
-{
-	MeshGeometry* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(MeshGeometry) );
-	self = (MeshGeometry*)_BlockGeometry_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		buildPoints,
-		pointAt,
-		dictionary );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* MeshGeometry info */
-	if( initFlag ){
-		_MeshGeometry_Init( self );
-	}
-	
-	return self;
-}
-
-void _MeshGeometry_Init( MeshGeometry* self ) {
-	/* General and Virtual info should already be set */
-	
-	/* MeshGeometry info */
-        self->useMesh = False;
-        self->mesh = NULL;
-	self->decomp = NULL;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _MeshGeometry_Delete( void* meshGeometry ) {
-	MeshGeometry* self = (MeshGeometry*)meshGeometry;
-	
-	/* Stg_Class_Delete parent */
-	_BlockGeometry_Delete( self );
-}
-
-
-void _MeshGeometry_Print( void* meshGeometry, Stream* stream ) {
-	MeshGeometry* self = (MeshGeometry*)meshGeometry;
-	
-	/* Set the Journal for printing informations */
-	Stream* meshGeometryStream;
-	meshGeometryStream = Journal_Register( InfoStream_Type, "MeshGeometryStream" );
-
-	/* Print parent */
-	_BlockGeometry_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "MeshGeometry (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* MeshGeometry info */
-}
-
-void _MeshGeometry_Construct( void* meshGeometry, Stg_ComponentFactory *cf, void* data ){
-	MeshGeometry*	self = (MeshGeometry*)meshGeometry;
-        Dictionary*	dict;
-
-        _BlockGeometry_Construct( self, cf, data );
-
-	/* Get Size from Dictionary */
-	self->cf = cf;
-        dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
-        self->meshName = StG_Strdup( Dictionary_GetString( dict, "mesh" ) );
-	self->decompName = StG_Strdup( Dictionary_GetString( dict, "decomp" ) );
-}
-
-void _MeshGeometry_Build( void* meshGeometry, void *data ){
-	MeshGeometry*	self = (MeshGeometry*)meshGeometry;
-
-	self->mesh = Stg_ComponentFactory_ConstructByName( self->cf, self->meshName, Mesh, True, data );
-	self->decomp = Stg_ComponentFactory_ConstructByName( self->cf, self->decompName, MeshDecomp, True, data );
-}
-	
-void _MeshGeometry_Initialise( void* meshGeometry, void *data ){
-}
-	
-void _MeshGeometry_Execute( void* meshGeometry, void *data ){
-	
-}
-	
-void _MeshGeometry_Destroy( void* meshGeometry, void *data ){
-	
-}
-
-void* _MeshGeometry_Copy( void* meshGeometry, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-        assert( 0 );
-
-	return NULL;
-}
-
-
-void _MeshGeometry_PointAt( void* meshGeometry, Index index, Coord point ) {
-	MeshGeometry*	self = (MeshGeometry*)meshGeometry;
-	unsigned	mapped;
-
-        if( !self->useMesh ) {
-                _BlockGeometry_PointAt( self, index, point );
-                return;
-        }
-
-	assert( self->mesh );
-
-	if( self->mesh->nodeG2D )
-		mapped = Mesh_NodeMapGlobalToDomain( self->mesh, index );
-	else
-		mapped = self->decomp->nodeMapGlobalToDomain( self->decomp, index );
-	assert( mapped < self->decomp->nodeDomainCount );
-	point[0] = self->mesh->nodeCoord[mapped][0];
-	point[1] = self->mesh->nodeCoord[mapped][1];
-	point[2] = self->mesh->nodeCoord[mapped][2];
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,146 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id: /local/local/Discretisation/Geometry/src/BlockGeometry.h 4177 2006-02-23T02:16:21.399539Z boo  $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisation_Geometry_MeshGeometry_h__
-#define __Discretisation_Geometry_MeshGeometry_h__
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type MeshGeometry_Type;
-
-	/* MeshGeometry information */
-	#define __MeshGeometry \
-		/* General info */ \
-		__BlockGeometry \
-		\
-		/* Virtual info */ \
-		\
-		/* MeshGeometry info ... */ \
-		Stg_ComponentFactory*		cf; \
-		char*				meshName; \
-		char*				decompName; \
-		Bool				useMesh; \
-		Mesh*				mesh; \
-		MeshDecomp*			decomp;
-
-	struct MeshGeometry { __MeshGeometry };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a MeshGeometry */
-	MeshGeometry* MeshGeometry_DefaultNew( Name name );
-	
-	MeshGeometry* MeshGeometry_New(
-		Name						name,
-		Dictionary*					dictionary );
-	
-	/* Initialise a MeshGeometry */
-	void MeshGeometry_Init(
-		MeshGeometry*					self,
-		Name						name,
-		Dictionary*					dictionary );
-	
-	/* Creation implementation */
-	MeshGeometry* _MeshGeometry_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*		_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*		_execute,
-		Stg_Component_DestroyFunction*		_destroy,
-		Name							name,
-		Bool							initFlag,
-		Geometry_BuildPointsFunction*			buildPoints,
-		Geometry_PointAtFunction*			pointAt,
-		Dictionary*					dictionary );
-	
-	/* Initialisation implementation functions */
-	void _MeshGeometry_Init( MeshGeometry* self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete MeshGeometry implementation */
-	void _MeshGeometry_Delete( void* blockGeometry );
-	
-	/* Print MeshGeometry implementation */
-	void _MeshGeometry_Print( void* blockGeometry, Stream* stream );
-	
-	void _MeshGeometry_Construct( void* blockGeometry, Stg_ComponentFactory *cf, void* data );
-	
-	void _MeshGeometry_Build( void* blockGeometry, void *data );
-	
-	void _MeshGeometry_Initialise( void* blockGeometry, void *data );
-	
-	void _MeshGeometry_Execute( void* blockGeometry, void *data );
-	
-	void _MeshGeometry_Destroy( void* blockGeometry, void *data );
-	
-	/* Copy */
-	#define MeshGeometry_Copy( self ) \
-		(MeshGeometry*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define MeshGeometry_DeepCopy( self ) \
-		(MeshGeometry*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _MeshGeometry_Copy( void* geometry, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	void _MeshGeometry_PointAt( void* blockGeometry, Index index, Coord point );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisation_Geometry_MeshGeometry_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshGeometry.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">MeshGeometry</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-<!-- This component calls in another directory so the info above/below may not be complete-->
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">MeshLayout</param>
-		<param name="Type">MeshLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 345 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,289 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "MeshDecomp.h"
-#include "MeshLayout.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type MeshLayout_Type = "MeshLayout";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-MeshLayout* MeshLayout_DefaultNew( Name name )
-{
-	return _MeshLayout_New( 
-		sizeof(MeshLayout), 
-		MeshLayout_Type, 
-		_MeshLayout_Delete, 
-		_MeshLayout_Print,
-		_MeshLayout_Copy,
-		(Stg_Component_DefaultConstructorFunction*)MeshLayout_DefaultNew,
-		_MeshLayout_Construct,
-		_MeshLayout_Build,
-		_MeshLayout_Initialise,
-		_MeshLayout_Execute,
-		_MeshLayout_Destroy,
-		name,
-		False,
-		NULL,
-		NULL,
-		NULL );
-}
-
-MeshLayout* MeshLayout_New(
-		Name						name,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp )
-{
-	return _MeshLayout_New( 
-		sizeof(MeshLayout), 
-		MeshLayout_Type, 
-		_MeshLayout_Delete, 
-		_MeshLayout_Print,
-		_MeshLayout_Copy,
-		(Stg_Component_DefaultConstructorFunction*)MeshLayout_DefaultNew,
-		_MeshLayout_Construct,
-		_MeshLayout_Build,
-		_MeshLayout_Initialise,
-		_MeshLayout_Execute,
-		_MeshLayout_Destroy,
-		name,
-		True,
-		elementLayout,
-		nodeLayout,
-		decomp );
-}
-
-void MeshLayout_Init(
-		MeshLayout*					self,
-		Name						name,
-		ElementLayout*				elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp )
-{
-	/* General info */
-	self->type = MeshLayout_Type;
-	self->_sizeOfSelf = sizeof(MeshLayout);
-	self->_deleteSelf = False;
-	
-	/* Virtual info */
-	self->_delete = _MeshLayout_Delete;
-	self->_print = _MeshLayout_Print;
-	self->_copy = _MeshLayout_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)MeshLayout_DefaultNew;
-	self->_construct = _MeshLayout_Construct;
-	self->_build = _MeshLayout_Build;
-	self->_initialise = _MeshLayout_Initialise;
-	self->_execute = _MeshLayout_Execute;
-	self->_destroy = _MeshLayout_Destroy;
-	
-	/* MeshLayout info */
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_MeshLayout_Init( self, elementLayout, nodeLayout, decomp );
-}
-
-MeshLayout* _MeshLayout_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool							initFlag,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp )
-{
-	MeshLayout* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(MeshLayout) );
-	self = (MeshLayout*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-			_initialise, _execute, _destroy, name, NON_GLOBAL );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* MeshLayout info */
-	if( initFlag ){
-		_MeshLayout_Init( self, elementLayout, nodeLayout, decomp );
-	}
-	
-	return self;
-}
-
-void _MeshLayout_Init(
-		MeshLayout*					self,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp )
-{
-	/* General and Virtual info should already be set */
-	
-	/* MeshLayout info */
-	self->isConstructed = True;
-	self->elementLayout = elementLayout;
-	self->nodeLayout = nodeLayout;
-	self->decomp = decomp;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _MeshLayout_Delete( void* meshLayout ) {
-	MeshLayout* self = (MeshLayout*)meshLayout;
-	
-	/* Stg_Class_Delete parent */
-	_Stg_Class_Delete( self );
-}
-
-
-void _MeshLayout_Print( void* meshLayout, Stream* stream ) {
-	MeshLayout* self = (MeshLayout*)meshLayout;
-	
-	/* Set the Journal for printing informations */
-	Stream* meshLayoutStream;
-	meshLayoutStream = Journal_Register( InfoStream_Type, "MeshLayoutStream" );
-
-	/* Print parent */
-	_Stg_Component_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "MeshLayout (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* MeshLayout info */
-}
-
-void* _MeshLayout_Copy( void* meshLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	MeshLayout*	self = (MeshLayout*)meshLayout;
-	MeshLayout*	newMeshLayout;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMeshLayout = (MeshLayout*)_Stg_Component_Copy( self, dest, deep, nameExt, map );
-	
-	if( deep ) {
-		newMeshLayout->nodeLayout = (NodeLayout*)Stg_Class_Copy( self->nodeLayout, NULL, deep, nameExt, map );
-		newMeshLayout->elementLayout = (ElementLayout*)Stg_Class_Copy( self->elementLayout, NULL, deep, nameExt, map );
-		newMeshLayout->decomp = (MeshDecomp*)Stg_Class_Copy( self->decomp, NULL, deep, nameExt, map );
-	}
-	else {
-		newMeshLayout->nodeLayout = self->nodeLayout;
-		newMeshLayout->elementLayout = self->elementLayout;
-		newMeshLayout->decomp = self->decomp;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newMeshLayout;
-}
-
-void _MeshLayout_Construct( void* meshLayout, Stg_ComponentFactory *cf, void* data ){
-	MeshLayout *self = (MeshLayout*)meshLayout;
-	ElementLayout *elementLayout = NULL;
-	NodeLayout *nodeLayout = NULL;
-	MeshDecomp *meshDecomp = NULL;
-
-	elementLayout =  Stg_ComponentFactory_ConstructByKey( cf, self->name, ElementLayout_Type, ElementLayout, True, data );
-	nodeLayout =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  NodeLayout_Type, NodeLayout,  True, data ) ;
-	meshDecomp =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  MeshDecomp_Type, MeshDecomp,  True, data ) ;
-	
-	_MeshLayout_Init( self, elementLayout, nodeLayout, meshDecomp );
-}
-	
-void _MeshLayout_Build( void* meshLayout, void *data ){
-	MeshLayout *self = (MeshLayout*)meshLayout;
-
-	/* Decomp needs to be built first */
-	Build( self->decomp, data, False );
-	Build( self->nodeLayout, data, False );
-	Build( self->elementLayout, data, False );
-	
-}
-	
-void _MeshLayout_Initialise( void* meshLayout, void *data ){
-	
-}
-	
-void _MeshLayout_Execute( void* meshLayout, void *data ){
-	
-}
-	
-void _MeshLayout_Destroy( void* meshLayout, void *data ){
-	
-}
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,152 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_MeshLayout_h__
-#define __Discretisaton_Mesh_MeshLayout_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type MeshLayout_Type;
-
-	/* MeshLayout information */
-	#define __MeshLayout \
-		/* General info */ \
-		__Stg_Component \
-		Stream*				debug; \
-		\
-		/* Virtual info */ \
-		\
-		/* MeshLayout info ... */ \
-		ElementLayout*			elementLayout; \
-		NodeLayout*			nodeLayout; \
-		MeshDecomp*			decomp;
-	struct _MeshLayout { __MeshLayout };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a MeshLayout */
-	MeshLayout* MeshLayout_DefaultNew( Name name );
-
-	MeshLayout* MeshLayout_New(
-		Name						name,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp );
-
-	void MeshLayout_LoadFromDict( void* meshLayout, Dictionary* subDict, Dictionary* dictionary, Stg_ObjectList* objList);
-	
-	/* Initialise a MeshLayout */
-	void MeshLayout_Init(
-		MeshLayout*					self,
-		Name						name,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp );
-	
-	/* Creation implementation */
-	MeshLayout* _MeshLayout_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool							initFlag,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp );
-
-	/* Initialisation implementation functions */
-	void _MeshLayout_Init(
-		MeshLayout*					self,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshDecomp*					decomp );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete MeshLayout implementation */
-	void _MeshLayout_Delete( void* meshLayout );
-	
-	/* Print MeshLayout implementation */
-	void _MeshLayout_Print( void* meshLayout, Stream* stream );
-	
-	void _MeshLayout_Construct( void* meshLayout, Stg_ComponentFactory *cf, void* data );
-	
-	void _MeshLayout_Build( void* meshLayout, void *data );
-	
-	void _MeshLayout_Initialise( void* meshLayout, void *data );
-	
-	void _MeshLayout_Execute( void* meshLayout, void *data );
-	
-	void _MeshLayout_Destroy( void* meshLayout, void *data );
-	
-	/* Copy */
-	#define MeshLayout_Copy( self ) \
-		(MeshLayout*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define MeshLayout_DeepCopy( self ) \
-		(MeshLayout*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _MeshLayout_Copy( void* meshLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_MeshLayout_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshLayout.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">MeshLayout</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">ElementLayout</param>
-		<param name="Type">ElementLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 246 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">NodeLayout</param>
-		<param name="Type">NodeLayout</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 247 of the c file and then remove this comment afterwards -->
-
-	<struct>
-		<param name="Essential">True</param>
-		<param name="Name">MeshDecomp</param>
-		<param name="Type">MeshDecomp</param>
-		<param name="Description">...</param>
-	</struct>
-
-<!-- PLEASE, check the above struct information is accurate, in line number 248 of the c file and then remove this comment afterwards -->
-
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -38,18 +38,13 @@
 
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
+#include "Mesh.h"
 
-#include "types.h"
-#include "shortcuts.h"
-#include "CommTopology.h"
-#include "Decomp.h"
-#include "Decomp_Sync.h"
-#include "MeshTopology.h"
 
-
 /* Textual name of this class */
 const Type MeshTopology_Type = "MeshTopology";
 
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Constructors
 */
@@ -59,7 +54,7 @@
 				  MeshTopology_Type, 
 				  _MeshTopology_Delete, 
 				  _MeshTopology_Print, 
-				  _MeshTopology_Copy, 
+				  NULL, 
 				  (void* (*)(Name))_MeshTopology_New, 
 				  _MeshTopology_Construct, 
 				  _MeshTopology_Build, 
@@ -88,13 +83,10 @@
 void _MeshTopology_Init( MeshTopology* self ) {
 	self->nDims = 0;
 	self->nTDims = 0;
-
 	self->domains = NULL;
-	self->nRentals = NULL;
-	self->rentals = NULL;
-	self->nDomainEls = NULL;
+	self->nBndVerts = 0;
+	self->bndVerts = NULL;
 	self->shadowDepth = 0;
-
 	self->nIncEls = NULL;
 	self->incEls = NULL;
 }
@@ -125,40 +117,6 @@
 	_Stg_Component_Print( self, stream );
 }
 
-void* _MeshTopology_Copy( void* topo, void* destProc_I, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-#if 0
-	MeshTopology*	self = (MeshTopology*)topo;
-	MeshTopology*	newMeshTopology;
-	PtrMap*	map = ptrMap;
-	Bool	ownMap = False;
-
-	/* Damn me for making copying so difficult... what was I thinking? */
-	
-	/* We need to create a map if it doesn't already exist. */
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newMeshTopology = (MeshTopology*)_Mesh_Copy( self, destProc_I, deep, nameExt, map );
-	
-	/* Copy the virtual methods here. */
-
-	/* Deep or shallow? */
-	if( deep ) {
-	}
-	else {
-	}
-	
-	/* If we own the map, get rid of it here. */
-	if( ownMap ) Stg_Class_Delete( map );
-	
-	return (void*)newMeshTopology;
-#endif
-
-	return NULL;
-}
-
 void _MeshTopology_Construct( void* topo, Stg_ComponentFactory* cf, void* data ) {
 }
 
@@ -178,7 +136,7 @@
 ** Public Functions
 */
 
-void MeshTopology_SetNDims( void* topo, unsigned nDims ) {
+void MeshTopology_SetDimSize( void* topo, unsigned nDims ) {
 	MeshTopology*	self = (MeshTopology*)topo;
 
 	assert( self );
@@ -193,37 +151,53 @@
 	if( nDims ) {
 		unsigned	 d_i;
 
-		self->domains = Memory_Alloc_Array( Decomp_Sync*, self->nTDims, "MeshTopology::domains" );
-		self->nDomainEls = Memory_Alloc_Array( unsigned, self->nTDims, "MeshTopology::nDomainEls" );
-		self->nIncEls = Memory_Alloc_2DArray( unsigned*, self->nTDims, self->nTDims, "MeshTopology::nIncEls" );
-		self->incEls = Memory_Alloc_2DArray( unsigned**, self->nTDims, self->nTDims, "MeshTopology::incEls" );
+		self->domains = AllocNamedArray( Decomp_Sync*, self->nTDims, "MeshTopology::domains" );
+		self->nIncEls = AllocNamedArray2D( unsigned*, self->nTDims, self->nTDims, "MeshTopology::nIncEls" );
+		self->incEls = AllocNamedArray2D( unsigned**, self->nTDims, self->nTDims, "MeshTopology::incEls" );
+		memset( self->domains, 0, self->nTDims * sizeof(Decomp_Sync*) );
 		for( d_i = 0; d_i < self->nTDims; d_i++ ) {
-			unsigned	d_j;
-
-			self->domains[d_i] = Decomp_Sync_New( "" );
-			self->nDomainEls[d_i] = 0;
-			Decomp_Sync_SetDecomp( self->domains[d_i], Decomp_New( "" ) );
-
-			for( d_j = 0; d_j < self->nTDims; d_j++ ) {
-				self->nIncEls[d_i][d_j] = NULL;
-				self->incEls[d_i][d_j] = NULL;
-			}
+			memset( self->nIncEls[d_i], 0, self->nTDims * sizeof(unsigned*) );
+			memset( self->incEls[d_i], 0, self->nTDims * sizeof(unsigned*) );
 		}
 	}
 }
 
-void MeshTopology_SetElements( void* topo, MeshTopology_Dim dim, unsigned nEls, unsigned* els ) {
+void MeshTopology_SetElements( void* topo, MeshTopology_Dim dim, unsigned nElements, unsigned* elements ) {
 	MeshTopology*	self = (MeshTopology*)topo;
+	Decomposer*	decomposer;
 
 	assert( self );
 	assert( dim < self->nTDims );
-	assert( !nEls || els );
+	assert( self->domains );
+	assert( MeshTopology_ValidateElements( self, dim, nElements, elements ) );
 
-	/* Decompose elements. */
-	Decomp_Sync_Decompose( self->domains[dim], nEls, els );
+	MeshTopology_ClearElements( self, dim );
+	decomposer = Decomposer_New();
+	Decomposer_Decompose( decomposer, nElements, elements, 
+			      NULL, NULL, self->domains + dim );
+	FreeObject( decomposer );
 
-	/* Set the number of domain elements. */	
-	self->nDomainEls[dim] = self->domains[dim]->decomp->nLocals + self->domains[dim]->nRemotes;
+	/* If we just set the vertices, take the union of sink and source elements as the
+	   boundary set. */
+	if( dim == MT_VERTEX ) {
+		Decomp_Sync*	sync;
+		CommTopology*	commTopo;
+		RangeSet*	bndSet;
+		unsigned	nInds, *inds;
+		unsigned	p_i;
+
+		sync = MeshTopology_GetSync( self, MT_VERTEX );
+		commTopo = MeshTopology_GetCommTopology( self, MT_VERTEX );
+		bndSet = RangeSet_New();
+		for( p_i = 0; p_i < CommTopology_GetIncidenceSize( commTopo ); p_i++ ) {
+			Decomp_Sync_GetSources( sync, p_i, &nInds, &inds );
+			RangeSet_AddIndices( bndSet, nInds, inds );
+			Decomp_Sync_GetSinks( sync, p_i, &nInds, &inds );
+			RangeSet_AddIndices( bndSet, nInds, inds );
+		}
+		RangeSet_GetIndices( bndSet, &self->nBndVerts, &self->bndVerts );
+		FreeObject( bndSet );
+	}
 }
 
 void MeshTopology_SetIncidence( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
@@ -236,28 +210,82 @@
 	assert( self );
 	assert( fromDim < self->nTDims );
 	assert( toDim < self->nTDims );
-	assert( nIncEls );
-	assert( incEls );
+	assert( !nIncEls || incEls );
 	assert( Decomp_Sync_GetDomainSize( self->domains[fromDim] ) );
 	assert( Decomp_Sync_GetDomainSize( self->domains[toDim] ) );
 
 	/* Clear existing incidence. */
-	KillArray( self->incEls[fromDim][toDim] );
 	KillArray( self->nIncEls[fromDim][toDim] );
+	if( self->incEls[fromDim][toDim] ) {
+		for( e_i = 0; e_i < Decomp_Sync_GetDomainSize( self->domains[fromDim] ); e_i++ )
+			FreeArray( self->incEls[fromDim][toDim][e_i] );
+		KillArray( self->incEls[fromDim][toDim] );
+	}
 
-	/* Allocate for incoming data. */
-	size = Decomp_Sync_GetDomainSize( self->domains[fromDim] );
-	self->nIncEls[fromDim][toDim] = Memory_Alloc_Array( unsigned, size, "MeshTopology::nIncEls[][]" );
-	self->incEls[fromDim][toDim] = Memory_Alloc_2DComplex( unsigned, size, nIncEls, "MeshTopology::incEls[][]" );
+	if( nIncEls && incEls ) {
+		/* Allocate for incoming data. */
+		size = Decomp_Sync_GetDomainSize( self->domains[fromDim] );
+		self->nIncEls[fromDim][toDim] = AllocNamedArray( unsigned, size, "MeshTopology::nIncEls[][]" );
+		self->incEls[fromDim][toDim] = AllocNamedArray( unsigned*, size, "MeshTopology::incEls[][]" );
 
-	/* Copy the lot. */
-	memcpy( self->nIncEls[fromDim][toDim], nIncEls, size * sizeof(unsigned) );
-	for( e_i = 0; e_i < size; e_i++ ) {
-		memcpy( self->incEls[fromDim][toDim][e_i], incEls[e_i], 
-			self->nIncEls[fromDim][toDim][e_i] * sizeof(unsigned) );
+		/* Copy the lot. */
+		memcpy( self->nIncEls[fromDim][toDim], nIncEls, size * sizeof(unsigned) );
+		for( e_i = 0; e_i < size; e_i++ ) {
+			self->incEls[fromDim][toDim][e_i] = AllocArray( unsigned, nIncEls[e_i] );
+			memcpy( self->incEls[fromDim][toDim][e_i], incEls[e_i], 
+				self->nIncEls[fromDim][toDim][e_i] * sizeof(unsigned) );
+		}
 	}
 }
 
+void MeshTopology_SetShadowDepth( void* topo, unsigned depth ) {
+	Stream*		errorStream = Journal_Register( ErrorStream_Type, "MeshTopology::SetShadowDepth" );
+	MeshTopology*	self = (MeshTopology*)topo;
+	CommTopology*	commTopo;
+
+	assert( self );
+	assert( depth );
+
+	/* Store shadow depth. */
+	self->shadowDepth = depth;
+
+	/* Ensure all communication topologies are equivalent. */
+	MeshTopology_CommUnion( self );
+
+	/* If there are no neighbouring processors, forget about it. */
+	commTopo = MeshTopology_GetCommTopology( self, MT_VERTEX );
+	if( !CommTopology_GetIncidenceSize( commTopo ) )
+		return;
+
+	/* If we don't have sufficient incidence, we need to error. */
+	Journal_Firewall( MeshTopology_HasIncidence( self, self->nDims, MT_VERTEX ) && 
+			  MeshTopology_HasIncidence( self, self->nDims, MT_VERTEX ), 
+			  errorStream, 
+			  "\n" \
+			  "********************************************************\n" \
+			  "* Error: Topological shadows cannot be automatically   *\n" \
+			  "*        built without a minimum of element-vertex and *\n" \
+			  "*        vertex-element incidence.                     *\n" \
+			  "********************************************************\n" \
+			  "\n" );
+
+	/* Construct and exchange shadow elements and incidence. */
+	MeshTopology_BuildShadows( self );
+}
+
+void MeshTopology_SetSync( void* topo, MeshTopology_Dim dim, Decomp_Sync* sync ) {
+	MeshTopology*	self = (MeshTopology*)topo;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	MeshTopology_ClearElements( self, dim );
+	self->domains[dim] = sync;
+	if( sync )
+		Decomp_Sync_AddRef( sync );
+}
+
 void MeshTopology_Complete( void* topo ) {
 	MeshTopology*	self = (MeshTopology*)topo;
 	unsigned	d_i, d_j;
@@ -287,32 +315,6 @@
 	}
 }
 
-void MeshTopology_SetShadowDepth( void* topo, unsigned depth ) {
-	MeshTopology*	self = (MeshTopology*)topo;
-	RangeSet***	shadows;
-	unsigned**	incSizes;
-	unsigned***	shadowInc;
-
-	assert( self );
-	assert( depth );
-
-	/* Need to store shadow information for each processor in each topological dimension. */
-	self->shadowDepth = depth;
-
-	/* If there are no neighbouring processors, forget about it. */
-	if( !self->domains[MT_VERTEX]->commTopo->nInc )
-		return;
-
-	shadows = (RangeSet***)Memory_Alloc_2DArray_Unnamed( RangeSet**, self->nTDims, 
-							     self->domains[MT_VERTEX]->commTopo->nInc );
-	MeshTopology_BuildTopShadows( self, shadows + self->nDims );
-	MeshTopology_BuildAllShadows( self, shadows );
-	MeshTopology_BuildShadowInc( self, shadows, &incSizes, &shadowInc );
-
-	/* Send to neighbours. */
-	MeshTopology_SendRecvShadows( self, shadows, incSizes, shadowInc );
-}
-
 void MeshTopology_Invert( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim ) {
 	MeshTopology*	self = (MeshTopology*)topo;
 	unsigned	fromSize, toSize;
@@ -338,7 +340,7 @@
 	invIncEls = self->incEls[toDim][fromDim];
 
 	/* Allocate some tables. */
-	nIncEls = Memory_Alloc_Array( unsigned, fromSize, "MeshTopology::nIncEls[][]" );
+	nIncEls = AllocNamedArray( unsigned, fromSize, "MeshTopology::nIncEls[][]" );
 	memset( nIncEls, 0, fromSize * sizeof(unsigned) );
 
 	/* Two phase process: count the numbers then allocate and do it again. */
@@ -353,7 +355,7 @@
 	}
 
 	/* Build up the tables. */
-	incEls = Memory_Alloc_2DComplex( unsigned, fromSize, nIncEls, "MeshTopology::incEls[][]" );
+	incEls = AllocNamedComplex2D( unsigned, fromSize, nIncEls, "MeshTopology::incEls[][]" );
 	memset( nIncEls, 0, fromSize * sizeof(unsigned) );
 	for( e_i = 0; e_i < toSize; e_i++ ) {
 		unsigned	inc_i;
@@ -366,8 +368,9 @@
 	}
 
 	/* Transfer to permanent storage. */
-	self->nIncEls[fromDim][toDim] = nIncEls;
-	self->incEls[fromDim][toDim] = incEls;
+	MeshTopology_SetIncidence( self, fromDim, toDim, nIncEls, incEls );
+	FreeArray( nIncEls );
+	FreeArray( incEls );
 }
 
 void MeshTopology_Cascade( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim ) {
@@ -383,7 +386,7 @@
 	assert( fromDim > toDim + 1 );
 
 	/* Determine maximum incidence for any element. */
-	for( e_i = 0; e_i < self->nDomainEls[fromDim]; e_i++ ) {
+	for( e_i = 0; e_i < self->domains[fromDim]->nDomains; e_i++ ) {
 		unsigned	curInc = 0;
 		unsigned	inc_i;
 
@@ -398,12 +401,12 @@
 	}
 
 	/* Allocate. */
-	nIncEls = Memory_Alloc_Array_Unnamed( unsigned, self->nDomainEls[fromDim] );
-	incEls = Memory_Alloc_2DArray_Unnamed( unsigned, self->nDomainEls[fromDim], maxInc );
-	memset( nIncEls, 0, self->nDomainEls[fromDim] * sizeof(unsigned) );
+	nIncEls = AllocArray( unsigned, self->domains[fromDim]->nDomains );
+	incEls = AllocArray2D( unsigned, self->domains[fromDim]->nDomains, maxInc );
+	memset( nIncEls, 0, self->domains[fromDim]->nDomains * sizeof(unsigned) );
 
 	/* Determine actual incidence. */
-	for( e_i = 0; e_i < self->nDomainEls[fromDim]; e_i++ ) {
+	for( e_i = 0; e_i < self->domains[fromDim]->nDomains; e_i++ ) {
 		unsigned	inc_i;
 
 		for( inc_i = 0; inc_i < self->nIncEls[fromDim][fromDim - 1][e_i]; inc_i++ ) {
@@ -447,7 +450,7 @@
 	toDim = (dim == MT_VERTEX) ? MT_EDGE : MT_VERTEX;
 
 	/* Allocate some space for neighbour counts. */
-	nNbrs = Memory_Alloc_Array_Unnamed( unsigned, size ); 
+	nNbrs = AllocArray( unsigned, size ); 
 
 	/* Calculate maximum neighbours for each element. */
 	for( e_i = 0; e_i < size; e_i++ ) {
@@ -464,7 +467,7 @@
 	}
 
 	/* Allocate for maximum neighbours and clear neighbour counts. */
-	nbrs = Memory_Alloc_2DComplex_Unnamed( unsigned, size, nNbrs );
+	nbrs = AllocComplex2D( unsigned, size, nNbrs );
 	memset( nNbrs, 0, size * sizeof(unsigned) );
 
 	/* Build neighbours for each element of dimension 'dim'. */
@@ -503,6 +506,17 @@
 	FreeArray( nbrs );
 }
 
+unsigned MeshTopology_GetGlobalSize( void* meshTopology, MeshTopology_Dim dim ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	return Decomp_Sync_GetGlobalSize( self->domains[dim] );
+}
+
 unsigned MeshTopology_GetLocalSize( void* meshTopology, MeshTopology_Dim dim ) {
 	MeshTopology*	self = (MeshTopology*)meshTopology;
 
@@ -510,12 +524,11 @@
 	assert( dim < self->nTDims );
 	assert( self->domains );
 	assert( self->domains[dim] );
-	assert( self->domains[dim]->decomp );
 
-	return self->domains[dim]->decomp->nLocals;
+	return Decomp_Sync_GetLocalSize( self->domains[dim] );
 }
 
-unsigned MeshTopology_GetShadowSize( void* meshTopology, MeshTopology_Dim dim ) {
+unsigned MeshTopology_GetRemoteSize( void* meshTopology, MeshTopology_Dim dim ) {
 	MeshTopology*	self = (MeshTopology*)meshTopology;
 
 	assert( self );
@@ -523,7 +536,7 @@
 	assert( self->domains );
 	assert( self->domains[dim] );
 
-	return self->domains[dim]->nRemotes;
+	return Decomp_Sync_GetRemoteSize( self->domains[dim] );
 }
 
 unsigned MeshTopology_GetDomainSize( void* meshTopology, MeshTopology_Dim dim ) {
@@ -531,11 +544,75 @@
 
 	assert( self );
 	assert( dim < self->nTDims );
-	assert( self->nDomainEls );
+	assert( self->domains );
+	assert( self->domains[dim] );
 
-	return self->nDomainEls[dim];
+	return Decomp_Sync_GetDomainSize( self->domains[dim] );
 }
 
+unsigned MeshTopology_GetSharedSize( void* meshTopology, MeshTopology_Dim dim ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	return Decomp_Sync_GetSharedSize( self->domains[dim] );
+}
+
+void MeshTopology_GetLocalElements( void* meshTopology, MeshTopology_Dim dim, unsigned* nEls, unsigned** els ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	Decomp_GetLocals( self->domains[dim]->decomp, nEls, els );
+}
+
+void MeshTopology_GetRemoteElements( void* meshTopology, MeshTopology_Dim dim, unsigned* nEls, unsigned** els ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	Decomp_Sync_GetRemotes( self->domains[dim], nEls, els );
+}
+
+CommTopology* MeshTopology_GetCommTopology( void* meshTopology, MeshTopology_Dim dim ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	return Decomp_Sync_GetCommTopology( self->domains[dim] );
+}
+
+Decomp_Sync* MeshTopology_GetSync( void* meshTopology, MeshTopology_Dim dim ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	return self->domains[dim];
+}
+
+Bool MeshTopology_GlobalToDomain( void* meshTopology, MeshTopology_Dim dim, unsigned global, unsigned* domain ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	return Decomp_Sync_GlobalToDomain( self->domains[dim], global, domain );
+}
+
 unsigned MeshTopology_DomainToGlobal( void* meshTopology, MeshTopology_Dim dim, unsigned domain ) {
 	MeshTopology*	self = (MeshTopology*)meshTopology;
 
@@ -547,7 +624,7 @@
 	return Decomp_Sync_DomainToGlobal( self->domains[dim], domain );
 }
 
-unsigned MeshTopology_GlobalToDomain( void* meshTopology, MeshTopology_Dim dim, unsigned global ) {
+Bool MeshTopology_LocalToShared( void* meshTopology, MeshTopology_Dim dim, unsigned local, unsigned* shared ) {
 	MeshTopology*	self = (MeshTopology*)meshTopology;
 
 	assert( self );
@@ -555,101 +632,354 @@
 	assert( self->domains );
 	assert( self->domains[dim] );
 
-	return Decomp_Sync_GlobalToDomain( self->domains[dim], global );
+	return Decomp_Sync_LocalToShared( self->domains[dim], local, shared );
 }
 
+unsigned MeshTopology_SharedToLocal( void* meshTopology, MeshTopology_Dim dim, unsigned shared ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
 
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	return Decomp_Sync_SharedToLocal( self->domains[dim], shared );
+}
+
+unsigned MeshTopology_GetOwner( void* meshTopology, MeshTopology_Dim dim, unsigned remote ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	return Decomp_Sync_GetOwner( self->domains[dim], remote );
+}
+
+void MeshTopology_GetSharers( void* meshTopology, MeshTopology_Dim dim, unsigned shared, 
+			      unsigned* nSharers, unsigned** sharers )
+{
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+	assert( self->domains[dim] );
+
+	Decomp_Sync_GetSharers( self->domains[dim], shared, nSharers, sharers );
+}
+
+Bool MeshTopology_HasIncidence( void* meshTopology, MeshTopology_Dim fromDim, MeshTopology_Dim toDim ) {
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( fromDim < self->nTDims );
+	assert( toDim < self->nTDims );
+	assert( self->nIncEls );
+	assert( self->incEls );
+
+	return (self->nIncEls[fromDim][toDim] && self->incEls[fromDim][toDim]);
+}
+
+unsigned MeshTopology_GetIncidenceSize( void* meshTopology, MeshTopology_Dim fromDim, unsigned fromInd, 
+					MeshTopology_Dim toDim )
+{
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( self->domains );
+	assert( fromDim < self->nTDims );
+	assert( toDim < self->nTDims );
+	assert( fromInd < Decomp_Sync_GetDomainSize( self->domains[fromDim] ) );
+	assert( self->nIncEls );
+	assert( self->nIncEls[fromDim][toDim] );
+
+	return self->nIncEls[fromDim][toDim][fromInd];
+}
+
+void MeshTopology_GetIncidence( void* meshTopology, MeshTopology_Dim fromDim, unsigned fromInd, MeshTopology_Dim toDim, 
+				unsigned* nInc, unsigned** inc )
+{
+	MeshTopology*	self = (MeshTopology*)meshTopology;
+
+	assert( self );
+	assert( self->domains );
+	assert( fromDim < self->nTDims );
+	assert( toDim < self->nTDims );
+	assert( fromInd < Decomp_Sync_GetDomainSize( self->domains[fromDim] ) );
+	assert( self->nIncEls );
+	assert( self->nIncEls[fromDim][toDim] );
+	assert( self->incEls );
+	assert( self->incEls[fromDim][toDim] );
+	assert( self->incEls[fromDim][toDim][fromInd] );
+	assert( nInc );
+	assert( inc );
+
+	*nInc = self->nIncEls[fromDim][toDim][fromInd];
+	*inc = self->incEls[fromDim][toDim][fromInd];
+}
+
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Private Functions
 */
 
-void MeshTopology_BuildTopShadows( void* meshTopology, RangeSet*** shadows ) {
-	MeshTopology*	self = (MeshTopology*)meshTopology;
+void MeshTopology_ClearElements( MeshTopology* self, MeshTopology_Dim dim ) {
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( self->domains );
+
+	if( self->domains[dim] ) {
+		MeshTopology_ClearIncidence( self, dim );
+		Decomp_Sync_RemoveRef( self->domains[dim] );
+		self->domains[dim] = NULL;
+	}
+
+	if( dim == MT_VERTEX ) {
+		KillArray( self->bndVerts );
+		self->nBndVerts = 0;
+	}
+}
+
+void MeshTopology_ClearIncidence( MeshTopology* self, MeshTopology_Dim dim ) {
+	unsigned	nDomainEls;
+	unsigned	d_i;
+
+	assert( self );
+	assert( dim < self->nTDims );
+
+	nDomainEls = MeshTopology_GetDomainSize( self, dim );
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		KillArray( self->nIncEls[dim][d_i] );
+		KillArray2D( nDomainEls, self->incEls[dim][d_i] );
+	}
+}
+
+void MeshTopology_CommUnion( MeshTopology* self ) {
+	Decomp_Sync*	sync;
 	CommTopology*	commTopo;
+	RangeSet	*allSet, *curSet, *tmpSet;
+	unsigned	nIncRanks, *incRanks;
+	unsigned	d_i;
+
+	assert( self );
+
+	allSet = RangeSet_New();
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		commTopo = MeshTopology_GetCommTopology( self, d_i );
+		CommTopology_GetIncidence( commTopo, &nIncRanks, &incRanks );
+		RangeSet_AddIndices( allSet, nIncRanks, incRanks );
+	}
+
+	curSet = RangeSet_New();
+	tmpSet = RangeSet_New();
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		RangeSet_Clear( tmpSet );
+		RangeSet_Union( tmpSet, allSet );
+		sync = MeshTopology_GetSync( self, d_i );
+		commTopo = MeshTopology_GetCommTopology( self, d_i );
+		CommTopology_GetIncidence( commTopo, &nIncRanks, &incRanks );
+		RangeSet_SetIndices( curSet, nIncRanks, incRanks );
+		RangeSet_Subtraction( tmpSet, curSet );
+		RangeSet_GetIndices( tmpSet, &nIncRanks, &incRanks );
+		Decomp_Sync_AddRemoteRanks( sync, nIncRanks, incRanks );
+	}
+
+	FreeObject( allSet );
+	FreeObject( curSet );
+	FreeObject( tmpSet );
+}
+
+void MeshTopology_BuildShadows( MeshTopology* self ) {
+	CommTopology*	commTopo;
 	unsigned	nIncRanks;
-	unsigned*	incRanks;
-	void**		shdSets;
+	unsigned	**nShdEls, ***shdEls;
+	unsigned	**nExtEls, ***extEls;
+	unsigned**	nShdInc;
+	Stg_Byte***	shdInc;
+	unsigned*	nOldIncRanks;
+	unsigned	d_i, p_i;
+
+	assert( self );
+
+	commTopo = MeshTopology_GetCommTopology( self, MT_VERTEX );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+
+	nShdEls = AllocArray( unsigned*, self->nTDims );
+	shdEls = AllocArray( unsigned**, self->nTDims );
+	nExtEls = AllocArray2D( unsigned, self->nTDims, nIncRanks );
+	extEls = AllocArray2D( unsigned*, self->nTDims, nIncRanks );
+
+	for( d_i = self->nTDims - 1; d_i < self->nTDims; d_i-- ) {
+		nShdEls[d_i] = AllocArray( unsigned, nIncRanks );
+		shdEls[d_i] = AllocArray( unsigned*, nIncRanks );
+		memset( nShdEls[d_i], 0, nIncRanks * sizeof(unsigned) );
+		memset( shdEls[d_i], 0, nIncRanks * sizeof(unsigned*) );
+		memset( nExtEls[d_i], 0, nIncRanks * sizeof(unsigned) );
+		memset( extEls[d_i], 0, nIncRanks * sizeof(unsigned*) );
+
+		MeshTopology_BuildShadowedElements( self, d_i, nShdEls, shdEls, 
+						    nExtEls, extEls );
+		MeshTopology_ExchangeShadowedElements( self, d_i, nShdEls[d_i], shdEls[d_i] );
+		MeshTopology_ExchangeExternalElements( self, d_i, nExtEls[d_i], extEls[d_i], 
+						       nShdEls + d_i, shdEls + d_i );
+	}
+
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		for( p_i = 0; p_i < nIncRanks; p_i++ )
+			FreeArray( extEls[d_i][p_i] );
+	}
+	FreeArray( nExtEls ); FreeArray( extEls );
+
+	nOldIncRanks = AllocArray( unsigned, self->nTDims );
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		commTopo = MeshTopology_GetCommTopology( self, d_i );
+		nOldIncRanks[d_i] = CommTopology_GetIncidenceSize( commTopo );
+	}
+	MeshTopology_CommUnion( self );
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		commTopo = MeshTopology_GetCommTopology( self, d_i );
+		nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+		if( nIncRanks != nOldIncRanks[d_i] ) {
+			nShdEls[d_i] = ReallocArray( nShdEls[d_i], unsigned, nIncRanks );
+			shdEls[d_i] = ReallocArray( shdEls[d_i], unsigned*, nIncRanks );
+			memset( nShdEls[d_i] + nOldIncRanks[d_i], 0, 
+				(nIncRanks - nOldIncRanks[d_i]) * sizeof(unsigned) );
+			memset( shdEls[d_i] + nOldIncRanks[d_i], 0, 
+				(nIncRanks - nOldIncRanks[d_i]) * sizeof(unsigned*) );
+		}
+	}
+	FreeArray( nOldIncRanks );
+
+	commTopo = MeshTopology_GetCommTopology( self, MT_VERTEX );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+
+	nShdInc = AllocArray2D( unsigned, self->nTDims, nIncRanks );
+	shdInc = AllocArray2D( Stg_Byte*, self->nTDims, nIncRanks );
+
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		memset( nShdInc[d_i], 0, nIncRanks * sizeof(unsigned) );
+		memset( shdInc[d_i], 0, nIncRanks * sizeof(unsigned*) );
+
+		MeshTopology_BuildShadowedIncidence( self, d_i, nShdEls[d_i], shdEls[d_i], 
+						     nShdInc[d_i], shdInc[d_i] );
+		MeshTopology_ExchangeShadowedIncidence( self, d_i, nShdInc[d_i], shdInc[d_i] );
+	}
+
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+			FreeArray( shdEls[d_i][p_i] );
+			FreeArray( shdInc[d_i][p_i] );
+		}
+	}
+	FreeArray( nShdEls ); FreeArray2D( self->nTDims, shdEls );
+	FreeArray( nShdInc ); FreeArray( shdInc );
+}
+
+void MeshTopology_BuildShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+					 unsigned** nShadowedEls, unsigned*** shadowedEls, 
+					 unsigned** nExternalEls, unsigned*** externalEls )
+{
+	assert( self );
+
+	if( dim == self->nDims ) {
+		MeshTopology_BuildTopShadowedElements( self, nShadowedEls, shadowedEls, 
+						       nExternalEls, externalEls );
+	}
+	else {
+		MeshTopology_BuildMidShadowedElements( self, dim, nShadowedEls, shadowedEls, 
+						       nExternalEls, externalEls );
+	}
+}
+
+void MeshTopology_BuildTopShadowedElements( MeshTopology* self, unsigned** nShadowedEls, unsigned*** shadowedEls, 
+					    unsigned** nExternalEls, unsigned*** externalEls )
+{
+	CommTopology*	commTopo;
+	unsigned	nDomainEls;
+	unsigned	nIncRanks;
+	IndexSet**	shdSets;
 	Decomp_Sync*	sync;
 	unsigned	p_i, s_i;
 
 	assert( self );
-	assert( shadows );
+	assert( nShadowedEls && shadowedEls );
+	assert( nExternalEls && externalEls );
 
 	/* Extract communicator incidence. */
-	commTopo = self->domains[MT_VERTEX]->commTopo;
-	CommTopology_GetIncidence( commTopo, commTopo->rank, &nIncRanks, &incRanks );
+	commTopo = MeshTopology_GetCommTopology( self, self->nDims );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
 
-	/* Build some sets, initially index sets. */
-	shdSets = (void**)Memory_Alloc_Array_Unnamed( IndexSet*, nIncRanks );
+	/* Build some index sets. */
+	sync = MeshTopology_GetSync( self, MT_VERTEX );
+	nDomainEls = Decomp_Sync_GetDomainSize( sync );
+	shdSets = AllocArray( IndexSet*, nIncRanks );
 	for( p_i = 0; p_i < nIncRanks; p_i++ )
-		shdSets[p_i] = (void*)IndexSet_New( Decomp_Sync_GetDomainSize( self->domains[MT_VERTEX] ) );
+		shdSets[p_i] = IndexSet_New( nDomainEls );
 
-	/* Store shared vertices. */
-	sync = self->domains[0];
-	for( s_i = 0; s_i < sync->nShared; s_i++ ) {
-		for( p_i = 0; p_i < sync->nSharers[s_i]; p_i++ )
-			IndexSet_Add( shdSets[sync->sharers[s_i][p_i]], sync->shared[s_i] );
+	/* Store connected vertices. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( s_i = 0; s_i < sync->nSrcs[p_i]; s_i++ )
+			IndexSet_Add( shdSets[p_i], sync->srcs[p_i][s_i] );
+		for( s_i = 0; s_i < sync->nSnks[p_i]; s_i++ )
+			IndexSet_Add( shdSets[p_i], sync->snks[p_i][s_i] );
 	}
 
 	/* Build range sets of shadowed elements. */
 	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-		unsigned	nEdges;
-		unsigned*	edges;
-		unsigned	nShdEls;
-		unsigned*	shdEls;
+		unsigned	nVerts;
+		unsigned*	verts;
 		unsigned	e_i;
 
-		IndexSet_GetMembers( shdSets[p_i], &nEdges, &edges );
-		FreeObject( shdSets[p_i] );
-		shdSets[p_i] = (void*)IndexSet_New( MeshTopology_GetLocalSize( self, self->nDims ) );
+		/* Extract vertices. */
+		IndexSet_GetMembers( shdSets[p_i], &nVerts, &verts );
 
+		/* Replace vertex index set with element index set. */
+		shdSets[p_i] = IndexSet_New( MeshTopology_GetLocalSize( self, self->nDims ) );
+
 		/* Build initial set of elements. */
-		for( e_i = 0; e_i < nEdges; e_i++ ) {
-			unsigned	nIncEls = self->nIncEls[MT_VERTEX][self->nDims][edges[e_i]];
-			unsigned*	incEls = self->incEls[MT_VERTEX][self->nDims][edges[e_i]];
+		for( e_i = 0; e_i < nVerts; e_i++ ) {
+			unsigned	nIncEls;
+			unsigned*	incEls;
 			unsigned	inc_i;
 
+			nIncEls = self->nIncEls[MT_VERTEX][self->nDims][verts[e_i]];
+			incEls = self->incEls[MT_VERTEX][self->nDims][verts[e_i]];
 			for( inc_i = 0; inc_i < nIncEls; inc_i++ ) {
+				/* Only store local elements. */
 				if( incEls[inc_i] >= MeshTopology_GetLocalSize( self, self->nDims ) )
 					continue;
+
 				IndexSet_Add( shdSets[p_i], incEls[inc_i] );
 			}
 		}
 
-		/* Free edge set. */
-		FreeArray( edges );
+		/* Free vertex array. */
+		FreeArray( verts );
 
 		/* Expand the elements to satisfy shadow depth. */
 		if( self->shadowDepth > 1 ) {
-			IndexSet*	bndSet;
+			IndexSet*	bndIndSet;
 			unsigned	d_i;
 
-			bndSet = IndexSet_DeepCopy( shdSets[p_i] );
-
+			bndIndSet = IndexSet_DeepCopy( shdSets[p_i] );
 			for( d_i = 1; d_i < self->shadowDepth; d_i++ )
-				MeshTopology_ExpandShadows( self, (IndexSet*)shdSets[p_i], bndSet );
-
-			FreeObject( bndSet );
+				MeshTopology_ExpandShadows( self, (IndexSet*)shdSets[p_i], bndIndSet );
+			FreeObject( bndIndSet );
 		}
 
-		/* Get members and convert to global indices. */
-		IndexSet_GetMembers( shdSets[p_i], &nShdEls, &shdEls );
+		/* Get members. */
+		IndexSet_GetMembers( shdSets[p_i], nShadowedEls[self->nDims] + p_i, 
+				     shadowedEls[self->nDims] + p_i );
 		FreeObject( shdSets[p_i] );
-		for( e_i = 0; e_i < nShdEls; e_i++ )
-			shdEls[e_i] = Decomp_Sync_DomainToGlobal( self->domains[self->nDims], shdEls[e_i] );
 
-		/* Create range set. */
-		shdSets[p_i] = (void*)RangeSet_New();
-		RangeSet_SetIndices( shdSets[p_i], nShdEls, shdEls );
-		FreeArray( shdEls );
+		/* Clear externals. */
+		nExternalEls[self->nDims][p_i] = 0;
+		externalEls[self->nDims][p_i] = NULL;
 	}
-
-	/* Store result. */
-	*shadows = (RangeSet**)shdSets;
 }
 
-void MeshTopology_ExpandShadows( void* meshTopology, IndexSet* shadows, IndexSet* boundary ) {
-	MeshTopology*	self = (MeshTopology*)meshTopology;
+void MeshTopology_ExpandShadows( MeshTopology* self, IndexSet* shadows, IndexSet* boundary ) {
 	unsigned	nLocals = MeshTopology_GetLocalSize( self, self->nDims );
 	unsigned	nBndEls;
 	unsigned*	bndEls;
@@ -682,307 +1012,620 @@
 	FreeArray( bndEls );
 }
 
-void MeshTopology_BuildAllShadows( void* meshTopology, RangeSet*** shadows ) {
-	MeshTopology*	self = (MeshTopology*)meshTopology;
-	CommTopology*	commTopo;
+void MeshTopology_BuildMidShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+					    unsigned** nShadowedEls, unsigned*** shadowedEls, 
+					    unsigned** nExternalEls, unsigned*** externalEls )
+{
+	Decomp_Sync*	sync;
+	CommTopology	*commTopo, *prevCommTopo;
 	unsigned	nIncRanks;
-	unsigned*	incRanks;
+	unsigned	nLocals;
+	unsigned	prevDim, prevRank;
 	unsigned	p_i;
 
 	assert( self );
-	assert( shadows );
+	assert( dim < self->nTDims );
+	assert( nShadowedEls && shadowedEls );
+	assert( nShadowedEls[dim] && shadowedEls[dim] );
 
-	/* Extract communicator incidence. */
-	commTopo = self->domains[MT_VERTEX]->commTopo;
-	CommTopology_GetIncidence( commTopo, commTopo->rank, &nIncRanks, &incRanks );
+	sync = MeshTopology_GetSync( self, dim );
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	nLocals = MeshTopology_GetLocalSize( self, dim );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
 
+	prevDim = dim + 1;
+	prevCommTopo = MeshTopology_GetCommTopology( self, prevDim );
+
 	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-		unsigned	nElInds;
-		unsigned*	elInds;
-		unsigned	d_i, e_i;
+		IndexSet	*iSet, *extSet;
+		RangeSet*	remSet;
+		unsigned	e_i;
 
-		/* Convert range set of top level to indices. */
-		RangeSet_GetIndices( shadows[self->nDims][p_i], &nElInds, &elInds );
-		for( e_i = 0; e_i < nElInds; e_i++ )
-			elInds[e_i] = Decomp_Sync_GlobalToDomain( self->domains[self->nDims], elInds[e_i] );
+		/* Map to previous dimension. */
+		prevRank = CommTopology_LocalToGlobal( commTopo, p_i );
+		insist( CommTopology_GlobalToLocal( prevCommTopo, prevRank, &prevRank ) );
 
-		/* */
-		for( d_i = 0; d_i < self->nDims; d_i++ ) {
-			IndexSet*	iSet;
-			unsigned	nInds;
-			unsigned*	inds;
+		/* If there are no elements in this dimension or we have no incidence relations between
+		   these levels, skip it. */
+		if( MeshTopology_GetLocalSize( self, dim ) == 0 || 
+		    !self->nIncEls[prevDim][dim] )
+		{
+			nShadowedEls[dim][p_i] = 0;
+			shadowedEls[dim][p_i] = NULL;
+			continue;
+		}
 
-			/* If there are no elements in this dimension or we have no incidence relations between
-			   these levels, skip it. */
-			if( MeshTopology_GetLocalSize( self, d_i ) == 0 || 
-			    !self->nIncEls[self->nDims][d_i] || !self->incEls[self->nDims][d_i] )
-			{
-				shadows[d_i][p_i] = NULL;
-				continue;
-			}
+		/* Build a set representing all our domains already marked as remote. */
+		remSet = RangeSet_New();
+		RangeSet_SetIndices( remSet, sync->nSnks[p_i], sync->snks[p_i] );
+		RangeSet_AddIndices( remSet, sync->nSrcs[p_i], sync->srcs[p_i] );
 
-			iSet = IndexSet_New( MeshTopology_GetLocalSize( self, d_i ) );
+		/* We'll need an index set to store indices as we build them. */
+		iSet = IndexSet_New( nLocals );
+		extSet = IndexSet_New( MeshTopology_GetRemoteSize( self, dim ) );
 
-			for( e_i = 0; e_i < nElInds; e_i++ ) {
-				unsigned	nIncEls;
-				unsigned*	incEls;
-				unsigned	inc_i;
+		/* Build indices on this level based on previous level shadowed elements. */
+		for( e_i = 0; e_i < nShadowedEls[prevDim][prevRank]; e_i++ ) {
+			unsigned	nIncEls;
+			unsigned*	incEls;
+			unsigned	inc_i;
 
-				nIncEls = self->nIncEls[self->nDims][d_i][elInds[e_i]];
-				incEls = self->incEls[self->nDims][d_i][elInds[e_i]];
-				for( inc_i = 0; inc_i < nIncEls; inc_i++ ) {
-					if( incEls[inc_i] >= MeshTopology_GetLocalSize( self, d_i ) )
-						continue;
+			nIncEls = self->nIncEls[prevDim][dim][shadowedEls[prevDim][prevRank][e_i]];
+			incEls = self->incEls[prevDim][dim][shadowedEls[prevDim][prevRank][e_i]];
+			for( inc_i = 0; inc_i < nIncEls; inc_i++ ) {
+				/* Skip elements already marked as remote by target processor. */
+				if( RangeSet_HasIndex( remSet, incEls[inc_i] ) )
+					continue;
+
+				if( incEls[inc_i] < nLocals )
 					IndexSet_Add( iSet, incEls[inc_i] );
-				}
+				else
+					IndexSet_Add( extSet, incEls[inc_i] - nLocals );
 			}
+		}
 
-			/* Get members and convert to global indices. */
-			IndexSet_GetMembers( iSet, &nInds, &inds );
-			FreeObject( iSet );
-			for( e_i = 0; e_i < nInds; e_i++ )
-				inds[e_i] = Decomp_Sync_DomainToGlobal( self->domains[d_i], inds[e_i] );
+		/* Free the remote set. */
+		FreeObject( remSet );
 
-			/* Create shadow set. */
-			shadows[d_i][p_i] = RangeSet_New();
-			RangeSet_SetIndices( shadows[d_i][p_i], nInds, inds );
-			FreeArray( inds );
-		}
+		/* Get members. */
+		IndexSet_GetMembers( iSet, nShadowedEls[dim] + p_i, shadowedEls[dim] + p_i );
+		FreeObject( iSet );
+		IndexSet_GetMembers( extSet, nExternalEls[dim] + p_i, externalEls[dim] + p_i );
+		FreeObject( extSet );
 	}
 }
 
-void MeshTopology_BuildShadowInc( void* meshTopology, RangeSet*** shadows, 
-				  unsigned*** incDataSizes, unsigned**** incData )
+void MeshTopology_BuildShadowedIncidence( MeshTopology* self, MeshTopology_Dim dim, 
+					  unsigned* nShadowedEls, unsigned** shadowedEls, 
+					  unsigned* nShadowedInc, Stg_Byte** shadowedInc )
 {
-	MeshTopology*	self = (MeshTopology*)meshTopology;
 	CommTopology*	commTopo;
 	unsigned	nIncRanks;
-	unsigned*	incRanks;
-	unsigned	p_i;
+	unsigned	nBytes;
+	Stg_Byte*	bytes;
+	unsigned	p_i, d_i;
 
 	assert( self );
-	assert( shadows );
-	assert( incDataSizes );
-	assert( incData );
+	assert( dim < self->nTDims );
+	assert( nShadowedEls && shadowedEls );
+	assert( nShadowedInc && shadowedInc );
 
-	/* Extract communicator incidence. */
-	commTopo = self->domains[MT_VERTEX]->commTopo;
-	CommTopology_GetIncidence( commTopo, commTopo->rank, &nIncRanks, &incRanks );
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
 
-	/* Allocate for the incidence data sizes. */
-	*incDataSizes = Memory_Alloc_2DArray_Unnamed( unsigned, self->nTDims, nIncRanks );
-	*incData = Memory_Alloc_2DArray_Unnamed( unsigned*, self->nTDims, nIncRanks );
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		nShadowedInc[p_i] = 0;
+		shadowedInc[p_i] = NULL;
 
+		for( d_i = 0; d_i < dim; d_i++ ) {
+			MeshTopology_PickleIncidence( self, dim, d_i, 
+						      nShadowedEls[p_i], shadowedEls[p_i], 
+						      &nBytes, &bytes );
+			shadowedInc[p_i] = ReallocArray( shadowedInc[p_i], Stg_Byte, 
+							 nShadowedInc[p_i] + nBytes + sizeof(unsigned) );
+			memcpy( shadowedInc[p_i] + nShadowedInc[p_i], 
+				&nBytes, sizeof(unsigned) );
+			memcpy( shadowedInc[p_i] + nShadowedInc[p_i] + sizeof(unsigned), 
+				bytes, nBytes * sizeof(Stg_Byte) );
+			nShadowedInc[p_i] += nBytes + sizeof(unsigned);
+			FreeArray( bytes );
+		}
+	}
+}
+
+void MeshTopology_ExchangeShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+					    unsigned* nShadowedEls, unsigned** shadowedEls )
+{
+	Decomp_Sync*	sync;
+	CommTopology*	commTopo;
+	unsigned	nIncRanks, *incRanks, *ranks;
+	unsigned	*nShadowEls, **shadowEls;
+	unsigned	oldSize, newSize;
+	unsigned	d_i, p_i, e_i;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( nShadowedEls && shadowedEls );
+
+	sync = MeshTopology_GetSync( self, dim );
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	CommTopology_GetIncidence( commTopo, &nIncRanks, &incRanks );
+
 	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-		unsigned	d_i;
+		for( e_i = 0; e_i < nShadowedEls[p_i]; e_i++ )
+			shadowedEls[p_i][e_i] = Decomp_Sync_DomainToGlobal( sync, shadowedEls[p_i][e_i] );
+	}
 
-		for( d_i = 1; d_i < self->nTDims; d_i++ ) {
-			unsigned	nEls;
-			unsigned*	els;
-			unsigned	offs = 0;
-			unsigned	e_i;
+	oldSize = Decomp_Sync_GetDomainSize( sync );
+	nShadowEls = AllocArray( unsigned, nIncRanks );
+	shadowEls = AllocArray( unsigned*, nIncRanks );
+	MeshTopology_ExchangeElements( self, dim, 
+				       nShadowedEls, shadowedEls, 
+				       nShadowEls, shadowEls );
+	ranks = AllocArray( unsigned, nIncRanks );
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		ranks[p_i] = p_i;
+	Decomp_Sync_AddSinks( sync, nIncRanks, ranks, nShadowedEls, shadowedEls );
+	Decomp_Sync_AddSources( sync, nIncRanks, ranks, nShadowEls, shadowEls );
+	FreeArray( ranks );
+	FreeArray( nShadowEls );
+	FreeArray2D( nIncRanks, shadowEls );
+	newSize = Decomp_Sync_GetDomainSize( sync );
 
-			/* If we have no shadows for this dimension, skip. */
-			if( !shadows[d_i][p_i] ) {
-				(*incDataSizes)[d_i][p_i] = 0;
-				(*incData)[d_i][p_i] = NULL;
-				continue;
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( e_i = 0; e_i < nShadowedEls[p_i]; e_i++ )
+			insist( Decomp_Sync_GlobalToDomain( sync, shadowedEls[p_i][e_i], shadowedEls[p_i] + e_i ) );
+	}
+
+	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+		if( self->nIncEls[dim][d_i] ) {
+			self->nIncEls[dim][d_i] = ReallocArray( self->nIncEls[dim][d_i], 
+								unsigned, 
+								newSize );
+			memset( self->nIncEls[dim][d_i] + oldSize, 0, 
+				(newSize - oldSize) * sizeof(unsigned) );
+		}
+
+		if( self->incEls[dim][d_i] ) {
+			self->incEls[dim][d_i] = ReallocArray( self->incEls[dim][d_i], 
+							       unsigned*, 
+							       newSize );
+			memset( self->incEls[dim][d_i] + oldSize, 0, 
+				(newSize - oldSize) * sizeof(unsigned*) );
+		}
+	}
+}
+
+void MeshTopology_ExchangeExternalElements( MeshTopology* self, MeshTopology_Dim dim, 
+					    unsigned* nExternalEls, unsigned** externalEls, 
+					    unsigned** nShadowedEls, unsigned*** shadowedEls )
+{
+	unsigned	tag = 98403;
+	Decomp_Sync*	sync;
+	Decomp*		decomp;
+	CommTopology*	commTopo;
+	unsigned	nIncRanks, nOldIncRanks;
+	MPI_Comm	comm;
+	unsigned	rank, nProcs;
+	RangeSet**	shdSets;
+	unsigned	nLocals, *locals;
+	unsigned	nRemotes, *remotes;
+	unsigned	nBytes;
+	Stg_Byte*	bytes;
+	RangeSet	*extSet, *lSet, *remExtSet;
+	unsigned	*nExtEls, **extEls;
+	unsigned	p_i, e_i;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( nExternalEls && externalEls );
+
+	sync = MeshTopology_GetSync( self, dim );
+	decomp = Decomp_Sync_GetDecomp( sync );
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+	comm = Decomp_GetComm( decomp );
+	MPI_Comm_size( comm, (int*)&nProcs );
+	MPI_Comm_rank( comm, (int*)&rank );
+
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( e_i = 0; e_i < nExternalEls[p_i]; e_i++ ) {
+			externalEls[p_i][e_i] += Decomp_Sync_GetLocalSize( sync );
+			externalEls[p_i][e_i] = Decomp_Sync_DomainToGlobal( sync, externalEls[p_i][e_i] );
+		}
+	}
+
+	nExtEls = AllocArray( unsigned, nIncRanks );
+	extEls = AllocArray( unsigned*, nIncRanks );
+	MeshTopology_ExchangeElements( self, dim, 
+				       nExternalEls, externalEls, 
+				       nExtEls, extEls );
+	extSet = RangeSet_New();
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		RangeSet_AddIndices( extSet, nExtEls[p_i], extEls[p_i] );
+	FreeArray( nExtEls );
+	FreeArray2D( nIncRanks, extEls );
+	lSet = RangeSet_New();
+	Decomp_GetLocals( decomp, &nLocals, &locals );
+	RangeSet_SetIndices( lSet, nLocals, locals );
+	remExtSet = RangeSet_New();
+	Decomp_Sync_GetRemotes( sync, &nRemotes, &remotes );
+	RangeSet_AddIndices( remExtSet, nRemotes, remotes );
+	RangeSet_Subtraction( extSet, lSet );
+	RangeSet_Subtraction( extSet, remExtSet );
+
+	shdSets = AllocArray( RangeSet*, nIncRanks );
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( e_i = 0; e_i < (*nShadowedEls)[p_i]; e_i++ )
+			(*shadowedEls)[p_i][e_i] = Decomp_Sync_DomainToGlobal( sync, (*shadowedEls)[p_i][e_i] );
+		shdSets[p_i] = RangeSet_New();
+		RangeSet_SetIndices( shdSets[p_i], (*nShadowedEls)[p_i], (*shadowedEls)[p_i] );
+		for( e_i = 0; e_i < (*nShadowedEls)[p_i]; e_i++ )
+			insist( Decomp_Sync_GlobalToDomain( sync, (*shadowedEls)[p_i][e_i], (*shadowedEls)[p_i] + e_i) );
+	}
+
+	nOldIncRanks = nIncRanks;
+	RangeSet_Clear( remExtSet );
+	for( p_i = 0; p_i < nProcs; p_i++ ) {
+		Stg_Byte	state;
+		unsigned	nInds, *inds;
+		unsigned	localRank;
+
+		if( rank == p_i )
+			RangeSet_Pickle( extSet, &nBytes, &bytes );
+		MPI_Bcast( &nBytes, 1, MPI_UNSIGNED, p_i, comm );
+		if( rank != p_i )
+			bytes = AllocArray( Stg_Byte, nBytes );
+		MPI_Bcast( bytes, nBytes, MPI_BYTE, p_i, comm );
+		if( rank != p_i ) {
+			RangeSet_Unpickle( remExtSet, nBytes, bytes );
+			FreeArray( bytes );
+
+			RangeSet_Intersection( remExtSet, lSet );
+			if( CommTopology_GlobalToLocal( commTopo, p_i, &localRank ) )
+				RangeSet_Subtraction( remExtSet, shdSets[localRank] );
+			if( RangeSet_GetSize( remExtSet ) ) {
+				state = 1;
+				MPI_Gather( &state, 1, MPI_BYTE, NULL, 1, MPI_BYTE, p_i, comm );
+
+				RangeSet_Pickle( remExtSet, &nBytes, &bytes );
+				MPI_Send( &nBytes, 1, MPI_UNSIGNED, p_i, tag, comm );
+				MPI_Send( bytes, nBytes, MPI_BYTE, p_i, tag, comm );
+				FreeArray( bytes );
+
+				RangeSet_GetIndices( remExtSet, &nInds, &inds );
+				if( !CommTopology_GlobalToLocal( commTopo, p_i, &localRank ) ) {
+					Decomp_Sync_AddRemoteRanks( sync, 1, &p_i );
+					insist( CommTopology_GlobalToLocal( commTopo, p_i, &localRank ) );
+					nIncRanks = CommTopology_GetIncidenceSize( Decomp_Sync_GetCommTopology( sync ) );
+					*nShadowedEls = ReallocArray( *nShadowedEls, unsigned, nIncRanks );
+					*shadowedEls = ReallocArray( *shadowedEls, unsigned*, nIncRanks );
+					(*nShadowedEls)[localRank] = 0;
+					(*shadowedEls)[localRank] = NULL;
+				}
+				Decomp_Sync_AddSinks( sync, 1, &localRank, &nInds, &inds );
+
+				(*shadowedEls)[localRank] = ReallocArray( (*shadowedEls)[localRank], unsigned, 
+									  (*nShadowedEls)[localRank] + nInds );
+				for( e_i = 0; e_i < nInds; e_i++ )
+					insist( Decomp_Sync_GlobalToDomain( sync, inds[e_i], inds + e_i ) );
+				memcpy( (*shadowedEls)[localRank] + (*nShadowedEls)[localRank], inds, 
+					nInds * sizeof(unsigned) );
+				(*nShadowedEls)[localRank] += nInds;
+
+				FreeArray( inds );
 			}
+			else {
+				state = 0;
+				MPI_Gather( &state, 1, MPI_BYTE, NULL, 1, MPI_BYTE, p_i, comm );
+			}
+		}
+		else {
+			Stg_Byte*	states;
+			unsigned	nActive, *active;
+			MPI_Status	status;
+			unsigned	newSize, oldSize;
+			unsigned	nNewRanks, *newRanks;
+			unsigned	p_j, d_i;
 
-			/* Extract the indices. */
-			RangeSet_GetIndices( shadows[d_i][p_i], &nEls, &els );
-			for( e_i = 0; e_i < nEls; e_i++ )
-				els[e_i] = Decomp_Sync_GlobalToDomain( self->domains[d_i], els[e_i] );
+			oldSize = Decomp_Sync_GetDomainSize( self->domains[dim] );
+			newSize = oldSize;
 
-			/* Sum the data size for this dimension. */
-			(*incDataSizes)[d_i][p_i] = 1;
-			for( e_i = 0; e_i < nEls; e_i++ )
-				(*incDataSizes)[d_i][p_i] += self->nIncEls[d_i][d_i - 1][els[e_i]] + 2;
+			FreeArray( bytes );
+			state = 0;
+			states = AllocArray( Stg_Byte, nProcs );
+			MPI_Gather( &state, 1, MPI_BYTE, states, 1, MPI_BYTE, p_i, comm );
+			nActive = 0;
+			nNewRanks = 0;
+			for( p_j = 0; p_j < nProcs; p_j++ ) {
+				if( states[p_j] ) {
+					nActive++;
+					if( !CommTopology_GlobalToLocal( commTopo, p_j, &localRank ) )
+						nNewRanks++;
+				}
+			}
+			active = AllocArray( unsigned, nActive );
+			newRanks = AllocArray( unsigned, nNewRanks );
+			nActive = 0;
+			nNewRanks = 0;
+			for( p_j = 0; p_j < nProcs; p_j++ ) {
+				if( states[p_j] ) {
+					active[nActive++] = p_j;
+					if( !CommTopology_GlobalToLocal( commTopo, p_j, &localRank ) )
+						newRanks[nNewRanks++] = p_j;
+				}
+			}
+			FreeArray( states );
 
-			/* Allocate for incidence data. */
-			(*incData)[d_i][p_i] = Memory_Alloc_Array_Unnamed( unsigned, (*incDataSizes)[d_i][p_i] );
+			Decomp_Sync_AddRemoteRanks( sync, nNewRanks, newRanks );
+			if( nNewRanks ) {
+				nIncRanks = CommTopology_GetIncidenceSize( Decomp_Sync_GetCommTopology( sync ) );
+				*nShadowedEls = ReallocArray( *nShadowedEls, unsigned, nIncRanks );
+				*shadowedEls = ReallocArray( *shadowedEls, unsigned*, nIncRanks );
+				for( p_j = 0; p_j < nNewRanks; p_j++ ) {
+					insist( CommTopology_GlobalToLocal( commTopo, newRanks[p_j], &localRank ) );
+					(*nShadowedEls)[localRank] = 0;
+					(*shadowedEls)[localRank] = NULL;
+				}
+			}
+			FreeArray( newRanks );
 
-			/* Store data. */
-			(*incData)[d_i][p_i][offs++] = nEls;
-			for( e_i = 0; e_i < nEls; e_i++ ) {
-				unsigned	nIncEls = self->nIncEls[d_i][d_i - 1][els[e_i]];
-				unsigned*	incEls = self->incEls[d_i][d_i - 1][els[e_i]];
-				unsigned	gElInd = Decomp_Sync_DomainToGlobal( self->domains[d_i], els[e_i] );
-				unsigned	inc_i;
+			for( p_j = 0; p_j < nActive; p_j++ ) {
+				MPI_Recv( &nBytes, 1, MPI_UNSIGNED, active[p_j], tag, comm, &status );
+				bytes = AllocArray( Stg_Byte, nBytes );
+				MPI_Recv( bytes, nBytes, MPI_BYTE, active[p_j], tag, comm, &status );
+				RangeSet_Unpickle( extSet, nBytes, bytes );
+				FreeArray( bytes );
+				RangeSet_GetIndices( extSet, &nInds, &inds );
+				insist( CommTopology_GlobalToLocal( commTopo, active[p_j], &localRank ) );
+				Decomp_Sync_AddSources( sync, 1, &localRank, &nInds, &inds );
+				FreeArray( inds );
 
-				(*incData)[d_i][p_i][offs++] = gElInd;
-				(*incData)[d_i][p_i][offs++] = nIncEls;
-				for( inc_i = 0; inc_i < nIncEls; inc_i++ )
-					(*incData)[d_i][p_i][offs++] = Decomp_Sync_DomainToGlobal( self->domains[d_i - 1], 
-												   incEls[inc_i] );
+				newSize += nInds;
 			}
 
-			/* Free the indices. */
-			FreeArray( els );
+			FreeArray( active );
+
+			for( d_i = 0; d_i < self->nTDims; d_i++ ) {
+				if( self->nIncEls[dim][d_i] ) {
+					self->nIncEls[dim][d_i] = ReallocArray( self->nIncEls[dim][d_i], 
+										unsigned, 
+										newSize );
+					memset( self->nIncEls[dim][d_i] + oldSize, 0, 
+						(newSize - oldSize) * sizeof(unsigned) );
+				}
+
+				if( self->incEls[dim][d_i] ) {
+					self->incEls[dim][d_i] = ReallocArray( self->incEls[dim][d_i], 
+									       unsigned*, 
+									       newSize );
+					memset( self->incEls[dim][d_i] + oldSize, 0, 
+						(newSize - oldSize) * sizeof(unsigned*) );
+				}
+			}
 		}
 	}
+
+	FreeObject( extSet );
+	FreeObject( remExtSet );
+	FreeObject( lSet );
+
+	for( p_i = 0; p_i < nOldIncRanks; p_i++ )
+		FreeObject( shdSets[p_i] );
+	FreeArray( shdSets );
 }
 
-void MeshTopology_SendRecvShadows( void* meshTopology, RangeSet*** shadows, 
-				   unsigned** incDataSizes, unsigned*** incData )
+void MeshTopology_ExchangeShadowedIncidence( MeshTopology* self, MeshTopology_Dim dim, 
+					     unsigned* nShadowedInc, Stg_Byte** shadowedInc )
 {
-	MeshTopology*	self = (MeshTopology*)meshTopology;
 	CommTopology*	commTopo;
 	unsigned	nIncRanks;
-	unsigned*	nSrcBytes;
-	Stg_Byte**	srcBytes;
-	unsigned*	nDstBytes;
-	Stg_Byte**	dstBytes;
-	unsigned**	dataSize;
-	unsigned***	data;
+	unsigned*	nRemBytes;
+	Stg_Byte**	remBytes;
+	unsigned	offs;
 	unsigned	p_i, d_i;
 
 	assert( self );
-	assert( shadows );
-	assert( incDataSizes );
-	assert( incData );
+	assert( dim < self->nTDims );
+	assert( nShadowedInc && shadowedInc );
 
-	/* Shortcuts. */
-	commTopo = self->domains[MT_VERTEX]->commTopo;
-	nIncRanks = commTopo->nInc;
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
 
-	/* Convert downward incidence relations to global indices. */
-	for( d_i = 1; d_i < self->nTDims; d_i++ ) {
-		unsigned	e_i;
+	CommTopology_Alltoall( commTopo, 
+			       nShadowedInc, shadowedInc, 
+			       &nRemBytes, &remBytes, 
+			       sizeof(Stg_Byte) );
 
-		for( e_i = 0; e_i < self->nDomainEls[d_i]; e_i++ ) {
-			unsigned	nIncEls = self->nIncEls[d_i][d_i - 1][e_i];
-			unsigned*	incEls = self->incEls[d_i][d_i - 1][e_i];
-			unsigned	inc_i;
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		if( !nRemBytes[p_i] )
+			continue;
 
-			for( inc_i = 0; inc_i < nIncEls; inc_i++ )
-				incEls[inc_i] = Decomp_Sync_DomainToGlobal( self->domains[d_i - 1], incEls[inc_i] );
+		offs = 0;
+		for( d_i = 0; d_i < dim; d_i++ ) {
+			unsigned	nBytes;
+
+			nBytes = ((unsigned*)(remBytes[p_i] + offs))[0];
+			MeshTopology_UnpickleIncidence( self, dim, d_i, 
+							nBytes, 
+							remBytes[p_i] + offs + sizeof(unsigned) );
+			offs += nBytes + sizeof(unsigned);
 		}
+		FreeArray( remBytes[p_i] );
 	}
 
-	/* Pickle all the range sets and pipe them off to our neighbours. */
-	nSrcBytes = Memory_Alloc_Array_Unnamed( unsigned, nIncRanks );
-	srcBytes = Memory_Alloc_Array_Unnamed( Stg_Byte*, nIncRanks );
-	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
-		for( p_i = 0; p_i < nIncRanks; p_i++ )
-			RangeSet_Pickle( shadows[d_i][p_i], nSrcBytes + p_i, srcBytes + p_i );
-		CommTopology_Alltoall( commTopo, nSrcBytes, (void**)srcBytes, 
-				       &nDstBytes, (void***)&dstBytes, sizeof(Stg_Byte) );
-		for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-			FreeArray( srcBytes[p_i] );
-			RangeSet_Unpickle( shadows[d_i][p_i], nDstBytes[p_i], dstBytes[p_i] );
-		}
-		FreeArray( nDstBytes );
-		FreeArray( dstBytes );
+	FreeArray( nRemBytes );
+	FreeArray( remBytes );
+}
 
-		/* Take the union of all other procs' shadow elements. */
-		for( p_i = 1; p_i < nIncRanks; p_i++ ) {
-			RangeSet_Union( shadows[d_i][0], shadows[d_i][p_i] );
-			FreeObject( shadows[d_i][p_i] );
-		}
-	}
+void MeshTopology_ExchangeElements( MeshTopology* self, MeshTopology_Dim dim, 
+				    unsigned* nSendElements, unsigned** sendElements, 
+				    unsigned* nRecvElements, unsigned** recvElements )
+{
+	Decomp_Sync*	sync;
+	CommTopology*	commTopo;
+	unsigned	nIncRanks;
+	unsigned	*nSrcBytes, *nSnkBytes;
+	Stg_Byte	**srcBytes, **snkBytes;
+	RangeSet	*shdSet, *tmpSet;
+	unsigned	p_i;
 
-	/* Send and recieve all the incidence relations. */
-	dataSize = Memory_Alloc_Array_Unnamed( unsigned*, self->nTDims );
-	data = Memory_Alloc_Array_Unnamed( unsigned**, self->nTDims );
-	for( d_i = 1; d_i < self->nTDims; d_i++ ) {
-		/* Communicate. */
-		CommTopology_Alltoall( commTopo, incDataSizes[d_i], (void**)incData[d_i], 
-				       dataSize + d_i, (void***)(data + d_i), sizeof(unsigned) );
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( nSendElements && sendElements );
+	assert( nRecvElements && recvElements );
 
-		/* Free old incidence relations. */
-		for( p_i = 0; p_i < nIncRanks; p_i++ )
-			FreeArray( incData[d_i][p_i] );
+	/* Shortcuts. */
+	sync = MeshTopology_GetSync( self, dim );
+	commTopo = MeshTopology_GetCommTopology( self, dim );
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+
+	/* Need a shadow set to pickle/unpickle all our sets and one as a temporary. */
+	shdSet = RangeSet_New();
+	tmpSet = RangeSet_New();
+
+	/* Allocate for byte arrays. */
+	nSnkBytes = AllocArray( unsigned, nIncRanks );
+	snkBytes = AllocArray( Stg_Byte*, nIncRanks );
+
+	/* Pickle everything and store in byte arrays. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		RangeSet_SetIndices( shdSet, nSendElements[p_i], sendElements[p_i] );
+		RangeSet_Pickle( shdSet, nSnkBytes + p_i, snkBytes + p_i );
 	}
-	FreeArray( incData );
-	FreeArray( incDataSizes );
 
-	/* Update remote elements. */
-	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
-		unsigned	nRemotes;
-		unsigned*	remotes;
+	/* No longer need shadow range set. */
+	FreeObject( shdSet );
 
-		/* Set the remote elements. */
-		RangeSet_GetIndices( shadows[d_i][0], &nRemotes, &remotes );
-		Decomp_Sync_SetRemotes( self->domains[d_i], nRemotes, remotes );
-		self->nDomainEls[d_i] = self->domains[d_i]->decomp->nLocals + nRemotes;
-		FreeArray( remotes );
+	/* Transfer shadow elements. */
+	CommTopology_Alltoall( commTopo, 
+			       nSnkBytes, (void**)snkBytes, 
+			       &nSrcBytes, (void***)&srcBytes, 
+			       sizeof(Stg_Byte) );
 
-		/* Free range set. */
-		FreeObject( shadows[d_i][0] );
+	/* Don't need sink bytes anymore. */
+	FreeArray( nSnkBytes );
+	FreeArray2D( nIncRanks, snkBytes );
+
+	/* Unpickle sourced bytes. */
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		RangeSet_Unpickle( tmpSet, nSrcBytes[p_i], srcBytes[p_i] );
+		RangeSet_GetIndices( tmpSet, nRecvElements + p_i, recvElements + p_i );
 	}
+
+	/* Don't need source bytes or temporary set. */
 	FreeArray( nSrcBytes );
 	FreeArray( srcBytes );
-	FreeArray( shadows );
+	FreeObject( tmpSet );
+}
 
-	/* Update incidence. */
-	for( d_i = 1; d_i < self->nTDims; d_i++ ) {
-		unsigned**	oldInc;
-		unsigned	e_i;
+void MeshTopology_PickleIncidence( MeshTopology* self, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
+				   unsigned nEls, unsigned* els, 
+				   unsigned* nBytes, Stg_Byte** bytes )
+{
+	Decomp_Sync	*fromSync, *toSync;
+	unsigned	nEntries, *entries;
+	unsigned	curEntry;
+	unsigned	e_i;
 
-		/* Resize old incidence relations to include new remote sizes. */
-		self->nIncEls[d_i][d_i - 1] = Memory_Realloc_Array( self->nIncEls[d_i][d_i - 1], 
-								    unsigned, self->nDomainEls[d_i] );
+	assert( self );
+	assert( fromDim < self->nTDims );
+	assert( toDim < self->nTDims );
+	assert( !self->nIncEls[fromDim][toDim] || self->incEls[fromDim][toDim] );
+	assert( !nEls || els );
+	assert( nBytes );
+	assert( bytes );
 
-		/* Insert each other procs' incidence relations. */
-		for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-			unsigned*	curData = data[d_i][p_i];
-			unsigned	nEls = curData[0];
+	/* If we have no incidence in this dimension-dimension tuple, clear results. */
+	if( !self->nIncEls[fromDim][toDim] ) {
+		*nBytes = 0;
+		*bytes = NULL;
+		return;
+	}
 
-			curData++;
-			for( e_i = 0; e_i < nEls; e_i++ ) {
-				unsigned	dInd = Decomp_Sync_GlobalToDomain( self->domains[d_i], curData[0] );
+	/*
+	** Linearise this incidence relation as follows: 
+	** {number of elements, [(global element index, number of incident elements, [incident elements])]}
+	*/
 
-				self->nIncEls[d_i][d_i - 1][dInd] = curData[1];
-				curData += curData[1] + 2;
-			}
-		}
+	fromSync = self->domains[fromDim];
+	toSync = self->domains[toDim];
 
-		/* Resize incidence relations. */
-		oldInc = self->incEls[d_i][d_i - 1];
-		self->incEls[d_i][d_i - 1] = Memory_Alloc_2DComplex( unsigned, self->nDomainEls[d_i], self->nIncEls[d_i][d_i - 1], 
-								     "MeshTopology::incEls[][]" );
-		for( e_i = 0; e_i < MeshTopology_GetLocalSize( self, d_i ); e_i++ ) {
-			memcpy( self->incEls[d_i][d_i - 1][e_i], oldInc[e_i], 
-				self->nIncEls[d_i][d_i - 1][e_i] * sizeof(unsigned) );
-		}
-		FreeArray( oldInc );
+	/* Count the number of entries. */
+	nEntries = 1 + 2 * nEls;
+	for( e_i = 0; e_i < nEls; e_i++ )
+		nEntries += self->nIncEls[fromDim][toDim][e_i];
 
-		/* Copy new relations. */
-		for( p_i = 0; p_i < nIncRanks; p_i++ ) {
-			unsigned*	curData = data[d_i][p_i];
-			unsigned	nEls = curData[0];
+	/* Allocate for pickled incidence. */
+	entries = AllocArray( unsigned, nEntries );
 
-			curData++;
-			for( e_i = 0; e_i < nEls; e_i++ ) {
-				unsigned	dInd = Decomp_Sync_GlobalToDomain( self->domains[d_i], curData[0] );
-				unsigned	inc_i;
+	/* Pack entries. */
+	entries[0] = nEls;
+	curEntry = 1;
+	for( e_i = 0; e_i < nEls; e_i++ ) {
+		unsigned	nIncEls, *incEls;
+		unsigned	inc_i;
 
-				for( inc_i = 0; inc_i < curData[1]; inc_i++ )
-					self->incEls[d_i][d_i - 1][dInd][inc_i] = curData[2 + inc_i];
-				curData += curData[1] + 2;
-			}
-		}
-
-		/* Free data and sizes. */
-		FreeArray( data[d_i] );
-		FreeArray( dataSize[d_i] );
+		nIncEls = self->nIncEls[fromDim][toDim][els[e_i]];
+		incEls = self->incEls[fromDim][toDim][els[e_i]];
+		entries[curEntry++] = Decomp_Sync_DomainToGlobal( fromSync, els[e_i] );
+		entries[curEntry++] = nIncEls;
+		for( inc_i = 0; inc_i < nIncEls; inc_i++ )
+			entries[curEntry++] = Decomp_Sync_DomainToGlobal( toSync, incEls[inc_i] );
 	}
-	FreeArray( data );
-	FreeArray( dataSize );
 
-	/* Convert downward incidence relations to back to domain indices. */
-	for( d_i = 1; d_i < self->nTDims; d_i++ ) {
-		unsigned	e_i;
+	/* Store results. */
+	*nBytes = nEntries * sizeof(unsigned);
+	*bytes = (Stg_Byte*)entries;
+}
 
-		for( e_i = 0; e_i < self->nDomainEls[d_i]; e_i++ ) {
-			unsigned	nIncEls = self->nIncEls[d_i][d_i - 1][e_i];
-			unsigned*	incEls = self->incEls[d_i][d_i - 1][e_i];
-			unsigned	inc_i;
+void MeshTopology_UnpickleIncidence( MeshTopology* self, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
+				     unsigned nBytes, Stg_Byte* bytes )
+{
+	Decomp_Sync	*fromSync, *toSync;
+	unsigned	nEntries, *entries;
+	unsigned	curEntry;
+	unsigned	nEls;
+	unsigned	e_i;
 
-			for( inc_i = 0; inc_i < nIncEls; inc_i++ )
-				incEls[inc_i] = Decomp_Sync_GlobalToDomain( self->domains[d_i - 1], incEls[inc_i] );
-		}
+	assert( self );
+	assert( fromDim < self->nTDims );
+	assert( toDim < self->nTDims );
+	assert( !nBytes || bytes );
+	assert( nBytes % sizeof(unsigned) == 0 );
+
+	/* If we have an empt byte set return. */
+	if( !nBytes )
+		return;
+
+	/* Setup entry array. */
+	fromSync = self->domains[fromDim];
+	toSync = self->domains[toDim];
+	nEntries = nBytes / sizeof(unsigned);
+	entries = (unsigned*)bytes;
+
+	/* Transfer incidence. */
+	nEls = entries[0];
+	curEntry = 1;
+	for( e_i = 0; e_i < nEls; e_i++ ) {
+		unsigned	nIncEls, **incEls;
+		unsigned	el;
+		unsigned	inc_i;
+
+		/* Convert element index to domain. */
+		insist( Decomp_Sync_GlobalToDomain( fromSync, entries[curEntry++], &el ) );
+
+		/* Get the size. */
+		nIncEls = entries[curEntry++];
+		self->nIncEls[fromDim][toDim][el] = nIncEls;
+
+		/* Resize array. */
+		incEls = self->incEls[fromDim][toDim];
+		incEls[el] = ReallocArray( incEls[el], unsigned, nIncEls );
+
+		/* Copy incidence, converting to domain indices. */
+		for( inc_i = 0; inc_i < nIncEls; inc_i++ )
+			insist( Decomp_Sync_GlobalToDomain( toSync, entries[curEntry++], incEls[el] + inc_i ) );
 	}
 }
 
@@ -991,23 +1634,200 @@
 
 	assert( self );
 
-	KillArray( self->nRentals );
-	KillArray( self->rentals );
-	KillArray( self->nDomainEls );
 	self->shadowDepth = 0;
 
 	for( d_i = 0; d_i < self->nTDims; d_i++ ) {
 		unsigned	d_j;
 
-		FreeObject( self->domains[d_i]->decomp );
-		FreeObject( self->domains[d_i] );
+		if( self->domains && self->domains[d_i] ) {
+			Decomp_Sync_RemoveRef( self->domains[d_i] );
+			self->domains[d_i] = NULL;
+		}
 
 		for( d_j = 0; d_j < self->nTDims; d_j++ ) {
-			KillArray( self->incEls[d_i][d_j] );
-			KillArray( self->nIncEls[d_i][d_j] );
+			if( self->incEls )
+				KillArray( self->incEls[d_i][d_j] );
+			if( self->nIncEls )
+				KillArray( self->nIncEls[d_i][d_j] );
 		}
 	}
 	KillArray( self->incEls );
 	KillArray( self->nIncEls );
 	KillArray( self->domains );
 }
+
+#ifndef NDEBUG
+Bool MeshTopology_ValidateElements( MeshTopology* self, MeshTopology_Dim dim, unsigned nEls, unsigned* els ) {
+	Decomp_Sync*	sync;
+	Decomp*		decomp;
+	RangeSet	*exSet, *newSet;
+	unsigned	nInds, *inds;
+
+	assert( self );
+	assert( !nEls || els );
+
+	sync = self->domains[dim];
+	if( !sync )
+		return True;
+
+	exSet = RangeSet_New();
+	decomp = Decomp_Sync_GetDecomp( sync );
+	Decomp_GetLocals( decomp, &nInds, &inds );
+	RangeSet_SetIndices( exSet, nInds, inds );
+	FreeArray( inds );
+	Decomp_Sync_GetRemotes( sync, &nInds, &inds );
+	RangeSet_AddIndices( exSet, nInds, inds );
+
+	newSet = RangeSet_New();
+	RangeSet_AddIndices( newSet, nEls, els );
+
+	RangeSet_Intersection( newSet, exSet );
+	if( RangeSet_GetSize( newSet ) )
+		return False;
+
+	return True;
+}
+#endif
+
+#if 0
+void MeshTopology_BuildExternalElements( MeshTopology* self, MeshTopology_Dim dim, 
+					 unsigned* nShadowedEls, unsigned** shadowedEls, 
+					 unsigned* nExtEls, unsigned** extEls )
+{
+	Decomp_Sync*	sync;
+	Decomp*		decomp;
+	unsigned	nLocals;
+	unsigned	p_i;
+
+	assert( self );
+	assert( dim < self->nTDims );
+	assert( nExtEls && extEls );
+
+	sync = MeshTopology_GetSync( self, dim );
+	decomp = Decomp_Sync_GetDecomp( sync );
+	nLocals = Decomp_GetLocalSize( decomp );
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		IndexSet*	remSet;
+		unsigned	e_i;
+
+		remSet = IndexSet_New( Decomp_Sync_GetRemoteSize( sync ) );
+		for( e_i = 0; e_i < nShadowedEls[p_i]; e_i++ ) {
+			if( shadowedEls[p_i][e_i] >= nLocals ) {
+				unsigned	remInd;
+
+				remInd = shadowedEls[p_i][e_i] - nLocals;
+				IndexSet_Add( remSet, remInd );
+			}
+		}
+
+		IndexSet_GetMembers( remSet, nExtEls + p_i, extEls + p_i );
+		FreeObject( remSet );
+	}
+}
+
+void MeshTopology_ExchangeExternalElements( MeshTopology* self, MeshTopology_Dim dim, 
+					    unsigned* nShadowedEls, unsigned** shadowedEls, 
+					    unsigned* nExtEls, unsigned** extEls )
+{
+	unsigned	*nSplitExts, **splitExts;
+
+	ownSets = AllocArray( IndexSet*, nIncRanks );
+	for( p_i = 0; p_i < nIncRanks; p_i++ )
+		ownSets[p_i] = IndexSet_New( Decomp_Sync_GetRemoteSize( sync ) );
+
+	nSplitExts = AllocArray( unsigned, nIncRanks );
+	splitExts = AllocArray( unsigned*, nIncRanks );
+
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		for( e_i = 0; e_i < nExtEls[p_i]; e_i++ ) {
+			unsigned	owner;
+
+			owner = Decomp_Sync_GetOwner( sync, extEls[p_i][e_i] );
+			IndexSet_Add( ownSets[owner], extEls[p_i][e_i] );
+		}
+		for( p_j = 0; p_j < nIncRanks; p_j++ ) {
+			IndexSet_GetMembers( ownSets[p_j], nSplitExts + p_j, splitExts + p_j );
+			IndexSet_Clear( ownSets[p_j] );
+		}
+
+		for( p_j = 0; p_j < nIncRanks; p_j++ ) {
+			if( !nSplitExts[p_j] )
+				continue;
+			offs = nSnkEntries[p_j];
+			nSnkEntries[p_j] += nSplitExts[p_j] + 2;
+			snkEntries[p_j] = ReallocArray( snkEntries[p_j], unsigned, nSnkEntries[p_j] );
+			snkEntries[p_j][offs] = CommTopology_LocalToGlobal( commTopo, p_i );
+			snkEntries[p_j][offs + 1] = nSplitExts[p_j];
+			memcpy( snkEntries[p_j] + offs + 2, splitExts[p_j], nSplitExts[p_j] * sizeof(unsigned) );
+		}
+
+		offs = nSrcEntries[p_i];
+		for( p_j = 0; p_j < nIncRanks; p_j++ )
+			nSrcEntries[p_i] += nSplitExts[p_j] + (nSplitExts[p_j] ? 2 : 0);
+		srcEntries[p_i] = ReallocArray( srcEntries[p_i], unsigned, nSrcEntries[p_i] );
+		for( p_j = 0; p_j < nIncRanks; p_j++ ) {
+			if( !nSplitExts[p_j] )
+				continue;
+			srcEntries[p_i][offs++] = CommTopology_LocalToGlobal( commTopo, p_j );
+			srcEntries[p_i][offs++] = nSplitExts[p_j];
+			memcpy( srcEntries[p_i] + offs, splitExts[p_j], nSplitExts[p_j] * sizeof(unsigned) );
+			offs += nSplitExts[p_j];
+		}
+	}
+
+	CommTopology_Alltoall( commTopo, 
+			       nSnkEntries, snkEntries, 
+			       nRecvSnkEntries, recvSnkEntries, 
+			       sizeof(unsigned) );
+	CommTopology_Alltoall( commTopo, 
+			       nSrcEntries, srcEntries, 
+			       nRecvSrcEntries, recvSrcEntries, 
+			       sizeof(unsigned) );
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		FreeArray( srcEntries[p_i] );
+		FreeArray( snkEntries[p_i] );
+	}
+
+	rankSet = RangeSet_New();
+	newRanks = NULL;
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+		unsigned	nItems;
+
+		nItems = recvSnkEntries[p_i][0];
+		newRanks = ReallocArray( unsigned, nItems );
+		offs = 1;
+		for( itm_i = 0; itm_i < nItems; itm_i++ ) {
+			unsigned	nEls;
+
+			newRanks[itm_i] = recvSnkEntries[p_i][offs++];
+			nEls = recvSnkEntries[p_i][offs++];
+			offs += nEls;
+		}
+		RangeSet_AddIndices( rankSet, nItems, newRanks );
+
+		nItems = recvSrcEntries[p_i][0];
+		newRanks = ReallocArray( unsigned, nItems );
+		offs = 1;
+		for( itm_i = 0; itm_i < nItems; itm_i++ ) {
+			unsigned	nEls;
+
+			newRanks[itm_i] = recvSrcEntries[offs++];
+			nEls = recvSrcEntries[offs++];
+			offs += nEls;
+		}
+		RangeSet_AddIndices( rankSet, nItems, newRanks );
+	}
+	FreeArray( newRanks );
+	RangeSet_GetIndices( rankSet, &nNewRanks, &newRanks );
+	Decomp_Sync_AddRemoteRanks( sync, nNewRanks, newRanks );
+	FreeArray( newRanks );
+
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
+	}
+
+	FreeArray2D( nIncRanks, snkEntries );
+	FreeArray2D( nIncRanks, srcEntries );
+	FreeArray( nSnkEntries );
+	FreeArray( nSrcEntries );
+}
+#endif

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshTopology.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -63,13 +63,10 @@
 		/* MeshTopology info */			\
 		unsigned		nDims;		\
 		unsigned		nTDims;		\
-							\
 		Decomp_Sync**		domains;	\
-		unsigned*		nRentals;	\
-		unsigned**		rentals;	\
-		unsigned*		nDomainEls;	\
+		unsigned		nBndVerts;	\
+		unsigned*		bndVerts;	\
 		unsigned		shadowDepth;	\
-							\
 		unsigned***		nIncEls;	\
 		unsigned****		incEls;
 
@@ -95,13 +92,6 @@
 
 	void _MeshTopology_Delete( void* topo );
 	void _MeshTopology_Print( void* topo, Stream* stream );
-
-	#define MeshTopology_Copy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define MeshTopology_DeepCopy( self ) \
-		(Mesh*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	void* _MeshTopology_Copy( void* topo, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-
 	void _MeshTopology_Construct( void* topo, Stg_ComponentFactory* cf, void* data );
 	void _MeshTopology_Build( void* topo, void* data );
 	void _MeshTopology_Initialise( void* topo, void* data );
@@ -112,33 +102,84 @@
 	** Public functions
 	*/
 
-	void MeshTopology_SetNDims( void* topo, unsigned nDims );
-	void MeshTopology_SetElements( void* topo, MeshTopology_Dim dim, unsigned nEls, unsigned* els );
+	void MeshTopology_SetDimSize( void* topo, unsigned nDims );
+	void MeshTopology_SetElements( void* topo, MeshTopology_Dim dim, unsigned nElements, unsigned* elements );
 	void MeshTopology_SetIncidence( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
 					unsigned* nIncEls, unsigned** incEls );
+	void MeshTopology_SetBoundaryVertices( void* topo, unsigned nVerts, unsigned* verts );
+	void MeshTopology_SetShadowDepth( void* topo, unsigned depth );
+	void MeshTopology_SetSync( void* topo, MeshTopology_Dim dim, Decomp_Sync* sync );
+
+	unsigned MeshTopology_GetGlobalSize( void* mesh, MeshTopology_Dim dim );
+	unsigned MeshTopology_GetLocalSize( void* meshTopology, MeshTopology_Dim dim );
+	unsigned MeshTopology_GetRemoteSize( void* meshTopology, MeshTopology_Dim dim );
+	unsigned MeshTopology_GetDomainSize( void* meshTopology, MeshTopology_Dim dim );
+	unsigned MeshTopology_GetSharedSize( void* meshTopology, MeshTopology_Dim dim );
+	void MeshTopology_GetLocalElements( void* meshTopology, MeshTopology_Dim dim, unsigned* nEls, unsigned** els );
+	void MeshTopology_GetRemoteElements( void* meshTopology, MeshTopology_Dim dim, unsigned* nEls, unsigned** els );
+	unsigned MeshTopology_GetOwner( void* meshTopology, MeshTopology_Dim dim, unsigned remote );
+	void MeshTopology_GetSharers( void* meshTopology, MeshTopology_Dim dim, unsigned shared, 
+				      unsigned* nSharers, unsigned** sharers );
+	CommTopology* MeshTopology_GetCommTopology( void* meshTopology, MeshTopology_Dim dim );
+	Decomp_Sync* MeshTopology_GetSync( void* meshTopology, MeshTopology_Dim dim );
+
 	void MeshTopology_Complete( void* topo );
-	void MeshTopology_SetShadowDepth( void* topo, unsigned depth );
 	void MeshTopology_Invert( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim );
 	void MeshTopology_Cascade( void* topo, MeshTopology_Dim fromDim, MeshTopology_Dim toDim );
 	void MeshTopology_Neighbourhood( void* topo, MeshTopology_Dim dim );
 
-	unsigned MeshTopology_GetLocalSize( void* meshTopology, MeshTopology_Dim dim );
-	unsigned MeshTopology_GetShadowSize( void* meshTopology, MeshTopology_Dim dim );
-	unsigned MeshTopology_GetDomainSize( void* meshTopology, MeshTopology_Dim dim );
+	Bool MeshTopology_GlobalToDomain( void* meshTopology, MeshTopology_Dim dim, unsigned global, unsigned* domain );
 	unsigned MeshTopology_DomainToGlobal( void* meshTopology, MeshTopology_Dim dim, unsigned domain );
-	unsigned MeshTopology_GlobalToDomain( void* meshTopology, MeshTopology_Dim dim, unsigned global );
+	Bool MeshTopology_LocalToShared( void* meshTopology, MeshTopology_Dim dim, unsigned local, unsigned* shared );
+	unsigned MeshTopology_SharedToLocal( void* meshTopology, MeshTopology_Dim dim, unsigned shared );
 
+	Bool MeshTopology_HasIncidence( void* meshTopology, MeshTopology_Dim fromDim, MeshTopology_Dim toDim );
+	unsigned MeshTopology_GetIncidenceSize( void* meshTopology, MeshTopology_Dim fromDim, unsigned fromInd, 
+						MeshTopology_Dim toDim );
+	void MeshTopology_GetIncidence( void* meshTopology, MeshTopology_Dim fromDim, unsigned fromInd, MeshTopology_Dim toDim, 
+					unsigned* nInc, unsigned** inc );
+
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
 
-	void MeshTopology_BuildTopShadows( void* meshTopology, RangeSet*** shadows );
-	void MeshTopology_ExpandShadows( void* meshTopology, IndexSet* shadows, IndexSet* boundary );
-	void MeshTopology_BuildAllShadows( void* meshTopology, RangeSet*** shadows );
-	void MeshTopology_BuildShadowInc( void* meshTopology, RangeSet*** shadows, 
-					  unsigned*** incSizes, unsigned**** shadowInc );
-	void MeshTopology_SendRecvShadows( void* meshTopology, RangeSet*** shadows, 
-					   unsigned** incSizes, unsigned*** shadowInc );
+	void MeshTopology_ClearElements( MeshTopology* self, MeshTopology_Dim dim );
+	void MeshTopology_ClearIncidence( MeshTopology* self, MeshTopology_Dim dim );
+	void MeshTopology_CommUnion( MeshTopology* self );
+	void MeshTopology_BuildShadows( MeshTopology* self );
+	void MeshTopology_BuildShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+						 unsigned** nShadowedEls, unsigned*** shadowedEls, 
+						 unsigned** nExternalEls, unsigned*** externalEls );
+	void MeshTopology_BuildTopShadowedElements( MeshTopology* self, unsigned** nShadowedEls, unsigned*** shadowedEls, 
+						    unsigned** nExternalEls, unsigned*** externalEls );
+	void MeshTopology_ExpandShadows( MeshTopology* self, IndexSet* shadows, IndexSet* boundary );
+	void MeshTopology_BuildMidShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+						    unsigned** nShadowedEls, unsigned*** shadowedEls, 
+						    unsigned** nExternalEls, unsigned*** externalEls );
+	void MeshTopology_BuildShadowedIncidence( MeshTopology* self, MeshTopology_Dim dim, 
+						  unsigned* nShadowedEls, unsigned** shadowedEls, 
+						  unsigned* nShadowedInc, Stg_Byte** shadowedInc );
+	void MeshTopology_ExchangeShadowedElements( MeshTopology* self, MeshTopology_Dim dim, 
+						    unsigned* nShadowedEls, unsigned** shadowedEls );
+	void MeshTopology_ExchangeExternalElements( MeshTopology* self, MeshTopology_Dim dim, 
+						    unsigned* nExternalEls, unsigned** externalEls, 
+						    unsigned** nShadowedEls, unsigned*** shadowedEls );
+	void MeshTopology_ExchangeShadowedIncidence( MeshTopology* self, MeshTopology_Dim dim, 
+						     unsigned* nShadowedInc, Stg_Byte** shadowedInc );
+	void MeshTopology_ExchangeElements( MeshTopology* self, MeshTopology_Dim dim, 
+					    unsigned* nSendElements, unsigned** sendElements, 
+					    unsigned* nRecvElements, unsigned** recvElements );
+
+	void MeshTopology_PickleIncidence( MeshTopology* self, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
+					   unsigned nEls, unsigned* els, 
+					   unsigned* nBytes, Stg_Byte** bytes );
+	void MeshTopology_UnpickleIncidence( MeshTopology* self, MeshTopology_Dim fromDim, MeshTopology_Dim toDim, 
+					     unsigned nBytes, Stg_Byte* bytes );
+
 	void MeshTopology_Destruct( MeshTopology* self );
 
+#ifndef NDEBUG
+	Bool MeshTopology_ValidateElements( MeshTopology* self, MeshTopology_Dim dim, unsigned nEls, unsigned* els );
+#endif
+
 #endif /* __Discretisaton_Mesh_MeshTopology_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,347 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: MeshVariable.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Discretisation/Geometry/Geometry.h"
+
+#include "Mesh.h"
+
+
+/* Textual name of this class */
+const Type MeshVariable_Type = "MeshVariable";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+MeshVariable* MeshVariable_New( Name name ) {
+	return _MeshVariable_New( sizeof(MeshVariable), 
+				  MeshVariable_Type, 
+				  _MeshVariable_Delete, 
+				  _MeshVariable_Print, 
+				  NULL, 
+				  (void* (*)(Name))_MeshVariable_New, 
+				  _MeshVariable_Construct, 
+				  _MeshVariable_Build, 
+				  _MeshVariable_Initialise, 
+				  _MeshVariable_Execute, 
+				  _MeshVariable_Destroy, 
+				  name, 
+				  False, 
+				  0, 
+				  NULL, 
+				  NULL, 
+				  NULL, 
+				  NULL, 
+				  NULL, 
+				  NULL, 
+				  NULL, 
+				  NULL );
+}
+
+MeshVariable* _MeshVariable_New( MESHVARIABLE_DEFARGS ) {
+	MeshVariable* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(MeshVariable) );
+	self = (MeshVariable*)_Variable_New( VARIABLE_PASSARGS );
+
+	/* Virtual info */
+
+	/* MeshVariable info */
+	_MeshVariable_Init( self );
+
+	return self;
+}
+
+void _MeshVariable_Init( MeshVariable* self ) {
+	self->mesh = NULL;
+	self->topoDim = MT_VERTEX;
+	self->meshArraySize = 0;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _MeshVariable_Delete( void* meshVariable ) {
+	MeshVariable*	self = (MeshVariable*)meshVariable;
+
+	MeshVariable_Destruct( self );
+
+	/* Delete the parent. */
+	_Variable_Delete( self );
+}
+
+void _MeshVariable_Print( void* meshVariable, Stream* stream ) {
+	MeshVariable*	self = (MeshVariable*)meshVariable;
+	
+	/* Set the Journal for printing informations */
+	Stream* meshVariableStream;
+	meshVariableStream = Journal_Register( InfoStream_Type, "MeshVariableStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "MeshVariable (ptr): (%p)\n", self );
+	_Variable_Print( self, stream );
+}
+
+void _MeshVariable_Construct( void* meshVariable, Stg_ComponentFactory* cf, void* data ) {
+	MeshVariable*		self = (MeshVariable*)meshVariable;
+	SizeT			    dataOffsets[]     = { 0 };
+	Variable_DataType	dataTypes[]       = { 0 };		/* Init value later */
+	Index			    dataTypeCounts[]  = { 1 };
+	Dictionary *        componentDict     = NULL;
+	Dictionary *        thisComponentDict = NULL;
+	Name                dataTypeName      = NULL;
+	Name                rankName          = NULL;
+	void *              variableRegister  = NULL;
+	void *              pointerRegister   = NULL;
+	Name*               names             = NULL;
+	Stream*             error             = Journal_Register( Error_Type, self->type );
+	Mesh*			mesh;
+	
+	assert( self );
+
+	componentDict = cf->componentDict;
+	assert( componentDict );
+	thisComponentDict = Dictionary_GetDictionary( componentDict, self->name );
+	assert( thisComponentDict );
+	
+	/* Grab Registers */
+	variableRegister = Stg_ObjectList_Get( cf->registerRegister, "Variable_Register" );
+	assert( variableRegister );
+	pointerRegister = Stg_ObjectList_Get( cf->registerRegister, "Pointer_Register" );
+	assert( pointerRegister );
+
+	/* Construct the mesh. */
+	mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "mesh", Mesh, True, data );
+	MeshVariable_SetMesh( self, mesh );
+
+	/* Get the topological element we're intereseted in. */
+	self->topoDim = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "topologicalDim", 0 );
+			
+	/* Get Type of Variable */
+	dataTypeName = Dictionary_GetString( thisComponentDict, "DataType" );
+	if ( !strcasecmp( dataTypeName, "Double" ) )
+		dataTypes[0] = Variable_DataType_Double;
+	else if ( !strcasecmp( dataTypeName, "Float" ) )
+		dataTypes[0] = Variable_DataType_Float;
+	else if ( !strcasecmp( dataTypeName, "Int" ) )
+		dataTypes[0] = Variable_DataType_Int;
+	else if ( !strcasecmp( dataTypeName, "Char" ) )
+		dataTypes[0] = Variable_DataType_Char;
+	else if ( !strcasecmp( dataTypeName, "Short" ) )
+		dataTypes[0] = Variable_DataType_Short;
+	else 
+		Journal_Firewall( False, error, "Variable '%s' cannot understand data type '%s'\n", self->name, dataTypeName );
+
+	/* Get Rank of Variable - i.e. Scalar or Vector */
+	rankName = Dictionary_GetString( thisComponentDict, "Rank" );
+	if( !strcasecmp( rankName, "Scalar" ) ){
+		dataTypeCounts[0] = 1;
+	}
+	else if ( !strcasecmp( rankName, "Vector" ) ){
+		Dictionary_Entry_Value* list;
+		Index                   nameCount = 0;
+
+		/* Get Names from list */
+		if (( list = Dictionary_Get( thisComponentDict, "names" ) )) {
+			Index entry_I;
+
+			nameCount = Dictionary_Entry_Value_GetCount( list );
+			names = Memory_Alloc_Array( Name, nameCount, "Variable Names" );
+
+			for ( entry_I = 0 ; entry_I < nameCount ; entry_I++ )
+				names[ entry_I ] = Dictionary_Entry_Value_AsString( Dictionary_Entry_Value_GetElement(list, entry_I ) );
+		}
+		dataTypeCounts[0] = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "VectorComponentCount", nameCount );
+
+		Journal_Firewall( nameCount >= dataTypeCounts[0], error,
+				"Variable '%s' has too few names in list for %d vector components.\n", self->name, dataTypeCounts[0] );
+	}
+	else
+		Journal_Firewall( False, error, "Variable '%s' cannot understand rank '%s'\n", self->name, rankName );
+
+	_Variable_Init( (Variable*)self, 
+			1, 
+			dataOffsets, 
+			dataTypes, 
+			dataTypeCounts, 
+			names, 
+			0, 
+			&self->meshArraySize, 
+			(void**)&self->arrayPtr,
+			True, 
+			variableRegister );
+
+	/* Clean Up */
+	if (names)
+		Memory_Free(names);
+
+#if 0
+	MeshVariable*		self = (MeshVariable*)meshVariable;
+	Variable_DataType	dataType;
+	unsigned		dataRank;
+	Dictionary*		dict;
+	char*			dataTypeName;
+	char*			rankName;
+	unsigned		nDataNames;
+	char**			names;
+	Stream*			error;
+	Mesh*			mesh;
+
+	assert( self );
+	assert( cf );
+
+	/* Register streams. */
+	error = Journal_Register( Error_Type, self->type );
+
+	/* Shortcuts. */
+	dict = Dictionary_GetDictionary( cf->componentDict, self->name );
+
+	/* Construct the mesh. */
+	mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "mesh", Mesh, True );
+	MeshVariable_SetMesh( self, mesh );
+
+	/* Get the topological element we're intereseted in. */
+	self->topoDim = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "topologicalDim", 0 );
+
+	/* Get Type of Variable */
+	dataTypeName = Stg_ComponentFactory_GetString( cf, self->name, "DataType", "" );
+	if( !strcasecmp( dataTypeName, "Double" ) )
+		dataType = Variable_DataType_Double;
+	else if( !strcasecmp( dataTypeName, "Float" ) )
+		dataType = Variable_DataType_Float;
+	else if( !strcasecmp( dataTypeName, "Int" ) )
+		dataType = Variable_DataType_Int;
+	else if( !strcasecmp( dataTypeName, "Char" ) )
+		dataType = Variable_DataType_Char;
+	else if( !strcasecmp( dataTypeName, "Short" ) )
+		dataType = Variable_DataType_Short;
+	else {
+		Journal_Firewall( False, error, "Variable '%s' cannot understand data type '%s'\n", 
+				  self->name, dataTypeName );
+	}
+
+	/* Get Rank of Variable - i.e. Scalar or Vector */
+	rankName = Stg_ComponentFactory_GetString( cf, self->name, "Rank", "" );
+	if( !strcasecmp( rankName, "Scalar" ) ){
+		dataRank = 1;
+	}
+	else if( !strcasecmp( rankName, "Vector" ) ) {
+		Dictionary_Entry_Value* list;
+
+		/* Get Names from list */
+		if( (list = Dictionary_Get( dict, "names" ) )) {
+			unsigned	n_i;
+
+			nDataNames = Dictionary_Entry_Value_GetCount( list );
+			dataNames = Memory_Alloc_Array_Unnamed( char*, nDataNames );
+
+			for ( n_i = 0 ; n_i < nDataNames; n_i++ ) {
+				Dictionary_Entry_Value*	tmp;
+
+				tmp = Dictionary_Entry_Value_GetElement( list, n_i );
+				dataNames[n_i] = Dictionary_Entry_Value_AsString( tmp );
+			}
+		}
+
+		dataRank = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "VectorComponentCount", 
+								  nNames );
+		Journal_Firewall( nNames >= dataRank, error, 
+				  "Variable '%s' has too few names in list for %d vector components.\n", 
+				  self->name, dataRank );
+	}
+	else {
+		Journal_Firewall( False, error, "Variable '%s' cannot understand rank '%s'\n", 
+				  self->name, rankName );
+	}
+
+	/* Set the data type. */
+	Variable_SetDataType( self, dataType, dataRank, dataNames );
+
+	/* Free name array. */
+	FreeArray( dataNames );
+#endif
+}
+
+void _MeshVariable_Build( void* meshVariable, void* data ) {
+	MeshVariable*	self = (MeshVariable*)meshVariable;
+
+	assert( self );
+
+	Build( self->mesh, data, False );
+
+	self->meshArraySize = Mesh_GetDomainSize( self->mesh, self->topoDim );
+	_Variable_Build( self, data );
+}
+
+void _MeshVariable_Initialise( void* meshVariable, void* data ) {
+}
+
+void _MeshVariable_Execute( void* meshVariable, void* data ) {
+}
+
+void _MeshVariable_Destroy( void* meshVariable, void* data ) {
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void MeshVariable_SetMesh( void* meshVariable, void* _mesh ) {
+	MeshVariable*	self = (MeshVariable*)meshVariable;
+	Mesh*		mesh = (Mesh*)_mesh;
+
+	assert( self );
+
+	MeshVariable_Destruct( self );
+
+	self->mesh = mesh;
+	if( mesh )
+		List_Append( mesh->vars, self );
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+void MeshVariable_Destruct( MeshVariable* self ) {
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,101 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: MeshVariable.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_MeshVariable_h__
+#define __Discretisaton_Mesh_MeshVariable_h__
+
+	/** Textual name of this class */
+	extern const Type MeshVariable_Type;
+
+	/** Virtual function types */
+
+	/** Class contents */
+	#define __MeshVariable				\
+		/* General info */			\
+		__Variable				\
+							\
+		/* Virtual info */			\
+							\
+		/* MeshVariable info */			\
+		Mesh*			mesh;		\
+		MeshTopology_Dim	topoDim;	\
+		unsigned		meshArraySize;
+
+	struct MeshVariable { __MeshVariable };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define MESHVARIABLE_DEFARGS	\
+		VARIABLE_DEFARGS
+
+	#define MESHVARIABLE_PASSARGS	\
+		VARIABLE_PASSARGS
+
+	MeshVariable* MeshVariable_New( Name name );
+	MeshVariable* _MeshVariable_New( MESHVARIABLE_DEFARGS );
+	void _MeshVariable_Init( MeshVariable* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _MeshVariable_Delete( void* meshVariable );
+	void _MeshVariable_Print( void* meshVariable, Stream* stream );
+	void _MeshVariable_Construct( void* meshVariable, Stg_ComponentFactory* cf, void* data );
+	void _MeshVariable_Build( void* meshVariable, void* data );
+	void _MeshVariable_Initialise( void* meshVariable, void* data );
+	void _MeshVariable_Execute( void* meshVariable, void* data );
+	void _MeshVariable_Destroy( void* meshVariable, void* data );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void MeshVariable_SetMesh( void* meshVariable, void* mesh );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void MeshVariable_Destruct( MeshVariable* self );
+
+#endif /* __Discretisaton_Mesh_MeshVariable_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshVariable.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">MeshVariable</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StGermain</param>
+<param name="Location">./StGermain/Discretisation/Utils/src/</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
+<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
+<param name="Parent">Stg_Component</param>
+<param name="Description">...</param>
+
+</StGermainData>

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,379 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Mesh_Algorithms.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Discretisation/Geometry/Geometry.h"
+
+#include "Mesh.h"
+
+
+/* Textual name of this class */
+const Type Mesh_Algorithms_Type = "Mesh_Algorithms";
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Mesh_Algorithms* Mesh_Algorithms_New( Name name ) {
+	return _Mesh_Algorithms_New( sizeof(Mesh_Algorithms), 
+				     Mesh_Algorithms_Type, 
+				     _Mesh_Algorithms_Delete, 
+				     _Mesh_Algorithms_Print, 
+				     NULL, 
+				     (void* (*)(Name))_Mesh_Algorithms_New, 
+				     _Mesh_Algorithms_Construct, 
+				     _Mesh_Algorithms_Build, 
+				     _Mesh_Algorithms_Initialise, 
+				     _Mesh_Algorithms_Execute, 
+				     _Mesh_Algorithms_Destroy, 
+				     name, 
+				     NON_GLOBAL, 
+				     _Mesh_Algorithms_Search, 
+				     _Mesh_Algorithms_SearchElements, 
+				     _Mesh_Algorithms_GetMinimumSeparation, 
+				     _Mesh_Algorithms_GetLocalCoordRange, 
+				     _Mesh_Algorithms_GetDomainCoordRange, 
+				     _Mesh_Algorithms_GetGlobalCoordRange );
+}
+
+Mesh_Algorithms* _Mesh_Algorithms_New( MESH_ALGORITHMS_DEFARGS ) {
+	Mesh_Algorithms* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Mesh_Algorithms) );
+	self = (Mesh_Algorithms*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
+
+	/* Virtual info */
+	self->searchFunc = searchFunc;
+	self->searchElementsFunc = searchElementsFunc;
+	self->getMinimumSeparationFunc = getMinimumSeparationFunc;
+	self->getLocalCoordRangeFunc = getLocalCoordRangeFunc;
+	self->getDomainCoordRangeFunc = getDomainCoordRangeFunc;
+	self->getGlobalCoordRangeFunc = getGlobalCoordRangeFunc;
+
+	/* Mesh_Algorithms info */
+	_Mesh_Algorithms_Init( self );
+
+	return self;
+}
+
+void _Mesh_Algorithms_Init( Mesh_Algorithms* self ) {
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Mesh_Algorithms_Delete( void* algorithms ) {
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+
+	/* Delete the parent. */
+	_Stg_Component_Delete( self );
+}
+
+void _Mesh_Algorithms_Print( void* algorithms, Stream* stream ) {
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	
+	/* Set the Journal for printing informations */
+	Stream* algorithmsStream;
+	algorithmsStream = Journal_Register( InfoStream_Type, "Mesh_AlgorithmsStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Mesh_Algorithms (ptr): (%p)\n", self );
+	_Stg_Component_Print( self, stream );
+}
+
+void _Mesh_Algorithms_Construct( void* algorithms, Stg_ComponentFactory* cf, void* data ) {
+}
+
+void _Mesh_Algorithms_Build( void* algorithms, void* data ) {
+}
+
+void _Mesh_Algorithms_Initialise( void* algorithms, void* data ) {
+}
+
+void _Mesh_Algorithms_Execute( void* algorithms, void* data ) {
+}
+
+void _Mesh_Algorithms_Destroy( void* algorithms, void* data ) {
+}
+
+Bool _Mesh_Algorithms_Search( void* algorithms, void* _mesh, double* point, 
+			      MeshTopology_Dim* dim, unsigned* ind )
+{
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	Mesh*			mesh = (Mesh*)_mesh;
+	double			maxCrd[3], minCrd[3];
+	unsigned		nDims;
+	unsigned		nEls;
+	unsigned		e_i, d_i;
+
+	assert( self );
+	assert( mesh );
+	assert( dim );
+	assert( ind );
+
+	/* Get dimensionality. */
+	nDims = Mesh_GetDimSize( mesh );
+
+	/* If outside local range, immediately return false. */
+	Mesh_GetDomainCoordRange( mesh, minCrd, maxCrd );
+	for( d_i = 0; d_i < nDims; d_i++ ) {
+		if( point[d_i] < minCrd[d_i] || point[d_i] > maxCrd[d_i] )
+			return False;
+	}
+
+	/* Do we have enough information to reduce search time? */
+	if( Mesh_HasIncidence( mesh, MT_VERTEX, MT_VERTEX ) && 
+	    Mesh_HasIncidence( mesh, MT_VERTEX, nDims ) )
+	{
+		unsigned	nearVert;
+		unsigned	nInc;
+		unsigned*	inc;
+		unsigned	inc_i;
+
+		/* Start by locating the closest vertex. */
+		nearVert = Mesh_NearestVertex( mesh, point );
+
+		/* Get vertex/element incidence. */
+		Mesh_GetIncidence( mesh, MT_VERTEX, nearVert, nDims, 
+				   &nInc, &inc );
+
+		/* Search each of these incident elements in turn. */
+		for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+			if( Mesh_ElementHasPoint( mesh, inc[inc_i], point, dim, ind ) )
+				return True;
+		}
+	}
+
+	/* Brute force, search every element in turn. */
+	nEls = Mesh_GetDomainSize( mesh, nDims );
+	for( e_i = 0; e_i < nEls; e_i++ ) {
+		if( Mesh_ElementHasPoint( mesh, e_i, point, dim, ind ) )
+			return True;
+	}
+
+	return False;
+}
+
+Bool _Mesh_Algorithms_SearchElements( void* algorithms, void* _mesh, double* point, 
+				      unsigned* elInd )
+{
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	Mesh*			mesh = (Mesh*)_mesh;
+	unsigned		dim, ind;
+
+	assert( self );
+	assert( elInd );
+
+	if( Mesh_Algorithms_Search( self, mesh, point, &dim, &ind ) ) {
+		unsigned	nDims;
+
+		nDims = Mesh_GetDimSize( mesh );
+		if( dim != nDims ) {
+			unsigned	nInc, *inc;
+			unsigned	nLocalEls;
+			unsigned	lowest;
+			unsigned	global;
+			unsigned	inc_i;
+
+			nLocalEls = Mesh_GetLocalSize( mesh, nDims );
+			Mesh_GetIncidence( mesh, dim, ind, nDims, &nInc, &inc );
+
+			global = (unsigned)-1;
+			if( ind < Mesh_GetLocalSize( mesh, dim ) ) {
+				/* Find the local element with lowest global index. */
+				for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+					if( inc[inc_i] < nLocalEls ) {
+						global = Mesh_DomainToGlobal( mesh, MT_VERTEX, inc[inc_i] );
+						if( global < lowest )
+							lowest = global;
+					}
+				}
+			}
+			else {
+				unsigned	owner;
+
+				owner = Mesh_GetOwner( mesh, dim, ind );
+
+				/* Find a shadow element owned by the other owner. */
+				for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+					if( inc[inc_i] >= nLocalEls && 
+					    Mesh_GetOwner( mesh, nDims, inc[inc_i] ) == owner )
+					{
+						global = Mesh_DomainToGlobal( mesh, MT_VERTEX, inc[inc_i] );
+						if( global < lowest )
+							lowest = global;
+					}
+				}
+			}
+
+			assert( global != (unsigned)-1 );
+			insist( Mesh_GlobalToDomain( mesh, nDims, global, elInd) );
+		}
+		else
+			*elInd = ind;
+
+		return True;
+	}
+
+	return False;
+}
+
+double _Mesh_Algorithms_GetMinimumSeparation( void* algorithms, void* _mesh, double* perDim ) {
+	Mesh*			mesh = (Mesh*)_mesh;
+	unsigned		nDomainEls;
+	double			minSep;
+	double*			dimSep;
+	unsigned		e_i;
+
+	if( perDim )
+		dimSep = Memory_Alloc_Array_Unnamed( double, Mesh_GetDimSize( mesh ) );
+	else
+		dimSep = NULL;
+
+	minSep = HUGE_VAL;
+	nDomainEls = Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) );
+	for( e_i = 0; e_i < nDomainEls; e_i++ ) {
+		Mesh_ElementType*	elType;
+		double			curSep;
+
+		elType = Mesh_GetElementType( mesh, e_i );
+		curSep = Mesh_ElementType_GetMinimumSeparation( elType, mesh, e_i, dimSep );
+		if( curSep < minSep ) {
+			minSep = curSep;
+			if( perDim )
+				memcpy( perDim, dimSep, Mesh_GetDimSize( mesh ) * sizeof(double) );
+		}
+	}
+
+	return minSep;
+}
+
+void _Mesh_Algorithms_GetLocalCoordRange( void* algorithms, void* _mesh, double* min, double* max ) {
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	Mesh*			mesh = (Mesh*)_mesh;
+	unsigned		nVerts;
+	double*			vert;
+	unsigned		nDims;
+	unsigned		v_i, d_i;
+
+	assert( self );
+	assert( mesh );
+	assert( min );
+	assert( max );
+
+	nDims = Mesh_GetDimSize( mesh );
+	nVerts = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	memcpy( min, Mesh_GetVertex( mesh, 0 ), nDims * sizeof(double) );
+	memcpy( max, Mesh_GetVertex( mesh, 0 ), nDims * sizeof(double) );
+	for( v_i = 1; v_i < nVerts; v_i++ ) {
+		vert = Mesh_GetVertex( mesh, v_i );
+		for( d_i = 0; d_i < nDims; d_i++ ) {
+			if( vert[d_i] < min[d_i] )
+				min[d_i] = vert[d_i];
+			if( vert[d_i] > max[d_i] )
+				max[d_i] = vert[d_i];
+		}
+	}
+}
+
+void _Mesh_Algorithms_GetDomainCoordRange( void* algorithms, void* _mesh, double* min, double* max ) {
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	Mesh*			mesh = (Mesh*)_mesh;
+	unsigned		nVerts;
+	double*			vert;
+	unsigned		nDims;
+	unsigned		v_i, d_i;
+
+	assert( self );
+	assert( mesh );
+	assert( min );
+	assert( max );
+
+	nDims = Mesh_GetDimSize( mesh );
+	nVerts = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	memcpy( min, Mesh_GetVertex( mesh, 0 ), nDims * sizeof(double) );
+	memcpy( max, Mesh_GetVertex( mesh, 0 ), nDims * sizeof(double) );
+	for( v_i = 1; v_i < nVerts; v_i++ ) {
+		vert = Mesh_GetVertex( mesh, v_i );
+		for( d_i = 0; d_i < nDims; d_i++ ) {
+			if( vert[d_i] < min[d_i] )
+				min[d_i] = vert[d_i];
+			if( vert[d_i] > max[d_i] )
+				max[d_i] = vert[d_i];
+		}
+	}
+}
+
+void _Mesh_Algorithms_GetGlobalCoordRange( void* algorithms, void* _mesh, double* min, double* max ) {
+	Mesh_Algorithms*	self = (Mesh_Algorithms*)algorithms;
+	Mesh*			mesh = (Mesh*)_mesh;
+	unsigned		nDims;
+	double			*localMin, *localMax;
+	MPI_Comm		comm;
+	unsigned		d_i;
+
+	assert( self );
+	assert( mesh );
+	assert( min );
+	assert( max );
+
+	nDims = Mesh_GetDimSize( mesh );
+	localMin = Memory_Alloc_Array_Unnamed( double, nDims );
+	localMax = Memory_Alloc_Array_Unnamed( double, nDims );
+
+	comm = CommTopology_GetComm( Mesh_GetCommTopology( mesh, MT_VERTEX ) );
+	Mesh_Algorithms_GetLocalCoordRange( self, mesh, localMin, localMax );
+	for( d_i = 0; d_i < Mesh_GetDimSize( mesh ); d_i++ ) {
+		MPI_Allreduce( localMin + d_i, min + d_i, 1, MPI_DOUBLE, MPI_MIN, comm );
+		MPI_Allreduce( localMax + d_i, max + d_i, 1, MPI_DOUBLE, MPI_MAX, comm );
+	}
+
+	FreeArray( localMin );
+	FreeArray( localMax );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,149 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Mesh_Algorithms.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_Mesh_Algorithms_h__
+#define __Discretisaton_Mesh_Mesh_Algorithms_h__
+
+	/** Textual name of this class */
+	extern const Type Mesh_Algorithms_Type;
+
+	/** Virtual function types */
+	typedef Bool (Mesh_Algorithms_SearchFunc)( void* algorithms, void* mesh, double* point, 
+						   MeshTopology_Dim* dim, unsigned* ind );
+	typedef Bool (Mesh_Algorithms_SearchElementsFunc)( void* algorithms, void* _mesh, double* point, 
+							   unsigned* elInd );
+	typedef double (Mesh_Algorithms_GetMinimumSeparationFunc)( void* algorithms, void* mesh, double* perDim );
+	typedef void (Mesh_Algorithms_GetLocalCoordRangeFunc)( void* algorithms, void* mesh, double* min, double* max );
+	typedef void (Mesh_Algorithms_GetDomainCoordRangeFunc)( void* algorithms, void* mesh, double* min, double* max );
+	typedef void (Mesh_Algorithms_GetGlobalCoordRangeFunc)( void* algorithms, void* mesh, double* min, double* max );
+
+	/** Class contents */
+	#define __Mesh_Algorithms								\
+		/* General info */								\
+		__Stg_Component									\
+												\
+		/* Virtual info */								\
+		Mesh_Algorithms_SearchFunc*			searchFunc;			\
+		Mesh_Algorithms_SearchElementsFunc*		searchElementsFunc;		\
+		Mesh_Algorithms_GetMinimumSeparationFunc*	getMinimumSeparationFunc;	\
+		Mesh_Algorithms_GetLocalCoordRangeFunc*		getLocalCoordRangeFunc;		\
+		Mesh_Algorithms_GetDomainCoordRangeFunc*	getDomainCoordRangeFunc;	\
+		Mesh_Algorithms_GetGlobalCoordRangeFunc*	getGlobalCoordRangeFunc;	\
+												\
+		/* Mesh_Algorithms info */
+
+	struct Mesh_Algorithms { __Mesh_Algorithms };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define MESH_ALGORITHMS_DEFARGS								\
+		STG_COMPONENT_DEFARGS,								\
+		Mesh_Algorithms_SearchFunc*			searchFunc, 			\
+		Mesh_Algorithms_SearchElementsFunc*		searchElementsFunc, 		\
+		Mesh_Algorithms_GetMinimumSeparationFunc*	getMinimumSeparationFunc, 	\
+		Mesh_Algorithms_GetLocalCoordRangeFunc*		getLocalCoordRangeFunc,		\
+		Mesh_Algorithms_GetDomainCoordRangeFunc*	getDomainCoordRangeFunc,	\
+		Mesh_Algorithms_GetGlobalCoordRangeFunc*	getGlobalCoordRangeFunc
+
+	#define MESH_ALGORITHMS_PASSARGS							\
+		STG_COMPONENT_PASSARGS, searchFunc, searchElementsFunc, 			\
+		getMinimumSeparationFunc, 							\
+		getLocalCoordRangeFunc, getDomainCoordRangeFunc, getGlobalCoordRangeFunc
+
+	Mesh_Algorithms* Mesh_Algorithms_New( Name name );
+	Mesh_Algorithms* _Mesh_Algorithms_New( MESH_ALGORITHMS_DEFARGS );
+	void _Mesh_Algorithms_Init( Mesh_Algorithms* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Mesh_Algorithms_Delete( void* algorithms );
+	void _Mesh_Algorithms_Print( void* algorithms, Stream* stream );
+	void _Mesh_Algorithms_Construct( void* algorithms, Stg_ComponentFactory* cf, void* data );
+	void _Mesh_Algorithms_Build( void* algorithms, void* data );
+	void _Mesh_Algorithms_Initialise( void* algorithms, void* data );
+	void _Mesh_Algorithms_Execute( void* algorithms, void* data );
+	void _Mesh_Algorithms_Destroy( void* algorithms, void* data );
+
+	Bool _Mesh_Algorithms_Search( void* algorithms, void* mesh, double* point, 
+					 MeshTopology_Dim* dim, unsigned* ind );
+	Bool _Mesh_Algorithms_SearchElements( void* algorithms, void* _mesh, double* point, 
+					      unsigned* elInd );
+	double _Mesh_Algorithms_GetMinimumSeparation( void* algorithms, void* mesh, double* perDim );
+	void _Mesh_Algorithms_GetLocalCoordRange( void* algorithms, void* mesh, double* min, double* max );
+	void _Mesh_Algorithms_GetDomainCoordRange( void* algorithms, void* mesh, double* min, double* max );
+	void _Mesh_Algorithms_GetGlobalCoordRange( void* algorithms, void* mesh, double* min, double* max );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	#define Mesh_Algorithms_Search( algorithms, mesh, point, dim, ind )				\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->searchFunc ),			\
+		 ((Mesh_Algorithms*)algorithms)->searchFunc( algorithms, mesh, point, dim, ind ))
+
+	#define Mesh_Algorithms_SearchElements( algorithms, mesh, point, elInd )			\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->searchElementsFunc ),		\
+		 ((Mesh_Algorithms*)algorithms)->searchElementsFunc( algorithms, mesh, point, elInd ))
+
+	#define Mesh_Algorithms_GetMinimumSeparation( algorithms, mesh, perDim )			\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->getMinimumSeparationFunc ),	\
+		 ((Mesh_Algorithms*)algorithms)->getMinimumSeparationFunc( algorithms, mesh, perDim ))
+
+	#define Mesh_Algorithms_GetLocalCoordRange( algorithms, mesh, min, max )			\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->getLocalCoordRangeFunc ),	\
+		 ((Mesh_Algorithms*)algorithms)->getLocalCoordRangeFunc( algorithms, mesh, min, max ))
+
+	#define Mesh_Algorithms_GetDomainCoordRange( algorithms, mesh, min, max )			\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->getDomainCoordRangeFunc ),	\
+		 ((Mesh_Algorithms*)algorithms)->getDomainCoordRangeFunc( algorithms, mesh, min, max ))
+
+	#define Mesh_Algorithms_GetGlobalCoordRange( algorithms, mesh, min, max )			\
+		(assert( (algorithms) && ((Mesh_Algorithms*)algorithms)->getGlobalCoordRangeFunc ),	\
+		 ((Mesh_Algorithms*)algorithms)->getGlobalCoordRangeFunc( algorithms, mesh, min, max ))
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+#endif /* __Discretisaton_Mesh_Mesh_Algorithms_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_Algorithms.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">Mesh_Algorithms</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StGermain</param>
+<param name="Location">./StGermain/Discretisation/Utils/src/</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
+<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
+<param name="Parent">Stg_Component</param>
+<param name="Description">...</param>
+
+</StGermainData>

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,123 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Mesh_ElementType.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Mesh.h"
+
+
+/* Textual name of this class */
+const Type Mesh_ElementType_Type = "Mesh_ElementType";
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Mesh_ElementType* _Mesh_ElementType_New( MESH_ELEMENTTYPE_DEFARGS ) {
+	Mesh_ElementType* self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Mesh_ElementType) );
+	self = (Mesh_ElementType*)_Stg_Class_New( STG_CLASS_PASSARGS );
+
+	/* Virtual info */
+	self->elementHasPointFunc = elementHasPointFunc;
+	self->getMinimumSeparationFunc = getMinimumSeparationFunc;
+	self->getCentroidFunc = getCentroidFunc;
+
+	/* Mesh_ElementType info */
+	_Mesh_ElementType_Init( self );
+
+	return self;
+}
+
+void _Mesh_ElementType_Init( Mesh_ElementType* self ) {
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Mesh_ElementType_Delete( void* elementType ) {
+	Mesh_ElementType*	self = (Mesh_ElementType*)elementType;
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Mesh_ElementType_Print( void* elementType, Stream* stream ) {
+	Mesh_ElementType*	self = (Mesh_ElementType*)elementType;
+	Stream*			elementTypeStream;
+
+	elementTypeStream = Journal_Register( InfoStream_Type, "Mesh_ElementTypeStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Mesh_ElementType (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+void _Mesh_ElementType_GetCentroid( void* elementType, void* mesh, unsigned element, double* centroid ) {
+	Mesh_ElementType*	self = (Mesh_ElementType*)elementType;
+	unsigned		nIncVerts, *incVerts;
+	unsigned		nDims;
+	double			denom;
+	unsigned		d_i, v_i;
+
+	assert( self );
+
+	nDims = Mesh_GetDimSize( mesh );
+	Mesh_GetIncidence( mesh, nDims, element, MT_VERTEX, &nIncVerts, &incVerts );
+
+	assert( nIncVerts );
+	denom = 1.0 / (double)nIncVerts;
+
+	for( d_i = 0; d_i < nDims; d_i++ ) {
+		centroid[d_i] = Mesh_GetVertex( mesh, incVerts[0] )[d_i];
+		for( v_i = 1; v_i < nIncVerts; v_i++ )
+			centroid[d_i] += Mesh_GetVertex( mesh, incVerts[v_i] )[d_i];
+		centroid[d_i] *= denom;
+	}
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,112 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Mesh_ElementType.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_Mesh_ElementType_h__
+#define __Discretisaton_Mesh_Mesh_ElementType_h__
+
+	/** Textual name of this class */
+	extern const Type Mesh_ElementType_Type;
+
+	/** Virtual function types */
+	typedef Bool (Mesh_ElementType_ElementHasPointFunc)( void* elementType, void* mesh, unsigned element, double* point, 
+							     MeshTopology_Dim* dim, unsigned* ind );
+	typedef double (Mesh_ElementType_GetMinimumSeparationFunc)( void* elementType, void* mesh, unsigned element, double* perDim );
+	typedef void (Mesh_ElementType_GetCentroidFunc)( void* elementType, void* mesh, unsigned element, double* centroid );
+
+	/** Class contents */
+	#define __Mesh_ElementType								\
+		/* General info */								\
+		__Stg_Class									\
+												\
+		/* Virtual info */								\
+		Mesh_ElementType_ElementHasPointFunc*		elementHasPointFunc;		\
+		Mesh_ElementType_GetMinimumSeparationFunc*	getMinimumSeparationFunc;	\
+		Mesh_ElementType_GetCentroidFunc*		getCentroidFunc;		\
+												\
+		/* Mesh_ElementType info */
+
+	struct Mesh_ElementType { __Mesh_ElementType };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define MESH_ELEMENTTYPE_DEFARGS							\
+		STG_CLASS_DEFARGS,								\
+		Mesh_ElementType_ElementHasPointFunc*		elementHasPointFunc,		\
+		Mesh_ElementType_GetMinimumSeparationFunc*	getMinimumSeparationFunc,	\
+		Mesh_ElementType_GetCentroidFunc*		getCentroidFunc
+
+	#define MESH_ELEMENTTYPE_PASSARGS					\
+		STG_CLASS_PASSARGS, 						\
+		elementHasPointFunc, getMinimumSeparationFunc, getCentroidFunc
+
+	Mesh_ElementType* _Mesh_ElementType_New( MESH_ELEMENTTYPE_DEFARGS );
+	void _Mesh_ElementType_Init( Mesh_ElementType* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Mesh_ElementType_Delete( void* elementType );
+	void _Mesh_ElementType_Print( void* elementType, Stream* stream );
+	void _Mesh_ElementType_GetCentroid( void* elementType, void* mesh, unsigned element, double* centroid );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	#define Mesh_ElementType_ElementHasPoint( elementType, mesh, element, point, dim, ind )				\
+		(assert( (elementType) && ((Mesh_ElementType*)elementType)->elementHasPointFunc ),			\
+		 ((Mesh_ElementType*)elementType)->elementHasPointFunc( elementType, mesh, element, point, dim, ind ))
+
+	#define Mesh_ElementType_GetMinimumSeparation( elementType, mesh, element, perDim )				\
+		(assert( (elementType) && ((Mesh_ElementType*)elementType)->getMinimumSeparationFunc ),			\
+		 ((Mesh_ElementType*)elementType)->getMinimumSeparationFunc( elementType, mesh, element, perDim ))
+
+	#define Mesh_ElementType_GetCentroid( elementType, mesh, element, centroid )				\
+		(assert( (elementType) && ((Mesh_ElementType*)elementType)->getCentroidFunc ),			\
+		 ((Mesh_ElementType*)elementType)->getCentroidFunc( elementType, mesh, element, centroid ))
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+#endif /* __Discretisaton_Mesh_Mesh_ElementType_h__ */

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_ElementType.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">Mesh_ElementType</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StGermain</param>
+<param name="Location">./StGermain/Discretisation/Utils/src/</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
+<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
+<param name="Parent">Stg_Component</param>
+<param name="Description">...</param>
+
+</StGermainData>

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,835 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+** $Id: Mesh_HexType.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include "Base/Base.h"
+#include "Discretisation/Geometry/Geometry.h"
+
+#include "types.h"
+#include "shortcuts.h"
+#include "Decomp.h"
+#include "Decomp_Sync.h"
+#include "MeshTopology.h"
+#include "Mesh_ElementType.h"
+#include "MeshClass.h"
+#include "Mesh_HexType.h"
+
+
+/* Textual name of this class */
+const Type Mesh_HexType_Type = "Mesh_HexType";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+Mesh_HexType* Mesh_HexType_New( Name name ) {
+	return _Mesh_HexType_New( sizeof(Mesh_HexType), 
+				  Mesh_HexType_Type, 
+				  _Mesh_HexType_Delete, 
+				  _Mesh_HexType_Print, 
+				  NULL, 
+				  Mesh_HexType_ElementHasPoint, 
+				  Mesh_HexType_GetMinimumSeparation, 
+				  _Mesh_ElementType_GetCentroid );
+}
+
+Mesh_HexType* _Mesh_HexType_New( MESH_HEXTYPE_DEFARGS ) {
+	Mesh_HexType* self;
+
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(Mesh_HexType) );
+	self = (Mesh_HexType*)_Mesh_ElementType_New( MESH_ELEMENTTYPE_PASSARGS );
+
+	/* Virtual info */
+
+	/* Mesh_HexType info */
+	_Mesh_HexType_Init( self );
+
+	return self;
+}
+
+void _Mesh_HexType_Init( Mesh_HexType* self ) {
+	self->triInds = Memory_Alloc_2DArray( unsigned, 2, 3, "Mesh_HexType::triInds" );
+	self->triInds[0][0] = 0; self->triInds[0][1] = 1; self->triInds[0][2] = 2;
+	self->triInds[1][0] = 1; self->triInds[1][1] = 3; self->triInds[1][2] = 2;
+
+	self->tetInds = Memory_Alloc_2DArray( unsigned, 10, 4, "Mesh_HexType::tetInds" );
+	self->tetInds[0][0] = 0; self->tetInds[0][1] = 1; self->tetInds[0][2] = 2; self->tetInds[0][3] = 4;
+	self->tetInds[1][0] = 1; self->tetInds[1][1] = 2; self->tetInds[1][2] = 3; self->tetInds[1][3] = 7;
+	self->tetInds[2][0] = 1; self->tetInds[2][1] = 4; self->tetInds[2][2] = 5; self->tetInds[2][3] = 7;
+	self->tetInds[3][0] = 2; self->tetInds[3][1] = 4; self->tetInds[3][2] = 6; self->tetInds[3][3] = 7;
+	self->tetInds[4][0] = 1; self->tetInds[4][1] = 2; self->tetInds[4][2] = 4; self->tetInds[4][3] = 7;
+	self->tetInds[5][0] = 0; self->tetInds[5][1] = 1; self->tetInds[5][2] = 3; self->tetInds[5][3] = 5;
+	self->tetInds[6][0] = 0; self->tetInds[6][1] = 4; self->tetInds[6][2] = 5; self->tetInds[6][3] = 6;
+	self->tetInds[7][0] = 0; self->tetInds[7][1] = 2; self->tetInds[7][2] = 3; self->tetInds[7][3] = 6;
+	self->tetInds[8][0] = 3; self->tetInds[8][1] = 5; self->tetInds[8][2] = 6; self->tetInds[8][3] = 7;
+	self->tetInds[9][0] = 0; self->tetInds[9][1] = 3; self->tetInds[9][2] = 5; self->tetInds[9][3] = 6;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _Mesh_HexType_Delete( void* elementType ) {
+	Mesh_HexType*	self = (Mesh_HexType*)elementType;
+
+	FreeArray( self->triInds );
+	FreeArray( self->tetInds );
+
+	/* Delete the parent. */
+	_Stg_Class_Delete( self );
+}
+
+void _Mesh_HexType_Print( void* elementType, Stream* stream ) {
+	Mesh_HexType*	self = (Mesh_HexType*)elementType;
+	Stream*			elementTypeStream;
+
+	elementTypeStream = Journal_Register( InfoStream_Type, "Mesh_HexTypeStream" );
+
+	/* Print parent */
+	Journal_Printf( stream, "Mesh_HexType (ptr): (%p)\n", self );
+	_Stg_Class_Print( self, stream );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+Bool Mesh_HexType_ElementHasPoint( void* hexType, void* _mesh, unsigned elInd, double* point, 
+				   MeshTopology_Dim* dim, unsigned* ind )
+{
+	Mesh_HexType*	self = (Mesh_HexType*)hexType;
+	Mesh*		mesh = (Mesh*)_mesh;
+
+	assert( self );
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) <= 3 );
+	assert( elInd < Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) ) );
+	assert( point );
+	assert( dim );
+	assert( ind );
+
+	if( Mesh_GetDimSize( mesh ) == 3 )
+		return Mesh_HexType_ElementHasPoint3D( self, mesh, elInd, point, dim, ind );
+	else if( Mesh_GetDimSize( mesh ) == 2 )
+		return Mesh_HexType_ElementHasPoint2D( self, mesh, elInd, point, dim, ind );
+	else
+		return Mesh_HexType_ElementHasPoint1D( self, mesh, elInd, point, dim, ind );
+}
+
+double Mesh_HexType_GetMinimumSeparation( void* hexType, void* _mesh, unsigned elInd, double* perDim ) {
+	Mesh_HexType*	self = (Mesh_HexType*)hexType;
+	Mesh*		mesh = (Mesh*)_mesh;
+	double		curSep;
+	double*		dimSep;
+	unsigned	nInc, *inc;
+
+	assert( self );
+	assert( mesh );
+	assert( elInd < Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) ) );
+	assert( Mesh_GetDimSize( mesh ) <= 3 );
+
+	/*
+	** We know we're a hexahedral element but we may not be regular.  This algorithm (originally from
+	** FeVariable.c) doesn't calculate the exact separation but provides an answer that's pretty
+	** close.
+	*/
+
+	dimSep = AllocArray( double, Mesh_GetDimSize( mesh ) );
+
+	Mesh_GetIncidence( mesh, Mesh_GetDimSize( mesh ), elInd, MT_VERTEX, &nInc, &inc );
+
+	curSep = Mesh_GetVertex( mesh, inc[1] )[0] - Mesh_GetVertex( mesh, inc[0] )[0];
+	dimSep[0] = curSep;
+
+	if( Mesh_GetDimSize( mesh ) >= 2 ) {
+		curSep = Mesh_GetVertex( mesh, inc[3] )[0] - Mesh_GetVertex( mesh, inc[2] )[0];
+		if( curSep < dimSep[0] )
+			dimSep[0] = curSep;
+	}
+
+	if( Mesh_GetDimSize( mesh ) == 3 ) {
+		curSep = Mesh_GetVertex( mesh, inc[5] )[0] - Mesh_GetVertex( mesh, inc[4] )[0];
+		if( curSep < dimSep[0] )
+			dimSep[0] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[7] )[0] - Mesh_GetVertex( mesh, inc[6] )[0];
+		if( curSep < dimSep[0] )
+			dimSep[0] = curSep;
+	}
+
+	if( Mesh_GetDimSize( mesh ) >= 2 ) {
+		curSep = Mesh_GetVertex( mesh, inc[2] )[1] - Mesh_GetVertex( mesh, inc[0] )[1];
+		dimSep[1] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[3] )[1] - Mesh_GetVertex( mesh, inc[1] )[1];
+		if( curSep < dimSep[1] )
+			dimSep[1] = curSep;
+	}
+
+	if( Mesh_GetDimSize( mesh ) == 3 ) {
+		curSep = Mesh_GetVertex( mesh, inc[6] )[1] - Mesh_GetVertex( mesh, inc[4] )[1];
+		if( curSep < dimSep[1] )
+			dimSep[1] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[7] )[1] - Mesh_GetVertex( mesh, inc[5] )[1];
+		if( curSep < dimSep[1] )
+			dimSep[1] = curSep;
+	}
+
+	if( Mesh_GetDimSize( mesh ) == 3 ) {
+		curSep = Mesh_GetVertex( mesh, inc[4] )[2] - Mesh_GetVertex( mesh, inc[0] )[2];
+		dimSep[2] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[5] )[2] - Mesh_GetVertex( mesh, inc[1] )[2];
+		if( curSep < dimSep[2] )
+			dimSep[2] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[6] )[2] - Mesh_GetVertex( mesh, inc[2] )[2];
+		if ( curSep < dimSep[2] )
+			dimSep[2] = curSep;
+
+		curSep = Mesh_GetVertex( mesh, inc[7] )[2] - Mesh_GetVertex( mesh, inc[3] )[2];
+		if ( curSep < dimSep[2] )
+			dimSep[2] = curSep;
+	}
+
+	curSep = dimSep[0];
+	if( Mesh_GetDimSize( mesh ) >= 2 ) {
+		curSep = dimSep[1] < curSep ? dimSep[1] : curSep;
+		if ( Mesh_GetDimSize( mesh ) == 3 )
+			curSep = dimSep[2] < curSep ? dimSep[2] : curSep;
+	}
+
+	if( perDim )
+		memcpy( perDim, dimSep, Mesh_GetDimSize( mesh ) * sizeof(double) );
+
+	FreeArray( dimSep );
+
+	return curSep;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+Bool Mesh_HexType_ElementHasPoint3D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+				     MeshTopology_Dim* dim, unsigned* ind )
+{
+	unsigned	nInc, *inc;
+	double		bc[4];
+	MeshTopology*	topo;
+	unsigned	inside;
+
+
+	/* Shortcuts. */
+	topo = mesh->topo;
+
+	/* Get element to vertex incidence. */
+	Mesh_GetIncidence( mesh, Mesh_GetDimSize( mesh ), elInd, MT_VERTEX, &nInc, &inc );
+	assert( nInc == 8 );
+
+	/* Search for triangle. */
+	if( Simplex_Search3D( mesh->verts, inc, 10, self->tetInds, point, bc, &inside ) ) {
+		unsigned*	inds = self->tetInds[inside];
+
+		/* Check boundary ownership. */
+		if( bc[0] == 0.0 || bc[0] == -0.0 ) {
+			if( bc[1] == 0.0 || bc[1] == -0.0 ) {
+				if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+					*dim = MT_VERTEX;
+					*ind = topo->incEls[MT_VOLUME][MT_VERTEX][elInd][inds[3]];
+				}
+				else if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+					*dim = MT_VERTEX;
+					*ind = topo->incEls[MT_VOLUME][MT_VERTEX][elInd][inds[2]];
+				}
+				else {
+					if( inside == 0 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+					}
+					else if( inside == 1 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][11];
+					}
+					else if( inside == 2 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][7];
+					}
+					else if( inside == 3 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][5];
+					}
+					else if( inside == 4 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+					}
+					else if( inside == 5 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+					}
+					else if( inside == 6 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+					}
+					else if( inside == 7 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+					}
+					else if( inside == 8 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][5];
+					}
+					else {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+					}
+				}
+			}
+			else if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+				if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+					*dim = MT_VERTEX;
+					*ind = topo->incEls[MT_VOLUME][MT_VERTEX][elInd][inds[1]];
+				}
+				else {
+					if( inside == 0 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+					}
+					else if( inside == 1 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+					}
+					else if( inside == 2 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+					}
+					else if( inside == 3 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+					}
+					else if( inside == 4 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+					}
+					else if( inside == 5 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][9];
+					}
+					else if( inside == 6 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][6];
+					}
+					else if( inside == 7 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][10];
+					}
+					else if( inside == 8 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][7];
+					}
+					else {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+					}
+				}
+			}
+			else if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+				if( inside == 0 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][1];
+				}
+				else if( inside == 2 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][4];
+				}
+				else if( inside == 3 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][6];
+				}
+				else if( inside == 4 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+				}
+				else if( inside == 5 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][3];
+				}
+				else if( inside == 6 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][4];
+				}
+				else if( inside == 7 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][1];
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+				}
+				else {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+			}
+			else {
+				if( inside == 0 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 1 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+				}
+				else if( inside == 2 ) {
+					*dim = 	MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+				}
+				else if( inside == 3 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+				}
+				else if( inside == 4 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 5 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+				else if( inside == 6 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+				}
+				else if( inside == 7 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][1];
+				}
+				else {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+			}
+		}
+		else if( bc[1] == 0.0 || bc[1] == -0.0 ) {
+			if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+				if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+					*dim = MT_VERTEX;
+					*ind = topo->incEls[MT_VOLUME][MT_VERTEX][elInd][inds[0]];
+				}
+				else {
+					if( inside == 0 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][8];
+					}
+					else if( inside == 1 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+					}
+					else if( inside == 2 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+					}
+					else if( inside == 3 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+					}
+					else if( inside == 4 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+					}
+					else if( inside == 5 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+					}
+					else if( inside == 6 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+					}
+					else if( inside == 7 ) {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+					}
+					else if( inside == 8 ) {
+						*dim = MT_EDGE;
+						*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][7];
+					}
+					else {
+						*dim = MT_FACE;
+						*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+					}
+				}
+			}
+			else if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+				if( inside == 0 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][2];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][3];
+				}
+				else if( inside == 2 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][9];
+				}
+				else if( inside == 3 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][10];
+				}
+				else if( inside == 4 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+				else if( inside == 5 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+				else if( inside == 6 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+				else if( inside == 7 ) {
+					*dim = 	MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+				}
+				else {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+			}
+			else {
+				if( inside == 0 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+				else if( inside == 2 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+				else if( inside == 3 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+				}
+				else if( inside == 4 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 5 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 6 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 7 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][3];
+				}
+				else {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+			}
+		}
+		else if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+			if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+				if( inside == 0 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][0];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+				else if( inside == 2 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+				else if( inside == 3 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+				}
+				else if( inside == 4 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+				else if( inside == 5 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][0];
+				}
+				else if( inside == 6 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][8];
+				}
+				else if( inside == 7 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_VOLUME][MT_EDGE][elInd][2];
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+				else {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+				}
+			}
+			else {
+				if( inside == 0 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 2 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 3 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 4 ) {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+				else if( inside == 5 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+				}
+				else if( inside == 6 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+				}
+				else if( inside == 7 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+				}
+				else if( inside == 8 ) {
+					*dim = MT_FACE;
+					*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][5];
+				}
+				else {
+					*dim = MT_VOLUME;
+					*ind = elInd;
+				}
+			}
+		}
+		else if( bc[3] == 0.0 || bc[3] == -0.0 ) {
+			if( inside == 0 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+			}
+			else if( inside == 1 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+			}
+			else if( inside == 2 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+			}
+			else if( inside == 3 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][4];
+			}
+			else if( inside == 4 ) {
+				*dim = MT_VOLUME;
+				*ind = elInd;
+			}
+			else if( inside == 5 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+			}
+			else if( inside == 6 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][2];
+			}
+			else if( inside == 7 ) {
+				*dim = MT_FACE;
+				*ind = topo->incEls[MT_VOLUME][MT_FACE][elInd][0];
+			}
+			else if( inside == 8 ) {
+				*dim = MT_VOLUME;
+				*ind = elInd;
+			}
+			else {
+				*dim = MT_VOLUME;
+				*ind = elInd;
+			}
+		}
+		else {
+			*dim = MT_VOLUME;
+			*ind = elInd;
+		}
+
+		return True;
+	}
+
+	return False;
+}
+
+Bool Mesh_HexType_ElementHasPoint2D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+				     MeshTopology_Dim* dim, unsigned* ind )
+{
+
+	unsigned	nInc, *inc;
+	double		bc[3];
+	MeshTopology*	topo;
+	unsigned	inside;
+
+	/* Shortcuts. */
+	topo = mesh->topo;
+
+	/* Get element to vertex incidence. */
+	Mesh_GetIncidence( mesh, Mesh_GetDimSize( mesh ), elInd, MT_VERTEX, &nInc, &inc );
+	assert( nInc == 4 );
+
+	/* Search for triangle. */
+	if( Simplex_Search2D( mesh->verts, inc, 2, self->triInds, point, bc, &inside ) ) {
+		unsigned	*inds = self->triInds[inside];
+
+		/* Check boundary ownership. */
+		if( bc[0] == 0.0 || bc[0] == -0.0 ) {
+			if( bc[1] == 0.0 || bc[1] == -0.0 ) {
+				*dim = MT_VERTEX;
+				*ind = topo->incEls[MT_FACE][MT_VERTEX][elInd][inds[2]];
+			}
+			else if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+				*dim = MT_VERTEX;
+				*ind = topo->incEls[MT_FACE][MT_VERTEX][elInd][inds[1]];
+			}
+			else {
+				if( inside == 0 ) {
+					*dim = MT_FACE;
+					*ind = elInd;
+				}
+				else if( inside == 1 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_FACE][MT_EDGE][elInd][1];
+				}
+			}
+		}
+		else if( bc[1] == 0.0 || bc[1] == -0.0 ) {
+			if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+				*dim = MT_VERTEX;
+				*ind = topo->incEls[MT_FACE][MT_VERTEX][elInd][inds[0]];
+			}
+			else {
+				if( inside == 0 ) {
+					*dim = MT_EDGE;
+					*ind = topo->incEls[MT_FACE][MT_EDGE][elInd][2];
+				}
+				else if( inside == 1 ) {
+					*dim = MT_FACE;
+					*ind = elInd;
+				}
+			}
+		}
+		else if( bc[2] == 0.0 || bc[2] == -0.0 ) {
+			if( inside == 0 ) {
+				*dim = MT_EDGE;
+				*ind = topo->incEls[MT_FACE][MT_EDGE][elInd][0];
+			}
+			else if( inside == 1 ) {
+				*dim = MT_EDGE;
+				*ind = topo->incEls[MT_FACE][MT_EDGE][elInd][3];
+			}
+		}
+		else {
+			*dim = MT_FACE;
+			*ind = elInd;
+		}
+
+		return True;
+	}
+
+	return False;
+}
+
+Bool Mesh_HexType_ElementHasPoint1D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+				     MeshTopology_Dim* dim, unsigned* ind )
+{
+	unsigned	nInc, *inc;
+
+	Mesh_GetIncidence( mesh, MT_EDGE, elInd, MT_VERTEX, &nInc, &inc );
+	assert( nInc == 2 );
+
+	if( point[0] > *Mesh_GetVertex( mesh, inc[0] ) && point[0] < *Mesh_GetVertex( mesh, inc[1] ) ) {
+		*dim = MT_EDGE;
+		*ind = elInd;
+		return True;
+	}
+	else if( point[0] == *Mesh_GetVertex( mesh, inc[0] ) ) {
+		*dim = MT_VERTEX;
+		*ind = inc[0];
+		return True;
+	}
+	else if( point[0] == *Mesh_GetVertex( mesh, inc[1] ) ) {
+		*dim = MT_VERTEX;
+		*ind = inc[1];
+		return True;
+	}
+
+	return False;
+}

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh_HexType.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,104 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: Mesh_HexType.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_Mesh_HexType_h__
+#define __Discretisaton_Mesh_Mesh_HexType_h__
+
+	/** Textual name of this class */
+	extern const Type Mesh_HexType_Type;
+
+	/** Virtual function types */
+
+	/** Class contents */
+	#define __Mesh_HexType				\
+		/* General info */			\
+		__Mesh_ElementType			\
+							\
+		/* Virtual info */			\
+							\
+		/* Mesh_HexType info */			\
+		unsigned**		triInds;	\
+		unsigned**		tetInds;
+
+	struct Mesh_HexType { __Mesh_HexType };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+	#define MESH_HEXTYPE_DEFARGS		\
+		MESH_ELEMENTTYPE_DEFARGS
+
+	#define MESH_HEXTYPE_PASSARGS		\
+		MESH_ELEMENTTYPE_PASSARGS
+
+	Mesh_HexType* Mesh_HexType_New();
+	Mesh_HexType* _Mesh_HexType_New( MESH_HEXTYPE_DEFARGS );
+	void _Mesh_HexType_Init( Mesh_HexType* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _Mesh_HexType_Delete( void* hexType );
+	void _Mesh_HexType_Print( void* hexType, Stream* stream );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	Bool Mesh_HexType_ElementHasPoint( void* hexType, void* mesh, unsigned elInd, double* point, 
+					   MeshTopology_Dim* dim, unsigned* ind );
+	double Mesh_HexType_GetMinimumSeparation( void* hexType, void* mesh, unsigned elInd, double* perDim );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	Bool Mesh_HexType_ElementHasPoint3D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+					     MeshTopology_Dim* dim, unsigned* ind );
+	Bool Mesh_HexType_ElementHasPoint2D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+					     MeshTopology_Dim* dim, unsigned* ind );
+	Bool Mesh_HexType_ElementHasPoint1D( Mesh_HexType* self, Mesh* mesh, unsigned elInd, double* point, 
+					     MeshTopology_Dim* dim, unsigned* ind );
+	void Mesh_HexType_TetBarycenter( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc );
+	void Mesh_HexType_TriBarycenter( double** verts, unsigned* inc, unsigned* inds, double* point, double* bc );
+
+#endif /* __Discretisaton_Mesh_Mesh_HexType_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,248 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type NodeLayout_Type = "NodeLayout";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-NodeLayout* _NodeLayout_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		NodeLayout_NodeCoordAtFunction*			        nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*		        buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		        elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		        buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		        nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		        buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					        dictionary,
-		ElementLayout*					        elementLayout,
-		Topology*					        topology )
-{
-	NodeLayout* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(NodeLayout) );
-	
-	self = (NodeLayout*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-			_initialise, _execute, _destroy, name, NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->nodeCoordAt = nodeCoordAt;
-	self->buildNodeCoords = buildNodeCoords;
-	self->elementNodeCount = elementNodeCount;
-	self->buildElementNodes = buildElementNodes;
-	self->nodeElementCount = nodeElementCount;
-	self->buildNodeElements = buildNodeElements;
-	self->calcNodeCountInDimFromElementCount = calcNodeCountInDimFromElementCount;
-	
-	/* NodeLayout info */
-	if( initFlag ){
-		_NodeLayout_Init( self, elementLayout, topology );
-	}
-	
-	return self;
-}
-
-void _NodeLayout_Init(
-		NodeLayout*					self,
-		ElementLayout*					elementLayout,
-		Topology*					topology )
-{
-	/* General and Virtual info should already be set */
-	
-	/* NodeLayout info */
-	self->isConstructed = True;
-	self->elementLayout = elementLayout;
-	self->topology = topology;
-	self->nodeCount = 0;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _NodeLayout_Delete( void* nodeLayout ) {
-	NodeLayout* self = (NodeLayout*)nodeLayout;
-	
-	/* Stg_Class_Delete parent */
-	_Stg_Component_Delete( self );
-}
-
-
-void _NodeLayout_Print( void* nodeLayout, Stream* stream ) {
-	NodeLayout* self = (NodeLayout*)nodeLayout;
-	
-	/* Print parent */
-	_Stg_Class_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "NodeLayout (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* NodeLayout info */
-}
-
-
-void* _NodeLayout_Copy( void* nodeLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	NodeLayout*	self = (NodeLayout*)nodeLayout;
-	NodeLayout*	newNodeLayout;
-	PtrMap*		map = ptrMap;
-	Bool		ownMap = False;
-	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
-	
-	newNodeLayout = (NodeLayout*)_Stg_Class_Copy( self, dest, deep, nameExt, map );
-	
-	/* Virtual methods */
-	newNodeLayout->nodeCoordAt = self->nodeCoordAt;
-	newNodeLayout->buildNodeCoords = self->buildNodeCoords;
-	newNodeLayout->elementNodeCount = self->elementNodeCount;
-	newNodeLayout->buildElementNodes = self->buildElementNodes;
-	newNodeLayout->nodeElementCount = self->nodeElementCount;
-	newNodeLayout->buildNodeElements = self->buildNodeElements;
-	newNodeLayout->calcNodeCountInDimFromElementCount = self->calcNodeCountInDimFromElementCount;
-	
-	newNodeLayout->dictionary = self->dictionary;
-	newNodeLayout->nodeCount = self->nodeCount;
-	
-	if( deep ) {
-		newNodeLayout->elementLayout = (ElementLayout*)Stg_Class_Copy( self->elementLayout, NULL, deep, nameExt, map );
-		newNodeLayout->topology = (Topology*)Stg_Class_Copy( self->topology, NULL, deep, nameExt, map );
-	}
-	else {
-		newNodeLayout->elementLayout = self->elementLayout;
-		newNodeLayout->topology = self->topology;
-	}
-	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
-	
-	return (void*)newNodeLayout;
-}
-
-
-Node_GlobalIndex NodeLayout_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim )
-{
-	NodeLayout* self = (NodeLayout*)nodeLayout;
-	
-	return self->calcNodeCountInDimFromElementCount( nodeLayout, elementCountInDim );
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-/* Note that I've tried to cut down on amount of memory allocing/reallocing in the case where each element has same
- * number of nodes. Main.PatrickSunter - 30 AUgust 2004 */
-Node_GlobalIndex NodeLayout_BuildSubset( void* nodeLayout, Index elementCount, Index* elements, Node_GlobalIndex** nodes ) {
-	NodeLayout*		self = (NodeLayout*)nodeLayout;
-	Node_GlobalIndex	nodeCnt = 0;
-	Node_GlobalIndex	prevENodeCnt = 0;
-	Element_GlobalIndex     e_I;
-	IndexSet*		set;
-	Element_Nodes		eNodes;
-	Element_GlobalIndex	eNodeCnt;
-	
-	set = IndexSet_New( self->nodeCount );
-	eNodeCnt = self->elementNodeCount( self, elements[0] );
-	eNodes = Memory_Alloc_Array_Unnamed( Node_GlobalIndex, eNodeCnt );
-	prevENodeCnt = eNodeCnt;
-	
-	for( e_I = 0; e_I < elementCount; e_I++ ) {
-		Element_GlobalIndex eNodeCnt = self->elementNodeCount( self, elements[e_I] );
-		
-		if( eNodeCnt ) {
-			Node_GlobalIndex	n_I;
-
-			if ( eNodeCnt > prevENodeCnt ) {
-				eNodes = Memory_Realloc_Array( eNodes, Node_GlobalIndex, eNodeCnt );
-			}
-			
-			self->buildElementNodes( self, elements[e_I], eNodes );
-			for( n_I = 0; n_I < eNodeCnt; n_I++ )
-				IndexSet_Add( set, eNodes[n_I] );
-			
-			prevENodeCnt = nodeCnt;
-		}
-	}
-	
-	Memory_Free( eNodes );
-	IndexSet_GetMembers( set, &nodeCnt, nodes );
-	Stg_Class_Delete( set );
-	
-	return nodeCnt;
-}
-
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,153 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**	Lays out the nodes relative to a given ElementLayout (eg 1 node in centre of each element, 1 node in corner of
-**	each.
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_NodeLayout_h__
-#define __Discretisaton_Mesh_NodeLayout_h__
-
-
-	/* Virtual function types */
-	typedef void			(NodeLayout_NodeCoordAtFunction)	( void* nodeLayout, Node_Index index, Coord coord );
-	typedef void			(NodeLayout_BuildNodeCoordsFunction)    ( void* nodeLayout, Coord_List coords );
-	typedef Node_GlobalIndex	(NodeLayout_ElementNodeCountFunction)   ( void* nodeLayout, Element_GlobalIndex globalIndex );
-	typedef void			(NodeLayout_BuildElementNodesFunction)  ( void* nodeLayout, Element_GlobalIndex globalIndex, Element_Nodes nodes );
-	typedef Element_GlobalIndex     (NodeLayout_NodeElementCountFunction)   ( void* nodeLayout, Node_GlobalIndex globalIndex );
-	typedef void			(NodeLayout_BuildNodeElementsFunction)  ( void* nodeLayout, Node_GlobalIndex globalIndex, Node_Elements elements );
-	typedef Node_GlobalIndex	(NodeLayout_CalcNodeCountInDimFromElementCountFunction) ( void* nodeLayout, Element_GlobalIndex globalIndex );
-	
-	/* Textual name of this class */
-	extern const Type NodeLayout_Type;
-
-	/* NodeLayout information */
-	#define __NodeLayout \
-		/* General info */ \
-		__Stg_Component \
-		Stream*                                                debug; \
-		Dictionary*			                       dictionary; \
-		\
-		/* Virtual info */ \
-		NodeLayout_NodeCoordAtFunction*		               nodeCoordAt; \
-		NodeLayout_BuildNodeCoordsFunction*                    buildNodeCoords; \
-		NodeLayout_ElementNodeCountFunction*                   elementNodeCount; \
-		NodeLayout_BuildElementNodesFunction*                  buildElementNodes; \
-		NodeLayout_NodeElementCountFunction*                   nodeElementCount; \
-		NodeLayout_BuildNodeElementsFunction*                  buildNodeElements; \
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction* calcNodeCountInDimFromElementCount; \
-		\
-		/* NodeLayout info ... */ \
-		ElementLayout*                                 elementLayout; \
-		Topology*                                      topology; \
-		Node_Index                                     nodeCount;
-	struct _NodeLayout { __NodeLayout };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Creation implementation */
-	NodeLayout* _NodeLayout_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name							name,
-		Bool							initFlag,
-		NodeLayout_NodeCoordAtFunction*		        	nodeCoordAt,
-		NodeLayout_BuildNodeCoordsFunction*	        	buildNodeCoords,
-		NodeLayout_ElementNodeCountFunction*		        elementNodeCount,
-		NodeLayout_BuildElementNodesFunction*		        buildElementNodes,
-		NodeLayout_NodeElementCountFunction*		        nodeElementCount,
-		NodeLayout_BuildNodeElementsFunction*		        buildNodeElements,
-		NodeLayout_CalcNodeCountInDimFromElementCountFunction*  calcNodeCountInDimFromElementCount,
-		Dictionary*					dictionary,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-
-	void _NodeLayout_LoadFromDict( void* nodeLayout, Dictionary* subDict, Dictionary* dictionary, Stg_ObjectList* objList);
-
-	/* Initialisation implementation functions */
-	void _NodeLayout_Init(
-		NodeLayout*					self,
-		ElementLayout*					elementLayout,
-		Topology*					topology );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete nodeLayout implementation */
-	void _NodeLayout_Delete( void* nodeLayout );
-	
-	/* Print nodeLayout implementation */
-	void _NodeLayout_Print( void* nodeLayout, Stream* stream );
-	
-	/* Copy */
-	#define NodeLayout_Copy( self ) \
-		(NodeLayout*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define NodeLayout_DeepCopy( self ) \
-		(NodeLayout*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _NodeLayout_Copy( void* nodeLayout, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	/** Calculates how many nodes are present in a given dimension if a given number of elements are present.
-		Note this onyl worth with the regular element layouts. */
-	Node_GlobalIndex NodeLayout_CalcNodeCountInDimFromElementCount( void* nodeLayout, Element_GlobalIndex elementCountInDim );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	Node_GlobalIndex NodeLayout_BuildSubset( void* nodeLayout, Index elementCount, Index* elements, Node_GlobalIndex** nodes );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_NodeLayout_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/NodeLayout.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">NodeLayout</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,777 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "HexaEL.h"
-#include "ParallelPipedHexaEL.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "MeshDecomp.h"
-#include "HexaMD.h"
-
-
-/* Textual name of this class */
-const Type ParallelPipedHexaEL_Type = "ParallelPipedHexaEL";
-const Name PPHexaEL_IJK26TopologyName = "defaultIJK26Topology";
-const Name PPHexaEL_BlockGeometryName = "defaultBlockGeometry";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-ParallelPipedHexaEL* ParallelPipedHexaEL_DefaultNew( Name name )
-{
-	return (ParallelPipedHexaEL*)_ParallelPipedHexaEL_New(
-		sizeof(ParallelPipedHexaEL), 
-		ParallelPipedHexaEL_Type, 
-		_ParallelPipedHexaEL_Delete, 
-		_ParallelPipedHexaEL_Print,
-		_ParallelPipedHexaEL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)ParallelPipedHexaEL_DefaultNew,
-		_ParallelPipedHexaEL_Construct,
-		_ParallelPipedHexaEL_Build,
-		_ParallelPipedHexaEL_Initialise,
-		_ParallelPipedHexaEL_Execute,
-		_ParallelPipedHexaEL_Destroy,
-		name,
-		False,
-		_ParallelPipedHexaEL_Build,
-		_HexaEL_BuildCornerIndices,
-		_HexaEL_CornerElementCount,
-		_HexaEL_BuildCornerElements,
-		_HexaEL_BuildEdgeIndices,
-		_HexaEL_EdgeElementCount,
-		_HexaEL_BuildEdgeElements,
-		_HexaEL_EdgeAt,
-		_ParallelPipedHexaEL_GetStaticMinAndMaxLocalCoords,
-		_ParallelPipedHexaEL_GetStaticMinAndMaxGlobalCoords,
-		_ParallelPipedHexaEL_ElementWithPoint,
-		0,
-		NULL );
-}
-
-ParallelPipedHexaEL* ParallelPipedHexaEL_New(
-		Name						name,
-		Dimension_Index             dim,
-		Dictionary*					dictionary )
-{
-	return _ParallelPipedHexaEL_New( 
-		sizeof(ParallelPipedHexaEL), 
-		ParallelPipedHexaEL_Type, 
-		_ParallelPipedHexaEL_Delete, 
-		_ParallelPipedHexaEL_Print,
-		_ParallelPipedHexaEL_Copy,
-		(Stg_Component_DefaultConstructorFunction*)ParallelPipedHexaEL_DefaultNew,
-		_ParallelPipedHexaEL_Construct,
-		_ParallelPipedHexaEL_Build,
-		_ParallelPipedHexaEL_Initialise,
-		_ParallelPipedHexaEL_Execute,
-		_ParallelPipedHexaEL_Destroy,
-		name,
-		True,
-		_ParallelPipedHexaEL_Build,
-		_HexaEL_BuildCornerIndices,
-		_HexaEL_CornerElementCount,
-		_HexaEL_BuildCornerElements,
-		_HexaEL_BuildEdgeIndices,
-		_HexaEL_EdgeElementCount,
-		_HexaEL_BuildEdgeElements,
-		_HexaEL_EdgeAt,
-		_ParallelPipedHexaEL_GetStaticMinAndMaxLocalCoords,
-		_ParallelPipedHexaEL_GetStaticMinAndMaxGlobalCoords,
-		_ParallelPipedHexaEL_ElementWithPoint,
-		dim,
-		dictionary );
-}
-
-void ParallelPipedHexaEL_Init(
-		ParallelPipedHexaEL*				self,
-		Name						name,
-		Dimension_Index             dim,
-		Dictionary*					dictionary )
-{
-	/* General info */
-	self->type = ParallelPipedHexaEL_Type;
-	self->_sizeOfSelf = sizeof(ParallelPipedHexaEL);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _ParallelPipedHexaEL_Delete;
-	self->_print = _ParallelPipedHexaEL_Print;
-	self->_copy = _ParallelPipedHexaEL_Copy;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*)ParallelPipedHexaEL_DefaultNew;
-	self->_construct = _ParallelPipedHexaEL_Construct;
-	self->_build = _ParallelPipedHexaEL_Stg_ComponentBuild;
-	self->_initialise = _ParallelPipedHexaEL_Initialise;
-	self->_execute = _ParallelPipedHexaEL_Execute;
-	self->_destroy = _ParallelPipedHexaEL_Destroy;
-	self->build = _ParallelPipedHexaEL_Build;
-	self->buildCornerIndices = _HexaEL_BuildCornerIndices;
-	self->cornerElementCount = _HexaEL_CornerElementCount;
-	self->buildCornerElements = _HexaEL_BuildCornerElements;
-	self->buildEdgeIndices = _HexaEL_BuildEdgeIndices;
-	self->edgeElementCount = _HexaEL_EdgeElementCount;
-	self->buildEdgeElements = _HexaEL_BuildEdgeElements;
-	self->edgeAt = _HexaEL_EdgeAt;
-	self->getStaticMinAndMaxLocalCoords = _ParallelPipedHexaEL_GetStaticMinAndMaxLocalCoords;
-	self->getStaticMinAndMaxGlobalCoords = _ParallelPipedHexaEL_GetStaticMinAndMaxGlobalCoords;
-	self->elementWithPoint = _ParallelPipedHexaEL_ElementWithPoint;
-
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-
-	_ElementLayout_Init(
-		(ElementLayout*)self,
-		(Geometry*)BlockGeometry_New( PPHexaEL_BlockGeometryName, dictionary ),
-		(Topology*)IJK26Topology_New( PPHexaEL_IJK26TopologyName, dictionary ) );
-	self->topologyWasCreatedInternally = True;
-	self->geometryWasCreatedInternally = True;
-	_HexaEL_Init( (HexaEL*)self, dim, NULL, NULL );
-	
-	/* ParallelPipedHexaEL info */
-	_ParallelPipedHexaEL_Init( self );
-}
-
-ParallelPipedHexaEL* _ParallelPipedHexaEL_New(
-		SizeT                                                   _sizeOfSelf, 
-		Type                                                    type,
-		Stg_Class_DeleteFunction*                               _delete,
-		Stg_Class_PrintFunction*                                _print,
-		Stg_Class_CopyFunction*                                 _copy, 
-		Stg_Component_DefaultConstructorFunction*               _defaultConstructor,
-		Stg_Component_ConstructFunction*                        _construct,
-		Stg_Component_BuildFunction*                            _build,
-		Stg_Component_InitialiseFunction*                       _initialise,
-		Stg_Component_ExecuteFunction*                          _execute,
-		Stg_Component_DestroyFunction*                          _destroy,
-		Name                                                    name,
-		Bool                                                    initFlag,
-		ElementLayout_BuildFunction*                            build,		
-		ElementLayout_BuildCornerIndicesFunction*               buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*               cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*              buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*                 buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*                 edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*                buildEdgeElements,
-		ElementLayout_EdgeAtFunction*                           edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*    getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*   getStaticMinAndMaxGlobalCoords,				
-		ElementLayout_ElementWithPointFunction*                 elementWithPoint,
-		Dimension_Index                                         dim,
-		Dictionary*                                             dictionary )
-{
-	ParallelPipedHexaEL* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(ParallelPipedHexaEL) );
-	self = (ParallelPipedHexaEL*)_HexaEL_New(
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		build,
-		buildCornerIndices,
-		cornerElementCount,
-		buildCornerElements,
-		buildEdgeIndices,
-		edgeElementCount,
-		buildEdgeElements,
-		edgeAt,
-		getStaticMinAndMaxLocalCoords,
-		getStaticMinAndMaxGlobalCoords,
-		elementWithPoint,
-		dim,
-		dictionary,
-		(initFlag)?(Geometry*)BlockGeometry_New( PPHexaEL_BlockGeometryName, dictionary ):NULL );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* ParallelPipedHexaEL info */
-	if( initFlag ){
-		
-		self->geometryWasCreatedInternally = True;
-		_ParallelPipedHexaEL_Init( self );
-	}
-	
-	return self;
-}
-
-void _ParallelPipedHexaEL_Init( ParallelPipedHexaEL* self )
-{
-	Dimension_Index	  dim_I = 0;
-	Index             topSizeInDim = 0;
-	double            geomSizeInDim = 0;
-
-	/* General and Virtual info should already be set */
-	
-	/* Since we are using a block geometry, check that the width's are sane for
-	the given dimensionality of the Topology */
-	for ( dim_I = 0; dim_I < 3 ; dim_I++ ) {
-		topSizeInDim = ((IJK26Topology*)self->topology)->size[dim_I];
-		geomSizeInDim = ((BlockGeometry*)self->geometry)->max[dim_I] - ((BlockGeometry*)self->geometry)->min[dim_I]; 
-
-		/* for 2D we don't need to check the 3rd axis, which by convention is K */
-		if ( (dim_I == K_AXIS) && (self->dim == 2) ) continue;
-		
-		if ( (geomSizeInDim < 1e-99) ) {
-			Stream*      errorStream = Journal_Register( Error_Type, self->type );
-			Journal_Printf( errorStream, "Error - in %s(), for %s \"%s\": number of elements requested "
-				"in %c direction using IJK26Topology \"%s\" is %u, but the width of "
-				"that dimension in provided BlockGeometry \"%s\" is %.2f - %.2f = 0, "
-				"thus the element search & location functions will fail.",
-				__func__, self->type, self->name,
-				IJKTopology_DimNumToDimLetter[dim_I], self->topology->name, topSizeInDim,
-				self->geometry->name, ((BlockGeometry*)self->geometry)->max[dim_I],
-				((BlockGeometry*)self->geometry)->min[dim_I] );
-			Journal_Firewall( 0, errorStream, "Exiting.\n" );	
-		}
-	}
-	
-	/* ParallelPipedHexaEL info */
-	self->isConstructed = True;
-
-	/* Initialise everything else to zero, until build phase */
-	for ( dim_I = 0; dim_I < 3 ; dim_I++ ) {
-		self->minLocalThisPartition[dim_I] = 0;
-		self->maxLocalThisPartition[dim_I] = 0;
-		self->minDomainThisPartition[dim_I] = 0;
-		self->maxDomainThisPartition[dim_I] = 0;
-		self->elementLengthEachDim[dim_I] = 0;
-	} 
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _ParallelPipedHexaEL_Delete( void* parallelPipedHexaEL ) {
-	ParallelPipedHexaEL* self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	
-	/* Only delete our geometry ptr if it's a default one created using the old init method,
-		not the XML componentFactory way : otherwise we may double-delete memory */
-	if( ( True == self->geometryWasCreatedInternally ) ) {
-		Stg_Class_Delete( self->geometry );
-		self->geometry = NULL;
-	}
-	
-	/* The parent will check about deleting the topology */
-	
-	/* Stg_Class_Delete parent */
-	_HexaEL_Delete( self );
-}
-
-
-void _ParallelPipedHexaEL_Print( void* parallelPipedHexaEL, Stream* stream ) {
-	ParallelPipedHexaEL* self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	
-	/* Set the Journal for printing informations */
-	Stream* parallelPipedHexaELStream;
-	parallelPipedHexaELStream = Journal_Register( InfoStream_Type, "ParallelPipedHexaELStream" );
-
-	/* Print parent */
-	_HexaEL_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "ParallelPipedHexaEL (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* ParallelPipedHexaEL info */
-}
-
-
-void* _ParallelPipedHexaEL_Copy( void* ppHexaEL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
-	ParallelPipedHexaEL*	self = (ParallelPipedHexaEL*)ppHexaEL;
-	ParallelPipedHexaEL*	newParallelPipedHexaEL;
-	Index			idx_I;
-	
-	newParallelPipedHexaEL = (ParallelPipedHexaEL*)_HexaEL_Copy( self, dest, deep, nameExt, ptrMap );
-	
-	for( idx_I = 0; idx_I < 3; idx_I++ ) {
-		newParallelPipedHexaEL->minLocalThisPartition[idx_I] = self->minLocalThisPartition[idx_I];
-		newParallelPipedHexaEL->maxLocalThisPartition[idx_I] = self->maxLocalThisPartition[idx_I];
-		newParallelPipedHexaEL->minDomainThisPartition[idx_I] = self->minDomainThisPartition[idx_I];
-		newParallelPipedHexaEL->maxDomainThisPartition[idx_I] = self->maxDomainThisPartition[idx_I];
-		newParallelPipedHexaEL->elementLengthEachDim[idx_I] = self->elementLengthEachDim[idx_I];
-	}
-	newParallelPipedHexaEL->dim = self->dim;
-	
-	return (void*)newParallelPipedHexaEL;
-}
-
-void _ParallelPipedHexaEL_Construct( void* ppHexaEL, Stg_ComponentFactory* cf, void* data ){
-	ParallelPipedHexaEL *self = (ParallelPipedHexaEL*)ppHexaEL;
-	IJK26Topology *topology = NULL;
-	BlockGeometry *geometry = NULL;
-	Dimension_Index dim;
-
-	/* Note: we can't just use the HexaEL parent construct since we want to assert that the input geometry
-	is a block geometry this time */
-
-	self->dictionary = cf->rootDict;
-	
-	topology =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name, Topology_Type, IJK26Topology,  True, data  ) ;
-	geometry =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name, Geometry_Type, BlockGeometry,  True, data  ) ;
-
-	dim = Dictionary_GetUnsignedInt( self->dictionary, "dim" );
-	
-	_ElementLayout_Init( (ElementLayout*)self, (Geometry*)geometry, (Topology*)topology );
-	_HexaEL_Init( (HexaEL*)self, dim, geometry->size, topology->size );
-	_ParallelPipedHexaEL_Init( self );
-}
-	
-void _ParallelPipedHexaEL_Stg_ComponentBuild( void* ppHexaEL, void* data ){
-	
-}
-	
-void _ParallelPipedHexaEL_Initialise( void* ppHexaEL, void* data ){
-	
-}
-	
-void _ParallelPipedHexaEL_Execute( void* ppHexaEL, void* data ){
-	
-}
-	
-void _ParallelPipedHexaEL_Destroy( void* ppHexaEL, void* data ){
-	
-}
-
-void _ParallelPipedHexaEL_Build( void* parallelPipedHexaEL, void* decomp ) {
-	ParallelPipedHexaEL_UpdateGeometryPartitionInfo( parallelPipedHexaEL, decomp );
-}
-
-
-void ParallelPipedHexaEL_UpdateGeometryPartitionInfo( void* parallelPipedHexaEL, void* decomp ) {
-	ParallelPipedHexaEL*	self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	BlockGeometry*		geometry = (BlockGeometry*)self->geometry;
-	HexaMD*			hexaDecomp = (HexaMD*) decomp;
-	Dimension_Index		dim_I;
-	Partition_Index		myRank = hexaDecomp->rank;
-	Element_Index*		elementLocal3DCounts = hexaDecomp->elementLocal3DCounts[myRank];
-
-	Journal_Firewall( 
-			Stg_Class_IsInstance( hexaDecomp, HexaMD_Type ), 
-			Journal_Register( Error_Type, self->type ),
-			"Error in func %s: hexaDecomp %s '%s' passed in, is not an instance of type '%s'.\n", 
-			__func__, hexaDecomp->type, hexaDecomp->name, HexaMD_Type );
-
-	/* Calculate dimensions of each element */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		self->elementLengthEachDim[dim_I] = (geometry->max[dim_I] - geometry->min[dim_I]) / self->elementSize[dim_I];
-	}	
-
-	/* calculate bounds of local geometry */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		self->minLocalThisPartition[dim_I] = geometry->min[dim_I]
-			+ hexaDecomp->_elementOffsets[myRank][dim_I] * self->elementLengthEachDim[dim_I];
-
-		self->maxLocalThisPartition[dim_I] = self->minLocalThisPartition[dim_I]
-			+ elementLocal3DCounts[dim_I] * self->elementLengthEachDim[dim_I];
-	}	
-
-	/* calculate bounds of domain geometry */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		self->minDomainThisPartition[dim_I] = self->minLocalThisPartition[dim_I];
-		if ( hexaDecomp->_elementOffsets[myRank][dim_I] != 0) {	
-			self->minDomainThisPartition[dim_I] -= hexaDecomp->shadowDepth * self->elementLengthEachDim[dim_I];
-		}		
-		self->maxDomainThisPartition[dim_I] = self->maxLocalThisPartition[dim_I];
-		if ( hexaDecomp->_elementOffsets[myRank][dim_I] + elementLocal3DCounts[dim_I] != hexaDecomp->elementGlobal3DCounts[dim_I] )
-		{	
-			self->maxDomainThisPartition[dim_I] += hexaDecomp->shadowDepth * self->elementLengthEachDim[dim_I];
-		}
-	}	
-}
-
-
-Bool _ParallelPipedHexaEL_GetStaticMinAndMaxLocalCoords( void* parallelPipedHexaEL, Coord min, Coord max ) {
-	ParallelPipedHexaEL*	self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	Dimension_Index		dim_I = 0;
-
-	memset( min, 0, sizeof( Coord ) );
-	memset( max, 0, sizeof( Coord ) );
-	for ( dim_I=0; dim_I < self->dim ; dim_I++ ) {
-		min[dim_I] = self->minLocalThisPartition[dim_I];
-		max[dim_I] = self->maxLocalThisPartition[dim_I];
-	}	
-
-	return True;
-}
-
-
-Bool _ParallelPipedHexaEL_GetStaticMinAndMaxGlobalCoords( void* parallelPipedHexaEL, Coord min, Coord max ) {
-	ParallelPipedHexaEL*	self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	BlockGeometry*		bGeometry = (BlockGeometry*)self->geometry;
-	Dimension_Index		dim_I = 0;
-	
-	memset( min, 0, sizeof( Coord ) );
-	memset( max, 0, sizeof( Coord ) );
-	for ( dim_I=0; dim_I < self->dim ; dim_I++ ) {
-		min[dim_I] = bGeometry->min[dim_I];
-		max[dim_I] = bGeometry->max[dim_I];
-	}
-
-	return True;
-}
-
-
-Element_DomainIndex _ParallelPipedHexaEL_ElementWithPoint( void* parallelPipedHexaEL, void* decomp, Coord point, void* mesh, 
-							   PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints )
-{
-	ParallelPipedHexaEL*	self = (ParallelPipedHexaEL*)parallelPipedHexaEL;
-	BlockGeometry*		geometry = (BlockGeometry*)self->geometry;
-	HexaMD*			hexaDecomp = (HexaMD*)decomp;
-	int			localElementIJK[3] = { 0, 0, 0 }; /* Note: has to be int for shadow calculations */
-	Dimension_Index		dim_I;
-	Coord			adjPoint;
-	Coord			normalisedLocalCoord;
-	Coord			normalisedDomainCoord;
-	Element_DomainIndex	elementWithPoint;
-	Bool			withinLocalGeometry = True;
-	Partition_Index		myRank = hexaDecomp->rank;
-	Element_Index*		elementLocal3DCounts = hexaDecomp->elementLocal3DCounts[myRank];
-
-	Journal_DFirewall( (hexaDecomp->type == HexaMD_Type ), Mesh_Error, "Error: %s doesn't know how to "
-			"handle decomps other than %s type.\n", __func__, HexaMD_Type );
-	
-
-	
-	/* see if the element is within the global geometry */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		if ( ( point[dim_I] < ((BlockGeometry*)self->geometry)->min[dim_I] )
-			|| ( point[dim_I] > ((BlockGeometry*)self->geometry)->max[dim_I] ) )
-		{
-			return hexaDecomp->elementDomainCount;
-		}	
-	}
-
-	/* see if the element is within the local geometry */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		if ( ( point[dim_I] < self->minLocalThisPartition[dim_I] ) 
-			|| ( point[dim_I] >= self->maxLocalThisPartition[dim_I] ) )
-		{
-			/* Testing the upper boundary */
-			if ( ( boundaryStatus == INCLUSIVE_UPPER_BOUNDARY ) &&
-				( point[dim_I] == self->maxLocalThisPartition[dim_I] ) )
-			{ 	
-				/* Inclusive upper boundaries: consider upper boundary as owned by last row
-				of elements on local processor */
-				continue; 
-			}	
-			else if ( ( self->maxLocalThisPartition[dim_I] == ((BlockGeometry*)self->geometry)->max[dim_I] ) &&
-				( point[dim_I] == ((BlockGeometry*)self->geometry)->max[dim_I] ) )
-			{
-				/* Exception for the last processor: the right hand boundary _is_ owned by
-				the last processor */
-				continue;
-			}
-			else {
-				withinLocalGeometry = False;
-				break;
-			}
-		}	
-	}
-
-	if ( False == withinLocalGeometry ) {
-		if ( hexaDecomp->elementShadowCount > 0 ) {
-			/* Test if the element is still within the full domain geometry */
-			for (; dim_I < self->dim; dim_I++ ) {
-				if ( ( point[dim_I] < self->minDomainThisPartition[dim_I] ) ||
-					( point[dim_I] >= self->maxDomainThisPartition[dim_I] ))
-				{
-					if ( ( boundaryStatus == INCLUSIVE_UPPER_BOUNDARY )
-						&& ( point[dim_I] == self->maxDomainThisPartition[dim_I] ) )
-					{
-						/* Allow boundary shadow elements if inclusive upper boundary */
-						continue;
-					}
-					else if ( ( self->maxDomainThisPartition[dim_I] == ((BlockGeometry*)self->geometry)->max[dim_I] ) &&
-						( point[dim_I] == ((BlockGeometry*)self->geometry)->max[dim_I] ) )
-					{
-						/* Exception for the last processor: the right hand boundary _is_ owned by
-						the last processor */
-						continue;
-					}
-
-					/* We now know element is outside domain, so last chance is if its in periodic space */
-					if ( ( True == ((IJKTopology*)self->topology)->isPeriodic[dim_I] ) && ( hexaDecomp->shadowDepth > 0 ) )
-					{
-						/* Tests for if the point is within the periodic shadow elements */
-						/* Lower -> upper periodic test */
-						if ( ( hexaDecomp->_elementOffsets[myRank][dim_I] == 0 ) &&
-							( point[dim_I] >= ((BlockGeometry*)self->geometry)->max[dim_I] -
-								(self->elementLengthEachDim[dim_I] * hexaDecomp->shadowDepth ) ) ) 
-						{
-							continue;
-						}
-						/* Upper -> lower periodic test */
-						else if ( ( (hexaDecomp->_elementOffsets[myRank][dim_I] + hexaDecomp->elementLocal3DCounts[myRank][dim_I]) ==
-								hexaDecomp->elementGlobal3DCounts[dim_I] ) )
-						{
-							if ( point[dim_I] < ((BlockGeometry*)self->geometry)->min[dim_I] +
-								(self->elementLengthEachDim[dim_I] * hexaDecomp->shadowDepth ) )
-							{
-								continue;
-							}
-							else if ( ( boundaryStatus == INCLUSIVE_UPPER_BOUNDARY )
-								&& ( point[dim_I] == ((BlockGeometry*)self->geometry)->min[dim_I] +
-									(self->elementLengthEachDim[dim_I] * hexaDecomp->shadowDepth ) ) )
-							{
-								continue;
-							}	
-							else {
-								return hexaDecomp->elementDomainCount;
-							}	
-						}	
-						else {
-							/* Element isn't even within full domain, or periodic part 
-							-> return and notify of this */
-							return hexaDecomp->elementDomainCount;
-						}
-					}	
-					else {	
-						/* Element isn't even within full domain, or periodic part 
-						-> return and notify of this */
-						return hexaDecomp->elementDomainCount;
-					}	
-				}
-			}
-		}
-		else {
-			return hexaDecomp->elementDomainCount;
-		}
-	}
-
-	/* So now know point is either within local or shadow space */
-
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		adjPoint[dim_I] = point[dim_I];
-	}
-
-	/* Check if the point is in periodic shadow space. If so, adjust it to its non-periodic corresponding
-	point, so the rest of the algorithm works as usual */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		if ( point[dim_I] > self->maxDomainThisPartition[dim_I] ) {	
-			adjPoint[dim_I] = self->maxDomainThisPartition[dim_I] + ( geometry->max[dim_I] - point[dim_I] );
-		}	
-		else if ( point[dim_I] < self->minDomainThisPartition[dim_I] ) {	
-			adjPoint[dim_I] = self->minDomainThisPartition[dim_I] - ( point[dim_I] - geometry->min[dim_I] ) ;
-		}	
-	}	
-
-	/* Now normalise the search point relative to the bottom corner of the local processor's mesh */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		normalisedLocalCoord[dim_I] = adjPoint[dim_I] - self->minLocalThisPartition[dim_I];
-	}
-
-	/* Calculate 3D tuple of local element number based on dividing points in each dim */
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		localElementIJK[dim_I] = floor( normalisedLocalCoord[dim_I] / self->elementLengthEachDim[dim_I] ); 
-		if ( adjPoint[dim_I] == geometry->max[dim_I] ) {
-			/* special case: on the very upper end of the domain, set equal to last element (regardless if 
-			shadow or normal) */
-			localElementIJK[dim_I]--;
-		}
-		else if ( (True == withinLocalGeometry) && ( localElementIJK[dim_I] == elementLocal3DCounts[dim_I] ) ) {
-			/* This case following is to handle 2 special situations:
-			1) When INCLUSIVE_UPPER_BOUNDARY chosen, deals with points that are exactly on the upper end of the
-			local space (other than those on max geometry considered above). 
-			2) points just below the edge of the local space border sometimes get calculated as above due to
-			floating-point rounding in the above calculation. So, we need to manually adjust this. */
-			localElementIJK[dim_I]--;
-		}	
-	}
-	
-	if ( True == withinLocalGeometry ) {
-		/* local elements: just convert element 3D tuple -> 1D index */
-		Dimension_3DTo1D( localElementIJK, elementLocal3DCounts, &elementWithPoint );
-	}
-	else {
-		Index			adjustment = 0;
-		Element_DomainIJK	domainElementIJK = {0,0,0};
-		Index			domainElementWithPoint = 0;
-		Coord			normalisationPoint;
-		
-		/* shadow elements: more work to do */
-		/* Now normalise the search point relative to the bottom corner of the local processor's mesh */
-		for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-			normalisationPoint[dim_I] = self->minDomainThisPartition[dim_I];
-			/* Test for periodic and renormalise */
-			if ( ( True == ((IJKTopology*)self->topology)->isPeriodic[dim_I] ) && ( hexaDecomp->shadowDepth > 0 ) 
-				&& ( (hexaDecomp->_elementOffsets[myRank][dim_I] + hexaDecomp->elementLocal3DCounts[myRank][dim_I]) ==
-								hexaDecomp->elementGlobal3DCounts[dim_I] ) )
-			{	
-				normalisationPoint[dim_I] -= hexaDecomp->shadowDepth * self->elementLengthEachDim[dim_I];
-			}
-
-			normalisedDomainCoord[dim_I] = adjPoint[dim_I] - normalisationPoint[dim_I];
-		}
-		/* Find 3D tuple of shadow element */
-		for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-			domainElementIJK[dim_I] = floor( normalisedDomainCoord[dim_I] / self->elementLengthEachDim[dim_I] ); 
-
-			if ( ( True == ((IJKTopology*)self->topology)->isPeriodic[dim_I] ) && ( hexaDecomp->shadowDepth > 0 ) ) 
-			{	/* Periodic special cases */	
-				if ( ( (hexaDecomp->_elementOffsets[myRank][dim_I] + hexaDecomp->elementLocal3DCounts[myRank][dim_I]) ==
-								hexaDecomp->elementGlobal3DCounts[dim_I] ) 
-					&& ( point[dim_I] == geometry->min[dim_I] ) ) 
-				{
-					/* A special case for points on lower boundary of periodic shadow space: the adjPoint system
-					 * doesn't really work for them since they get confused with the lower shadow space section,
-					 * so we need to manually adjust here. */
-					domainElementIJK[dim_I]--;
-				}
-				else if ( ( hexaDecomp->_elementOffsets[myRank][dim_I] == 0 )
-					&& ( point[dim_I] == self->maxDomainThisPartition[dim_I] ) )
-				{
-					/* When periodicity is enabled, for the lowest processor, points on the max domain don't get
-					adjusted by the case below, because of the shadow elements at the "top" influencing the
-					domainElementIJK calculation. Adjust here. */
-					domainElementIJK[dim_I]--;
-				}
-			}
-
-			if ( domainElementIJK[dim_I] == hexaDecomp->elementDomain3DCounts[dim_I] ) {
-				/* The following is to handle 3 special cases:
-				1) When the point is on the upper boundary of the entire domain.
-				2) When INCLUSIVE_UPPER_BOUNDARY chosen, deals with points that are exactly on the upper end of the
-				domain space.
-				3) points just below the edge of the domain space border sometimes get calculated as above due to
-				floating-point rounding in the above calculation. So, we need to manually adjust this. */
-				domainElementIJK[dim_I]--;
-			}	
-		}	
-		/* Convert 3D tuple -> 1D index */
-		Dimension_3DTo1D( domainElementIJK, hexaDecomp->elementDomain3DCounts, &domainElementWithPoint );
-
-		/* Now: calculate how many "holes" for local elements we will subtract */
-		if ( self->dim == 2 ) {
-			if ( localElementIJK[J_AXIS] < 0 ) {
-				adjustment = 0;
-			}
-			else if ( domainElementIJK[J_AXIS] > localElementIJK[J_AXIS] ) {
-				adjustment = hexaDecomp->elementLocalCount;
-			}
-			else {
-				Index adjustRows = localElementIJK[J_AXIS];
-				if ( adjPoint[I_AXIS] >= self->maxLocalThisPartition[I_AXIS] ) {
-					adjustRows++;
-				}
-				adjustment = adjustRows * hexaDecomp->elementLocal3DCounts[myRank][I_AXIS];
-			}
-		}
-		else {
-
-			/* First consider the Z plane */
-			if ( localElementIJK[K_AXIS] < 0 ) {
-				/* If we are below the lowest I-J plane of the local block, no adjustments */
-				adjustment = 0;
-			}
-			else if ( domainElementIJK[K_AXIS] > localElementIJK[K_AXIS] ) {
-				/* If we are above the max I-J plane of the local block, adjust by the entire local block */
-				adjustment = hexaDecomp->elementLocalCount;
-			}
-			else {
-				Index	adjustZSlices;
-				Index	localIJ_SliceCount;
-
-				/* Ok, we are in one of the I-J planes of the local block */
-
-				/* First, adjust for any complete blocks below us */
-				adjustZSlices = localElementIJK[K_AXIS];
-				localIJ_SliceCount = ( elementLocal3DCounts[I_AXIS] * elementLocal3DCounts[J_AXIS] );
-				adjustment = adjustZSlices * localIJ_SliceCount;
-				
-				/* Ok, now adjust for any local elements within the current slice */
-				if ( localElementIJK[J_AXIS] < 0 ) {
-					/* We are below the lowest J row: nothing more to adjust */
-					adjustment += 0;
-				}
-				else if ( domainElementIJK[J_AXIS] > localElementIJK[J_AXIS] ) {
-					/* We are above the last K row: add another full slice to adjust by */
-					adjustment += localIJ_SliceCount;
-				}
-				else {
-					Index adjustRows;
-
-					/* We are somewhere next to a K Row: calculate how many to add on */
-					adjustRows = localElementIJK[J_AXIS];
-
-					/* If we're on the RHS of one, need to add one more row */
-					if ( adjPoint[I_AXIS] >= self->maxLocalThisPartition[I_AXIS] ) {
-						adjustRows++;
-					}
-					adjustment += adjustRows * elementLocal3DCounts[I_AXIS];
-				}
-			}	
-		}
-
-		/* OK: calculate proper domain index: local index, plus the "raw" domain index, then subtract
-		  adjustment for local element positions */
-		elementWithPoint = hexaDecomp->elementLocalCount + domainElementWithPoint - adjustment;
-	}
-	
-	return elementWithPoint;
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,172 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**	Manages the layout of elements in a mesh, where the user wishes to have regular
-**	"box" elements. Automatically creates a "Block" Geometry, and an IJK26Topology.
-**
-** Assumptions:
-**	At the moment, the calculation of minLocalThisPartition, maxLocalThisPartition
-**	etc, and also the elementWithPoint() function, assumes the decomposition used
-**	is a HexaMD. Would need to generalise them if this wasn't the case.
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_ParallelPipedHexaEL_h__
-#define __Discretisaton_Mesh_ParallelPipedHexaEL_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type ParallelPipedHexaEL_Type;
-
-	/* ParallelPipedHexaEL information */
-	#define __ParallelPipedHexaEL \
-		/* General info */ \
-		__HexaEL \
-		\
-		/* Virtual info */ \
-		\
-		/* ParallelPipedHexaEL info ... */ \
-		Coord			minLocalThisPartition; /** Bottom corner of local nodes */\
-		Coord			maxLocalThisPartition; /** Top corner of local nodes */\
-		Coord			minDomainThisPartition; /** Bottom corner of domain (inc shadow) nodes */\
-		Coord			maxDomainThisPartition; /** Top corner of domain (inc shadow) nodes */\
-		double			elementLengthEachDim[3]; /** Dimensions (l*w*h) of any given element */\
-		Bool                    geometryWasCreatedInternally; /** Necessary due to component register */
-		
-	struct _ParallelPipedHexaEL { __ParallelPipedHexaEL };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a ParallelPipedHexaEL */
-	ParallelPipedHexaEL* ParallelPipedHexaEL_DefaultNew( Name name );
-	
-	ParallelPipedHexaEL* ParallelPipedHexaEL_New(
-		Name						name,
-		Dimension_Index             dim,
-		Dictionary*					dictionary );
-
-	/* Initialise a ParallelPipedHexaEL */
-	void ParallelPipedHexaEL_Init(
-		ParallelPipedHexaEL*				self,
-		Name						name,
-		Dimension_Index             dim,
-		Dictionary*					dictionary );
-	
-	/* Creation implementation */
-	ParallelPipedHexaEL* _ParallelPipedHexaEL_New(
-		SizeT                                                   _sizeOfSelf, 
-		Type                                                    type,
-		Stg_Class_DeleteFunction*                               _delete,
-		Stg_Class_PrintFunction*                                _print,
-		Stg_Class_CopyFunction*                                 _copy, 
-		Stg_Component_DefaultConstructorFunction*               _defaultConstructor,
-		Stg_Component_ConstructFunction*                        _construct,
-		Stg_Component_BuildFunction*                            _build,
-		Stg_Component_InitialiseFunction*                       _initialise,
-		Stg_Component_ExecuteFunction*                          _execute,
-		Stg_Component_DestroyFunction*                          _destroy,
-		Name                                                    name,
-		Bool                                                    initFlag,
-		ElementLayout_BuildFunction*                            build,		
-		ElementLayout_BuildCornerIndicesFunction*               buildCornerIndices,
-		ElementLayout_CornerElementCountFunction*               cornerElementCount,
-		ElementLayout_BuildCornerElementsFunction*              buildCornerElements,
-		ElementLayout_BuildEdgeIndicesFunction*                 buildEdgeIndices,
-		ElementLayout_EdgeElementCountFunction*                 edgeElementCount,
-		ElementLayout_BuildEdgeElementsFunction*                buildEdgeElements,
-		ElementLayout_EdgeAtFunction*                           edgeAt,
-		ElementLayout_GetStaticMinAndMaxLocalCoordsFunction*    getStaticMinAndMaxLocalCoords,
-		ElementLayout_GetStaticMinAndMaxGlobalCoordsFunction*   getStaticMinAndMaxGlobalCoords,				
-		ElementLayout_ElementWithPointFunction*                 elementWithPoint,
-		Dimension_Index                                         dim,
-		Dictionary*                                             dictionary );
-
-	/* Initialisation implementation functions */
-	void _ParallelPipedHexaEL_Init(
-		ParallelPipedHexaEL*				self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete ParallelPipedHexaEL implementation */
-	void _ParallelPipedHexaEL_Delete( void* parallelPipedHexaEL );
-	
-	/* Print ParallelPipedHexaEL implementation */
-	void _ParallelPipedHexaEL_Print( void* parallelPipedHexaEL, Stream* stream );
-	
-	/* Copy */
-	#define ParallelPipedHexaEL_Copy( self ) \
-		(ParallelPipedHexaEL*)Stg_Class_Copy( self, NULL, False, NULL, NULL )
-	#define ParallelPipedHexaEL_DeepCopy( self ) \
-		(ParallelPipedHexaEL*)Stg_Class_Copy( self, NULL, True, NULL, NULL )
-	
-	void* _ParallelPipedHexaEL_Copy( void* ppHexaEL, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
-	
-	void _ParallelPipedHexaEL_Construct( void* ppHexaEL, Stg_ComponentFactory* cf, void* data );
-	
-	void _ParallelPipedHexaEL_Stg_ComponentBuild( void* ppHexaEL, void* data );
-	
-	void _ParallelPipedHexaEL_Initialise( void* ppHexaEL, void* data );
-	
-	void _ParallelPipedHexaEL_Execute( void* ppHexaEL, void* data );
-	
-	void _ParallelPipedHexaEL_Destroy( void* ppHexaEL, void* data );
-	
-	void _ParallelPipedHexaEL_Build( void* parallelPipedHexaEL, void* decomp );
-	
-	Bool _ParallelPipedHexaEL_GetStaticMinAndMaxLocalCoords( void* parallelPipedHexaEL, Coord min, Coord max );
-	
-	Bool _ParallelPipedHexaEL_GetStaticMinAndMaxGlobalCoords( void* parallelPipedHexaEL, Coord min, Coord max );
-
-	Element_GlobalIndex _ParallelPipedHexaEL_ElementWithPoint( void* parallelPipedHexaEL, void* decomp, Coord point, void* mesh, 
-								   PartitionBoundaryStatus boundaryStatus, unsigned nHints, unsigned* hints );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	void ParallelPipedHexaEL_UpdateGeometryPartitionInfo( void* parallelPipedHexaEL, void* decomp );
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_ParallelPipedHexaEL_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ParallelPipedHexaEL.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">ParallelPipedHexaEL</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">HexaEL</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ShadowInfo.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ShadowInfo.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/ShadowInfo.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,73 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**	Stores the information necessary to share shadow values between
-**	processors.
-**
-** Assumptions:
-**
-** Comments:
-**	May want to turn this into a full-fledged class eventually that
-**	actually transfers the information for you...
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_ShadowInfo_h__
-#define __Discretisaton_Mesh_ShadowInfo_h__
-
-struct ProcNbrInfo {
-	/** Count of neighbouring processors */
-	PartitionIndex	procNbrCnt;
-	/** The rank of each neighbour processor */
-	PartitionIndex*	procNbrTbl;
-};
-
-/** Stores the information necessary to transfer shadowed values between
-processors. */
-struct ShadowInfo {
-	/** Info on neigbouring processor indices */
-	ProcNbrInfo*	procNbrInfo;
-	/** For each nbr processor, count of how many of its shadow nodes
-	live on the current processor */
-	Index*		procShadowedCnt;
-	/** For each nbr processor, for each of its shadow nodes
-	that live on the current processor, gives the local index of that
-	node */
-	LocalIndex**	procShadowedTbl;
-	/** For each nbr processor, count of how many of my shadow nodes
-	live on that processor */
-	Index*		procShadowCnt;
-	/** For each nbr processor, for each of my shadow nodes that
-	live on that processor, gives its domain index on my proc. */
-	DomainIndex**	procShadowTbl;
-};
-
-#endif /* __Discretisaton_Mesh_ShadowInfo_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,334 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "ElementLayout.h"
-#include "NodeLayout.h"
-#include "MeshDecomp.h"
-#include "MeshLayout.h"
-#include "StencilMD.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type StencilMD_Type = "StencilMD";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-StencilMD* StencilMD_DefaultNew( )
-{
-	
-}
-
-StencilMD* StencilMD_New(
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*			 		elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*					stencilLayout )
-{
-	return _StencilMD_New( 
-		sizeof(StencilMD), 
-		StencilMD_Type, 
-		_StencilMD_Delete, 
-		_StencilMD_Print,
-		_MeshDecomp_Node_LocalToGlobal1D,
-		_MeshDecomp_Node_DomainToGlobal1D,
-		_MeshDecomp_Node_ShadowToGlobal1D, 
-		_MeshDecomp_Node_GlobalToLocal1D, 
-		_MeshDecomp_Node_GlobalToDomain1D, 
-		_MeshDecomp_Node_GlobalToShadow1D,
-		_MeshDecomp_Element_LocalToGlobal1D,
-		_MeshDecomp_Element_DomainToGlobal1D,
-		_MeshDecomp_Element_ShadowToGlobal1D, 
-		_MeshDecomp_Element_GlobalToLocal1D, 
-		_MeshDecomp_Element_GlobalToDomain1D, 
-		_MeshDecomp_Element_GlobalToShadow1D,
-		stencilLayout->decomp->shadowProcCount,
-		stencilLayout->decomp->shadowBuildProcs, 
-		_MeshDecomp_Shadow_ProcElementCount,
-		_MeshDecomp_Proc_WithElement,
-		dictionary,
-		communicator,
-		elementLayout,
-		nodeLayout,
-		stencilLayout );
-}
-
-
-void StencilMD_Init(
-		StencilMD*					self,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*				 	stencilLayout )
-{
-	/* General info */
-	self->type = StencilMD_Type;
-	self->_sizeOfSelf = sizeof(StencilMD);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _StencilMD_Delete;
-	self->_print = _StencilMD_Print;
-	self->nodeMapLocalToGlobal = _MeshDecomp_Node_LocalToGlobal1D;
-	self->nodeMapDomainToGlobal = _MeshDecomp_Node_DomainToGlobal1D;
-	self->nodeMapShadowToGlobal = _MeshDecomp_Node_ShadowToGlobal1D;
-	self->nodeMapGlobalToLocal = _MeshDecomp_Node_GlobalToLocal1D;
-	self->nodeMapGlobalToDomain = _MeshDecomp_Node_GlobalToDomain1D;
-	self->nodeMapGlobalToShadow = _MeshDecomp_Node_GlobalToShadow1D;
-	self->elementMapLocalToGlobal = _MeshDecomp_Element_LocalToGlobal1D;
-	self->elementMapDomainToGlobal = _MeshDecomp_Element_DomainToGlobal1D;
-	self->elementMapShadowToGlobal = _MeshDecomp_Element_ShadowToGlobal1D;
-	self->elementMapGlobalToLocal = _MeshDecomp_Element_GlobalToLocal1D;
-	self->elementMapGlobalToDomain = _MeshDecomp_Element_GlobalToDomain1D;
-	self->elementMapGlobalToShadow = _MeshDecomp_Element_GlobalToShadow1D;
-	self->shadowProcCount = stencilLayout->decomp->shadowProcCount;
-	self->shadowBuildProcs = stencilLayout->decomp->shadowBuildProcs;
-	self->shadowProcElementCount = _MeshDecomp_Shadow_ProcElementCount;
-	self->procWithElement = _MeshDecomp_Proc_WithElement;
-	_MeshDecomp_Init( (MeshDecomp*)self, communicator, elementLayout, nodeLayout );
-	
-	/* StencilMD info */
-	_StencilMD_Init( self, stencilLayout );
-}
-
-
-StencilMD* _StencilMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*					_copy,
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*				_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*				_execute,
-		Stg_Component_DestroyFunction*				_destroy,
-		Name									name,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*					stencilLayout )
-{
-	StencilMD* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(StencilMD) );
-	self = (StencilMD*)_MeshDecomp_New(
-		_sizeOfSelf,
-		type,
-		_delete,
-		_print,
-		nodeMapLocalToGlobal, 
-		nodeMapDomainToGlobal,
-		nodeMapShadowToGlobal,
-		nodeMapGlobalToLocal,
-		nodeMapGlobalToDomain,
-		nodeMapGlobalToShadow, 
-		elementMapLocalToGlobal,
-		elementMapDomainToGlobal,
-		elementMapShadowToGlobal, 
-		elementMapGlobalToLocal,
-		elementMapGlobalToDomain, 
-		elementMapGlobalToShadow,
-		shadowProcCount,
-		shadowBuildProcs,
-		shadowProcElementCount,
-		procWithElement,
-		dictionary, 
-		communicator,
-		elementLayout,
-		nodeLayout );
-	
-	/* General info */
-	
-	/* Virtual info */
-	
-	/* StencilMD info */
-	_StencilMD_Init( self, stencilLayout );
-	
-	return self;
-}
-
-void _StencilMD_Init(
-		StencilMD*					self,
-		MeshLayout*					stencilLayout )
-{
-	/* General and Virtual info should already be set */
-	
-	/* StencilMD info */
-	self->stencilLayout = stencilLayout;
-	
-	if( self->rank < self->stencilLayout->decomp->procsInUse ) {
-		ElementLayout*		eLayout = self->elementLayout;
-		NodeLayout*		nLayout = self->nodeLayout;
-		Index*			corners;
-		Partition_Index		proc_I;
-		Partition_Index*	procs;
-		Index*			indices;
-		Element_GlobalIndex     e_I;
-		
-		self->procsInUse = stencilLayout->decomp->procsInUse;
-		self->storage = stencilLayout->decomp->storage;
-		self->elementGlobalCount = eLayout->elementCount;
-		self->nodeGlobalCount = nLayout->nodeCount;
-		
-		self->localElementSets = Memory_Alloc_Array( IndexSet*, self->procsInUse, "StencilMD->localElementSets" );
-		for( proc_I = 0; proc_I < self->procsInUse; proc_I++ ) {
-			if( stencilLayout->decomp->localElementSets[proc_I] )
-				self->localElementSets[proc_I] = IndexSet_New( eLayout->elementCount );
-			else
-				self->localElementSets[proc_I] = NULL;
-		}
-		
-		corners = Memory_Alloc_Array( Index, eLayout->elementCornerCount, "corners" );
-		procs = Memory_Alloc_Array( Partition_Index, eLayout->elementCornerCount, "procs" );
-		
-		for( e_I = 0; e_I < eLayout->elementCount; e_I++ ) {
-			Index p_I;
-			
-			eLayout->buildCornerIndices( eLayout, e_I, corners );
-			
-			for( p_I = 0; p_I < eLayout->elementCornerCount; p_I++ ) {
-				Coord			point;
-				Element_GlobalIndex     element;
-				
-				eLayout->geometry->pointAt( eLayout->geometry, corners[p_I], point );
-				element = stencilLayout->elementLayout->elementWithPoint( stencilLayout->elementLayout, point );
-				if( element >= stencilLayout->elementLayout->elementCount )
-					break;
-				
-				procs[p_I] = stencilLayout->decomp->procWithElement( stencilLayout->decomp, element );
-				if( procs[p_I] >= stencilLayout->decomp->procsInUse )
-					break;
-			}
-			
-			if( p_I < eLayout->elementCornerCount )
-				continue;
-			
-			for( p_I = 1; p_I < eLayout->elementCornerCount; p_I++ )
-				if( procs[p_I] != procs[p_I - 1] )
-					break;
-			
-			if( p_I < eLayout->elementCornerCount )
-				continue;
-			
-			IndexSet_Add( self->localElementSets[procs[p_I]], e_I );
-		}
-		
-		_MeshDecomp_DecomposeNodes( self );
-		
-		IndexSet_GetMembers( self->localElementSets[self->rank], &self->elementLocalCount, &indices );
-		Memory_Free( indices );
-		self->elementShadowCount = 0;
-		self->elementDomainCount = self->elementLocalCount + self->elementShadowCount;
-		
-		IndexSet_GetMembers( self->localNodeSets[self->rank], &self->nodeLocalCount, &indices );
-		Memory_Free( indices );
-		self->nodeShadowCount = 0;
-		self->nodeDomainCount = self->nodeLocalCount + self->nodeShadowCount;
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _StencilMD_Delete( void* stencilMD ) {
-	StencilMD* self = (StencilMD*)stencilMD;
-	
-	/* Stg_Class_Delete parent */
-	_MeshDecomp_Delete( self );
-}
-
-
-void _StencilMD_Print( void* stencilMD, Stream* stream ) {
-	StencilMD* self = (StencilMD*)stencilMD;
-	
-	/* Set the Journal for printing informations */
-	Stream* stencilMDStream;
-	stencilMDStream = Journal_Register( InfoStream_Type, "StencilMDStream" );
-
-	/* Print parent */
-	_MeshDecomp_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "StencilMD (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* StencilMD info */
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,136 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_StencilMD_h__
-#define __Discretisaton_Mesh_StencilMD_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type StencilMD_Type;
-
-	/* StencilMD information */
-	#define __StencilMD \
-		/* General info */ \
-		__MeshDecomp \
-		\
-		/* Virtual info */ \
-		\
-		/* StencilMD info ... */ \
-		MeshLayout*			stencilLayout;
-	struct _StencilMD { __StencilMD };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a StencilMD */
-	StencilMD* StencilMD_New(
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*					stencilLayout );
-	
-	/* Initialise a StencilMD */
-	void StencilMD_Init(
-		StencilMD*					self,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*					stencilLayout );
-	
-	/* Creation implementation */
-	StencilMD* _StencilMD_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		MeshDecomp_Node_MapLocalToGlobalFunction*       nodeMapLocalToGlobal,
-		MeshDecomp_Node_MapDomainToGlobalFunction*      nodeMapDomainToGlobal,
-		MeshDecomp_Node_MapShadowToGlobalFunction*      nodeMapShadowToGlobal,
-		MeshDecomp_Node_MapGlobalToLocalFunction*       nodeMapGlobalToLocal,
-		MeshDecomp_Node_MapGlobalToDomainFunction*      nodeMapGlobalToDomain,
-		MeshDecomp_Node_MapGlobalToShadowFunction*      nodeMapGlobalToShadow,
-		MeshDecomp_Element_MapLocalToGlobalFunction*	elementMapLocalToGlobal,
-		MeshDecomp_Element_MapDomainToGlobalFunction*	elementMapDomainToGlobal,
-		MeshDecomp_Element_MapShadowToGlobalFunction*	elementMapShadowToGlobal,
-		MeshDecomp_Element_MapGlobalToLocalFunction*	elementMapGlobalToLocal,
-		MeshDecomp_Element_MapGlobalToDomainFunction*	elementMapGlobalToDomain,
-		MeshDecomp_Element_MapGlobalToShadowFunction*	elementMapGlobalToShadow,
-		MeshDecomp_Shadow_ProcCountFunction*		shadowProcCount,
-		MeshDecomp_Shadow_BuildProcsFunction*		shadowBuildProcs,
-		MeshDecomp_Shadow_ProcElementCountFunction*     shadowProcElementCount,
-		MeshDecomp_Proc_WithElementFunction*		procWithElement,
-		Dictionary*					dictionary,
-		MPI_Comm					communicator,
-		ElementLayout*					elementLayout,
-		NodeLayout*					nodeLayout,
-		MeshLayout*					stencilLayout );
-	
-	/* Initialisation implementation functions */
-	void _StencilMD_Init(
-		StencilMD*					self,
-		MeshLayout*					stencilLayout );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete StencilMD implementation */
-	void _StencilMD_Delete( void* stencilMD );
-	
-	/* Print StencilMD implementation */
-	void _StencilMD_Print( void* stencilMD, Stream* stream );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	
-#endif /* __Discretisaton_Mesh_StencilMD_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/StencilMD.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">StencilMD</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Mesh/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">MeshDecomp</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -243,13 +243,13 @@
 	/* Loop over domain nodes. */
 	for( n_i = 0; n_i < MeshTopology_GetDomainSize( mesh->topo, MT_VERTEX ); n_i++ ) {
 		unsigned	gNode;
-		double		height;
 
 		gNode = MeshTopology_DomainToGlobal( mesh->topo, MT_VERTEX, n_i );
 		Grid_Lift( grid, gNode, inds );
 
-		/* Calculate a height percentage. */
-		height = (double)inds[1] / (double)(gSize[1] - 1);
+		/* If we're not on top, skip. */
+		if( inds[1] != gSize[1] - 1 )
+			continue;
 
 		/* Deform this node. */
 		mesh->nodeCoord[n_i][1] += height * deformFunc( self, mesh, gSize, n_i, inds );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/types.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/types.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -130,34 +130,20 @@
 	typedef struct CommTopology			CommTopology;
 	typedef struct Decomp				Decomp;
 	typedef struct Decomp_Sync			Decomp_Sync;
-	typedef struct Decomp_Sync_Claim		Decomp_Sync_Claim;
-	typedef struct Decomp_Sync_Negotiate		Decomp_Sync_Negotiate;
+	typedef struct Decomp_Sync_Array		Decomp_Sync_Array;
+	typedef struct Decomposer			Decomposer;
 	typedef struct DecompTransfer			DecompTransfer;
 	typedef struct MeshTopology			MeshTopology;
+	typedef struct Mesh_ElementType			Mesh_ElementType;
+	typedef struct Mesh_HexType			Mesh_HexType;
+	typedef struct Mesh_Algorithms			Mesh_Algorithms;
+	typedef struct Mesh				Mesh;
 	typedef struct MeshGenerator			MeshGenerator;
 	typedef struct CartesianGenerator		CartesianGenerator;
 	typedef struct MeshAdaptor			MeshAdaptor;
 	typedef struct SurfaceAdaptor			SurfaceAdaptor;
+	typedef struct MeshVariable			MeshVariable;
 
-	typedef struct ProcNbrInfo			ProcNbrInfo;
-	typedef struct ShadowInfo			ShadowInfo;
-	typedef struct _ElementLayout			ElementLayout;
-	typedef struct _HexaEL				HexaEL;
-	typedef struct _ParallelPipedHexaEL		ParallelPipedHexaEL;
-	typedef struct _IrregEL				IrregEL;
-	typedef struct _NodeLayout			NodeLayout;
-	typedef struct _CornerNL			CornerNL;
-	typedef struct _BodyNL				BodyNL;
-	typedef struct MeshDecomp			MeshDecomp;
-	typedef struct _HexaMD				HexaMD;
-	typedef struct _StencilMD			StencilMD;
-	typedef struct _DummyMD				DummyMD;
-	typedef struct MeshGeometry			MeshGeometry;
-	typedef struct _MeshLayout			MeshLayout;
-	typedef struct _Mesh				Mesh;
-	typedef struct _HMesh				HMesh;
-	typedef struct _MeshCoarsener_Hexa		MeshCoarsener_Hexa;
-
 	/* Streams */
 	extern Stream*	Mesh_VerboseConfig;
 	extern Stream*	Mesh_Debug; 	

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of1.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.0of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.1of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.2of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,2 @@
+   Running test 'generate 1D mesh'... passed
+   Running test 'generate shadowed 1D mesh'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCartesianGenerator " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.3of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCartesianGenerator.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -39,51 +39,211 @@
 #include "Discretisation/Mesh/Mesh.h"
 
 
-Bool testSetParams( unsigned rank, unsigned nProcs, unsigned watch ) {
+Bool testGen1D( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
 	CartesianGenerator*	gen;
+	Mesh*			mesh;
 	unsigned		sizes[3];
+	double			minCrd[3];
+	double			maxCrd[3];
 
-	sizes[0] = 5;
-	sizes[1] = 2;
-	sizes[2] = 2;
+	/*
+	** Generate a single element per CPU.
+	*/
 
+	sizes[0] = nProcs;
+	minCrd[0] = 0.0;
+	maxCrd[0] = (double)nProcs;
+
 	gen = CartesianGenerator_New( "" );
-	CartesianGenerator_SetTopologyParams( gen, 3, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetShadowDepth( gen, 0 );
+	CartesianGenerator_SetTopologyParams( gen, 1, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
 
+	mesh = Mesh_New( "" );
+	CartesianGenerator_Generate( gen, mesh );
+
+	if( rank == watch ) {
+		if( Mesh_GetDimSize( mesh ) != 1 || 
+		    Mesh_GetGlobalSize( mesh, MT_VERTEX ) != nProcs + 1 || 
+		    Mesh_GetGlobalSize( mesh, MT_EDGE ) != nProcs )
+		{
+			result = False;
+			goto done;
+		}
+
+		if( rank == 0 ) {
+			if( nProcs > 1 ) {
+				if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 0 || 
+				    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 0 || 
+				    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetDomainSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 1 || 
+				    Mesh_GetSharedSize( mesh, MT_EDGE ) != 0 )
+				{
+					result = False;
+					goto done;
+				}
+			}
+			else {
+				if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 0 || 
+				    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 0 || 
+				    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetDomainSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 0 || 
+				    Mesh_GetSharedSize( mesh, MT_EDGE ) != 0 )
+				{
+					result = False;
+					goto done;
+				}
+			}
+		}
+		else if( rank == nProcs - 1 ) {
+			if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 0 || 
+			    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 2 || 
+			    Mesh_GetDomainSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 0 || 
+			    Mesh_GetSharedSize( mesh, MT_EDGE ) != 0 )
+			{
+				result = False;
+				goto done;
+			}
+		}
+		else {
+			if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 0 || 
+			    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 2 || 
+			    Mesh_GetDomainSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetSharedSize( mesh, MT_EDGE ) != 0 )
+			{
+				result = False;
+				goto done;
+			}
+		}
+	}
+
+done:
 	FreeObject( gen );
+	FreeObject( mesh );
 
-	return True;
+	return result;
 }
 
-Bool testGen( unsigned rank, unsigned nProcs, unsigned watch ) {
+Bool testShadow1D( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
 	CartesianGenerator*	gen;
 	Mesh*			mesh;
 	unsigned		sizes[3];
-	double			min[3] = {0, 0, 0};
-	double			max[3] = {1, 1, 1};
+	double			minCrd[3];
+	double			maxCrd[3];
 
-	sizes[0] = 12;
-	sizes[1] = 12;
-	sizes[2] = 12;
+	/*
+	** Generate a single element per CPU.
+	*/
 
+	sizes[0] = nProcs;
+	minCrd[0] = 0.0;
+	maxCrd[0] = (double)nProcs;
+
 	gen = CartesianGenerator_New( "" );
-	mesh = Mesh_DefaultNew( "" );
-	mesh->topo = MeshTopology_New( "" );
-	mesh->info = ExtensionManager_New_OfExistingObject( "mesh_info", mesh );
-	CartesianGenerator_SetTopologyParams( gen, 3, sizes, 0, NULL, NULL );
-	CartesianGenerator_SetGeometryParams( gen, min, max );
+	CartesianGenerator_SetShadowDepth( gen, 1 );
+	CartesianGenerator_SetTopologyParams( gen, 1, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
+
+	mesh = Mesh_New( "" );
 	CartesianGenerator_Generate( gen, mesh );
 
+	if( rank == watch ) {
+		if( Mesh_GetDimSize( mesh ) != 1 || 
+		    Mesh_GetGlobalSize( mesh, MT_VERTEX ) != nProcs + 1 || 
+		    Mesh_GetGlobalSize( mesh, MT_EDGE ) != nProcs )
+		{
+			result = False;
+			goto done;
+		}
+
+		if( rank == 0 ) {
+			if( nProcs > 1 ) {
+				if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 1 || 
+				    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 3 || 
+				    Mesh_GetDomainSize( mesh, MT_EDGE ) != 2 || 
+				    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetSharedSize( mesh, MT_EDGE ) != 1 )
+				{
+					result = False;
+					goto done;
+				}
+			}
+			else {
+				if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 0 || 
+				    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 0 || 
+				    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 2 || 
+				    Mesh_GetDomainSize( mesh, MT_EDGE ) != 1 || 
+				    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 0 || 
+				    Mesh_GetSharedSize( mesh, MT_EDGE ) != 0 )
+				{
+					result = False;
+					goto done;
+				}
+			}
+		}
+		else if( rank == nProcs - 1 ) {
+			if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 2 || 
+			    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 3 || 
+			    Mesh_GetDomainSize( mesh, MT_EDGE ) != 2 || 
+			    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetSharedSize( mesh, MT_EDGE ) != 1 )
+			{
+				result = False;
+				goto done;
+			}
+		}
+		else {
+			if( Mesh_GetLocalSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetLocalSize( mesh, MT_EDGE ) != 1 || 
+			    Mesh_GetRemoteSize( mesh, MT_VERTEX ) != 3 || 
+			    Mesh_GetRemoteSize( mesh, MT_EDGE ) != 2 || 
+			    Mesh_GetDomainSize( mesh, MT_VERTEX ) != 4 || 
+			    Mesh_GetDomainSize( mesh, MT_EDGE ) != 3 || 
+			    Mesh_GetSharedSize( mesh, MT_VERTEX ) != 1 || 
+			    Mesh_GetSharedSize( mesh, MT_EDGE ) != 1 )
+			{
+				result = False;
+				goto done;
+			}
+		}
+	}
+
+done:
 	FreeObject( gen );
+	FreeObject( mesh );
 
-	return True;
+	return result;
 }
 
 
 #define nTests	2
 
-TestSuite_Test	tests[nTests] = {{"set parameters", testSetParams, 0}, 
-				 {"generate mesh", testGen, 1}};
+TestSuite_Test	tests[nTests] = {{"generate 1D mesh", testGen1D, 10}, 
+				 {"generate shadowed 1D mesh", testShadow1D, 10}};
 
 
 int main( int argc, char* argv[] ) {

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of1.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.0of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.1of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.2of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,7 @@
+   Running test 'set communicator'... passed
+   Running test 'empty incidence'... passed
+   Running test 'partial incidence'... passed
+   Running test 'complete incidence'... passed
+   Running test 'adding incidence'... passed
+   Running test 'all gather'... passed
+   Running test 'all to all'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testCommTopology " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.3of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testCommTopology.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -45,40 +45,64 @@
 	CommTopology*	commTopo;
 	unsigned	inc_i;
 
-	commTopo = CommTopology_New( "" );
+	commTopo = CommTopology_New();
 
 	*nInc = nProcs - 1;
+	*inc = AllocArray( unsigned, *nInc );
+	for( inc_i = 0; inc_i < *nInc; inc_i++ )
+		(*inc)[inc_i] = (rank + inc_i + 1) % nProcs;
+
+	CommTopology_SetIncidence( commTopo, *nInc, *inc );
+
+	return commTopo;
+}
+
+CommTopology* buildPartialIncidence( unsigned rank, unsigned nProcs, 
+				     unsigned* nInc, unsigned** inc )
+{
+	CommTopology*	commTopo;
+
+	commTopo = CommTopology_New();
+
 	if( nProcs > 1 ) {
+		*nInc = (rank == 0 || rank == nProcs - 1) ? 1 : 2;
 		*inc = Memory_Alloc_Array_Unnamed( unsigned, *nInc );
 
-		for( inc_i = 0; inc_i < *nInc; inc_i++ )
-			(*inc)[inc_i] = (rank + 1) % nProcs;
+		if( rank > 0 )
+			(*inc)[0] = rank - 1;
+		if( rank < nProcs - 1 )
+			(*inc)[(rank > 0) ? 1 : 0] = rank + 1;
 
 		CommTopology_SetIncidence( commTopo, *nInc, *inc );
 	}
-	else
+	else {
+		*nInc = 0;
 		*inc = NULL;
+	}
 
 	return commTopo;
 }
 
-CommTopology* buildPartialIncidence( unsigned rank, unsigned nProcs, 
-				     unsigned* nInc, unsigned** inc )
+CommTopology* buildAddIncidence( unsigned rank, unsigned nProcs, 
+				 unsigned* nInc, unsigned** inc )
 {
 	CommTopology*	commTopo;
 
-	commTopo = CommTopology_New( "" );
+	commTopo = CommTopology_New();
 
 	if( nProcs > 1 ) {
 		*nInc = (rank == 0 || rank == nProcs - 1) ? 1 : 2;
-		*inc = Memory_Alloc_Array_Unnamed( unsigned, *nInc );
+		*inc = AllocArray( unsigned, *nInc );
 
 		if( rank > 0 )
 			(*inc)[0] = rank - 1;
+		CommTopology_SetIncidence( commTopo, (rank > 0) ? 1 : 0, *inc );
+
 		if( rank < nProcs - 1 )
 			(*inc)[(rank > 0) ? 1 : 0] = rank + 1;
-
-		CommTopology_SetIncidence( commTopo, *nInc, *inc );
+		CommTopology_AddIncidence( commTopo, 
+					   (rank < nProcs - 1) ? 1 : 0, 
+					   (*inc) + ((rank > 0) ? 1 : 0) );
 	}
 	else {
 		*nInc = 0;
@@ -102,17 +126,19 @@
 void buildAlltoallArrays( unsigned rank, unsigned nProcs, CommTopology* commTopo, 
 			  unsigned** srcSizes, unsigned*** srcs )
 {
+	unsigned	nIncRanks;
 	unsigned	p_i, p_j;
 
-	if( !commTopo->nInc ) {
-		*srcSizes = NULL;
+	if( nProcs == 1 ) {
+		*srcSizes = 0;
 		*srcs = NULL;
 		return;
 	}
 
-	*srcSizes = Memory_Alloc_Array_Unnamed( unsigned, commTopo->nInc );
-	*srcs = Memory_Alloc_2DArray_Unnamed( unsigned, commTopo->nInc, nProcs );
-	for( p_i = 0; p_i < commTopo->nInc; p_i++ ) {
+	nIncRanks = CommTopology_GetIncidenceSize( commTopo );
+	*srcSizes = Memory_Alloc_Array_Unnamed( unsigned, nIncRanks );
+	*srcs = Memory_Alloc_2DArray_Unnamed( unsigned, nIncRanks, nProcs );
+	for( p_i = 0; p_i < nIncRanks; p_i++ ) {
 		(*srcSizes)[p_i] = nProcs;
 		for( p_j = 0; p_j < nProcs; p_j++ )
 			(*srcs)[p_i][p_j] = rank;
@@ -120,26 +146,19 @@
 }
 
 
-Bool testConstruct( unsigned rank, unsigned nProcs, unsigned watch ) {
-	CommTopology*	commTopo;
-
-	commTopo = CommTopology_New( "" );
-	FreeObject( commTopo );
-
-	return True;
-}
-
 Bool testSetComm( unsigned rank, unsigned nProcs, unsigned watch ) {
 	CommTopology*	commTopo;
 	Bool		result = True;
 
-	commTopo = CommTopology_New( "" );
+	commTopo = CommTopology_New();
 
 	CommTopology_SetComm( commTopo, MPI_COMM_WORLD );
 	if( rank == watch ) {
 		if( commTopo->comm != MPI_COMM_WORLD || 
-		    commTopo->nInc != 0 || 
-		    commTopo->inc != NULL )
+		    commTopo->nIncRanks != 0 || 
+		    commTopo->incRanks != NULL || 
+		    commTopo->order != NULL || 
+		    UIntMap_GetSize( commTopo->glMap ) )
 		{
 			result = False;
 			goto done;
@@ -156,13 +175,15 @@
 	CommTopology*	commTopo;
 	Bool		result = True;
 
-	commTopo = CommTopology_New( "" );
+	commTopo = CommTopology_New();
 	CommTopology_SetIncidence( commTopo, 0, NULL );
 
 	if( rank == watch ) {
 		if( commTopo->comm != MPI_COMM_WORLD || 
-		    commTopo->nInc != 0 || 
-		    commTopo->inc != NULL )
+		    commTopo->nIncRanks != 0 || 
+		    commTopo->incRanks != NULL || 
+		    commTopo->order != NULL || 
+		    UIntMap_GetSize( commTopo->glMap ) )
 		{
 			result = False;
 			goto done;
@@ -186,14 +207,31 @@
 
 	if( rank == watch ) {
 		if( commTopo->comm != MPI_COMM_WORLD || 
-		    commTopo->nInc != nInc )
+		    commTopo->nIncRanks != nInc )
 		{
 			result = False;
 			goto done;
 		}
 
-		for( inc_i = 0; inc_i < nInc; inc_i++ )
-			if( commTopo->inc[inc_i] != inc[inc_i] ) break;
+		if( nProcs > 1 && 
+		    (!commTopo->incRanks || 
+		     !commTopo->order || 
+		     !UIntMap_GetSize( commTopo->glMap )) )
+		{
+			result = False;
+			goto done;
+		}
+
+		for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+			unsigned	local;
+
+			if( CommTopology_LocalToGlobal( commTopo, inc_i ) != inc[inc_i] || 
+			    !CommTopology_GlobalToLocal( commTopo, inc[inc_i], &local ) || 
+			    local != inc_i )
+			{
+				break;
+			}
+		}
 		if( inc_i < nInc ) {
 			result = False;
 			goto done;
@@ -218,14 +256,31 @@
 
 	if( rank == watch ) {
 		if( commTopo->comm != MPI_COMM_WORLD || 
-		    commTopo->nInc != nInc )
+		    commTopo->nIncRanks != nInc )
 		{
 			result = False;
 			goto done;
 		}
 
-		for( inc_i = 0; inc_i < nInc; inc_i++ )
-			if( commTopo->inc[inc_i] != inc[inc_i] ) break;
+		if( nProcs > 1 && 
+		    (!commTopo->incRanks || 
+		     !commTopo->order || 
+		     !UIntMap_GetSize( commTopo->glMap )) )
+		{
+			result = False;
+			goto done;
+		}
+
+		for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+			unsigned	local;
+
+			if( CommTopology_LocalToGlobal( commTopo, inc_i ) != inc[inc_i] || 
+			    !CommTopology_GlobalToLocal( commTopo, inc[inc_i], &local ) || 
+			    local != inc_i )
+			{
+				break;
+			}
+		}
 		if( inc_i < nInc ) {
 			result = False;
 			goto done;
@@ -239,6 +294,55 @@
 	return result;
 }
 
+Bool testAddInc( unsigned rank, unsigned nProcs, unsigned watch ) {
+	CommTopology*	commTopo;
+	Bool		result = True;
+	unsigned	nInc;
+	unsigned*	inc;
+	unsigned	inc_i;
+
+	commTopo = buildAddIncidence( rank, nProcs, &nInc, &inc );
+
+	if( rank == watch ) {
+		if( commTopo->comm != MPI_COMM_WORLD || 
+		    commTopo->nIncRanks != nInc )
+		{
+			result = False;
+			goto done;
+		}
+
+		if( nProcs > 1 && 
+		    (!commTopo->incRanks || 
+		     !commTopo->order || 
+		     !UIntMap_GetSize( commTopo->glMap )) )
+		{
+			result = False;
+			goto done;
+		}
+
+		for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+			unsigned	local;
+
+			if( CommTopology_LocalToGlobal( commTopo, inc_i ) != inc[inc_i] || 
+			    !CommTopology_GlobalToLocal( commTopo, inc[inc_i], &local ) || 
+			    local != inc_i )
+			{
+				break;
+			}
+		}
+		if( inc_i < nInc ) {
+			result = False;
+			goto done;
+		}
+	}
+
+done:
+	FreeArray( inc );
+	FreeObject( commTopo );
+
+	return result;
+}
+
 Bool testAllgather( unsigned rank, unsigned nProcs, unsigned watch ) {
 	CommTopology*	commTopo;
 	Bool		result = True;
@@ -253,12 +357,15 @@
 	commTopo = buildPartialIncidence( rank, nProcs, &nInc, &inc );
 	buildGatherArrays( rank, nProcs, &srcSize, &src );
 
-	CommTopology_Allgather( commTopo, srcSize, src, &dstSizes, (void***)&dst, sizeof(unsigned) );
+	CommTopology_Allgather( commTopo, 
+				srcSize, src, 
+				&dstSizes, (void***)&dst, 
+				sizeof(unsigned) );
 
 	if( rank == watch ) {
-		for( p_i = 0; p_i < commTopo->nInc; p_i++ ) {
+		for( p_i = 0; p_i < nInc; p_i++ ) {
 			for( e_i = 0; e_i < srcSize; e_i++ ) {
-				if( dst[p_i][e_i] != commTopo->inc[p_i] ) {
+				if( dst[p_i][e_i] != inc[p_i] ) {
 					result = False;
 					goto done;
 				}
@@ -289,12 +396,15 @@
 	commTopo = buildPartialIncidence( rank, nProcs, &nInc, &inc );
 	buildAlltoallArrays( rank, nProcs, commTopo, &srcSizes, &srcs );
 
-	CommTopology_Alltoall( commTopo, srcSizes, srcs, &dstSizes, (void***)&dst, sizeof(unsigned) );
+	CommTopology_Alltoall( commTopo, 
+			       srcSizes, (void**)srcs, 
+			       &dstSizes, (void***)&dst, 
+			       sizeof(unsigned) );
 
 	if( rank == watch ) {
-		for( p_i = 0; p_i < commTopo->nInc; p_i++ ) {
+		for( p_i = 0; p_i < nInc; p_i++ ) {
 			for( e_i = 0; e_i < srcSizes[p_i]; e_i++ ) {
-				if( dst[p_i][e_i] != commTopo->inc[p_i] ) {
+				if( dst[p_i][e_i] != inc[p_i] ) {
 					result = False;
 					goto done;
 				}
@@ -315,11 +425,11 @@
 
 #define nTests	7
 
-TestSuite_Test	tests[nTests] = {{"construct", testConstruct, 10}, 
-				 {"set communicator", testSetComm, 10}, 
+TestSuite_Test	tests[nTests] = {{"set communicator", testSetComm, 10}, 
 				 {"empty incidence", testEmptyInc, 10 }, 
 				 {"partial incidence", testPartInc, 10}, 
 				 {"complete incidence", testCompInc, 10}, 
+				 {"adding incidence", testAddInc, 10}, 
 				 {"all gather", testAllgather, 10}, 
 				 {"all to all", testAlltoall, 10}};
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +1,2 @@
+   Running test 'set empty'... passed
    Running test 'set locals'... passed
-   Running test 'mappings'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -39,48 +39,38 @@
 #include "Discretisation/Mesh/Mesh.h"
 
 
-#define nTests	2
-
-
-Bool testLocals( unsigned rank, unsigned nProcs, unsigned watch ) {
+Bool testSetEmpty( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
 	Decomp*		decomp = Decomp_New( "" );
-	unsigned	nLocals = 100;
-	unsigned	nGlobals = nProcs * nLocals;
-	unsigned*	locals;
-	unsigned	l_i;
+	unsigned	nLocals = 0;
+	unsigned*	locals = NULL;;
 
-	locals = Memory_Alloc_Array_Unnamed( unsigned, nLocals );
-	for( l_i = 0; l_i < nLocals; l_i++ )
-		locals[l_i] = rank * nLocals + l_i;
-
+	decomp =  Decomp_New( "" );
 	Decomp_SetLocals( decomp, nLocals, locals );
 
-	if( decomp->nGlobals != nGlobals ) {
-		FreeArray( locals );
-		FreeObject( decomp );
-		return False;
-	}
-
-	for( l_i = 0; l_i < nLocals; l_i++ ) {
-		if( decomp->locals[l_i] != locals[l_i] ) {
-			FreeArray( locals );
-			FreeObject( decomp );
-			return False;
+	if( rank == watch ) {
+		if( Decomp_GetGlobalSize( decomp ) != 0 || 
+		    Decomp_GetLocalSize( decomp ) != 0 ||
+		    decomp->locals != NULL )
+		{
+			result = False;
+			goto done;
 		}
 	}
 
-	FreeArray( locals );
+done:
 	FreeObject( decomp );
 
-	return True;
+	return result;
 }
 
-Bool testMaps( unsigned rank, unsigned nProcs, unsigned watch ) {
+Bool testSetLocals( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
 	Decomp*		decomp = Decomp_New( "" );
-	unsigned	nLocals = 100;
+	unsigned	nLocals = 10;
 	unsigned	nGlobals = nProcs * nLocals;
 	unsigned*	locals;
-	unsigned	l_i, g_i;
+	unsigned	l_i;
 
 	locals = Memory_Alloc_Array_Unnamed( unsigned, nLocals );
 	for( l_i = 0; l_i < nLocals; l_i++ )
@@ -88,38 +78,54 @@
 
 	Decomp_SetLocals( decomp, nLocals, locals );
 
-	for( l_i = 0; l_i < nLocals; l_i++ ) {
-		if( !Decomp_IsLocal( decomp, locals[l_i] ) || 
-		    Decomp_LocalToGlobal( decomp, l_i ) != locals[l_i] )
+	if( rank == watch ) {
+		unsigned	g_i;
+
+		if( Decomp_GetGlobalSize( decomp ) != nGlobals || 
+		    Decomp_GetLocalSize( decomp ) != nLocals || 
+		    decomp->locals == NULL )
 		{
-			FreeObject( decomp );
-			return False;
+			result = False;
+			goto done;
 		}
-	}
 
-	FreeArray( locals );
+		for( l_i = 0; l_i < nLocals; l_i++ ) {
+			if( Decomp_LocalToGlobal( decomp, l_i ) != locals[l_i] ) {
+				result = False;
+				goto done;
+			}
+		}
 
-	for( g_i = 0; g_i < nGlobals; g_i++ ) {
-		if( !Decomp_IsLocal( decomp, g_i ) )
-			continue;
+		for( g_i = 0; g_i < nGlobals; g_i++ ) {
+			Bool		mapRes;
+			unsigned	local;
 
-		if( Decomp_GlobalToLocal( decomp, g_i ) != g_i % nLocals ) {
-			FreeObject( decomp );
-			return False;
+			mapRes = Decomp_GlobalToLocal( decomp, g_i, &local );
+			if( g_i >= rank * nLocals && g_i < (rank + 1) * nLocals && 
+			    (!mapRes || local != g_i - rank * nLocals) )
+			{
+				result = False;
+				goto done;
+			}
 		}
 	}
 
+done:
+	FreeArray( locals );
 	FreeObject( decomp );
 
-	return True;
+	return result;
 }
 
 
+#define nTests	2
+
+TestSuite*	suite;
+TestSuite_Test	tests[nTests] = {{"set empty", testSetEmpty, 10}, 
+				 {"set locals", testSetLocals, 10}};
+
+
 int main( int argc, char* argv[] ) {
-	TestSuite*	suite;
-	TestSuite_Test	tests[nTests] = {{"set locals", testLocals}, 
-					 {"mappings", testMaps}};
-
 	/* Initialise MPI, get world info. */
 	MPI_Init( &argc, &argv );
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecompTransfer.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecompTransfer.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecompTransfer.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -65,9 +65,13 @@
 	Decomp_SetLocals( decomps[1], nLocals[1], locals[1] );
 
 	map = UIntMap_New();
-	for( ind_i = 0; ind_i < nLocals[0]; ind_i++ )
-		UIntMap_Insert( map, Decomp_GlobalToLocal( decomps[0], locals[0][ind_i] ), locals[1][ind_i] );
+	for( ind_i = 0; ind_i < nLocals[0]; ind_i++ ) {
+		unsigned	 mappedInd;
 
+		insist( Decomp_GlobalToLocal( decomps[0], locals[0][ind_i], &mappedInd ) );
+		UIntMap_Insert( map, mappedInd, locals[1][ind_i] );
+	}
+
 	transfer = DecompTransfer_New( "" );
 	DecompTransfer_SetDecomps( transfer, decomps[0], decomps[1], map );
 

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of1.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.0of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of2.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.1of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of3.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.2of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'set remotes'... passed
+   Running test 'sink/sources'... passed
+   Running test 'arrays'... passed
+   Running test 'claim'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testDecomp_Sync " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.3of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testDecomp_Sync.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -39,72 +39,119 @@
 #include "Discretisation/Mesh/Mesh.h"
 
 
-Bool testRemotes( unsigned rank, unsigned nProcs, unsigned watch );
-Bool testSnkSrc( unsigned rank, unsigned nProcs, unsigned watch );
-Bool testArrays( unsigned rank, unsigned nProcs, unsigned watch );
-Bool testClaim( unsigned rank, unsigned nProcs, unsigned watch );
+Decomp* buildDecomp( unsigned rank, unsigned nProcs, unsigned* nLocals, unsigned** locals ) {
+	Decomp*		decomp = Decomp_New();
+	unsigned	l_i;
 
-Decomp* buildDecomp( unsigned rank, unsigned nProcs, unsigned nLocals );
+	*nLocals = 100;
+	*locals = AllocArray( unsigned, *nLocals );
+	for( l_i = 0; l_i < *nLocals; l_i++ )
+		(*locals)[l_i] = rank * *nLocals + l_i;
+	Decomp_SetLocals( decomp, *nLocals, *locals );
+
+	return decomp;
+}
+
 void buildRequired( unsigned rank, unsigned nProcs, 
-		    unsigned* nRequired, unsigned** required );
+		    unsigned* nRequired, unsigned** required )
+{
+	unsigned	start;
+	unsigned	r_i;
 
+	*nRequired = 100;
+	*required = AllocArray( unsigned, *nRequired );
+	start = rank * (*nRequired - 10);
 
-#define nTests	4
+	for( r_i = 0; r_i < *nRequired; r_i++ )
+		(*required)[r_i] = start + r_i;
+}
 
-TestSuite*	suite;
-TestSuite_Test	tests[nTests] = {{"set remotes", testRemotes}, 
-				 {"sink/sources", testSnkSrc}, 
-				 {"arrays", testArrays}, 
-				 {"claim", testClaim}};
+CommTopology* buildCommTopo( unsigned rank, unsigned nProcs ) {
+	CommTopology*	commTopo;
+	unsigned	nInc, inc[2];
 
+	commTopo = CommTopology_New();
 
-Bool testRemotes( unsigned rank, unsigned nProcs, unsigned watch ) {
-	Decomp*		decomp;
+	if( nProcs > 2 ) {
+		nInc = (rank == 0 || rank == nProcs - 1) ? 1 : 2;
+		if( rank > 0 )
+			inc[0] = rank - 1;
+		if( rank < nProcs - 1 )
+			inc[(rank > 0) ? 1 : 0] = rank + 1;
+	}
+	else if( nProcs == 2 ) {
+		nInc = 1;
+		inc[0] = (rank == 0) ? 1 : 0;
+	}
+	else
+		nInc = 0;
+
+	CommTopology_SetIncidence( commTopo, nInc, inc );
+
+	return commTopo;
+}
+
+Decomp_Sync* buildSync( unsigned rank, unsigned nProcs, 
+			Decomp** decomp, unsigned* nLocals, unsigned** locals, 
+			unsigned* remPerSide, unsigned* nRemotes, unsigned** remotes )
+{
 	Decomp_Sync*	sync;
-	unsigned	nLocals = 100;
-	unsigned	remPerSide = nLocals / 10;
-	unsigned	nRemotes = remPerSide * ((rank > 0 && rank < nProcs - 1) ? 2 : 1) * ((nProcs > 1) ? 1 : 0);
-	unsigned*	remotes;
 	unsigned	r_i;
 
-	decomp = buildDecomp( rank, nProcs, nLocals );
-	sync = Decomp_Sync_New( "" );
-	Decomp_Sync_SetDecomp( sync, decomp );
+	sync = Decomp_Sync_New();
+	*decomp = buildDecomp( rank, nProcs, nLocals, locals );
+	Decomp_Sync_SetDecomp( sync, *decomp );
+	Decomp_Sync_SetCommTopology( sync, buildCommTopo( rank, nProcs ) );
 
-	if( nRemotes ) {
-		remotes = Memory_Alloc_Array_Unnamed( unsigned, nRemotes );
+	*remPerSide = (*nLocals) / 10;
+	*nRemotes = *remPerSide * ((rank > 0 && rank < nProcs - 1) ? 2 : 1) * ((nProcs > 1) ? 1 : 0);
+	if( *nRemotes ) {
+		*remotes = AllocArray( unsigned, *nRemotes );
 		if( rank > 0 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ )
-				remotes[r_i] = rank * nLocals - remPerSide + r_i;
+			for( r_i = 0; r_i < *remPerSide; r_i++ )
+				(*remotes)[r_i] = rank * *nLocals - *remPerSide + r_i;
 		}
 		if( rank < nProcs - 1 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ ) {
-				unsigned	ind = r_i + ((rank > 0) ? remPerSide : 0);
+			for( r_i = 0; r_i < *remPerSide; r_i++ ) {
+				unsigned	ind = r_i + ((rank > 0) ? *remPerSide : 0);
 
-				remotes[ind] = (rank + 1) * nLocals + r_i;
+				(*remotes)[ind] = (rank + 1) * *nLocals + r_i;
 			}
 		}
 	}
 	else
-		remotes = NULL;
+		*remotes = NULL;
 
-	Decomp_Sync_SetRemotes( sync, nRemotes, remotes );
+	Decomp_Sync_SetRemotes( sync, *nRemotes, *remotes );
 
+	return sync;
+}
+
+
+Bool testRemotes( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
+	Decomp*		decomp;
+	Decomp_Sync*	sync;
+	unsigned	remPerSide;
+	unsigned	nRemotes, *remotes;
+	unsigned	nLocals, *locals;
+	unsigned	r_i;
+
+	sync = buildSync( rank, nProcs, 
+			  &decomp, &nLocals, &locals, 
+			  &remPerSide, &nRemotes, &remotes );
+
 	if( rank == watch ) {
 		if( sync->nRemotes != nRemotes ) {
-			FreeArray( remotes );
-			FreeObject( sync );
-			FreeObject( decomp );
-			return False;
+			result = False;
+			goto done;
 		}
 
 		if( rank > 0 ) {
 			for( r_i = 0; r_i < remPerSide; r_i++ ) {
 				if( sync->remotes[r_i] != remotes[r_i] ) {
-					FreeArray( remotes );
-					FreeObject( sync );
-					FreeObject( decomp );
-					return False;
+					result = False;
+					goto done;
 				}
 			}
 		}
@@ -113,68 +160,48 @@
 				unsigned	ind = r_i + ((rank > 0) ? remPerSide : 0);
 
 				if( sync->remotes[ind] != remotes[ind] ) {
-					FreeArray( remotes );
-					FreeObject( sync );
-					FreeObject( decomp );
-					return False;
+					result = False;
+					goto done;
 				}
 			}
 		}
 	}
 
+done:
+	FreeArray( locals );
 	FreeArray( remotes );
 	FreeObject( sync );
 	FreeObject( decomp );
 
-	return True;
+	return result;
 }
 
 Bool testSnkSrc( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
 	Decomp*		decomp;
 	Decomp_Sync*	sync;
-	unsigned	nLocals = 100;
-	unsigned	remPerSide = nLocals / 10;
-	unsigned	nRemotes = remPerSide * ((rank > 0 && rank < nProcs - 1) ? 2 : 1) * ((nProcs > 1) ? 1 : 0);
-	unsigned*	remotes;
-	unsigned	r_i;
+	unsigned	remPerSide;
+	unsigned	nRemotes, *remotes;
+	unsigned	nLocals, *locals;
 
-	decomp = buildDecomp( rank, nProcs, nLocals );
-	sync = Decomp_Sync_New( "" );
-	Decomp_Sync_SetDecomp( sync, decomp );
+	sync = buildSync( rank, nProcs, 
+			  &decomp, &nLocals, &locals, 
+			  &remPerSide, &nRemotes, &remotes );
 
-	if( nRemotes ) {
-		remotes = Memory_Alloc_Array_Unnamed( unsigned, nRemotes );
-		if( rank > 0 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ )
-				remotes[r_i] = rank * nLocals - remPerSide + r_i;
-		}
-		if( rank < nProcs - 1 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ ) {
-				unsigned	ind = r_i + ((rank > 0) ? remPerSide : 0);
-
-				remotes[ind] = (rank + 1) * nLocals + r_i;
-			}
-		}
-	}
-	else
-		remotes = NULL;
-
-	Decomp_Sync_SetRemotes( sync, nRemotes, remotes );
-
 	if( rank == watch ) {
 		if( sync->netSnks != nRemotes || sync->netSrcs != nRemotes ) {
-			FreeArray( remotes );
-			FreeObject( sync );
-			FreeObject( decomp );
-			return False;
+			result = False;
+			goto done;
 		}
 	}
 
+done:
+	FreeArray( locals );
 	FreeArray( remotes );
 	FreeObject( sync );
 	FreeObject( decomp );
 
-	return True;
+	return result;
 }
 
 typedef struct {
@@ -184,50 +211,32 @@
 } theStruct;
 
 Bool testArrays( unsigned rank, unsigned nProcs, unsigned watch ) {
-	Decomp*		decomp;
-	Decomp_Sync*	sync;
-	unsigned	nLocals = 100;
-	unsigned	remPerSide = nLocals / 10;
-	unsigned	nRemotes = remPerSide * ((rank > 0 && rank < nProcs - 1) ? 2 : 1) * ((nProcs > 1) ? 1 : 0);
-	unsigned*	remotes;
-	int*		intLocals;
-	int*		intRemotes;
-	theStruct*	structLocals;
-	theStruct*	structRemotes;
-	unsigned	r_i;
+	Bool			result = True;
+	Decomp*			decomp;
+	Decomp_Sync*		sync;
+	unsigned		remPerSide;
+	unsigned		nRemotes, *remotes;
+	unsigned		nLocals, *locals;
+	Decomp_Sync_Array*	arrays[2];
+	int			*intLocals, *intRemotes;
+	theStruct		*structLocals, *structRemotes;
+	unsigned		r_i;
 
-	decomp = buildDecomp( rank, nProcs, nLocals );
-	sync = Decomp_Sync_New( "" );
-	Decomp_Sync_SetDecomp( sync, decomp );
+	sync = buildSync( rank, nProcs, 
+			  &decomp, &nLocals, &locals, 
+			  &remPerSide, &nRemotes, &remotes );
 
-	if( nRemotes ) {
-		remotes = Memory_Alloc_Array_Unnamed( unsigned, nRemotes );
-		if( rank > 0 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ )
-				remotes[r_i] = rank * nLocals - remPerSide + r_i;
-		}
-		if( rank < nProcs - 1 ) {
-			for( r_i = 0; r_i < remPerSide; r_i++ ) {
-				unsigned	ind = r_i + ((rank > 0) ? remPerSide : 0);
-
-				remotes[ind] = (rank + 1) * nLocals + r_i;
-			}
-		}
-	}
-	else
-		remotes = NULL;
-
 	if( nLocals ) {
-		intLocals = Memory_Alloc_Array_Unnamed( int, nLocals );
-		structLocals = Memory_Alloc_Array_Unnamed( theStruct, nLocals );
+		intLocals = AllocArray( int, nLocals );
+		structLocals = AllocArray( theStruct, nLocals );
 	}
 	else {
 		intLocals = NULL;
 		structLocals = NULL;
 	}
 	if( nRemotes ) {
-		intRemotes = Memory_Alloc_Array_Unnamed( int, nRemotes );
-		structRemotes = Memory_Alloc_Array_Unnamed( theStruct, nRemotes );
+		intRemotes = AllocArray( int, nRemotes );
+		structRemotes = AllocArray( theStruct, nRemotes );
 	}
 	else {
 		intRemotes = NULL;
@@ -246,16 +255,18 @@
 		structRemotes[r_i].three = -rank;
 	}
 
-	Decomp_Sync_SetRemotes( sync, nRemotes, remotes );
-	Decomp_Sync_AddArray( sync, intLocals, intRemotes, sizeof(int), sizeof(int), sizeof(int) );
-	Decomp_Sync_AddArray( sync, &structLocals[0].two, &structRemotes[0].two, 
-			      sizeof(theStruct), sizeof(theStruct), sizeof(int) );
-	Decomp_Sync_Sync( sync );
+	arrays[0] = Decomp_Sync_Array_New();
+	Decomp_Sync_Array_SetSync( arrays[0], sync );
+	Decomp_Sync_Array_SetMemory( arrays[0], intLocals, intRemotes, sizeof(int), sizeof(int), sizeof(int) );
 
-	FreeArray( remotes );
-	FreeObject( sync );
-	FreeObject( decomp );
+	arrays[1] = Decomp_Sync_Array_New();
+	Decomp_Sync_Array_SetSync( arrays[1], sync );
+	Decomp_Sync_Array_SetMemory( arrays[1], &structLocals[0].two, &structRemotes[0].two, 
+				     sizeof(theStruct), sizeof(theStruct), sizeof(int) );
 
+	Decomp_Sync_Array_Sync( arrays[0] );
+	Decomp_Sync_Array_Sync( arrays[1] );
+
 	if( rank == watch ) {
 		for( r_i = 0; r_i < nLocals; r_i++ ) {
 			if( intLocals[r_i] != rank || structLocals[r_i].two != rank || 
@@ -265,11 +276,8 @@
 			}
 		}
 		if( r_i < nLocals ) {
-			FreeArray( intLocals );
-			FreeArray( intRemotes );
-			FreeArray( structLocals );
-			FreeArray( structRemotes );
-			return False;
+			result = False;
+			goto done;
 		}
 
 		if( rank > 0 ) {
@@ -281,11 +289,8 @@
 				}
 			}
 			if( r_i < remPerSide ) {
-				FreeArray( intLocals );
-				FreeArray( intRemotes );
-				FreeArray( structLocals );
-				FreeArray( structRemotes );
-				return False;
+				result = False;
+				goto done;
 			}
 		}
 		if( rank < nProcs - 1 ) {
@@ -299,76 +304,99 @@
 				}
 			}
 			if( r_i < remPerSide ) {
-				FreeArray( intLocals );
-				FreeArray( intRemotes );
-				FreeArray( structLocals );
-				FreeArray( structRemotes );
-				return False;
+				result = False;
+				goto done;
 			}
 		}
 	}
 
+done:
 	FreeArray( intLocals );
 	FreeArray( intRemotes );
 	FreeArray( structLocals );
 	FreeArray( structRemotes );
+	FreeArray( locals );
+	FreeArray( remotes );
+	FreeObject( arrays[0] );
+	FreeObject( arrays[1] );
+	FreeObject( sync );
+	FreeObject( decomp );
 
-	return True;
+	return result;
 }
 
 Bool testClaim( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
+	Decomposer*	decomposer;
 	Decomp*		decomp;
 	Decomp_Sync*	sync;
 	unsigned	nRequired;
 	unsigned*	required;
 
 	buildRequired( rank, nProcs, &nRequired, &required );
-	decomp = Decomp_New( "" );
-	sync = Decomp_Sync_New( "" );
-	Decomp_Sync_SetDecomp( sync, decomp );
-	Decomp_Sync_Decompose( sync, nRequired, required );
+	decomposer = Decomposer_New();
+	decomp = NULL;
+	sync = NULL;
+	Decomposer_Decompose( decomposer, nRequired, required, 
+			      NULL, &decomp, &sync );
 
 	if( rank == watch ) {
+		if( Decomp_Sync_GetGlobalSize( sync ) != nProcs * nRequired - (nProcs - 1) * 10 ) {
+			result = False;
+			goto done;
+		}
+
+		if( rank == 0 ) {
+			if( Decomp_Sync_GetLocalSize( sync ) != nRequired || 
+			    Decomp_Sync_GetRemoteSize( sync ) != 0 || 
+			    Decomp_Sync_GetDomainSize( sync ) != nRequired || 
+			    (nProcs > 1 && Decomp_Sync_GetSharedSize( sync ) != 10) )
+			{
+				result = False;
+				goto done;
+			}
+		}
+		else if( rank == nProcs - 1 ) {
+			if( Decomp_Sync_GetLocalSize( sync ) != nRequired - 10 || 
+			    Decomp_Sync_GetRemoteSize( sync ) != 10 || 
+			    Decomp_Sync_GetDomainSize( sync ) != nRequired || 
+			    Decomp_Sync_GetSharedSize( sync ) != 0 )
+			{
+				result = False;
+				goto done;
+			}
+		}
+		else {
+			if( Decomp_Sync_GetLocalSize( sync ) != nRequired - 10 || 
+			    Decomp_Sync_GetRemoteSize( sync ) != 10 || 
+			    Decomp_Sync_GetDomainSize( sync ) != nRequired || 
+			    Decomp_Sync_GetSharedSize( sync ) != 10 )
+			{
+				result = False;
+				goto done;
+			}
+		}
 	}
 
+done:
 	FreeArray( required );
 	FreeObject( sync );
 	FreeObject( decomp );
+	FreeObject( decomposer );
 
-	return True;
+	return result;
 }
 
 
-Decomp* buildDecomp( unsigned rank, unsigned nProcs, unsigned nLocals ) {
-	Decomp*		decomp = Decomp_New( "" );
-	unsigned*	locals;
-	unsigned	l_i;
+#define nTests	4
 
-	locals = Memory_Alloc_Array_Unnamed( unsigned, nLocals );
-	for( l_i = 0; l_i < nLocals; l_i++ )
-		locals[l_i] = rank * nLocals + l_i;
-	Decomp_SetLocals( decomp, nLocals, locals );
+TestSuite*	suite;
+TestSuite_Test	tests[nTests] = {{"set remotes", testRemotes, 10}, 
+				 {"sink/sources", testSnkSrc, 10}, 
+				 {"arrays", testArrays, 10}, 
+				 {"claim", testClaim, 10}};
 
-	FreeArray( locals );
 
-	return decomp;
-}
-
-void buildRequired( unsigned rank, unsigned nProcs, 
-		    unsigned* nRequired, unsigned** required )
-{
-	unsigned	start;
-	unsigned	r_i;
-
-	*nRequired = 100;
-	*required = Memory_Alloc_Array_Unnamed( unsigned, *nRequired );
-	start = rank * (*nRequired - 10);
-
-	for( r_i = 0; r_i < *nRequired; r_i++ )
-		(*required)[r_i] = start + r_i;
-}
-
-
 int main( int argc, char* argv[] ) {
 	/* Initialise MPI, get world info. */
 	MPI_Init( &argc, &argv );

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,161 +0,0 @@
-Element corner indices:
-	Element 0 : { 0, 1, 5, 4, 16, 17, 21, 20 }
-	Element 1 : { 1, 2, 6, 5, 17, 18, 22, 21 }
-	Element 2 : { 2, 3, 7, 6, 18, 19, 23, 22 }
-	Element 3 : { 4, 5, 9, 8, 20, 21, 25, 24 }
-	Element 4 : { 5, 6, 10, 9, 21, 22, 26, 25 }
-	Element 5 : { 6, 7, 11, 10, 22, 23, 27, 26 }
-	Element 6 : { 8, 9, 13, 12, 24, 25, 29, 28 }
-	Element 7 : { 9, 10, 14, 13, 25, 26, 30, 29 }
-	Element 8 : { 10, 11, 15, 14, 26, 27, 31, 30 }
-	Element 9 : { 16, 17, 21, 20, 32, 33, 37, 36 }
-	Element 10 : { 17, 18, 22, 21, 33, 34, 38, 37 }
-	Element 11 : { 18, 19, 23, 22, 34, 35, 39, 38 }
-	Element 12 : { 20, 21, 25, 24, 36, 37, 41, 40 }
-	Element 13 : { 21, 22, 26, 25, 37, 38, 42, 41 }
-	Element 14 : { 22, 23, 27, 26, 38, 39, 43, 42 }
-	Element 15 : { 24, 25, 29, 28, 40, 41, 45, 44 }
-	Element 16 : { 25, 26, 30, 29, 41, 42, 46, 45 }
-	Element 17 : { 26, 27, 31, 30, 42, 43, 47, 46 }
-	Element 18 : { 32, 33, 37, 36, 48, 49, 53, 52 }
-	Element 19 : { 33, 34, 38, 37, 49, 50, 54, 53 }
-	Element 20 : { 34, 35, 39, 38, 50, 51, 55, 54 }
-	Element 21 : { 36, 37, 41, 40, 52, 53, 57, 56 }
-	Element 22 : { 37, 38, 42, 41, 53, 54, 58, 57 }
-	Element 23 : { 38, 39, 43, 42, 54, 55, 59, 58 }
-	Element 24 : { 40, 41, 45, 44, 56, 57, 61, 60 }
-	Element 25 : { 41, 42, 46, 45, 57, 58, 62, 61 }
-	Element 26 : { 42, 43, 47, 46, 58, 59, 63, 62 }
-
-Corner element indices:
-	Corner 0 : { 27, 27, 27, 27, 27, 27, 27, 0 }
-	Corner 1 : { 27, 27, 27, 27, 27, 27, 0, 1 }
-	Corner 2 : { 27, 27, 27, 27, 27, 27, 1, 2 }
-	Corner 3 : { 27, 27, 27, 27, 27, 27, 2, 27 }
-	Corner 4 : { 27, 27, 27, 27, 27, 0, 27, 3 }
-	Corner 5 : { 27, 27, 27, 27, 0, 1, 3, 4 }
-	Corner 6 : { 27, 27, 27, 27, 1, 2, 4, 5 }
-	Corner 7 : { 27, 27, 27, 27, 2, 27, 5, 27 }
-	Corner 8 : { 27, 27, 27, 27, 27, 3, 27, 6 }
-	Corner 9 : { 27, 27, 27, 27, 3, 4, 6, 7 }
-	Corner 10 : { 27, 27, 27, 27, 4, 5, 7, 8 }
-	Corner 11 : { 27, 27, 27, 27, 5, 27, 8, 27 }
-	Corner 12 : { 27, 27, 27, 27, 27, 6, 27, 27 }
-	Corner 13 : { 27, 27, 27, 27, 6, 7, 27, 27 }
-	Corner 14 : { 27, 27, 27, 27, 7, 8, 27, 27 }
-	Corner 15 : { 27, 27, 27, 27, 8, 27, 27, 27 }
-	Corner 16 : { 27, 27, 27, 0, 27, 27, 27, 9 }
-	Corner 17 : { 27, 27, 0, 1, 27, 27, 9, 10 }
-	Corner 18 : { 27, 27, 1, 2, 27, 27, 10, 11 }
-	Corner 19 : { 27, 27, 2, 27, 27, 27, 11, 27 }
-	Corner 20 : { 27, 0, 27, 3, 27, 9, 27, 12 }
-	Corner 21 : { 0, 1, 3, 4, 9, 10, 12, 13 }
-	Corner 22 : { 1, 2, 4, 5, 10, 11, 13, 14 }
-	Corner 23 : { 2, 27, 5, 27, 11, 27, 14, 27 }
-	Corner 24 : { 27, 3, 27, 6, 27, 12, 27, 15 }
-	Corner 25 : { 3, 4, 6, 7, 12, 13, 15, 16 }
-	Corner 26 : { 4, 5, 7, 8, 13, 14, 16, 17 }
-	Corner 27 : { 5, 27, 8, 27, 14, 27, 17, 27 }
-	Corner 28 : { 27, 6, 27, 27, 27, 15, 27, 27 }
-	Corner 29 : { 6, 7, 27, 27, 15, 16, 27, 27 }
-	Corner 30 : { 7, 8, 27, 27, 16, 17, 27, 27 }
-	Corner 31 : { 8, 27, 27, 27, 17, 27, 27, 27 }
-	Corner 32 : { 27, 27, 27, 9, 27, 27, 27, 18 }
-	Corner 33 : { 27, 27, 9, 10, 27, 27, 18, 19 }
-	Corner 34 : { 27, 27, 10, 11, 27, 27, 19, 20 }
-	Corner 35 : { 27, 27, 11, 27, 27, 27, 20, 27 }
-	Corner 36 : { 27, 9, 27, 12, 27, 18, 27, 21 }
-	Corner 37 : { 9, 10, 12, 13, 18, 19, 21, 22 }
-	Corner 38 : { 10, 11, 13, 14, 19, 20, 22, 23 }
-	Corner 39 : { 11, 27, 14, 27, 20, 27, 23, 27 }
-	Corner 40 : { 27, 12, 27, 15, 27, 21, 27, 24 }
-	Corner 41 : { 12, 13, 15, 16, 21, 22, 24, 25 }
-	Corner 42 : { 13, 14, 16, 17, 22, 23, 25, 26 }
-	Corner 43 : { 14, 27, 17, 27, 23, 27, 26, 27 }
-	Corner 44 : { 27, 15, 27, 27, 27, 24, 27, 27 }
-	Corner 45 : { 15, 16, 27, 27, 24, 25, 27, 27 }
-	Corner 46 : { 16, 17, 27, 27, 25, 26, 27, 27 }
-	Corner 47 : { 17, 27, 27, 27, 26, 27, 27, 27 }
-	Corner 48 : { 27, 27, 27, 18, 27, 27, 27, 27 }
-	Corner 49 : { 27, 27, 18, 19, 27, 27, 27, 27 }
-	Corner 50 : { 27, 27, 19, 20, 27, 27, 27, 27 }
-	Corner 51 : { 27, 27, 20, 27, 27, 27, 27, 27 }
-	Corner 52 : { 27, 18, 27, 21, 27, 27, 27, 27 }
-	Corner 53 : { 18, 19, 21, 22, 27, 27, 27, 27 }
-	Corner 54 : { 19, 20, 22, 23, 27, 27, 27, 27 }
-	Corner 55 : { 20, 27, 23, 27, 27, 27, 27, 27 }
-	Corner 56 : { 27, 21, 27, 24, 27, 27, 27, 27 }
-	Corner 57 : { 21, 22, 24, 25, 27, 27, 27, 27 }
-	Corner 58 : { 22, 23, 25, 26, 27, 27, 27, 27 }
-	Corner 59 : { 23, 27, 26, 27, 27, 27, 27, 27 }
-	Corner 60 : { 27, 24, 27, 27, 27, 27, 27, 27 }
-	Corner 61 : { 24, 25, 27, 27, 27, 27, 27, 27 }
-	Corner 62 : { 25, 26, 27, 27, 27, 27, 27, 27 }
-	Corner 63 : { 26, 27, 27, 27, 27, 27, 27, 27 }
-
-Element with point:
-	Point 0 : 0
-	Point 1 : 1
-	Point 2 : 2
-	Point 3 : 27
-	Point 4 : 3
-	Point 5 : 4
-	Point 6 : 5
-	Point 7 : 27
-	Point 8 : 6
-	Point 9 : 7
-	Point 10 : 8
-	Point 11 : 27
-	Point 12 : 27
-	Point 13 : 27
-	Point 14 : 27
-	Point 15 : 27
-	Point 16 : 9
-	Point 17 : 10
-	Point 18 : 11
-	Point 19 : 27
-	Point 20 : 12
-	Point 21 : 13
-	Point 22 : 14
-	Point 23 : 27
-	Point 24 : 15
-	Point 25 : 16
-	Point 26 : 17
-	Point 27 : 27
-	Point 28 : 27
-	Point 29 : 27
-	Point 30 : 27
-	Point 31 : 27
-	Point 32 : 18
-	Point 33 : 19
-	Point 34 : 20
-	Point 35 : 27
-	Point 36 : 21
-	Point 37 : 22
-	Point 38 : 23
-	Point 39 : 27
-	Point 40 : 24
-	Point 41 : 25
-	Point 42 : 26
-	Point 43 : 27
-	Point 44 : 27
-	Point 45 : 27
-	Point 46 : 27
-	Point 47 : 27
-	Point 48 : 27
-	Point 49 : 27
-	Point 50 : 27
-	Point 51 : 27
-	Point 52 : 27
-	Point 53 : 27
-	Point 54 : 27
-	Point 55 : 27
-	Point 56 : 27
-	Point 57 : 27
-	Point 58 : 27
-	Point 59 : 27
-	Point 60 : 27
-	Point 61 : 27
-	Point 62 : 27
-	Point 63 : 27
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,139 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	Dictionary*		dictionary;
-	Geometry*		geometry;
-	ElementLayout*		eLayout;
-	Topology*		nTopology;
-	NodeLayout*		nLayout;
-	HexaMD*			meshDecomp;
-	Element_GlobalIndex	e_I;
-	Index			i;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	
-	geometry = (Geometry*)BlockGeometry_New( "blockGeometry", dictionary );
-	eLayout = (ElementLayout*)HexaEL_New( "HexaEL", 3, dictionary, geometry );
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	meshDecomp = HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	
-	ElementLayout_Build( eLayout, meshDecomp );
-	
-	printf( "Element corner indices:\n" );
-	for( e_I = 0; e_I < eLayout->elementCount; e_I++ ) {
-		Index* corners = Memory_Alloc_Array( Index, eLayout->elementCornerCount, "corners" );
-		
-		eLayout->buildCornerIndices( eLayout, e_I, corners );
-		
-		printf( "\tElement %u : { %u", e_I, corners[0] );
-		for( i = 1; i < eLayout->elementCornerCount; i++ )
-			printf( ", %u", corners[i] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	printf( "Corner element indices:\n" );
-	for( i = 0; i < eLayout->cornerCount; i++ ) {
-		Element_GlobalIndex	elementCnt = eLayout->cornerElementCount( eLayout, i );
-		Element_GlobalIndex*	elements = Memory_Alloc_Array( Element_GlobalIndex, elementCnt, "elements" );
-		
-		eLayout->buildCornerElements( eLayout, i, elements );
-		
-		printf( "\tCorner %u : { %u", i, elements[0] );
-		for( e_I = 1; e_I < elementCnt; e_I++ )
-			printf( ", %u", elements[e_I] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	printf( "Element with point:\n" );
-	for( i = 0; i < geometry->pointCount; i++ ) {
-		Coord point;
-		
-		geometry->pointAt( geometry, i, point );
-		point[0] += 0.1;
-		point[1] += 0.1;
-		point[2] += 0.1;
-		
-		printf( "\tPoint %u : %u\n", i, eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-									   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL ) );
-	}
-	printf( "\n" );
-	
-	Stg_Class_Delete( dictionary );
-	Stg_Class_Delete( meshDecomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( geometry );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,485 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061cb0)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 16
-Element, global: 3 - local: X - shadow: 1 - domain: 17
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 2 - domain: 18
-Element, global: 7 - local: X - shadow: 3 - domain: 19
-Element, global: 8 - local: X - shadow: 4 - domain: 20
-Element, global: 9 - local: X - shadow: 5 - domain: 21
-Element, global: 10 - local: X - shadow: 6 - domain: 22
-Element, global: 11 - local: X - shadow: 7 - domain: 23
-Element, global: 12 - local: X - shadow: 8 - domain: 24
-Element, global: 13 - local: X - shadow: 9 - domain: 25
-Element, global: 14 - local: X - shadow: 10 - domain: 26
-Element, global: 15 - local: X - shadow: 11 - domain: 27
-Element, global: 16 - local: 4 - shadow: X - domain: 4
-Element, global: 17 - local: 5 - shadow: X - domain: 5
-Element, global: 18 - local: X - shadow: 12 - domain: 28
-Element, global: 19 - local: X - shadow: 13 - domain: 29
-Element, global: 20 - local: 6 - shadow: X - domain: 6
-Element, global: 21 - local: 7 - shadow: X - domain: 7
-Element, global: 22 - local: X - shadow: 14 - domain: 30
-Element, global: 23 - local: X - shadow: 15 - domain: 31
-Element, global: 24 - local: X - shadow: 16 - domain: 32
-Element, global: 25 - local: X - shadow: 17 - domain: 33
-Element, global: 26 - local: X - shadow: 18 - domain: 34
-Element, global: 27 - local: X - shadow: 19 - domain: 35
-Element, global: 28 - local: X - shadow: 20 - domain: 36
-Element, global: 29 - local: X - shadow: 21 - domain: 37
-Element, global: 30 - local: X - shadow: 22 - domain: 38
-Element, global: 31 - local: X - shadow: 23 - domain: 39
-Element, global: 32 - local: 8 - shadow: X - domain: 8
-Element, global: 33 - local: 9 - shadow: X - domain: 9
-Element, global: 34 - local: X - shadow: 24 - domain: 40
-Element, global: 35 - local: X - shadow: 25 - domain: 41
-Element, global: 36 - local: 10 - shadow: X - domain: 10
-Element, global: 37 - local: 11 - shadow: X - domain: 11
-Element, global: 38 - local: X - shadow: 26 - domain: 42
-Element, global: 39 - local: X - shadow: 27 - domain: 43
-Element, global: 40 - local: X - shadow: 28 - domain: 44
-Element, global: 41 - local: X - shadow: 29 - domain: 45
-Element, global: 42 - local: X - shadow: 30 - domain: 46
-Element, global: 43 - local: X - shadow: 31 - domain: 47
-Element, global: 44 - local: X - shadow: 32 - domain: 48
-Element, global: 45 - local: X - shadow: 33 - domain: 49
-Element, global: 46 - local: X - shadow: 34 - domain: 50
-Element, global: 47 - local: X - shadow: 35 - domain: 51
-Element, global: 48 - local: 12 - shadow: X - domain: 12
-Element, global: 49 - local: 13 - shadow: X - domain: 13
-Element, global: 50 - local: X - shadow: 36 - domain: 52
-Element, global: 51 - local: X - shadow: 37 - domain: 53
-Element, global: 52 - local: 14 - shadow: X - domain: 14
-Element, global: 53 - local: 15 - shadow: X - domain: 15
-Element, global: 54 - local: X - shadow: 38 - domain: 54
-Element, global: 55 - local: X - shadow: 39 - domain: 55
-Element, global: 56 - local: X - shadow: 40 - domain: 56
-Element, global: 57 - local: X - shadow: 41 - domain: 57
-Element, global: 58 - local: X - shadow: 42 - domain: 58
-Element, global: 59 - local: X - shadow: 43 - domain: 59
-Element, global: 60 - local: X - shadow: 44 - domain: 60
-Element, global: 61 - local: X - shadow: 45 - domain: 61
-Element, global: 62 - local: X - shadow: 46 - domain: 62
-Element, global: 63 - local: X - shadow: 47 - domain: 63
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 16
-Element, local: 5 - global: 17
-Element, local: 6 - global: 20
-Element, local: 7 - global: 21
-Element, local: 8 - global: 32
-Element, local: 9 - global: 33
-Element, local: 10 - global: 36
-Element, local: 11 - global: 37
-Element, local: 12 - global: 48
-Element, local: 13 - global: 49
-Element, local: 14 - global: 52
-Element, local: 15 - global: 53
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 16
-Element, domain: 5 - global: 17
-Element, domain: 6 - global: 20
-Element, domain: 7 - global: 21
-Element, domain: 8 - global: 32
-Element, domain: 9 - global: 33
-Element, domain: 10 - global: 36
-Element, domain: 11 - global: 37
-Element, domain: 12 - global: 48
-Element, domain: 13 - global: 49
-Element, domain: 14 - global: 52
-Element, domain: 15 - global: 53
-Element, domain: 16 - global: 2
-Element, domain: 17 - global: 3
-Element, domain: 18 - global: 6
-Element, domain: 19 - global: 7
-Element, domain: 20 - global: 8
-Element, domain: 21 - global: 9
-Element, domain: 22 - global: 10
-Element, domain: 23 - global: 11
-Element, domain: 24 - global: 12
-Element, domain: 25 - global: 13
-Element, domain: 26 - global: 14
-Element, domain: 27 - global: 15
-Element, domain: 28 - global: 18
-Element, domain: 29 - global: 19
-Element, domain: 30 - global: 22
-Element, domain: 31 - global: 23
-Element, domain: 32 - global: 24
-Element, domain: 33 - global: 25
-Element, domain: 34 - global: 26
-Element, domain: 35 - global: 27
-Element, domain: 36 - global: 28
-Element, domain: 37 - global: 29
-Element, domain: 38 - global: 30
-Element, domain: 39 - global: 31
-Element, domain: 40 - global: 34
-Element, domain: 41 - global: 35
-Element, domain: 42 - global: 38
-Element, domain: 43 - global: 39
-Element, domain: 44 - global: 40
-Element, domain: 45 - global: 41
-Element, domain: 46 - global: 42
-Element, domain: 47 - global: 43
-Element, domain: 48 - global: 44
-Element, domain: 49 - global: 45
-Element, domain: 50 - global: 46
-Element, domain: 51 - global: 47
-Element, domain: 52 - global: 50
-Element, domain: 53 - global: 51
-Element, domain: 54 - global: 54
-Element, domain: 55 - global: 55
-Element, domain: 56 - global: 56
-Element, domain: 57 - global: 57
-Element, domain: 58 - global: 58
-Element, domain: 59 - global: 59
-Element, domain: 60 - global: 60
-Element, domain: 61 - global: 61
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 45
-Node, global: 4 - local: X - shadow: 1 - domain: 46
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 2 - domain: 47
-Node, global: 9 - local: X - shadow: 3 - domain: 48
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 4 - domain: 49
-Node, global: 14 - local: X - shadow: 5 - domain: 50
-Node, global: 15 - local: X - shadow: 6 - domain: 51
-Node, global: 16 - local: X - shadow: 7 - domain: 52
-Node, global: 17 - local: X - shadow: 8 - domain: 53
-Node, global: 18 - local: X - shadow: 9 - domain: 54
-Node, global: 19 - local: X - shadow: 10 - domain: 55
-Node, global: 20 - local: X - shadow: 11 - domain: 56
-Node, global: 21 - local: X - shadow: 12 - domain: 57
-Node, global: 22 - local: X - shadow: 13 - domain: 58
-Node, global: 23 - local: X - shadow: 14 - domain: 59
-Node, global: 24 - local: X - shadow: 15 - domain: 60
-Node, global: 25 - local: 9 - shadow: X - domain: 9
-Node, global: 26 - local: 10 - shadow: X - domain: 10
-Node, global: 27 - local: 11 - shadow: X - domain: 11
-Node, global: 28 - local: X - shadow: 16 - domain: 61
-Node, global: 29 - local: X - shadow: 17 - domain: 62
-Node, global: 30 - local: 12 - shadow: X - domain: 12
-Node, global: 31 - local: 13 - shadow: X - domain: 13
-Node, global: 32 - local: 14 - shadow: X - domain: 14
-Node, global: 33 - local: X - shadow: 18 - domain: 63
-Node, global: 34 - local: X - shadow: 19 - domain: 64
-Node, global: 35 - local: 15 - shadow: X - domain: 15
-Node, global: 36 - local: 16 - shadow: X - domain: 16
-Node, global: 37 - local: 17 - shadow: X - domain: 17
-Node, global: 38 - local: X - shadow: 20 - domain: 65
-Node, global: 39 - local: X - shadow: 21 - domain: 66
-Node, global: 40 - local: X - shadow: 22 - domain: 67
-Node, global: 41 - local: X - shadow: 23 - domain: 68
-Node, global: 42 - local: X - shadow: 24 - domain: 69
-Node, global: 43 - local: X - shadow: 25 - domain: 70
-Node, global: 44 - local: X - shadow: 26 - domain: 71
-Node, global: 45 - local: X - shadow: 27 - domain: 72
-Node, global: 46 - local: X - shadow: 28 - domain: 73
-Node, global: 47 - local: X - shadow: 29 - domain: 74
-Node, global: 48 - local: X - shadow: 30 - domain: 75
-Node, global: 49 - local: X - shadow: 31 - domain: 76
-Node, global: 50 - local: 18 - shadow: X - domain: 18
-Node, global: 51 - local: 19 - shadow: X - domain: 19
-Node, global: 52 - local: 20 - shadow: X - domain: 20
-Node, global: 53 - local: X - shadow: 32 - domain: 77
-Node, global: 54 - local: X - shadow: 33 - domain: 78
-Node, global: 55 - local: 21 - shadow: X - domain: 21
-Node, global: 56 - local: 22 - shadow: X - domain: 22
-Node, global: 57 - local: 23 - shadow: X - domain: 23
-Node, global: 58 - local: X - shadow: 34 - domain: 79
-Node, global: 59 - local: X - shadow: 35 - domain: 80
-Node, global: 60 - local: 24 - shadow: X - domain: 24
-Node, global: 61 - local: 25 - shadow: X - domain: 25
-Node, global: 62 - local: 26 - shadow: X - domain: 26
-Node, global: 63 - local: X - shadow: 36 - domain: 81
-Node, global: 64 - local: X - shadow: 37 - domain: 82
-Node, global: 65 - local: X - shadow: 38 - domain: 83
-Node, global: 66 - local: X - shadow: 39 - domain: 84
-Node, global: 67 - local: X - shadow: 40 - domain: 85
-Node, global: 68 - local: X - shadow: 41 - domain: 86
-Node, global: 69 - local: X - shadow: 42 - domain: 87
-Node, global: 70 - local: X - shadow: 43 - domain: 88
-Node, global: 71 - local: X - shadow: 44 - domain: 89
-Node, global: 72 - local: X - shadow: 45 - domain: 90
-Node, global: 73 - local: X - shadow: 46 - domain: 91
-Node, global: 74 - local: X - shadow: 47 - domain: 92
-Node, global: 75 - local: 27 - shadow: X - domain: 27
-Node, global: 76 - local: 28 - shadow: X - domain: 28
-Node, global: 77 - local: 29 - shadow: X - domain: 29
-Node, global: 78 - local: X - shadow: 48 - domain: 93
-Node, global: 79 - local: X - shadow: 49 - domain: 94
-Node, global: 80 - local: 30 - shadow: X - domain: 30
-Node, global: 81 - local: 31 - shadow: X - domain: 31
-Node, global: 82 - local: 32 - shadow: X - domain: 32
-Node, global: 83 - local: X - shadow: 50 - domain: 95
-Node, global: 84 - local: X - shadow: 51 - domain: 96
-Node, global: 85 - local: 33 - shadow: X - domain: 33
-Node, global: 86 - local: 34 - shadow: X - domain: 34
-Node, global: 87 - local: 35 - shadow: X - domain: 35
-Node, global: 88 - local: X - shadow: 52 - domain: 97
-Node, global: 89 - local: X - shadow: 53 - domain: 98
-Node, global: 90 - local: X - shadow: 54 - domain: 99
-Node, global: 91 - local: X - shadow: 55 - domain: 100
-Node, global: 92 - local: X - shadow: 56 - domain: 101
-Node, global: 93 - local: X - shadow: 57 - domain: 102
-Node, global: 94 - local: X - shadow: 58 - domain: 103
-Node, global: 95 - local: X - shadow: 59 - domain: 104
-Node, global: 96 - local: X - shadow: 60 - domain: 105
-Node, global: 97 - local: X - shadow: 61 - domain: 106
-Node, global: 98 - local: X - shadow: 62 - domain: 107
-Node, global: 99 - local: X - shadow: 63 - domain: 108
-Node, global: 100 - local: 36 - shadow: X - domain: 36
-Node, global: 101 - local: 37 - shadow: X - domain: 37
-Node, global: 102 - local: 38 - shadow: X - domain: 38
-Node, global: 103 - local: X - shadow: 64 - domain: 109
-Node, global: 104 - local: X - shadow: 65 - domain: 110
-Node, global: 105 - local: 39 - shadow: X - domain: 39
-Node, global: 106 - local: 40 - shadow: X - domain: 40
-Node, global: 107 - local: 41 - shadow: X - domain: 41
-Node, global: 108 - local: X - shadow: 66 - domain: 111
-Node, global: 109 - local: X - shadow: 67 - domain: 112
-Node, global: 110 - local: 42 - shadow: X - domain: 42
-Node, global: 111 - local: 43 - shadow: X - domain: 43
-Node, global: 112 - local: 44 - shadow: X - domain: 44
-Node, global: 113 - local: X - shadow: 68 - domain: 113
-Node, global: 114 - local: X - shadow: 69 - domain: 114
-Node, global: 115 - local: X - shadow: 70 - domain: 115
-Node, global: 116 - local: X - shadow: 71 - domain: 116
-Node, global: 117 - local: X - shadow: 72 - domain: 117
-Node, global: 118 - local: X - shadow: 73 - domain: 118
-Node, global: 119 - local: X - shadow: 74 - domain: 119
-Node, global: 120 - local: X - shadow: 75 - domain: 120
-Node, global: 121 - local: X - shadow: 76 - domain: 121
-Node, global: 122 - local: X - shadow: 77 - domain: 122
-Node, global: 123 - local: X - shadow: 78 - domain: 123
-Node, global: 124 - local: X - shadow: 79 - domain: 124
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 25
-Node, local: 10 - global: 26
-Node, local: 11 - global: 27
-Node, local: 12 - global: 30
-Node, local: 13 - global: 31
-Node, local: 14 - global: 32
-Node, local: 15 - global: 35
-Node, local: 16 - global: 36
-Node, local: 17 - global: 37
-Node, local: 18 - global: 50
-Node, local: 19 - global: 51
-Node, local: 20 - global: 52
-Node, local: 21 - global: 55
-Node, local: 22 - global: 56
-Node, local: 23 - global: 57
-Node, local: 24 - global: 60
-Node, local: 25 - global: 61
-Node, local: 26 - global: 62
-Node, local: 27 - global: 75
-Node, local: 28 - global: 76
-Node, local: 29 - global: 77
-Node, local: 30 - global: 80
-Node, local: 31 - global: 81
-Node, local: 32 - global: 82
-Node, local: 33 - global: 85
-Node, local: 34 - global: 86
-Node, local: 35 - global: 87
-Node, local: 36 - global: 100
-Node, local: 37 - global: 101
-Node, local: 38 - global: 102
-Node, local: 39 - global: 105
-Node, local: 40 - global: 106
-Node, local: 41 - global: 107
-Node, local: 42 - global: 110
-Node, local: 43 - global: 111
-Node, local: 44 - global: 112
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 25
-Node, domain: 10 - global: 26
-Node, domain: 11 - global: 27
-Node, domain: 12 - global: 30
-Node, domain: 13 - global: 31
-Node, domain: 14 - global: 32
-Node, domain: 15 - global: 35
-Node, domain: 16 - global: 36
-Node, domain: 17 - global: 37
-Node, domain: 18 - global: 50
-Node, domain: 19 - global: 51
-Node, domain: 20 - global: 52
-Node, domain: 21 - global: 55
-Node, domain: 22 - global: 56
-Node, domain: 23 - global: 57
-Node, domain: 24 - global: 60
-Node, domain: 25 - global: 61
-Node, domain: 26 - global: 62
-Node, domain: 27 - global: 75
-Node, domain: 28 - global: 76
-Node, domain: 29 - global: 77
-Node, domain: 30 - global: 80
-Node, domain: 31 - global: 81
-Node, domain: 32 - global: 82
-Node, domain: 33 - global: 85
-Node, domain: 34 - global: 86
-Node, domain: 35 - global: 87
-Node, domain: 36 - global: 100
-Node, domain: 37 - global: 101
-Node, domain: 38 - global: 102
-Node, domain: 39 - global: 105
-Node, domain: 40 - global: 106
-Node, domain: 41 - global: 107
-Node, domain: 42 - global: 110
-Node, domain: 43 - global: 111
-Node, domain: 44 - global: 112
-Node, domain: 45 - global: 3
-Node, domain: 46 - global: 4
-Node, domain: 47 - global: 8
-Node, domain: 48 - global: 9
-Node, domain: 49 - global: 13
-Node, domain: 50 - global: 14
-Node, domain: 51 - global: 15
-Node, domain: 52 - global: 16
-Node, domain: 53 - global: 17
-Node, domain: 54 - global: 18
-Node, domain: 55 - global: 19
-Node, domain: 56 - global: 20
-Node, domain: 57 - global: 21
-Node, domain: 58 - global: 22
-Node, domain: 59 - global: 23
-Node, domain: 60 - global: 24
-Node, domain: 61 - global: 28
-Node, domain: 62 - global: 29
-Node, domain: 63 - global: 33
-Node, domain: 64 - global: 34
-Node, domain: 65 - global: 38
-Node, domain: 66 - global: 39
-Node, domain: 67 - global: 40
-Node, domain: 68 - global: 41
-Node, domain: 69 - global: 42
-Node, domain: 70 - global: 43
-Node, domain: 71 - global: 44
-Node, domain: 72 - global: 45
-Node, domain: 73 - global: 46
-Node, domain: 74 - global: 47
-Node, domain: 75 - global: 48
-Node, domain: 76 - global: 49
-Node, domain: 77 - global: 53
-Node, domain: 78 - global: 54
-Node, domain: 79 - global: 58
-Node, domain: 80 - global: 59
-Node, domain: 81 - global: 63
-Node, domain: 82 - global: 64
-Node, domain: 83 - global: 65
-Node, domain: 84 - global: 66
-Node, domain: 85 - global: 67
-Node, domain: 86 - global: 68
-Node, domain: 87 - global: 69
-Node, domain: 88 - global: 70
-Node, domain: 89 - global: 71
-Node, domain: 90 - global: 72
-Node, domain: 91 - global: 73
-Node, domain: 92 - global: 74
-Node, domain: 93 - global: 78
-Node, domain: 94 - global: 79
-Node, domain: 95 - global: 83
-Node, domain: 96 - global: 84
-Node, domain: 97 - global: 88
-Node, domain: 98 - global: 89
-Node, domain: 99 - global: 90
-Node, domain: 100 - global: 91
-Node, domain: 101 - global: 92
-Node, domain: 102 - global: 93
-Node, domain: 103 - global: 94
-Node, domain: 104 - global: 95
-Node, domain: 105 - global: 96
-Node, domain: 106 - global: 97
-Node, domain: 107 - global: 98
-Node, domain: 108 - global: 99
-Node, domain: 109 - global: 103
-Node, domain: 110 - global: 104
-Node, domain: 111 - global: 108
-Node, domain: 112 - global: 109
-Node, domain: 113 - global: 113
-Node, domain: 114 - global: 114
-Node, domain: 115 - global: 115
-Node, domain: 116 - global: 116
-Node, domain: 117 - global: 117
-Node, domain: 118 - global: 118
-Node, domain: 119 - global: 119
-Node, domain: 120 - global: 120
-Node, domain: 121 - global: 121
-Node, domain: 122 - global: 122
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,485 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060cb0)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 16
-Element, global: 1 - local: X - shadow: 1 - domain: 17
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: 2 - domain: 18
-Element, global: 5 - local: X - shadow: 3 - domain: 19
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: 4 - domain: 20
-Element, global: 9 - local: X - shadow: 5 - domain: 21
-Element, global: 10 - local: X - shadow: 6 - domain: 22
-Element, global: 11 - local: X - shadow: 7 - domain: 23
-Element, global: 12 - local: X - shadow: 8 - domain: 24
-Element, global: 13 - local: X - shadow: 9 - domain: 25
-Element, global: 14 - local: X - shadow: 10 - domain: 26
-Element, global: 15 - local: X - shadow: 11 - domain: 27
-Element, global: 16 - local: X - shadow: 12 - domain: 28
-Element, global: 17 - local: X - shadow: 13 - domain: 29
-Element, global: 18 - local: 4 - shadow: X - domain: 4
-Element, global: 19 - local: 5 - shadow: X - domain: 5
-Element, global: 20 - local: X - shadow: 14 - domain: 30
-Element, global: 21 - local: X - shadow: 15 - domain: 31
-Element, global: 22 - local: 6 - shadow: X - domain: 6
-Element, global: 23 - local: 7 - shadow: X - domain: 7
-Element, global: 24 - local: X - shadow: 16 - domain: 32
-Element, global: 25 - local: X - shadow: 17 - domain: 33
-Element, global: 26 - local: X - shadow: 18 - domain: 34
-Element, global: 27 - local: X - shadow: 19 - domain: 35
-Element, global: 28 - local: X - shadow: 20 - domain: 36
-Element, global: 29 - local: X - shadow: 21 - domain: 37
-Element, global: 30 - local: X - shadow: 22 - domain: 38
-Element, global: 31 - local: X - shadow: 23 - domain: 39
-Element, global: 32 - local: X - shadow: 24 - domain: 40
-Element, global: 33 - local: X - shadow: 25 - domain: 41
-Element, global: 34 - local: 8 - shadow: X - domain: 8
-Element, global: 35 - local: 9 - shadow: X - domain: 9
-Element, global: 36 - local: X - shadow: 26 - domain: 42
-Element, global: 37 - local: X - shadow: 27 - domain: 43
-Element, global: 38 - local: 10 - shadow: X - domain: 10
-Element, global: 39 - local: 11 - shadow: X - domain: 11
-Element, global: 40 - local: X - shadow: 28 - domain: 44
-Element, global: 41 - local: X - shadow: 29 - domain: 45
-Element, global: 42 - local: X - shadow: 30 - domain: 46
-Element, global: 43 - local: X - shadow: 31 - domain: 47
-Element, global: 44 - local: X - shadow: 32 - domain: 48
-Element, global: 45 - local: X - shadow: 33 - domain: 49
-Element, global: 46 - local: X - shadow: 34 - domain: 50
-Element, global: 47 - local: X - shadow: 35 - domain: 51
-Element, global: 48 - local: X - shadow: 36 - domain: 52
-Element, global: 49 - local: X - shadow: 37 - domain: 53
-Element, global: 50 - local: 12 - shadow: X - domain: 12
-Element, global: 51 - local: 13 - shadow: X - domain: 13
-Element, global: 52 - local: X - shadow: 38 - domain: 54
-Element, global: 53 - local: X - shadow: 39 - domain: 55
-Element, global: 54 - local: 14 - shadow: X - domain: 14
-Element, global: 55 - local: 15 - shadow: X - domain: 15
-Element, global: 56 - local: X - shadow: 40 - domain: 56
-Element, global: 57 - local: X - shadow: 41 - domain: 57
-Element, global: 58 - local: X - shadow: 42 - domain: 58
-Element, global: 59 - local: X - shadow: 43 - domain: 59
-Element, global: 60 - local: X - shadow: 44 - domain: 60
-Element, global: 61 - local: X - shadow: 45 - domain: 61
-Element, global: 62 - local: X - shadow: 46 - domain: 62
-Element, global: 63 - local: X - shadow: 47 - domain: 63
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 18
-Element, local: 5 - global: 19
-Element, local: 6 - global: 22
-Element, local: 7 - global: 23
-Element, local: 8 - global: 34
-Element, local: 9 - global: 35
-Element, local: 10 - global: 38
-Element, local: 11 - global: 39
-Element, local: 12 - global: 50
-Element, local: 13 - global: 51
-Element, local: 14 - global: 54
-Element, local: 15 - global: 55
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 18
-Element, domain: 5 - global: 19
-Element, domain: 6 - global: 22
-Element, domain: 7 - global: 23
-Element, domain: 8 - global: 34
-Element, domain: 9 - global: 35
-Element, domain: 10 - global: 38
-Element, domain: 11 - global: 39
-Element, domain: 12 - global: 50
-Element, domain: 13 - global: 51
-Element, domain: 14 - global: 54
-Element, domain: 15 - global: 55
-Element, domain: 16 - global: 0
-Element, domain: 17 - global: 1
-Element, domain: 18 - global: 4
-Element, domain: 19 - global: 5
-Element, domain: 20 - global: 8
-Element, domain: 21 - global: 9
-Element, domain: 22 - global: 10
-Element, domain: 23 - global: 11
-Element, domain: 24 - global: 12
-Element, domain: 25 - global: 13
-Element, domain: 26 - global: 14
-Element, domain: 27 - global: 15
-Element, domain: 28 - global: 16
-Element, domain: 29 - global: 17
-Element, domain: 30 - global: 20
-Element, domain: 31 - global: 21
-Element, domain: 32 - global: 24
-Element, domain: 33 - global: 25
-Element, domain: 34 - global: 26
-Element, domain: 35 - global: 27
-Element, domain: 36 - global: 28
-Element, domain: 37 - global: 29
-Element, domain: 38 - global: 30
-Element, domain: 39 - global: 31
-Element, domain: 40 - global: 32
-Element, domain: 41 - global: 33
-Element, domain: 42 - global: 36
-Element, domain: 43 - global: 37
-Element, domain: 44 - global: 40
-Element, domain: 45 - global: 41
-Element, domain: 46 - global: 42
-Element, domain: 47 - global: 43
-Element, domain: 48 - global: 44
-Element, domain: 49 - global: 45
-Element, domain: 50 - global: 46
-Element, domain: 51 - global: 47
-Element, domain: 52 - global: 48
-Element, domain: 53 - global: 49
-Element, domain: 54 - global: 52
-Element, domain: 55 - global: 53
-Element, domain: 56 - global: 56
-Element, domain: 57 - global: 57
-Element, domain: 58 - global: 58
-Element, domain: 59 - global: 59
-Element, domain: 60 - global: 60
-Element, domain: 61 - global: 61
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: X - shadow: 0 - domain: 45
-Node, global: 1 - local: X - shadow: 1 - domain: 46
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: 2 - domain: 47
-Node, global: 6 - local: X - shadow: 3 - domain: 48
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: 4 - domain: 49
-Node, global: 11 - local: X - shadow: 5 - domain: 50
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: 6 - domain: 51
-Node, global: 16 - local: X - shadow: 7 - domain: 52
-Node, global: 17 - local: X - shadow: 8 - domain: 53
-Node, global: 18 - local: X - shadow: 9 - domain: 54
-Node, global: 19 - local: X - shadow: 10 - domain: 55
-Node, global: 20 - local: X - shadow: 11 - domain: 56
-Node, global: 21 - local: X - shadow: 12 - domain: 57
-Node, global: 22 - local: X - shadow: 13 - domain: 58
-Node, global: 23 - local: X - shadow: 14 - domain: 59
-Node, global: 24 - local: X - shadow: 15 - domain: 60
-Node, global: 25 - local: X - shadow: 16 - domain: 61
-Node, global: 26 - local: X - shadow: 17 - domain: 62
-Node, global: 27 - local: 9 - shadow: X - domain: 9
-Node, global: 28 - local: 10 - shadow: X - domain: 10
-Node, global: 29 - local: 11 - shadow: X - domain: 11
-Node, global: 30 - local: X - shadow: 18 - domain: 63
-Node, global: 31 - local: X - shadow: 19 - domain: 64
-Node, global: 32 - local: 12 - shadow: X - domain: 12
-Node, global: 33 - local: 13 - shadow: X - domain: 13
-Node, global: 34 - local: 14 - shadow: X - domain: 14
-Node, global: 35 - local: X - shadow: 20 - domain: 65
-Node, global: 36 - local: X - shadow: 21 - domain: 66
-Node, global: 37 - local: 15 - shadow: X - domain: 15
-Node, global: 38 - local: 16 - shadow: X - domain: 16
-Node, global: 39 - local: 17 - shadow: X - domain: 17
-Node, global: 40 - local: X - shadow: 22 - domain: 67
-Node, global: 41 - local: X - shadow: 23 - domain: 68
-Node, global: 42 - local: X - shadow: 24 - domain: 69
-Node, global: 43 - local: X - shadow: 25 - domain: 70
-Node, global: 44 - local: X - shadow: 26 - domain: 71
-Node, global: 45 - local: X - shadow: 27 - domain: 72
-Node, global: 46 - local: X - shadow: 28 - domain: 73
-Node, global: 47 - local: X - shadow: 29 - domain: 74
-Node, global: 48 - local: X - shadow: 30 - domain: 75
-Node, global: 49 - local: X - shadow: 31 - domain: 76
-Node, global: 50 - local: X - shadow: 32 - domain: 77
-Node, global: 51 - local: X - shadow: 33 - domain: 78
-Node, global: 52 - local: 18 - shadow: X - domain: 18
-Node, global: 53 - local: 19 - shadow: X - domain: 19
-Node, global: 54 - local: 20 - shadow: X - domain: 20
-Node, global: 55 - local: X - shadow: 34 - domain: 79
-Node, global: 56 - local: X - shadow: 35 - domain: 80
-Node, global: 57 - local: 21 - shadow: X - domain: 21
-Node, global: 58 - local: 22 - shadow: X - domain: 22
-Node, global: 59 - local: 23 - shadow: X - domain: 23
-Node, global: 60 - local: X - shadow: 36 - domain: 81
-Node, global: 61 - local: X - shadow: 37 - domain: 82
-Node, global: 62 - local: 24 - shadow: X - domain: 24
-Node, global: 63 - local: 25 - shadow: X - domain: 25
-Node, global: 64 - local: 26 - shadow: X - domain: 26
-Node, global: 65 - local: X - shadow: 38 - domain: 83
-Node, global: 66 - local: X - shadow: 39 - domain: 84
-Node, global: 67 - local: X - shadow: 40 - domain: 85
-Node, global: 68 - local: X - shadow: 41 - domain: 86
-Node, global: 69 - local: X - shadow: 42 - domain: 87
-Node, global: 70 - local: X - shadow: 43 - domain: 88
-Node, global: 71 - local: X - shadow: 44 - domain: 89
-Node, global: 72 - local: X - shadow: 45 - domain: 90
-Node, global: 73 - local: X - shadow: 46 - domain: 91
-Node, global: 74 - local: X - shadow: 47 - domain: 92
-Node, global: 75 - local: X - shadow: 48 - domain: 93
-Node, global: 76 - local: X - shadow: 49 - domain: 94
-Node, global: 77 - local: 27 - shadow: X - domain: 27
-Node, global: 78 - local: 28 - shadow: X - domain: 28
-Node, global: 79 - local: 29 - shadow: X - domain: 29
-Node, global: 80 - local: X - shadow: 50 - domain: 95
-Node, global: 81 - local: X - shadow: 51 - domain: 96
-Node, global: 82 - local: 30 - shadow: X - domain: 30
-Node, global: 83 - local: 31 - shadow: X - domain: 31
-Node, global: 84 - local: 32 - shadow: X - domain: 32
-Node, global: 85 - local: X - shadow: 52 - domain: 97
-Node, global: 86 - local: X - shadow: 53 - domain: 98
-Node, global: 87 - local: 33 - shadow: X - domain: 33
-Node, global: 88 - local: 34 - shadow: X - domain: 34
-Node, global: 89 - local: 35 - shadow: X - domain: 35
-Node, global: 90 - local: X - shadow: 54 - domain: 99
-Node, global: 91 - local: X - shadow: 55 - domain: 100
-Node, global: 92 - local: X - shadow: 56 - domain: 101
-Node, global: 93 - local: X - shadow: 57 - domain: 102
-Node, global: 94 - local: X - shadow: 58 - domain: 103
-Node, global: 95 - local: X - shadow: 59 - domain: 104
-Node, global: 96 - local: X - shadow: 60 - domain: 105
-Node, global: 97 - local: X - shadow: 61 - domain: 106
-Node, global: 98 - local: X - shadow: 62 - domain: 107
-Node, global: 99 - local: X - shadow: 63 - domain: 108
-Node, global: 100 - local: X - shadow: 64 - domain: 109
-Node, global: 101 - local: X - shadow: 65 - domain: 110
-Node, global: 102 - local: 36 - shadow: X - domain: 36
-Node, global: 103 - local: 37 - shadow: X - domain: 37
-Node, global: 104 - local: 38 - shadow: X - domain: 38
-Node, global: 105 - local: X - shadow: 66 - domain: 111
-Node, global: 106 - local: X - shadow: 67 - domain: 112
-Node, global: 107 - local: 39 - shadow: X - domain: 39
-Node, global: 108 - local: 40 - shadow: X - domain: 40
-Node, global: 109 - local: 41 - shadow: X - domain: 41
-Node, global: 110 - local: X - shadow: 68 - domain: 113
-Node, global: 111 - local: X - shadow: 69 - domain: 114
-Node, global: 112 - local: 42 - shadow: X - domain: 42
-Node, global: 113 - local: 43 - shadow: X - domain: 43
-Node, global: 114 - local: 44 - shadow: X - domain: 44
-Node, global: 115 - local: X - shadow: 70 - domain: 115
-Node, global: 116 - local: X - shadow: 71 - domain: 116
-Node, global: 117 - local: X - shadow: 72 - domain: 117
-Node, global: 118 - local: X - shadow: 73 - domain: 118
-Node, global: 119 - local: X - shadow: 74 - domain: 119
-Node, global: 120 - local: X - shadow: 75 - domain: 120
-Node, global: 121 - local: X - shadow: 76 - domain: 121
-Node, global: 122 - local: X - shadow: 77 - domain: 122
-Node, global: 123 - local: X - shadow: 78 - domain: 123
-Node, global: 124 - local: X - shadow: 79 - domain: 124
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 27
-Node, local: 10 - global: 28
-Node, local: 11 - global: 29
-Node, local: 12 - global: 32
-Node, local: 13 - global: 33
-Node, local: 14 - global: 34
-Node, local: 15 - global: 37
-Node, local: 16 - global: 38
-Node, local: 17 - global: 39
-Node, local: 18 - global: 52
-Node, local: 19 - global: 53
-Node, local: 20 - global: 54
-Node, local: 21 - global: 57
-Node, local: 22 - global: 58
-Node, local: 23 - global: 59
-Node, local: 24 - global: 62
-Node, local: 25 - global: 63
-Node, local: 26 - global: 64
-Node, local: 27 - global: 77
-Node, local: 28 - global: 78
-Node, local: 29 - global: 79
-Node, local: 30 - global: 82
-Node, local: 31 - global: 83
-Node, local: 32 - global: 84
-Node, local: 33 - global: 87
-Node, local: 34 - global: 88
-Node, local: 35 - global: 89
-Node, local: 36 - global: 102
-Node, local: 37 - global: 103
-Node, local: 38 - global: 104
-Node, local: 39 - global: 107
-Node, local: 40 - global: 108
-Node, local: 41 - global: 109
-Node, local: 42 - global: 112
-Node, local: 43 - global: 113
-Node, local: 44 - global: 114
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 27
-Node, domain: 10 - global: 28
-Node, domain: 11 - global: 29
-Node, domain: 12 - global: 32
-Node, domain: 13 - global: 33
-Node, domain: 14 - global: 34
-Node, domain: 15 - global: 37
-Node, domain: 16 - global: 38
-Node, domain: 17 - global: 39
-Node, domain: 18 - global: 52
-Node, domain: 19 - global: 53
-Node, domain: 20 - global: 54
-Node, domain: 21 - global: 57
-Node, domain: 22 - global: 58
-Node, domain: 23 - global: 59
-Node, domain: 24 - global: 62
-Node, domain: 25 - global: 63
-Node, domain: 26 - global: 64
-Node, domain: 27 - global: 77
-Node, domain: 28 - global: 78
-Node, domain: 29 - global: 79
-Node, domain: 30 - global: 82
-Node, domain: 31 - global: 83
-Node, domain: 32 - global: 84
-Node, domain: 33 - global: 87
-Node, domain: 34 - global: 88
-Node, domain: 35 - global: 89
-Node, domain: 36 - global: 102
-Node, domain: 37 - global: 103
-Node, domain: 38 - global: 104
-Node, domain: 39 - global: 107
-Node, domain: 40 - global: 108
-Node, domain: 41 - global: 109
-Node, domain: 42 - global: 112
-Node, domain: 43 - global: 113
-Node, domain: 44 - global: 114
-Node, domain: 45 - global: 0
-Node, domain: 46 - global: 1
-Node, domain: 47 - global: 5
-Node, domain: 48 - global: 6
-Node, domain: 49 - global: 10
-Node, domain: 50 - global: 11
-Node, domain: 51 - global: 15
-Node, domain: 52 - global: 16
-Node, domain: 53 - global: 17
-Node, domain: 54 - global: 18
-Node, domain: 55 - global: 19
-Node, domain: 56 - global: 20
-Node, domain: 57 - global: 21
-Node, domain: 58 - global: 22
-Node, domain: 59 - global: 23
-Node, domain: 60 - global: 24
-Node, domain: 61 - global: 25
-Node, domain: 62 - global: 26
-Node, domain: 63 - global: 30
-Node, domain: 64 - global: 31
-Node, domain: 65 - global: 35
-Node, domain: 66 - global: 36
-Node, domain: 67 - global: 40
-Node, domain: 68 - global: 41
-Node, domain: 69 - global: 42
-Node, domain: 70 - global: 43
-Node, domain: 71 - global: 44
-Node, domain: 72 - global: 45
-Node, domain: 73 - global: 46
-Node, domain: 74 - global: 47
-Node, domain: 75 - global: 48
-Node, domain: 76 - global: 49
-Node, domain: 77 - global: 50
-Node, domain: 78 - global: 51
-Node, domain: 79 - global: 55
-Node, domain: 80 - global: 56
-Node, domain: 81 - global: 60
-Node, domain: 82 - global: 61
-Node, domain: 83 - global: 65
-Node, domain: 84 - global: 66
-Node, domain: 85 - global: 67
-Node, domain: 86 - global: 68
-Node, domain: 87 - global: 69
-Node, domain: 88 - global: 70
-Node, domain: 89 - global: 71
-Node, domain: 90 - global: 72
-Node, domain: 91 - global: 73
-Node, domain: 92 - global: 74
-Node, domain: 93 - global: 75
-Node, domain: 94 - global: 76
-Node, domain: 95 - global: 80
-Node, domain: 96 - global: 81
-Node, domain: 97 - global: 85
-Node, domain: 98 - global: 86
-Node, domain: 99 - global: 90
-Node, domain: 100 - global: 91
-Node, domain: 101 - global: 92
-Node, domain: 102 - global: 93
-Node, domain: 103 - global: 94
-Node, domain: 104 - global: 95
-Node, domain: 105 - global: 96
-Node, domain: 106 - global: 97
-Node, domain: 107 - global: 98
-Node, domain: 108 - global: 99
-Node, domain: 109 - global: 100
-Node, domain: 110 - global: 101
-Node, domain: 111 - global: 105
-Node, domain: 112 - global: 106
-Node, domain: 113 - global: 110
-Node, domain: 114 - global: 111
-Node, domain: 115 - global: 115
-Node, domain: 116 - global: 116
-Node, domain: 117 - global: 117
-Node, domain: 118 - global: 118
-Node, domain: 119 - global: 119
-Node, domain: 120 - global: 120
-Node, domain: 121 - global: 121
-Node, domain: 122 - global: 122
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,485 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 2 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060cb0)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 16
-Element, global: 1 - local: X - shadow: 1 - domain: 17
-Element, global: 2 - local: X - shadow: 2 - domain: 18
-Element, global: 3 - local: X - shadow: 3 - domain: 19
-Element, global: 4 - local: X - shadow: 4 - domain: 20
-Element, global: 5 - local: X - shadow: 5 - domain: 21
-Element, global: 6 - local: X - shadow: 6 - domain: 22
-Element, global: 7 - local: X - shadow: 7 - domain: 23
-Element, global: 8 - local: 0 - shadow: X - domain: 0
-Element, global: 9 - local: 1 - shadow: X - domain: 1
-Element, global: 10 - local: X - shadow: 8 - domain: 24
-Element, global: 11 - local: X - shadow: 9 - domain: 25
-Element, global: 12 - local: 2 - shadow: X - domain: 2
-Element, global: 13 - local: 3 - shadow: X - domain: 3
-Element, global: 14 - local: X - shadow: 10 - domain: 26
-Element, global: 15 - local: X - shadow: 11 - domain: 27
-Element, global: 16 - local: X - shadow: 12 - domain: 28
-Element, global: 17 - local: X - shadow: 13 - domain: 29
-Element, global: 18 - local: X - shadow: 14 - domain: 30
-Element, global: 19 - local: X - shadow: 15 - domain: 31
-Element, global: 20 - local: X - shadow: 16 - domain: 32
-Element, global: 21 - local: X - shadow: 17 - domain: 33
-Element, global: 22 - local: X - shadow: 18 - domain: 34
-Element, global: 23 - local: X - shadow: 19 - domain: 35
-Element, global: 24 - local: 4 - shadow: X - domain: 4
-Element, global: 25 - local: 5 - shadow: X - domain: 5
-Element, global: 26 - local: X - shadow: 20 - domain: 36
-Element, global: 27 - local: X - shadow: 21 - domain: 37
-Element, global: 28 - local: 6 - shadow: X - domain: 6
-Element, global: 29 - local: 7 - shadow: X - domain: 7
-Element, global: 30 - local: X - shadow: 22 - domain: 38
-Element, global: 31 - local: X - shadow: 23 - domain: 39
-Element, global: 32 - local: X - shadow: 24 - domain: 40
-Element, global: 33 - local: X - shadow: 25 - domain: 41
-Element, global: 34 - local: X - shadow: 26 - domain: 42
-Element, global: 35 - local: X - shadow: 27 - domain: 43
-Element, global: 36 - local: X - shadow: 28 - domain: 44
-Element, global: 37 - local: X - shadow: 29 - domain: 45
-Element, global: 38 - local: X - shadow: 30 - domain: 46
-Element, global: 39 - local: X - shadow: 31 - domain: 47
-Element, global: 40 - local: 8 - shadow: X - domain: 8
-Element, global: 41 - local: 9 - shadow: X - domain: 9
-Element, global: 42 - local: X - shadow: 32 - domain: 48
-Element, global: 43 - local: X - shadow: 33 - domain: 49
-Element, global: 44 - local: 10 - shadow: X - domain: 10
-Element, global: 45 - local: 11 - shadow: X - domain: 11
-Element, global: 46 - local: X - shadow: 34 - domain: 50
-Element, global: 47 - local: X - shadow: 35 - domain: 51
-Element, global: 48 - local: X - shadow: 36 - domain: 52
-Element, global: 49 - local: X - shadow: 37 - domain: 53
-Element, global: 50 - local: X - shadow: 38 - domain: 54
-Element, global: 51 - local: X - shadow: 39 - domain: 55
-Element, global: 52 - local: X - shadow: 40 - domain: 56
-Element, global: 53 - local: X - shadow: 41 - domain: 57
-Element, global: 54 - local: X - shadow: 42 - domain: 58
-Element, global: 55 - local: X - shadow: 43 - domain: 59
-Element, global: 56 - local: 12 - shadow: X - domain: 12
-Element, global: 57 - local: 13 - shadow: X - domain: 13
-Element, global: 58 - local: X - shadow: 44 - domain: 60
-Element, global: 59 - local: X - shadow: 45 - domain: 61
-Element, global: 60 - local: 14 - shadow: X - domain: 14
-Element, global: 61 - local: 15 - shadow: X - domain: 15
-Element, global: 62 - local: X - shadow: 46 - domain: 62
-Element, global: 63 - local: X - shadow: 47 - domain: 63
-
-Element, local: 0 - global: 8
-Element, local: 1 - global: 9
-Element, local: 2 - global: 12
-Element, local: 3 - global: 13
-Element, local: 4 - global: 24
-Element, local: 5 - global: 25
-Element, local: 6 - global: 28
-Element, local: 7 - global: 29
-Element, local: 8 - global: 40
-Element, local: 9 - global: 41
-Element, local: 10 - global: 44
-Element, local: 11 - global: 45
-Element, local: 12 - global: 56
-Element, local: 13 - global: 57
-Element, local: 14 - global: 60
-Element, local: 15 - global: 61
-
-Element, domain: 0 - global: 8
-Element, domain: 1 - global: 9
-Element, domain: 2 - global: 12
-Element, domain: 3 - global: 13
-Element, domain: 4 - global: 24
-Element, domain: 5 - global: 25
-Element, domain: 6 - global: 28
-Element, domain: 7 - global: 29
-Element, domain: 8 - global: 40
-Element, domain: 9 - global: 41
-Element, domain: 10 - global: 44
-Element, domain: 11 - global: 45
-Element, domain: 12 - global: 56
-Element, domain: 13 - global: 57
-Element, domain: 14 - global: 60
-Element, domain: 15 - global: 61
-Element, domain: 16 - global: 0
-Element, domain: 17 - global: 1
-Element, domain: 18 - global: 2
-Element, domain: 19 - global: 3
-Element, domain: 20 - global: 4
-Element, domain: 21 - global: 5
-Element, domain: 22 - global: 6
-Element, domain: 23 - global: 7
-Element, domain: 24 - global: 10
-Element, domain: 25 - global: 11
-Element, domain: 26 - global: 14
-Element, domain: 27 - global: 15
-Element, domain: 28 - global: 16
-Element, domain: 29 - global: 17
-Element, domain: 30 - global: 18
-Element, domain: 31 - global: 19
-Element, domain: 32 - global: 20
-Element, domain: 33 - global: 21
-Element, domain: 34 - global: 22
-Element, domain: 35 - global: 23
-Element, domain: 36 - global: 26
-Element, domain: 37 - global: 27
-Element, domain: 38 - global: 30
-Element, domain: 39 - global: 31
-Element, domain: 40 - global: 32
-Element, domain: 41 - global: 33
-Element, domain: 42 - global: 34
-Element, domain: 43 - global: 35
-Element, domain: 44 - global: 36
-Element, domain: 45 - global: 37
-Element, domain: 46 - global: 38
-Element, domain: 47 - global: 39
-Element, domain: 48 - global: 42
-Element, domain: 49 - global: 43
-Element, domain: 50 - global: 46
-Element, domain: 51 - global: 47
-Element, domain: 52 - global: 48
-Element, domain: 53 - global: 49
-Element, domain: 54 - global: 50
-Element, domain: 55 - global: 51
-Element, domain: 56 - global: 52
-Element, domain: 57 - global: 53
-Element, domain: 58 - global: 54
-Element, domain: 59 - global: 55
-Element, domain: 60 - global: 58
-Element, domain: 61 - global: 59
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: X - shadow: 0 - domain: 45
-Node, global: 1 - local: X - shadow: 1 - domain: 46
-Node, global: 2 - local: X - shadow: 2 - domain: 47
-Node, global: 3 - local: X - shadow: 3 - domain: 48
-Node, global: 4 - local: X - shadow: 4 - domain: 49
-Node, global: 5 - local: X - shadow: 5 - domain: 50
-Node, global: 6 - local: X - shadow: 6 - domain: 51
-Node, global: 7 - local: X - shadow: 7 - domain: 52
-Node, global: 8 - local: X - shadow: 8 - domain: 53
-Node, global: 9 - local: X - shadow: 9 - domain: 54
-Node, global: 10 - local: 0 - shadow: X - domain: 0
-Node, global: 11 - local: 1 - shadow: X - domain: 1
-Node, global: 12 - local: 2 - shadow: X - domain: 2
-Node, global: 13 - local: X - shadow: 10 - domain: 55
-Node, global: 14 - local: X - shadow: 11 - domain: 56
-Node, global: 15 - local: 3 - shadow: X - domain: 3
-Node, global: 16 - local: 4 - shadow: X - domain: 4
-Node, global: 17 - local: 5 - shadow: X - domain: 5
-Node, global: 18 - local: X - shadow: 12 - domain: 57
-Node, global: 19 - local: X - shadow: 13 - domain: 58
-Node, global: 20 - local: 6 - shadow: X - domain: 6
-Node, global: 21 - local: 7 - shadow: X - domain: 7
-Node, global: 22 - local: 8 - shadow: X - domain: 8
-Node, global: 23 - local: X - shadow: 14 - domain: 59
-Node, global: 24 - local: X - shadow: 15 - domain: 60
-Node, global: 25 - local: X - shadow: 16 - domain: 61
-Node, global: 26 - local: X - shadow: 17 - domain: 62
-Node, global: 27 - local: X - shadow: 18 - domain: 63
-Node, global: 28 - local: X - shadow: 19 - domain: 64
-Node, global: 29 - local: X - shadow: 20 - domain: 65
-Node, global: 30 - local: X - shadow: 21 - domain: 66
-Node, global: 31 - local: X - shadow: 22 - domain: 67
-Node, global: 32 - local: X - shadow: 23 - domain: 68
-Node, global: 33 - local: X - shadow: 24 - domain: 69
-Node, global: 34 - local: X - shadow: 25 - domain: 70
-Node, global: 35 - local: 9 - shadow: X - domain: 9
-Node, global: 36 - local: 10 - shadow: X - domain: 10
-Node, global: 37 - local: 11 - shadow: X - domain: 11
-Node, global: 38 - local: X - shadow: 26 - domain: 71
-Node, global: 39 - local: X - shadow: 27 - domain: 72
-Node, global: 40 - local: 12 - shadow: X - domain: 12
-Node, global: 41 - local: 13 - shadow: X - domain: 13
-Node, global: 42 - local: 14 - shadow: X - domain: 14
-Node, global: 43 - local: X - shadow: 28 - domain: 73
-Node, global: 44 - local: X - shadow: 29 - domain: 74
-Node, global: 45 - local: 15 - shadow: X - domain: 15
-Node, global: 46 - local: 16 - shadow: X - domain: 16
-Node, global: 47 - local: 17 - shadow: X - domain: 17
-Node, global: 48 - local: X - shadow: 30 - domain: 75
-Node, global: 49 - local: X - shadow: 31 - domain: 76
-Node, global: 50 - local: X - shadow: 32 - domain: 77
-Node, global: 51 - local: X - shadow: 33 - domain: 78
-Node, global: 52 - local: X - shadow: 34 - domain: 79
-Node, global: 53 - local: X - shadow: 35 - domain: 80
-Node, global: 54 - local: X - shadow: 36 - domain: 81
-Node, global: 55 - local: X - shadow: 37 - domain: 82
-Node, global: 56 - local: X - shadow: 38 - domain: 83
-Node, global: 57 - local: X - shadow: 39 - domain: 84
-Node, global: 58 - local: X - shadow: 40 - domain: 85
-Node, global: 59 - local: X - shadow: 41 - domain: 86
-Node, global: 60 - local: 18 - shadow: X - domain: 18
-Node, global: 61 - local: 19 - shadow: X - domain: 19
-Node, global: 62 - local: 20 - shadow: X - domain: 20
-Node, global: 63 - local: X - shadow: 42 - domain: 87
-Node, global: 64 - local: X - shadow: 43 - domain: 88
-Node, global: 65 - local: 21 - shadow: X - domain: 21
-Node, global: 66 - local: 22 - shadow: X - domain: 22
-Node, global: 67 - local: 23 - shadow: X - domain: 23
-Node, global: 68 - local: X - shadow: 44 - domain: 89
-Node, global: 69 - local: X - shadow: 45 - domain: 90
-Node, global: 70 - local: 24 - shadow: X - domain: 24
-Node, global: 71 - local: 25 - shadow: X - domain: 25
-Node, global: 72 - local: 26 - shadow: X - domain: 26
-Node, global: 73 - local: X - shadow: 46 - domain: 91
-Node, global: 74 - local: X - shadow: 47 - domain: 92
-Node, global: 75 - local: X - shadow: 48 - domain: 93
-Node, global: 76 - local: X - shadow: 49 - domain: 94
-Node, global: 77 - local: X - shadow: 50 - domain: 95
-Node, global: 78 - local: X - shadow: 51 - domain: 96
-Node, global: 79 - local: X - shadow: 52 - domain: 97
-Node, global: 80 - local: X - shadow: 53 - domain: 98
-Node, global: 81 - local: X - shadow: 54 - domain: 99
-Node, global: 82 - local: X - shadow: 55 - domain: 100
-Node, global: 83 - local: X - shadow: 56 - domain: 101
-Node, global: 84 - local: X - shadow: 57 - domain: 102
-Node, global: 85 - local: 27 - shadow: X - domain: 27
-Node, global: 86 - local: 28 - shadow: X - domain: 28
-Node, global: 87 - local: 29 - shadow: X - domain: 29
-Node, global: 88 - local: X - shadow: 58 - domain: 103
-Node, global: 89 - local: X - shadow: 59 - domain: 104
-Node, global: 90 - local: 30 - shadow: X - domain: 30
-Node, global: 91 - local: 31 - shadow: X - domain: 31
-Node, global: 92 - local: 32 - shadow: X - domain: 32
-Node, global: 93 - local: X - shadow: 60 - domain: 105
-Node, global: 94 - local: X - shadow: 61 - domain: 106
-Node, global: 95 - local: 33 - shadow: X - domain: 33
-Node, global: 96 - local: 34 - shadow: X - domain: 34
-Node, global: 97 - local: 35 - shadow: X - domain: 35
-Node, global: 98 - local: X - shadow: 62 - domain: 107
-Node, global: 99 - local: X - shadow: 63 - domain: 108
-Node, global: 100 - local: X - shadow: 64 - domain: 109
-Node, global: 101 - local: X - shadow: 65 - domain: 110
-Node, global: 102 - local: X - shadow: 66 - domain: 111
-Node, global: 103 - local: X - shadow: 67 - domain: 112
-Node, global: 104 - local: X - shadow: 68 - domain: 113
-Node, global: 105 - local: X - shadow: 69 - domain: 114
-Node, global: 106 - local: X - shadow: 70 - domain: 115
-Node, global: 107 - local: X - shadow: 71 - domain: 116
-Node, global: 108 - local: X - shadow: 72 - domain: 117
-Node, global: 109 - local: X - shadow: 73 - domain: 118
-Node, global: 110 - local: 36 - shadow: X - domain: 36
-Node, global: 111 - local: 37 - shadow: X - domain: 37
-Node, global: 112 - local: 38 - shadow: X - domain: 38
-Node, global: 113 - local: X - shadow: 74 - domain: 119
-Node, global: 114 - local: X - shadow: 75 - domain: 120
-Node, global: 115 - local: 39 - shadow: X - domain: 39
-Node, global: 116 - local: 40 - shadow: X - domain: 40
-Node, global: 117 - local: 41 - shadow: X - domain: 41
-Node, global: 118 - local: X - shadow: 76 - domain: 121
-Node, global: 119 - local: X - shadow: 77 - domain: 122
-Node, global: 120 - local: 42 - shadow: X - domain: 42
-Node, global: 121 - local: 43 - shadow: X - domain: 43
-Node, global: 122 - local: 44 - shadow: X - domain: 44
-Node, global: 123 - local: X - shadow: 78 - domain: 123
-Node, global: 124 - local: X - shadow: 79 - domain: 124
-
-Node, local: 0 - global: 10
-Node, local: 1 - global: 11
-Node, local: 2 - global: 12
-Node, local: 3 - global: 15
-Node, local: 4 - global: 16
-Node, local: 5 - global: 17
-Node, local: 6 - global: 20
-Node, local: 7 - global: 21
-Node, local: 8 - global: 22
-Node, local: 9 - global: 35
-Node, local: 10 - global: 36
-Node, local: 11 - global: 37
-Node, local: 12 - global: 40
-Node, local: 13 - global: 41
-Node, local: 14 - global: 42
-Node, local: 15 - global: 45
-Node, local: 16 - global: 46
-Node, local: 17 - global: 47
-Node, local: 18 - global: 60
-Node, local: 19 - global: 61
-Node, local: 20 - global: 62
-Node, local: 21 - global: 65
-Node, local: 22 - global: 66
-Node, local: 23 - global: 67
-Node, local: 24 - global: 70
-Node, local: 25 - global: 71
-Node, local: 26 - global: 72
-Node, local: 27 - global: 85
-Node, local: 28 - global: 86
-Node, local: 29 - global: 87
-Node, local: 30 - global: 90
-Node, local: 31 - global: 91
-Node, local: 32 - global: 92
-Node, local: 33 - global: 95
-Node, local: 34 - global: 96
-Node, local: 35 - global: 97
-Node, local: 36 - global: 110
-Node, local: 37 - global: 111
-Node, local: 38 - global: 112
-Node, local: 39 - global: 115
-Node, local: 40 - global: 116
-Node, local: 41 - global: 117
-Node, local: 42 - global: 120
-Node, local: 43 - global: 121
-Node, local: 44 - global: 122
-
-Node, domain: 0 - global: 10
-Node, domain: 1 - global: 11
-Node, domain: 2 - global: 12
-Node, domain: 3 - global: 15
-Node, domain: 4 - global: 16
-Node, domain: 5 - global: 17
-Node, domain: 6 - global: 20
-Node, domain: 7 - global: 21
-Node, domain: 8 - global: 22
-Node, domain: 9 - global: 35
-Node, domain: 10 - global: 36
-Node, domain: 11 - global: 37
-Node, domain: 12 - global: 40
-Node, domain: 13 - global: 41
-Node, domain: 14 - global: 42
-Node, domain: 15 - global: 45
-Node, domain: 16 - global: 46
-Node, domain: 17 - global: 47
-Node, domain: 18 - global: 60
-Node, domain: 19 - global: 61
-Node, domain: 20 - global: 62
-Node, domain: 21 - global: 65
-Node, domain: 22 - global: 66
-Node, domain: 23 - global: 67
-Node, domain: 24 - global: 70
-Node, domain: 25 - global: 71
-Node, domain: 26 - global: 72
-Node, domain: 27 - global: 85
-Node, domain: 28 - global: 86
-Node, domain: 29 - global: 87
-Node, domain: 30 - global: 90
-Node, domain: 31 - global: 91
-Node, domain: 32 - global: 92
-Node, domain: 33 - global: 95
-Node, domain: 34 - global: 96
-Node, domain: 35 - global: 97
-Node, domain: 36 - global: 110
-Node, domain: 37 - global: 111
-Node, domain: 38 - global: 112
-Node, domain: 39 - global: 115
-Node, domain: 40 - global: 116
-Node, domain: 41 - global: 117
-Node, domain: 42 - global: 120
-Node, domain: 43 - global: 121
-Node, domain: 44 - global: 122
-Node, domain: 45 - global: 0
-Node, domain: 46 - global: 1
-Node, domain: 47 - global: 2
-Node, domain: 48 - global: 3
-Node, domain: 49 - global: 4
-Node, domain: 50 - global: 5
-Node, domain: 51 - global: 6
-Node, domain: 52 - global: 7
-Node, domain: 53 - global: 8
-Node, domain: 54 - global: 9
-Node, domain: 55 - global: 13
-Node, domain: 56 - global: 14
-Node, domain: 57 - global: 18
-Node, domain: 58 - global: 19
-Node, domain: 59 - global: 23
-Node, domain: 60 - global: 24
-Node, domain: 61 - global: 25
-Node, domain: 62 - global: 26
-Node, domain: 63 - global: 27
-Node, domain: 64 - global: 28
-Node, domain: 65 - global: 29
-Node, domain: 66 - global: 30
-Node, domain: 67 - global: 31
-Node, domain: 68 - global: 32
-Node, domain: 69 - global: 33
-Node, domain: 70 - global: 34
-Node, domain: 71 - global: 38
-Node, domain: 72 - global: 39
-Node, domain: 73 - global: 43
-Node, domain: 74 - global: 44
-Node, domain: 75 - global: 48
-Node, domain: 76 - global: 49
-Node, domain: 77 - global: 50
-Node, domain: 78 - global: 51
-Node, domain: 79 - global: 52
-Node, domain: 80 - global: 53
-Node, domain: 81 - global: 54
-Node, domain: 82 - global: 55
-Node, domain: 83 - global: 56
-Node, domain: 84 - global: 57
-Node, domain: 85 - global: 58
-Node, domain: 86 - global: 59
-Node, domain: 87 - global: 63
-Node, domain: 88 - global: 64
-Node, domain: 89 - global: 68
-Node, domain: 90 - global: 69
-Node, domain: 91 - global: 73
-Node, domain: 92 - global: 74
-Node, domain: 93 - global: 75
-Node, domain: 94 - global: 76
-Node, domain: 95 - global: 77
-Node, domain: 96 - global: 78
-Node, domain: 97 - global: 79
-Node, domain: 98 - global: 80
-Node, domain: 99 - global: 81
-Node, domain: 100 - global: 82
-Node, domain: 101 - global: 83
-Node, domain: 102 - global: 84
-Node, domain: 103 - global: 88
-Node, domain: 104 - global: 89
-Node, domain: 105 - global: 93
-Node, domain: 106 - global: 94
-Node, domain: 107 - global: 98
-Node, domain: 108 - global: 99
-Node, domain: 109 - global: 100
-Node, domain: 110 - global: 101
-Node, domain: 111 - global: 102
-Node, domain: 112 - global: 103
-Node, domain: 113 - global: 104
-Node, domain: 114 - global: 105
-Node, domain: 115 - global: 106
-Node, domain: 116 - global: 107
-Node, domain: 117 - global: 108
-Node, domain: 118 - global: 109
-Node, domain: 119 - global: 113
-Node, domain: 120 - global: 114
-Node, domain: 121 - global: 118
-Node, domain: 122 - global: 119
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,485 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 3 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060cb0)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 16
-Element, global: 1 - local: X - shadow: 1 - domain: 17
-Element, global: 2 - local: X - shadow: 2 - domain: 18
-Element, global: 3 - local: X - shadow: 3 - domain: 19
-Element, global: 4 - local: X - shadow: 4 - domain: 20
-Element, global: 5 - local: X - shadow: 5 - domain: 21
-Element, global: 6 - local: X - shadow: 6 - domain: 22
-Element, global: 7 - local: X - shadow: 7 - domain: 23
-Element, global: 8 - local: X - shadow: 8 - domain: 24
-Element, global: 9 - local: X - shadow: 9 - domain: 25
-Element, global: 10 - local: 0 - shadow: X - domain: 0
-Element, global: 11 - local: 1 - shadow: X - domain: 1
-Element, global: 12 - local: X - shadow: 10 - domain: 26
-Element, global: 13 - local: X - shadow: 11 - domain: 27
-Element, global: 14 - local: 2 - shadow: X - domain: 2
-Element, global: 15 - local: 3 - shadow: X - domain: 3
-Element, global: 16 - local: X - shadow: 12 - domain: 28
-Element, global: 17 - local: X - shadow: 13 - domain: 29
-Element, global: 18 - local: X - shadow: 14 - domain: 30
-Element, global: 19 - local: X - shadow: 15 - domain: 31
-Element, global: 20 - local: X - shadow: 16 - domain: 32
-Element, global: 21 - local: X - shadow: 17 - domain: 33
-Element, global: 22 - local: X - shadow: 18 - domain: 34
-Element, global: 23 - local: X - shadow: 19 - domain: 35
-Element, global: 24 - local: X - shadow: 20 - domain: 36
-Element, global: 25 - local: X - shadow: 21 - domain: 37
-Element, global: 26 - local: 4 - shadow: X - domain: 4
-Element, global: 27 - local: 5 - shadow: X - domain: 5
-Element, global: 28 - local: X - shadow: 22 - domain: 38
-Element, global: 29 - local: X - shadow: 23 - domain: 39
-Element, global: 30 - local: 6 - shadow: X - domain: 6
-Element, global: 31 - local: 7 - shadow: X - domain: 7
-Element, global: 32 - local: X - shadow: 24 - domain: 40
-Element, global: 33 - local: X - shadow: 25 - domain: 41
-Element, global: 34 - local: X - shadow: 26 - domain: 42
-Element, global: 35 - local: X - shadow: 27 - domain: 43
-Element, global: 36 - local: X - shadow: 28 - domain: 44
-Element, global: 37 - local: X - shadow: 29 - domain: 45
-Element, global: 38 - local: X - shadow: 30 - domain: 46
-Element, global: 39 - local: X - shadow: 31 - domain: 47
-Element, global: 40 - local: X - shadow: 32 - domain: 48
-Element, global: 41 - local: X - shadow: 33 - domain: 49
-Element, global: 42 - local: 8 - shadow: X - domain: 8
-Element, global: 43 - local: 9 - shadow: X - domain: 9
-Element, global: 44 - local: X - shadow: 34 - domain: 50
-Element, global: 45 - local: X - shadow: 35 - domain: 51
-Element, global: 46 - local: 10 - shadow: X - domain: 10
-Element, global: 47 - local: 11 - shadow: X - domain: 11
-Element, global: 48 - local: X - shadow: 36 - domain: 52
-Element, global: 49 - local: X - shadow: 37 - domain: 53
-Element, global: 50 - local: X - shadow: 38 - domain: 54
-Element, global: 51 - local: X - shadow: 39 - domain: 55
-Element, global: 52 - local: X - shadow: 40 - domain: 56
-Element, global: 53 - local: X - shadow: 41 - domain: 57
-Element, global: 54 - local: X - shadow: 42 - domain: 58
-Element, global: 55 - local: X - shadow: 43 - domain: 59
-Element, global: 56 - local: X - shadow: 44 - domain: 60
-Element, global: 57 - local: X - shadow: 45 - domain: 61
-Element, global: 58 - local: 12 - shadow: X - domain: 12
-Element, global: 59 - local: 13 - shadow: X - domain: 13
-Element, global: 60 - local: X - shadow: 46 - domain: 62
-Element, global: 61 - local: X - shadow: 47 - domain: 63
-Element, global: 62 - local: 14 - shadow: X - domain: 14
-Element, global: 63 - local: 15 - shadow: X - domain: 15
-
-Element, local: 0 - global: 10
-Element, local: 1 - global: 11
-Element, local: 2 - global: 14
-Element, local: 3 - global: 15
-Element, local: 4 - global: 26
-Element, local: 5 - global: 27
-Element, local: 6 - global: 30
-Element, local: 7 - global: 31
-Element, local: 8 - global: 42
-Element, local: 9 - global: 43
-Element, local: 10 - global: 46
-Element, local: 11 - global: 47
-Element, local: 12 - global: 58
-Element, local: 13 - global: 59
-Element, local: 14 - global: 62
-Element, local: 15 - global: 63
-
-Element, domain: 0 - global: 10
-Element, domain: 1 - global: 11
-Element, domain: 2 - global: 14
-Element, domain: 3 - global: 15
-Element, domain: 4 - global: 26
-Element, domain: 5 - global: 27
-Element, domain: 6 - global: 30
-Element, domain: 7 - global: 31
-Element, domain: 8 - global: 42
-Element, domain: 9 - global: 43
-Element, domain: 10 - global: 46
-Element, domain: 11 - global: 47
-Element, domain: 12 - global: 58
-Element, domain: 13 - global: 59
-Element, domain: 14 - global: 62
-Element, domain: 15 - global: 63
-Element, domain: 16 - global: 0
-Element, domain: 17 - global: 1
-Element, domain: 18 - global: 2
-Element, domain: 19 - global: 3
-Element, domain: 20 - global: 4
-Element, domain: 21 - global: 5
-Element, domain: 22 - global: 6
-Element, domain: 23 - global: 7
-Element, domain: 24 - global: 8
-Element, domain: 25 - global: 9
-Element, domain: 26 - global: 12
-Element, domain: 27 - global: 13
-Element, domain: 28 - global: 16
-Element, domain: 29 - global: 17
-Element, domain: 30 - global: 18
-Element, domain: 31 - global: 19
-Element, domain: 32 - global: 20
-Element, domain: 33 - global: 21
-Element, domain: 34 - global: 22
-Element, domain: 35 - global: 23
-Element, domain: 36 - global: 24
-Element, domain: 37 - global: 25
-Element, domain: 38 - global: 28
-Element, domain: 39 - global: 29
-Element, domain: 40 - global: 32
-Element, domain: 41 - global: 33
-Element, domain: 42 - global: 34
-Element, domain: 43 - global: 35
-Element, domain: 44 - global: 36
-Element, domain: 45 - global: 37
-Element, domain: 46 - global: 38
-Element, domain: 47 - global: 39
-Element, domain: 48 - global: 40
-Element, domain: 49 - global: 41
-Element, domain: 50 - global: 44
-Element, domain: 51 - global: 45
-Element, domain: 52 - global: 48
-Element, domain: 53 - global: 49
-Element, domain: 54 - global: 50
-Element, domain: 55 - global: 51
-Element, domain: 56 - global: 52
-Element, domain: 57 - global: 53
-Element, domain: 58 - global: 54
-Element, domain: 59 - global: 55
-Element, domain: 60 - global: 56
-Element, domain: 61 - global: 57
-Element, domain: 62 - global: 60
-Element, domain: 63 - global: 61
-
-Node, global: 0 - local: X - shadow: 0 - domain: 45
-Node, global: 1 - local: X - shadow: 1 - domain: 46
-Node, global: 2 - local: X - shadow: 2 - domain: 47
-Node, global: 3 - local: X - shadow: 3 - domain: 48
-Node, global: 4 - local: X - shadow: 4 - domain: 49
-Node, global: 5 - local: X - shadow: 5 - domain: 50
-Node, global: 6 - local: X - shadow: 6 - domain: 51
-Node, global: 7 - local: X - shadow: 7 - domain: 52
-Node, global: 8 - local: X - shadow: 8 - domain: 53
-Node, global: 9 - local: X - shadow: 9 - domain: 54
-Node, global: 10 - local: X - shadow: 10 - domain: 55
-Node, global: 11 - local: X - shadow: 11 - domain: 56
-Node, global: 12 - local: 0 - shadow: X - domain: 0
-Node, global: 13 - local: 1 - shadow: X - domain: 1
-Node, global: 14 - local: 2 - shadow: X - domain: 2
-Node, global: 15 - local: X - shadow: 12 - domain: 57
-Node, global: 16 - local: X - shadow: 13 - domain: 58
-Node, global: 17 - local: 3 - shadow: X - domain: 3
-Node, global: 18 - local: 4 - shadow: X - domain: 4
-Node, global: 19 - local: 5 - shadow: X - domain: 5
-Node, global: 20 - local: X - shadow: 14 - domain: 59
-Node, global: 21 - local: X - shadow: 15 - domain: 60
-Node, global: 22 - local: 6 - shadow: X - domain: 6
-Node, global: 23 - local: 7 - shadow: X - domain: 7
-Node, global: 24 - local: 8 - shadow: X - domain: 8
-Node, global: 25 - local: X - shadow: 16 - domain: 61
-Node, global: 26 - local: X - shadow: 17 - domain: 62
-Node, global: 27 - local: X - shadow: 18 - domain: 63
-Node, global: 28 - local: X - shadow: 19 - domain: 64
-Node, global: 29 - local: X - shadow: 20 - domain: 65
-Node, global: 30 - local: X - shadow: 21 - domain: 66
-Node, global: 31 - local: X - shadow: 22 - domain: 67
-Node, global: 32 - local: X - shadow: 23 - domain: 68
-Node, global: 33 - local: X - shadow: 24 - domain: 69
-Node, global: 34 - local: X - shadow: 25 - domain: 70
-Node, global: 35 - local: X - shadow: 26 - domain: 71
-Node, global: 36 - local: X - shadow: 27 - domain: 72
-Node, global: 37 - local: 9 - shadow: X - domain: 9
-Node, global: 38 - local: 10 - shadow: X - domain: 10
-Node, global: 39 - local: 11 - shadow: X - domain: 11
-Node, global: 40 - local: X - shadow: 28 - domain: 73
-Node, global: 41 - local: X - shadow: 29 - domain: 74
-Node, global: 42 - local: 12 - shadow: X - domain: 12
-Node, global: 43 - local: 13 - shadow: X - domain: 13
-Node, global: 44 - local: 14 - shadow: X - domain: 14
-Node, global: 45 - local: X - shadow: 30 - domain: 75
-Node, global: 46 - local: X - shadow: 31 - domain: 76
-Node, global: 47 - local: 15 - shadow: X - domain: 15
-Node, global: 48 - local: 16 - shadow: X - domain: 16
-Node, global: 49 - local: 17 - shadow: X - domain: 17
-Node, global: 50 - local: X - shadow: 32 - domain: 77
-Node, global: 51 - local: X - shadow: 33 - domain: 78
-Node, global: 52 - local: X - shadow: 34 - domain: 79
-Node, global: 53 - local: X - shadow: 35 - domain: 80
-Node, global: 54 - local: X - shadow: 36 - domain: 81
-Node, global: 55 - local: X - shadow: 37 - domain: 82
-Node, global: 56 - local: X - shadow: 38 - domain: 83
-Node, global: 57 - local: X - shadow: 39 - domain: 84
-Node, global: 58 - local: X - shadow: 40 - domain: 85
-Node, global: 59 - local: X - shadow: 41 - domain: 86
-Node, global: 60 - local: X - shadow: 42 - domain: 87
-Node, global: 61 - local: X - shadow: 43 - domain: 88
-Node, global: 62 - local: 18 - shadow: X - domain: 18
-Node, global: 63 - local: 19 - shadow: X - domain: 19
-Node, global: 64 - local: 20 - shadow: X - domain: 20
-Node, global: 65 - local: X - shadow: 44 - domain: 89
-Node, global: 66 - local: X - shadow: 45 - domain: 90
-Node, global: 67 - local: 21 - shadow: X - domain: 21
-Node, global: 68 - local: 22 - shadow: X - domain: 22
-Node, global: 69 - local: 23 - shadow: X - domain: 23
-Node, global: 70 - local: X - shadow: 46 - domain: 91
-Node, global: 71 - local: X - shadow: 47 - domain: 92
-Node, global: 72 - local: 24 - shadow: X - domain: 24
-Node, global: 73 - local: 25 - shadow: X - domain: 25
-Node, global: 74 - local: 26 - shadow: X - domain: 26
-Node, global: 75 - local: X - shadow: 48 - domain: 93
-Node, global: 76 - local: X - shadow: 49 - domain: 94
-Node, global: 77 - local: X - shadow: 50 - domain: 95
-Node, global: 78 - local: X - shadow: 51 - domain: 96
-Node, global: 79 - local: X - shadow: 52 - domain: 97
-Node, global: 80 - local: X - shadow: 53 - domain: 98
-Node, global: 81 - local: X - shadow: 54 - domain: 99
-Node, global: 82 - local: X - shadow: 55 - domain: 100
-Node, global: 83 - local: X - shadow: 56 - domain: 101
-Node, global: 84 - local: X - shadow: 57 - domain: 102
-Node, global: 85 - local: X - shadow: 58 - domain: 103
-Node, global: 86 - local: X - shadow: 59 - domain: 104
-Node, global: 87 - local: 27 - shadow: X - domain: 27
-Node, global: 88 - local: 28 - shadow: X - domain: 28
-Node, global: 89 - local: 29 - shadow: X - domain: 29
-Node, global: 90 - local: X - shadow: 60 - domain: 105
-Node, global: 91 - local: X - shadow: 61 - domain: 106
-Node, global: 92 - local: 30 - shadow: X - domain: 30
-Node, global: 93 - local: 31 - shadow: X - domain: 31
-Node, global: 94 - local: 32 - shadow: X - domain: 32
-Node, global: 95 - local: X - shadow: 62 - domain: 107
-Node, global: 96 - local: X - shadow: 63 - domain: 108
-Node, global: 97 - local: 33 - shadow: X - domain: 33
-Node, global: 98 - local: 34 - shadow: X - domain: 34
-Node, global: 99 - local: 35 - shadow: X - domain: 35
-Node, global: 100 - local: X - shadow: 64 - domain: 109
-Node, global: 101 - local: X - shadow: 65 - domain: 110
-Node, global: 102 - local: X - shadow: 66 - domain: 111
-Node, global: 103 - local: X - shadow: 67 - domain: 112
-Node, global: 104 - local: X - shadow: 68 - domain: 113
-Node, global: 105 - local: X - shadow: 69 - domain: 114
-Node, global: 106 - local: X - shadow: 70 - domain: 115
-Node, global: 107 - local: X - shadow: 71 - domain: 116
-Node, global: 108 - local: X - shadow: 72 - domain: 117
-Node, global: 109 - local: X - shadow: 73 - domain: 118
-Node, global: 110 - local: X - shadow: 74 - domain: 119
-Node, global: 111 - local: X - shadow: 75 - domain: 120
-Node, global: 112 - local: 36 - shadow: X - domain: 36
-Node, global: 113 - local: 37 - shadow: X - domain: 37
-Node, global: 114 - local: 38 - shadow: X - domain: 38
-Node, global: 115 - local: X - shadow: 76 - domain: 121
-Node, global: 116 - local: X - shadow: 77 - domain: 122
-Node, global: 117 - local: 39 - shadow: X - domain: 39
-Node, global: 118 - local: 40 - shadow: X - domain: 40
-Node, global: 119 - local: 41 - shadow: X - domain: 41
-Node, global: 120 - local: X - shadow: 78 - domain: 123
-Node, global: 121 - local: X - shadow: 79 - domain: 124
-Node, global: 122 - local: 42 - shadow: X - domain: 42
-Node, global: 123 - local: 43 - shadow: X - domain: 43
-Node, global: 124 - local: 44 - shadow: X - domain: 44
-
-Node, local: 0 - global: 12
-Node, local: 1 - global: 13
-Node, local: 2 - global: 14
-Node, local: 3 - global: 17
-Node, local: 4 - global: 18
-Node, local: 5 - global: 19
-Node, local: 6 - global: 22
-Node, local: 7 - global: 23
-Node, local: 8 - global: 24
-Node, local: 9 - global: 37
-Node, local: 10 - global: 38
-Node, local: 11 - global: 39
-Node, local: 12 - global: 42
-Node, local: 13 - global: 43
-Node, local: 14 - global: 44
-Node, local: 15 - global: 47
-Node, local: 16 - global: 48
-Node, local: 17 - global: 49
-Node, local: 18 - global: 62
-Node, local: 19 - global: 63
-Node, local: 20 - global: 64
-Node, local: 21 - global: 67
-Node, local: 22 - global: 68
-Node, local: 23 - global: 69
-Node, local: 24 - global: 72
-Node, local: 25 - global: 73
-Node, local: 26 - global: 74
-Node, local: 27 - global: 87
-Node, local: 28 - global: 88
-Node, local: 29 - global: 89
-Node, local: 30 - global: 92
-Node, local: 31 - global: 93
-Node, local: 32 - global: 94
-Node, local: 33 - global: 97
-Node, local: 34 - global: 98
-Node, local: 35 - global: 99
-Node, local: 36 - global: 112
-Node, local: 37 - global: 113
-Node, local: 38 - global: 114
-Node, local: 39 - global: 117
-Node, local: 40 - global: 118
-Node, local: 41 - global: 119
-Node, local: 42 - global: 122
-Node, local: 43 - global: 123
-Node, local: 44 - global: 124
-
-Node, domain: 0 - global: 12
-Node, domain: 1 - global: 13
-Node, domain: 2 - global: 14
-Node, domain: 3 - global: 17
-Node, domain: 4 - global: 18
-Node, domain: 5 - global: 19
-Node, domain: 6 - global: 22
-Node, domain: 7 - global: 23
-Node, domain: 8 - global: 24
-Node, domain: 9 - global: 37
-Node, domain: 10 - global: 38
-Node, domain: 11 - global: 39
-Node, domain: 12 - global: 42
-Node, domain: 13 - global: 43
-Node, domain: 14 - global: 44
-Node, domain: 15 - global: 47
-Node, domain: 16 - global: 48
-Node, domain: 17 - global: 49
-Node, domain: 18 - global: 62
-Node, domain: 19 - global: 63
-Node, domain: 20 - global: 64
-Node, domain: 21 - global: 67
-Node, domain: 22 - global: 68
-Node, domain: 23 - global: 69
-Node, domain: 24 - global: 72
-Node, domain: 25 - global: 73
-Node, domain: 26 - global: 74
-Node, domain: 27 - global: 87
-Node, domain: 28 - global: 88
-Node, domain: 29 - global: 89
-Node, domain: 30 - global: 92
-Node, domain: 31 - global: 93
-Node, domain: 32 - global: 94
-Node, domain: 33 - global: 97
-Node, domain: 34 - global: 98
-Node, domain: 35 - global: 99
-Node, domain: 36 - global: 112
-Node, domain: 37 - global: 113
-Node, domain: 38 - global: 114
-Node, domain: 39 - global: 117
-Node, domain: 40 - global: 118
-Node, domain: 41 - global: 119
-Node, domain: 42 - global: 122
-Node, domain: 43 - global: 123
-Node, domain: 44 - global: 124
-Node, domain: 45 - global: 0
-Node, domain: 46 - global: 1
-Node, domain: 47 - global: 2
-Node, domain: 48 - global: 3
-Node, domain: 49 - global: 4
-Node, domain: 50 - global: 5
-Node, domain: 51 - global: 6
-Node, domain: 52 - global: 7
-Node, domain: 53 - global: 8
-Node, domain: 54 - global: 9
-Node, domain: 55 - global: 10
-Node, domain: 56 - global: 11
-Node, domain: 57 - global: 15
-Node, domain: 58 - global: 16
-Node, domain: 59 - global: 20
-Node, domain: 60 - global: 21
-Node, domain: 61 - global: 25
-Node, domain: 62 - global: 26
-Node, domain: 63 - global: 27
-Node, domain: 64 - global: 28
-Node, domain: 65 - global: 29
-Node, domain: 66 - global: 30
-Node, domain: 67 - global: 31
-Node, domain: 68 - global: 32
-Node, domain: 69 - global: 33
-Node, domain: 70 - global: 34
-Node, domain: 71 - global: 35
-Node, domain: 72 - global: 36
-Node, domain: 73 - global: 40
-Node, domain: 74 - global: 41
-Node, domain: 75 - global: 45
-Node, domain: 76 - global: 46
-Node, domain: 77 - global: 50
-Node, domain: 78 - global: 51
-Node, domain: 79 - global: 52
-Node, domain: 80 - global: 53
-Node, domain: 81 - global: 54
-Node, domain: 82 - global: 55
-Node, domain: 83 - global: 56
-Node, domain: 84 - global: 57
-Node, domain: 85 - global: 58
-Node, domain: 86 - global: 59
-Node, domain: 87 - global: 60
-Node, domain: 88 - global: 61
-Node, domain: 89 - global: 65
-Node, domain: 90 - global: 66
-Node, domain: 91 - global: 70
-Node, domain: 92 - global: 71
-Node, domain: 93 - global: 75
-Node, domain: 94 - global: 76
-Node, domain: 95 - global: 77
-Node, domain: 96 - global: 78
-Node, domain: 97 - global: 79
-Node, domain: 98 - global: 80
-Node, domain: 99 - global: 81
-Node, domain: 100 - global: 82
-Node, domain: 101 - global: 83
-Node, domain: 102 - global: 84
-Node, domain: 103 - global: 85
-Node, domain: 104 - global: 86
-Node, domain: 105 - global: 90
-Node, domain: 106 - global: 91
-Node, domain: 107 - global: 95
-Node, domain: 108 - global: 96
-Node, domain: 109 - global: 100
-Node, domain: 110 - global: 101
-Node, domain: 111 - global: 102
-Node, domain: 112 - global: 103
-Node, domain: 113 - global: 104
-Node, domain: 114 - global: 105
-Node, domain: 115 - global: 106
-Node, domain: 116 - global: 107
-Node, domain: 117 - global: 108
-Node, domain: 118 - global: 109
-Node, domain: 119 - global: 110
-Node, domain: 120 - global: 111
-Node, domain: 121 - global: 115
-Node, domain: 122 - global: 116
-Node, domain: 123 - global: 120
-Node, domain: 124 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp-shadowDepth2.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,412 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061ca8)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 3, 3, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 16
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 1 - domain: 17
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: 2 - domain: 18
-Element, global: 9 - local: X - shadow: 3 - domain: 19
-Element, global: 10 - local: X - shadow: 4 - domain: 20
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: X - domain: X
-Element, global: 14 - local: X - shadow: X - domain: X
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: 4 - shadow: X - domain: 4
-Element, global: 17 - local: 5 - shadow: X - domain: 5
-Element, global: 18 - local: X - shadow: 5 - domain: 21
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: 6 - shadow: X - domain: 6
-Element, global: 21 - local: 7 - shadow: X - domain: 7
-Element, global: 22 - local: X - shadow: 6 - domain: 22
-Element, global: 23 - local: X - shadow: X - domain: X
-Element, global: 24 - local: X - shadow: 7 - domain: 23
-Element, global: 25 - local: X - shadow: 8 - domain: 24
-Element, global: 26 - local: X - shadow: 9 - domain: 25
-Element, global: 27 - local: X - shadow: X - domain: X
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: X - domain: X
-Element, global: 30 - local: X - shadow: X - domain: X
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: 8 - shadow: X - domain: 8
-Element, global: 33 - local: 9 - shadow: X - domain: 9
-Element, global: 34 - local: X - shadow: 10 - domain: 26
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: 10 - shadow: X - domain: 10
-Element, global: 37 - local: 11 - shadow: X - domain: 11
-Element, global: 38 - local: X - shadow: 11 - domain: 27
-Element, global: 39 - local: X - shadow: X - domain: X
-Element, global: 40 - local: X - shadow: 12 - domain: 28
-Element, global: 41 - local: X - shadow: 13 - domain: 29
-Element, global: 42 - local: X - shadow: 14 - domain: 30
-Element, global: 43 - local: X - shadow: X - domain: X
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: X - domain: X
-Element, global: 46 - local: X - shadow: X - domain: X
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: 12 - shadow: X - domain: 12
-Element, global: 49 - local: 13 - shadow: X - domain: 13
-Element, global: 50 - local: X - shadow: 15 - domain: 31
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: 14 - shadow: X - domain: 14
-Element, global: 53 - local: 15 - shadow: X - domain: 15
-Element, global: 54 - local: X - shadow: 16 - domain: 32
-Element, global: 55 - local: X - shadow: X - domain: X
-Element, global: 56 - local: X - shadow: 17 - domain: 33
-Element, global: 57 - local: X - shadow: 18 - domain: 34
-Element, global: 58 - local: X - shadow: 19 - domain: 35
-Element, global: 59 - local: X - shadow: X - domain: X
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: X - domain: X
-Element, global: 62 - local: X - shadow: X - domain: X
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 16
-Element, local: 5 - global: 17
-Element, local: 6 - global: 20
-Element, local: 7 - global: 21
-Element, local: 8 - global: 32
-Element, local: 9 - global: 33
-Element, local: 10 - global: 36
-Element, local: 11 - global: 37
-Element, local: 12 - global: 48
-Element, local: 13 - global: 49
-Element, local: 14 - global: 52
-Element, local: 15 - global: 53
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 16
-Element, domain: 5 - global: 17
-Element, domain: 6 - global: 20
-Element, domain: 7 - global: 21
-Element, domain: 8 - global: 32
-Element, domain: 9 - global: 33
-Element, domain: 10 - global: 36
-Element, domain: 11 - global: 37
-Element, domain: 12 - global: 48
-Element, domain: 13 - global: 49
-Element, domain: 14 - global: 52
-Element, domain: 15 - global: 53
-Element, domain: 16 - global: 2
-Element, domain: 17 - global: 6
-Element, domain: 18 - global: 8
-Element, domain: 19 - global: 9
-Element, domain: 20 - global: 10
-Element, domain: 21 - global: 18
-Element, domain: 22 - global: 22
-Element, domain: 23 - global: 24
-Element, domain: 24 - global: 25
-Element, domain: 25 - global: 26
-Element, domain: 26 - global: 34
-Element, domain: 27 - global: 38
-Element, domain: 28 - global: 40
-Element, domain: 29 - global: 41
-Element, domain: 30 - global: 42
-Element, domain: 31 - global: 50
-Element, domain: 32 - global: 54
-Element, domain: 33 - global: 56
-Element, domain: 34 - global: 57
-Element, domain: 35 - global: 58
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 45
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 1 - domain: 46
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 2 - domain: 47
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: 3 - domain: 48
-Node, global: 16 - local: X - shadow: 4 - domain: 49
-Node, global: 17 - local: X - shadow: 5 - domain: 50
-Node, global: 18 - local: X - shadow: 6 - domain: 51
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: 9 - shadow: X - domain: 9
-Node, global: 26 - local: 10 - shadow: X - domain: 10
-Node, global: 27 - local: 11 - shadow: X - domain: 11
-Node, global: 28 - local: X - shadow: 7 - domain: 52
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: 12 - shadow: X - domain: 12
-Node, global: 31 - local: 13 - shadow: X - domain: 13
-Node, global: 32 - local: 14 - shadow: X - domain: 14
-Node, global: 33 - local: X - shadow: 8 - domain: 53
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: 15 - shadow: X - domain: 15
-Node, global: 36 - local: 16 - shadow: X - domain: 16
-Node, global: 37 - local: 17 - shadow: X - domain: 17
-Node, global: 38 - local: X - shadow: 9 - domain: 54
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: X - shadow: 10 - domain: 55
-Node, global: 41 - local: X - shadow: 11 - domain: 56
-Node, global: 42 - local: X - shadow: 12 - domain: 57
-Node, global: 43 - local: X - shadow: 13 - domain: 58
-Node, global: 44 - local: X - shadow: X - domain: X
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: X - domain: X
-Node, global: 47 - local: X - shadow: X - domain: X
-Node, global: 48 - local: X - shadow: X - domain: X
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: 18 - shadow: X - domain: 18
-Node, global: 51 - local: 19 - shadow: X - domain: 19
-Node, global: 52 - local: 20 - shadow: X - domain: 20
-Node, global: 53 - local: X - shadow: 14 - domain: 59
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: 21 - shadow: X - domain: 21
-Node, global: 56 - local: 22 - shadow: X - domain: 22
-Node, global: 57 - local: 23 - shadow: X - domain: 23
-Node, global: 58 - local: X - shadow: 15 - domain: 60
-Node, global: 59 - local: X - shadow: X - domain: X
-Node, global: 60 - local: 24 - shadow: X - domain: 24
-Node, global: 61 - local: 25 - shadow: X - domain: 25
-Node, global: 62 - local: 26 - shadow: X - domain: 26
-Node, global: 63 - local: X - shadow: 16 - domain: 61
-Node, global: 64 - local: X - shadow: X - domain: X
-Node, global: 65 - local: X - shadow: 17 - domain: 62
-Node, global: 66 - local: X - shadow: 18 - domain: 63
-Node, global: 67 - local: X - shadow: 19 - domain: 64
-Node, global: 68 - local: X - shadow: 20 - domain: 65
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: X - domain: X
-Node, global: 72 - local: X - shadow: X - domain: X
-Node, global: 73 - local: X - shadow: X - domain: X
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: 27 - shadow: X - domain: 27
-Node, global: 76 - local: 28 - shadow: X - domain: 28
-Node, global: 77 - local: 29 - shadow: X - domain: 29
-Node, global: 78 - local: X - shadow: 21 - domain: 66
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: 30 - shadow: X - domain: 30
-Node, global: 81 - local: 31 - shadow: X - domain: 31
-Node, global: 82 - local: 32 - shadow: X - domain: 32
-Node, global: 83 - local: X - shadow: 22 - domain: 67
-Node, global: 84 - local: X - shadow: X - domain: X
-Node, global: 85 - local: 33 - shadow: X - domain: 33
-Node, global: 86 - local: 34 - shadow: X - domain: 34
-Node, global: 87 - local: 35 - shadow: X - domain: 35
-Node, global: 88 - local: X - shadow: 23 - domain: 68
-Node, global: 89 - local: X - shadow: X - domain: X
-Node, global: 90 - local: X - shadow: 24 - domain: 69
-Node, global: 91 - local: X - shadow: 25 - domain: 70
-Node, global: 92 - local: X - shadow: 26 - domain: 71
-Node, global: 93 - local: X - shadow: 27 - domain: 72
-Node, global: 94 - local: X - shadow: X - domain: X
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: X - domain: X
-Node, global: 97 - local: X - shadow: X - domain: X
-Node, global: 98 - local: X - shadow: X - domain: X
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: 36 - shadow: X - domain: 36
-Node, global: 101 - local: 37 - shadow: X - domain: 37
-Node, global: 102 - local: 38 - shadow: X - domain: 38
-Node, global: 103 - local: X - shadow: 28 - domain: 73
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: 39 - shadow: X - domain: 39
-Node, global: 106 - local: 40 - shadow: X - domain: 40
-Node, global: 107 - local: 41 - shadow: X - domain: 41
-Node, global: 108 - local: X - shadow: 29 - domain: 74
-Node, global: 109 - local: X - shadow: X - domain: X
-Node, global: 110 - local: 42 - shadow: X - domain: 42
-Node, global: 111 - local: 43 - shadow: X - domain: 43
-Node, global: 112 - local: 44 - shadow: X - domain: 44
-Node, global: 113 - local: X - shadow: 30 - domain: 75
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: X - shadow: 31 - domain: 76
-Node, global: 116 - local: X - shadow: 32 - domain: 77
-Node, global: 117 - local: X - shadow: 33 - domain: 78
-Node, global: 118 - local: X - shadow: 34 - domain: 79
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: X - domain: X
-Node, global: 122 - local: X - shadow: X - domain: X
-Node, global: 123 - local: X - shadow: X - domain: X
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 25
-Node, local: 10 - global: 26
-Node, local: 11 - global: 27
-Node, local: 12 - global: 30
-Node, local: 13 - global: 31
-Node, local: 14 - global: 32
-Node, local: 15 - global: 35
-Node, local: 16 - global: 36
-Node, local: 17 - global: 37
-Node, local: 18 - global: 50
-Node, local: 19 - global: 51
-Node, local: 20 - global: 52
-Node, local: 21 - global: 55
-Node, local: 22 - global: 56
-Node, local: 23 - global: 57
-Node, local: 24 - global: 60
-Node, local: 25 - global: 61
-Node, local: 26 - global: 62
-Node, local: 27 - global: 75
-Node, local: 28 - global: 76
-Node, local: 29 - global: 77
-Node, local: 30 - global: 80
-Node, local: 31 - global: 81
-Node, local: 32 - global: 82
-Node, local: 33 - global: 85
-Node, local: 34 - global: 86
-Node, local: 35 - global: 87
-Node, local: 36 - global: 100
-Node, local: 37 - global: 101
-Node, local: 38 - global: 102
-Node, local: 39 - global: 105
-Node, local: 40 - global: 106
-Node, local: 41 - global: 107
-Node, local: 42 - global: 110
-Node, local: 43 - global: 111
-Node, local: 44 - global: 112
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 25
-Node, domain: 10 - global: 26
-Node, domain: 11 - global: 27
-Node, domain: 12 - global: 30
-Node, domain: 13 - global: 31
-Node, domain: 14 - global: 32
-Node, domain: 15 - global: 35
-Node, domain: 16 - global: 36
-Node, domain: 17 - global: 37
-Node, domain: 18 - global: 50
-Node, domain: 19 - global: 51
-Node, domain: 20 - global: 52
-Node, domain: 21 - global: 55
-Node, domain: 22 - global: 56
-Node, domain: 23 - global: 57
-Node, domain: 24 - global: 60
-Node, domain: 25 - global: 61
-Node, domain: 26 - global: 62
-Node, domain: 27 - global: 75
-Node, domain: 28 - global: 76
-Node, domain: 29 - global: 77
-Node, domain: 30 - global: 80
-Node, domain: 31 - global: 81
-Node, domain: 32 - global: 82
-Node, domain: 33 - global: 85
-Node, domain: 34 - global: 86
-Node, domain: 35 - global: 87
-Node, domain: 36 - global: 100
-Node, domain: 37 - global: 101
-Node, domain: 38 - global: 102
-Node, domain: 39 - global: 105
-Node, domain: 40 - global: 106
-Node, domain: 41 - global: 107
-Node, domain: 42 - global: 110
-Node, domain: 43 - global: 111
-Node, domain: 44 - global: 112
-Node, domain: 45 - global: 3
-Node, domain: 46 - global: 8
-Node, domain: 47 - global: 13
-Node, domain: 48 - global: 15
-Node, domain: 49 - global: 16
-Node, domain: 50 - global: 17
-Node, domain: 51 - global: 18
-Node, domain: 52 - global: 28
-Node, domain: 53 - global: 33
-Node, domain: 54 - global: 38
-Node, domain: 55 - global: 40
-Node, domain: 56 - global: 41
-Node, domain: 57 - global: 42
-Node, domain: 58 - global: 43
-Node, domain: 59 - global: 53
-Node, domain: 60 - global: 58
-Node, domain: 61 - global: 63
-Node, domain: 62 - global: 65
-Node, domain: 63 - global: 66
-Node, domain: 64 - global: 67
-Node, domain: 65 - global: 68
-Node, domain: 66 - global: 78
-Node, domain: 67 - global: 83
-Node, domain: 68 - global: 88
-Node, domain: 69 - global: 90
-Node, domain: 70 - global: 91
-Node, domain: 71 - global: 92
-Node, domain: 72 - global: 93
-Node, domain: 73 - global: 103
-Node, domain: 74 - global: 108
-Node, domain: 75 - global: 113
-Node, domain: 76 - global: 115
-Node, domain: 77 - global: 116
-Node, domain: 78 - global: 117
-Node, domain: 79 - global: 118
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,412 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060c58)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 3, 3, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: 0 - domain: 16
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: 1 - domain: 17
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: 2 - domain: 18
-Element, global: 10 - local: X - shadow: 3 - domain: 19
-Element, global: 11 - local: X - shadow: 4 - domain: 20
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: X - domain: X
-Element, global: 14 - local: X - shadow: X - domain: X
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: 5 - domain: 21
-Element, global: 18 - local: 4 - shadow: X - domain: 4
-Element, global: 19 - local: 5 - shadow: X - domain: 5
-Element, global: 20 - local: X - shadow: X - domain: X
-Element, global: 21 - local: X - shadow: 6 - domain: 22
-Element, global: 22 - local: 6 - shadow: X - domain: 6
-Element, global: 23 - local: 7 - shadow: X - domain: 7
-Element, global: 24 - local: X - shadow: X - domain: X
-Element, global: 25 - local: X - shadow: 7 - domain: 23
-Element, global: 26 - local: X - shadow: 8 - domain: 24
-Element, global: 27 - local: X - shadow: 9 - domain: 25
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: X - domain: X
-Element, global: 30 - local: X - shadow: X - domain: X
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: 10 - domain: 26
-Element, global: 34 - local: 8 - shadow: X - domain: 8
-Element, global: 35 - local: 9 - shadow: X - domain: 9
-Element, global: 36 - local: X - shadow: X - domain: X
-Element, global: 37 - local: X - shadow: 11 - domain: 27
-Element, global: 38 - local: 10 - shadow: X - domain: 10
-Element, global: 39 - local: 11 - shadow: X - domain: 11
-Element, global: 40 - local: X - shadow: X - domain: X
-Element, global: 41 - local: X - shadow: 12 - domain: 28
-Element, global: 42 - local: X - shadow: 13 - domain: 29
-Element, global: 43 - local: X - shadow: 14 - domain: 30
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: X - domain: X
-Element, global: 46 - local: X - shadow: X - domain: X
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: 15 - domain: 31
-Element, global: 50 - local: 12 - shadow: X - domain: 12
-Element, global: 51 - local: 13 - shadow: X - domain: 13
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: 16 - domain: 32
-Element, global: 54 - local: 14 - shadow: X - domain: 14
-Element, global: 55 - local: 15 - shadow: X - domain: 15
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: 17 - domain: 33
-Element, global: 58 - local: X - shadow: 18 - domain: 34
-Element, global: 59 - local: X - shadow: 19 - domain: 35
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: X - domain: X
-Element, global: 62 - local: X - shadow: X - domain: X
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 18
-Element, local: 5 - global: 19
-Element, local: 6 - global: 22
-Element, local: 7 - global: 23
-Element, local: 8 - global: 34
-Element, local: 9 - global: 35
-Element, local: 10 - global: 38
-Element, local: 11 - global: 39
-Element, local: 12 - global: 50
-Element, local: 13 - global: 51
-Element, local: 14 - global: 54
-Element, local: 15 - global: 55
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 18
-Element, domain: 5 - global: 19
-Element, domain: 6 - global: 22
-Element, domain: 7 - global: 23
-Element, domain: 8 - global: 34
-Element, domain: 9 - global: 35
-Element, domain: 10 - global: 38
-Element, domain: 11 - global: 39
-Element, domain: 12 - global: 50
-Element, domain: 13 - global: 51
-Element, domain: 14 - global: 54
-Element, domain: 15 - global: 55
-Element, domain: 16 - global: 1
-Element, domain: 17 - global: 5
-Element, domain: 18 - global: 9
-Element, domain: 19 - global: 10
-Element, domain: 20 - global: 11
-Element, domain: 21 - global: 17
-Element, domain: 22 - global: 21
-Element, domain: 23 - global: 25
-Element, domain: 24 - global: 26
-Element, domain: 25 - global: 27
-Element, domain: 26 - global: 33
-Element, domain: 27 - global: 37
-Element, domain: 28 - global: 41
-Element, domain: 29 - global: 42
-Element, domain: 30 - global: 43
-Element, domain: 31 - global: 49
-Element, domain: 32 - global: 53
-Element, domain: 33 - global: 57
-Element, domain: 34 - global: 58
-Element, domain: 35 - global: 59
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: 0 - domain: 45
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: 1 - domain: 46
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: 2 - domain: 47
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 3 - domain: 48
-Node, global: 17 - local: X - shadow: 4 - domain: 49
-Node, global: 18 - local: X - shadow: 5 - domain: 50
-Node, global: 19 - local: X - shadow: 6 - domain: 51
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: 7 - domain: 52
-Node, global: 27 - local: 9 - shadow: X - domain: 9
-Node, global: 28 - local: 10 - shadow: X - domain: 10
-Node, global: 29 - local: 11 - shadow: X - domain: 11
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: 8 - domain: 53
-Node, global: 32 - local: 12 - shadow: X - domain: 12
-Node, global: 33 - local: 13 - shadow: X - domain: 13
-Node, global: 34 - local: 14 - shadow: X - domain: 14
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: 9 - domain: 54
-Node, global: 37 - local: 15 - shadow: X - domain: 15
-Node, global: 38 - local: 16 - shadow: X - domain: 16
-Node, global: 39 - local: 17 - shadow: X - domain: 17
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: 10 - domain: 55
-Node, global: 42 - local: X - shadow: 11 - domain: 56
-Node, global: 43 - local: X - shadow: 12 - domain: 57
-Node, global: 44 - local: X - shadow: 13 - domain: 58
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: X - domain: X
-Node, global: 47 - local: X - shadow: X - domain: X
-Node, global: 48 - local: X - shadow: X - domain: X
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: 14 - domain: 59
-Node, global: 52 - local: 18 - shadow: X - domain: 18
-Node, global: 53 - local: 19 - shadow: X - domain: 19
-Node, global: 54 - local: 20 - shadow: X - domain: 20
-Node, global: 55 - local: X - shadow: X - domain: X
-Node, global: 56 - local: X - shadow: 15 - domain: 60
-Node, global: 57 - local: 21 - shadow: X - domain: 21
-Node, global: 58 - local: 22 - shadow: X - domain: 22
-Node, global: 59 - local: 23 - shadow: X - domain: 23
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 16 - domain: 61
-Node, global: 62 - local: 24 - shadow: X - domain: 24
-Node, global: 63 - local: 25 - shadow: X - domain: 25
-Node, global: 64 - local: 26 - shadow: X - domain: 26
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 17 - domain: 62
-Node, global: 67 - local: X - shadow: 18 - domain: 63
-Node, global: 68 - local: X - shadow: 19 - domain: 64
-Node, global: 69 - local: X - shadow: 20 - domain: 65
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: X - domain: X
-Node, global: 72 - local: X - shadow: X - domain: X
-Node, global: 73 - local: X - shadow: X - domain: X
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: 21 - domain: 66
-Node, global: 77 - local: 27 - shadow: X - domain: 27
-Node, global: 78 - local: 28 - shadow: X - domain: 28
-Node, global: 79 - local: 29 - shadow: X - domain: 29
-Node, global: 80 - local: X - shadow: X - domain: X
-Node, global: 81 - local: X - shadow: 22 - domain: 67
-Node, global: 82 - local: 30 - shadow: X - domain: 30
-Node, global: 83 - local: 31 - shadow: X - domain: 31
-Node, global: 84 - local: 32 - shadow: X - domain: 32
-Node, global: 85 - local: X - shadow: X - domain: X
-Node, global: 86 - local: X - shadow: 23 - domain: 68
-Node, global: 87 - local: 33 - shadow: X - domain: 33
-Node, global: 88 - local: 34 - shadow: X - domain: 34
-Node, global: 89 - local: 35 - shadow: X - domain: 35
-Node, global: 90 - local: X - shadow: X - domain: X
-Node, global: 91 - local: X - shadow: 24 - domain: 69
-Node, global: 92 - local: X - shadow: 25 - domain: 70
-Node, global: 93 - local: X - shadow: 26 - domain: 71
-Node, global: 94 - local: X - shadow: 27 - domain: 72
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: X - domain: X
-Node, global: 97 - local: X - shadow: X - domain: X
-Node, global: 98 - local: X - shadow: X - domain: X
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: 28 - domain: 73
-Node, global: 102 - local: 36 - shadow: X - domain: 36
-Node, global: 103 - local: 37 - shadow: X - domain: 37
-Node, global: 104 - local: 38 - shadow: X - domain: 38
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 29 - domain: 74
-Node, global: 107 - local: 39 - shadow: X - domain: 39
-Node, global: 108 - local: 40 - shadow: X - domain: 40
-Node, global: 109 - local: 41 - shadow: X - domain: 41
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 30 - domain: 75
-Node, global: 112 - local: 42 - shadow: X - domain: 42
-Node, global: 113 - local: 43 - shadow: X - domain: 43
-Node, global: 114 - local: 44 - shadow: X - domain: 44
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: 31 - domain: 76
-Node, global: 117 - local: X - shadow: 32 - domain: 77
-Node, global: 118 - local: X - shadow: 33 - domain: 78
-Node, global: 119 - local: X - shadow: 34 - domain: 79
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: X - domain: X
-Node, global: 122 - local: X - shadow: X - domain: X
-Node, global: 123 - local: X - shadow: X - domain: X
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 27
-Node, local: 10 - global: 28
-Node, local: 11 - global: 29
-Node, local: 12 - global: 32
-Node, local: 13 - global: 33
-Node, local: 14 - global: 34
-Node, local: 15 - global: 37
-Node, local: 16 - global: 38
-Node, local: 17 - global: 39
-Node, local: 18 - global: 52
-Node, local: 19 - global: 53
-Node, local: 20 - global: 54
-Node, local: 21 - global: 57
-Node, local: 22 - global: 58
-Node, local: 23 - global: 59
-Node, local: 24 - global: 62
-Node, local: 25 - global: 63
-Node, local: 26 - global: 64
-Node, local: 27 - global: 77
-Node, local: 28 - global: 78
-Node, local: 29 - global: 79
-Node, local: 30 - global: 82
-Node, local: 31 - global: 83
-Node, local: 32 - global: 84
-Node, local: 33 - global: 87
-Node, local: 34 - global: 88
-Node, local: 35 - global: 89
-Node, local: 36 - global: 102
-Node, local: 37 - global: 103
-Node, local: 38 - global: 104
-Node, local: 39 - global: 107
-Node, local: 40 - global: 108
-Node, local: 41 - global: 109
-Node, local: 42 - global: 112
-Node, local: 43 - global: 113
-Node, local: 44 - global: 114
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 27
-Node, domain: 10 - global: 28
-Node, domain: 11 - global: 29
-Node, domain: 12 - global: 32
-Node, domain: 13 - global: 33
-Node, domain: 14 - global: 34
-Node, domain: 15 - global: 37
-Node, domain: 16 - global: 38
-Node, domain: 17 - global: 39
-Node, domain: 18 - global: 52
-Node, domain: 19 - global: 53
-Node, domain: 20 - global: 54
-Node, domain: 21 - global: 57
-Node, domain: 22 - global: 58
-Node, domain: 23 - global: 59
-Node, domain: 24 - global: 62
-Node, domain: 25 - global: 63
-Node, domain: 26 - global: 64
-Node, domain: 27 - global: 77
-Node, domain: 28 - global: 78
-Node, domain: 29 - global: 79
-Node, domain: 30 - global: 82
-Node, domain: 31 - global: 83
-Node, domain: 32 - global: 84
-Node, domain: 33 - global: 87
-Node, domain: 34 - global: 88
-Node, domain: 35 - global: 89
-Node, domain: 36 - global: 102
-Node, domain: 37 - global: 103
-Node, domain: 38 - global: 104
-Node, domain: 39 - global: 107
-Node, domain: 40 - global: 108
-Node, domain: 41 - global: 109
-Node, domain: 42 - global: 112
-Node, domain: 43 - global: 113
-Node, domain: 44 - global: 114
-Node, domain: 45 - global: 1
-Node, domain: 46 - global: 6
-Node, domain: 47 - global: 11
-Node, domain: 48 - global: 16
-Node, domain: 49 - global: 17
-Node, domain: 50 - global: 18
-Node, domain: 51 - global: 19
-Node, domain: 52 - global: 26
-Node, domain: 53 - global: 31
-Node, domain: 54 - global: 36
-Node, domain: 55 - global: 41
-Node, domain: 56 - global: 42
-Node, domain: 57 - global: 43
-Node, domain: 58 - global: 44
-Node, domain: 59 - global: 51
-Node, domain: 60 - global: 56
-Node, domain: 61 - global: 61
-Node, domain: 62 - global: 66
-Node, domain: 63 - global: 67
-Node, domain: 64 - global: 68
-Node, domain: 65 - global: 69
-Node, domain: 66 - global: 76
-Node, domain: 67 - global: 81
-Node, domain: 68 - global: 86
-Node, domain: 69 - global: 91
-Node, domain: 70 - global: 92
-Node, domain: 71 - global: 93
-Node, domain: 72 - global: 94
-Node, domain: 73 - global: 101
-Node, domain: 74 - global: 106
-Node, domain: 75 - global: 111
-Node, domain: 76 - global: 116
-Node, domain: 77 - global: 117
-Node, domain: 78 - global: 118
-Node, domain: 79 - global: 119
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,412 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 2 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060c58)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 3, 3, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: 0 - domain: 16
-Element, global: 5 - local: X - shadow: 1 - domain: 17
-Element, global: 6 - local: X - shadow: 2 - domain: 18
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: 0 - shadow: X - domain: 0
-Element, global: 9 - local: 1 - shadow: X - domain: 1
-Element, global: 10 - local: X - shadow: 3 - domain: 19
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: 2 - shadow: X - domain: 2
-Element, global: 13 - local: 3 - shadow: X - domain: 3
-Element, global: 14 - local: X - shadow: 4 - domain: 20
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: X - domain: X
-Element, global: 18 - local: X - shadow: X - domain: X
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: X - shadow: 5 - domain: 21
-Element, global: 21 - local: X - shadow: 6 - domain: 22
-Element, global: 22 - local: X - shadow: 7 - domain: 23
-Element, global: 23 - local: X - shadow: X - domain: X
-Element, global: 24 - local: 4 - shadow: X - domain: 4
-Element, global: 25 - local: 5 - shadow: X - domain: 5
-Element, global: 26 - local: X - shadow: 8 - domain: 24
-Element, global: 27 - local: X - shadow: X - domain: X
-Element, global: 28 - local: 6 - shadow: X - domain: 6
-Element, global: 29 - local: 7 - shadow: X - domain: 7
-Element, global: 30 - local: X - shadow: 9 - domain: 25
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: X - domain: X
-Element, global: 34 - local: X - shadow: X - domain: X
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: X - shadow: 10 - domain: 26
-Element, global: 37 - local: X - shadow: 11 - domain: 27
-Element, global: 38 - local: X - shadow: 12 - domain: 28
-Element, global: 39 - local: X - shadow: X - domain: X
-Element, global: 40 - local: 8 - shadow: X - domain: 8
-Element, global: 41 - local: 9 - shadow: X - domain: 9
-Element, global: 42 - local: X - shadow: 13 - domain: 29
-Element, global: 43 - local: X - shadow: X - domain: X
-Element, global: 44 - local: 10 - shadow: X - domain: 10
-Element, global: 45 - local: 11 - shadow: X - domain: 11
-Element, global: 46 - local: X - shadow: 14 - domain: 30
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: X - domain: X
-Element, global: 50 - local: X - shadow: X - domain: X
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: X - shadow: 15 - domain: 31
-Element, global: 53 - local: X - shadow: 16 - domain: 32
-Element, global: 54 - local: X - shadow: 17 - domain: 33
-Element, global: 55 - local: X - shadow: X - domain: X
-Element, global: 56 - local: 12 - shadow: X - domain: 12
-Element, global: 57 - local: 13 - shadow: X - domain: 13
-Element, global: 58 - local: X - shadow: 18 - domain: 34
-Element, global: 59 - local: X - shadow: X - domain: X
-Element, global: 60 - local: 14 - shadow: X - domain: 14
-Element, global: 61 - local: 15 - shadow: X - domain: 15
-Element, global: 62 - local: X - shadow: 19 - domain: 35
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 8
-Element, local: 1 - global: 9
-Element, local: 2 - global: 12
-Element, local: 3 - global: 13
-Element, local: 4 - global: 24
-Element, local: 5 - global: 25
-Element, local: 6 - global: 28
-Element, local: 7 - global: 29
-Element, local: 8 - global: 40
-Element, local: 9 - global: 41
-Element, local: 10 - global: 44
-Element, local: 11 - global: 45
-Element, local: 12 - global: 56
-Element, local: 13 - global: 57
-Element, local: 14 - global: 60
-Element, local: 15 - global: 61
-
-Element, domain: 0 - global: 8
-Element, domain: 1 - global: 9
-Element, domain: 2 - global: 12
-Element, domain: 3 - global: 13
-Element, domain: 4 - global: 24
-Element, domain: 5 - global: 25
-Element, domain: 6 - global: 28
-Element, domain: 7 - global: 29
-Element, domain: 8 - global: 40
-Element, domain: 9 - global: 41
-Element, domain: 10 - global: 44
-Element, domain: 11 - global: 45
-Element, domain: 12 - global: 56
-Element, domain: 13 - global: 57
-Element, domain: 14 - global: 60
-Element, domain: 15 - global: 61
-Element, domain: 16 - global: 4
-Element, domain: 17 - global: 5
-Element, domain: 18 - global: 6
-Element, domain: 19 - global: 10
-Element, domain: 20 - global: 14
-Element, domain: 21 - global: 20
-Element, domain: 22 - global: 21
-Element, domain: 23 - global: 22
-Element, domain: 24 - global: 26
-Element, domain: 25 - global: 30
-Element, domain: 26 - global: 36
-Element, domain: 27 - global: 37
-Element, domain: 28 - global: 38
-Element, domain: 29 - global: 42
-Element, domain: 30 - global: 46
-Element, domain: 31 - global: 52
-Element, domain: 32 - global: 53
-Element, domain: 33 - global: 54
-Element, domain: 34 - global: 58
-Element, domain: 35 - global: 62
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: 0 - domain: 45
-Node, global: 6 - local: X - shadow: 1 - domain: 46
-Node, global: 7 - local: X - shadow: 2 - domain: 47
-Node, global: 8 - local: X - shadow: 3 - domain: 48
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: 0 - shadow: X - domain: 0
-Node, global: 11 - local: 1 - shadow: X - domain: 1
-Node, global: 12 - local: 2 - shadow: X - domain: 2
-Node, global: 13 - local: X - shadow: 4 - domain: 49
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: 3 - shadow: X - domain: 3
-Node, global: 16 - local: 4 - shadow: X - domain: 4
-Node, global: 17 - local: 5 - shadow: X - domain: 5
-Node, global: 18 - local: X - shadow: 5 - domain: 50
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: 6 - shadow: X - domain: 6
-Node, global: 21 - local: 7 - shadow: X - domain: 7
-Node, global: 22 - local: 8 - shadow: X - domain: 8
-Node, global: 23 - local: X - shadow: 6 - domain: 51
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: 7 - domain: 52
-Node, global: 31 - local: X - shadow: 8 - domain: 53
-Node, global: 32 - local: X - shadow: 9 - domain: 54
-Node, global: 33 - local: X - shadow: 10 - domain: 55
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: 9 - shadow: X - domain: 9
-Node, global: 36 - local: 10 - shadow: X - domain: 10
-Node, global: 37 - local: 11 - shadow: X - domain: 11
-Node, global: 38 - local: X - shadow: 11 - domain: 56
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: 12 - shadow: X - domain: 12
-Node, global: 41 - local: 13 - shadow: X - domain: 13
-Node, global: 42 - local: 14 - shadow: X - domain: 14
-Node, global: 43 - local: X - shadow: 12 - domain: 57
-Node, global: 44 - local: X - shadow: X - domain: X
-Node, global: 45 - local: 15 - shadow: X - domain: 15
-Node, global: 46 - local: 16 - shadow: X - domain: 16
-Node, global: 47 - local: 17 - shadow: X - domain: 17
-Node, global: 48 - local: X - shadow: 13 - domain: 58
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: X - domain: X
-Node, global: 52 - local: X - shadow: X - domain: X
-Node, global: 53 - local: X - shadow: X - domain: X
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: X - shadow: 14 - domain: 59
-Node, global: 56 - local: X - shadow: 15 - domain: 60
-Node, global: 57 - local: X - shadow: 16 - domain: 61
-Node, global: 58 - local: X - shadow: 17 - domain: 62
-Node, global: 59 - local: X - shadow: X - domain: X
-Node, global: 60 - local: 18 - shadow: X - domain: 18
-Node, global: 61 - local: 19 - shadow: X - domain: 19
-Node, global: 62 - local: 20 - shadow: X - domain: 20
-Node, global: 63 - local: X - shadow: 18 - domain: 63
-Node, global: 64 - local: X - shadow: X - domain: X
-Node, global: 65 - local: 21 - shadow: X - domain: 21
-Node, global: 66 - local: 22 - shadow: X - domain: 22
-Node, global: 67 - local: 23 - shadow: X - domain: 23
-Node, global: 68 - local: X - shadow: 19 - domain: 64
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: 24 - shadow: X - domain: 24
-Node, global: 71 - local: 25 - shadow: X - domain: 25
-Node, global: 72 - local: 26 - shadow: X - domain: 26
-Node, global: 73 - local: X - shadow: 20 - domain: 65
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: X - domain: X
-Node, global: 77 - local: X - shadow: X - domain: X
-Node, global: 78 - local: X - shadow: X - domain: X
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: X - shadow: 21 - domain: 66
-Node, global: 81 - local: X - shadow: 22 - domain: 67
-Node, global: 82 - local: X - shadow: 23 - domain: 68
-Node, global: 83 - local: X - shadow: 24 - domain: 69
-Node, global: 84 - local: X - shadow: X - domain: X
-Node, global: 85 - local: 27 - shadow: X - domain: 27
-Node, global: 86 - local: 28 - shadow: X - domain: 28
-Node, global: 87 - local: 29 - shadow: X - domain: 29
-Node, global: 88 - local: X - shadow: 25 - domain: 70
-Node, global: 89 - local: X - shadow: X - domain: X
-Node, global: 90 - local: 30 - shadow: X - domain: 30
-Node, global: 91 - local: 31 - shadow: X - domain: 31
-Node, global: 92 - local: 32 - shadow: X - domain: 32
-Node, global: 93 - local: X - shadow: 26 - domain: 71
-Node, global: 94 - local: X - shadow: X - domain: X
-Node, global: 95 - local: 33 - shadow: X - domain: 33
-Node, global: 96 - local: 34 - shadow: X - domain: 34
-Node, global: 97 - local: 35 - shadow: X - domain: 35
-Node, global: 98 - local: X - shadow: 27 - domain: 72
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: X - domain: X
-Node, global: 102 - local: X - shadow: X - domain: X
-Node, global: 103 - local: X - shadow: X - domain: X
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: X - shadow: 28 - domain: 73
-Node, global: 106 - local: X - shadow: 29 - domain: 74
-Node, global: 107 - local: X - shadow: 30 - domain: 75
-Node, global: 108 - local: X - shadow: 31 - domain: 76
-Node, global: 109 - local: X - shadow: X - domain: X
-Node, global: 110 - local: 36 - shadow: X - domain: 36
-Node, global: 111 - local: 37 - shadow: X - domain: 37
-Node, global: 112 - local: 38 - shadow: X - domain: 38
-Node, global: 113 - local: X - shadow: 32 - domain: 77
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: 39 - shadow: X - domain: 39
-Node, global: 116 - local: 40 - shadow: X - domain: 40
-Node, global: 117 - local: 41 - shadow: X - domain: 41
-Node, global: 118 - local: X - shadow: 33 - domain: 78
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: 42 - shadow: X - domain: 42
-Node, global: 121 - local: 43 - shadow: X - domain: 43
-Node, global: 122 - local: 44 - shadow: X - domain: 44
-Node, global: 123 - local: X - shadow: 34 - domain: 79
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 10
-Node, local: 1 - global: 11
-Node, local: 2 - global: 12
-Node, local: 3 - global: 15
-Node, local: 4 - global: 16
-Node, local: 5 - global: 17
-Node, local: 6 - global: 20
-Node, local: 7 - global: 21
-Node, local: 8 - global: 22
-Node, local: 9 - global: 35
-Node, local: 10 - global: 36
-Node, local: 11 - global: 37
-Node, local: 12 - global: 40
-Node, local: 13 - global: 41
-Node, local: 14 - global: 42
-Node, local: 15 - global: 45
-Node, local: 16 - global: 46
-Node, local: 17 - global: 47
-Node, local: 18 - global: 60
-Node, local: 19 - global: 61
-Node, local: 20 - global: 62
-Node, local: 21 - global: 65
-Node, local: 22 - global: 66
-Node, local: 23 - global: 67
-Node, local: 24 - global: 70
-Node, local: 25 - global: 71
-Node, local: 26 - global: 72
-Node, local: 27 - global: 85
-Node, local: 28 - global: 86
-Node, local: 29 - global: 87
-Node, local: 30 - global: 90
-Node, local: 31 - global: 91
-Node, local: 32 - global: 92
-Node, local: 33 - global: 95
-Node, local: 34 - global: 96
-Node, local: 35 - global: 97
-Node, local: 36 - global: 110
-Node, local: 37 - global: 111
-Node, local: 38 - global: 112
-Node, local: 39 - global: 115
-Node, local: 40 - global: 116
-Node, local: 41 - global: 117
-Node, local: 42 - global: 120
-Node, local: 43 - global: 121
-Node, local: 44 - global: 122
-
-Node, domain: 0 - global: 10
-Node, domain: 1 - global: 11
-Node, domain: 2 - global: 12
-Node, domain: 3 - global: 15
-Node, domain: 4 - global: 16
-Node, domain: 5 - global: 17
-Node, domain: 6 - global: 20
-Node, domain: 7 - global: 21
-Node, domain: 8 - global: 22
-Node, domain: 9 - global: 35
-Node, domain: 10 - global: 36
-Node, domain: 11 - global: 37
-Node, domain: 12 - global: 40
-Node, domain: 13 - global: 41
-Node, domain: 14 - global: 42
-Node, domain: 15 - global: 45
-Node, domain: 16 - global: 46
-Node, domain: 17 - global: 47
-Node, domain: 18 - global: 60
-Node, domain: 19 - global: 61
-Node, domain: 20 - global: 62
-Node, domain: 21 - global: 65
-Node, domain: 22 - global: 66
-Node, domain: 23 - global: 67
-Node, domain: 24 - global: 70
-Node, domain: 25 - global: 71
-Node, domain: 26 - global: 72
-Node, domain: 27 - global: 85
-Node, domain: 28 - global: 86
-Node, domain: 29 - global: 87
-Node, domain: 30 - global: 90
-Node, domain: 31 - global: 91
-Node, domain: 32 - global: 92
-Node, domain: 33 - global: 95
-Node, domain: 34 - global: 96
-Node, domain: 35 - global: 97
-Node, domain: 36 - global: 110
-Node, domain: 37 - global: 111
-Node, domain: 38 - global: 112
-Node, domain: 39 - global: 115
-Node, domain: 40 - global: 116
-Node, domain: 41 - global: 117
-Node, domain: 42 - global: 120
-Node, domain: 43 - global: 121
-Node, domain: 44 - global: 122
-Node, domain: 45 - global: 5
-Node, domain: 46 - global: 6
-Node, domain: 47 - global: 7
-Node, domain: 48 - global: 8
-Node, domain: 49 - global: 13
-Node, domain: 50 - global: 18
-Node, domain: 51 - global: 23
-Node, domain: 52 - global: 30
-Node, domain: 53 - global: 31
-Node, domain: 54 - global: 32
-Node, domain: 55 - global: 33
-Node, domain: 56 - global: 38
-Node, domain: 57 - global: 43
-Node, domain: 58 - global: 48
-Node, domain: 59 - global: 55
-Node, domain: 60 - global: 56
-Node, domain: 61 - global: 57
-Node, domain: 62 - global: 58
-Node, domain: 63 - global: 63
-Node, domain: 64 - global: 68
-Node, domain: 65 - global: 73
-Node, domain: 66 - global: 80
-Node, domain: 67 - global: 81
-Node, domain: 68 - global: 82
-Node, domain: 69 - global: 83
-Node, domain: 70 - global: 88
-Node, domain: 71 - global: 93
-Node, domain: 72 - global: 98
-Node, domain: 73 - global: 105
-Node, domain: 74 - global: 106
-Node, domain: 75 - global: 107
-Node, domain: 76 - global: 108
-Node, domain: 77 - global: 113
-Node, domain: 78 - global: 118
-Node, domain: 79 - global: 123
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,412 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 3 of 4 in use (4 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060c58)
-		size : (2,2,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, False }
-partitionCounts: { 2, 2, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 4 }
-	elementLocalCounts[1]: { 2, 2, 4 }
-	elementLocalCounts[2]: { 2, 2, 4 }
-	elementLocalCounts[3]: { 2, 2, 4 }
-elementDomainCounts: { 3, 3, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 5 }
-	nodeLocalCounts[1]: { 3, 3, 5 }
-	nodeLocalCounts[2]: { 3, 3, 5 }
-	nodeLocalCounts[3]: { 3, 3, 5 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: 0 - domain: 16
-Element, global: 6 - local: X - shadow: 1 - domain: 17
-Element, global: 7 - local: X - shadow: 2 - domain: 18
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: 3 - domain: 19
-Element, global: 10 - local: 0 - shadow: X - domain: 0
-Element, global: 11 - local: 1 - shadow: X - domain: 1
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: 4 - domain: 20
-Element, global: 14 - local: 2 - shadow: X - domain: 2
-Element, global: 15 - local: 3 - shadow: X - domain: 3
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: X - domain: X
-Element, global: 18 - local: X - shadow: X - domain: X
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: X - shadow: X - domain: X
-Element, global: 21 - local: X - shadow: 5 - domain: 21
-Element, global: 22 - local: X - shadow: 6 - domain: 22
-Element, global: 23 - local: X - shadow: 7 - domain: 23
-Element, global: 24 - local: X - shadow: X - domain: X
-Element, global: 25 - local: X - shadow: 8 - domain: 24
-Element, global: 26 - local: 4 - shadow: X - domain: 4
-Element, global: 27 - local: 5 - shadow: X - domain: 5
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: 9 - domain: 25
-Element, global: 30 - local: 6 - shadow: X - domain: 6
-Element, global: 31 - local: 7 - shadow: X - domain: 7
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: X - domain: X
-Element, global: 34 - local: X - shadow: X - domain: X
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: X - shadow: X - domain: X
-Element, global: 37 - local: X - shadow: 10 - domain: 26
-Element, global: 38 - local: X - shadow: 11 - domain: 27
-Element, global: 39 - local: X - shadow: 12 - domain: 28
-Element, global: 40 - local: X - shadow: X - domain: X
-Element, global: 41 - local: X - shadow: 13 - domain: 29
-Element, global: 42 - local: 8 - shadow: X - domain: 8
-Element, global: 43 - local: 9 - shadow: X - domain: 9
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: 14 - domain: 30
-Element, global: 46 - local: 10 - shadow: X - domain: 10
-Element, global: 47 - local: 11 - shadow: X - domain: 11
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: X - domain: X
-Element, global: 50 - local: X - shadow: X - domain: X
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: 15 - domain: 31
-Element, global: 54 - local: X - shadow: 16 - domain: 32
-Element, global: 55 - local: X - shadow: 17 - domain: 33
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: 18 - domain: 34
-Element, global: 58 - local: 12 - shadow: X - domain: 12
-Element, global: 59 - local: 13 - shadow: X - domain: 13
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: 19 - domain: 35
-Element, global: 62 - local: 14 - shadow: X - domain: 14
-Element, global: 63 - local: 15 - shadow: X - domain: 15
-
-Element, local: 0 - global: 10
-Element, local: 1 - global: 11
-Element, local: 2 - global: 14
-Element, local: 3 - global: 15
-Element, local: 4 - global: 26
-Element, local: 5 - global: 27
-Element, local: 6 - global: 30
-Element, local: 7 - global: 31
-Element, local: 8 - global: 42
-Element, local: 9 - global: 43
-Element, local: 10 - global: 46
-Element, local: 11 - global: 47
-Element, local: 12 - global: 58
-Element, local: 13 - global: 59
-Element, local: 14 - global: 62
-Element, local: 15 - global: 63
-
-Element, domain: 0 - global: 10
-Element, domain: 1 - global: 11
-Element, domain: 2 - global: 14
-Element, domain: 3 - global: 15
-Element, domain: 4 - global: 26
-Element, domain: 5 - global: 27
-Element, domain: 6 - global: 30
-Element, domain: 7 - global: 31
-Element, domain: 8 - global: 42
-Element, domain: 9 - global: 43
-Element, domain: 10 - global: 46
-Element, domain: 11 - global: 47
-Element, domain: 12 - global: 58
-Element, domain: 13 - global: 59
-Element, domain: 14 - global: 62
-Element, domain: 15 - global: 63
-Element, domain: 16 - global: 5
-Element, domain: 17 - global: 6
-Element, domain: 18 - global: 7
-Element, domain: 19 - global: 9
-Element, domain: 20 - global: 13
-Element, domain: 21 - global: 21
-Element, domain: 22 - global: 22
-Element, domain: 23 - global: 23
-Element, domain: 24 - global: 25
-Element, domain: 25 - global: 29
-Element, domain: 26 - global: 37
-Element, domain: 27 - global: 38
-Element, domain: 28 - global: 39
-Element, domain: 29 - global: 41
-Element, domain: 30 - global: 45
-Element, domain: 31 - global: 53
-Element, domain: 32 - global: 54
-Element, domain: 33 - global: 55
-Element, domain: 34 - global: 57
-Element, domain: 35 - global: 61
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: 0 - domain: 45
-Node, global: 7 - local: X - shadow: 1 - domain: 46
-Node, global: 8 - local: X - shadow: 2 - domain: 47
-Node, global: 9 - local: X - shadow: 3 - domain: 48
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: 4 - domain: 49
-Node, global: 12 - local: 0 - shadow: X - domain: 0
-Node, global: 13 - local: 1 - shadow: X - domain: 1
-Node, global: 14 - local: 2 - shadow: X - domain: 2
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 5 - domain: 50
-Node, global: 17 - local: 3 - shadow: X - domain: 3
-Node, global: 18 - local: 4 - shadow: X - domain: 4
-Node, global: 19 - local: 5 - shadow: X - domain: 5
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: 6 - domain: 51
-Node, global: 22 - local: 6 - shadow: X - domain: 6
-Node, global: 23 - local: 7 - shadow: X - domain: 7
-Node, global: 24 - local: 8 - shadow: X - domain: 8
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: 7 - domain: 52
-Node, global: 32 - local: X - shadow: 8 - domain: 53
-Node, global: 33 - local: X - shadow: 9 - domain: 54
-Node, global: 34 - local: X - shadow: 10 - domain: 55
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: 11 - domain: 56
-Node, global: 37 - local: 9 - shadow: X - domain: 9
-Node, global: 38 - local: 10 - shadow: X - domain: 10
-Node, global: 39 - local: 11 - shadow: X - domain: 11
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: 12 - domain: 57
-Node, global: 42 - local: 12 - shadow: X - domain: 12
-Node, global: 43 - local: 13 - shadow: X - domain: 13
-Node, global: 44 - local: 14 - shadow: X - domain: 14
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: 13 - domain: 58
-Node, global: 47 - local: 15 - shadow: X - domain: 15
-Node, global: 48 - local: 16 - shadow: X - domain: 16
-Node, global: 49 - local: 17 - shadow: X - domain: 17
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: X - domain: X
-Node, global: 52 - local: X - shadow: X - domain: X
-Node, global: 53 - local: X - shadow: X - domain: X
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: X - shadow: X - domain: X
-Node, global: 56 - local: X - shadow: 14 - domain: 59
-Node, global: 57 - local: X - shadow: 15 - domain: 60
-Node, global: 58 - local: X - shadow: 16 - domain: 61
-Node, global: 59 - local: X - shadow: 17 - domain: 62
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 18 - domain: 63
-Node, global: 62 - local: 18 - shadow: X - domain: 18
-Node, global: 63 - local: 19 - shadow: X - domain: 19
-Node, global: 64 - local: 20 - shadow: X - domain: 20
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 19 - domain: 64
-Node, global: 67 - local: 21 - shadow: X - domain: 21
-Node, global: 68 - local: 22 - shadow: X - domain: 22
-Node, global: 69 - local: 23 - shadow: X - domain: 23
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: 20 - domain: 65
-Node, global: 72 - local: 24 - shadow: X - domain: 24
-Node, global: 73 - local: 25 - shadow: X - domain: 25
-Node, global: 74 - local: 26 - shadow: X - domain: 26
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: X - domain: X
-Node, global: 77 - local: X - shadow: X - domain: X
-Node, global: 78 - local: X - shadow: X - domain: X
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: X - shadow: X - domain: X
-Node, global: 81 - local: X - shadow: 21 - domain: 66
-Node, global: 82 - local: X - shadow: 22 - domain: 67
-Node, global: 83 - local: X - shadow: 23 - domain: 68
-Node, global: 84 - local: X - shadow: 24 - domain: 69
-Node, global: 85 - local: X - shadow: X - domain: X
-Node, global: 86 - local: X - shadow: 25 - domain: 70
-Node, global: 87 - local: 27 - shadow: X - domain: 27
-Node, global: 88 - local: 28 - shadow: X - domain: 28
-Node, global: 89 - local: 29 - shadow: X - domain: 29
-Node, global: 90 - local: X - shadow: X - domain: X
-Node, global: 91 - local: X - shadow: 26 - domain: 71
-Node, global: 92 - local: 30 - shadow: X - domain: 30
-Node, global: 93 - local: 31 - shadow: X - domain: 31
-Node, global: 94 - local: 32 - shadow: X - domain: 32
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: 27 - domain: 72
-Node, global: 97 - local: 33 - shadow: X - domain: 33
-Node, global: 98 - local: 34 - shadow: X - domain: 34
-Node, global: 99 - local: 35 - shadow: X - domain: 35
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: X - domain: X
-Node, global: 102 - local: X - shadow: X - domain: X
-Node, global: 103 - local: X - shadow: X - domain: X
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 28 - domain: 73
-Node, global: 107 - local: X - shadow: 29 - domain: 74
-Node, global: 108 - local: X - shadow: 30 - domain: 75
-Node, global: 109 - local: X - shadow: 31 - domain: 76
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 32 - domain: 77
-Node, global: 112 - local: 36 - shadow: X - domain: 36
-Node, global: 113 - local: 37 - shadow: X - domain: 37
-Node, global: 114 - local: 38 - shadow: X - domain: 38
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: 33 - domain: 78
-Node, global: 117 - local: 39 - shadow: X - domain: 39
-Node, global: 118 - local: 40 - shadow: X - domain: 40
-Node, global: 119 - local: 41 - shadow: X - domain: 41
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: 34 - domain: 79
-Node, global: 122 - local: 42 - shadow: X - domain: 42
-Node, global: 123 - local: 43 - shadow: X - domain: 43
-Node, global: 124 - local: 44 - shadow: X - domain: 44
-
-Node, local: 0 - global: 12
-Node, local: 1 - global: 13
-Node, local: 2 - global: 14
-Node, local: 3 - global: 17
-Node, local: 4 - global: 18
-Node, local: 5 - global: 19
-Node, local: 6 - global: 22
-Node, local: 7 - global: 23
-Node, local: 8 - global: 24
-Node, local: 9 - global: 37
-Node, local: 10 - global: 38
-Node, local: 11 - global: 39
-Node, local: 12 - global: 42
-Node, local: 13 - global: 43
-Node, local: 14 - global: 44
-Node, local: 15 - global: 47
-Node, local: 16 - global: 48
-Node, local: 17 - global: 49
-Node, local: 18 - global: 62
-Node, local: 19 - global: 63
-Node, local: 20 - global: 64
-Node, local: 21 - global: 67
-Node, local: 22 - global: 68
-Node, local: 23 - global: 69
-Node, local: 24 - global: 72
-Node, local: 25 - global: 73
-Node, local: 26 - global: 74
-Node, local: 27 - global: 87
-Node, local: 28 - global: 88
-Node, local: 29 - global: 89
-Node, local: 30 - global: 92
-Node, local: 31 - global: 93
-Node, local: 32 - global: 94
-Node, local: 33 - global: 97
-Node, local: 34 - global: 98
-Node, local: 35 - global: 99
-Node, local: 36 - global: 112
-Node, local: 37 - global: 113
-Node, local: 38 - global: 114
-Node, local: 39 - global: 117
-Node, local: 40 - global: 118
-Node, local: 41 - global: 119
-Node, local: 42 - global: 122
-Node, local: 43 - global: 123
-Node, local: 44 - global: 124
-
-Node, domain: 0 - global: 12
-Node, domain: 1 - global: 13
-Node, domain: 2 - global: 14
-Node, domain: 3 - global: 17
-Node, domain: 4 - global: 18
-Node, domain: 5 - global: 19
-Node, domain: 6 - global: 22
-Node, domain: 7 - global: 23
-Node, domain: 8 - global: 24
-Node, domain: 9 - global: 37
-Node, domain: 10 - global: 38
-Node, domain: 11 - global: 39
-Node, domain: 12 - global: 42
-Node, domain: 13 - global: 43
-Node, domain: 14 - global: 44
-Node, domain: 15 - global: 47
-Node, domain: 16 - global: 48
-Node, domain: 17 - global: 49
-Node, domain: 18 - global: 62
-Node, domain: 19 - global: 63
-Node, domain: 20 - global: 64
-Node, domain: 21 - global: 67
-Node, domain: 22 - global: 68
-Node, domain: 23 - global: 69
-Node, domain: 24 - global: 72
-Node, domain: 25 - global: 73
-Node, domain: 26 - global: 74
-Node, domain: 27 - global: 87
-Node, domain: 28 - global: 88
-Node, domain: 29 - global: 89
-Node, domain: 30 - global: 92
-Node, domain: 31 - global: 93
-Node, domain: 32 - global: 94
-Node, domain: 33 - global: 97
-Node, domain: 34 - global: 98
-Node, domain: 35 - global: 99
-Node, domain: 36 - global: 112
-Node, domain: 37 - global: 113
-Node, domain: 38 - global: 114
-Node, domain: 39 - global: 117
-Node, domain: 40 - global: 118
-Node, domain: 41 - global: 119
-Node, domain: 42 - global: 122
-Node, domain: 43 - global: 123
-Node, domain: 44 - global: 124
-Node, domain: 45 - global: 6
-Node, domain: 46 - global: 7
-Node, domain: 47 - global: 8
-Node, domain: 48 - global: 9
-Node, domain: 49 - global: 11
-Node, domain: 50 - global: 16
-Node, domain: 51 - global: 21
-Node, domain: 52 - global: 31
-Node, domain: 53 - global: 32
-Node, domain: 54 - global: 33
-Node, domain: 55 - global: 34
-Node, domain: 56 - global: 36
-Node, domain: 57 - global: 41
-Node, domain: 58 - global: 46
-Node, domain: 59 - global: 56
-Node, domain: 60 - global: 57
-Node, domain: 61 - global: 58
-Node, domain: 62 - global: 59
-Node, domain: 63 - global: 61
-Node, domain: 64 - global: 66
-Node, domain: 65 - global: 71
-Node, domain: 66 - global: 81
-Node, domain: 67 - global: 82
-Node, domain: 68 - global: 83
-Node, domain: 69 - global: 84
-Node, domain: 70 - global: 86
-Node, domain: 71 - global: 91
-Node, domain: 72 - global: 96
-Node, domain: 73 - global: 106
-Node, domain: 74 - global: 107
-Node, domain: 75 - global: 108
-Node, domain: 76 - global: 109
-Node, domain: 77 - global: 111
-Node, domain: 78 - global: 116
-Node, domain: 79 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-2D_Decomp.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,467 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 8 in use (8 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061f30)
-		size : (2,2,2)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, True }
-partitionCounts: { 2, 2, 2 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 2 }
-	elementLocalCounts[1]: { 2, 2, 2 }
-	elementLocalCounts[2]: { 2, 2, 2 }
-	elementLocalCounts[3]: { 2, 2, 2 }
-	elementLocalCounts[4]: { 2, 2, 2 }
-	elementLocalCounts[5]: { 2, 2, 2 }
-	elementLocalCounts[6]: { 2, 2, 2 }
-	elementLocalCounts[7]: { 2, 2, 2 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 3 }
-	nodeLocalCounts[1]: { 3, 3, 3 }
-	nodeLocalCounts[2]: { 3, 3, 3 }
-	nodeLocalCounts[3]: { 3, 3, 3 }
-	nodeLocalCounts[4]: { 3, 3, 3 }
-	nodeLocalCounts[5]: { 3, 3, 3 }
-	nodeLocalCounts[6]: { 3, 3, 3 }
-	nodeLocalCounts[7]: { 3, 3, 3 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 8
-Element, global: 3 - local: X - shadow: 1 - domain: 9
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 2 - domain: 10
-Element, global: 7 - local: X - shadow: 3 - domain: 11
-Element, global: 8 - local: X - shadow: 4 - domain: 12
-Element, global: 9 - local: X - shadow: 5 - domain: 13
-Element, global: 10 - local: X - shadow: 6 - domain: 14
-Element, global: 11 - local: X - shadow: 7 - domain: 15
-Element, global: 12 - local: X - shadow: 8 - domain: 16
-Element, global: 13 - local: X - shadow: 9 - domain: 17
-Element, global: 14 - local: X - shadow: 10 - domain: 18
-Element, global: 15 - local: X - shadow: 11 - domain: 19
-Element, global: 16 - local: 4 - shadow: X - domain: 4
-Element, global: 17 - local: 5 - shadow: X - domain: 5
-Element, global: 18 - local: X - shadow: 12 - domain: 20
-Element, global: 19 - local: X - shadow: 13 - domain: 21
-Element, global: 20 - local: 6 - shadow: X - domain: 6
-Element, global: 21 - local: 7 - shadow: X - domain: 7
-Element, global: 22 - local: X - shadow: 14 - domain: 22
-Element, global: 23 - local: X - shadow: 15 - domain: 23
-Element, global: 24 - local: X - shadow: 16 - domain: 24
-Element, global: 25 - local: X - shadow: 17 - domain: 25
-Element, global: 26 - local: X - shadow: 18 - domain: 26
-Element, global: 27 - local: X - shadow: 19 - domain: 27
-Element, global: 28 - local: X - shadow: 20 - domain: 28
-Element, global: 29 - local: X - shadow: 21 - domain: 29
-Element, global: 30 - local: X - shadow: 22 - domain: 30
-Element, global: 31 - local: X - shadow: 23 - domain: 31
-Element, global: 32 - local: X - shadow: 24 - domain: 32
-Element, global: 33 - local: X - shadow: 25 - domain: 33
-Element, global: 34 - local: X - shadow: 26 - domain: 34
-Element, global: 35 - local: X - shadow: 27 - domain: 35
-Element, global: 36 - local: X - shadow: 28 - domain: 36
-Element, global: 37 - local: X - shadow: 29 - domain: 37
-Element, global: 38 - local: X - shadow: 30 - domain: 38
-Element, global: 39 - local: X - shadow: 31 - domain: 39
-Element, global: 40 - local: X - shadow: 32 - domain: 40
-Element, global: 41 - local: X - shadow: 33 - domain: 41
-Element, global: 42 - local: X - shadow: 34 - domain: 42
-Element, global: 43 - local: X - shadow: 35 - domain: 43
-Element, global: 44 - local: X - shadow: 36 - domain: 44
-Element, global: 45 - local: X - shadow: 37 - domain: 45
-Element, global: 46 - local: X - shadow: 38 - domain: 46
-Element, global: 47 - local: X - shadow: 39 - domain: 47
-Element, global: 48 - local: X - shadow: 40 - domain: 48
-Element, global: 49 - local: X - shadow: 41 - domain: 49
-Element, global: 50 - local: X - shadow: 42 - domain: 50
-Element, global: 51 - local: X - shadow: 43 - domain: 51
-Element, global: 52 - local: X - shadow: 44 - domain: 52
-Element, global: 53 - local: X - shadow: 45 - domain: 53
-Element, global: 54 - local: X - shadow: 46 - domain: 54
-Element, global: 55 - local: X - shadow: 47 - domain: 55
-Element, global: 56 - local: X - shadow: 48 - domain: 56
-Element, global: 57 - local: X - shadow: 49 - domain: 57
-Element, global: 58 - local: X - shadow: 50 - domain: 58
-Element, global: 59 - local: X - shadow: 51 - domain: 59
-Element, global: 60 - local: X - shadow: 52 - domain: 60
-Element, global: 61 - local: X - shadow: 53 - domain: 61
-Element, global: 62 - local: X - shadow: 54 - domain: 62
-Element, global: 63 - local: X - shadow: 55 - domain: 63
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 16
-Element, local: 5 - global: 17
-Element, local: 6 - global: 20
-Element, local: 7 - global: 21
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 16
-Element, domain: 5 - global: 17
-Element, domain: 6 - global: 20
-Element, domain: 7 - global: 21
-Element, domain: 8 - global: 2
-Element, domain: 9 - global: 3
-Element, domain: 10 - global: 6
-Element, domain: 11 - global: 7
-Element, domain: 12 - global: 8
-Element, domain: 13 - global: 9
-Element, domain: 14 - global: 10
-Element, domain: 15 - global: 11
-Element, domain: 16 - global: 12
-Element, domain: 17 - global: 13
-Element, domain: 18 - global: 14
-Element, domain: 19 - global: 15
-Element, domain: 20 - global: 18
-Element, domain: 21 - global: 19
-Element, domain: 22 - global: 22
-Element, domain: 23 - global: 23
-Element, domain: 24 - global: 24
-Element, domain: 25 - global: 25
-Element, domain: 26 - global: 26
-Element, domain: 27 - global: 27
-Element, domain: 28 - global: 28
-Element, domain: 29 - global: 29
-Element, domain: 30 - global: 30
-Element, domain: 31 - global: 31
-Element, domain: 32 - global: 32
-Element, domain: 33 - global: 33
-Element, domain: 34 - global: 34
-Element, domain: 35 - global: 35
-Element, domain: 36 - global: 36
-Element, domain: 37 - global: 37
-Element, domain: 38 - global: 38
-Element, domain: 39 - global: 39
-Element, domain: 40 - global: 40
-Element, domain: 41 - global: 41
-Element, domain: 42 - global: 42
-Element, domain: 43 - global: 43
-Element, domain: 44 - global: 44
-Element, domain: 45 - global: 45
-Element, domain: 46 - global: 46
-Element, domain: 47 - global: 47
-Element, domain: 48 - global: 48
-Element, domain: 49 - global: 49
-Element, domain: 50 - global: 50
-Element, domain: 51 - global: 51
-Element, domain: 52 - global: 52
-Element, domain: 53 - global: 53
-Element, domain: 54 - global: 54
-Element, domain: 55 - global: 55
-Element, domain: 56 - global: 56
-Element, domain: 57 - global: 57
-Element, domain: 58 - global: 58
-Element, domain: 59 - global: 59
-Element, domain: 60 - global: 60
-Element, domain: 61 - global: 61
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 27
-Node, global: 4 - local: X - shadow: 1 - domain: 28
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 2 - domain: 29
-Node, global: 9 - local: X - shadow: 3 - domain: 30
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 4 - domain: 31
-Node, global: 14 - local: X - shadow: 5 - domain: 32
-Node, global: 15 - local: X - shadow: 6 - domain: 33
-Node, global: 16 - local: X - shadow: 7 - domain: 34
-Node, global: 17 - local: X - shadow: 8 - domain: 35
-Node, global: 18 - local: X - shadow: 9 - domain: 36
-Node, global: 19 - local: X - shadow: 10 - domain: 37
-Node, global: 20 - local: X - shadow: 11 - domain: 38
-Node, global: 21 - local: X - shadow: 12 - domain: 39
-Node, global: 22 - local: X - shadow: 13 - domain: 40
-Node, global: 23 - local: X - shadow: 14 - domain: 41
-Node, global: 24 - local: X - shadow: 15 - domain: 42
-Node, global: 25 - local: 9 - shadow: X - domain: 9
-Node, global: 26 - local: 10 - shadow: X - domain: 10
-Node, global: 27 - local: 11 - shadow: X - domain: 11
-Node, global: 28 - local: X - shadow: 16 - domain: 43
-Node, global: 29 - local: X - shadow: 17 - domain: 44
-Node, global: 30 - local: 12 - shadow: X - domain: 12
-Node, global: 31 - local: 13 - shadow: X - domain: 13
-Node, global: 32 - local: 14 - shadow: X - domain: 14
-Node, global: 33 - local: X - shadow: 18 - domain: 45
-Node, global: 34 - local: X - shadow: 19 - domain: 46
-Node, global: 35 - local: 15 - shadow: X - domain: 15
-Node, global: 36 - local: 16 - shadow: X - domain: 16
-Node, global: 37 - local: 17 - shadow: X - domain: 17
-Node, global: 38 - local: X - shadow: 20 - domain: 47
-Node, global: 39 - local: X - shadow: 21 - domain: 48
-Node, global: 40 - local: X - shadow: 22 - domain: 49
-Node, global: 41 - local: X - shadow: 23 - domain: 50
-Node, global: 42 - local: X - shadow: 24 - domain: 51
-Node, global: 43 - local: X - shadow: 25 - domain: 52
-Node, global: 44 - local: X - shadow: 26 - domain: 53
-Node, global: 45 - local: X - shadow: 27 - domain: 54
-Node, global: 46 - local: X - shadow: 28 - domain: 55
-Node, global: 47 - local: X - shadow: 29 - domain: 56
-Node, global: 48 - local: X - shadow: 30 - domain: 57
-Node, global: 49 - local: X - shadow: 31 - domain: 58
-Node, global: 50 - local: 18 - shadow: X - domain: 18
-Node, global: 51 - local: 19 - shadow: X - domain: 19
-Node, global: 52 - local: 20 - shadow: X - domain: 20
-Node, global: 53 - local: X - shadow: 32 - domain: 59
-Node, global: 54 - local: X - shadow: 33 - domain: 60
-Node, global: 55 - local: 21 - shadow: X - domain: 21
-Node, global: 56 - local: 22 - shadow: X - domain: 22
-Node, global: 57 - local: 23 - shadow: X - domain: 23
-Node, global: 58 - local: X - shadow: 34 - domain: 61
-Node, global: 59 - local: X - shadow: 35 - domain: 62
-Node, global: 60 - local: 24 - shadow: X - domain: 24
-Node, global: 61 - local: 25 - shadow: X - domain: 25
-Node, global: 62 - local: 26 - shadow: X - domain: 26
-Node, global: 63 - local: X - shadow: 36 - domain: 63
-Node, global: 64 - local: X - shadow: 37 - domain: 64
-Node, global: 65 - local: X - shadow: 38 - domain: 65
-Node, global: 66 - local: X - shadow: 39 - domain: 66
-Node, global: 67 - local: X - shadow: 40 - domain: 67
-Node, global: 68 - local: X - shadow: 41 - domain: 68
-Node, global: 69 - local: X - shadow: 42 - domain: 69
-Node, global: 70 - local: X - shadow: 43 - domain: 70
-Node, global: 71 - local: X - shadow: 44 - domain: 71
-Node, global: 72 - local: X - shadow: 45 - domain: 72
-Node, global: 73 - local: X - shadow: 46 - domain: 73
-Node, global: 74 - local: X - shadow: 47 - domain: 74
-Node, global: 75 - local: X - shadow: 48 - domain: 75
-Node, global: 76 - local: X - shadow: 49 - domain: 76
-Node, global: 77 - local: X - shadow: 50 - domain: 77
-Node, global: 78 - local: X - shadow: 51 - domain: 78
-Node, global: 79 - local: X - shadow: 52 - domain: 79
-Node, global: 80 - local: X - shadow: 53 - domain: 80
-Node, global: 81 - local: X - shadow: 54 - domain: 81
-Node, global: 82 - local: X - shadow: 55 - domain: 82
-Node, global: 83 - local: X - shadow: 56 - domain: 83
-Node, global: 84 - local: X - shadow: 57 - domain: 84
-Node, global: 85 - local: X - shadow: 58 - domain: 85
-Node, global: 86 - local: X - shadow: 59 - domain: 86
-Node, global: 87 - local: X - shadow: 60 - domain: 87
-Node, global: 88 - local: X - shadow: 61 - domain: 88
-Node, global: 89 - local: X - shadow: 62 - domain: 89
-Node, global: 90 - local: X - shadow: 63 - domain: 90
-Node, global: 91 - local: X - shadow: 64 - domain: 91
-Node, global: 92 - local: X - shadow: 65 - domain: 92
-Node, global: 93 - local: X - shadow: 66 - domain: 93
-Node, global: 94 - local: X - shadow: 67 - domain: 94
-Node, global: 95 - local: X - shadow: 68 - domain: 95
-Node, global: 96 - local: X - shadow: 69 - domain: 96
-Node, global: 97 - local: X - shadow: 70 - domain: 97
-Node, global: 98 - local: X - shadow: 71 - domain: 98
-Node, global: 99 - local: X - shadow: 72 - domain: 99
-Node, global: 100 - local: X - shadow: 73 - domain: 100
-Node, global: 101 - local: X - shadow: 74 - domain: 101
-Node, global: 102 - local: X - shadow: 75 - domain: 102
-Node, global: 103 - local: X - shadow: 76 - domain: 103
-Node, global: 104 - local: X - shadow: 77 - domain: 104
-Node, global: 105 - local: X - shadow: 78 - domain: 105
-Node, global: 106 - local: X - shadow: 79 - domain: 106
-Node, global: 107 - local: X - shadow: 80 - domain: 107
-Node, global: 108 - local: X - shadow: 81 - domain: 108
-Node, global: 109 - local: X - shadow: 82 - domain: 109
-Node, global: 110 - local: X - shadow: 83 - domain: 110
-Node, global: 111 - local: X - shadow: 84 - domain: 111
-Node, global: 112 - local: X - shadow: 85 - domain: 112
-Node, global: 113 - local: X - shadow: 86 - domain: 113
-Node, global: 114 - local: X - shadow: 87 - domain: 114
-Node, global: 115 - local: X - shadow: 88 - domain: 115
-Node, global: 116 - local: X - shadow: 89 - domain: 116
-Node, global: 117 - local: X - shadow: 90 - domain: 117
-Node, global: 118 - local: X - shadow: 91 - domain: 118
-Node, global: 119 - local: X - shadow: 92 - domain: 119
-Node, global: 120 - local: X - shadow: 93 - domain: 120
-Node, global: 121 - local: X - shadow: 94 - domain: 121
-Node, global: 122 - local: X - shadow: 95 - domain: 122
-Node, global: 123 - local: X - shadow: 96 - domain: 123
-Node, global: 124 - local: X - shadow: 97 - domain: 124
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 25
-Node, local: 10 - global: 26
-Node, local: 11 - global: 27
-Node, local: 12 - global: 30
-Node, local: 13 - global: 31
-Node, local: 14 - global: 32
-Node, local: 15 - global: 35
-Node, local: 16 - global: 36
-Node, local: 17 - global: 37
-Node, local: 18 - global: 50
-Node, local: 19 - global: 51
-Node, local: 20 - global: 52
-Node, local: 21 - global: 55
-Node, local: 22 - global: 56
-Node, local: 23 - global: 57
-Node, local: 24 - global: 60
-Node, local: 25 - global: 61
-Node, local: 26 - global: 62
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 25
-Node, domain: 10 - global: 26
-Node, domain: 11 - global: 27
-Node, domain: 12 - global: 30
-Node, domain: 13 - global: 31
-Node, domain: 14 - global: 32
-Node, domain: 15 - global: 35
-Node, domain: 16 - global: 36
-Node, domain: 17 - global: 37
-Node, domain: 18 - global: 50
-Node, domain: 19 - global: 51
-Node, domain: 20 - global: 52
-Node, domain: 21 - global: 55
-Node, domain: 22 - global: 56
-Node, domain: 23 - global: 57
-Node, domain: 24 - global: 60
-Node, domain: 25 - global: 61
-Node, domain: 26 - global: 62
-Node, domain: 27 - global: 3
-Node, domain: 28 - global: 4
-Node, domain: 29 - global: 8
-Node, domain: 30 - global: 9
-Node, domain: 31 - global: 13
-Node, domain: 32 - global: 14
-Node, domain: 33 - global: 15
-Node, domain: 34 - global: 16
-Node, domain: 35 - global: 17
-Node, domain: 36 - global: 18
-Node, domain: 37 - global: 19
-Node, domain: 38 - global: 20
-Node, domain: 39 - global: 21
-Node, domain: 40 - global: 22
-Node, domain: 41 - global: 23
-Node, domain: 42 - global: 24
-Node, domain: 43 - global: 28
-Node, domain: 44 - global: 29
-Node, domain: 45 - global: 33
-Node, domain: 46 - global: 34
-Node, domain: 47 - global: 38
-Node, domain: 48 - global: 39
-Node, domain: 49 - global: 40
-Node, domain: 50 - global: 41
-Node, domain: 51 - global: 42
-Node, domain: 52 - global: 43
-Node, domain: 53 - global: 44
-Node, domain: 54 - global: 45
-Node, domain: 55 - global: 46
-Node, domain: 56 - global: 47
-Node, domain: 57 - global: 48
-Node, domain: 58 - global: 49
-Node, domain: 59 - global: 53
-Node, domain: 60 - global: 54
-Node, domain: 61 - global: 58
-Node, domain: 62 - global: 59
-Node, domain: 63 - global: 63
-Node, domain: 64 - global: 64
-Node, domain: 65 - global: 65
-Node, domain: 66 - global: 66
-Node, domain: 67 - global: 67
-Node, domain: 68 - global: 68
-Node, domain: 69 - global: 69
-Node, domain: 70 - global: 70
-Node, domain: 71 - global: 71
-Node, domain: 72 - global: 72
-Node, domain: 73 - global: 73
-Node, domain: 74 - global: 74
-Node, domain: 75 - global: 75
-Node, domain: 76 - global: 76
-Node, domain: 77 - global: 77
-Node, domain: 78 - global: 78
-Node, domain: 79 - global: 79
-Node, domain: 80 - global: 80
-Node, domain: 81 - global: 81
-Node, domain: 82 - global: 82
-Node, domain: 83 - global: 83
-Node, domain: 84 - global: 84
-Node, domain: 85 - global: 85
-Node, domain: 86 - global: 86
-Node, domain: 87 - global: 87
-Node, domain: 88 - global: 88
-Node, domain: 89 - global: 89
-Node, domain: 90 - global: 90
-Node, domain: 91 - global: 91
-Node, domain: 92 - global: 92
-Node, domain: 93 - global: 93
-Node, domain: 94 - global: 94
-Node, domain: 95 - global: 95
-Node, domain: 96 - global: 96
-Node, domain: 97 - global: 97
-Node, domain: 98 - global: 98
-Node, domain: 99 - global: 99
-Node, domain: 100 - global: 100
-Node, domain: 101 - global: 101
-Node, domain: 102 - global: 102
-Node, domain: 103 - global: 103
-Node, domain: 104 - global: 104
-Node, domain: 105 - global: 105
-Node, domain: 106 - global: 106
-Node, domain: 107 - global: 107
-Node, domain: 108 - global: 108
-Node, domain: 109 - global: 109
-Node, domain: 110 - global: 110
-Node, domain: 111 - global: 111
-Node, domain: 112 - global: 112
-Node, domain: 113 - global: 113
-Node, domain: 114 - global: 114
-Node, domain: 115 - global: 115
-Node, domain: 116 - global: 116
-Node, domain: 117 - global: 117
-Node, domain: 118 - global: 118
-Node, domain: 119 - global: 119
-Node, domain: 120 - global: 120
-Node, domain: 121 - global: 121
-Node, domain: 122 - global: 122
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.0of8.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=3 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,467 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 7 of 8 in use (8 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060f00)
-		size : (2,2,2)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, True }
-partitionCounts: { 2, 2, 2 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 2 }
-	elementLocalCounts[1]: { 2, 2, 2 }
-	elementLocalCounts[2]: { 2, 2, 2 }
-	elementLocalCounts[3]: { 2, 2, 2 }
-	elementLocalCounts[4]: { 2, 2, 2 }
-	elementLocalCounts[5]: { 2, 2, 2 }
-	elementLocalCounts[6]: { 2, 2, 2 }
-	elementLocalCounts[7]: { 2, 2, 2 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 3 }
-	nodeLocalCounts[1]: { 3, 3, 3 }
-	nodeLocalCounts[2]: { 3, 3, 3 }
-	nodeLocalCounts[3]: { 3, 3, 3 }
-	nodeLocalCounts[4]: { 3, 3, 3 }
-	nodeLocalCounts[5]: { 3, 3, 3 }
-	nodeLocalCounts[6]: { 3, 3, 3 }
-	nodeLocalCounts[7]: { 3, 3, 3 }
-Element, global: 0 - local: X - shadow: 0 - domain: 8
-Element, global: 1 - local: X - shadow: 1 - domain: 9
-Element, global: 2 - local: X - shadow: 2 - domain: 10
-Element, global: 3 - local: X - shadow: 3 - domain: 11
-Element, global: 4 - local: X - shadow: 4 - domain: 12
-Element, global: 5 - local: X - shadow: 5 - domain: 13
-Element, global: 6 - local: X - shadow: 6 - domain: 14
-Element, global: 7 - local: X - shadow: 7 - domain: 15
-Element, global: 8 - local: X - shadow: 8 - domain: 16
-Element, global: 9 - local: X - shadow: 9 - domain: 17
-Element, global: 10 - local: X - shadow: 10 - domain: 18
-Element, global: 11 - local: X - shadow: 11 - domain: 19
-Element, global: 12 - local: X - shadow: 12 - domain: 20
-Element, global: 13 - local: X - shadow: 13 - domain: 21
-Element, global: 14 - local: X - shadow: 14 - domain: 22
-Element, global: 15 - local: X - shadow: 15 - domain: 23
-Element, global: 16 - local: X - shadow: 16 - domain: 24
-Element, global: 17 - local: X - shadow: 17 - domain: 25
-Element, global: 18 - local: X - shadow: 18 - domain: 26
-Element, global: 19 - local: X - shadow: 19 - domain: 27
-Element, global: 20 - local: X - shadow: 20 - domain: 28
-Element, global: 21 - local: X - shadow: 21 - domain: 29
-Element, global: 22 - local: X - shadow: 22 - domain: 30
-Element, global: 23 - local: X - shadow: 23 - domain: 31
-Element, global: 24 - local: X - shadow: 24 - domain: 32
-Element, global: 25 - local: X - shadow: 25 - domain: 33
-Element, global: 26 - local: X - shadow: 26 - domain: 34
-Element, global: 27 - local: X - shadow: 27 - domain: 35
-Element, global: 28 - local: X - shadow: 28 - domain: 36
-Element, global: 29 - local: X - shadow: 29 - domain: 37
-Element, global: 30 - local: X - shadow: 30 - domain: 38
-Element, global: 31 - local: X - shadow: 31 - domain: 39
-Element, global: 32 - local: X - shadow: 32 - domain: 40
-Element, global: 33 - local: X - shadow: 33 - domain: 41
-Element, global: 34 - local: X - shadow: 34 - domain: 42
-Element, global: 35 - local: X - shadow: 35 - domain: 43
-Element, global: 36 - local: X - shadow: 36 - domain: 44
-Element, global: 37 - local: X - shadow: 37 - domain: 45
-Element, global: 38 - local: X - shadow: 38 - domain: 46
-Element, global: 39 - local: X - shadow: 39 - domain: 47
-Element, global: 40 - local: X - shadow: 40 - domain: 48
-Element, global: 41 - local: X - shadow: 41 - domain: 49
-Element, global: 42 - local: 0 - shadow: X - domain: 0
-Element, global: 43 - local: 1 - shadow: X - domain: 1
-Element, global: 44 - local: X - shadow: 42 - domain: 50
-Element, global: 45 - local: X - shadow: 43 - domain: 51
-Element, global: 46 - local: 2 - shadow: X - domain: 2
-Element, global: 47 - local: 3 - shadow: X - domain: 3
-Element, global: 48 - local: X - shadow: 44 - domain: 52
-Element, global: 49 - local: X - shadow: 45 - domain: 53
-Element, global: 50 - local: X - shadow: 46 - domain: 54
-Element, global: 51 - local: X - shadow: 47 - domain: 55
-Element, global: 52 - local: X - shadow: 48 - domain: 56
-Element, global: 53 - local: X - shadow: 49 - domain: 57
-Element, global: 54 - local: X - shadow: 50 - domain: 58
-Element, global: 55 - local: X - shadow: 51 - domain: 59
-Element, global: 56 - local: X - shadow: 52 - domain: 60
-Element, global: 57 - local: X - shadow: 53 - domain: 61
-Element, global: 58 - local: 4 - shadow: X - domain: 4
-Element, global: 59 - local: 5 - shadow: X - domain: 5
-Element, global: 60 - local: X - shadow: 54 - domain: 62
-Element, global: 61 - local: X - shadow: 55 - domain: 63
-Element, global: 62 - local: 6 - shadow: X - domain: 6
-Element, global: 63 - local: 7 - shadow: X - domain: 7
-
-Element, local: 0 - global: 42
-Element, local: 1 - global: 43
-Element, local: 2 - global: 46
-Element, local: 3 - global: 47
-Element, local: 4 - global: 58
-Element, local: 5 - global: 59
-Element, local: 6 - global: 62
-Element, local: 7 - global: 63
-
-Element, domain: 0 - global: 42
-Element, domain: 1 - global: 43
-Element, domain: 2 - global: 46
-Element, domain: 3 - global: 47
-Element, domain: 4 - global: 58
-Element, domain: 5 - global: 59
-Element, domain: 6 - global: 62
-Element, domain: 7 - global: 63
-Element, domain: 8 - global: 0
-Element, domain: 9 - global: 1
-Element, domain: 10 - global: 2
-Element, domain: 11 - global: 3
-Element, domain: 12 - global: 4
-Element, domain: 13 - global: 5
-Element, domain: 14 - global: 6
-Element, domain: 15 - global: 7
-Element, domain: 16 - global: 8
-Element, domain: 17 - global: 9
-Element, domain: 18 - global: 10
-Element, domain: 19 - global: 11
-Element, domain: 20 - global: 12
-Element, domain: 21 - global: 13
-Element, domain: 22 - global: 14
-Element, domain: 23 - global: 15
-Element, domain: 24 - global: 16
-Element, domain: 25 - global: 17
-Element, domain: 26 - global: 18
-Element, domain: 27 - global: 19
-Element, domain: 28 - global: 20
-Element, domain: 29 - global: 21
-Element, domain: 30 - global: 22
-Element, domain: 31 - global: 23
-Element, domain: 32 - global: 24
-Element, domain: 33 - global: 25
-Element, domain: 34 - global: 26
-Element, domain: 35 - global: 27
-Element, domain: 36 - global: 28
-Element, domain: 37 - global: 29
-Element, domain: 38 - global: 30
-Element, domain: 39 - global: 31
-Element, domain: 40 - global: 32
-Element, domain: 41 - global: 33
-Element, domain: 42 - global: 34
-Element, domain: 43 - global: 35
-Element, domain: 44 - global: 36
-Element, domain: 45 - global: 37
-Element, domain: 46 - global: 38
-Element, domain: 47 - global: 39
-Element, domain: 48 - global: 40
-Element, domain: 49 - global: 41
-Element, domain: 50 - global: 44
-Element, domain: 51 - global: 45
-Element, domain: 52 - global: 48
-Element, domain: 53 - global: 49
-Element, domain: 54 - global: 50
-Element, domain: 55 - global: 51
-Element, domain: 56 - global: 52
-Element, domain: 57 - global: 53
-Element, domain: 58 - global: 54
-Element, domain: 59 - global: 55
-Element, domain: 60 - global: 56
-Element, domain: 61 - global: 57
-Element, domain: 62 - global: 60
-Element, domain: 63 - global: 61
-
-Node, global: 0 - local: X - shadow: 0 - domain: 27
-Node, global: 1 - local: X - shadow: 1 - domain: 28
-Node, global: 2 - local: X - shadow: 2 - domain: 29
-Node, global: 3 - local: X - shadow: 3 - domain: 30
-Node, global: 4 - local: X - shadow: 4 - domain: 31
-Node, global: 5 - local: X - shadow: 5 - domain: 32
-Node, global: 6 - local: X - shadow: 6 - domain: 33
-Node, global: 7 - local: X - shadow: 7 - domain: 34
-Node, global: 8 - local: X - shadow: 8 - domain: 35
-Node, global: 9 - local: X - shadow: 9 - domain: 36
-Node, global: 10 - local: X - shadow: 10 - domain: 37
-Node, global: 11 - local: X - shadow: 11 - domain: 38
-Node, global: 12 - local: X - shadow: 12 - domain: 39
-Node, global: 13 - local: X - shadow: 13 - domain: 40
-Node, global: 14 - local: X - shadow: 14 - domain: 41
-Node, global: 15 - local: X - shadow: 15 - domain: 42
-Node, global: 16 - local: X - shadow: 16 - domain: 43
-Node, global: 17 - local: X - shadow: 17 - domain: 44
-Node, global: 18 - local: X - shadow: 18 - domain: 45
-Node, global: 19 - local: X - shadow: 19 - domain: 46
-Node, global: 20 - local: X - shadow: 20 - domain: 47
-Node, global: 21 - local: X - shadow: 21 - domain: 48
-Node, global: 22 - local: X - shadow: 22 - domain: 49
-Node, global: 23 - local: X - shadow: 23 - domain: 50
-Node, global: 24 - local: X - shadow: 24 - domain: 51
-Node, global: 25 - local: X - shadow: 25 - domain: 52
-Node, global: 26 - local: X - shadow: 26 - domain: 53
-Node, global: 27 - local: X - shadow: 27 - domain: 54
-Node, global: 28 - local: X - shadow: 28 - domain: 55
-Node, global: 29 - local: X - shadow: 29 - domain: 56
-Node, global: 30 - local: X - shadow: 30 - domain: 57
-Node, global: 31 - local: X - shadow: 31 - domain: 58
-Node, global: 32 - local: X - shadow: 32 - domain: 59
-Node, global: 33 - local: X - shadow: 33 - domain: 60
-Node, global: 34 - local: X - shadow: 34 - domain: 61
-Node, global: 35 - local: X - shadow: 35 - domain: 62
-Node, global: 36 - local: X - shadow: 36 - domain: 63
-Node, global: 37 - local: X - shadow: 37 - domain: 64
-Node, global: 38 - local: X - shadow: 38 - domain: 65
-Node, global: 39 - local: X - shadow: 39 - domain: 66
-Node, global: 40 - local: X - shadow: 40 - domain: 67
-Node, global: 41 - local: X - shadow: 41 - domain: 68
-Node, global: 42 - local: X - shadow: 42 - domain: 69
-Node, global: 43 - local: X - shadow: 43 - domain: 70
-Node, global: 44 - local: X - shadow: 44 - domain: 71
-Node, global: 45 - local: X - shadow: 45 - domain: 72
-Node, global: 46 - local: X - shadow: 46 - domain: 73
-Node, global: 47 - local: X - shadow: 47 - domain: 74
-Node, global: 48 - local: X - shadow: 48 - domain: 75
-Node, global: 49 - local: X - shadow: 49 - domain: 76
-Node, global: 50 - local: X - shadow: 50 - domain: 77
-Node, global: 51 - local: X - shadow: 51 - domain: 78
-Node, global: 52 - local: X - shadow: 52 - domain: 79
-Node, global: 53 - local: X - shadow: 53 - domain: 80
-Node, global: 54 - local: X - shadow: 54 - domain: 81
-Node, global: 55 - local: X - shadow: 55 - domain: 82
-Node, global: 56 - local: X - shadow: 56 - domain: 83
-Node, global: 57 - local: X - shadow: 57 - domain: 84
-Node, global: 58 - local: X - shadow: 58 - domain: 85
-Node, global: 59 - local: X - shadow: 59 - domain: 86
-Node, global: 60 - local: X - shadow: 60 - domain: 87
-Node, global: 61 - local: X - shadow: 61 - domain: 88
-Node, global: 62 - local: 0 - shadow: X - domain: 0
-Node, global: 63 - local: 1 - shadow: X - domain: 1
-Node, global: 64 - local: 2 - shadow: X - domain: 2
-Node, global: 65 - local: X - shadow: 62 - domain: 89
-Node, global: 66 - local: X - shadow: 63 - domain: 90
-Node, global: 67 - local: 3 - shadow: X - domain: 3
-Node, global: 68 - local: 4 - shadow: X - domain: 4
-Node, global: 69 - local: 5 - shadow: X - domain: 5
-Node, global: 70 - local: X - shadow: 64 - domain: 91
-Node, global: 71 - local: X - shadow: 65 - domain: 92
-Node, global: 72 - local: 6 - shadow: X - domain: 6
-Node, global: 73 - local: 7 - shadow: X - domain: 7
-Node, global: 74 - local: 8 - shadow: X - domain: 8
-Node, global: 75 - local: X - shadow: 66 - domain: 93
-Node, global: 76 - local: X - shadow: 67 - domain: 94
-Node, global: 77 - local: X - shadow: 68 - domain: 95
-Node, global: 78 - local: X - shadow: 69 - domain: 96
-Node, global: 79 - local: X - shadow: 70 - domain: 97
-Node, global: 80 - local: X - shadow: 71 - domain: 98
-Node, global: 81 - local: X - shadow: 72 - domain: 99
-Node, global: 82 - local: X - shadow: 73 - domain: 100
-Node, global: 83 - local: X - shadow: 74 - domain: 101
-Node, global: 84 - local: X - shadow: 75 - domain: 102
-Node, global: 85 - local: X - shadow: 76 - domain: 103
-Node, global: 86 - local: X - shadow: 77 - domain: 104
-Node, global: 87 - local: 9 - shadow: X - domain: 9
-Node, global: 88 - local: 10 - shadow: X - domain: 10
-Node, global: 89 - local: 11 - shadow: X - domain: 11
-Node, global: 90 - local: X - shadow: 78 - domain: 105
-Node, global: 91 - local: X - shadow: 79 - domain: 106
-Node, global: 92 - local: 12 - shadow: X - domain: 12
-Node, global: 93 - local: 13 - shadow: X - domain: 13
-Node, global: 94 - local: 14 - shadow: X - domain: 14
-Node, global: 95 - local: X - shadow: 80 - domain: 107
-Node, global: 96 - local: X - shadow: 81 - domain: 108
-Node, global: 97 - local: 15 - shadow: X - domain: 15
-Node, global: 98 - local: 16 - shadow: X - domain: 16
-Node, global: 99 - local: 17 - shadow: X - domain: 17
-Node, global: 100 - local: X - shadow: 82 - domain: 109
-Node, global: 101 - local: X - shadow: 83 - domain: 110
-Node, global: 102 - local: X - shadow: 84 - domain: 111
-Node, global: 103 - local: X - shadow: 85 - domain: 112
-Node, global: 104 - local: X - shadow: 86 - domain: 113
-Node, global: 105 - local: X - shadow: 87 - domain: 114
-Node, global: 106 - local: X - shadow: 88 - domain: 115
-Node, global: 107 - local: X - shadow: 89 - domain: 116
-Node, global: 108 - local: X - shadow: 90 - domain: 117
-Node, global: 109 - local: X - shadow: 91 - domain: 118
-Node, global: 110 - local: X - shadow: 92 - domain: 119
-Node, global: 111 - local: X - shadow: 93 - domain: 120
-Node, global: 112 - local: 18 - shadow: X - domain: 18
-Node, global: 113 - local: 19 - shadow: X - domain: 19
-Node, global: 114 - local: 20 - shadow: X - domain: 20
-Node, global: 115 - local: X - shadow: 94 - domain: 121
-Node, global: 116 - local: X - shadow: 95 - domain: 122
-Node, global: 117 - local: 21 - shadow: X - domain: 21
-Node, global: 118 - local: 22 - shadow: X - domain: 22
-Node, global: 119 - local: 23 - shadow: X - domain: 23
-Node, global: 120 - local: X - shadow: 96 - domain: 123
-Node, global: 121 - local: X - shadow: 97 - domain: 124
-Node, global: 122 - local: 24 - shadow: X - domain: 24
-Node, global: 123 - local: 25 - shadow: X - domain: 25
-Node, global: 124 - local: 26 - shadow: X - domain: 26
-
-Node, local: 0 - global: 62
-Node, local: 1 - global: 63
-Node, local: 2 - global: 64
-Node, local: 3 - global: 67
-Node, local: 4 - global: 68
-Node, local: 5 - global: 69
-Node, local: 6 - global: 72
-Node, local: 7 - global: 73
-Node, local: 8 - global: 74
-Node, local: 9 - global: 87
-Node, local: 10 - global: 88
-Node, local: 11 - global: 89
-Node, local: 12 - global: 92
-Node, local: 13 - global: 93
-Node, local: 14 - global: 94
-Node, local: 15 - global: 97
-Node, local: 16 - global: 98
-Node, local: 17 - global: 99
-Node, local: 18 - global: 112
-Node, local: 19 - global: 113
-Node, local: 20 - global: 114
-Node, local: 21 - global: 117
-Node, local: 22 - global: 118
-Node, local: 23 - global: 119
-Node, local: 24 - global: 122
-Node, local: 25 - global: 123
-Node, local: 26 - global: 124
-
-Node, domain: 0 - global: 62
-Node, domain: 1 - global: 63
-Node, domain: 2 - global: 64
-Node, domain: 3 - global: 67
-Node, domain: 4 - global: 68
-Node, domain: 5 - global: 69
-Node, domain: 6 - global: 72
-Node, domain: 7 - global: 73
-Node, domain: 8 - global: 74
-Node, domain: 9 - global: 87
-Node, domain: 10 - global: 88
-Node, domain: 11 - global: 89
-Node, domain: 12 - global: 92
-Node, domain: 13 - global: 93
-Node, domain: 14 - global: 94
-Node, domain: 15 - global: 97
-Node, domain: 16 - global: 98
-Node, domain: 17 - global: 99
-Node, domain: 18 - global: 112
-Node, domain: 19 - global: 113
-Node, domain: 20 - global: 114
-Node, domain: 21 - global: 117
-Node, domain: 22 - global: 118
-Node, domain: 23 - global: 119
-Node, domain: 24 - global: 122
-Node, domain: 25 - global: 123
-Node, domain: 26 - global: 124
-Node, domain: 27 - global: 0
-Node, domain: 28 - global: 1
-Node, domain: 29 - global: 2
-Node, domain: 30 - global: 3
-Node, domain: 31 - global: 4
-Node, domain: 32 - global: 5
-Node, domain: 33 - global: 6
-Node, domain: 34 - global: 7
-Node, domain: 35 - global: 8
-Node, domain: 36 - global: 9
-Node, domain: 37 - global: 10
-Node, domain: 38 - global: 11
-Node, domain: 39 - global: 12
-Node, domain: 40 - global: 13
-Node, domain: 41 - global: 14
-Node, domain: 42 - global: 15
-Node, domain: 43 - global: 16
-Node, domain: 44 - global: 17
-Node, domain: 45 - global: 18
-Node, domain: 46 - global: 19
-Node, domain: 47 - global: 20
-Node, domain: 48 - global: 21
-Node, domain: 49 - global: 22
-Node, domain: 50 - global: 23
-Node, domain: 51 - global: 24
-Node, domain: 52 - global: 25
-Node, domain: 53 - global: 26
-Node, domain: 54 - global: 27
-Node, domain: 55 - global: 28
-Node, domain: 56 - global: 29
-Node, domain: 57 - global: 30
-Node, domain: 58 - global: 31
-Node, domain: 59 - global: 32
-Node, domain: 60 - global: 33
-Node, domain: 61 - global: 34
-Node, domain: 62 - global: 35
-Node, domain: 63 - global: 36
-Node, domain: 64 - global: 37
-Node, domain: 65 - global: 38
-Node, domain: 66 - global: 39
-Node, domain: 67 - global: 40
-Node, domain: 68 - global: 41
-Node, domain: 69 - global: 42
-Node, domain: 70 - global: 43
-Node, domain: 71 - global: 44
-Node, domain: 72 - global: 45
-Node, domain: 73 - global: 46
-Node, domain: 74 - global: 47
-Node, domain: 75 - global: 48
-Node, domain: 76 - global: 49
-Node, domain: 77 - global: 50
-Node, domain: 78 - global: 51
-Node, domain: 79 - global: 52
-Node, domain: 80 - global: 53
-Node, domain: 81 - global: 54
-Node, domain: 82 - global: 55
-Node, domain: 83 - global: 56
-Node, domain: 84 - global: 57
-Node, domain: 85 - global: 58
-Node, domain: 86 - global: 59
-Node, domain: 87 - global: 60
-Node, domain: 88 - global: 61
-Node, domain: 89 - global: 65
-Node, domain: 90 - global: 66
-Node, domain: 91 - global: 70
-Node, domain: 92 - global: 71
-Node, domain: 93 - global: 75
-Node, domain: 94 - global: 76
-Node, domain: 95 - global: 77
-Node, domain: 96 - global: 78
-Node, domain: 97 - global: 79
-Node, domain: 98 - global: 80
-Node, domain: 99 - global: 81
-Node, domain: 100 - global: 82
-Node, domain: 101 - global: 83
-Node, domain: 102 - global: 84
-Node, domain: 103 - global: 85
-Node, domain: 104 - global: 86
-Node, domain: 105 - global: 90
-Node, domain: 106 - global: 91
-Node, domain: 107 - global: 95
-Node, domain: 108 - global: 96
-Node, domain: 109 - global: 100
-Node, domain: 110 - global: 101
-Node, domain: 111 - global: 102
-Node, domain: 112 - global: 103
-Node, domain: 113 - global: 104
-Node, domain: 114 - global: 105
-Node, domain: 115 - global: 106
-Node, domain: 116 - global: 107
-Node, domain: 117 - global: 108
-Node, domain: 118 - global: 109
-Node, domain: 119 - global: 110
-Node, domain: 120 - global: 111
-Node, domain: 121 - global: 115
-Node, domain: 122 - global: 116
-Node, domain: 123 - global: 120
-Node, domain: 124 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp-shadowDepth2.7of8.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=3 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,369 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 8 in use (8 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061f28)
-		size : (2,2,2)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, True }
-partitionCounts: { 2, 2, 2 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 2 }
-	elementLocalCounts[1]: { 2, 2, 2 }
-	elementLocalCounts[2]: { 2, 2, 2 }
-	elementLocalCounts[3]: { 2, 2, 2 }
-	elementLocalCounts[4]: { 2, 2, 2 }
-	elementLocalCounts[5]: { 2, 2, 2 }
-	elementLocalCounts[6]: { 2, 2, 2 }
-	elementLocalCounts[7]: { 2, 2, 2 }
-elementDomainCounts: { 3, 3, 3 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 3 }
-	nodeLocalCounts[1]: { 3, 3, 3 }
-	nodeLocalCounts[2]: { 3, 3, 3 }
-	nodeLocalCounts[3]: { 3, 3, 3 }
-	nodeLocalCounts[4]: { 3, 3, 3 }
-	nodeLocalCounts[5]: { 3, 3, 3 }
-	nodeLocalCounts[6]: { 3, 3, 3 }
-	nodeLocalCounts[7]: { 3, 3, 3 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 8
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 1 - domain: 9
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: 2 - domain: 10
-Element, global: 9 - local: X - shadow: 3 - domain: 11
-Element, global: 10 - local: X - shadow: 4 - domain: 12
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: X - domain: X
-Element, global: 14 - local: X - shadow: X - domain: X
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: 4 - shadow: X - domain: 4
-Element, global: 17 - local: 5 - shadow: X - domain: 5
-Element, global: 18 - local: X - shadow: 5 - domain: 13
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: 6 - shadow: X - domain: 6
-Element, global: 21 - local: 7 - shadow: X - domain: 7
-Element, global: 22 - local: X - shadow: 6 - domain: 14
-Element, global: 23 - local: X - shadow: X - domain: X
-Element, global: 24 - local: X - shadow: 7 - domain: 15
-Element, global: 25 - local: X - shadow: 8 - domain: 16
-Element, global: 26 - local: X - shadow: 9 - domain: 17
-Element, global: 27 - local: X - shadow: X - domain: X
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: X - domain: X
-Element, global: 30 - local: X - shadow: X - domain: X
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: X - shadow: 10 - domain: 18
-Element, global: 33 - local: X - shadow: 11 - domain: 19
-Element, global: 34 - local: X - shadow: 12 - domain: 20
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: X - shadow: 13 - domain: 21
-Element, global: 37 - local: X - shadow: 14 - domain: 22
-Element, global: 38 - local: X - shadow: 15 - domain: 23
-Element, global: 39 - local: X - shadow: X - domain: X
-Element, global: 40 - local: X - shadow: 16 - domain: 24
-Element, global: 41 - local: X - shadow: 17 - domain: 25
-Element, global: 42 - local: X - shadow: 18 - domain: 26
-Element, global: 43 - local: X - shadow: X - domain: X
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: X - domain: X
-Element, global: 46 - local: X - shadow: X - domain: X
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: X - domain: X
-Element, global: 50 - local: X - shadow: X - domain: X
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: X - domain: X
-Element, global: 54 - local: X - shadow: X - domain: X
-Element, global: 55 - local: X - shadow: X - domain: X
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: X - domain: X
-Element, global: 58 - local: X - shadow: X - domain: X
-Element, global: 59 - local: X - shadow: X - domain: X
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: X - domain: X
-Element, global: 62 - local: X - shadow: X - domain: X
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 16
-Element, local: 5 - global: 17
-Element, local: 6 - global: 20
-Element, local: 7 - global: 21
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 16
-Element, domain: 5 - global: 17
-Element, domain: 6 - global: 20
-Element, domain: 7 - global: 21
-Element, domain: 8 - global: 2
-Element, domain: 9 - global: 6
-Element, domain: 10 - global: 8
-Element, domain: 11 - global: 9
-Element, domain: 12 - global: 10
-Element, domain: 13 - global: 18
-Element, domain: 14 - global: 22
-Element, domain: 15 - global: 24
-Element, domain: 16 - global: 25
-Element, domain: 17 - global: 26
-Element, domain: 18 - global: 32
-Element, domain: 19 - global: 33
-Element, domain: 20 - global: 34
-Element, domain: 21 - global: 36
-Element, domain: 22 - global: 37
-Element, domain: 23 - global: 38
-Element, domain: 24 - global: 40
-Element, domain: 25 - global: 41
-Element, domain: 26 - global: 42
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 27
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 1 - domain: 28
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 2 - domain: 29
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: 3 - domain: 30
-Node, global: 16 - local: X - shadow: 4 - domain: 31
-Node, global: 17 - local: X - shadow: 5 - domain: 32
-Node, global: 18 - local: X - shadow: 6 - domain: 33
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: 9 - shadow: X - domain: 9
-Node, global: 26 - local: 10 - shadow: X - domain: 10
-Node, global: 27 - local: 11 - shadow: X - domain: 11
-Node, global: 28 - local: X - shadow: 7 - domain: 34
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: 12 - shadow: X - domain: 12
-Node, global: 31 - local: 13 - shadow: X - domain: 13
-Node, global: 32 - local: 14 - shadow: X - domain: 14
-Node, global: 33 - local: X - shadow: 8 - domain: 35
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: 15 - shadow: X - domain: 15
-Node, global: 36 - local: 16 - shadow: X - domain: 16
-Node, global: 37 - local: 17 - shadow: X - domain: 17
-Node, global: 38 - local: X - shadow: 9 - domain: 36
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: X - shadow: 10 - domain: 37
-Node, global: 41 - local: X - shadow: 11 - domain: 38
-Node, global: 42 - local: X - shadow: 12 - domain: 39
-Node, global: 43 - local: X - shadow: 13 - domain: 40
-Node, global: 44 - local: X - shadow: X - domain: X
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: X - domain: X
-Node, global: 47 - local: X - shadow: X - domain: X
-Node, global: 48 - local: X - shadow: X - domain: X
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: 18 - shadow: X - domain: 18
-Node, global: 51 - local: 19 - shadow: X - domain: 19
-Node, global: 52 - local: 20 - shadow: X - domain: 20
-Node, global: 53 - local: X - shadow: 14 - domain: 41
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: 21 - shadow: X - domain: 21
-Node, global: 56 - local: 22 - shadow: X - domain: 22
-Node, global: 57 - local: 23 - shadow: X - domain: 23
-Node, global: 58 - local: X - shadow: 15 - domain: 42
-Node, global: 59 - local: X - shadow: X - domain: X
-Node, global: 60 - local: 24 - shadow: X - domain: 24
-Node, global: 61 - local: 25 - shadow: X - domain: 25
-Node, global: 62 - local: 26 - shadow: X - domain: 26
-Node, global: 63 - local: X - shadow: 16 - domain: 43
-Node, global: 64 - local: X - shadow: X - domain: X
-Node, global: 65 - local: X - shadow: 17 - domain: 44
-Node, global: 66 - local: X - shadow: 18 - domain: 45
-Node, global: 67 - local: X - shadow: 19 - domain: 46
-Node, global: 68 - local: X - shadow: 20 - domain: 47
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: X - domain: X
-Node, global: 72 - local: X - shadow: X - domain: X
-Node, global: 73 - local: X - shadow: X - domain: X
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: X - shadow: 21 - domain: 48
-Node, global: 76 - local: X - shadow: 22 - domain: 49
-Node, global: 77 - local: X - shadow: 23 - domain: 50
-Node, global: 78 - local: X - shadow: 24 - domain: 51
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: X - shadow: 25 - domain: 52
-Node, global: 81 - local: X - shadow: 26 - domain: 53
-Node, global: 82 - local: X - shadow: 27 - domain: 54
-Node, global: 83 - local: X - shadow: 28 - domain: 55
-Node, global: 84 - local: X - shadow: X - domain: X
-Node, global: 85 - local: X - shadow: 29 - domain: 56
-Node, global: 86 - local: X - shadow: 30 - domain: 57
-Node, global: 87 - local: X - shadow: 31 - domain: 58
-Node, global: 88 - local: X - shadow: 32 - domain: 59
-Node, global: 89 - local: X - shadow: X - domain: X
-Node, global: 90 - local: X - shadow: 33 - domain: 60
-Node, global: 91 - local: X - shadow: 34 - domain: 61
-Node, global: 92 - local: X - shadow: 35 - domain: 62
-Node, global: 93 - local: X - shadow: 36 - domain: 63
-Node, global: 94 - local: X - shadow: X - domain: X
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: X - domain: X
-Node, global: 97 - local: X - shadow: X - domain: X
-Node, global: 98 - local: X - shadow: X - domain: X
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: X - domain: X
-Node, global: 102 - local: X - shadow: X - domain: X
-Node, global: 103 - local: X - shadow: X - domain: X
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: X - domain: X
-Node, global: 107 - local: X - shadow: X - domain: X
-Node, global: 108 - local: X - shadow: X - domain: X
-Node, global: 109 - local: X - shadow: X - domain: X
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: X - domain: X
-Node, global: 112 - local: X - shadow: X - domain: X
-Node, global: 113 - local: X - shadow: X - domain: X
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: X - domain: X
-Node, global: 117 - local: X - shadow: X - domain: X
-Node, global: 118 - local: X - shadow: X - domain: X
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: X - domain: X
-Node, global: 122 - local: X - shadow: X - domain: X
-Node, global: 123 - local: X - shadow: X - domain: X
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 25
-Node, local: 10 - global: 26
-Node, local: 11 - global: 27
-Node, local: 12 - global: 30
-Node, local: 13 - global: 31
-Node, local: 14 - global: 32
-Node, local: 15 - global: 35
-Node, local: 16 - global: 36
-Node, local: 17 - global: 37
-Node, local: 18 - global: 50
-Node, local: 19 - global: 51
-Node, local: 20 - global: 52
-Node, local: 21 - global: 55
-Node, local: 22 - global: 56
-Node, local: 23 - global: 57
-Node, local: 24 - global: 60
-Node, local: 25 - global: 61
-Node, local: 26 - global: 62
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 25
-Node, domain: 10 - global: 26
-Node, domain: 11 - global: 27
-Node, domain: 12 - global: 30
-Node, domain: 13 - global: 31
-Node, domain: 14 - global: 32
-Node, domain: 15 - global: 35
-Node, domain: 16 - global: 36
-Node, domain: 17 - global: 37
-Node, domain: 18 - global: 50
-Node, domain: 19 - global: 51
-Node, domain: 20 - global: 52
-Node, domain: 21 - global: 55
-Node, domain: 22 - global: 56
-Node, domain: 23 - global: 57
-Node, domain: 24 - global: 60
-Node, domain: 25 - global: 61
-Node, domain: 26 - global: 62
-Node, domain: 27 - global: 3
-Node, domain: 28 - global: 8
-Node, domain: 29 - global: 13
-Node, domain: 30 - global: 15
-Node, domain: 31 - global: 16
-Node, domain: 32 - global: 17
-Node, domain: 33 - global: 18
-Node, domain: 34 - global: 28
-Node, domain: 35 - global: 33
-Node, domain: 36 - global: 38
-Node, domain: 37 - global: 40
-Node, domain: 38 - global: 41
-Node, domain: 39 - global: 42
-Node, domain: 40 - global: 43
-Node, domain: 41 - global: 53
-Node, domain: 42 - global: 58
-Node, domain: 43 - global: 63
-Node, domain: 44 - global: 65
-Node, domain: 45 - global: 66
-Node, domain: 46 - global: 67
-Node, domain: 47 - global: 68
-Node, domain: 48 - global: 75
-Node, domain: 49 - global: 76
-Node, domain: 50 - global: 77
-Node, domain: 51 - global: 78
-Node, domain: 52 - global: 80
-Node, domain: 53 - global: 81
-Node, domain: 54 - global: 82
-Node, domain: 55 - global: 83
-Node, domain: 56 - global: 85
-Node, domain: 57 - global: 86
-Node, domain: 58 - global: 87
-Node, domain: 59 - global: 88
-Node, domain: 60 - global: 90
-Node, domain: 61 - global: 91
-Node, domain: 62 - global: 92
-Node, domain: 63 - global: 93
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.0of8.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=3" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,369 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 7 of 8 in use (8 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060ea8)
-		size : (2,2,2)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, True, True }
-partitionCounts: { 2, 2, 2 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 2, 2 }
-	elementLocalCounts[1]: { 2, 2, 2 }
-	elementLocalCounts[2]: { 2, 2, 2 }
-	elementLocalCounts[3]: { 2, 2, 2 }
-	elementLocalCounts[4]: { 2, 2, 2 }
-	elementLocalCounts[5]: { 2, 2, 2 }
-	elementLocalCounts[6]: { 2, 2, 2 }
-	elementLocalCounts[7]: { 2, 2, 2 }
-elementDomainCounts: { 3, 3, 3 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 3, 3 }
-	nodeLocalCounts[1]: { 3, 3, 3 }
-	nodeLocalCounts[2]: { 3, 3, 3 }
-	nodeLocalCounts[3]: { 3, 3, 3 }
-	nodeLocalCounts[4]: { 3, 3, 3 }
-	nodeLocalCounts[5]: { 3, 3, 3 }
-	nodeLocalCounts[6]: { 3, 3, 3 }
-	nodeLocalCounts[7]: { 3, 3, 3 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: X - domain: X
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: X - domain: X
-Element, global: 10 - local: X - shadow: X - domain: X
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: X - domain: X
-Element, global: 14 - local: X - shadow: X - domain: X
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: X - domain: X
-Element, global: 18 - local: X - shadow: X - domain: X
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: X - shadow: X - domain: X
-Element, global: 21 - local: X - shadow: 0 - domain: 8
-Element, global: 22 - local: X - shadow: 1 - domain: 9
-Element, global: 23 - local: X - shadow: 2 - domain: 10
-Element, global: 24 - local: X - shadow: X - domain: X
-Element, global: 25 - local: X - shadow: 3 - domain: 11
-Element, global: 26 - local: X - shadow: 4 - domain: 12
-Element, global: 27 - local: X - shadow: 5 - domain: 13
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: 6 - domain: 14
-Element, global: 30 - local: X - shadow: 7 - domain: 15
-Element, global: 31 - local: X - shadow: 8 - domain: 16
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: X - domain: X
-Element, global: 34 - local: X - shadow: X - domain: X
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: X - shadow: X - domain: X
-Element, global: 37 - local: X - shadow: 9 - domain: 17
-Element, global: 38 - local: X - shadow: 10 - domain: 18
-Element, global: 39 - local: X - shadow: 11 - domain: 19
-Element, global: 40 - local: X - shadow: X - domain: X
-Element, global: 41 - local: X - shadow: 12 - domain: 20
-Element, global: 42 - local: 0 - shadow: X - domain: 0
-Element, global: 43 - local: 1 - shadow: X - domain: 1
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: 13 - domain: 21
-Element, global: 46 - local: 2 - shadow: X - domain: 2
-Element, global: 47 - local: 3 - shadow: X - domain: 3
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: X - domain: X
-Element, global: 50 - local: X - shadow: X - domain: X
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: 14 - domain: 22
-Element, global: 54 - local: X - shadow: 15 - domain: 23
-Element, global: 55 - local: X - shadow: 16 - domain: 24
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: 17 - domain: 25
-Element, global: 58 - local: 4 - shadow: X - domain: 4
-Element, global: 59 - local: 5 - shadow: X - domain: 5
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: 18 - domain: 26
-Element, global: 62 - local: 6 - shadow: X - domain: 6
-Element, global: 63 - local: 7 - shadow: X - domain: 7
-
-Element, local: 0 - global: 42
-Element, local: 1 - global: 43
-Element, local: 2 - global: 46
-Element, local: 3 - global: 47
-Element, local: 4 - global: 58
-Element, local: 5 - global: 59
-Element, local: 6 - global: 62
-Element, local: 7 - global: 63
-
-Element, domain: 0 - global: 42
-Element, domain: 1 - global: 43
-Element, domain: 2 - global: 46
-Element, domain: 3 - global: 47
-Element, domain: 4 - global: 58
-Element, domain: 5 - global: 59
-Element, domain: 6 - global: 62
-Element, domain: 7 - global: 63
-Element, domain: 8 - global: 21
-Element, domain: 9 - global: 22
-Element, domain: 10 - global: 23
-Element, domain: 11 - global: 25
-Element, domain: 12 - global: 26
-Element, domain: 13 - global: 27
-Element, domain: 14 - global: 29
-Element, domain: 15 - global: 30
-Element, domain: 16 - global: 31
-Element, domain: 17 - global: 37
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 41
-Element, domain: 21 - global: 45
-Element, domain: 22 - global: 53
-Element, domain: 23 - global: 54
-Element, domain: 24 - global: 55
-Element, domain: 25 - global: 57
-Element, domain: 26 - global: 61
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: X - domain: X
-Node, global: 7 - local: X - shadow: X - domain: X
-Node, global: 8 - local: X - shadow: X - domain: X
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: X - domain: X
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: X - domain: X
-Node, global: 17 - local: X - shadow: X - domain: X
-Node, global: 18 - local: X - shadow: X - domain: X
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: 0 - domain: 27
-Node, global: 32 - local: X - shadow: 1 - domain: 28
-Node, global: 33 - local: X - shadow: 2 - domain: 29
-Node, global: 34 - local: X - shadow: 3 - domain: 30
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: 4 - domain: 31
-Node, global: 37 - local: X - shadow: 5 - domain: 32
-Node, global: 38 - local: X - shadow: 6 - domain: 33
-Node, global: 39 - local: X - shadow: 7 - domain: 34
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: 8 - domain: 35
-Node, global: 42 - local: X - shadow: 9 - domain: 36
-Node, global: 43 - local: X - shadow: 10 - domain: 37
-Node, global: 44 - local: X - shadow: 11 - domain: 38
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: 12 - domain: 39
-Node, global: 47 - local: X - shadow: 13 - domain: 40
-Node, global: 48 - local: X - shadow: 14 - domain: 41
-Node, global: 49 - local: X - shadow: 15 - domain: 42
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: X - domain: X
-Node, global: 52 - local: X - shadow: X - domain: X
-Node, global: 53 - local: X - shadow: X - domain: X
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: X - shadow: X - domain: X
-Node, global: 56 - local: X - shadow: 16 - domain: 43
-Node, global: 57 - local: X - shadow: 17 - domain: 44
-Node, global: 58 - local: X - shadow: 18 - domain: 45
-Node, global: 59 - local: X - shadow: 19 - domain: 46
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 20 - domain: 47
-Node, global: 62 - local: 0 - shadow: X - domain: 0
-Node, global: 63 - local: 1 - shadow: X - domain: 1
-Node, global: 64 - local: 2 - shadow: X - domain: 2
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 21 - domain: 48
-Node, global: 67 - local: 3 - shadow: X - domain: 3
-Node, global: 68 - local: 4 - shadow: X - domain: 4
-Node, global: 69 - local: 5 - shadow: X - domain: 5
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: 22 - domain: 49
-Node, global: 72 - local: 6 - shadow: X - domain: 6
-Node, global: 73 - local: 7 - shadow: X - domain: 7
-Node, global: 74 - local: 8 - shadow: X - domain: 8
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: X - domain: X
-Node, global: 77 - local: X - shadow: X - domain: X
-Node, global: 78 - local: X - shadow: X - domain: X
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: X - shadow: X - domain: X
-Node, global: 81 - local: X - shadow: 23 - domain: 50
-Node, global: 82 - local: X - shadow: 24 - domain: 51
-Node, global: 83 - local: X - shadow: 25 - domain: 52
-Node, global: 84 - local: X - shadow: 26 - domain: 53
-Node, global: 85 - local: X - shadow: X - domain: X
-Node, global: 86 - local: X - shadow: 27 - domain: 54
-Node, global: 87 - local: 9 - shadow: X - domain: 9
-Node, global: 88 - local: 10 - shadow: X - domain: 10
-Node, global: 89 - local: 11 - shadow: X - domain: 11
-Node, global: 90 - local: X - shadow: X - domain: X
-Node, global: 91 - local: X - shadow: 28 - domain: 55
-Node, global: 92 - local: 12 - shadow: X - domain: 12
-Node, global: 93 - local: 13 - shadow: X - domain: 13
-Node, global: 94 - local: 14 - shadow: X - domain: 14
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: 29 - domain: 56
-Node, global: 97 - local: 15 - shadow: X - domain: 15
-Node, global: 98 - local: 16 - shadow: X - domain: 16
-Node, global: 99 - local: 17 - shadow: X - domain: 17
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: X - domain: X
-Node, global: 102 - local: X - shadow: X - domain: X
-Node, global: 103 - local: X - shadow: X - domain: X
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 30 - domain: 57
-Node, global: 107 - local: X - shadow: 31 - domain: 58
-Node, global: 108 - local: X - shadow: 32 - domain: 59
-Node, global: 109 - local: X - shadow: 33 - domain: 60
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 34 - domain: 61
-Node, global: 112 - local: 18 - shadow: X - domain: 18
-Node, global: 113 - local: 19 - shadow: X - domain: 19
-Node, global: 114 - local: 20 - shadow: X - domain: 20
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: 35 - domain: 62
-Node, global: 117 - local: 21 - shadow: X - domain: 21
-Node, global: 118 - local: 22 - shadow: X - domain: 22
-Node, global: 119 - local: 23 - shadow: X - domain: 23
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: 36 - domain: 63
-Node, global: 122 - local: 24 - shadow: X - domain: 24
-Node, global: 123 - local: 25 - shadow: X - domain: 25
-Node, global: 124 - local: 26 - shadow: X - domain: 26
-
-Node, local: 0 - global: 62
-Node, local: 1 - global: 63
-Node, local: 2 - global: 64
-Node, local: 3 - global: 67
-Node, local: 4 - global: 68
-Node, local: 5 - global: 69
-Node, local: 6 - global: 72
-Node, local: 7 - global: 73
-Node, local: 8 - global: 74
-Node, local: 9 - global: 87
-Node, local: 10 - global: 88
-Node, local: 11 - global: 89
-Node, local: 12 - global: 92
-Node, local: 13 - global: 93
-Node, local: 14 - global: 94
-Node, local: 15 - global: 97
-Node, local: 16 - global: 98
-Node, local: 17 - global: 99
-Node, local: 18 - global: 112
-Node, local: 19 - global: 113
-Node, local: 20 - global: 114
-Node, local: 21 - global: 117
-Node, local: 22 - global: 118
-Node, local: 23 - global: 119
-Node, local: 24 - global: 122
-Node, local: 25 - global: 123
-Node, local: 26 - global: 124
-
-Node, domain: 0 - global: 62
-Node, domain: 1 - global: 63
-Node, domain: 2 - global: 64
-Node, domain: 3 - global: 67
-Node, domain: 4 - global: 68
-Node, domain: 5 - global: 69
-Node, domain: 6 - global: 72
-Node, domain: 7 - global: 73
-Node, domain: 8 - global: 74
-Node, domain: 9 - global: 87
-Node, domain: 10 - global: 88
-Node, domain: 11 - global: 89
-Node, domain: 12 - global: 92
-Node, domain: 13 - global: 93
-Node, domain: 14 - global: 94
-Node, domain: 15 - global: 97
-Node, domain: 16 - global: 98
-Node, domain: 17 - global: 99
-Node, domain: 18 - global: 112
-Node, domain: 19 - global: 113
-Node, domain: 20 - global: 114
-Node, domain: 21 - global: 117
-Node, domain: 22 - global: 118
-Node, domain: 23 - global: 119
-Node, domain: 24 - global: 122
-Node, domain: 25 - global: 123
-Node, domain: 26 - global: 124
-Node, domain: 27 - global: 31
-Node, domain: 28 - global: 32
-Node, domain: 29 - global: 33
-Node, domain: 30 - global: 34
-Node, domain: 31 - global: 36
-Node, domain: 32 - global: 37
-Node, domain: 33 - global: 38
-Node, domain: 34 - global: 39
-Node, domain: 35 - global: 41
-Node, domain: 36 - global: 42
-Node, domain: 37 - global: 43
-Node, domain: 38 - global: 44
-Node, domain: 39 - global: 46
-Node, domain: 40 - global: 47
-Node, domain: 41 - global: 48
-Node, domain: 42 - global: 49
-Node, domain: 43 - global: 56
-Node, domain: 44 - global: 57
-Node, domain: 45 - global: 58
-Node, domain: 46 - global: 59
-Node, domain: 47 - global: 61
-Node, domain: 48 - global: 66
-Node, domain: 49 - global: 71
-Node, domain: 50 - global: 81
-Node, domain: 51 - global: 82
-Node, domain: 52 - global: 83
-Node, domain: 53 - global: 84
-Node, domain: 54 - global: 86
-Node, domain: 55 - global: 91
-Node, domain: 56 - global: 96
-Node, domain: 57 - global: 106
-Node, domain: 58 - global: 107
-Node, domain: 59 - global: 108
-Node, domain: 60 - global: 109
-Node, domain: 61 - global: 111
-Node, domain: 62 - global: 116
-Node, domain: 63 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-3D_Decomp.7of8.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --decompDims=3" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,937 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061420)
-		size : (2,1,1)
-		isPeriodic : (True,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 8, 4, 4 }
-elementGlobalCount: 128
-	elementLocalCounts[0]: { 4, 4, 4 }
-	elementLocalCounts[1]: { 4, 4, 4 }
-elementDomainCounts: { 8, 4, 4 }
-nodeGlobalCounts: { 9, 5, 5 }
-nodeGlobalCount: 225
-	nodeLocalCounts[0]: { 5, 5, 5 }
-	nodeLocalCounts[1]: { 5, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: 2 - shadow: X - domain: 2
-Element, global: 3 - local: 3 - shadow: X - domain: 3
-Element, global: 4 - local: X - shadow: 0 - domain: 64
-Element, global: 5 - local: X - shadow: 1 - domain: 65
-Element, global: 6 - local: X - shadow: 2 - domain: 66
-Element, global: 7 - local: X - shadow: 3 - domain: 67
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: 6 - shadow: X - domain: 6
-Element, global: 11 - local: 7 - shadow: X - domain: 7
-Element, global: 12 - local: X - shadow: 4 - domain: 68
-Element, global: 13 - local: X - shadow: 5 - domain: 69
-Element, global: 14 - local: X - shadow: 6 - domain: 70
-Element, global: 15 - local: X - shadow: 7 - domain: 71
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: 10 - shadow: X - domain: 10
-Element, global: 19 - local: 11 - shadow: X - domain: 11
-Element, global: 20 - local: X - shadow: 8 - domain: 72
-Element, global: 21 - local: X - shadow: 9 - domain: 73
-Element, global: 22 - local: X - shadow: 10 - domain: 74
-Element, global: 23 - local: X - shadow: 11 - domain: 75
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: 14 - shadow: X - domain: 14
-Element, global: 27 - local: 15 - shadow: X - domain: 15
-Element, global: 28 - local: X - shadow: 12 - domain: 76
-Element, global: 29 - local: X - shadow: 13 - domain: 77
-Element, global: 30 - local: X - shadow: 14 - domain: 78
-Element, global: 31 - local: X - shadow: 15 - domain: 79
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: 18 - shadow: X - domain: 18
-Element, global: 35 - local: 19 - shadow: X - domain: 19
-Element, global: 36 - local: X - shadow: 16 - domain: 80
-Element, global: 37 - local: X - shadow: 17 - domain: 81
-Element, global: 38 - local: X - shadow: 18 - domain: 82
-Element, global: 39 - local: X - shadow: 19 - domain: 83
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: 22 - shadow: X - domain: 22
-Element, global: 43 - local: 23 - shadow: X - domain: 23
-Element, global: 44 - local: X - shadow: 20 - domain: 84
-Element, global: 45 - local: X - shadow: 21 - domain: 85
-Element, global: 46 - local: X - shadow: 22 - domain: 86
-Element, global: 47 - local: X - shadow: 23 - domain: 87
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: 26 - shadow: X - domain: 26
-Element, global: 51 - local: 27 - shadow: X - domain: 27
-Element, global: 52 - local: X - shadow: 24 - domain: 88
-Element, global: 53 - local: X - shadow: 25 - domain: 89
-Element, global: 54 - local: X - shadow: 26 - domain: 90
-Element, global: 55 - local: X - shadow: 27 - domain: 91
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: 30 - shadow: X - domain: 30
-Element, global: 59 - local: 31 - shadow: X - domain: 31
-Element, global: 60 - local: X - shadow: 28 - domain: 92
-Element, global: 61 - local: X - shadow: 29 - domain: 93
-Element, global: 62 - local: X - shadow: 30 - domain: 94
-Element, global: 63 - local: X - shadow: 31 - domain: 95
-Element, global: 64 - local: 32 - shadow: X - domain: 32
-Element, global: 65 - local: 33 - shadow: X - domain: 33
-Element, global: 66 - local: 34 - shadow: X - domain: 34
-Element, global: 67 - local: 35 - shadow: X - domain: 35
-Element, global: 68 - local: X - shadow: 32 - domain: 96
-Element, global: 69 - local: X - shadow: 33 - domain: 97
-Element, global: 70 - local: X - shadow: 34 - domain: 98
-Element, global: 71 - local: X - shadow: 35 - domain: 99
-Element, global: 72 - local: 36 - shadow: X - domain: 36
-Element, global: 73 - local: 37 - shadow: X - domain: 37
-Element, global: 74 - local: 38 - shadow: X - domain: 38
-Element, global: 75 - local: 39 - shadow: X - domain: 39
-Element, global: 76 - local: X - shadow: 36 - domain: 100
-Element, global: 77 - local: X - shadow: 37 - domain: 101
-Element, global: 78 - local: X - shadow: 38 - domain: 102
-Element, global: 79 - local: X - shadow: 39 - domain: 103
-Element, global: 80 - local: 40 - shadow: X - domain: 40
-Element, global: 81 - local: 41 - shadow: X - domain: 41
-Element, global: 82 - local: 42 - shadow: X - domain: 42
-Element, global: 83 - local: 43 - shadow: X - domain: 43
-Element, global: 84 - local: X - shadow: 40 - domain: 104
-Element, global: 85 - local: X - shadow: 41 - domain: 105
-Element, global: 86 - local: X - shadow: 42 - domain: 106
-Element, global: 87 - local: X - shadow: 43 - domain: 107
-Element, global: 88 - local: 44 - shadow: X - domain: 44
-Element, global: 89 - local: 45 - shadow: X - domain: 45
-Element, global: 90 - local: 46 - shadow: X - domain: 46
-Element, global: 91 - local: 47 - shadow: X - domain: 47
-Element, global: 92 - local: X - shadow: 44 - domain: 108
-Element, global: 93 - local: X - shadow: 45 - domain: 109
-Element, global: 94 - local: X - shadow: 46 - domain: 110
-Element, global: 95 - local: X - shadow: 47 - domain: 111
-Element, global: 96 - local: 48 - shadow: X - domain: 48
-Element, global: 97 - local: 49 - shadow: X - domain: 49
-Element, global: 98 - local: 50 - shadow: X - domain: 50
-Element, global: 99 - local: 51 - shadow: X - domain: 51
-Element, global: 100 - local: X - shadow: 48 - domain: 112
-Element, global: 101 - local: X - shadow: 49 - domain: 113
-Element, global: 102 - local: X - shadow: 50 - domain: 114
-Element, global: 103 - local: X - shadow: 51 - domain: 115
-Element, global: 104 - local: 52 - shadow: X - domain: 52
-Element, global: 105 - local: 53 - shadow: X - domain: 53
-Element, global: 106 - local: 54 - shadow: X - domain: 54
-Element, global: 107 - local: 55 - shadow: X - domain: 55
-Element, global: 108 - local: X - shadow: 52 - domain: 116
-Element, global: 109 - local: X - shadow: 53 - domain: 117
-Element, global: 110 - local: X - shadow: 54 - domain: 118
-Element, global: 111 - local: X - shadow: 55 - domain: 119
-Element, global: 112 - local: 56 - shadow: X - domain: 56
-Element, global: 113 - local: 57 - shadow: X - domain: 57
-Element, global: 114 - local: 58 - shadow: X - domain: 58
-Element, global: 115 - local: 59 - shadow: X - domain: 59
-Element, global: 116 - local: X - shadow: 56 - domain: 120
-Element, global: 117 - local: X - shadow: 57 - domain: 121
-Element, global: 118 - local: X - shadow: 58 - domain: 122
-Element, global: 119 - local: X - shadow: 59 - domain: 123
-Element, global: 120 - local: 60 - shadow: X - domain: 60
-Element, global: 121 - local: 61 - shadow: X - domain: 61
-Element, global: 122 - local: 62 - shadow: X - domain: 62
-Element, global: 123 - local: 63 - shadow: X - domain: 63
-Element, global: 124 - local: X - shadow: 60 - domain: 124
-Element, global: 125 - local: X - shadow: 61 - domain: 125
-Element, global: 126 - local: X - shadow: 62 - domain: 126
-Element, global: 127 - local: X - shadow: 63 - domain: 127
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 2
-Element, local: 3 - global: 3
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 10
-Element, local: 7 - global: 11
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 18
-Element, local: 11 - global: 19
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 26
-Element, local: 15 - global: 27
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 34
-Element, local: 19 - global: 35
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 42
-Element, local: 23 - global: 43
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 50
-Element, local: 27 - global: 51
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 58
-Element, local: 31 - global: 59
-Element, local: 32 - global: 64
-Element, local: 33 - global: 65
-Element, local: 34 - global: 66
-Element, local: 35 - global: 67
-Element, local: 36 - global: 72
-Element, local: 37 - global: 73
-Element, local: 38 - global: 74
-Element, local: 39 - global: 75
-Element, local: 40 - global: 80
-Element, local: 41 - global: 81
-Element, local: 42 - global: 82
-Element, local: 43 - global: 83
-Element, local: 44 - global: 88
-Element, local: 45 - global: 89
-Element, local: 46 - global: 90
-Element, local: 47 - global: 91
-Element, local: 48 - global: 96
-Element, local: 49 - global: 97
-Element, local: 50 - global: 98
-Element, local: 51 - global: 99
-Element, local: 52 - global: 104
-Element, local: 53 - global: 105
-Element, local: 54 - global: 106
-Element, local: 55 - global: 107
-Element, local: 56 - global: 112
-Element, local: 57 - global: 113
-Element, local: 58 - global: 114
-Element, local: 59 - global: 115
-Element, local: 60 - global: 120
-Element, local: 61 - global: 121
-Element, local: 62 - global: 122
-Element, local: 63 - global: 123
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 2
-Element, domain: 3 - global: 3
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 10
-Element, domain: 7 - global: 11
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 18
-Element, domain: 11 - global: 19
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 26
-Element, domain: 15 - global: 27
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 34
-Element, domain: 19 - global: 35
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 42
-Element, domain: 23 - global: 43
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 50
-Element, domain: 27 - global: 51
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 58
-Element, domain: 31 - global: 59
-Element, domain: 32 - global: 64
-Element, domain: 33 - global: 65
-Element, domain: 34 - global: 66
-Element, domain: 35 - global: 67
-Element, domain: 36 - global: 72
-Element, domain: 37 - global: 73
-Element, domain: 38 - global: 74
-Element, domain: 39 - global: 75
-Element, domain: 40 - global: 80
-Element, domain: 41 - global: 81
-Element, domain: 42 - global: 82
-Element, domain: 43 - global: 83
-Element, domain: 44 - global: 88
-Element, domain: 45 - global: 89
-Element, domain: 46 - global: 90
-Element, domain: 47 - global: 91
-Element, domain: 48 - global: 96
-Element, domain: 49 - global: 97
-Element, domain: 50 - global: 98
-Element, domain: 51 - global: 99
-Element, domain: 52 - global: 104
-Element, domain: 53 - global: 105
-Element, domain: 54 - global: 106
-Element, domain: 55 - global: 107
-Element, domain: 56 - global: 112
-Element, domain: 57 - global: 113
-Element, domain: 58 - global: 114
-Element, domain: 59 - global: 115
-Element, domain: 60 - global: 120
-Element, domain: 61 - global: 121
-Element, domain: 62 - global: 122
-Element, domain: 63 - global: 123
-Element, domain: 64 - global: 4
-Element, domain: 65 - global: 5
-Element, domain: 66 - global: 6
-Element, domain: 67 - global: 7
-Element, domain: 68 - global: 12
-Element, domain: 69 - global: 13
-Element, domain: 70 - global: 14
-Element, domain: 71 - global: 15
-Element, domain: 72 - global: 20
-Element, domain: 73 - global: 21
-Element, domain: 74 - global: 22
-Element, domain: 75 - global: 23
-Element, domain: 76 - global: 28
-Element, domain: 77 - global: 29
-Element, domain: 78 - global: 30
-Element, domain: 79 - global: 31
-Element, domain: 80 - global: 36
-Element, domain: 81 - global: 37
-Element, domain: 82 - global: 38
-Element, domain: 83 - global: 39
-Element, domain: 84 - global: 44
-Element, domain: 85 - global: 45
-Element, domain: 86 - global: 46
-Element, domain: 87 - global: 47
-Element, domain: 88 - global: 52
-Element, domain: 89 - global: 53
-Element, domain: 90 - global: 54
-Element, domain: 91 - global: 55
-Element, domain: 92 - global: 60
-Element, domain: 93 - global: 61
-Element, domain: 94 - global: 62
-Element, domain: 95 - global: 63
-Element, domain: 96 - global: 68
-Element, domain: 97 - global: 69
-Element, domain: 98 - global: 70
-Element, domain: 99 - global: 71
-Element, domain: 100 - global: 76
-Element, domain: 101 - global: 77
-Element, domain: 102 - global: 78
-Element, domain: 103 - global: 79
-Element, domain: 104 - global: 84
-Element, domain: 105 - global: 85
-Element, domain: 106 - global: 86
-Element, domain: 107 - global: 87
-Element, domain: 108 - global: 92
-Element, domain: 109 - global: 93
-Element, domain: 110 - global: 94
-Element, domain: 111 - global: 95
-Element, domain: 112 - global: 100
-Element, domain: 113 - global: 101
-Element, domain: 114 - global: 102
-Element, domain: 115 - global: 103
-Element, domain: 116 - global: 108
-Element, domain: 117 - global: 109
-Element, domain: 118 - global: 110
-Element, domain: 119 - global: 111
-Element, domain: 120 - global: 116
-Element, domain: 121 - global: 117
-Element, domain: 122 - global: 118
-Element, domain: 123 - global: 119
-Element, domain: 124 - global: 124
-Element, domain: 125 - global: 125
-Element, domain: 126 - global: 126
-Element, domain: 127 - global: 127
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: 3 - shadow: X - domain: 3
-Node, global: 4 - local: 4 - shadow: X - domain: 4
-Node, global: 5 - local: X - shadow: 0 - domain: 125
-Node, global: 6 - local: X - shadow: 1 - domain: 126
-Node, global: 7 - local: X - shadow: 2 - domain: 127
-Node, global: 8 - local: X - shadow: 3 - domain: 128
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: 9 - shadow: X - domain: 9
-Node, global: 14 - local: X - shadow: 4 - domain: 129
-Node, global: 15 - local: X - shadow: 5 - domain: 130
-Node, global: 16 - local: X - shadow: 6 - domain: 131
-Node, global: 17 - local: X - shadow: 7 - domain: 132
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 8 - domain: 133
-Node, global: 24 - local: X - shadow: 9 - domain: 134
-Node, global: 25 - local: X - shadow: 10 - domain: 135
-Node, global: 26 - local: X - shadow: 11 - domain: 136
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: X - shadow: 12 - domain: 137
-Node, global: 33 - local: X - shadow: 13 - domain: 138
-Node, global: 34 - local: X - shadow: 14 - domain: 139
-Node, global: 35 - local: X - shadow: 15 - domain: 140
-Node, global: 36 - local: 20 - shadow: X - domain: 20
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: X - shadow: 16 - domain: 141
-Node, global: 42 - local: X - shadow: 17 - domain: 142
-Node, global: 43 - local: X - shadow: 18 - domain: 143
-Node, global: 44 - local: X - shadow: 19 - domain: 144
-Node, global: 45 - local: 25 - shadow: X - domain: 25
-Node, global: 46 - local: 26 - shadow: X - domain: 26
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: 20 - domain: 145
-Node, global: 51 - local: X - shadow: 21 - domain: 146
-Node, global: 52 - local: X - shadow: 22 - domain: 147
-Node, global: 53 - local: X - shadow: 23 - domain: 148
-Node, global: 54 - local: 30 - shadow: X - domain: 30
-Node, global: 55 - local: 31 - shadow: X - domain: 31
-Node, global: 56 - local: 32 - shadow: X - domain: 32
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: X - shadow: 24 - domain: 149
-Node, global: 60 - local: X - shadow: 25 - domain: 150
-Node, global: 61 - local: X - shadow: 26 - domain: 151
-Node, global: 62 - local: X - shadow: 27 - domain: 152
-Node, global: 63 - local: 35 - shadow: X - domain: 35
-Node, global: 64 - local: 36 - shadow: X - domain: 36
-Node, global: 65 - local: 37 - shadow: X - domain: 37
-Node, global: 66 - local: 38 - shadow: X - domain: 38
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: X - shadow: 28 - domain: 153
-Node, global: 69 - local: X - shadow: 29 - domain: 154
-Node, global: 70 - local: X - shadow: 30 - domain: 155
-Node, global: 71 - local: X - shadow: 31 - domain: 156
-Node, global: 72 - local: 40 - shadow: X - domain: 40
-Node, global: 73 - local: 41 - shadow: X - domain: 41
-Node, global: 74 - local: 42 - shadow: X - domain: 42
-Node, global: 75 - local: 43 - shadow: X - domain: 43
-Node, global: 76 - local: 44 - shadow: X - domain: 44
-Node, global: 77 - local: X - shadow: 32 - domain: 157
-Node, global: 78 - local: X - shadow: 33 - domain: 158
-Node, global: 79 - local: X - shadow: 34 - domain: 159
-Node, global: 80 - local: X - shadow: 35 - domain: 160
-Node, global: 81 - local: 45 - shadow: X - domain: 45
-Node, global: 82 - local: 46 - shadow: X - domain: 46
-Node, global: 83 - local: 47 - shadow: X - domain: 47
-Node, global: 84 - local: 48 - shadow: X - domain: 48
-Node, global: 85 - local: 49 - shadow: X - domain: 49
-Node, global: 86 - local: X - shadow: 36 - domain: 161
-Node, global: 87 - local: X - shadow: 37 - domain: 162
-Node, global: 88 - local: X - shadow: 38 - domain: 163
-Node, global: 89 - local: X - shadow: 39 - domain: 164
-Node, global: 90 - local: 50 - shadow: X - domain: 50
-Node, global: 91 - local: 51 - shadow: X - domain: 51
-Node, global: 92 - local: 52 - shadow: X - domain: 52
-Node, global: 93 - local: 53 - shadow: X - domain: 53
-Node, global: 94 - local: 54 - shadow: X - domain: 54
-Node, global: 95 - local: X - shadow: 40 - domain: 165
-Node, global: 96 - local: X - shadow: 41 - domain: 166
-Node, global: 97 - local: X - shadow: 42 - domain: 167
-Node, global: 98 - local: X - shadow: 43 - domain: 168
-Node, global: 99 - local: 55 - shadow: X - domain: 55
-Node, global: 100 - local: 56 - shadow: X - domain: 56
-Node, global: 101 - local: 57 - shadow: X - domain: 57
-Node, global: 102 - local: 58 - shadow: X - domain: 58
-Node, global: 103 - local: 59 - shadow: X - domain: 59
-Node, global: 104 - local: X - shadow: 44 - domain: 169
-Node, global: 105 - local: X - shadow: 45 - domain: 170
-Node, global: 106 - local: X - shadow: 46 - domain: 171
-Node, global: 107 - local: X - shadow: 47 - domain: 172
-Node, global: 108 - local: 60 - shadow: X - domain: 60
-Node, global: 109 - local: 61 - shadow: X - domain: 61
-Node, global: 110 - local: 62 - shadow: X - domain: 62
-Node, global: 111 - local: 63 - shadow: X - domain: 63
-Node, global: 112 - local: 64 - shadow: X - domain: 64
-Node, global: 113 - local: X - shadow: 48 - domain: 173
-Node, global: 114 - local: X - shadow: 49 - domain: 174
-Node, global: 115 - local: X - shadow: 50 - domain: 175
-Node, global: 116 - local: X - shadow: 51 - domain: 176
-Node, global: 117 - local: 65 - shadow: X - domain: 65
-Node, global: 118 - local: 66 - shadow: X - domain: 66
-Node, global: 119 - local: 67 - shadow: X - domain: 67
-Node, global: 120 - local: 68 - shadow: X - domain: 68
-Node, global: 121 - local: 69 - shadow: X - domain: 69
-Node, global: 122 - local: X - shadow: 52 - domain: 177
-Node, global: 123 - local: X - shadow: 53 - domain: 178
-Node, global: 124 - local: X - shadow: 54 - domain: 179
-Node, global: 125 - local: X - shadow: 55 - domain: 180
-Node, global: 126 - local: 70 - shadow: X - domain: 70
-Node, global: 127 - local: 71 - shadow: X - domain: 71
-Node, global: 128 - local: 72 - shadow: X - domain: 72
-Node, global: 129 - local: 73 - shadow: X - domain: 73
-Node, global: 130 - local: 74 - shadow: X - domain: 74
-Node, global: 131 - local: X - shadow: 56 - domain: 181
-Node, global: 132 - local: X - shadow: 57 - domain: 182
-Node, global: 133 - local: X - shadow: 58 - domain: 183
-Node, global: 134 - local: X - shadow: 59 - domain: 184
-Node, global: 135 - local: 75 - shadow: X - domain: 75
-Node, global: 136 - local: 76 - shadow: X - domain: 76
-Node, global: 137 - local: 77 - shadow: X - domain: 77
-Node, global: 138 - local: 78 - shadow: X - domain: 78
-Node, global: 139 - local: 79 - shadow: X - domain: 79
-Node, global: 140 - local: X - shadow: 60 - domain: 185
-Node, global: 141 - local: X - shadow: 61 - domain: 186
-Node, global: 142 - local: X - shadow: 62 - domain: 187
-Node, global: 143 - local: X - shadow: 63 - domain: 188
-Node, global: 144 - local: 80 - shadow: X - domain: 80
-Node, global: 145 - local: 81 - shadow: X - domain: 81
-Node, global: 146 - local: 82 - shadow: X - domain: 82
-Node, global: 147 - local: 83 - shadow: X - domain: 83
-Node, global: 148 - local: 84 - shadow: X - domain: 84
-Node, global: 149 - local: X - shadow: 64 - domain: 189
-Node, global: 150 - local: X - shadow: 65 - domain: 190
-Node, global: 151 - local: X - shadow: 66 - domain: 191
-Node, global: 152 - local: X - shadow: 67 - domain: 192
-Node, global: 153 - local: 85 - shadow: X - domain: 85
-Node, global: 154 - local: 86 - shadow: X - domain: 86
-Node, global: 155 - local: 87 - shadow: X - domain: 87
-Node, global: 156 - local: 88 - shadow: X - domain: 88
-Node, global: 157 - local: 89 - shadow: X - domain: 89
-Node, global: 158 - local: X - shadow: 68 - domain: 193
-Node, global: 159 - local: X - shadow: 69 - domain: 194
-Node, global: 160 - local: X - shadow: 70 - domain: 195
-Node, global: 161 - local: X - shadow: 71 - domain: 196
-Node, global: 162 - local: 90 - shadow: X - domain: 90
-Node, global: 163 - local: 91 - shadow: X - domain: 91
-Node, global: 164 - local: 92 - shadow: X - domain: 92
-Node, global: 165 - local: 93 - shadow: X - domain: 93
-Node, global: 166 - local: 94 - shadow: X - domain: 94
-Node, global: 167 - local: X - shadow: 72 - domain: 197
-Node, global: 168 - local: X - shadow: 73 - domain: 198
-Node, global: 169 - local: X - shadow: 74 - domain: 199
-Node, global: 170 - local: X - shadow: 75 - domain: 200
-Node, global: 171 - local: 95 - shadow: X - domain: 95
-Node, global: 172 - local: 96 - shadow: X - domain: 96
-Node, global: 173 - local: 97 - shadow: X - domain: 97
-Node, global: 174 - local: 98 - shadow: X - domain: 98
-Node, global: 175 - local: 99 - shadow: X - domain: 99
-Node, global: 176 - local: X - shadow: 76 - domain: 201
-Node, global: 177 - local: X - shadow: 77 - domain: 202
-Node, global: 178 - local: X - shadow: 78 - domain: 203
-Node, global: 179 - local: X - shadow: 79 - domain: 204
-Node, global: 180 - local: 100 - shadow: X - domain: 100
-Node, global: 181 - local: 101 - shadow: X - domain: 101
-Node, global: 182 - local: 102 - shadow: X - domain: 102
-Node, global: 183 - local: 103 - shadow: X - domain: 103
-Node, global: 184 - local: 104 - shadow: X - domain: 104
-Node, global: 185 - local: X - shadow: 80 - domain: 205
-Node, global: 186 - local: X - shadow: 81 - domain: 206
-Node, global: 187 - local: X - shadow: 82 - domain: 207
-Node, global: 188 - local: X - shadow: 83 - domain: 208
-Node, global: 189 - local: 105 - shadow: X - domain: 105
-Node, global: 190 - local: 106 - shadow: X - domain: 106
-Node, global: 191 - local: 107 - shadow: X - domain: 107
-Node, global: 192 - local: 108 - shadow: X - domain: 108
-Node, global: 193 - local: 109 - shadow: X - domain: 109
-Node, global: 194 - local: X - shadow: 84 - domain: 209
-Node, global: 195 - local: X - shadow: 85 - domain: 210
-Node, global: 196 - local: X - shadow: 86 - domain: 211
-Node, global: 197 - local: X - shadow: 87 - domain: 212
-Node, global: 198 - local: 110 - shadow: X - domain: 110
-Node, global: 199 - local: 111 - shadow: X - domain: 111
-Node, global: 200 - local: 112 - shadow: X - domain: 112
-Node, global: 201 - local: 113 - shadow: X - domain: 113
-Node, global: 202 - local: 114 - shadow: X - domain: 114
-Node, global: 203 - local: X - shadow: 88 - domain: 213
-Node, global: 204 - local: X - shadow: 89 - domain: 214
-Node, global: 205 - local: X - shadow: 90 - domain: 215
-Node, global: 206 - local: X - shadow: 91 - domain: 216
-Node, global: 207 - local: 115 - shadow: X - domain: 115
-Node, global: 208 - local: 116 - shadow: X - domain: 116
-Node, global: 209 - local: 117 - shadow: X - domain: 117
-Node, global: 210 - local: 118 - shadow: X - domain: 118
-Node, global: 211 - local: 119 - shadow: X - domain: 119
-Node, global: 212 - local: X - shadow: 92 - domain: 217
-Node, global: 213 - local: X - shadow: 93 - domain: 218
-Node, global: 214 - local: X - shadow: 94 - domain: 219
-Node, global: 215 - local: X - shadow: 95 - domain: 220
-Node, global: 216 - local: 120 - shadow: X - domain: 120
-Node, global: 217 - local: 121 - shadow: X - domain: 121
-Node, global: 218 - local: 122 - shadow: X - domain: 122
-Node, global: 219 - local: 123 - shadow: X - domain: 123
-Node, global: 220 - local: 124 - shadow: X - domain: 124
-Node, global: 221 - local: X - shadow: 96 - domain: 221
-Node, global: 222 - local: X - shadow: 97 - domain: 222
-Node, global: 223 - local: X - shadow: 98 - domain: 223
-Node, global: 224 - local: X - shadow: 99 - domain: 224
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 3
-Node, local: 4 - global: 4
-Node, local: 5 - global: 9
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 13
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 36
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 40
-Node, local: 25 - global: 45
-Node, local: 26 - global: 46
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 54
-Node, local: 31 - global: 55
-Node, local: 32 - global: 56
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 63
-Node, local: 36 - global: 64
-Node, local: 37 - global: 65
-Node, local: 38 - global: 66
-Node, local: 39 - global: 67
-Node, local: 40 - global: 72
-Node, local: 41 - global: 73
-Node, local: 42 - global: 74
-Node, local: 43 - global: 75
-Node, local: 44 - global: 76
-Node, local: 45 - global: 81
-Node, local: 46 - global: 82
-Node, local: 47 - global: 83
-Node, local: 48 - global: 84
-Node, local: 49 - global: 85
-Node, local: 50 - global: 90
-Node, local: 51 - global: 91
-Node, local: 52 - global: 92
-Node, local: 53 - global: 93
-Node, local: 54 - global: 94
-Node, local: 55 - global: 99
-Node, local: 56 - global: 100
-Node, local: 57 - global: 101
-Node, local: 58 - global: 102
-Node, local: 59 - global: 103
-Node, local: 60 - global: 108
-Node, local: 61 - global: 109
-Node, local: 62 - global: 110
-Node, local: 63 - global: 111
-Node, local: 64 - global: 112
-Node, local: 65 - global: 117
-Node, local: 66 - global: 118
-Node, local: 67 - global: 119
-Node, local: 68 - global: 120
-Node, local: 69 - global: 121
-Node, local: 70 - global: 126
-Node, local: 71 - global: 127
-Node, local: 72 - global: 128
-Node, local: 73 - global: 129
-Node, local: 74 - global: 130
-Node, local: 75 - global: 135
-Node, local: 76 - global: 136
-Node, local: 77 - global: 137
-Node, local: 78 - global: 138
-Node, local: 79 - global: 139
-Node, local: 80 - global: 144
-Node, local: 81 - global: 145
-Node, local: 82 - global: 146
-Node, local: 83 - global: 147
-Node, local: 84 - global: 148
-Node, local: 85 - global: 153
-Node, local: 86 - global: 154
-Node, local: 87 - global: 155
-Node, local: 88 - global: 156
-Node, local: 89 - global: 157
-Node, local: 90 - global: 162
-Node, local: 91 - global: 163
-Node, local: 92 - global: 164
-Node, local: 93 - global: 165
-Node, local: 94 - global: 166
-Node, local: 95 - global: 171
-Node, local: 96 - global: 172
-Node, local: 97 - global: 173
-Node, local: 98 - global: 174
-Node, local: 99 - global: 175
-Node, local: 100 - global: 180
-Node, local: 101 - global: 181
-Node, local: 102 - global: 182
-Node, local: 103 - global: 183
-Node, local: 104 - global: 184
-Node, local: 105 - global: 189
-Node, local: 106 - global: 190
-Node, local: 107 - global: 191
-Node, local: 108 - global: 192
-Node, local: 109 - global: 193
-Node, local: 110 - global: 198
-Node, local: 111 - global: 199
-Node, local: 112 - global: 200
-Node, local: 113 - global: 201
-Node, local: 114 - global: 202
-Node, local: 115 - global: 207
-Node, local: 116 - global: 208
-Node, local: 117 - global: 209
-Node, local: 118 - global: 210
-Node, local: 119 - global: 211
-Node, local: 120 - global: 216
-Node, local: 121 - global: 217
-Node, local: 122 - global: 218
-Node, local: 123 - global: 219
-Node, local: 124 - global: 220
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 3
-Node, domain: 4 - global: 4
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 13
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 36
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 45
-Node, domain: 26 - global: 46
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 54
-Node, domain: 31 - global: 55
-Node, domain: 32 - global: 56
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 63
-Node, domain: 36 - global: 64
-Node, domain: 37 - global: 65
-Node, domain: 38 - global: 66
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 72
-Node, domain: 41 - global: 73
-Node, domain: 42 - global: 74
-Node, domain: 43 - global: 75
-Node, domain: 44 - global: 76
-Node, domain: 45 - global: 81
-Node, domain: 46 - global: 82
-Node, domain: 47 - global: 83
-Node, domain: 48 - global: 84
-Node, domain: 49 - global: 85
-Node, domain: 50 - global: 90
-Node, domain: 51 - global: 91
-Node, domain: 52 - global: 92
-Node, domain: 53 - global: 93
-Node, domain: 54 - global: 94
-Node, domain: 55 - global: 99
-Node, domain: 56 - global: 100
-Node, domain: 57 - global: 101
-Node, domain: 58 - global: 102
-Node, domain: 59 - global: 103
-Node, domain: 60 - global: 108
-Node, domain: 61 - global: 109
-Node, domain: 62 - global: 110
-Node, domain: 63 - global: 111
-Node, domain: 64 - global: 112
-Node, domain: 65 - global: 117
-Node, domain: 66 - global: 118
-Node, domain: 67 - global: 119
-Node, domain: 68 - global: 120
-Node, domain: 69 - global: 121
-Node, domain: 70 - global: 126
-Node, domain: 71 - global: 127
-Node, domain: 72 - global: 128
-Node, domain: 73 - global: 129
-Node, domain: 74 - global: 130
-Node, domain: 75 - global: 135
-Node, domain: 76 - global: 136
-Node, domain: 77 - global: 137
-Node, domain: 78 - global: 138
-Node, domain: 79 - global: 139
-Node, domain: 80 - global: 144
-Node, domain: 81 - global: 145
-Node, domain: 82 - global: 146
-Node, domain: 83 - global: 147
-Node, domain: 84 - global: 148
-Node, domain: 85 - global: 153
-Node, domain: 86 - global: 154
-Node, domain: 87 - global: 155
-Node, domain: 88 - global: 156
-Node, domain: 89 - global: 157
-Node, domain: 90 - global: 162
-Node, domain: 91 - global: 163
-Node, domain: 92 - global: 164
-Node, domain: 93 - global: 165
-Node, domain: 94 - global: 166
-Node, domain: 95 - global: 171
-Node, domain: 96 - global: 172
-Node, domain: 97 - global: 173
-Node, domain: 98 - global: 174
-Node, domain: 99 - global: 175
-Node, domain: 100 - global: 180
-Node, domain: 101 - global: 181
-Node, domain: 102 - global: 182
-Node, domain: 103 - global: 183
-Node, domain: 104 - global: 184
-Node, domain: 105 - global: 189
-Node, domain: 106 - global: 190
-Node, domain: 107 - global: 191
-Node, domain: 108 - global: 192
-Node, domain: 109 - global: 193
-Node, domain: 110 - global: 198
-Node, domain: 111 - global: 199
-Node, domain: 112 - global: 200
-Node, domain: 113 - global: 201
-Node, domain: 114 - global: 202
-Node, domain: 115 - global: 207
-Node, domain: 116 - global: 208
-Node, domain: 117 - global: 209
-Node, domain: 118 - global: 210
-Node, domain: 119 - global: 211
-Node, domain: 120 - global: 216
-Node, domain: 121 - global: 217
-Node, domain: 122 - global: 218
-Node, domain: 123 - global: 219
-Node, domain: 124 - global: 220
-Node, domain: 125 - global: 5
-Node, domain: 126 - global: 6
-Node, domain: 127 - global: 7
-Node, domain: 128 - global: 8
-Node, domain: 129 - global: 14
-Node, domain: 130 - global: 15
-Node, domain: 131 - global: 16
-Node, domain: 132 - global: 17
-Node, domain: 133 - global: 23
-Node, domain: 134 - global: 24
-Node, domain: 135 - global: 25
-Node, domain: 136 - global: 26
-Node, domain: 137 - global: 32
-Node, domain: 138 - global: 33
-Node, domain: 139 - global: 34
-Node, domain: 140 - global: 35
-Node, domain: 141 - global: 41
-Node, domain: 142 - global: 42
-Node, domain: 143 - global: 43
-Node, domain: 144 - global: 44
-Node, domain: 145 - global: 50
-Node, domain: 146 - global: 51
-Node, domain: 147 - global: 52
-Node, domain: 148 - global: 53
-Node, domain: 149 - global: 59
-Node, domain: 150 - global: 60
-Node, domain: 151 - global: 61
-Node, domain: 152 - global: 62
-Node, domain: 153 - global: 68
-Node, domain: 154 - global: 69
-Node, domain: 155 - global: 70
-Node, domain: 156 - global: 71
-Node, domain: 157 - global: 77
-Node, domain: 158 - global: 78
-Node, domain: 159 - global: 79
-Node, domain: 160 - global: 80
-Node, domain: 161 - global: 86
-Node, domain: 162 - global: 87
-Node, domain: 163 - global: 88
-Node, domain: 164 - global: 89
-Node, domain: 165 - global: 95
-Node, domain: 166 - global: 96
-Node, domain: 167 - global: 97
-Node, domain: 168 - global: 98
-Node, domain: 169 - global: 104
-Node, domain: 170 - global: 105
-Node, domain: 171 - global: 106
-Node, domain: 172 - global: 107
-Node, domain: 173 - global: 113
-Node, domain: 174 - global: 114
-Node, domain: 175 - global: 115
-Node, domain: 176 - global: 116
-Node, domain: 177 - global: 122
-Node, domain: 178 - global: 123
-Node, domain: 179 - global: 124
-Node, domain: 180 - global: 125
-Node, domain: 181 - global: 131
-Node, domain: 182 - global: 132
-Node, domain: 183 - global: 133
-Node, domain: 184 - global: 134
-Node, domain: 185 - global: 140
-Node, domain: 186 - global: 141
-Node, domain: 187 - global: 142
-Node, domain: 188 - global: 143
-Node, domain: 189 - global: 149
-Node, domain: 190 - global: 150
-Node, domain: 191 - global: 151
-Node, domain: 192 - global: 152
-Node, domain: 193 - global: 158
-Node, domain: 194 - global: 159
-Node, domain: 195 - global: 160
-Node, domain: 196 - global: 161
-Node, domain: 197 - global: 167
-Node, domain: 198 - global: 168
-Node, domain: 199 - global: 169
-Node, domain: 200 - global: 170
-Node, domain: 201 - global: 176
-Node, domain: 202 - global: 177
-Node, domain: 203 - global: 178
-Node, domain: 204 - global: 179
-Node, domain: 205 - global: 185
-Node, domain: 206 - global: 186
-Node, domain: 207 - global: 187
-Node, domain: 208 - global: 188
-Node, domain: 209 - global: 194
-Node, domain: 210 - global: 195
-Node, domain: 211 - global: 196
-Node, domain: 212 - global: 197
-Node, domain: 213 - global: 203
-Node, domain: 214 - global: 204
-Node, domain: 215 - global: 205
-Node, domain: 216 - global: 206
-Node, domain: 217 - global: 212
-Node, domain: 218 - global: 213
-Node, domain: 219 - global: 214
-Node, domain: 220 - global: 215
-Node, domain: 221 - global: 221
-Node, domain: 222 - global: 222
-Node, domain: 223 - global: 223
-Node, domain: 224 - global: 224
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --meshSizeI=9 --isPeriodicI=True --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,937 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060790)
-		size : (2,1,1)
-		isPeriodic : (True,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 8, 4, 4 }
-elementGlobalCount: 128
-	elementLocalCounts[0]: { 4, 4, 4 }
-	elementLocalCounts[1]: { 4, 4, 4 }
-elementDomainCounts: { 8, 4, 4 }
-nodeGlobalCounts: { 9, 5, 5 }
-nodeGlobalCount: 225
-	nodeLocalCounts[0]: { 5, 5, 5 }
-	nodeLocalCounts[1]: { 5, 5, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 64
-Element, global: 1 - local: X - shadow: 1 - domain: 65
-Element, global: 2 - local: X - shadow: 2 - domain: 66
-Element, global: 3 - local: X - shadow: 3 - domain: 67
-Element, global: 4 - local: 0 - shadow: X - domain: 0
-Element, global: 5 - local: 1 - shadow: X - domain: 1
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: 4 - domain: 68
-Element, global: 9 - local: X - shadow: 5 - domain: 69
-Element, global: 10 - local: X - shadow: 6 - domain: 70
-Element, global: 11 - local: X - shadow: 7 - domain: 71
-Element, global: 12 - local: 4 - shadow: X - domain: 4
-Element, global: 13 - local: 5 - shadow: X - domain: 5
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: 8 - domain: 72
-Element, global: 17 - local: X - shadow: 9 - domain: 73
-Element, global: 18 - local: X - shadow: 10 - domain: 74
-Element, global: 19 - local: X - shadow: 11 - domain: 75
-Element, global: 20 - local: 8 - shadow: X - domain: 8
-Element, global: 21 - local: 9 - shadow: X - domain: 9
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: 12 - domain: 76
-Element, global: 25 - local: X - shadow: 13 - domain: 77
-Element, global: 26 - local: X - shadow: 14 - domain: 78
-Element, global: 27 - local: X - shadow: 15 - domain: 79
-Element, global: 28 - local: 12 - shadow: X - domain: 12
-Element, global: 29 - local: 13 - shadow: X - domain: 13
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: 16 - domain: 80
-Element, global: 33 - local: X - shadow: 17 - domain: 81
-Element, global: 34 - local: X - shadow: 18 - domain: 82
-Element, global: 35 - local: X - shadow: 19 - domain: 83
-Element, global: 36 - local: 16 - shadow: X - domain: 16
-Element, global: 37 - local: 17 - shadow: X - domain: 17
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: 20 - domain: 84
-Element, global: 41 - local: X - shadow: 21 - domain: 85
-Element, global: 42 - local: X - shadow: 22 - domain: 86
-Element, global: 43 - local: X - shadow: 23 - domain: 87
-Element, global: 44 - local: 20 - shadow: X - domain: 20
-Element, global: 45 - local: 21 - shadow: X - domain: 21
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: 24 - domain: 88
-Element, global: 49 - local: X - shadow: 25 - domain: 89
-Element, global: 50 - local: X - shadow: 26 - domain: 90
-Element, global: 51 - local: X - shadow: 27 - domain: 91
-Element, global: 52 - local: 24 - shadow: X - domain: 24
-Element, global: 53 - local: 25 - shadow: X - domain: 25
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: 28 - domain: 92
-Element, global: 57 - local: X - shadow: 29 - domain: 93
-Element, global: 58 - local: X - shadow: 30 - domain: 94
-Element, global: 59 - local: X - shadow: 31 - domain: 95
-Element, global: 60 - local: 28 - shadow: X - domain: 28
-Element, global: 61 - local: 29 - shadow: X - domain: 29
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-Element, global: 64 - local: X - shadow: 32 - domain: 96
-Element, global: 65 - local: X - shadow: 33 - domain: 97
-Element, global: 66 - local: X - shadow: 34 - domain: 98
-Element, global: 67 - local: X - shadow: 35 - domain: 99
-Element, global: 68 - local: 32 - shadow: X - domain: 32
-Element, global: 69 - local: 33 - shadow: X - domain: 33
-Element, global: 70 - local: 34 - shadow: X - domain: 34
-Element, global: 71 - local: 35 - shadow: X - domain: 35
-Element, global: 72 - local: X - shadow: 36 - domain: 100
-Element, global: 73 - local: X - shadow: 37 - domain: 101
-Element, global: 74 - local: X - shadow: 38 - domain: 102
-Element, global: 75 - local: X - shadow: 39 - domain: 103
-Element, global: 76 - local: 36 - shadow: X - domain: 36
-Element, global: 77 - local: 37 - shadow: X - domain: 37
-Element, global: 78 - local: 38 - shadow: X - domain: 38
-Element, global: 79 - local: 39 - shadow: X - domain: 39
-Element, global: 80 - local: X - shadow: 40 - domain: 104
-Element, global: 81 - local: X - shadow: 41 - domain: 105
-Element, global: 82 - local: X - shadow: 42 - domain: 106
-Element, global: 83 - local: X - shadow: 43 - domain: 107
-Element, global: 84 - local: 40 - shadow: X - domain: 40
-Element, global: 85 - local: 41 - shadow: X - domain: 41
-Element, global: 86 - local: 42 - shadow: X - domain: 42
-Element, global: 87 - local: 43 - shadow: X - domain: 43
-Element, global: 88 - local: X - shadow: 44 - domain: 108
-Element, global: 89 - local: X - shadow: 45 - domain: 109
-Element, global: 90 - local: X - shadow: 46 - domain: 110
-Element, global: 91 - local: X - shadow: 47 - domain: 111
-Element, global: 92 - local: 44 - shadow: X - domain: 44
-Element, global: 93 - local: 45 - shadow: X - domain: 45
-Element, global: 94 - local: 46 - shadow: X - domain: 46
-Element, global: 95 - local: 47 - shadow: X - domain: 47
-Element, global: 96 - local: X - shadow: 48 - domain: 112
-Element, global: 97 - local: X - shadow: 49 - domain: 113
-Element, global: 98 - local: X - shadow: 50 - domain: 114
-Element, global: 99 - local: X - shadow: 51 - domain: 115
-Element, global: 100 - local: 48 - shadow: X - domain: 48
-Element, global: 101 - local: 49 - shadow: X - domain: 49
-Element, global: 102 - local: 50 - shadow: X - domain: 50
-Element, global: 103 - local: 51 - shadow: X - domain: 51
-Element, global: 104 - local: X - shadow: 52 - domain: 116
-Element, global: 105 - local: X - shadow: 53 - domain: 117
-Element, global: 106 - local: X - shadow: 54 - domain: 118
-Element, global: 107 - local: X - shadow: 55 - domain: 119
-Element, global: 108 - local: 52 - shadow: X - domain: 52
-Element, global: 109 - local: 53 - shadow: X - domain: 53
-Element, global: 110 - local: 54 - shadow: X - domain: 54
-Element, global: 111 - local: 55 - shadow: X - domain: 55
-Element, global: 112 - local: X - shadow: 56 - domain: 120
-Element, global: 113 - local: X - shadow: 57 - domain: 121
-Element, global: 114 - local: X - shadow: 58 - domain: 122
-Element, global: 115 - local: X - shadow: 59 - domain: 123
-Element, global: 116 - local: 56 - shadow: X - domain: 56
-Element, global: 117 - local: 57 - shadow: X - domain: 57
-Element, global: 118 - local: 58 - shadow: X - domain: 58
-Element, global: 119 - local: 59 - shadow: X - domain: 59
-Element, global: 120 - local: X - shadow: 60 - domain: 124
-Element, global: 121 - local: X - shadow: 61 - domain: 125
-Element, global: 122 - local: X - shadow: 62 - domain: 126
-Element, global: 123 - local: X - shadow: 63 - domain: 127
-Element, global: 124 - local: 60 - shadow: X - domain: 60
-Element, global: 125 - local: 61 - shadow: X - domain: 61
-Element, global: 126 - local: 62 - shadow: X - domain: 62
-Element, global: 127 - local: 63 - shadow: X - domain: 63
-
-Element, local: 0 - global: 4
-Element, local: 1 - global: 5
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 12
-Element, local: 5 - global: 13
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 20
-Element, local: 9 - global: 21
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 28
-Element, local: 13 - global: 29
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 36
-Element, local: 17 - global: 37
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 44
-Element, local: 21 - global: 45
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 52
-Element, local: 25 - global: 53
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 60
-Element, local: 29 - global: 61
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-Element, local: 32 - global: 68
-Element, local: 33 - global: 69
-Element, local: 34 - global: 70
-Element, local: 35 - global: 71
-Element, local: 36 - global: 76
-Element, local: 37 - global: 77
-Element, local: 38 - global: 78
-Element, local: 39 - global: 79
-Element, local: 40 - global: 84
-Element, local: 41 - global: 85
-Element, local: 42 - global: 86
-Element, local: 43 - global: 87
-Element, local: 44 - global: 92
-Element, local: 45 - global: 93
-Element, local: 46 - global: 94
-Element, local: 47 - global: 95
-Element, local: 48 - global: 100
-Element, local: 49 - global: 101
-Element, local: 50 - global: 102
-Element, local: 51 - global: 103
-Element, local: 52 - global: 108
-Element, local: 53 - global: 109
-Element, local: 54 - global: 110
-Element, local: 55 - global: 111
-Element, local: 56 - global: 116
-Element, local: 57 - global: 117
-Element, local: 58 - global: 118
-Element, local: 59 - global: 119
-Element, local: 60 - global: 124
-Element, local: 61 - global: 125
-Element, local: 62 - global: 126
-Element, local: 63 - global: 127
-
-Element, domain: 0 - global: 4
-Element, domain: 1 - global: 5
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 12
-Element, domain: 5 - global: 13
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 20
-Element, domain: 9 - global: 21
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 28
-Element, domain: 13 - global: 29
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 36
-Element, domain: 17 - global: 37
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 44
-Element, domain: 21 - global: 45
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 52
-Element, domain: 25 - global: 53
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 60
-Element, domain: 29 - global: 61
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 68
-Element, domain: 33 - global: 69
-Element, domain: 34 - global: 70
-Element, domain: 35 - global: 71
-Element, domain: 36 - global: 76
-Element, domain: 37 - global: 77
-Element, domain: 38 - global: 78
-Element, domain: 39 - global: 79
-Element, domain: 40 - global: 84
-Element, domain: 41 - global: 85
-Element, domain: 42 - global: 86
-Element, domain: 43 - global: 87
-Element, domain: 44 - global: 92
-Element, domain: 45 - global: 93
-Element, domain: 46 - global: 94
-Element, domain: 47 - global: 95
-Element, domain: 48 - global: 100
-Element, domain: 49 - global: 101
-Element, domain: 50 - global: 102
-Element, domain: 51 - global: 103
-Element, domain: 52 - global: 108
-Element, domain: 53 - global: 109
-Element, domain: 54 - global: 110
-Element, domain: 55 - global: 111
-Element, domain: 56 - global: 116
-Element, domain: 57 - global: 117
-Element, domain: 58 - global: 118
-Element, domain: 59 - global: 119
-Element, domain: 60 - global: 124
-Element, domain: 61 - global: 125
-Element, domain: 62 - global: 126
-Element, domain: 63 - global: 127
-Element, domain: 64 - global: 0
-Element, domain: 65 - global: 1
-Element, domain: 66 - global: 2
-Element, domain: 67 - global: 3
-Element, domain: 68 - global: 8
-Element, domain: 69 - global: 9
-Element, domain: 70 - global: 10
-Element, domain: 71 - global: 11
-Element, domain: 72 - global: 16
-Element, domain: 73 - global: 17
-Element, domain: 74 - global: 18
-Element, domain: 75 - global: 19
-Element, domain: 76 - global: 24
-Element, domain: 77 - global: 25
-Element, domain: 78 - global: 26
-Element, domain: 79 - global: 27
-Element, domain: 80 - global: 32
-Element, domain: 81 - global: 33
-Element, domain: 82 - global: 34
-Element, domain: 83 - global: 35
-Element, domain: 84 - global: 40
-Element, domain: 85 - global: 41
-Element, domain: 86 - global: 42
-Element, domain: 87 - global: 43
-Element, domain: 88 - global: 48
-Element, domain: 89 - global: 49
-Element, domain: 90 - global: 50
-Element, domain: 91 - global: 51
-Element, domain: 92 - global: 56
-Element, domain: 93 - global: 57
-Element, domain: 94 - global: 58
-Element, domain: 95 - global: 59
-Element, domain: 96 - global: 64
-Element, domain: 97 - global: 65
-Element, domain: 98 - global: 66
-Element, domain: 99 - global: 67
-Element, domain: 100 - global: 72
-Element, domain: 101 - global: 73
-Element, domain: 102 - global: 74
-Element, domain: 103 - global: 75
-Element, domain: 104 - global: 80
-Element, domain: 105 - global: 81
-Element, domain: 106 - global: 82
-Element, domain: 107 - global: 83
-Element, domain: 108 - global: 88
-Element, domain: 109 - global: 89
-Element, domain: 110 - global: 90
-Element, domain: 111 - global: 91
-Element, domain: 112 - global: 96
-Element, domain: 113 - global: 97
-Element, domain: 114 - global: 98
-Element, domain: 115 - global: 99
-Element, domain: 116 - global: 104
-Element, domain: 117 - global: 105
-Element, domain: 118 - global: 106
-Element, domain: 119 - global: 107
-Element, domain: 120 - global: 112
-Element, domain: 121 - global: 113
-Element, domain: 122 - global: 114
-Element, domain: 123 - global: 115
-Element, domain: 124 - global: 120
-Element, domain: 125 - global: 121
-Element, domain: 126 - global: 122
-Element, domain: 127 - global: 123
-
-Node, global: 0 - local: X - shadow: 0 - domain: 125
-Node, global: 1 - local: X - shadow: 1 - domain: 126
-Node, global: 2 - local: X - shadow: 2 - domain: 127
-Node, global: 3 - local: X - shadow: 3 - domain: 128
-Node, global: 4 - local: 0 - shadow: X - domain: 0
-Node, global: 5 - local: 1 - shadow: X - domain: 1
-Node, global: 6 - local: 2 - shadow: X - domain: 2
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: X - shadow: 4 - domain: 129
-Node, global: 10 - local: X - shadow: 5 - domain: 130
-Node, global: 11 - local: X - shadow: 6 - domain: 131
-Node, global: 12 - local: X - shadow: 7 - domain: 132
-Node, global: 13 - local: 5 - shadow: X - domain: 5
-Node, global: 14 - local: 6 - shadow: X - domain: 6
-Node, global: 15 - local: 7 - shadow: X - domain: 7
-Node, global: 16 - local: 8 - shadow: X - domain: 8
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: X - shadow: 8 - domain: 133
-Node, global: 19 - local: X - shadow: 9 - domain: 134
-Node, global: 20 - local: X - shadow: 10 - domain: 135
-Node, global: 21 - local: X - shadow: 11 - domain: 136
-Node, global: 22 - local: 10 - shadow: X - domain: 10
-Node, global: 23 - local: 11 - shadow: X - domain: 11
-Node, global: 24 - local: 12 - shadow: X - domain: 12
-Node, global: 25 - local: 13 - shadow: X - domain: 13
-Node, global: 26 - local: 14 - shadow: X - domain: 14
-Node, global: 27 - local: X - shadow: 12 - domain: 137
-Node, global: 28 - local: X - shadow: 13 - domain: 138
-Node, global: 29 - local: X - shadow: 14 - domain: 139
-Node, global: 30 - local: X - shadow: 15 - domain: 140
-Node, global: 31 - local: 15 - shadow: X - domain: 15
-Node, global: 32 - local: 16 - shadow: X - domain: 16
-Node, global: 33 - local: 17 - shadow: X - domain: 17
-Node, global: 34 - local: 18 - shadow: X - domain: 18
-Node, global: 35 - local: 19 - shadow: X - domain: 19
-Node, global: 36 - local: X - shadow: 16 - domain: 141
-Node, global: 37 - local: X - shadow: 17 - domain: 142
-Node, global: 38 - local: X - shadow: 18 - domain: 143
-Node, global: 39 - local: X - shadow: 19 - domain: 144
-Node, global: 40 - local: 20 - shadow: X - domain: 20
-Node, global: 41 - local: 21 - shadow: X - domain: 21
-Node, global: 42 - local: 22 - shadow: X - domain: 22
-Node, global: 43 - local: 23 - shadow: X - domain: 23
-Node, global: 44 - local: 24 - shadow: X - domain: 24
-Node, global: 45 - local: X - shadow: 20 - domain: 145
-Node, global: 46 - local: X - shadow: 21 - domain: 146
-Node, global: 47 - local: X - shadow: 22 - domain: 147
-Node, global: 48 - local: X - shadow: 23 - domain: 148
-Node, global: 49 - local: 25 - shadow: X - domain: 25
-Node, global: 50 - local: 26 - shadow: X - domain: 26
-Node, global: 51 - local: 27 - shadow: X - domain: 27
-Node, global: 52 - local: 28 - shadow: X - domain: 28
-Node, global: 53 - local: 29 - shadow: X - domain: 29
-Node, global: 54 - local: X - shadow: 24 - domain: 149
-Node, global: 55 - local: X - shadow: 25 - domain: 150
-Node, global: 56 - local: X - shadow: 26 - domain: 151
-Node, global: 57 - local: X - shadow: 27 - domain: 152
-Node, global: 58 - local: 30 - shadow: X - domain: 30
-Node, global: 59 - local: 31 - shadow: X - domain: 31
-Node, global: 60 - local: 32 - shadow: X - domain: 32
-Node, global: 61 - local: 33 - shadow: X - domain: 33
-Node, global: 62 - local: 34 - shadow: X - domain: 34
-Node, global: 63 - local: X - shadow: 28 - domain: 153
-Node, global: 64 - local: X - shadow: 29 - domain: 154
-Node, global: 65 - local: X - shadow: 30 - domain: 155
-Node, global: 66 - local: X - shadow: 31 - domain: 156
-Node, global: 67 - local: 35 - shadow: X - domain: 35
-Node, global: 68 - local: 36 - shadow: X - domain: 36
-Node, global: 69 - local: 37 - shadow: X - domain: 37
-Node, global: 70 - local: 38 - shadow: X - domain: 38
-Node, global: 71 - local: 39 - shadow: X - domain: 39
-Node, global: 72 - local: X - shadow: 32 - domain: 157
-Node, global: 73 - local: X - shadow: 33 - domain: 158
-Node, global: 74 - local: X - shadow: 34 - domain: 159
-Node, global: 75 - local: X - shadow: 35 - domain: 160
-Node, global: 76 - local: 40 - shadow: X - domain: 40
-Node, global: 77 - local: 41 - shadow: X - domain: 41
-Node, global: 78 - local: 42 - shadow: X - domain: 42
-Node, global: 79 - local: 43 - shadow: X - domain: 43
-Node, global: 80 - local: 44 - shadow: X - domain: 44
-Node, global: 81 - local: X - shadow: 36 - domain: 161
-Node, global: 82 - local: X - shadow: 37 - domain: 162
-Node, global: 83 - local: X - shadow: 38 - domain: 163
-Node, global: 84 - local: X - shadow: 39 - domain: 164
-Node, global: 85 - local: 45 - shadow: X - domain: 45
-Node, global: 86 - local: 46 - shadow: X - domain: 46
-Node, global: 87 - local: 47 - shadow: X - domain: 47
-Node, global: 88 - local: 48 - shadow: X - domain: 48
-Node, global: 89 - local: 49 - shadow: X - domain: 49
-Node, global: 90 - local: X - shadow: 40 - domain: 165
-Node, global: 91 - local: X - shadow: 41 - domain: 166
-Node, global: 92 - local: X - shadow: 42 - domain: 167
-Node, global: 93 - local: X - shadow: 43 - domain: 168
-Node, global: 94 - local: 50 - shadow: X - domain: 50
-Node, global: 95 - local: 51 - shadow: X - domain: 51
-Node, global: 96 - local: 52 - shadow: X - domain: 52
-Node, global: 97 - local: 53 - shadow: X - domain: 53
-Node, global: 98 - local: 54 - shadow: X - domain: 54
-Node, global: 99 - local: X - shadow: 44 - domain: 169
-Node, global: 100 - local: X - shadow: 45 - domain: 170
-Node, global: 101 - local: X - shadow: 46 - domain: 171
-Node, global: 102 - local: X - shadow: 47 - domain: 172
-Node, global: 103 - local: 55 - shadow: X - domain: 55
-Node, global: 104 - local: 56 - shadow: X - domain: 56
-Node, global: 105 - local: 57 - shadow: X - domain: 57
-Node, global: 106 - local: 58 - shadow: X - domain: 58
-Node, global: 107 - local: 59 - shadow: X - domain: 59
-Node, global: 108 - local: X - shadow: 48 - domain: 173
-Node, global: 109 - local: X - shadow: 49 - domain: 174
-Node, global: 110 - local: X - shadow: 50 - domain: 175
-Node, global: 111 - local: X - shadow: 51 - domain: 176
-Node, global: 112 - local: 60 - shadow: X - domain: 60
-Node, global: 113 - local: 61 - shadow: X - domain: 61
-Node, global: 114 - local: 62 - shadow: X - domain: 62
-Node, global: 115 - local: 63 - shadow: X - domain: 63
-Node, global: 116 - local: 64 - shadow: X - domain: 64
-Node, global: 117 - local: X - shadow: 52 - domain: 177
-Node, global: 118 - local: X - shadow: 53 - domain: 178
-Node, global: 119 - local: X - shadow: 54 - domain: 179
-Node, global: 120 - local: X - shadow: 55 - domain: 180
-Node, global: 121 - local: 65 - shadow: X - domain: 65
-Node, global: 122 - local: 66 - shadow: X - domain: 66
-Node, global: 123 - local: 67 - shadow: X - domain: 67
-Node, global: 124 - local: 68 - shadow: X - domain: 68
-Node, global: 125 - local: 69 - shadow: X - domain: 69
-Node, global: 126 - local: X - shadow: 56 - domain: 181
-Node, global: 127 - local: X - shadow: 57 - domain: 182
-Node, global: 128 - local: X - shadow: 58 - domain: 183
-Node, global: 129 - local: X - shadow: 59 - domain: 184
-Node, global: 130 - local: 70 - shadow: X - domain: 70
-Node, global: 131 - local: 71 - shadow: X - domain: 71
-Node, global: 132 - local: 72 - shadow: X - domain: 72
-Node, global: 133 - local: 73 - shadow: X - domain: 73
-Node, global: 134 - local: 74 - shadow: X - domain: 74
-Node, global: 135 - local: X - shadow: 60 - domain: 185
-Node, global: 136 - local: X - shadow: 61 - domain: 186
-Node, global: 137 - local: X - shadow: 62 - domain: 187
-Node, global: 138 - local: X - shadow: 63 - domain: 188
-Node, global: 139 - local: 75 - shadow: X - domain: 75
-Node, global: 140 - local: 76 - shadow: X - domain: 76
-Node, global: 141 - local: 77 - shadow: X - domain: 77
-Node, global: 142 - local: 78 - shadow: X - domain: 78
-Node, global: 143 - local: 79 - shadow: X - domain: 79
-Node, global: 144 - local: X - shadow: 64 - domain: 189
-Node, global: 145 - local: X - shadow: 65 - domain: 190
-Node, global: 146 - local: X - shadow: 66 - domain: 191
-Node, global: 147 - local: X - shadow: 67 - domain: 192
-Node, global: 148 - local: 80 - shadow: X - domain: 80
-Node, global: 149 - local: 81 - shadow: X - domain: 81
-Node, global: 150 - local: 82 - shadow: X - domain: 82
-Node, global: 151 - local: 83 - shadow: X - domain: 83
-Node, global: 152 - local: 84 - shadow: X - domain: 84
-Node, global: 153 - local: X - shadow: 68 - domain: 193
-Node, global: 154 - local: X - shadow: 69 - domain: 194
-Node, global: 155 - local: X - shadow: 70 - domain: 195
-Node, global: 156 - local: X - shadow: 71 - domain: 196
-Node, global: 157 - local: 85 - shadow: X - domain: 85
-Node, global: 158 - local: 86 - shadow: X - domain: 86
-Node, global: 159 - local: 87 - shadow: X - domain: 87
-Node, global: 160 - local: 88 - shadow: X - domain: 88
-Node, global: 161 - local: 89 - shadow: X - domain: 89
-Node, global: 162 - local: X - shadow: 72 - domain: 197
-Node, global: 163 - local: X - shadow: 73 - domain: 198
-Node, global: 164 - local: X - shadow: 74 - domain: 199
-Node, global: 165 - local: X - shadow: 75 - domain: 200
-Node, global: 166 - local: 90 - shadow: X - domain: 90
-Node, global: 167 - local: 91 - shadow: X - domain: 91
-Node, global: 168 - local: 92 - shadow: X - domain: 92
-Node, global: 169 - local: 93 - shadow: X - domain: 93
-Node, global: 170 - local: 94 - shadow: X - domain: 94
-Node, global: 171 - local: X - shadow: 76 - domain: 201
-Node, global: 172 - local: X - shadow: 77 - domain: 202
-Node, global: 173 - local: X - shadow: 78 - domain: 203
-Node, global: 174 - local: X - shadow: 79 - domain: 204
-Node, global: 175 - local: 95 - shadow: X - domain: 95
-Node, global: 176 - local: 96 - shadow: X - domain: 96
-Node, global: 177 - local: 97 - shadow: X - domain: 97
-Node, global: 178 - local: 98 - shadow: X - domain: 98
-Node, global: 179 - local: 99 - shadow: X - domain: 99
-Node, global: 180 - local: X - shadow: 80 - domain: 205
-Node, global: 181 - local: X - shadow: 81 - domain: 206
-Node, global: 182 - local: X - shadow: 82 - domain: 207
-Node, global: 183 - local: X - shadow: 83 - domain: 208
-Node, global: 184 - local: 100 - shadow: X - domain: 100
-Node, global: 185 - local: 101 - shadow: X - domain: 101
-Node, global: 186 - local: 102 - shadow: X - domain: 102
-Node, global: 187 - local: 103 - shadow: X - domain: 103
-Node, global: 188 - local: 104 - shadow: X - domain: 104
-Node, global: 189 - local: X - shadow: 84 - domain: 209
-Node, global: 190 - local: X - shadow: 85 - domain: 210
-Node, global: 191 - local: X - shadow: 86 - domain: 211
-Node, global: 192 - local: X - shadow: 87 - domain: 212
-Node, global: 193 - local: 105 - shadow: X - domain: 105
-Node, global: 194 - local: 106 - shadow: X - domain: 106
-Node, global: 195 - local: 107 - shadow: X - domain: 107
-Node, global: 196 - local: 108 - shadow: X - domain: 108
-Node, global: 197 - local: 109 - shadow: X - domain: 109
-Node, global: 198 - local: X - shadow: 88 - domain: 213
-Node, global: 199 - local: X - shadow: 89 - domain: 214
-Node, global: 200 - local: X - shadow: 90 - domain: 215
-Node, global: 201 - local: X - shadow: 91 - domain: 216
-Node, global: 202 - local: 110 - shadow: X - domain: 110
-Node, global: 203 - local: 111 - shadow: X - domain: 111
-Node, global: 204 - local: 112 - shadow: X - domain: 112
-Node, global: 205 - local: 113 - shadow: X - domain: 113
-Node, global: 206 - local: 114 - shadow: X - domain: 114
-Node, global: 207 - local: X - shadow: 92 - domain: 217
-Node, global: 208 - local: X - shadow: 93 - domain: 218
-Node, global: 209 - local: X - shadow: 94 - domain: 219
-Node, global: 210 - local: X - shadow: 95 - domain: 220
-Node, global: 211 - local: 115 - shadow: X - domain: 115
-Node, global: 212 - local: 116 - shadow: X - domain: 116
-Node, global: 213 - local: 117 - shadow: X - domain: 117
-Node, global: 214 - local: 118 - shadow: X - domain: 118
-Node, global: 215 - local: 119 - shadow: X - domain: 119
-Node, global: 216 - local: X - shadow: 96 - domain: 221
-Node, global: 217 - local: X - shadow: 97 - domain: 222
-Node, global: 218 - local: X - shadow: 98 - domain: 223
-Node, global: 219 - local: X - shadow: 99 - domain: 224
-Node, global: 220 - local: 120 - shadow: X - domain: 120
-Node, global: 221 - local: 121 - shadow: X - domain: 121
-Node, global: 222 - local: 122 - shadow: X - domain: 122
-Node, global: 223 - local: 123 - shadow: X - domain: 123
-Node, global: 224 - local: 124 - shadow: X - domain: 124
-
-Node, local: 0 - global: 4
-Node, local: 1 - global: 5
-Node, local: 2 - global: 6
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 13
-Node, local: 6 - global: 14
-Node, local: 7 - global: 15
-Node, local: 8 - global: 16
-Node, local: 9 - global: 17
-Node, local: 10 - global: 22
-Node, local: 11 - global: 23
-Node, local: 12 - global: 24
-Node, local: 13 - global: 25
-Node, local: 14 - global: 26
-Node, local: 15 - global: 31
-Node, local: 16 - global: 32
-Node, local: 17 - global: 33
-Node, local: 18 - global: 34
-Node, local: 19 - global: 35
-Node, local: 20 - global: 40
-Node, local: 21 - global: 41
-Node, local: 22 - global: 42
-Node, local: 23 - global: 43
-Node, local: 24 - global: 44
-Node, local: 25 - global: 49
-Node, local: 26 - global: 50
-Node, local: 27 - global: 51
-Node, local: 28 - global: 52
-Node, local: 29 - global: 53
-Node, local: 30 - global: 58
-Node, local: 31 - global: 59
-Node, local: 32 - global: 60
-Node, local: 33 - global: 61
-Node, local: 34 - global: 62
-Node, local: 35 - global: 67
-Node, local: 36 - global: 68
-Node, local: 37 - global: 69
-Node, local: 38 - global: 70
-Node, local: 39 - global: 71
-Node, local: 40 - global: 76
-Node, local: 41 - global: 77
-Node, local: 42 - global: 78
-Node, local: 43 - global: 79
-Node, local: 44 - global: 80
-Node, local: 45 - global: 85
-Node, local: 46 - global: 86
-Node, local: 47 - global: 87
-Node, local: 48 - global: 88
-Node, local: 49 - global: 89
-Node, local: 50 - global: 94
-Node, local: 51 - global: 95
-Node, local: 52 - global: 96
-Node, local: 53 - global: 97
-Node, local: 54 - global: 98
-Node, local: 55 - global: 103
-Node, local: 56 - global: 104
-Node, local: 57 - global: 105
-Node, local: 58 - global: 106
-Node, local: 59 - global: 107
-Node, local: 60 - global: 112
-Node, local: 61 - global: 113
-Node, local: 62 - global: 114
-Node, local: 63 - global: 115
-Node, local: 64 - global: 116
-Node, local: 65 - global: 121
-Node, local: 66 - global: 122
-Node, local: 67 - global: 123
-Node, local: 68 - global: 124
-Node, local: 69 - global: 125
-Node, local: 70 - global: 130
-Node, local: 71 - global: 131
-Node, local: 72 - global: 132
-Node, local: 73 - global: 133
-Node, local: 74 - global: 134
-Node, local: 75 - global: 139
-Node, local: 76 - global: 140
-Node, local: 77 - global: 141
-Node, local: 78 - global: 142
-Node, local: 79 - global: 143
-Node, local: 80 - global: 148
-Node, local: 81 - global: 149
-Node, local: 82 - global: 150
-Node, local: 83 - global: 151
-Node, local: 84 - global: 152
-Node, local: 85 - global: 157
-Node, local: 86 - global: 158
-Node, local: 87 - global: 159
-Node, local: 88 - global: 160
-Node, local: 89 - global: 161
-Node, local: 90 - global: 166
-Node, local: 91 - global: 167
-Node, local: 92 - global: 168
-Node, local: 93 - global: 169
-Node, local: 94 - global: 170
-Node, local: 95 - global: 175
-Node, local: 96 - global: 176
-Node, local: 97 - global: 177
-Node, local: 98 - global: 178
-Node, local: 99 - global: 179
-Node, local: 100 - global: 184
-Node, local: 101 - global: 185
-Node, local: 102 - global: 186
-Node, local: 103 - global: 187
-Node, local: 104 - global: 188
-Node, local: 105 - global: 193
-Node, local: 106 - global: 194
-Node, local: 107 - global: 195
-Node, local: 108 - global: 196
-Node, local: 109 - global: 197
-Node, local: 110 - global: 202
-Node, local: 111 - global: 203
-Node, local: 112 - global: 204
-Node, local: 113 - global: 205
-Node, local: 114 - global: 206
-Node, local: 115 - global: 211
-Node, local: 116 - global: 212
-Node, local: 117 - global: 213
-Node, local: 118 - global: 214
-Node, local: 119 - global: 215
-Node, local: 120 - global: 220
-Node, local: 121 - global: 221
-Node, local: 122 - global: 222
-Node, local: 123 - global: 223
-Node, local: 124 - global: 224
-
-Node, domain: 0 - global: 4
-Node, domain: 1 - global: 5
-Node, domain: 2 - global: 6
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 13
-Node, domain: 6 - global: 14
-Node, domain: 7 - global: 15
-Node, domain: 8 - global: 16
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 22
-Node, domain: 11 - global: 23
-Node, domain: 12 - global: 24
-Node, domain: 13 - global: 25
-Node, domain: 14 - global: 26
-Node, domain: 15 - global: 31
-Node, domain: 16 - global: 32
-Node, domain: 17 - global: 33
-Node, domain: 18 - global: 34
-Node, domain: 19 - global: 35
-Node, domain: 20 - global: 40
-Node, domain: 21 - global: 41
-Node, domain: 22 - global: 42
-Node, domain: 23 - global: 43
-Node, domain: 24 - global: 44
-Node, domain: 25 - global: 49
-Node, domain: 26 - global: 50
-Node, domain: 27 - global: 51
-Node, domain: 28 - global: 52
-Node, domain: 29 - global: 53
-Node, domain: 30 - global: 58
-Node, domain: 31 - global: 59
-Node, domain: 32 - global: 60
-Node, domain: 33 - global: 61
-Node, domain: 34 - global: 62
-Node, domain: 35 - global: 67
-Node, domain: 36 - global: 68
-Node, domain: 37 - global: 69
-Node, domain: 38 - global: 70
-Node, domain: 39 - global: 71
-Node, domain: 40 - global: 76
-Node, domain: 41 - global: 77
-Node, domain: 42 - global: 78
-Node, domain: 43 - global: 79
-Node, domain: 44 - global: 80
-Node, domain: 45 - global: 85
-Node, domain: 46 - global: 86
-Node, domain: 47 - global: 87
-Node, domain: 48 - global: 88
-Node, domain: 49 - global: 89
-Node, domain: 50 - global: 94
-Node, domain: 51 - global: 95
-Node, domain: 52 - global: 96
-Node, domain: 53 - global: 97
-Node, domain: 54 - global: 98
-Node, domain: 55 - global: 103
-Node, domain: 56 - global: 104
-Node, domain: 57 - global: 105
-Node, domain: 58 - global: 106
-Node, domain: 59 - global: 107
-Node, domain: 60 - global: 112
-Node, domain: 61 - global: 113
-Node, domain: 62 - global: 114
-Node, domain: 63 - global: 115
-Node, domain: 64 - global: 116
-Node, domain: 65 - global: 121
-Node, domain: 66 - global: 122
-Node, domain: 67 - global: 123
-Node, domain: 68 - global: 124
-Node, domain: 69 - global: 125
-Node, domain: 70 - global: 130
-Node, domain: 71 - global: 131
-Node, domain: 72 - global: 132
-Node, domain: 73 - global: 133
-Node, domain: 74 - global: 134
-Node, domain: 75 - global: 139
-Node, domain: 76 - global: 140
-Node, domain: 77 - global: 141
-Node, domain: 78 - global: 142
-Node, domain: 79 - global: 143
-Node, domain: 80 - global: 148
-Node, domain: 81 - global: 149
-Node, domain: 82 - global: 150
-Node, domain: 83 - global: 151
-Node, domain: 84 - global: 152
-Node, domain: 85 - global: 157
-Node, domain: 86 - global: 158
-Node, domain: 87 - global: 159
-Node, domain: 88 - global: 160
-Node, domain: 89 - global: 161
-Node, domain: 90 - global: 166
-Node, domain: 91 - global: 167
-Node, domain: 92 - global: 168
-Node, domain: 93 - global: 169
-Node, domain: 94 - global: 170
-Node, domain: 95 - global: 175
-Node, domain: 96 - global: 176
-Node, domain: 97 - global: 177
-Node, domain: 98 - global: 178
-Node, domain: 99 - global: 179
-Node, domain: 100 - global: 184
-Node, domain: 101 - global: 185
-Node, domain: 102 - global: 186
-Node, domain: 103 - global: 187
-Node, domain: 104 - global: 188
-Node, domain: 105 - global: 193
-Node, domain: 106 - global: 194
-Node, domain: 107 - global: 195
-Node, domain: 108 - global: 196
-Node, domain: 109 - global: 197
-Node, domain: 110 - global: 202
-Node, domain: 111 - global: 203
-Node, domain: 112 - global: 204
-Node, domain: 113 - global: 205
-Node, domain: 114 - global: 206
-Node, domain: 115 - global: 211
-Node, domain: 116 - global: 212
-Node, domain: 117 - global: 213
-Node, domain: 118 - global: 214
-Node, domain: 119 - global: 215
-Node, domain: 120 - global: 220
-Node, domain: 121 - global: 221
-Node, domain: 122 - global: 222
-Node, domain: 123 - global: 223
-Node, domain: 124 - global: 224
-Node, domain: 125 - global: 0
-Node, domain: 126 - global: 1
-Node, domain: 127 - global: 2
-Node, domain: 128 - global: 3
-Node, domain: 129 - global: 9
-Node, domain: 130 - global: 10
-Node, domain: 131 - global: 11
-Node, domain: 132 - global: 12
-Node, domain: 133 - global: 18
-Node, domain: 134 - global: 19
-Node, domain: 135 - global: 20
-Node, domain: 136 - global: 21
-Node, domain: 137 - global: 27
-Node, domain: 138 - global: 28
-Node, domain: 139 - global: 29
-Node, domain: 140 - global: 30
-Node, domain: 141 - global: 36
-Node, domain: 142 - global: 37
-Node, domain: 143 - global: 38
-Node, domain: 144 - global: 39
-Node, domain: 145 - global: 45
-Node, domain: 146 - global: 46
-Node, domain: 147 - global: 47
-Node, domain: 148 - global: 48
-Node, domain: 149 - global: 54
-Node, domain: 150 - global: 55
-Node, domain: 151 - global: 56
-Node, domain: 152 - global: 57
-Node, domain: 153 - global: 63
-Node, domain: 154 - global: 64
-Node, domain: 155 - global: 65
-Node, domain: 156 - global: 66
-Node, domain: 157 - global: 72
-Node, domain: 158 - global: 73
-Node, domain: 159 - global: 74
-Node, domain: 160 - global: 75
-Node, domain: 161 - global: 81
-Node, domain: 162 - global: 82
-Node, domain: 163 - global: 83
-Node, domain: 164 - global: 84
-Node, domain: 165 - global: 90
-Node, domain: 166 - global: 91
-Node, domain: 167 - global: 92
-Node, domain: 168 - global: 93
-Node, domain: 169 - global: 99
-Node, domain: 170 - global: 100
-Node, domain: 171 - global: 101
-Node, domain: 172 - global: 102
-Node, domain: 173 - global: 108
-Node, domain: 174 - global: 109
-Node, domain: 175 - global: 110
-Node, domain: 176 - global: 111
-Node, domain: 177 - global: 117
-Node, domain: 178 - global: 118
-Node, domain: 179 - global: 119
-Node, domain: 180 - global: 120
-Node, domain: 181 - global: 126
-Node, domain: 182 - global: 127
-Node, domain: 183 - global: 128
-Node, domain: 184 - global: 129
-Node, domain: 185 - global: 135
-Node, domain: 186 - global: 136
-Node, domain: 187 - global: 137
-Node, domain: 188 - global: 138
-Node, domain: 189 - global: 144
-Node, domain: 190 - global: 145
-Node, domain: 191 - global: 146
-Node, domain: 192 - global: 147
-Node, domain: 193 - global: 153
-Node, domain: 194 - global: 154
-Node, domain: 195 - global: 155
-Node, domain: 196 - global: 156
-Node, domain: 197 - global: 162
-Node, domain: 198 - global: 163
-Node, domain: 199 - global: 164
-Node, domain: 200 - global: 165
-Node, domain: 201 - global: 171
-Node, domain: 202 - global: 172
-Node, domain: 203 - global: 173
-Node, domain: 204 - global: 174
-Node, domain: 205 - global: 180
-Node, domain: 206 - global: 181
-Node, domain: 207 - global: 182
-Node, domain: 208 - global: 183
-Node, domain: 209 - global: 189
-Node, domain: 210 - global: 190
-Node, domain: 211 - global: 191
-Node, domain: 212 - global: 192
-Node, domain: 213 - global: 198
-Node, domain: 214 - global: 199
-Node, domain: 215 - global: 200
-Node, domain: 216 - global: 201
-Node, domain: 217 - global: 207
-Node, domain: 218 - global: 208
-Node, domain: 219 - global: 209
-Node, domain: 220 - global: 210
-Node, domain: 221 - global: 216
-Node, domain: 222 - global: 217
-Node, domain: 223 - global: 218
-Node, domain: 224 - global: 219
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic-shadowDepth2.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --meshSizeI=9 --isPeriodicI=True --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,880 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061420)
-		size : (2,1,1)
-		isPeriodic : (True,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 8, 4, 4 }
-elementGlobalCount: 128
-	elementLocalCounts[0]: { 4, 4, 4 }
-	elementLocalCounts[1]: { 4, 4, 4 }
-elementDomainCounts: { 6, 4, 4 }
-nodeGlobalCounts: { 9, 5, 5 }
-nodeGlobalCount: 225
-	nodeLocalCounts[0]: { 5, 5, 5 }
-	nodeLocalCounts[1]: { 5, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: 2 - shadow: X - domain: 2
-Element, global: 3 - local: 3 - shadow: X - domain: 3
-Element, global: 4 - local: X - shadow: 0 - domain: 64
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: X - domain: X
-Element, global: 7 - local: X - shadow: 1 - domain: 65
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: 6 - shadow: X - domain: 6
-Element, global: 11 - local: 7 - shadow: X - domain: 7
-Element, global: 12 - local: X - shadow: 2 - domain: 66
-Element, global: 13 - local: X - shadow: X - domain: X
-Element, global: 14 - local: X - shadow: X - domain: X
-Element, global: 15 - local: X - shadow: 3 - domain: 67
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: 10 - shadow: X - domain: 10
-Element, global: 19 - local: 11 - shadow: X - domain: 11
-Element, global: 20 - local: X - shadow: 4 - domain: 68
-Element, global: 21 - local: X - shadow: X - domain: X
-Element, global: 22 - local: X - shadow: X - domain: X
-Element, global: 23 - local: X - shadow: 5 - domain: 69
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: 14 - shadow: X - domain: 14
-Element, global: 27 - local: 15 - shadow: X - domain: 15
-Element, global: 28 - local: X - shadow: 6 - domain: 70
-Element, global: 29 - local: X - shadow: X - domain: X
-Element, global: 30 - local: X - shadow: X - domain: X
-Element, global: 31 - local: X - shadow: 7 - domain: 71
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: 18 - shadow: X - domain: 18
-Element, global: 35 - local: 19 - shadow: X - domain: 19
-Element, global: 36 - local: X - shadow: 8 - domain: 72
-Element, global: 37 - local: X - shadow: X - domain: X
-Element, global: 38 - local: X - shadow: X - domain: X
-Element, global: 39 - local: X - shadow: 9 - domain: 73
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: 22 - shadow: X - domain: 22
-Element, global: 43 - local: 23 - shadow: X - domain: 23
-Element, global: 44 - local: X - shadow: 10 - domain: 74
-Element, global: 45 - local: X - shadow: X - domain: X
-Element, global: 46 - local: X - shadow: X - domain: X
-Element, global: 47 - local: X - shadow: 11 - domain: 75
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: 26 - shadow: X - domain: 26
-Element, global: 51 - local: 27 - shadow: X - domain: 27
-Element, global: 52 - local: X - shadow: 12 - domain: 76
-Element, global: 53 - local: X - shadow: X - domain: X
-Element, global: 54 - local: X - shadow: X - domain: X
-Element, global: 55 - local: X - shadow: 13 - domain: 77
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: 30 - shadow: X - domain: 30
-Element, global: 59 - local: 31 - shadow: X - domain: 31
-Element, global: 60 - local: X - shadow: 14 - domain: 78
-Element, global: 61 - local: X - shadow: X - domain: X
-Element, global: 62 - local: X - shadow: X - domain: X
-Element, global: 63 - local: X - shadow: 15 - domain: 79
-Element, global: 64 - local: 32 - shadow: X - domain: 32
-Element, global: 65 - local: 33 - shadow: X - domain: 33
-Element, global: 66 - local: 34 - shadow: X - domain: 34
-Element, global: 67 - local: 35 - shadow: X - domain: 35
-Element, global: 68 - local: X - shadow: 16 - domain: 80
-Element, global: 69 - local: X - shadow: X - domain: X
-Element, global: 70 - local: X - shadow: X - domain: X
-Element, global: 71 - local: X - shadow: 17 - domain: 81
-Element, global: 72 - local: 36 - shadow: X - domain: 36
-Element, global: 73 - local: 37 - shadow: X - domain: 37
-Element, global: 74 - local: 38 - shadow: X - domain: 38
-Element, global: 75 - local: 39 - shadow: X - domain: 39
-Element, global: 76 - local: X - shadow: 18 - domain: 82
-Element, global: 77 - local: X - shadow: X - domain: X
-Element, global: 78 - local: X - shadow: X - domain: X
-Element, global: 79 - local: X - shadow: 19 - domain: 83
-Element, global: 80 - local: 40 - shadow: X - domain: 40
-Element, global: 81 - local: 41 - shadow: X - domain: 41
-Element, global: 82 - local: 42 - shadow: X - domain: 42
-Element, global: 83 - local: 43 - shadow: X - domain: 43
-Element, global: 84 - local: X - shadow: 20 - domain: 84
-Element, global: 85 - local: X - shadow: X - domain: X
-Element, global: 86 - local: X - shadow: X - domain: X
-Element, global: 87 - local: X - shadow: 21 - domain: 85
-Element, global: 88 - local: 44 - shadow: X - domain: 44
-Element, global: 89 - local: 45 - shadow: X - domain: 45
-Element, global: 90 - local: 46 - shadow: X - domain: 46
-Element, global: 91 - local: 47 - shadow: X - domain: 47
-Element, global: 92 - local: X - shadow: 22 - domain: 86
-Element, global: 93 - local: X - shadow: X - domain: X
-Element, global: 94 - local: X - shadow: X - domain: X
-Element, global: 95 - local: X - shadow: 23 - domain: 87
-Element, global: 96 - local: 48 - shadow: X - domain: 48
-Element, global: 97 - local: 49 - shadow: X - domain: 49
-Element, global: 98 - local: 50 - shadow: X - domain: 50
-Element, global: 99 - local: 51 - shadow: X - domain: 51
-Element, global: 100 - local: X - shadow: 24 - domain: 88
-Element, global: 101 - local: X - shadow: X - domain: X
-Element, global: 102 - local: X - shadow: X - domain: X
-Element, global: 103 - local: X - shadow: 25 - domain: 89
-Element, global: 104 - local: 52 - shadow: X - domain: 52
-Element, global: 105 - local: 53 - shadow: X - domain: 53
-Element, global: 106 - local: 54 - shadow: X - domain: 54
-Element, global: 107 - local: 55 - shadow: X - domain: 55
-Element, global: 108 - local: X - shadow: 26 - domain: 90
-Element, global: 109 - local: X - shadow: X - domain: X
-Element, global: 110 - local: X - shadow: X - domain: X
-Element, global: 111 - local: X - shadow: 27 - domain: 91
-Element, global: 112 - local: 56 - shadow: X - domain: 56
-Element, global: 113 - local: 57 - shadow: X - domain: 57
-Element, global: 114 - local: 58 - shadow: X - domain: 58
-Element, global: 115 - local: 59 - shadow: X - domain: 59
-Element, global: 116 - local: X - shadow: 28 - domain: 92
-Element, global: 117 - local: X - shadow: X - domain: X
-Element, global: 118 - local: X - shadow: X - domain: X
-Element, global: 119 - local: X - shadow: 29 - domain: 93
-Element, global: 120 - local: 60 - shadow: X - domain: 60
-Element, global: 121 - local: 61 - shadow: X - domain: 61
-Element, global: 122 - local: 62 - shadow: X - domain: 62
-Element, global: 123 - local: 63 - shadow: X - domain: 63
-Element, global: 124 - local: X - shadow: 30 - domain: 94
-Element, global: 125 - local: X - shadow: X - domain: X
-Element, global: 126 - local: X - shadow: X - domain: X
-Element, global: 127 - local: X - shadow: 31 - domain: 95
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 2
-Element, local: 3 - global: 3
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 10
-Element, local: 7 - global: 11
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 18
-Element, local: 11 - global: 19
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 26
-Element, local: 15 - global: 27
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 34
-Element, local: 19 - global: 35
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 42
-Element, local: 23 - global: 43
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 50
-Element, local: 27 - global: 51
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 58
-Element, local: 31 - global: 59
-Element, local: 32 - global: 64
-Element, local: 33 - global: 65
-Element, local: 34 - global: 66
-Element, local: 35 - global: 67
-Element, local: 36 - global: 72
-Element, local: 37 - global: 73
-Element, local: 38 - global: 74
-Element, local: 39 - global: 75
-Element, local: 40 - global: 80
-Element, local: 41 - global: 81
-Element, local: 42 - global: 82
-Element, local: 43 - global: 83
-Element, local: 44 - global: 88
-Element, local: 45 - global: 89
-Element, local: 46 - global: 90
-Element, local: 47 - global: 91
-Element, local: 48 - global: 96
-Element, local: 49 - global: 97
-Element, local: 50 - global: 98
-Element, local: 51 - global: 99
-Element, local: 52 - global: 104
-Element, local: 53 - global: 105
-Element, local: 54 - global: 106
-Element, local: 55 - global: 107
-Element, local: 56 - global: 112
-Element, local: 57 - global: 113
-Element, local: 58 - global: 114
-Element, local: 59 - global: 115
-Element, local: 60 - global: 120
-Element, local: 61 - global: 121
-Element, local: 62 - global: 122
-Element, local: 63 - global: 123
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 2
-Element, domain: 3 - global: 3
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 10
-Element, domain: 7 - global: 11
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 18
-Element, domain: 11 - global: 19
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 26
-Element, domain: 15 - global: 27
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 34
-Element, domain: 19 - global: 35
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 42
-Element, domain: 23 - global: 43
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 50
-Element, domain: 27 - global: 51
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 58
-Element, domain: 31 - global: 59
-Element, domain: 32 - global: 64
-Element, domain: 33 - global: 65
-Element, domain: 34 - global: 66
-Element, domain: 35 - global: 67
-Element, domain: 36 - global: 72
-Element, domain: 37 - global: 73
-Element, domain: 38 - global: 74
-Element, domain: 39 - global: 75
-Element, domain: 40 - global: 80
-Element, domain: 41 - global: 81
-Element, domain: 42 - global: 82
-Element, domain: 43 - global: 83
-Element, domain: 44 - global: 88
-Element, domain: 45 - global: 89
-Element, domain: 46 - global: 90
-Element, domain: 47 - global: 91
-Element, domain: 48 - global: 96
-Element, domain: 49 - global: 97
-Element, domain: 50 - global: 98
-Element, domain: 51 - global: 99
-Element, domain: 52 - global: 104
-Element, domain: 53 - global: 105
-Element, domain: 54 - global: 106
-Element, domain: 55 - global: 107
-Element, domain: 56 - global: 112
-Element, domain: 57 - global: 113
-Element, domain: 58 - global: 114
-Element, domain: 59 - global: 115
-Element, domain: 60 - global: 120
-Element, domain: 61 - global: 121
-Element, domain: 62 - global: 122
-Element, domain: 63 - global: 123
-Element, domain: 64 - global: 4
-Element, domain: 65 - global: 7
-Element, domain: 66 - global: 12
-Element, domain: 67 - global: 15
-Element, domain: 68 - global: 20
-Element, domain: 69 - global: 23
-Element, domain: 70 - global: 28
-Element, domain: 71 - global: 31
-Element, domain: 72 - global: 36
-Element, domain: 73 - global: 39
-Element, domain: 74 - global: 44
-Element, domain: 75 - global: 47
-Element, domain: 76 - global: 52
-Element, domain: 77 - global: 55
-Element, domain: 78 - global: 60
-Element, domain: 79 - global: 63
-Element, domain: 80 - global: 68
-Element, domain: 81 - global: 71
-Element, domain: 82 - global: 76
-Element, domain: 83 - global: 79
-Element, domain: 84 - global: 84
-Element, domain: 85 - global: 87
-Element, domain: 86 - global: 92
-Element, domain: 87 - global: 95
-Element, domain: 88 - global: 100
-Element, domain: 89 - global: 103
-Element, domain: 90 - global: 108
-Element, domain: 91 - global: 111
-Element, domain: 92 - global: 116
-Element, domain: 93 - global: 119
-Element, domain: 94 - global: 124
-Element, domain: 95 - global: 127
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: 3 - shadow: X - domain: 3
-Node, global: 4 - local: 4 - shadow: X - domain: 4
-Node, global: 5 - local: X - shadow: 0 - domain: 125
-Node, global: 6 - local: X - shadow: X - domain: X
-Node, global: 7 - local: X - shadow: 1 - domain: 126
-Node, global: 8 - local: X - shadow: 2 - domain: 127
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: 9 - shadow: X - domain: 9
-Node, global: 14 - local: X - shadow: 3 - domain: 128
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 4 - domain: 129
-Node, global: 17 - local: X - shadow: 5 - domain: 130
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 6 - domain: 131
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: 7 - domain: 132
-Node, global: 26 - local: X - shadow: 8 - domain: 133
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: X - shadow: 9 - domain: 134
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: 10 - domain: 135
-Node, global: 35 - local: X - shadow: 11 - domain: 136
-Node, global: 36 - local: 20 - shadow: X - domain: 20
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: X - shadow: 12 - domain: 137
-Node, global: 42 - local: X - shadow: X - domain: X
-Node, global: 43 - local: X - shadow: 13 - domain: 138
-Node, global: 44 - local: X - shadow: 14 - domain: 139
-Node, global: 45 - local: 25 - shadow: X - domain: 25
-Node, global: 46 - local: 26 - shadow: X - domain: 26
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: 15 - domain: 140
-Node, global: 51 - local: X - shadow: X - domain: X
-Node, global: 52 - local: X - shadow: 16 - domain: 141
-Node, global: 53 - local: X - shadow: 17 - domain: 142
-Node, global: 54 - local: 30 - shadow: X - domain: 30
-Node, global: 55 - local: 31 - shadow: X - domain: 31
-Node, global: 56 - local: 32 - shadow: X - domain: 32
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: X - shadow: 18 - domain: 143
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 19 - domain: 144
-Node, global: 62 - local: X - shadow: 20 - domain: 145
-Node, global: 63 - local: 35 - shadow: X - domain: 35
-Node, global: 64 - local: 36 - shadow: X - domain: 36
-Node, global: 65 - local: 37 - shadow: X - domain: 37
-Node, global: 66 - local: 38 - shadow: X - domain: 38
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: X - shadow: 21 - domain: 146
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: X - shadow: 22 - domain: 147
-Node, global: 71 - local: X - shadow: 23 - domain: 148
-Node, global: 72 - local: 40 - shadow: X - domain: 40
-Node, global: 73 - local: 41 - shadow: X - domain: 41
-Node, global: 74 - local: 42 - shadow: X - domain: 42
-Node, global: 75 - local: 43 - shadow: X - domain: 43
-Node, global: 76 - local: 44 - shadow: X - domain: 44
-Node, global: 77 - local: X - shadow: 24 - domain: 149
-Node, global: 78 - local: X - shadow: X - domain: X
-Node, global: 79 - local: X - shadow: 25 - domain: 150
-Node, global: 80 - local: X - shadow: 26 - domain: 151
-Node, global: 81 - local: 45 - shadow: X - domain: 45
-Node, global: 82 - local: 46 - shadow: X - domain: 46
-Node, global: 83 - local: 47 - shadow: X - domain: 47
-Node, global: 84 - local: 48 - shadow: X - domain: 48
-Node, global: 85 - local: 49 - shadow: X - domain: 49
-Node, global: 86 - local: X - shadow: 27 - domain: 152
-Node, global: 87 - local: X - shadow: X - domain: X
-Node, global: 88 - local: X - shadow: 28 - domain: 153
-Node, global: 89 - local: X - shadow: 29 - domain: 154
-Node, global: 90 - local: 50 - shadow: X - domain: 50
-Node, global: 91 - local: 51 - shadow: X - domain: 51
-Node, global: 92 - local: 52 - shadow: X - domain: 52
-Node, global: 93 - local: 53 - shadow: X - domain: 53
-Node, global: 94 - local: 54 - shadow: X - domain: 54
-Node, global: 95 - local: X - shadow: 30 - domain: 155
-Node, global: 96 - local: X - shadow: X - domain: X
-Node, global: 97 - local: X - shadow: 31 - domain: 156
-Node, global: 98 - local: X - shadow: 32 - domain: 157
-Node, global: 99 - local: 55 - shadow: X - domain: 55
-Node, global: 100 - local: 56 - shadow: X - domain: 56
-Node, global: 101 - local: 57 - shadow: X - domain: 57
-Node, global: 102 - local: 58 - shadow: X - domain: 58
-Node, global: 103 - local: 59 - shadow: X - domain: 59
-Node, global: 104 - local: X - shadow: 33 - domain: 158
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 34 - domain: 159
-Node, global: 107 - local: X - shadow: 35 - domain: 160
-Node, global: 108 - local: 60 - shadow: X - domain: 60
-Node, global: 109 - local: 61 - shadow: X - domain: 61
-Node, global: 110 - local: 62 - shadow: X - domain: 62
-Node, global: 111 - local: 63 - shadow: X - domain: 63
-Node, global: 112 - local: 64 - shadow: X - domain: 64
-Node, global: 113 - local: X - shadow: 36 - domain: 161
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: X - shadow: 37 - domain: 162
-Node, global: 116 - local: X - shadow: 38 - domain: 163
-Node, global: 117 - local: 65 - shadow: X - domain: 65
-Node, global: 118 - local: 66 - shadow: X - domain: 66
-Node, global: 119 - local: 67 - shadow: X - domain: 67
-Node, global: 120 - local: 68 - shadow: X - domain: 68
-Node, global: 121 - local: 69 - shadow: X - domain: 69
-Node, global: 122 - local: X - shadow: 39 - domain: 164
-Node, global: 123 - local: X - shadow: X - domain: X
-Node, global: 124 - local: X - shadow: 40 - domain: 165
-Node, global: 125 - local: X - shadow: 41 - domain: 166
-Node, global: 126 - local: 70 - shadow: X - domain: 70
-Node, global: 127 - local: 71 - shadow: X - domain: 71
-Node, global: 128 - local: 72 - shadow: X - domain: 72
-Node, global: 129 - local: 73 - shadow: X - domain: 73
-Node, global: 130 - local: 74 - shadow: X - domain: 74
-Node, global: 131 - local: X - shadow: 42 - domain: 167
-Node, global: 132 - local: X - shadow: X - domain: X
-Node, global: 133 - local: X - shadow: 43 - domain: 168
-Node, global: 134 - local: X - shadow: 44 - domain: 169
-Node, global: 135 - local: 75 - shadow: X - domain: 75
-Node, global: 136 - local: 76 - shadow: X - domain: 76
-Node, global: 137 - local: 77 - shadow: X - domain: 77
-Node, global: 138 - local: 78 - shadow: X - domain: 78
-Node, global: 139 - local: 79 - shadow: X - domain: 79
-Node, global: 140 - local: X - shadow: 45 - domain: 170
-Node, global: 141 - local: X - shadow: X - domain: X
-Node, global: 142 - local: X - shadow: 46 - domain: 171
-Node, global: 143 - local: X - shadow: 47 - domain: 172
-Node, global: 144 - local: 80 - shadow: X - domain: 80
-Node, global: 145 - local: 81 - shadow: X - domain: 81
-Node, global: 146 - local: 82 - shadow: X - domain: 82
-Node, global: 147 - local: 83 - shadow: X - domain: 83
-Node, global: 148 - local: 84 - shadow: X - domain: 84
-Node, global: 149 - local: X - shadow: 48 - domain: 173
-Node, global: 150 - local: X - shadow: X - domain: X
-Node, global: 151 - local: X - shadow: 49 - domain: 174
-Node, global: 152 - local: X - shadow: 50 - domain: 175
-Node, global: 153 - local: 85 - shadow: X - domain: 85
-Node, global: 154 - local: 86 - shadow: X - domain: 86
-Node, global: 155 - local: 87 - shadow: X - domain: 87
-Node, global: 156 - local: 88 - shadow: X - domain: 88
-Node, global: 157 - local: 89 - shadow: X - domain: 89
-Node, global: 158 - local: X - shadow: 51 - domain: 176
-Node, global: 159 - local: X - shadow: X - domain: X
-Node, global: 160 - local: X - shadow: 52 - domain: 177
-Node, global: 161 - local: X - shadow: 53 - domain: 178
-Node, global: 162 - local: 90 - shadow: X - domain: 90
-Node, global: 163 - local: 91 - shadow: X - domain: 91
-Node, global: 164 - local: 92 - shadow: X - domain: 92
-Node, global: 165 - local: 93 - shadow: X - domain: 93
-Node, global: 166 - local: 94 - shadow: X - domain: 94
-Node, global: 167 - local: X - shadow: 54 - domain: 179
-Node, global: 168 - local: X - shadow: X - domain: X
-Node, global: 169 - local: X - shadow: 55 - domain: 180
-Node, global: 170 - local: X - shadow: 56 - domain: 181
-Node, global: 171 - local: 95 - shadow: X - domain: 95
-Node, global: 172 - local: 96 - shadow: X - domain: 96
-Node, global: 173 - local: 97 - shadow: X - domain: 97
-Node, global: 174 - local: 98 - shadow: X - domain: 98
-Node, global: 175 - local: 99 - shadow: X - domain: 99
-Node, global: 176 - local: X - shadow: 57 - domain: 182
-Node, global: 177 - local: X - shadow: X - domain: X
-Node, global: 178 - local: X - shadow: 58 - domain: 183
-Node, global: 179 - local: X - shadow: 59 - domain: 184
-Node, global: 180 - local: 100 - shadow: X - domain: 100
-Node, global: 181 - local: 101 - shadow: X - domain: 101
-Node, global: 182 - local: 102 - shadow: X - domain: 102
-Node, global: 183 - local: 103 - shadow: X - domain: 103
-Node, global: 184 - local: 104 - shadow: X - domain: 104
-Node, global: 185 - local: X - shadow: 60 - domain: 185
-Node, global: 186 - local: X - shadow: X - domain: X
-Node, global: 187 - local: X - shadow: 61 - domain: 186
-Node, global: 188 - local: X - shadow: 62 - domain: 187
-Node, global: 189 - local: 105 - shadow: X - domain: 105
-Node, global: 190 - local: 106 - shadow: X - domain: 106
-Node, global: 191 - local: 107 - shadow: X - domain: 107
-Node, global: 192 - local: 108 - shadow: X - domain: 108
-Node, global: 193 - local: 109 - shadow: X - domain: 109
-Node, global: 194 - local: X - shadow: 63 - domain: 188
-Node, global: 195 - local: X - shadow: X - domain: X
-Node, global: 196 - local: X - shadow: 64 - domain: 189
-Node, global: 197 - local: X - shadow: 65 - domain: 190
-Node, global: 198 - local: 110 - shadow: X - domain: 110
-Node, global: 199 - local: 111 - shadow: X - domain: 111
-Node, global: 200 - local: 112 - shadow: X - domain: 112
-Node, global: 201 - local: 113 - shadow: X - domain: 113
-Node, global: 202 - local: 114 - shadow: X - domain: 114
-Node, global: 203 - local: X - shadow: 66 - domain: 191
-Node, global: 204 - local: X - shadow: X - domain: X
-Node, global: 205 - local: X - shadow: 67 - domain: 192
-Node, global: 206 - local: X - shadow: 68 - domain: 193
-Node, global: 207 - local: 115 - shadow: X - domain: 115
-Node, global: 208 - local: 116 - shadow: X - domain: 116
-Node, global: 209 - local: 117 - shadow: X - domain: 117
-Node, global: 210 - local: 118 - shadow: X - domain: 118
-Node, global: 211 - local: 119 - shadow: X - domain: 119
-Node, global: 212 - local: X - shadow: 69 - domain: 194
-Node, global: 213 - local: X - shadow: X - domain: X
-Node, global: 214 - local: X - shadow: 70 - domain: 195
-Node, global: 215 - local: X - shadow: 71 - domain: 196
-Node, global: 216 - local: 120 - shadow: X - domain: 120
-Node, global: 217 - local: 121 - shadow: X - domain: 121
-Node, global: 218 - local: 122 - shadow: X - domain: 122
-Node, global: 219 - local: 123 - shadow: X - domain: 123
-Node, global: 220 - local: 124 - shadow: X - domain: 124
-Node, global: 221 - local: X - shadow: 72 - domain: 197
-Node, global: 222 - local: X - shadow: X - domain: X
-Node, global: 223 - local: X - shadow: 73 - domain: 198
-Node, global: 224 - local: X - shadow: 74 - domain: 199
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 3
-Node, local: 4 - global: 4
-Node, local: 5 - global: 9
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 13
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 36
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 40
-Node, local: 25 - global: 45
-Node, local: 26 - global: 46
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 54
-Node, local: 31 - global: 55
-Node, local: 32 - global: 56
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 63
-Node, local: 36 - global: 64
-Node, local: 37 - global: 65
-Node, local: 38 - global: 66
-Node, local: 39 - global: 67
-Node, local: 40 - global: 72
-Node, local: 41 - global: 73
-Node, local: 42 - global: 74
-Node, local: 43 - global: 75
-Node, local: 44 - global: 76
-Node, local: 45 - global: 81
-Node, local: 46 - global: 82
-Node, local: 47 - global: 83
-Node, local: 48 - global: 84
-Node, local: 49 - global: 85
-Node, local: 50 - global: 90
-Node, local: 51 - global: 91
-Node, local: 52 - global: 92
-Node, local: 53 - global: 93
-Node, local: 54 - global: 94
-Node, local: 55 - global: 99
-Node, local: 56 - global: 100
-Node, local: 57 - global: 101
-Node, local: 58 - global: 102
-Node, local: 59 - global: 103
-Node, local: 60 - global: 108
-Node, local: 61 - global: 109
-Node, local: 62 - global: 110
-Node, local: 63 - global: 111
-Node, local: 64 - global: 112
-Node, local: 65 - global: 117
-Node, local: 66 - global: 118
-Node, local: 67 - global: 119
-Node, local: 68 - global: 120
-Node, local: 69 - global: 121
-Node, local: 70 - global: 126
-Node, local: 71 - global: 127
-Node, local: 72 - global: 128
-Node, local: 73 - global: 129
-Node, local: 74 - global: 130
-Node, local: 75 - global: 135
-Node, local: 76 - global: 136
-Node, local: 77 - global: 137
-Node, local: 78 - global: 138
-Node, local: 79 - global: 139
-Node, local: 80 - global: 144
-Node, local: 81 - global: 145
-Node, local: 82 - global: 146
-Node, local: 83 - global: 147
-Node, local: 84 - global: 148
-Node, local: 85 - global: 153
-Node, local: 86 - global: 154
-Node, local: 87 - global: 155
-Node, local: 88 - global: 156
-Node, local: 89 - global: 157
-Node, local: 90 - global: 162
-Node, local: 91 - global: 163
-Node, local: 92 - global: 164
-Node, local: 93 - global: 165
-Node, local: 94 - global: 166
-Node, local: 95 - global: 171
-Node, local: 96 - global: 172
-Node, local: 97 - global: 173
-Node, local: 98 - global: 174
-Node, local: 99 - global: 175
-Node, local: 100 - global: 180
-Node, local: 101 - global: 181
-Node, local: 102 - global: 182
-Node, local: 103 - global: 183
-Node, local: 104 - global: 184
-Node, local: 105 - global: 189
-Node, local: 106 - global: 190
-Node, local: 107 - global: 191
-Node, local: 108 - global: 192
-Node, local: 109 - global: 193
-Node, local: 110 - global: 198
-Node, local: 111 - global: 199
-Node, local: 112 - global: 200
-Node, local: 113 - global: 201
-Node, local: 114 - global: 202
-Node, local: 115 - global: 207
-Node, local: 116 - global: 208
-Node, local: 117 - global: 209
-Node, local: 118 - global: 210
-Node, local: 119 - global: 211
-Node, local: 120 - global: 216
-Node, local: 121 - global: 217
-Node, local: 122 - global: 218
-Node, local: 123 - global: 219
-Node, local: 124 - global: 220
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 3
-Node, domain: 4 - global: 4
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 13
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 36
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 45
-Node, domain: 26 - global: 46
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 54
-Node, domain: 31 - global: 55
-Node, domain: 32 - global: 56
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 63
-Node, domain: 36 - global: 64
-Node, domain: 37 - global: 65
-Node, domain: 38 - global: 66
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 72
-Node, domain: 41 - global: 73
-Node, domain: 42 - global: 74
-Node, domain: 43 - global: 75
-Node, domain: 44 - global: 76
-Node, domain: 45 - global: 81
-Node, domain: 46 - global: 82
-Node, domain: 47 - global: 83
-Node, domain: 48 - global: 84
-Node, domain: 49 - global: 85
-Node, domain: 50 - global: 90
-Node, domain: 51 - global: 91
-Node, domain: 52 - global: 92
-Node, domain: 53 - global: 93
-Node, domain: 54 - global: 94
-Node, domain: 55 - global: 99
-Node, domain: 56 - global: 100
-Node, domain: 57 - global: 101
-Node, domain: 58 - global: 102
-Node, domain: 59 - global: 103
-Node, domain: 60 - global: 108
-Node, domain: 61 - global: 109
-Node, domain: 62 - global: 110
-Node, domain: 63 - global: 111
-Node, domain: 64 - global: 112
-Node, domain: 65 - global: 117
-Node, domain: 66 - global: 118
-Node, domain: 67 - global: 119
-Node, domain: 68 - global: 120
-Node, domain: 69 - global: 121
-Node, domain: 70 - global: 126
-Node, domain: 71 - global: 127
-Node, domain: 72 - global: 128
-Node, domain: 73 - global: 129
-Node, domain: 74 - global: 130
-Node, domain: 75 - global: 135
-Node, domain: 76 - global: 136
-Node, domain: 77 - global: 137
-Node, domain: 78 - global: 138
-Node, domain: 79 - global: 139
-Node, domain: 80 - global: 144
-Node, domain: 81 - global: 145
-Node, domain: 82 - global: 146
-Node, domain: 83 - global: 147
-Node, domain: 84 - global: 148
-Node, domain: 85 - global: 153
-Node, domain: 86 - global: 154
-Node, domain: 87 - global: 155
-Node, domain: 88 - global: 156
-Node, domain: 89 - global: 157
-Node, domain: 90 - global: 162
-Node, domain: 91 - global: 163
-Node, domain: 92 - global: 164
-Node, domain: 93 - global: 165
-Node, domain: 94 - global: 166
-Node, domain: 95 - global: 171
-Node, domain: 96 - global: 172
-Node, domain: 97 - global: 173
-Node, domain: 98 - global: 174
-Node, domain: 99 - global: 175
-Node, domain: 100 - global: 180
-Node, domain: 101 - global: 181
-Node, domain: 102 - global: 182
-Node, domain: 103 - global: 183
-Node, domain: 104 - global: 184
-Node, domain: 105 - global: 189
-Node, domain: 106 - global: 190
-Node, domain: 107 - global: 191
-Node, domain: 108 - global: 192
-Node, domain: 109 - global: 193
-Node, domain: 110 - global: 198
-Node, domain: 111 - global: 199
-Node, domain: 112 - global: 200
-Node, domain: 113 - global: 201
-Node, domain: 114 - global: 202
-Node, domain: 115 - global: 207
-Node, domain: 116 - global: 208
-Node, domain: 117 - global: 209
-Node, domain: 118 - global: 210
-Node, domain: 119 - global: 211
-Node, domain: 120 - global: 216
-Node, domain: 121 - global: 217
-Node, domain: 122 - global: 218
-Node, domain: 123 - global: 219
-Node, domain: 124 - global: 220
-Node, domain: 125 - global: 5
-Node, domain: 126 - global: 7
-Node, domain: 127 - global: 8
-Node, domain: 128 - global: 14
-Node, domain: 129 - global: 16
-Node, domain: 130 - global: 17
-Node, domain: 131 - global: 23
-Node, domain: 132 - global: 25
-Node, domain: 133 - global: 26
-Node, domain: 134 - global: 32
-Node, domain: 135 - global: 34
-Node, domain: 136 - global: 35
-Node, domain: 137 - global: 41
-Node, domain: 138 - global: 43
-Node, domain: 139 - global: 44
-Node, domain: 140 - global: 50
-Node, domain: 141 - global: 52
-Node, domain: 142 - global: 53
-Node, domain: 143 - global: 59
-Node, domain: 144 - global: 61
-Node, domain: 145 - global: 62
-Node, domain: 146 - global: 68
-Node, domain: 147 - global: 70
-Node, domain: 148 - global: 71
-Node, domain: 149 - global: 77
-Node, domain: 150 - global: 79
-Node, domain: 151 - global: 80
-Node, domain: 152 - global: 86
-Node, domain: 153 - global: 88
-Node, domain: 154 - global: 89
-Node, domain: 155 - global: 95
-Node, domain: 156 - global: 97
-Node, domain: 157 - global: 98
-Node, domain: 158 - global: 104
-Node, domain: 159 - global: 106
-Node, domain: 160 - global: 107
-Node, domain: 161 - global: 113
-Node, domain: 162 - global: 115
-Node, domain: 163 - global: 116
-Node, domain: 164 - global: 122
-Node, domain: 165 - global: 124
-Node, domain: 166 - global: 125
-Node, domain: 167 - global: 131
-Node, domain: 168 - global: 133
-Node, domain: 169 - global: 134
-Node, domain: 170 - global: 140
-Node, domain: 171 - global: 142
-Node, domain: 172 - global: 143
-Node, domain: 173 - global: 149
-Node, domain: 174 - global: 151
-Node, domain: 175 - global: 152
-Node, domain: 176 - global: 158
-Node, domain: 177 - global: 160
-Node, domain: 178 - global: 161
-Node, domain: 179 - global: 167
-Node, domain: 180 - global: 169
-Node, domain: 181 - global: 170
-Node, domain: 182 - global: 176
-Node, domain: 183 - global: 178
-Node, domain: 184 - global: 179
-Node, domain: 185 - global: 185
-Node, domain: 186 - global: 187
-Node, domain: 187 - global: 188
-Node, domain: 188 - global: 194
-Node, domain: 189 - global: 196
-Node, domain: 190 - global: 197
-Node, domain: 191 - global: 203
-Node, domain: 192 - global: 205
-Node, domain: 193 - global: 206
-Node, domain: 194 - global: 212
-Node, domain: 195 - global: 214
-Node, domain: 196 - global: 215
-Node, domain: 197 - global: 221
-Node, domain: 198 - global: 223
-Node, domain: 199 - global: 224
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --meshSizeI=9 --isPeriodicI=True " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,880 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060740)
-		size : (2,1,1)
-		isPeriodic : (True,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 8, 4, 4 }
-elementGlobalCount: 128
-	elementLocalCounts[0]: { 4, 4, 4 }
-	elementLocalCounts[1]: { 4, 4, 4 }
-elementDomainCounts: { 6, 4, 4 }
-nodeGlobalCounts: { 9, 5, 5 }
-nodeGlobalCount: 225
-	nodeLocalCounts[0]: { 5, 5, 5 }
-	nodeLocalCounts[1]: { 5, 5, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 64
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: 1 - domain: 65
-Element, global: 4 - local: 0 - shadow: X - domain: 0
-Element, global: 5 - local: 1 - shadow: X - domain: 1
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: 2 - domain: 66
-Element, global: 9 - local: X - shadow: X - domain: X
-Element, global: 10 - local: X - shadow: X - domain: X
-Element, global: 11 - local: X - shadow: 3 - domain: 67
-Element, global: 12 - local: 4 - shadow: X - domain: 4
-Element, global: 13 - local: 5 - shadow: X - domain: 5
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: 4 - domain: 68
-Element, global: 17 - local: X - shadow: X - domain: X
-Element, global: 18 - local: X - shadow: X - domain: X
-Element, global: 19 - local: X - shadow: 5 - domain: 69
-Element, global: 20 - local: 8 - shadow: X - domain: 8
-Element, global: 21 - local: 9 - shadow: X - domain: 9
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: 6 - domain: 70
-Element, global: 25 - local: X - shadow: X - domain: X
-Element, global: 26 - local: X - shadow: X - domain: X
-Element, global: 27 - local: X - shadow: 7 - domain: 71
-Element, global: 28 - local: 12 - shadow: X - domain: 12
-Element, global: 29 - local: 13 - shadow: X - domain: 13
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: 8 - domain: 72
-Element, global: 33 - local: X - shadow: X - domain: X
-Element, global: 34 - local: X - shadow: X - domain: X
-Element, global: 35 - local: X - shadow: 9 - domain: 73
-Element, global: 36 - local: 16 - shadow: X - domain: 16
-Element, global: 37 - local: 17 - shadow: X - domain: 17
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: 10 - domain: 74
-Element, global: 41 - local: X - shadow: X - domain: X
-Element, global: 42 - local: X - shadow: X - domain: X
-Element, global: 43 - local: X - shadow: 11 - domain: 75
-Element, global: 44 - local: 20 - shadow: X - domain: 20
-Element, global: 45 - local: 21 - shadow: X - domain: 21
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: 12 - domain: 76
-Element, global: 49 - local: X - shadow: X - domain: X
-Element, global: 50 - local: X - shadow: X - domain: X
-Element, global: 51 - local: X - shadow: 13 - domain: 77
-Element, global: 52 - local: 24 - shadow: X - domain: 24
-Element, global: 53 - local: 25 - shadow: X - domain: 25
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: 14 - domain: 78
-Element, global: 57 - local: X - shadow: X - domain: X
-Element, global: 58 - local: X - shadow: X - domain: X
-Element, global: 59 - local: X - shadow: 15 - domain: 79
-Element, global: 60 - local: 28 - shadow: X - domain: 28
-Element, global: 61 - local: 29 - shadow: X - domain: 29
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-Element, global: 64 - local: X - shadow: 16 - domain: 80
-Element, global: 65 - local: X - shadow: X - domain: X
-Element, global: 66 - local: X - shadow: X - domain: X
-Element, global: 67 - local: X - shadow: 17 - domain: 81
-Element, global: 68 - local: 32 - shadow: X - domain: 32
-Element, global: 69 - local: 33 - shadow: X - domain: 33
-Element, global: 70 - local: 34 - shadow: X - domain: 34
-Element, global: 71 - local: 35 - shadow: X - domain: 35
-Element, global: 72 - local: X - shadow: 18 - domain: 82
-Element, global: 73 - local: X - shadow: X - domain: X
-Element, global: 74 - local: X - shadow: X - domain: X
-Element, global: 75 - local: X - shadow: 19 - domain: 83
-Element, global: 76 - local: 36 - shadow: X - domain: 36
-Element, global: 77 - local: 37 - shadow: X - domain: 37
-Element, global: 78 - local: 38 - shadow: X - domain: 38
-Element, global: 79 - local: 39 - shadow: X - domain: 39
-Element, global: 80 - local: X - shadow: 20 - domain: 84
-Element, global: 81 - local: X - shadow: X - domain: X
-Element, global: 82 - local: X - shadow: X - domain: X
-Element, global: 83 - local: X - shadow: 21 - domain: 85
-Element, global: 84 - local: 40 - shadow: X - domain: 40
-Element, global: 85 - local: 41 - shadow: X - domain: 41
-Element, global: 86 - local: 42 - shadow: X - domain: 42
-Element, global: 87 - local: 43 - shadow: X - domain: 43
-Element, global: 88 - local: X - shadow: 22 - domain: 86
-Element, global: 89 - local: X - shadow: X - domain: X
-Element, global: 90 - local: X - shadow: X - domain: X
-Element, global: 91 - local: X - shadow: 23 - domain: 87
-Element, global: 92 - local: 44 - shadow: X - domain: 44
-Element, global: 93 - local: 45 - shadow: X - domain: 45
-Element, global: 94 - local: 46 - shadow: X - domain: 46
-Element, global: 95 - local: 47 - shadow: X - domain: 47
-Element, global: 96 - local: X - shadow: 24 - domain: 88
-Element, global: 97 - local: X - shadow: X - domain: X
-Element, global: 98 - local: X - shadow: X - domain: X
-Element, global: 99 - local: X - shadow: 25 - domain: 89
-Element, global: 100 - local: 48 - shadow: X - domain: 48
-Element, global: 101 - local: 49 - shadow: X - domain: 49
-Element, global: 102 - local: 50 - shadow: X - domain: 50
-Element, global: 103 - local: 51 - shadow: X - domain: 51
-Element, global: 104 - local: X - shadow: 26 - domain: 90
-Element, global: 105 - local: X - shadow: X - domain: X
-Element, global: 106 - local: X - shadow: X - domain: X
-Element, global: 107 - local: X - shadow: 27 - domain: 91
-Element, global: 108 - local: 52 - shadow: X - domain: 52
-Element, global: 109 - local: 53 - shadow: X - domain: 53
-Element, global: 110 - local: 54 - shadow: X - domain: 54
-Element, global: 111 - local: 55 - shadow: X - domain: 55
-Element, global: 112 - local: X - shadow: 28 - domain: 92
-Element, global: 113 - local: X - shadow: X - domain: X
-Element, global: 114 - local: X - shadow: X - domain: X
-Element, global: 115 - local: X - shadow: 29 - domain: 93
-Element, global: 116 - local: 56 - shadow: X - domain: 56
-Element, global: 117 - local: 57 - shadow: X - domain: 57
-Element, global: 118 - local: 58 - shadow: X - domain: 58
-Element, global: 119 - local: 59 - shadow: X - domain: 59
-Element, global: 120 - local: X - shadow: 30 - domain: 94
-Element, global: 121 - local: X - shadow: X - domain: X
-Element, global: 122 - local: X - shadow: X - domain: X
-Element, global: 123 - local: X - shadow: 31 - domain: 95
-Element, global: 124 - local: 60 - shadow: X - domain: 60
-Element, global: 125 - local: 61 - shadow: X - domain: 61
-Element, global: 126 - local: 62 - shadow: X - domain: 62
-Element, global: 127 - local: 63 - shadow: X - domain: 63
-
-Element, local: 0 - global: 4
-Element, local: 1 - global: 5
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 12
-Element, local: 5 - global: 13
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 20
-Element, local: 9 - global: 21
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 28
-Element, local: 13 - global: 29
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 36
-Element, local: 17 - global: 37
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 44
-Element, local: 21 - global: 45
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 52
-Element, local: 25 - global: 53
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 60
-Element, local: 29 - global: 61
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-Element, local: 32 - global: 68
-Element, local: 33 - global: 69
-Element, local: 34 - global: 70
-Element, local: 35 - global: 71
-Element, local: 36 - global: 76
-Element, local: 37 - global: 77
-Element, local: 38 - global: 78
-Element, local: 39 - global: 79
-Element, local: 40 - global: 84
-Element, local: 41 - global: 85
-Element, local: 42 - global: 86
-Element, local: 43 - global: 87
-Element, local: 44 - global: 92
-Element, local: 45 - global: 93
-Element, local: 46 - global: 94
-Element, local: 47 - global: 95
-Element, local: 48 - global: 100
-Element, local: 49 - global: 101
-Element, local: 50 - global: 102
-Element, local: 51 - global: 103
-Element, local: 52 - global: 108
-Element, local: 53 - global: 109
-Element, local: 54 - global: 110
-Element, local: 55 - global: 111
-Element, local: 56 - global: 116
-Element, local: 57 - global: 117
-Element, local: 58 - global: 118
-Element, local: 59 - global: 119
-Element, local: 60 - global: 124
-Element, local: 61 - global: 125
-Element, local: 62 - global: 126
-Element, local: 63 - global: 127
-
-Element, domain: 0 - global: 4
-Element, domain: 1 - global: 5
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 12
-Element, domain: 5 - global: 13
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 20
-Element, domain: 9 - global: 21
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 28
-Element, domain: 13 - global: 29
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 36
-Element, domain: 17 - global: 37
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 44
-Element, domain: 21 - global: 45
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 52
-Element, domain: 25 - global: 53
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 60
-Element, domain: 29 - global: 61
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 68
-Element, domain: 33 - global: 69
-Element, domain: 34 - global: 70
-Element, domain: 35 - global: 71
-Element, domain: 36 - global: 76
-Element, domain: 37 - global: 77
-Element, domain: 38 - global: 78
-Element, domain: 39 - global: 79
-Element, domain: 40 - global: 84
-Element, domain: 41 - global: 85
-Element, domain: 42 - global: 86
-Element, domain: 43 - global: 87
-Element, domain: 44 - global: 92
-Element, domain: 45 - global: 93
-Element, domain: 46 - global: 94
-Element, domain: 47 - global: 95
-Element, domain: 48 - global: 100
-Element, domain: 49 - global: 101
-Element, domain: 50 - global: 102
-Element, domain: 51 - global: 103
-Element, domain: 52 - global: 108
-Element, domain: 53 - global: 109
-Element, domain: 54 - global: 110
-Element, domain: 55 - global: 111
-Element, domain: 56 - global: 116
-Element, domain: 57 - global: 117
-Element, domain: 58 - global: 118
-Element, domain: 59 - global: 119
-Element, domain: 60 - global: 124
-Element, domain: 61 - global: 125
-Element, domain: 62 - global: 126
-Element, domain: 63 - global: 127
-Element, domain: 64 - global: 0
-Element, domain: 65 - global: 3
-Element, domain: 66 - global: 8
-Element, domain: 67 - global: 11
-Element, domain: 68 - global: 16
-Element, domain: 69 - global: 19
-Element, domain: 70 - global: 24
-Element, domain: 71 - global: 27
-Element, domain: 72 - global: 32
-Element, domain: 73 - global: 35
-Element, domain: 74 - global: 40
-Element, domain: 75 - global: 43
-Element, domain: 76 - global: 48
-Element, domain: 77 - global: 51
-Element, domain: 78 - global: 56
-Element, domain: 79 - global: 59
-Element, domain: 80 - global: 64
-Element, domain: 81 - global: 67
-Element, domain: 82 - global: 72
-Element, domain: 83 - global: 75
-Element, domain: 84 - global: 80
-Element, domain: 85 - global: 83
-Element, domain: 86 - global: 88
-Element, domain: 87 - global: 91
-Element, domain: 88 - global: 96
-Element, domain: 89 - global: 99
-Element, domain: 90 - global: 104
-Element, domain: 91 - global: 107
-Element, domain: 92 - global: 112
-Element, domain: 93 - global: 115
-Element, domain: 94 - global: 120
-Element, domain: 95 - global: 123
-
-Node, global: 0 - local: X - shadow: 0 - domain: 125
-Node, global: 1 - local: X - shadow: 1 - domain: 126
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: 2 - domain: 127
-Node, global: 4 - local: 0 - shadow: X - domain: 0
-Node, global: 5 - local: 1 - shadow: X - domain: 1
-Node, global: 6 - local: 2 - shadow: X - domain: 2
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: X - shadow: 3 - domain: 128
-Node, global: 10 - local: X - shadow: 4 - domain: 129
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: 5 - domain: 130
-Node, global: 13 - local: 5 - shadow: X - domain: 5
-Node, global: 14 - local: 6 - shadow: X - domain: 6
-Node, global: 15 - local: 7 - shadow: X - domain: 7
-Node, global: 16 - local: 8 - shadow: X - domain: 8
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: X - shadow: 6 - domain: 131
-Node, global: 19 - local: X - shadow: 7 - domain: 132
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: 8 - domain: 133
-Node, global: 22 - local: 10 - shadow: X - domain: 10
-Node, global: 23 - local: 11 - shadow: X - domain: 11
-Node, global: 24 - local: 12 - shadow: X - domain: 12
-Node, global: 25 - local: 13 - shadow: X - domain: 13
-Node, global: 26 - local: 14 - shadow: X - domain: 14
-Node, global: 27 - local: X - shadow: 9 - domain: 134
-Node, global: 28 - local: X - shadow: 10 - domain: 135
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: 11 - domain: 136
-Node, global: 31 - local: 15 - shadow: X - domain: 15
-Node, global: 32 - local: 16 - shadow: X - domain: 16
-Node, global: 33 - local: 17 - shadow: X - domain: 17
-Node, global: 34 - local: 18 - shadow: X - domain: 18
-Node, global: 35 - local: 19 - shadow: X - domain: 19
-Node, global: 36 - local: X - shadow: 12 - domain: 137
-Node, global: 37 - local: X - shadow: 13 - domain: 138
-Node, global: 38 - local: X - shadow: X - domain: X
-Node, global: 39 - local: X - shadow: 14 - domain: 139
-Node, global: 40 - local: 20 - shadow: X - domain: 20
-Node, global: 41 - local: 21 - shadow: X - domain: 21
-Node, global: 42 - local: 22 - shadow: X - domain: 22
-Node, global: 43 - local: 23 - shadow: X - domain: 23
-Node, global: 44 - local: 24 - shadow: X - domain: 24
-Node, global: 45 - local: X - shadow: 15 - domain: 140
-Node, global: 46 - local: X - shadow: 16 - domain: 141
-Node, global: 47 - local: X - shadow: X - domain: X
-Node, global: 48 - local: X - shadow: 17 - domain: 142
-Node, global: 49 - local: 25 - shadow: X - domain: 25
-Node, global: 50 - local: 26 - shadow: X - domain: 26
-Node, global: 51 - local: 27 - shadow: X - domain: 27
-Node, global: 52 - local: 28 - shadow: X - domain: 28
-Node, global: 53 - local: 29 - shadow: X - domain: 29
-Node, global: 54 - local: X - shadow: 18 - domain: 143
-Node, global: 55 - local: X - shadow: 19 - domain: 144
-Node, global: 56 - local: X - shadow: X - domain: X
-Node, global: 57 - local: X - shadow: 20 - domain: 145
-Node, global: 58 - local: 30 - shadow: X - domain: 30
-Node, global: 59 - local: 31 - shadow: X - domain: 31
-Node, global: 60 - local: 32 - shadow: X - domain: 32
-Node, global: 61 - local: 33 - shadow: X - domain: 33
-Node, global: 62 - local: 34 - shadow: X - domain: 34
-Node, global: 63 - local: X - shadow: 21 - domain: 146
-Node, global: 64 - local: X - shadow: 22 - domain: 147
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 23 - domain: 148
-Node, global: 67 - local: 35 - shadow: X - domain: 35
-Node, global: 68 - local: 36 - shadow: X - domain: 36
-Node, global: 69 - local: 37 - shadow: X - domain: 37
-Node, global: 70 - local: 38 - shadow: X - domain: 38
-Node, global: 71 - local: 39 - shadow: X - domain: 39
-Node, global: 72 - local: X - shadow: 24 - domain: 149
-Node, global: 73 - local: X - shadow: 25 - domain: 150
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: X - shadow: 26 - domain: 151
-Node, global: 76 - local: 40 - shadow: X - domain: 40
-Node, global: 77 - local: 41 - shadow: X - domain: 41
-Node, global: 78 - local: 42 - shadow: X - domain: 42
-Node, global: 79 - local: 43 - shadow: X - domain: 43
-Node, global: 80 - local: 44 - shadow: X - domain: 44
-Node, global: 81 - local: X - shadow: 27 - domain: 152
-Node, global: 82 - local: X - shadow: 28 - domain: 153
-Node, global: 83 - local: X - shadow: X - domain: X
-Node, global: 84 - local: X - shadow: 29 - domain: 154
-Node, global: 85 - local: 45 - shadow: X - domain: 45
-Node, global: 86 - local: 46 - shadow: X - domain: 46
-Node, global: 87 - local: 47 - shadow: X - domain: 47
-Node, global: 88 - local: 48 - shadow: X - domain: 48
-Node, global: 89 - local: 49 - shadow: X - domain: 49
-Node, global: 90 - local: X - shadow: 30 - domain: 155
-Node, global: 91 - local: X - shadow: 31 - domain: 156
-Node, global: 92 - local: X - shadow: X - domain: X
-Node, global: 93 - local: X - shadow: 32 - domain: 157
-Node, global: 94 - local: 50 - shadow: X - domain: 50
-Node, global: 95 - local: 51 - shadow: X - domain: 51
-Node, global: 96 - local: 52 - shadow: X - domain: 52
-Node, global: 97 - local: 53 - shadow: X - domain: 53
-Node, global: 98 - local: 54 - shadow: X - domain: 54
-Node, global: 99 - local: X - shadow: 33 - domain: 158
-Node, global: 100 - local: X - shadow: 34 - domain: 159
-Node, global: 101 - local: X - shadow: X - domain: X
-Node, global: 102 - local: X - shadow: 35 - domain: 160
-Node, global: 103 - local: 55 - shadow: X - domain: 55
-Node, global: 104 - local: 56 - shadow: X - domain: 56
-Node, global: 105 - local: 57 - shadow: X - domain: 57
-Node, global: 106 - local: 58 - shadow: X - domain: 58
-Node, global: 107 - local: 59 - shadow: X - domain: 59
-Node, global: 108 - local: X - shadow: 36 - domain: 161
-Node, global: 109 - local: X - shadow: 37 - domain: 162
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 38 - domain: 163
-Node, global: 112 - local: 60 - shadow: X - domain: 60
-Node, global: 113 - local: 61 - shadow: X - domain: 61
-Node, global: 114 - local: 62 - shadow: X - domain: 62
-Node, global: 115 - local: 63 - shadow: X - domain: 63
-Node, global: 116 - local: 64 - shadow: X - domain: 64
-Node, global: 117 - local: X - shadow: 39 - domain: 164
-Node, global: 118 - local: X - shadow: 40 - domain: 165
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: X - shadow: 41 - domain: 166
-Node, global: 121 - local: 65 - shadow: X - domain: 65
-Node, global: 122 - local: 66 - shadow: X - domain: 66
-Node, global: 123 - local: 67 - shadow: X - domain: 67
-Node, global: 124 - local: 68 - shadow: X - domain: 68
-Node, global: 125 - local: 69 - shadow: X - domain: 69
-Node, global: 126 - local: X - shadow: 42 - domain: 167
-Node, global: 127 - local: X - shadow: 43 - domain: 168
-Node, global: 128 - local: X - shadow: X - domain: X
-Node, global: 129 - local: X - shadow: 44 - domain: 169
-Node, global: 130 - local: 70 - shadow: X - domain: 70
-Node, global: 131 - local: 71 - shadow: X - domain: 71
-Node, global: 132 - local: 72 - shadow: X - domain: 72
-Node, global: 133 - local: 73 - shadow: X - domain: 73
-Node, global: 134 - local: 74 - shadow: X - domain: 74
-Node, global: 135 - local: X - shadow: 45 - domain: 170
-Node, global: 136 - local: X - shadow: 46 - domain: 171
-Node, global: 137 - local: X - shadow: X - domain: X
-Node, global: 138 - local: X - shadow: 47 - domain: 172
-Node, global: 139 - local: 75 - shadow: X - domain: 75
-Node, global: 140 - local: 76 - shadow: X - domain: 76
-Node, global: 141 - local: 77 - shadow: X - domain: 77
-Node, global: 142 - local: 78 - shadow: X - domain: 78
-Node, global: 143 - local: 79 - shadow: X - domain: 79
-Node, global: 144 - local: X - shadow: 48 - domain: 173
-Node, global: 145 - local: X - shadow: 49 - domain: 174
-Node, global: 146 - local: X - shadow: X - domain: X
-Node, global: 147 - local: X - shadow: 50 - domain: 175
-Node, global: 148 - local: 80 - shadow: X - domain: 80
-Node, global: 149 - local: 81 - shadow: X - domain: 81
-Node, global: 150 - local: 82 - shadow: X - domain: 82
-Node, global: 151 - local: 83 - shadow: X - domain: 83
-Node, global: 152 - local: 84 - shadow: X - domain: 84
-Node, global: 153 - local: X - shadow: 51 - domain: 176
-Node, global: 154 - local: X - shadow: 52 - domain: 177
-Node, global: 155 - local: X - shadow: X - domain: X
-Node, global: 156 - local: X - shadow: 53 - domain: 178
-Node, global: 157 - local: 85 - shadow: X - domain: 85
-Node, global: 158 - local: 86 - shadow: X - domain: 86
-Node, global: 159 - local: 87 - shadow: X - domain: 87
-Node, global: 160 - local: 88 - shadow: X - domain: 88
-Node, global: 161 - local: 89 - shadow: X - domain: 89
-Node, global: 162 - local: X - shadow: 54 - domain: 179
-Node, global: 163 - local: X - shadow: 55 - domain: 180
-Node, global: 164 - local: X - shadow: X - domain: X
-Node, global: 165 - local: X - shadow: 56 - domain: 181
-Node, global: 166 - local: 90 - shadow: X - domain: 90
-Node, global: 167 - local: 91 - shadow: X - domain: 91
-Node, global: 168 - local: 92 - shadow: X - domain: 92
-Node, global: 169 - local: 93 - shadow: X - domain: 93
-Node, global: 170 - local: 94 - shadow: X - domain: 94
-Node, global: 171 - local: X - shadow: 57 - domain: 182
-Node, global: 172 - local: X - shadow: 58 - domain: 183
-Node, global: 173 - local: X - shadow: X - domain: X
-Node, global: 174 - local: X - shadow: 59 - domain: 184
-Node, global: 175 - local: 95 - shadow: X - domain: 95
-Node, global: 176 - local: 96 - shadow: X - domain: 96
-Node, global: 177 - local: 97 - shadow: X - domain: 97
-Node, global: 178 - local: 98 - shadow: X - domain: 98
-Node, global: 179 - local: 99 - shadow: X - domain: 99
-Node, global: 180 - local: X - shadow: 60 - domain: 185
-Node, global: 181 - local: X - shadow: 61 - domain: 186
-Node, global: 182 - local: X - shadow: X - domain: X
-Node, global: 183 - local: X - shadow: 62 - domain: 187
-Node, global: 184 - local: 100 - shadow: X - domain: 100
-Node, global: 185 - local: 101 - shadow: X - domain: 101
-Node, global: 186 - local: 102 - shadow: X - domain: 102
-Node, global: 187 - local: 103 - shadow: X - domain: 103
-Node, global: 188 - local: 104 - shadow: X - domain: 104
-Node, global: 189 - local: X - shadow: 63 - domain: 188
-Node, global: 190 - local: X - shadow: 64 - domain: 189
-Node, global: 191 - local: X - shadow: X - domain: X
-Node, global: 192 - local: X - shadow: 65 - domain: 190
-Node, global: 193 - local: 105 - shadow: X - domain: 105
-Node, global: 194 - local: 106 - shadow: X - domain: 106
-Node, global: 195 - local: 107 - shadow: X - domain: 107
-Node, global: 196 - local: 108 - shadow: X - domain: 108
-Node, global: 197 - local: 109 - shadow: X - domain: 109
-Node, global: 198 - local: X - shadow: 66 - domain: 191
-Node, global: 199 - local: X - shadow: 67 - domain: 192
-Node, global: 200 - local: X - shadow: X - domain: X
-Node, global: 201 - local: X - shadow: 68 - domain: 193
-Node, global: 202 - local: 110 - shadow: X - domain: 110
-Node, global: 203 - local: 111 - shadow: X - domain: 111
-Node, global: 204 - local: 112 - shadow: X - domain: 112
-Node, global: 205 - local: 113 - shadow: X - domain: 113
-Node, global: 206 - local: 114 - shadow: X - domain: 114
-Node, global: 207 - local: X - shadow: 69 - domain: 194
-Node, global: 208 - local: X - shadow: 70 - domain: 195
-Node, global: 209 - local: X - shadow: X - domain: X
-Node, global: 210 - local: X - shadow: 71 - domain: 196
-Node, global: 211 - local: 115 - shadow: X - domain: 115
-Node, global: 212 - local: 116 - shadow: X - domain: 116
-Node, global: 213 - local: 117 - shadow: X - domain: 117
-Node, global: 214 - local: 118 - shadow: X - domain: 118
-Node, global: 215 - local: 119 - shadow: X - domain: 119
-Node, global: 216 - local: X - shadow: 72 - domain: 197
-Node, global: 217 - local: X - shadow: 73 - domain: 198
-Node, global: 218 - local: X - shadow: X - domain: X
-Node, global: 219 - local: X - shadow: 74 - domain: 199
-Node, global: 220 - local: 120 - shadow: X - domain: 120
-Node, global: 221 - local: 121 - shadow: X - domain: 121
-Node, global: 222 - local: 122 - shadow: X - domain: 122
-Node, global: 223 - local: 123 - shadow: X - domain: 123
-Node, global: 224 - local: 124 - shadow: X - domain: 124
-
-Node, local: 0 - global: 4
-Node, local: 1 - global: 5
-Node, local: 2 - global: 6
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 13
-Node, local: 6 - global: 14
-Node, local: 7 - global: 15
-Node, local: 8 - global: 16
-Node, local: 9 - global: 17
-Node, local: 10 - global: 22
-Node, local: 11 - global: 23
-Node, local: 12 - global: 24
-Node, local: 13 - global: 25
-Node, local: 14 - global: 26
-Node, local: 15 - global: 31
-Node, local: 16 - global: 32
-Node, local: 17 - global: 33
-Node, local: 18 - global: 34
-Node, local: 19 - global: 35
-Node, local: 20 - global: 40
-Node, local: 21 - global: 41
-Node, local: 22 - global: 42
-Node, local: 23 - global: 43
-Node, local: 24 - global: 44
-Node, local: 25 - global: 49
-Node, local: 26 - global: 50
-Node, local: 27 - global: 51
-Node, local: 28 - global: 52
-Node, local: 29 - global: 53
-Node, local: 30 - global: 58
-Node, local: 31 - global: 59
-Node, local: 32 - global: 60
-Node, local: 33 - global: 61
-Node, local: 34 - global: 62
-Node, local: 35 - global: 67
-Node, local: 36 - global: 68
-Node, local: 37 - global: 69
-Node, local: 38 - global: 70
-Node, local: 39 - global: 71
-Node, local: 40 - global: 76
-Node, local: 41 - global: 77
-Node, local: 42 - global: 78
-Node, local: 43 - global: 79
-Node, local: 44 - global: 80
-Node, local: 45 - global: 85
-Node, local: 46 - global: 86
-Node, local: 47 - global: 87
-Node, local: 48 - global: 88
-Node, local: 49 - global: 89
-Node, local: 50 - global: 94
-Node, local: 51 - global: 95
-Node, local: 52 - global: 96
-Node, local: 53 - global: 97
-Node, local: 54 - global: 98
-Node, local: 55 - global: 103
-Node, local: 56 - global: 104
-Node, local: 57 - global: 105
-Node, local: 58 - global: 106
-Node, local: 59 - global: 107
-Node, local: 60 - global: 112
-Node, local: 61 - global: 113
-Node, local: 62 - global: 114
-Node, local: 63 - global: 115
-Node, local: 64 - global: 116
-Node, local: 65 - global: 121
-Node, local: 66 - global: 122
-Node, local: 67 - global: 123
-Node, local: 68 - global: 124
-Node, local: 69 - global: 125
-Node, local: 70 - global: 130
-Node, local: 71 - global: 131
-Node, local: 72 - global: 132
-Node, local: 73 - global: 133
-Node, local: 74 - global: 134
-Node, local: 75 - global: 139
-Node, local: 76 - global: 140
-Node, local: 77 - global: 141
-Node, local: 78 - global: 142
-Node, local: 79 - global: 143
-Node, local: 80 - global: 148
-Node, local: 81 - global: 149
-Node, local: 82 - global: 150
-Node, local: 83 - global: 151
-Node, local: 84 - global: 152
-Node, local: 85 - global: 157
-Node, local: 86 - global: 158
-Node, local: 87 - global: 159
-Node, local: 88 - global: 160
-Node, local: 89 - global: 161
-Node, local: 90 - global: 166
-Node, local: 91 - global: 167
-Node, local: 92 - global: 168
-Node, local: 93 - global: 169
-Node, local: 94 - global: 170
-Node, local: 95 - global: 175
-Node, local: 96 - global: 176
-Node, local: 97 - global: 177
-Node, local: 98 - global: 178
-Node, local: 99 - global: 179
-Node, local: 100 - global: 184
-Node, local: 101 - global: 185
-Node, local: 102 - global: 186
-Node, local: 103 - global: 187
-Node, local: 104 - global: 188
-Node, local: 105 - global: 193
-Node, local: 106 - global: 194
-Node, local: 107 - global: 195
-Node, local: 108 - global: 196
-Node, local: 109 - global: 197
-Node, local: 110 - global: 202
-Node, local: 111 - global: 203
-Node, local: 112 - global: 204
-Node, local: 113 - global: 205
-Node, local: 114 - global: 206
-Node, local: 115 - global: 211
-Node, local: 116 - global: 212
-Node, local: 117 - global: 213
-Node, local: 118 - global: 214
-Node, local: 119 - global: 215
-Node, local: 120 - global: 220
-Node, local: 121 - global: 221
-Node, local: 122 - global: 222
-Node, local: 123 - global: 223
-Node, local: 124 - global: 224
-
-Node, domain: 0 - global: 4
-Node, domain: 1 - global: 5
-Node, domain: 2 - global: 6
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 13
-Node, domain: 6 - global: 14
-Node, domain: 7 - global: 15
-Node, domain: 8 - global: 16
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 22
-Node, domain: 11 - global: 23
-Node, domain: 12 - global: 24
-Node, domain: 13 - global: 25
-Node, domain: 14 - global: 26
-Node, domain: 15 - global: 31
-Node, domain: 16 - global: 32
-Node, domain: 17 - global: 33
-Node, domain: 18 - global: 34
-Node, domain: 19 - global: 35
-Node, domain: 20 - global: 40
-Node, domain: 21 - global: 41
-Node, domain: 22 - global: 42
-Node, domain: 23 - global: 43
-Node, domain: 24 - global: 44
-Node, domain: 25 - global: 49
-Node, domain: 26 - global: 50
-Node, domain: 27 - global: 51
-Node, domain: 28 - global: 52
-Node, domain: 29 - global: 53
-Node, domain: 30 - global: 58
-Node, domain: 31 - global: 59
-Node, domain: 32 - global: 60
-Node, domain: 33 - global: 61
-Node, domain: 34 - global: 62
-Node, domain: 35 - global: 67
-Node, domain: 36 - global: 68
-Node, domain: 37 - global: 69
-Node, domain: 38 - global: 70
-Node, domain: 39 - global: 71
-Node, domain: 40 - global: 76
-Node, domain: 41 - global: 77
-Node, domain: 42 - global: 78
-Node, domain: 43 - global: 79
-Node, domain: 44 - global: 80
-Node, domain: 45 - global: 85
-Node, domain: 46 - global: 86
-Node, domain: 47 - global: 87
-Node, domain: 48 - global: 88
-Node, domain: 49 - global: 89
-Node, domain: 50 - global: 94
-Node, domain: 51 - global: 95
-Node, domain: 52 - global: 96
-Node, domain: 53 - global: 97
-Node, domain: 54 - global: 98
-Node, domain: 55 - global: 103
-Node, domain: 56 - global: 104
-Node, domain: 57 - global: 105
-Node, domain: 58 - global: 106
-Node, domain: 59 - global: 107
-Node, domain: 60 - global: 112
-Node, domain: 61 - global: 113
-Node, domain: 62 - global: 114
-Node, domain: 63 - global: 115
-Node, domain: 64 - global: 116
-Node, domain: 65 - global: 121
-Node, domain: 66 - global: 122
-Node, domain: 67 - global: 123
-Node, domain: 68 - global: 124
-Node, domain: 69 - global: 125
-Node, domain: 70 - global: 130
-Node, domain: 71 - global: 131
-Node, domain: 72 - global: 132
-Node, domain: 73 - global: 133
-Node, domain: 74 - global: 134
-Node, domain: 75 - global: 139
-Node, domain: 76 - global: 140
-Node, domain: 77 - global: 141
-Node, domain: 78 - global: 142
-Node, domain: 79 - global: 143
-Node, domain: 80 - global: 148
-Node, domain: 81 - global: 149
-Node, domain: 82 - global: 150
-Node, domain: 83 - global: 151
-Node, domain: 84 - global: 152
-Node, domain: 85 - global: 157
-Node, domain: 86 - global: 158
-Node, domain: 87 - global: 159
-Node, domain: 88 - global: 160
-Node, domain: 89 - global: 161
-Node, domain: 90 - global: 166
-Node, domain: 91 - global: 167
-Node, domain: 92 - global: 168
-Node, domain: 93 - global: 169
-Node, domain: 94 - global: 170
-Node, domain: 95 - global: 175
-Node, domain: 96 - global: 176
-Node, domain: 97 - global: 177
-Node, domain: 98 - global: 178
-Node, domain: 99 - global: 179
-Node, domain: 100 - global: 184
-Node, domain: 101 - global: 185
-Node, domain: 102 - global: 186
-Node, domain: 103 - global: 187
-Node, domain: 104 - global: 188
-Node, domain: 105 - global: 193
-Node, domain: 106 - global: 194
-Node, domain: 107 - global: 195
-Node, domain: 108 - global: 196
-Node, domain: 109 - global: 197
-Node, domain: 110 - global: 202
-Node, domain: 111 - global: 203
-Node, domain: 112 - global: 204
-Node, domain: 113 - global: 205
-Node, domain: 114 - global: 206
-Node, domain: 115 - global: 211
-Node, domain: 116 - global: 212
-Node, domain: 117 - global: 213
-Node, domain: 118 - global: 214
-Node, domain: 119 - global: 215
-Node, domain: 120 - global: 220
-Node, domain: 121 - global: 221
-Node, domain: 122 - global: 222
-Node, domain: 123 - global: 223
-Node, domain: 124 - global: 224
-Node, domain: 125 - global: 0
-Node, domain: 126 - global: 1
-Node, domain: 127 - global: 3
-Node, domain: 128 - global: 9
-Node, domain: 129 - global: 10
-Node, domain: 130 - global: 12
-Node, domain: 131 - global: 18
-Node, domain: 132 - global: 19
-Node, domain: 133 - global: 21
-Node, domain: 134 - global: 27
-Node, domain: 135 - global: 28
-Node, domain: 136 - global: 30
-Node, domain: 137 - global: 36
-Node, domain: 138 - global: 37
-Node, domain: 139 - global: 39
-Node, domain: 140 - global: 45
-Node, domain: 141 - global: 46
-Node, domain: 142 - global: 48
-Node, domain: 143 - global: 54
-Node, domain: 144 - global: 55
-Node, domain: 145 - global: 57
-Node, domain: 146 - global: 63
-Node, domain: 147 - global: 64
-Node, domain: 148 - global: 66
-Node, domain: 149 - global: 72
-Node, domain: 150 - global: 73
-Node, domain: 151 - global: 75
-Node, domain: 152 - global: 81
-Node, domain: 153 - global: 82
-Node, domain: 154 - global: 84
-Node, domain: 155 - global: 90
-Node, domain: 156 - global: 91
-Node, domain: 157 - global: 93
-Node, domain: 158 - global: 99
-Node, domain: 159 - global: 100
-Node, domain: 160 - global: 102
-Node, domain: 161 - global: 108
-Node, domain: 162 - global: 109
-Node, domain: 163 - global: 111
-Node, domain: 164 - global: 117
-Node, domain: 165 - global: 118
-Node, domain: 166 - global: 120
-Node, domain: 167 - global: 126
-Node, domain: 168 - global: 127
-Node, domain: 169 - global: 129
-Node, domain: 170 - global: 135
-Node, domain: 171 - global: 136
-Node, domain: 172 - global: 138
-Node, domain: 173 - global: 144
-Node, domain: 174 - global: 145
-Node, domain: 175 - global: 147
-Node, domain: 176 - global: 153
-Node, domain: 177 - global: 154
-Node, domain: 178 - global: 156
-Node, domain: 179 - global: 162
-Node, domain: 180 - global: 163
-Node, domain: 181 - global: 165
-Node, domain: 182 - global: 171
-Node, domain: 183 - global: 172
-Node, domain: 184 - global: 174
-Node, domain: 185 - global: 180
-Node, domain: 186 - global: 181
-Node, domain: 187 - global: 183
-Node, domain: 188 - global: 189
-Node, domain: 189 - global: 190
-Node, domain: 190 - global: 192
-Node, domain: 191 - global: 198
-Node, domain: 192 - global: 199
-Node, domain: 193 - global: 201
-Node, domain: 194 - global: 207
-Node, domain: 195 - global: 208
-Node, domain: 196 - global: 210
-Node, domain: 197 - global: 216
-Node, domain: 198 - global: 217
-Node, domain: 199 - global: 219
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 128 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-periodic.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --meshSizeI=9 --isPeriodicI=True" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,527 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061400)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 32
-Element, global: 3 - local: X - shadow: 1 - domain: 33
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 2 - domain: 34
-Element, global: 7 - local: X - shadow: 3 - domain: 35
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: X - shadow: 4 - domain: 36
-Element, global: 11 - local: X - shadow: 5 - domain: 37
-Element, global: 12 - local: 6 - shadow: X - domain: 6
-Element, global: 13 - local: 7 - shadow: X - domain: 7
-Element, global: 14 - local: X - shadow: 6 - domain: 38
-Element, global: 15 - local: X - shadow: 7 - domain: 39
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: X - shadow: 8 - domain: 40
-Element, global: 19 - local: X - shadow: 9 - domain: 41
-Element, global: 20 - local: 10 - shadow: X - domain: 10
-Element, global: 21 - local: 11 - shadow: X - domain: 11
-Element, global: 22 - local: X - shadow: 10 - domain: 42
-Element, global: 23 - local: X - shadow: 11 - domain: 43
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: X - shadow: 12 - domain: 44
-Element, global: 27 - local: X - shadow: 13 - domain: 45
-Element, global: 28 - local: 14 - shadow: X - domain: 14
-Element, global: 29 - local: 15 - shadow: X - domain: 15
-Element, global: 30 - local: X - shadow: 14 - domain: 46
-Element, global: 31 - local: X - shadow: 15 - domain: 47
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: X - shadow: 16 - domain: 48
-Element, global: 35 - local: X - shadow: 17 - domain: 49
-Element, global: 36 - local: 18 - shadow: X - domain: 18
-Element, global: 37 - local: 19 - shadow: X - domain: 19
-Element, global: 38 - local: X - shadow: 18 - domain: 50
-Element, global: 39 - local: X - shadow: 19 - domain: 51
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: X - shadow: 20 - domain: 52
-Element, global: 43 - local: X - shadow: 21 - domain: 53
-Element, global: 44 - local: 22 - shadow: X - domain: 22
-Element, global: 45 - local: 23 - shadow: X - domain: 23
-Element, global: 46 - local: X - shadow: 22 - domain: 54
-Element, global: 47 - local: X - shadow: 23 - domain: 55
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: X - shadow: 24 - domain: 56
-Element, global: 51 - local: X - shadow: 25 - domain: 57
-Element, global: 52 - local: 26 - shadow: X - domain: 26
-Element, global: 53 - local: 27 - shadow: X - domain: 27
-Element, global: 54 - local: X - shadow: 26 - domain: 58
-Element, global: 55 - local: X - shadow: 27 - domain: 59
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: X - shadow: 28 - domain: 60
-Element, global: 59 - local: X - shadow: 29 - domain: 61
-Element, global: 60 - local: 30 - shadow: X - domain: 30
-Element, global: 61 - local: 31 - shadow: X - domain: 31
-Element, global: 62 - local: X - shadow: 30 - domain: 62
-Element, global: 63 - local: X - shadow: 31 - domain: 63
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 12
-Element, local: 7 - global: 13
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 20
-Element, local: 11 - global: 21
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 28
-Element, local: 15 - global: 29
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 36
-Element, local: 19 - global: 37
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 44
-Element, local: 23 - global: 45
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 52
-Element, local: 27 - global: 53
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 60
-Element, local: 31 - global: 61
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 12
-Element, domain: 7 - global: 13
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 20
-Element, domain: 11 - global: 21
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 28
-Element, domain: 15 - global: 29
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 36
-Element, domain: 19 - global: 37
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 44
-Element, domain: 23 - global: 45
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 52
-Element, domain: 27 - global: 53
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 60
-Element, domain: 31 - global: 61
-Element, domain: 32 - global: 2
-Element, domain: 33 - global: 3
-Element, domain: 34 - global: 6
-Element, domain: 35 - global: 7
-Element, domain: 36 - global: 10
-Element, domain: 37 - global: 11
-Element, domain: 38 - global: 14
-Element, domain: 39 - global: 15
-Element, domain: 40 - global: 18
-Element, domain: 41 - global: 19
-Element, domain: 42 - global: 22
-Element, domain: 43 - global: 23
-Element, domain: 44 - global: 26
-Element, domain: 45 - global: 27
-Element, domain: 46 - global: 30
-Element, domain: 47 - global: 31
-Element, domain: 48 - global: 34
-Element, domain: 49 - global: 35
-Element, domain: 50 - global: 38
-Element, domain: 51 - global: 39
-Element, domain: 52 - global: 42
-Element, domain: 53 - global: 43
-Element, domain: 54 - global: 46
-Element, domain: 55 - global: 47
-Element, domain: 56 - global: 50
-Element, domain: 57 - global: 51
-Element, domain: 58 - global: 54
-Element, domain: 59 - global: 55
-Element, domain: 60 - global: 58
-Element, domain: 61 - global: 59
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 75
-Node, global: 4 - local: X - shadow: 1 - domain: 76
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 2 - domain: 77
-Node, global: 9 - local: X - shadow: 3 - domain: 78
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 4 - domain: 79
-Node, global: 14 - local: X - shadow: 5 - domain: 80
-Node, global: 15 - local: 9 - shadow: X - domain: 9
-Node, global: 16 - local: 10 - shadow: X - domain: 10
-Node, global: 17 - local: 11 - shadow: X - domain: 11
-Node, global: 18 - local: X - shadow: 6 - domain: 81
-Node, global: 19 - local: X - shadow: 7 - domain: 82
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 8 - domain: 83
-Node, global: 24 - local: X - shadow: 9 - domain: 84
-Node, global: 25 - local: 15 - shadow: X - domain: 15
-Node, global: 26 - local: 16 - shadow: X - domain: 16
-Node, global: 27 - local: 17 - shadow: X - domain: 17
-Node, global: 28 - local: X - shadow: 10 - domain: 85
-Node, global: 29 - local: X - shadow: 11 - domain: 86
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: 20 - shadow: X - domain: 20
-Node, global: 33 - local: X - shadow: 12 - domain: 87
-Node, global: 34 - local: X - shadow: 13 - domain: 88
-Node, global: 35 - local: 21 - shadow: X - domain: 21
-Node, global: 36 - local: 22 - shadow: X - domain: 22
-Node, global: 37 - local: 23 - shadow: X - domain: 23
-Node, global: 38 - local: X - shadow: 14 - domain: 89
-Node, global: 39 - local: X - shadow: 15 - domain: 90
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: 25 - shadow: X - domain: 25
-Node, global: 42 - local: 26 - shadow: X - domain: 26
-Node, global: 43 - local: X - shadow: 16 - domain: 91
-Node, global: 44 - local: X - shadow: 17 - domain: 92
-Node, global: 45 - local: 27 - shadow: X - domain: 27
-Node, global: 46 - local: 28 - shadow: X - domain: 28
-Node, global: 47 - local: 29 - shadow: X - domain: 29
-Node, global: 48 - local: X - shadow: 18 - domain: 93
-Node, global: 49 - local: X - shadow: 19 - domain: 94
-Node, global: 50 - local: 30 - shadow: X - domain: 30
-Node, global: 51 - local: 31 - shadow: X - domain: 31
-Node, global: 52 - local: 32 - shadow: X - domain: 32
-Node, global: 53 - local: X - shadow: 20 - domain: 95
-Node, global: 54 - local: X - shadow: 21 - domain: 96
-Node, global: 55 - local: 33 - shadow: X - domain: 33
-Node, global: 56 - local: 34 - shadow: X - domain: 34
-Node, global: 57 - local: 35 - shadow: X - domain: 35
-Node, global: 58 - local: X - shadow: 22 - domain: 97
-Node, global: 59 - local: X - shadow: 23 - domain: 98
-Node, global: 60 - local: 36 - shadow: X - domain: 36
-Node, global: 61 - local: 37 - shadow: X - domain: 37
-Node, global: 62 - local: 38 - shadow: X - domain: 38
-Node, global: 63 - local: X - shadow: 24 - domain: 99
-Node, global: 64 - local: X - shadow: 25 - domain: 100
-Node, global: 65 - local: 39 - shadow: X - domain: 39
-Node, global: 66 - local: 40 - shadow: X - domain: 40
-Node, global: 67 - local: 41 - shadow: X - domain: 41
-Node, global: 68 - local: X - shadow: 26 - domain: 101
-Node, global: 69 - local: X - shadow: 27 - domain: 102
-Node, global: 70 - local: 42 - shadow: X - domain: 42
-Node, global: 71 - local: 43 - shadow: X - domain: 43
-Node, global: 72 - local: 44 - shadow: X - domain: 44
-Node, global: 73 - local: X - shadow: 28 - domain: 103
-Node, global: 74 - local: X - shadow: 29 - domain: 104
-Node, global: 75 - local: 45 - shadow: X - domain: 45
-Node, global: 76 - local: 46 - shadow: X - domain: 46
-Node, global: 77 - local: 47 - shadow: X - domain: 47
-Node, global: 78 - local: X - shadow: 30 - domain: 105
-Node, global: 79 - local: X - shadow: 31 - domain: 106
-Node, global: 80 - local: 48 - shadow: X - domain: 48
-Node, global: 81 - local: 49 - shadow: X - domain: 49
-Node, global: 82 - local: 50 - shadow: X - domain: 50
-Node, global: 83 - local: X - shadow: 32 - domain: 107
-Node, global: 84 - local: X - shadow: 33 - domain: 108
-Node, global: 85 - local: 51 - shadow: X - domain: 51
-Node, global: 86 - local: 52 - shadow: X - domain: 52
-Node, global: 87 - local: 53 - shadow: X - domain: 53
-Node, global: 88 - local: X - shadow: 34 - domain: 109
-Node, global: 89 - local: X - shadow: 35 - domain: 110
-Node, global: 90 - local: 54 - shadow: X - domain: 54
-Node, global: 91 - local: 55 - shadow: X - domain: 55
-Node, global: 92 - local: 56 - shadow: X - domain: 56
-Node, global: 93 - local: X - shadow: 36 - domain: 111
-Node, global: 94 - local: X - shadow: 37 - domain: 112
-Node, global: 95 - local: 57 - shadow: X - domain: 57
-Node, global: 96 - local: 58 - shadow: X - domain: 58
-Node, global: 97 - local: 59 - shadow: X - domain: 59
-Node, global: 98 - local: X - shadow: 38 - domain: 113
-Node, global: 99 - local: X - shadow: 39 - domain: 114
-Node, global: 100 - local: 60 - shadow: X - domain: 60
-Node, global: 101 - local: 61 - shadow: X - domain: 61
-Node, global: 102 - local: 62 - shadow: X - domain: 62
-Node, global: 103 - local: X - shadow: 40 - domain: 115
-Node, global: 104 - local: X - shadow: 41 - domain: 116
-Node, global: 105 - local: 63 - shadow: X - domain: 63
-Node, global: 106 - local: 64 - shadow: X - domain: 64
-Node, global: 107 - local: 65 - shadow: X - domain: 65
-Node, global: 108 - local: X - shadow: 42 - domain: 117
-Node, global: 109 - local: X - shadow: 43 - domain: 118
-Node, global: 110 - local: 66 - shadow: X - domain: 66
-Node, global: 111 - local: 67 - shadow: X - domain: 67
-Node, global: 112 - local: 68 - shadow: X - domain: 68
-Node, global: 113 - local: X - shadow: 44 - domain: 119
-Node, global: 114 - local: X - shadow: 45 - domain: 120
-Node, global: 115 - local: 69 - shadow: X - domain: 69
-Node, global: 116 - local: 70 - shadow: X - domain: 70
-Node, global: 117 - local: 71 - shadow: X - domain: 71
-Node, global: 118 - local: X - shadow: 46 - domain: 121
-Node, global: 119 - local: X - shadow: 47 - domain: 122
-Node, global: 120 - local: 72 - shadow: X - domain: 72
-Node, global: 121 - local: 73 - shadow: X - domain: 73
-Node, global: 122 - local: 74 - shadow: X - domain: 74
-Node, global: 123 - local: X - shadow: 48 - domain: 123
-Node, global: 124 - local: X - shadow: 49 - domain: 124
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 15
-Node, local: 10 - global: 16
-Node, local: 11 - global: 17
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 25
-Node, local: 16 - global: 26
-Node, local: 17 - global: 27
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 32
-Node, local: 21 - global: 35
-Node, local: 22 - global: 36
-Node, local: 23 - global: 37
-Node, local: 24 - global: 40
-Node, local: 25 - global: 41
-Node, local: 26 - global: 42
-Node, local: 27 - global: 45
-Node, local: 28 - global: 46
-Node, local: 29 - global: 47
-Node, local: 30 - global: 50
-Node, local: 31 - global: 51
-Node, local: 32 - global: 52
-Node, local: 33 - global: 55
-Node, local: 34 - global: 56
-Node, local: 35 - global: 57
-Node, local: 36 - global: 60
-Node, local: 37 - global: 61
-Node, local: 38 - global: 62
-Node, local: 39 - global: 65
-Node, local: 40 - global: 66
-Node, local: 41 - global: 67
-Node, local: 42 - global: 70
-Node, local: 43 - global: 71
-Node, local: 44 - global: 72
-Node, local: 45 - global: 75
-Node, local: 46 - global: 76
-Node, local: 47 - global: 77
-Node, local: 48 - global: 80
-Node, local: 49 - global: 81
-Node, local: 50 - global: 82
-Node, local: 51 - global: 85
-Node, local: 52 - global: 86
-Node, local: 53 - global: 87
-Node, local: 54 - global: 90
-Node, local: 55 - global: 91
-Node, local: 56 - global: 92
-Node, local: 57 - global: 95
-Node, local: 58 - global: 96
-Node, local: 59 - global: 97
-Node, local: 60 - global: 100
-Node, local: 61 - global: 101
-Node, local: 62 - global: 102
-Node, local: 63 - global: 105
-Node, local: 64 - global: 106
-Node, local: 65 - global: 107
-Node, local: 66 - global: 110
-Node, local: 67 - global: 111
-Node, local: 68 - global: 112
-Node, local: 69 - global: 115
-Node, local: 70 - global: 116
-Node, local: 71 - global: 117
-Node, local: 72 - global: 120
-Node, local: 73 - global: 121
-Node, local: 74 - global: 122
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 15
-Node, domain: 10 - global: 16
-Node, domain: 11 - global: 17
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 25
-Node, domain: 16 - global: 26
-Node, domain: 17 - global: 27
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 32
-Node, domain: 21 - global: 35
-Node, domain: 22 - global: 36
-Node, domain: 23 - global: 37
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 41
-Node, domain: 26 - global: 42
-Node, domain: 27 - global: 45
-Node, domain: 28 - global: 46
-Node, domain: 29 - global: 47
-Node, domain: 30 - global: 50
-Node, domain: 31 - global: 51
-Node, domain: 32 - global: 52
-Node, domain: 33 - global: 55
-Node, domain: 34 - global: 56
-Node, domain: 35 - global: 57
-Node, domain: 36 - global: 60
-Node, domain: 37 - global: 61
-Node, domain: 38 - global: 62
-Node, domain: 39 - global: 65
-Node, domain: 40 - global: 66
-Node, domain: 41 - global: 67
-Node, domain: 42 - global: 70
-Node, domain: 43 - global: 71
-Node, domain: 44 - global: 72
-Node, domain: 45 - global: 75
-Node, domain: 46 - global: 76
-Node, domain: 47 - global: 77
-Node, domain: 48 - global: 80
-Node, domain: 49 - global: 81
-Node, domain: 50 - global: 82
-Node, domain: 51 - global: 85
-Node, domain: 52 - global: 86
-Node, domain: 53 - global: 87
-Node, domain: 54 - global: 90
-Node, domain: 55 - global: 91
-Node, domain: 56 - global: 92
-Node, domain: 57 - global: 95
-Node, domain: 58 - global: 96
-Node, domain: 59 - global: 97
-Node, domain: 60 - global: 100
-Node, domain: 61 - global: 101
-Node, domain: 62 - global: 102
-Node, domain: 63 - global: 105
-Node, domain: 64 - global: 106
-Node, domain: 65 - global: 107
-Node, domain: 66 - global: 110
-Node, domain: 67 - global: 111
-Node, domain: 68 - global: 112
-Node, domain: 69 - global: 115
-Node, domain: 70 - global: 116
-Node, domain: 71 - global: 117
-Node, domain: 72 - global: 120
-Node, domain: 73 - global: 121
-Node, domain: 74 - global: 122
-Node, domain: 75 - global: 3
-Node, domain: 76 - global: 4
-Node, domain: 77 - global: 8
-Node, domain: 78 - global: 9
-Node, domain: 79 - global: 13
-Node, domain: 80 - global: 14
-Node, domain: 81 - global: 18
-Node, domain: 82 - global: 19
-Node, domain: 83 - global: 23
-Node, domain: 84 - global: 24
-Node, domain: 85 - global: 28
-Node, domain: 86 - global: 29
-Node, domain: 87 - global: 33
-Node, domain: 88 - global: 34
-Node, domain: 89 - global: 38
-Node, domain: 90 - global: 39
-Node, domain: 91 - global: 43
-Node, domain: 92 - global: 44
-Node, domain: 93 - global: 48
-Node, domain: 94 - global: 49
-Node, domain: 95 - global: 53
-Node, domain: 96 - global: 54
-Node, domain: 97 - global: 58
-Node, domain: 98 - global: 59
-Node, domain: 99 - global: 63
-Node, domain: 100 - global: 64
-Node, domain: 101 - global: 68
-Node, domain: 102 - global: 69
-Node, domain: 103 - global: 73
-Node, domain: 104 - global: 74
-Node, domain: 105 - global: 78
-Node, domain: 106 - global: 79
-Node, domain: 107 - global: 83
-Node, domain: 108 - global: 84
-Node, domain: 109 - global: 88
-Node, domain: 110 - global: 89
-Node, domain: 111 - global: 93
-Node, domain: 112 - global: 94
-Node, domain: 113 - global: 98
-Node, domain: 114 - global: 99
-Node, domain: 115 - global: 103
-Node, domain: 116 - global: 104
-Node, domain: 117 - global: 108
-Node, domain: 118 - global: 109
-Node, domain: 119 - global: 113
-Node, domain: 120 - global: 114
-Node, domain: 121 - global: 118
-Node, domain: 122 - global: 119
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,527 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (3 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061728)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 32
-Element, global: 3 - local: X - shadow: 1 - domain: 33
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 2 - domain: 34
-Element, global: 7 - local: X - shadow: 3 - domain: 35
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: X - shadow: 4 - domain: 36
-Element, global: 11 - local: X - shadow: 5 - domain: 37
-Element, global: 12 - local: 6 - shadow: X - domain: 6
-Element, global: 13 - local: 7 - shadow: X - domain: 7
-Element, global: 14 - local: X - shadow: 6 - domain: 38
-Element, global: 15 - local: X - shadow: 7 - domain: 39
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: X - shadow: 8 - domain: 40
-Element, global: 19 - local: X - shadow: 9 - domain: 41
-Element, global: 20 - local: 10 - shadow: X - domain: 10
-Element, global: 21 - local: 11 - shadow: X - domain: 11
-Element, global: 22 - local: X - shadow: 10 - domain: 42
-Element, global: 23 - local: X - shadow: 11 - domain: 43
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: X - shadow: 12 - domain: 44
-Element, global: 27 - local: X - shadow: 13 - domain: 45
-Element, global: 28 - local: 14 - shadow: X - domain: 14
-Element, global: 29 - local: 15 - shadow: X - domain: 15
-Element, global: 30 - local: X - shadow: 14 - domain: 46
-Element, global: 31 - local: X - shadow: 15 - domain: 47
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: X - shadow: 16 - domain: 48
-Element, global: 35 - local: X - shadow: 17 - domain: 49
-Element, global: 36 - local: 18 - shadow: X - domain: 18
-Element, global: 37 - local: 19 - shadow: X - domain: 19
-Element, global: 38 - local: X - shadow: 18 - domain: 50
-Element, global: 39 - local: X - shadow: 19 - domain: 51
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: X - shadow: 20 - domain: 52
-Element, global: 43 - local: X - shadow: 21 - domain: 53
-Element, global: 44 - local: 22 - shadow: X - domain: 22
-Element, global: 45 - local: 23 - shadow: X - domain: 23
-Element, global: 46 - local: X - shadow: 22 - domain: 54
-Element, global: 47 - local: X - shadow: 23 - domain: 55
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: X - shadow: 24 - domain: 56
-Element, global: 51 - local: X - shadow: 25 - domain: 57
-Element, global: 52 - local: 26 - shadow: X - domain: 26
-Element, global: 53 - local: 27 - shadow: X - domain: 27
-Element, global: 54 - local: X - shadow: 26 - domain: 58
-Element, global: 55 - local: X - shadow: 27 - domain: 59
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: X - shadow: 28 - domain: 60
-Element, global: 59 - local: X - shadow: 29 - domain: 61
-Element, global: 60 - local: 30 - shadow: X - domain: 30
-Element, global: 61 - local: 31 - shadow: X - domain: 31
-Element, global: 62 - local: X - shadow: 30 - domain: 62
-Element, global: 63 - local: X - shadow: 31 - domain: 63
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 12
-Element, local: 7 - global: 13
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 20
-Element, local: 11 - global: 21
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 28
-Element, local: 15 - global: 29
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 36
-Element, local: 19 - global: 37
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 44
-Element, local: 23 - global: 45
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 52
-Element, local: 27 - global: 53
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 60
-Element, local: 31 - global: 61
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 12
-Element, domain: 7 - global: 13
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 20
-Element, domain: 11 - global: 21
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 28
-Element, domain: 15 - global: 29
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 36
-Element, domain: 19 - global: 37
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 44
-Element, domain: 23 - global: 45
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 52
-Element, domain: 27 - global: 53
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 60
-Element, domain: 31 - global: 61
-Element, domain: 32 - global: 2
-Element, domain: 33 - global: 3
-Element, domain: 34 - global: 6
-Element, domain: 35 - global: 7
-Element, domain: 36 - global: 10
-Element, domain: 37 - global: 11
-Element, domain: 38 - global: 14
-Element, domain: 39 - global: 15
-Element, domain: 40 - global: 18
-Element, domain: 41 - global: 19
-Element, domain: 42 - global: 22
-Element, domain: 43 - global: 23
-Element, domain: 44 - global: 26
-Element, domain: 45 - global: 27
-Element, domain: 46 - global: 30
-Element, domain: 47 - global: 31
-Element, domain: 48 - global: 34
-Element, domain: 49 - global: 35
-Element, domain: 50 - global: 38
-Element, domain: 51 - global: 39
-Element, domain: 52 - global: 42
-Element, domain: 53 - global: 43
-Element, domain: 54 - global: 46
-Element, domain: 55 - global: 47
-Element, domain: 56 - global: 50
-Element, domain: 57 - global: 51
-Element, domain: 58 - global: 54
-Element, domain: 59 - global: 55
-Element, domain: 60 - global: 58
-Element, domain: 61 - global: 59
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 75
-Node, global: 4 - local: X - shadow: 1 - domain: 76
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 2 - domain: 77
-Node, global: 9 - local: X - shadow: 3 - domain: 78
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 4 - domain: 79
-Node, global: 14 - local: X - shadow: 5 - domain: 80
-Node, global: 15 - local: 9 - shadow: X - domain: 9
-Node, global: 16 - local: 10 - shadow: X - domain: 10
-Node, global: 17 - local: 11 - shadow: X - domain: 11
-Node, global: 18 - local: X - shadow: 6 - domain: 81
-Node, global: 19 - local: X - shadow: 7 - domain: 82
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 8 - domain: 83
-Node, global: 24 - local: X - shadow: 9 - domain: 84
-Node, global: 25 - local: 15 - shadow: X - domain: 15
-Node, global: 26 - local: 16 - shadow: X - domain: 16
-Node, global: 27 - local: 17 - shadow: X - domain: 17
-Node, global: 28 - local: X - shadow: 10 - domain: 85
-Node, global: 29 - local: X - shadow: 11 - domain: 86
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: 20 - shadow: X - domain: 20
-Node, global: 33 - local: X - shadow: 12 - domain: 87
-Node, global: 34 - local: X - shadow: 13 - domain: 88
-Node, global: 35 - local: 21 - shadow: X - domain: 21
-Node, global: 36 - local: 22 - shadow: X - domain: 22
-Node, global: 37 - local: 23 - shadow: X - domain: 23
-Node, global: 38 - local: X - shadow: 14 - domain: 89
-Node, global: 39 - local: X - shadow: 15 - domain: 90
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: 25 - shadow: X - domain: 25
-Node, global: 42 - local: 26 - shadow: X - domain: 26
-Node, global: 43 - local: X - shadow: 16 - domain: 91
-Node, global: 44 - local: X - shadow: 17 - domain: 92
-Node, global: 45 - local: 27 - shadow: X - domain: 27
-Node, global: 46 - local: 28 - shadow: X - domain: 28
-Node, global: 47 - local: 29 - shadow: X - domain: 29
-Node, global: 48 - local: X - shadow: 18 - domain: 93
-Node, global: 49 - local: X - shadow: 19 - domain: 94
-Node, global: 50 - local: 30 - shadow: X - domain: 30
-Node, global: 51 - local: 31 - shadow: X - domain: 31
-Node, global: 52 - local: 32 - shadow: X - domain: 32
-Node, global: 53 - local: X - shadow: 20 - domain: 95
-Node, global: 54 - local: X - shadow: 21 - domain: 96
-Node, global: 55 - local: 33 - shadow: X - domain: 33
-Node, global: 56 - local: 34 - shadow: X - domain: 34
-Node, global: 57 - local: 35 - shadow: X - domain: 35
-Node, global: 58 - local: X - shadow: 22 - domain: 97
-Node, global: 59 - local: X - shadow: 23 - domain: 98
-Node, global: 60 - local: 36 - shadow: X - domain: 36
-Node, global: 61 - local: 37 - shadow: X - domain: 37
-Node, global: 62 - local: 38 - shadow: X - domain: 38
-Node, global: 63 - local: X - shadow: 24 - domain: 99
-Node, global: 64 - local: X - shadow: 25 - domain: 100
-Node, global: 65 - local: 39 - shadow: X - domain: 39
-Node, global: 66 - local: 40 - shadow: X - domain: 40
-Node, global: 67 - local: 41 - shadow: X - domain: 41
-Node, global: 68 - local: X - shadow: 26 - domain: 101
-Node, global: 69 - local: X - shadow: 27 - domain: 102
-Node, global: 70 - local: 42 - shadow: X - domain: 42
-Node, global: 71 - local: 43 - shadow: X - domain: 43
-Node, global: 72 - local: 44 - shadow: X - domain: 44
-Node, global: 73 - local: X - shadow: 28 - domain: 103
-Node, global: 74 - local: X - shadow: 29 - domain: 104
-Node, global: 75 - local: 45 - shadow: X - domain: 45
-Node, global: 76 - local: 46 - shadow: X - domain: 46
-Node, global: 77 - local: 47 - shadow: X - domain: 47
-Node, global: 78 - local: X - shadow: 30 - domain: 105
-Node, global: 79 - local: X - shadow: 31 - domain: 106
-Node, global: 80 - local: 48 - shadow: X - domain: 48
-Node, global: 81 - local: 49 - shadow: X - domain: 49
-Node, global: 82 - local: 50 - shadow: X - domain: 50
-Node, global: 83 - local: X - shadow: 32 - domain: 107
-Node, global: 84 - local: X - shadow: 33 - domain: 108
-Node, global: 85 - local: 51 - shadow: X - domain: 51
-Node, global: 86 - local: 52 - shadow: X - domain: 52
-Node, global: 87 - local: 53 - shadow: X - domain: 53
-Node, global: 88 - local: X - shadow: 34 - domain: 109
-Node, global: 89 - local: X - shadow: 35 - domain: 110
-Node, global: 90 - local: 54 - shadow: X - domain: 54
-Node, global: 91 - local: 55 - shadow: X - domain: 55
-Node, global: 92 - local: 56 - shadow: X - domain: 56
-Node, global: 93 - local: X - shadow: 36 - domain: 111
-Node, global: 94 - local: X - shadow: 37 - domain: 112
-Node, global: 95 - local: 57 - shadow: X - domain: 57
-Node, global: 96 - local: 58 - shadow: X - domain: 58
-Node, global: 97 - local: 59 - shadow: X - domain: 59
-Node, global: 98 - local: X - shadow: 38 - domain: 113
-Node, global: 99 - local: X - shadow: 39 - domain: 114
-Node, global: 100 - local: 60 - shadow: X - domain: 60
-Node, global: 101 - local: 61 - shadow: X - domain: 61
-Node, global: 102 - local: 62 - shadow: X - domain: 62
-Node, global: 103 - local: X - shadow: 40 - domain: 115
-Node, global: 104 - local: X - shadow: 41 - domain: 116
-Node, global: 105 - local: 63 - shadow: X - domain: 63
-Node, global: 106 - local: 64 - shadow: X - domain: 64
-Node, global: 107 - local: 65 - shadow: X - domain: 65
-Node, global: 108 - local: X - shadow: 42 - domain: 117
-Node, global: 109 - local: X - shadow: 43 - domain: 118
-Node, global: 110 - local: 66 - shadow: X - domain: 66
-Node, global: 111 - local: 67 - shadow: X - domain: 67
-Node, global: 112 - local: 68 - shadow: X - domain: 68
-Node, global: 113 - local: X - shadow: 44 - domain: 119
-Node, global: 114 - local: X - shadow: 45 - domain: 120
-Node, global: 115 - local: 69 - shadow: X - domain: 69
-Node, global: 116 - local: 70 - shadow: X - domain: 70
-Node, global: 117 - local: 71 - shadow: X - domain: 71
-Node, global: 118 - local: X - shadow: 46 - domain: 121
-Node, global: 119 - local: X - shadow: 47 - domain: 122
-Node, global: 120 - local: 72 - shadow: X - domain: 72
-Node, global: 121 - local: 73 - shadow: X - domain: 73
-Node, global: 122 - local: 74 - shadow: X - domain: 74
-Node, global: 123 - local: X - shadow: 48 - domain: 123
-Node, global: 124 - local: X - shadow: 49 - domain: 124
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 15
-Node, local: 10 - global: 16
-Node, local: 11 - global: 17
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 25
-Node, local: 16 - global: 26
-Node, local: 17 - global: 27
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 32
-Node, local: 21 - global: 35
-Node, local: 22 - global: 36
-Node, local: 23 - global: 37
-Node, local: 24 - global: 40
-Node, local: 25 - global: 41
-Node, local: 26 - global: 42
-Node, local: 27 - global: 45
-Node, local: 28 - global: 46
-Node, local: 29 - global: 47
-Node, local: 30 - global: 50
-Node, local: 31 - global: 51
-Node, local: 32 - global: 52
-Node, local: 33 - global: 55
-Node, local: 34 - global: 56
-Node, local: 35 - global: 57
-Node, local: 36 - global: 60
-Node, local: 37 - global: 61
-Node, local: 38 - global: 62
-Node, local: 39 - global: 65
-Node, local: 40 - global: 66
-Node, local: 41 - global: 67
-Node, local: 42 - global: 70
-Node, local: 43 - global: 71
-Node, local: 44 - global: 72
-Node, local: 45 - global: 75
-Node, local: 46 - global: 76
-Node, local: 47 - global: 77
-Node, local: 48 - global: 80
-Node, local: 49 - global: 81
-Node, local: 50 - global: 82
-Node, local: 51 - global: 85
-Node, local: 52 - global: 86
-Node, local: 53 - global: 87
-Node, local: 54 - global: 90
-Node, local: 55 - global: 91
-Node, local: 56 - global: 92
-Node, local: 57 - global: 95
-Node, local: 58 - global: 96
-Node, local: 59 - global: 97
-Node, local: 60 - global: 100
-Node, local: 61 - global: 101
-Node, local: 62 - global: 102
-Node, local: 63 - global: 105
-Node, local: 64 - global: 106
-Node, local: 65 - global: 107
-Node, local: 66 - global: 110
-Node, local: 67 - global: 111
-Node, local: 68 - global: 112
-Node, local: 69 - global: 115
-Node, local: 70 - global: 116
-Node, local: 71 - global: 117
-Node, local: 72 - global: 120
-Node, local: 73 - global: 121
-Node, local: 74 - global: 122
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 15
-Node, domain: 10 - global: 16
-Node, domain: 11 - global: 17
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 25
-Node, domain: 16 - global: 26
-Node, domain: 17 - global: 27
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 32
-Node, domain: 21 - global: 35
-Node, domain: 22 - global: 36
-Node, domain: 23 - global: 37
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 41
-Node, domain: 26 - global: 42
-Node, domain: 27 - global: 45
-Node, domain: 28 - global: 46
-Node, domain: 29 - global: 47
-Node, domain: 30 - global: 50
-Node, domain: 31 - global: 51
-Node, domain: 32 - global: 52
-Node, domain: 33 - global: 55
-Node, domain: 34 - global: 56
-Node, domain: 35 - global: 57
-Node, domain: 36 - global: 60
-Node, domain: 37 - global: 61
-Node, domain: 38 - global: 62
-Node, domain: 39 - global: 65
-Node, domain: 40 - global: 66
-Node, domain: 41 - global: 67
-Node, domain: 42 - global: 70
-Node, domain: 43 - global: 71
-Node, domain: 44 - global: 72
-Node, domain: 45 - global: 75
-Node, domain: 46 - global: 76
-Node, domain: 47 - global: 77
-Node, domain: 48 - global: 80
-Node, domain: 49 - global: 81
-Node, domain: 50 - global: 82
-Node, domain: 51 - global: 85
-Node, domain: 52 - global: 86
-Node, domain: 53 - global: 87
-Node, domain: 54 - global: 90
-Node, domain: 55 - global: 91
-Node, domain: 56 - global: 92
-Node, domain: 57 - global: 95
-Node, domain: 58 - global: 96
-Node, domain: 59 - global: 97
-Node, domain: 60 - global: 100
-Node, domain: 61 - global: 101
-Node, domain: 62 - global: 102
-Node, domain: 63 - global: 105
-Node, domain: 64 - global: 106
-Node, domain: 65 - global: 107
-Node, domain: 66 - global: 110
-Node, domain: 67 - global: 111
-Node, domain: 68 - global: 112
-Node, domain: 69 - global: 115
-Node, domain: 70 - global: 116
-Node, domain: 71 - global: 117
-Node, domain: 72 - global: 120
-Node, domain: 73 - global: 121
-Node, domain: 74 - global: 122
-Node, domain: 75 - global: 3
-Node, domain: 76 - global: 4
-Node, domain: 77 - global: 8
-Node, domain: 78 - global: 9
-Node, domain: 79 - global: 13
-Node, domain: 80 - global: 14
-Node, domain: 81 - global: 18
-Node, domain: 82 - global: 19
-Node, domain: 83 - global: 23
-Node, domain: 84 - global: 24
-Node, domain: 85 - global: 28
-Node, domain: 86 - global: 29
-Node, domain: 87 - global: 33
-Node, domain: 88 - global: 34
-Node, domain: 89 - global: 38
-Node, domain: 90 - global: 39
-Node, domain: 91 - global: 43
-Node, domain: 92 - global: 44
-Node, domain: 93 - global: 48
-Node, domain: 94 - global: 49
-Node, domain: 95 - global: 53
-Node, domain: 96 - global: 54
-Node, domain: 97 - global: 58
-Node, domain: 98 - global: 59
-Node, domain: 99 - global: 63
-Node, domain: 100 - global: 64
-Node, domain: 101 - global: 68
-Node, domain: 102 - global: 69
-Node, domain: 103 - global: 73
-Node, domain: 104 - global: 74
-Node, domain: 105 - global: 78
-Node, domain: 106 - global: 79
-Node, domain: 107 - global: 83
-Node, domain: 108 - global: 84
-Node, domain: 109 - global: 88
-Node, domain: 110 - global: 89
-Node, domain: 111 - global: 93
-Node, domain: 112 - global: 94
-Node, domain: 113 - global: 98
-Node, domain: 114 - global: 99
-Node, domain: 115 - global: 103
-Node, domain: 116 - global: 104
-Node, domain: 117 - global: 108
-Node, domain: 118 - global: 109
-Node, domain: 119 - global: 113
-Node, domain: 120 - global: 114
-Node, domain: 121 - global: 118
-Node, domain: 122 - global: 119
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,527 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x80606d0)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 32
-Element, global: 1 - local: X - shadow: 1 - domain: 33
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: 2 - domain: 34
-Element, global: 5 - local: X - shadow: 3 - domain: 35
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: 4 - domain: 36
-Element, global: 9 - local: X - shadow: 5 - domain: 37
-Element, global: 10 - local: 4 - shadow: X - domain: 4
-Element, global: 11 - local: 5 - shadow: X - domain: 5
-Element, global: 12 - local: X - shadow: 6 - domain: 38
-Element, global: 13 - local: X - shadow: 7 - domain: 39
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: 8 - domain: 40
-Element, global: 17 - local: X - shadow: 9 - domain: 41
-Element, global: 18 - local: 8 - shadow: X - domain: 8
-Element, global: 19 - local: 9 - shadow: X - domain: 9
-Element, global: 20 - local: X - shadow: 10 - domain: 42
-Element, global: 21 - local: X - shadow: 11 - domain: 43
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: 12 - domain: 44
-Element, global: 25 - local: X - shadow: 13 - domain: 45
-Element, global: 26 - local: 12 - shadow: X - domain: 12
-Element, global: 27 - local: 13 - shadow: X - domain: 13
-Element, global: 28 - local: X - shadow: 14 - domain: 46
-Element, global: 29 - local: X - shadow: 15 - domain: 47
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: 16 - domain: 48
-Element, global: 33 - local: X - shadow: 17 - domain: 49
-Element, global: 34 - local: 16 - shadow: X - domain: 16
-Element, global: 35 - local: 17 - shadow: X - domain: 17
-Element, global: 36 - local: X - shadow: 18 - domain: 50
-Element, global: 37 - local: X - shadow: 19 - domain: 51
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: 20 - domain: 52
-Element, global: 41 - local: X - shadow: 21 - domain: 53
-Element, global: 42 - local: 20 - shadow: X - domain: 20
-Element, global: 43 - local: 21 - shadow: X - domain: 21
-Element, global: 44 - local: X - shadow: 22 - domain: 54
-Element, global: 45 - local: X - shadow: 23 - domain: 55
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: 24 - domain: 56
-Element, global: 49 - local: X - shadow: 25 - domain: 57
-Element, global: 50 - local: 24 - shadow: X - domain: 24
-Element, global: 51 - local: 25 - shadow: X - domain: 25
-Element, global: 52 - local: X - shadow: 26 - domain: 58
-Element, global: 53 - local: X - shadow: 27 - domain: 59
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: 28 - domain: 60
-Element, global: 57 - local: X - shadow: 29 - domain: 61
-Element, global: 58 - local: 28 - shadow: X - domain: 28
-Element, global: 59 - local: 29 - shadow: X - domain: 29
-Element, global: 60 - local: X - shadow: 30 - domain: 62
-Element, global: 61 - local: X - shadow: 31 - domain: 63
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 10
-Element, local: 5 - global: 11
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 18
-Element, local: 9 - global: 19
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 26
-Element, local: 13 - global: 27
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 34
-Element, local: 17 - global: 35
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 42
-Element, local: 21 - global: 43
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 50
-Element, local: 25 - global: 51
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 58
-Element, local: 29 - global: 59
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 10
-Element, domain: 5 - global: 11
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 18
-Element, domain: 9 - global: 19
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 26
-Element, domain: 13 - global: 27
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 34
-Element, domain: 17 - global: 35
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 42
-Element, domain: 21 - global: 43
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 50
-Element, domain: 25 - global: 51
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 58
-Element, domain: 29 - global: 59
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 0
-Element, domain: 33 - global: 1
-Element, domain: 34 - global: 4
-Element, domain: 35 - global: 5
-Element, domain: 36 - global: 8
-Element, domain: 37 - global: 9
-Element, domain: 38 - global: 12
-Element, domain: 39 - global: 13
-Element, domain: 40 - global: 16
-Element, domain: 41 - global: 17
-Element, domain: 42 - global: 20
-Element, domain: 43 - global: 21
-Element, domain: 44 - global: 24
-Element, domain: 45 - global: 25
-Element, domain: 46 - global: 28
-Element, domain: 47 - global: 29
-Element, domain: 48 - global: 32
-Element, domain: 49 - global: 33
-Element, domain: 50 - global: 36
-Element, domain: 51 - global: 37
-Element, domain: 52 - global: 40
-Element, domain: 53 - global: 41
-Element, domain: 54 - global: 44
-Element, domain: 55 - global: 45
-Element, domain: 56 - global: 48
-Element, domain: 57 - global: 49
-Element, domain: 58 - global: 52
-Element, domain: 59 - global: 53
-Element, domain: 60 - global: 56
-Element, domain: 61 - global: 57
-Element, domain: 62 - global: 60
-Element, domain: 63 - global: 61
-
-Node, global: 0 - local: X - shadow: 0 - domain: 75
-Node, global: 1 - local: X - shadow: 1 - domain: 76
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: 2 - domain: 77
-Node, global: 6 - local: X - shadow: 3 - domain: 78
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: 4 - domain: 79
-Node, global: 11 - local: X - shadow: 5 - domain: 80
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: 6 - domain: 81
-Node, global: 16 - local: X - shadow: 7 - domain: 82
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: X - shadow: 8 - domain: 83
-Node, global: 21 - local: X - shadow: 9 - domain: 84
-Node, global: 22 - local: 12 - shadow: X - domain: 12
-Node, global: 23 - local: 13 - shadow: X - domain: 13
-Node, global: 24 - local: 14 - shadow: X - domain: 14
-Node, global: 25 - local: X - shadow: 10 - domain: 85
-Node, global: 26 - local: X - shadow: 11 - domain: 86
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: X - shadow: 12 - domain: 87
-Node, global: 31 - local: X - shadow: 13 - domain: 88
-Node, global: 32 - local: 18 - shadow: X - domain: 18
-Node, global: 33 - local: 19 - shadow: X - domain: 19
-Node, global: 34 - local: 20 - shadow: X - domain: 20
-Node, global: 35 - local: X - shadow: 14 - domain: 89
-Node, global: 36 - local: X - shadow: 15 - domain: 90
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: X - shadow: 16 - domain: 91
-Node, global: 41 - local: X - shadow: 17 - domain: 92
-Node, global: 42 - local: 24 - shadow: X - domain: 24
-Node, global: 43 - local: 25 - shadow: X - domain: 25
-Node, global: 44 - local: 26 - shadow: X - domain: 26
-Node, global: 45 - local: X - shadow: 18 - domain: 93
-Node, global: 46 - local: X - shadow: 19 - domain: 94
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: 20 - domain: 95
-Node, global: 51 - local: X - shadow: 21 - domain: 96
-Node, global: 52 - local: 30 - shadow: X - domain: 30
-Node, global: 53 - local: 31 - shadow: X - domain: 31
-Node, global: 54 - local: 32 - shadow: X - domain: 32
-Node, global: 55 - local: X - shadow: 22 - domain: 97
-Node, global: 56 - local: X - shadow: 23 - domain: 98
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: 35 - shadow: X - domain: 35
-Node, global: 60 - local: X - shadow: 24 - domain: 99
-Node, global: 61 - local: X - shadow: 25 - domain: 100
-Node, global: 62 - local: 36 - shadow: X - domain: 36
-Node, global: 63 - local: 37 - shadow: X - domain: 37
-Node, global: 64 - local: 38 - shadow: X - domain: 38
-Node, global: 65 - local: X - shadow: 26 - domain: 101
-Node, global: 66 - local: X - shadow: 27 - domain: 102
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: 40 - shadow: X - domain: 40
-Node, global: 69 - local: 41 - shadow: X - domain: 41
-Node, global: 70 - local: X - shadow: 28 - domain: 103
-Node, global: 71 - local: X - shadow: 29 - domain: 104
-Node, global: 72 - local: 42 - shadow: X - domain: 42
-Node, global: 73 - local: 43 - shadow: X - domain: 43
-Node, global: 74 - local: 44 - shadow: X - domain: 44
-Node, global: 75 - local: X - shadow: 30 - domain: 105
-Node, global: 76 - local: X - shadow: 31 - domain: 106
-Node, global: 77 - local: 45 - shadow: X - domain: 45
-Node, global: 78 - local: 46 - shadow: X - domain: 46
-Node, global: 79 - local: 47 - shadow: X - domain: 47
-Node, global: 80 - local: X - shadow: 32 - domain: 107
-Node, global: 81 - local: X - shadow: 33 - domain: 108
-Node, global: 82 - local: 48 - shadow: X - domain: 48
-Node, global: 83 - local: 49 - shadow: X - domain: 49
-Node, global: 84 - local: 50 - shadow: X - domain: 50
-Node, global: 85 - local: X - shadow: 34 - domain: 109
-Node, global: 86 - local: X - shadow: 35 - domain: 110
-Node, global: 87 - local: 51 - shadow: X - domain: 51
-Node, global: 88 - local: 52 - shadow: X - domain: 52
-Node, global: 89 - local: 53 - shadow: X - domain: 53
-Node, global: 90 - local: X - shadow: 36 - domain: 111
-Node, global: 91 - local: X - shadow: 37 - domain: 112
-Node, global: 92 - local: 54 - shadow: X - domain: 54
-Node, global: 93 - local: 55 - shadow: X - domain: 55
-Node, global: 94 - local: 56 - shadow: X - domain: 56
-Node, global: 95 - local: X - shadow: 38 - domain: 113
-Node, global: 96 - local: X - shadow: 39 - domain: 114
-Node, global: 97 - local: 57 - shadow: X - domain: 57
-Node, global: 98 - local: 58 - shadow: X - domain: 58
-Node, global: 99 - local: 59 - shadow: X - domain: 59
-Node, global: 100 - local: X - shadow: 40 - domain: 115
-Node, global: 101 - local: X - shadow: 41 - domain: 116
-Node, global: 102 - local: 60 - shadow: X - domain: 60
-Node, global: 103 - local: 61 - shadow: X - domain: 61
-Node, global: 104 - local: 62 - shadow: X - domain: 62
-Node, global: 105 - local: X - shadow: 42 - domain: 117
-Node, global: 106 - local: X - shadow: 43 - domain: 118
-Node, global: 107 - local: 63 - shadow: X - domain: 63
-Node, global: 108 - local: 64 - shadow: X - domain: 64
-Node, global: 109 - local: 65 - shadow: X - domain: 65
-Node, global: 110 - local: X - shadow: 44 - domain: 119
-Node, global: 111 - local: X - shadow: 45 - domain: 120
-Node, global: 112 - local: 66 - shadow: X - domain: 66
-Node, global: 113 - local: 67 - shadow: X - domain: 67
-Node, global: 114 - local: 68 - shadow: X - domain: 68
-Node, global: 115 - local: X - shadow: 46 - domain: 121
-Node, global: 116 - local: X - shadow: 47 - domain: 122
-Node, global: 117 - local: 69 - shadow: X - domain: 69
-Node, global: 118 - local: 70 - shadow: X - domain: 70
-Node, global: 119 - local: 71 - shadow: X - domain: 71
-Node, global: 120 - local: X - shadow: 48 - domain: 123
-Node, global: 121 - local: X - shadow: 49 - domain: 124
-Node, global: 122 - local: 72 - shadow: X - domain: 72
-Node, global: 123 - local: 73 - shadow: X - domain: 73
-Node, global: 124 - local: 74 - shadow: X - domain: 74
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 17
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 22
-Node, local: 13 - global: 23
-Node, local: 14 - global: 24
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 32
-Node, local: 19 - global: 33
-Node, local: 20 - global: 34
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 42
-Node, local: 25 - global: 43
-Node, local: 26 - global: 44
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 52
-Node, local: 31 - global: 53
-Node, local: 32 - global: 54
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 59
-Node, local: 36 - global: 62
-Node, local: 37 - global: 63
-Node, local: 38 - global: 64
-Node, local: 39 - global: 67
-Node, local: 40 - global: 68
-Node, local: 41 - global: 69
-Node, local: 42 - global: 72
-Node, local: 43 - global: 73
-Node, local: 44 - global: 74
-Node, local: 45 - global: 77
-Node, local: 46 - global: 78
-Node, local: 47 - global: 79
-Node, local: 48 - global: 82
-Node, local: 49 - global: 83
-Node, local: 50 - global: 84
-Node, local: 51 - global: 87
-Node, local: 52 - global: 88
-Node, local: 53 - global: 89
-Node, local: 54 - global: 92
-Node, local: 55 - global: 93
-Node, local: 56 - global: 94
-Node, local: 57 - global: 97
-Node, local: 58 - global: 98
-Node, local: 59 - global: 99
-Node, local: 60 - global: 102
-Node, local: 61 - global: 103
-Node, local: 62 - global: 104
-Node, local: 63 - global: 107
-Node, local: 64 - global: 108
-Node, local: 65 - global: 109
-Node, local: 66 - global: 112
-Node, local: 67 - global: 113
-Node, local: 68 - global: 114
-Node, local: 69 - global: 117
-Node, local: 70 - global: 118
-Node, local: 71 - global: 119
-Node, local: 72 - global: 122
-Node, local: 73 - global: 123
-Node, local: 74 - global: 124
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 22
-Node, domain: 13 - global: 23
-Node, domain: 14 - global: 24
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 32
-Node, domain: 19 - global: 33
-Node, domain: 20 - global: 34
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 42
-Node, domain: 25 - global: 43
-Node, domain: 26 - global: 44
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 52
-Node, domain: 31 - global: 53
-Node, domain: 32 - global: 54
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 59
-Node, domain: 36 - global: 62
-Node, domain: 37 - global: 63
-Node, domain: 38 - global: 64
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 68
-Node, domain: 41 - global: 69
-Node, domain: 42 - global: 72
-Node, domain: 43 - global: 73
-Node, domain: 44 - global: 74
-Node, domain: 45 - global: 77
-Node, domain: 46 - global: 78
-Node, domain: 47 - global: 79
-Node, domain: 48 - global: 82
-Node, domain: 49 - global: 83
-Node, domain: 50 - global: 84
-Node, domain: 51 - global: 87
-Node, domain: 52 - global: 88
-Node, domain: 53 - global: 89
-Node, domain: 54 - global: 92
-Node, domain: 55 - global: 93
-Node, domain: 56 - global: 94
-Node, domain: 57 - global: 97
-Node, domain: 58 - global: 98
-Node, domain: 59 - global: 99
-Node, domain: 60 - global: 102
-Node, domain: 61 - global: 103
-Node, domain: 62 - global: 104
-Node, domain: 63 - global: 107
-Node, domain: 64 - global: 108
-Node, domain: 65 - global: 109
-Node, domain: 66 - global: 112
-Node, domain: 67 - global: 113
-Node, domain: 68 - global: 114
-Node, domain: 69 - global: 117
-Node, domain: 70 - global: 118
-Node, domain: 71 - global: 119
-Node, domain: 72 - global: 122
-Node, domain: 73 - global: 123
-Node, domain: 74 - global: 124
-Node, domain: 75 - global: 0
-Node, domain: 76 - global: 1
-Node, domain: 77 - global: 5
-Node, domain: 78 - global: 6
-Node, domain: 79 - global: 10
-Node, domain: 80 - global: 11
-Node, domain: 81 - global: 15
-Node, domain: 82 - global: 16
-Node, domain: 83 - global: 20
-Node, domain: 84 - global: 21
-Node, domain: 85 - global: 25
-Node, domain: 86 - global: 26
-Node, domain: 87 - global: 30
-Node, domain: 88 - global: 31
-Node, domain: 89 - global: 35
-Node, domain: 90 - global: 36
-Node, domain: 91 - global: 40
-Node, domain: 92 - global: 41
-Node, domain: 93 - global: 45
-Node, domain: 94 - global: 46
-Node, domain: 95 - global: 50
-Node, domain: 96 - global: 51
-Node, domain: 97 - global: 55
-Node, domain: 98 - global: 56
-Node, domain: 99 - global: 60
-Node, domain: 100 - global: 61
-Node, domain: 101 - global: 65
-Node, domain: 102 - global: 66
-Node, domain: 103 - global: 70
-Node, domain: 104 - global: 71
-Node, domain: 105 - global: 75
-Node, domain: 106 - global: 76
-Node, domain: 107 - global: 80
-Node, domain: 108 - global: 81
-Node, domain: 109 - global: 85
-Node, domain: 110 - global: 86
-Node, domain: 111 - global: 90
-Node, domain: 112 - global: 91
-Node, domain: 113 - global: 95
-Node, domain: 114 - global: 96
-Node, domain: 115 - global: 100
-Node, domain: 116 - global: 101
-Node, domain: 117 - global: 105
-Node, domain: 118 - global: 106
-Node, domain: 119 - global: 110
-Node, domain: 120 - global: 111
-Node, domain: 121 - global: 115
-Node, domain: 122 - global: 116
-Node, domain: 123 - global: 120
-Node, domain: 124 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,527 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (3 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060b20)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: X - shadow: 0 - domain: 32
-Element, global: 1 - local: X - shadow: 1 - domain: 33
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: 2 - domain: 34
-Element, global: 5 - local: X - shadow: 3 - domain: 35
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: 4 - domain: 36
-Element, global: 9 - local: X - shadow: 5 - domain: 37
-Element, global: 10 - local: 4 - shadow: X - domain: 4
-Element, global: 11 - local: 5 - shadow: X - domain: 5
-Element, global: 12 - local: X - shadow: 6 - domain: 38
-Element, global: 13 - local: X - shadow: 7 - domain: 39
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: 8 - domain: 40
-Element, global: 17 - local: X - shadow: 9 - domain: 41
-Element, global: 18 - local: 8 - shadow: X - domain: 8
-Element, global: 19 - local: 9 - shadow: X - domain: 9
-Element, global: 20 - local: X - shadow: 10 - domain: 42
-Element, global: 21 - local: X - shadow: 11 - domain: 43
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: 12 - domain: 44
-Element, global: 25 - local: X - shadow: 13 - domain: 45
-Element, global: 26 - local: 12 - shadow: X - domain: 12
-Element, global: 27 - local: 13 - shadow: X - domain: 13
-Element, global: 28 - local: X - shadow: 14 - domain: 46
-Element, global: 29 - local: X - shadow: 15 - domain: 47
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: 16 - domain: 48
-Element, global: 33 - local: X - shadow: 17 - domain: 49
-Element, global: 34 - local: 16 - shadow: X - domain: 16
-Element, global: 35 - local: 17 - shadow: X - domain: 17
-Element, global: 36 - local: X - shadow: 18 - domain: 50
-Element, global: 37 - local: X - shadow: 19 - domain: 51
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: 20 - domain: 52
-Element, global: 41 - local: X - shadow: 21 - domain: 53
-Element, global: 42 - local: 20 - shadow: X - domain: 20
-Element, global: 43 - local: 21 - shadow: X - domain: 21
-Element, global: 44 - local: X - shadow: 22 - domain: 54
-Element, global: 45 - local: X - shadow: 23 - domain: 55
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: 24 - domain: 56
-Element, global: 49 - local: X - shadow: 25 - domain: 57
-Element, global: 50 - local: 24 - shadow: X - domain: 24
-Element, global: 51 - local: 25 - shadow: X - domain: 25
-Element, global: 52 - local: X - shadow: 26 - domain: 58
-Element, global: 53 - local: X - shadow: 27 - domain: 59
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: 28 - domain: 60
-Element, global: 57 - local: X - shadow: 29 - domain: 61
-Element, global: 58 - local: 28 - shadow: X - domain: 28
-Element, global: 59 - local: 29 - shadow: X - domain: 29
-Element, global: 60 - local: X - shadow: 30 - domain: 62
-Element, global: 61 - local: X - shadow: 31 - domain: 63
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 10
-Element, local: 5 - global: 11
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 18
-Element, local: 9 - global: 19
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 26
-Element, local: 13 - global: 27
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 34
-Element, local: 17 - global: 35
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 42
-Element, local: 21 - global: 43
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 50
-Element, local: 25 - global: 51
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 58
-Element, local: 29 - global: 59
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 10
-Element, domain: 5 - global: 11
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 18
-Element, domain: 9 - global: 19
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 26
-Element, domain: 13 - global: 27
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 34
-Element, domain: 17 - global: 35
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 42
-Element, domain: 21 - global: 43
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 50
-Element, domain: 25 - global: 51
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 58
-Element, domain: 29 - global: 59
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 0
-Element, domain: 33 - global: 1
-Element, domain: 34 - global: 4
-Element, domain: 35 - global: 5
-Element, domain: 36 - global: 8
-Element, domain: 37 - global: 9
-Element, domain: 38 - global: 12
-Element, domain: 39 - global: 13
-Element, domain: 40 - global: 16
-Element, domain: 41 - global: 17
-Element, domain: 42 - global: 20
-Element, domain: 43 - global: 21
-Element, domain: 44 - global: 24
-Element, domain: 45 - global: 25
-Element, domain: 46 - global: 28
-Element, domain: 47 - global: 29
-Element, domain: 48 - global: 32
-Element, domain: 49 - global: 33
-Element, domain: 50 - global: 36
-Element, domain: 51 - global: 37
-Element, domain: 52 - global: 40
-Element, domain: 53 - global: 41
-Element, domain: 54 - global: 44
-Element, domain: 55 - global: 45
-Element, domain: 56 - global: 48
-Element, domain: 57 - global: 49
-Element, domain: 58 - global: 52
-Element, domain: 59 - global: 53
-Element, domain: 60 - global: 56
-Element, domain: 61 - global: 57
-Element, domain: 62 - global: 60
-Element, domain: 63 - global: 61
-
-Node, global: 0 - local: X - shadow: 0 - domain: 75
-Node, global: 1 - local: X - shadow: 1 - domain: 76
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: 2 - domain: 77
-Node, global: 6 - local: X - shadow: 3 - domain: 78
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: 4 - domain: 79
-Node, global: 11 - local: X - shadow: 5 - domain: 80
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: 6 - domain: 81
-Node, global: 16 - local: X - shadow: 7 - domain: 82
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: X - shadow: 8 - domain: 83
-Node, global: 21 - local: X - shadow: 9 - domain: 84
-Node, global: 22 - local: 12 - shadow: X - domain: 12
-Node, global: 23 - local: 13 - shadow: X - domain: 13
-Node, global: 24 - local: 14 - shadow: X - domain: 14
-Node, global: 25 - local: X - shadow: 10 - domain: 85
-Node, global: 26 - local: X - shadow: 11 - domain: 86
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: X - shadow: 12 - domain: 87
-Node, global: 31 - local: X - shadow: 13 - domain: 88
-Node, global: 32 - local: 18 - shadow: X - domain: 18
-Node, global: 33 - local: 19 - shadow: X - domain: 19
-Node, global: 34 - local: 20 - shadow: X - domain: 20
-Node, global: 35 - local: X - shadow: 14 - domain: 89
-Node, global: 36 - local: X - shadow: 15 - domain: 90
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: X - shadow: 16 - domain: 91
-Node, global: 41 - local: X - shadow: 17 - domain: 92
-Node, global: 42 - local: 24 - shadow: X - domain: 24
-Node, global: 43 - local: 25 - shadow: X - domain: 25
-Node, global: 44 - local: 26 - shadow: X - domain: 26
-Node, global: 45 - local: X - shadow: 18 - domain: 93
-Node, global: 46 - local: X - shadow: 19 - domain: 94
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: 20 - domain: 95
-Node, global: 51 - local: X - shadow: 21 - domain: 96
-Node, global: 52 - local: 30 - shadow: X - domain: 30
-Node, global: 53 - local: 31 - shadow: X - domain: 31
-Node, global: 54 - local: 32 - shadow: X - domain: 32
-Node, global: 55 - local: X - shadow: 22 - domain: 97
-Node, global: 56 - local: X - shadow: 23 - domain: 98
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: 35 - shadow: X - domain: 35
-Node, global: 60 - local: X - shadow: 24 - domain: 99
-Node, global: 61 - local: X - shadow: 25 - domain: 100
-Node, global: 62 - local: 36 - shadow: X - domain: 36
-Node, global: 63 - local: 37 - shadow: X - domain: 37
-Node, global: 64 - local: 38 - shadow: X - domain: 38
-Node, global: 65 - local: X - shadow: 26 - domain: 101
-Node, global: 66 - local: X - shadow: 27 - domain: 102
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: 40 - shadow: X - domain: 40
-Node, global: 69 - local: 41 - shadow: X - domain: 41
-Node, global: 70 - local: X - shadow: 28 - domain: 103
-Node, global: 71 - local: X - shadow: 29 - domain: 104
-Node, global: 72 - local: 42 - shadow: X - domain: 42
-Node, global: 73 - local: 43 - shadow: X - domain: 43
-Node, global: 74 - local: 44 - shadow: X - domain: 44
-Node, global: 75 - local: X - shadow: 30 - domain: 105
-Node, global: 76 - local: X - shadow: 31 - domain: 106
-Node, global: 77 - local: 45 - shadow: X - domain: 45
-Node, global: 78 - local: 46 - shadow: X - domain: 46
-Node, global: 79 - local: 47 - shadow: X - domain: 47
-Node, global: 80 - local: X - shadow: 32 - domain: 107
-Node, global: 81 - local: X - shadow: 33 - domain: 108
-Node, global: 82 - local: 48 - shadow: X - domain: 48
-Node, global: 83 - local: 49 - shadow: X - domain: 49
-Node, global: 84 - local: 50 - shadow: X - domain: 50
-Node, global: 85 - local: X - shadow: 34 - domain: 109
-Node, global: 86 - local: X - shadow: 35 - domain: 110
-Node, global: 87 - local: 51 - shadow: X - domain: 51
-Node, global: 88 - local: 52 - shadow: X - domain: 52
-Node, global: 89 - local: 53 - shadow: X - domain: 53
-Node, global: 90 - local: X - shadow: 36 - domain: 111
-Node, global: 91 - local: X - shadow: 37 - domain: 112
-Node, global: 92 - local: 54 - shadow: X - domain: 54
-Node, global: 93 - local: 55 - shadow: X - domain: 55
-Node, global: 94 - local: 56 - shadow: X - domain: 56
-Node, global: 95 - local: X - shadow: 38 - domain: 113
-Node, global: 96 - local: X - shadow: 39 - domain: 114
-Node, global: 97 - local: 57 - shadow: X - domain: 57
-Node, global: 98 - local: 58 - shadow: X - domain: 58
-Node, global: 99 - local: 59 - shadow: X - domain: 59
-Node, global: 100 - local: X - shadow: 40 - domain: 115
-Node, global: 101 - local: X - shadow: 41 - domain: 116
-Node, global: 102 - local: 60 - shadow: X - domain: 60
-Node, global: 103 - local: 61 - shadow: X - domain: 61
-Node, global: 104 - local: 62 - shadow: X - domain: 62
-Node, global: 105 - local: X - shadow: 42 - domain: 117
-Node, global: 106 - local: X - shadow: 43 - domain: 118
-Node, global: 107 - local: 63 - shadow: X - domain: 63
-Node, global: 108 - local: 64 - shadow: X - domain: 64
-Node, global: 109 - local: 65 - shadow: X - domain: 65
-Node, global: 110 - local: X - shadow: 44 - domain: 119
-Node, global: 111 - local: X - shadow: 45 - domain: 120
-Node, global: 112 - local: 66 - shadow: X - domain: 66
-Node, global: 113 - local: 67 - shadow: X - domain: 67
-Node, global: 114 - local: 68 - shadow: X - domain: 68
-Node, global: 115 - local: X - shadow: 46 - domain: 121
-Node, global: 116 - local: X - shadow: 47 - domain: 122
-Node, global: 117 - local: 69 - shadow: X - domain: 69
-Node, global: 118 - local: 70 - shadow: X - domain: 70
-Node, global: 119 - local: 71 - shadow: X - domain: 71
-Node, global: 120 - local: X - shadow: 48 - domain: 123
-Node, global: 121 - local: X - shadow: 49 - domain: 124
-Node, global: 122 - local: 72 - shadow: X - domain: 72
-Node, global: 123 - local: 73 - shadow: X - domain: 73
-Node, global: 124 - local: 74 - shadow: X - domain: 74
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 17
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 22
-Node, local: 13 - global: 23
-Node, local: 14 - global: 24
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 32
-Node, local: 19 - global: 33
-Node, local: 20 - global: 34
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 42
-Node, local: 25 - global: 43
-Node, local: 26 - global: 44
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 52
-Node, local: 31 - global: 53
-Node, local: 32 - global: 54
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 59
-Node, local: 36 - global: 62
-Node, local: 37 - global: 63
-Node, local: 38 - global: 64
-Node, local: 39 - global: 67
-Node, local: 40 - global: 68
-Node, local: 41 - global: 69
-Node, local: 42 - global: 72
-Node, local: 43 - global: 73
-Node, local: 44 - global: 74
-Node, local: 45 - global: 77
-Node, local: 46 - global: 78
-Node, local: 47 - global: 79
-Node, local: 48 - global: 82
-Node, local: 49 - global: 83
-Node, local: 50 - global: 84
-Node, local: 51 - global: 87
-Node, local: 52 - global: 88
-Node, local: 53 - global: 89
-Node, local: 54 - global: 92
-Node, local: 55 - global: 93
-Node, local: 56 - global: 94
-Node, local: 57 - global: 97
-Node, local: 58 - global: 98
-Node, local: 59 - global: 99
-Node, local: 60 - global: 102
-Node, local: 61 - global: 103
-Node, local: 62 - global: 104
-Node, local: 63 - global: 107
-Node, local: 64 - global: 108
-Node, local: 65 - global: 109
-Node, local: 66 - global: 112
-Node, local: 67 - global: 113
-Node, local: 68 - global: 114
-Node, local: 69 - global: 117
-Node, local: 70 - global: 118
-Node, local: 71 - global: 119
-Node, local: 72 - global: 122
-Node, local: 73 - global: 123
-Node, local: 74 - global: 124
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 22
-Node, domain: 13 - global: 23
-Node, domain: 14 - global: 24
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 32
-Node, domain: 19 - global: 33
-Node, domain: 20 - global: 34
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 42
-Node, domain: 25 - global: 43
-Node, domain: 26 - global: 44
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 52
-Node, domain: 31 - global: 53
-Node, domain: 32 - global: 54
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 59
-Node, domain: 36 - global: 62
-Node, domain: 37 - global: 63
-Node, domain: 38 - global: 64
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 68
-Node, domain: 41 - global: 69
-Node, domain: 42 - global: 72
-Node, domain: 43 - global: 73
-Node, domain: 44 - global: 74
-Node, domain: 45 - global: 77
-Node, domain: 46 - global: 78
-Node, domain: 47 - global: 79
-Node, domain: 48 - global: 82
-Node, domain: 49 - global: 83
-Node, domain: 50 - global: 84
-Node, domain: 51 - global: 87
-Node, domain: 52 - global: 88
-Node, domain: 53 - global: 89
-Node, domain: 54 - global: 92
-Node, domain: 55 - global: 93
-Node, domain: 56 - global: 94
-Node, domain: 57 - global: 97
-Node, domain: 58 - global: 98
-Node, domain: 59 - global: 99
-Node, domain: 60 - global: 102
-Node, domain: 61 - global: 103
-Node, domain: 62 - global: 104
-Node, domain: 63 - global: 107
-Node, domain: 64 - global: 108
-Node, domain: 65 - global: 109
-Node, domain: 66 - global: 112
-Node, domain: 67 - global: 113
-Node, domain: 68 - global: 114
-Node, domain: 69 - global: 117
-Node, domain: 70 - global: 118
-Node, domain: 71 - global: 119
-Node, domain: 72 - global: 122
-Node, domain: 73 - global: 123
-Node, domain: 74 - global: 124
-Node, domain: 75 - global: 0
-Node, domain: 76 - global: 1
-Node, domain: 77 - global: 5
-Node, domain: 78 - global: 6
-Node, domain: 79 - global: 10
-Node, domain: 80 - global: 11
-Node, domain: 81 - global: 15
-Node, domain: 82 - global: 16
-Node, domain: 83 - global: 20
-Node, domain: 84 - global: 21
-Node, domain: 85 - global: 25
-Node, domain: 86 - global: 26
-Node, domain: 87 - global: 30
-Node, domain: 88 - global: 31
-Node, domain: 89 - global: 35
-Node, domain: 90 - global: 36
-Node, domain: 91 - global: 40
-Node, domain: 92 - global: 41
-Node, domain: 93 - global: 45
-Node, domain: 94 - global: 46
-Node, domain: 95 - global: 50
-Node, domain: 96 - global: 51
-Node, domain: 97 - global: 55
-Node, domain: 98 - global: 56
-Node, domain: 99 - global: 60
-Node, domain: 100 - global: 61
-Node, domain: 101 - global: 65
-Node, domain: 102 - global: 66
-Node, domain: 103 - global: 70
-Node, domain: 104 - global: 71
-Node, domain: 105 - global: 75
-Node, domain: 106 - global: 76
-Node, domain: 107 - global: 80
-Node, domain: 108 - global: 81
-Node, domain: 109 - global: 85
-Node, domain: 110 - global: 86
-Node, domain: 111 - global: 90
-Node, domain: 112 - global: 91
-Node, domain: 113 - global: 95
-Node, domain: 114 - global: 96
-Node, domain: 115 - global: 100
-Node, domain: 116 - global: 101
-Node, domain: 117 - global: 105
-Node, domain: 118 - global: 106
-Node, domain: 119 - global: 110
-Node, domain: 120 - global: 111
-Node, domain: 121 - global: 115
-Node, domain: 122 - global: 116
-Node, domain: 123 - global: 120
-Node, domain: 124 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,2 +0,0 @@
-StGermain Framework revision 3556. Copyright (C) 2003-2005 VPAC.
-Rank 2 not in use.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-shadowDepth2.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,148 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8061c78)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 5, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: 2 - shadow: X - domain: 2
-Element, global: 3 - local: X - shadow: 0 - domain: 3
-Element, global: 4 - local: X - shadow: 1 - domain: 4
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: X - domain: X
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 2
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 2
-Element, domain: 3 - global: 3
-Element, domain: 4 - global: 4
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: 3 - shadow: X - domain: 3
-Node, global: 4 - local: X - shadow: 0 - domain: 16
-Node, global: 5 - local: X - shadow: 1 - domain: 17
-Node, global: 6 - local: X - shadow: X - domain: X
-Node, global: 7 - local: X - shadow: X - domain: X
-Node, global: 8 - local: X - shadow: X - domain: X
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: 4 - shadow: X - domain: 4
-Node, global: 12 - local: 5 - shadow: X - domain: 5
-Node, global: 13 - local: 6 - shadow: X - domain: 6
-Node, global: 14 - local: 7 - shadow: X - domain: 7
-Node, global: 15 - local: X - shadow: 2 - domain: 18
-Node, global: 16 - local: X - shadow: 3 - domain: 19
-Node, global: 17 - local: X - shadow: X - domain: X
-Node, global: 18 - local: X - shadow: X - domain: X
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: 8 - shadow: X - domain: 8
-Node, global: 23 - local: 9 - shadow: X - domain: 9
-Node, global: 24 - local: 10 - shadow: X - domain: 10
-Node, global: 25 - local: 11 - shadow: X - domain: 11
-Node, global: 26 - local: X - shadow: 4 - domain: 20
-Node, global: 27 - local: X - shadow: 5 - domain: 21
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: X - domain: X
-Node, global: 32 - local: X - shadow: X - domain: X
-Node, global: 33 - local: 12 - shadow: X - domain: 12
-Node, global: 34 - local: 13 - shadow: X - domain: 13
-Node, global: 35 - local: 14 - shadow: X - domain: 14
-Node, global: 36 - local: 15 - shadow: X - domain: 15
-Node, global: 37 - local: X - shadow: 6 - domain: 22
-Node, global: 38 - local: X - shadow: 7 - domain: 23
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: X - domain: X
-Node, global: 42 - local: X - shadow: X - domain: X
-Node, global: 43 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 3
-Node, local: 4 - global: 11
-Node, local: 5 - global: 12
-Node, local: 6 - global: 13
-Node, local: 7 - global: 14
-Node, local: 8 - global: 22
-Node, local: 9 - global: 23
-Node, local: 10 - global: 24
-Node, local: 11 - global: 25
-Node, local: 12 - global: 33
-Node, local: 13 - global: 34
-Node, local: 14 - global: 35
-Node, local: 15 - global: 36
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 3
-Node, domain: 4 - global: 11
-Node, domain: 5 - global: 12
-Node, domain: 6 - global: 13
-Node, domain: 7 - global: 14
-Node, domain: 8 - global: 22
-Node, domain: 9 - global: 23
-Node, domain: 10 - global: 24
-Node, domain: 11 - global: 25
-Node, domain: 12 - global: 33
-Node, domain: 13 - global: 34
-Node, domain: 14 - global: 35
-Node, domain: 15 - global: 36
-Node, domain: 16 - global: 4
-Node, domain: 17 - global: 5
-Node, domain: 18 - global: 15
-Node, domain: 19 - global: 16
-Node, domain: 20 - global: 26
-Node, domain: 21 - global: 27
-Node, domain: 22 - global: 37
-Node, domain: 23 - global: 38
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,158 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060df0)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 7, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: 0 - domain: 3
-Element, global: 2 - local: X - shadow: 1 - domain: 4
-Element, global: 3 - local: 0 - shadow: X - domain: 0
-Element, global: 4 - local: 1 - shadow: X - domain: 1
-Element, global: 5 - local: 2 - shadow: X - domain: 2
-Element, global: 6 - local: X - shadow: 2 - domain: 5
-Element, global: 7 - local: X - shadow: 3 - domain: 6
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 3
-Element, local: 1 - global: 4
-Element, local: 2 - global: 5
-
-Element, domain: 0 - global: 3
-Element, domain: 1 - global: 4
-Element, domain: 2 - global: 5
-Element, domain: 3 - global: 1
-Element, domain: 4 - global: 2
-Element, domain: 5 - global: 6
-Element, domain: 6 - global: 7
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: 0 - domain: 16
-Node, global: 2 - local: X - shadow: 1 - domain: 17
-Node, global: 3 - local: 0 - shadow: X - domain: 0
-Node, global: 4 - local: 1 - shadow: X - domain: 1
-Node, global: 5 - local: 2 - shadow: X - domain: 2
-Node, global: 6 - local: 3 - shadow: X - domain: 3
-Node, global: 7 - local: X - shadow: 2 - domain: 18
-Node, global: 8 - local: X - shadow: 3 - domain: 19
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: 4 - domain: 20
-Node, global: 13 - local: X - shadow: 5 - domain: 21
-Node, global: 14 - local: 4 - shadow: X - domain: 4
-Node, global: 15 - local: 5 - shadow: X - domain: 5
-Node, global: 16 - local: 6 - shadow: X - domain: 6
-Node, global: 17 - local: 7 - shadow: X - domain: 7
-Node, global: 18 - local: X - shadow: 6 - domain: 22
-Node, global: 19 - local: X - shadow: 7 - domain: 23
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: 8 - domain: 24
-Node, global: 24 - local: X - shadow: 9 - domain: 25
-Node, global: 25 - local: 8 - shadow: X - domain: 8
-Node, global: 26 - local: 9 - shadow: X - domain: 9
-Node, global: 27 - local: 10 - shadow: X - domain: 10
-Node, global: 28 - local: 11 - shadow: X - domain: 11
-Node, global: 29 - local: X - shadow: 10 - domain: 26
-Node, global: 30 - local: X - shadow: 11 - domain: 27
-Node, global: 31 - local: X - shadow: X - domain: X
-Node, global: 32 - local: X - shadow: X - domain: X
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: 12 - domain: 28
-Node, global: 35 - local: X - shadow: 13 - domain: 29
-Node, global: 36 - local: 12 - shadow: X - domain: 12
-Node, global: 37 - local: 13 - shadow: X - domain: 13
-Node, global: 38 - local: 14 - shadow: X - domain: 14
-Node, global: 39 - local: 15 - shadow: X - domain: 15
-Node, global: 40 - local: X - shadow: 14 - domain: 30
-Node, global: 41 - local: X - shadow: 15 - domain: 31
-Node, global: 42 - local: X - shadow: X - domain: X
-Node, global: 43 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 3
-Node, local: 1 - global: 4
-Node, local: 2 - global: 5
-Node, local: 3 - global: 6
-Node, local: 4 - global: 14
-Node, local: 5 - global: 15
-Node, local: 6 - global: 16
-Node, local: 7 - global: 17
-Node, local: 8 - global: 25
-Node, local: 9 - global: 26
-Node, local: 10 - global: 27
-Node, local: 11 - global: 28
-Node, local: 12 - global: 36
-Node, local: 13 - global: 37
-Node, local: 14 - global: 38
-Node, local: 15 - global: 39
-
-Node, domain: 0 - global: 3
-Node, domain: 1 - global: 4
-Node, domain: 2 - global: 5
-Node, domain: 3 - global: 6
-Node, domain: 4 - global: 14
-Node, domain: 5 - global: 15
-Node, domain: 6 - global: 16
-Node, domain: 7 - global: 17
-Node, domain: 8 - global: 25
-Node, domain: 9 - global: 26
-Node, domain: 10 - global: 27
-Node, domain: 11 - global: 28
-Node, domain: 12 - global: 36
-Node, domain: 13 - global: 37
-Node, domain: 14 - global: 38
-Node, domain: 15 - global: 39
-Node, domain: 16 - global: 1
-Node, domain: 17 - global: 2
-Node, domain: 18 - global: 7
-Node, domain: 19 - global: 8
-Node, domain: 20 - global: 12
-Node, domain: 21 - global: 13
-Node, domain: 22 - global: 18
-Node, domain: 23 - global: 19
-Node, domain: 24 - global: 23
-Node, domain: 25 - global: 24
-Node, domain: 26 - global: 29
-Node, domain: 27 - global: 30
-Node, domain: 28 - global: 34
-Node, domain: 29 - global: 35
-Node, domain: 30 - global: 40
-Node, domain: 31 - global: 41
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,148 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 2 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060df0)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 6, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: 0 - domain: 2
-Element, global: 5 - local: X - shadow: 1 - domain: 3
-Element, global: 6 - local: 0 - shadow: X - domain: 0
-Element, global: 7 - local: 1 - shadow: X - domain: 1
-Element, global: 8 - local: X - shadow: 2 - domain: 4
-Element, global: 9 - local: X - shadow: 3 - domain: 5
-
-Element, local: 0 - global: 6
-Element, local: 1 - global: 7
-
-Element, domain: 0 - global: 6
-Element, domain: 1 - global: 7
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: 0 - domain: 12
-Node, global: 5 - local: X - shadow: 1 - domain: 13
-Node, global: 6 - local: 0 - shadow: X - domain: 0
-Node, global: 7 - local: 1 - shadow: X - domain: 1
-Node, global: 8 - local: 2 - shadow: X - domain: 2
-Node, global: 9 - local: X - shadow: 2 - domain: 14
-Node, global: 10 - local: X - shadow: 3 - domain: 15
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: X - domain: X
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: 4 - domain: 16
-Node, global: 16 - local: X - shadow: 5 - domain: 17
-Node, global: 17 - local: 3 - shadow: X - domain: 3
-Node, global: 18 - local: 4 - shadow: X - domain: 4
-Node, global: 19 - local: 5 - shadow: X - domain: 5
-Node, global: 20 - local: X - shadow: 6 - domain: 18
-Node, global: 21 - local: X - shadow: 7 - domain: 19
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: 8 - domain: 20
-Node, global: 27 - local: X - shadow: 9 - domain: 21
-Node, global: 28 - local: 6 - shadow: X - domain: 6
-Node, global: 29 - local: 7 - shadow: X - domain: 7
-Node, global: 30 - local: 8 - shadow: X - domain: 8
-Node, global: 31 - local: X - shadow: 10 - domain: 22
-Node, global: 32 - local: X - shadow: 11 - domain: 23
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: X - domain: X
-Node, global: 37 - local: X - shadow: 12 - domain: 24
-Node, global: 38 - local: X - shadow: 13 - domain: 25
-Node, global: 39 - local: 9 - shadow: X - domain: 9
-Node, global: 40 - local: 10 - shadow: X - domain: 10
-Node, global: 41 - local: 11 - shadow: X - domain: 11
-Node, global: 42 - local: X - shadow: 14 - domain: 26
-Node, global: 43 - local: X - shadow: 15 - domain: 27
-
-Node, local: 0 - global: 6
-Node, local: 1 - global: 7
-Node, local: 2 - global: 8
-Node, local: 3 - global: 17
-Node, local: 4 - global: 18
-Node, local: 5 - global: 19
-Node, local: 6 - global: 28
-Node, local: 7 - global: 29
-Node, local: 8 - global: 30
-Node, local: 9 - global: 39
-Node, local: 10 - global: 40
-Node, local: 11 - global: 41
-
-Node, domain: 0 - global: 6
-Node, domain: 1 - global: 7
-Node, domain: 2 - global: 8
-Node, domain: 3 - global: 17
-Node, domain: 4 - global: 18
-Node, domain: 5 - global: 19
-Node, domain: 6 - global: 28
-Node, domain: 7 - global: 29
-Node, domain: 8 - global: 30
-Node, domain: 9 - global: 39
-Node, domain: 10 - global: 40
-Node, domain: 11 - global: 41
-Node, domain: 12 - global: 4
-Node, domain: 13 - global: 5
-Node, domain: 14 - global: 9
-Node, domain: 15 - global: 10
-Node, domain: 16 - global: 15
-Node, domain: 17 - global: 16
-Node, domain: 18 - global: 20
-Node, domain: 19 - global: 21
-Node, domain: 20 - global: 26
-Node, domain: 21 - global: 27
-Node, domain: 22 - global: 31
-Node, domain: 23 - global: 32
-Node, domain: 24 - global: 37
-Node, domain: 25 - global: 38
-Node, domain: 26 - global: 42
-Node, domain: 27 - global: 43
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,138 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 3 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 2
-procTopology:
-	IJKTopology (ptr): (0x8060df0)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 4, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: 0 - domain: 2
-Element, global: 7 - local: X - shadow: 1 - domain: 3
-Element, global: 8 - local: 0 - shadow: X - domain: 0
-Element, global: 9 - local: 1 - shadow: X - domain: 1
-
-Element, local: 0 - global: 8
-Element, local: 1 - global: 9
-
-Element, domain: 0 - global: 8
-Element, domain: 1 - global: 9
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: 0 - domain: 12
-Node, global: 7 - local: X - shadow: 1 - domain: 13
-Node, global: 8 - local: 0 - shadow: X - domain: 0
-Node, global: 9 - local: 1 - shadow: X - domain: 1
-Node, global: 10 - local: 2 - shadow: X - domain: 2
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: X - domain: X
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: X - domain: X
-Node, global: 17 - local: X - shadow: 2 - domain: 14
-Node, global: 18 - local: X - shadow: 3 - domain: 15
-Node, global: 19 - local: 3 - shadow: X - domain: 3
-Node, global: 20 - local: 4 - shadow: X - domain: 4
-Node, global: 21 - local: 5 - shadow: X - domain: 5
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: 4 - domain: 16
-Node, global: 29 - local: X - shadow: 5 - domain: 17
-Node, global: 30 - local: 6 - shadow: X - domain: 6
-Node, global: 31 - local: 7 - shadow: X - domain: 7
-Node, global: 32 - local: 8 - shadow: X - domain: 8
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: X - domain: X
-Node, global: 37 - local: X - shadow: X - domain: X
-Node, global: 38 - local: X - shadow: X - domain: X
-Node, global: 39 - local: X - shadow: 6 - domain: 18
-Node, global: 40 - local: X - shadow: 7 - domain: 19
-Node, global: 41 - local: 9 - shadow: X - domain: 9
-Node, global: 42 - local: 10 - shadow: X - domain: 10
-Node, global: 43 - local: 11 - shadow: X - domain: 11
-
-Node, local: 0 - global: 8
-Node, local: 1 - global: 9
-Node, local: 2 - global: 10
-Node, local: 3 - global: 19
-Node, local: 4 - global: 20
-Node, local: 5 - global: 21
-Node, local: 6 - global: 30
-Node, local: 7 - global: 31
-Node, local: 8 - global: 32
-Node, local: 9 - global: 41
-Node, local: 10 - global: 42
-Node, local: 11 - global: 43
-
-Node, domain: 0 - global: 8
-Node, domain: 1 - global: 9
-Node, domain: 2 - global: 10
-Node, domain: 3 - global: 19
-Node, domain: 4 - global: 20
-Node, domain: 5 - global: 21
-Node, domain: 6 - global: 30
-Node, domain: 7 - global: 31
-Node, domain: 8 - global: 32
-Node, domain: 9 - global: 41
-Node, domain: 10 - global: 42
-Node, domain: 11 - global: 43
-Node, domain: 12 - global: 6
-Node, domain: 13 - global: 7
-Node, domain: 14 - global: 17
-Node, domain: 15 - global: 18
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 39
-Node, domain: 19 - global: 40
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced-shadowDepth2.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2 --shadowDepth=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,143 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061c70)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 4, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: 2 - shadow: X - domain: 2
-Element, global: 3 - local: X - shadow: 0 - domain: 3
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: X - domain: X
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 2
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 2
-Element, domain: 3 - global: 3
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: 3 - shadow: X - domain: 3
-Node, global: 4 - local: X - shadow: 0 - domain: 16
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: X - domain: X
-Node, global: 7 - local: X - shadow: X - domain: X
-Node, global: 8 - local: X - shadow: X - domain: X
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: 4 - shadow: X - domain: 4
-Node, global: 12 - local: 5 - shadow: X - domain: 5
-Node, global: 13 - local: 6 - shadow: X - domain: 6
-Node, global: 14 - local: 7 - shadow: X - domain: 7
-Node, global: 15 - local: X - shadow: 1 - domain: 17
-Node, global: 16 - local: X - shadow: X - domain: X
-Node, global: 17 - local: X - shadow: X - domain: X
-Node, global: 18 - local: X - shadow: X - domain: X
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: 8 - shadow: X - domain: 8
-Node, global: 23 - local: 9 - shadow: X - domain: 9
-Node, global: 24 - local: 10 - shadow: X - domain: 10
-Node, global: 25 - local: 11 - shadow: X - domain: 11
-Node, global: 26 - local: X - shadow: 2 - domain: 18
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: X - domain: X
-Node, global: 32 - local: X - shadow: X - domain: X
-Node, global: 33 - local: 12 - shadow: X - domain: 12
-Node, global: 34 - local: 13 - shadow: X - domain: 13
-Node, global: 35 - local: 14 - shadow: X - domain: 14
-Node, global: 36 - local: 15 - shadow: X - domain: 15
-Node, global: 37 - local: X - shadow: 3 - domain: 19
-Node, global: 38 - local: X - shadow: X - domain: X
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: X - domain: X
-Node, global: 42 - local: X - shadow: X - domain: X
-Node, global: 43 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 3
-Node, local: 4 - global: 11
-Node, local: 5 - global: 12
-Node, local: 6 - global: 13
-Node, local: 7 - global: 14
-Node, local: 8 - global: 22
-Node, local: 9 - global: 23
-Node, local: 10 - global: 24
-Node, local: 11 - global: 25
-Node, local: 12 - global: 33
-Node, local: 13 - global: 34
-Node, local: 14 - global: 35
-Node, local: 15 - global: 36
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 3
-Node, domain: 4 - global: 11
-Node, domain: 5 - global: 12
-Node, domain: 6 - global: 13
-Node, domain: 7 - global: 14
-Node, domain: 8 - global: 22
-Node, domain: 9 - global: 23
-Node, domain: 10 - global: 24
-Node, domain: 11 - global: 25
-Node, domain: 12 - global: 33
-Node, domain: 13 - global: 34
-Node, domain: 14 - global: 35
-Node, domain: 15 - global: 36
-Node, domain: 16 - global: 4
-Node, domain: 17 - global: 15
-Node, domain: 18 - global: 26
-Node, domain: 19 - global: 37
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,148 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060da8)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 5, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: 0 - domain: 3
-Element, global: 3 - local: 0 - shadow: X - domain: 0
-Element, global: 4 - local: 1 - shadow: X - domain: 1
-Element, global: 5 - local: 2 - shadow: X - domain: 2
-Element, global: 6 - local: X - shadow: 1 - domain: 4
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 3
-Element, local: 1 - global: 4
-Element, local: 2 - global: 5
-
-Element, domain: 0 - global: 3
-Element, domain: 1 - global: 4
-Element, domain: 2 - global: 5
-Element, domain: 3 - global: 2
-Element, domain: 4 - global: 6
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: 0 - domain: 16
-Node, global: 3 - local: 0 - shadow: X - domain: 0
-Node, global: 4 - local: 1 - shadow: X - domain: 1
-Node, global: 5 - local: 2 - shadow: X - domain: 2
-Node, global: 6 - local: 3 - shadow: X - domain: 3
-Node, global: 7 - local: X - shadow: 1 - domain: 17
-Node, global: 8 - local: X - shadow: X - domain: X
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: 2 - domain: 18
-Node, global: 14 - local: 4 - shadow: X - domain: 4
-Node, global: 15 - local: 5 - shadow: X - domain: 5
-Node, global: 16 - local: 6 - shadow: X - domain: 6
-Node, global: 17 - local: 7 - shadow: X - domain: 7
-Node, global: 18 - local: X - shadow: 3 - domain: 19
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: 4 - domain: 20
-Node, global: 25 - local: 8 - shadow: X - domain: 8
-Node, global: 26 - local: 9 - shadow: X - domain: 9
-Node, global: 27 - local: 10 - shadow: X - domain: 10
-Node, global: 28 - local: 11 - shadow: X - domain: 11
-Node, global: 29 - local: X - shadow: 5 - domain: 21
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: X - domain: X
-Node, global: 32 - local: X - shadow: X - domain: X
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: X - shadow: 6 - domain: 22
-Node, global: 36 - local: 12 - shadow: X - domain: 12
-Node, global: 37 - local: 13 - shadow: X - domain: 13
-Node, global: 38 - local: 14 - shadow: X - domain: 14
-Node, global: 39 - local: 15 - shadow: X - domain: 15
-Node, global: 40 - local: X - shadow: 7 - domain: 23
-Node, global: 41 - local: X - shadow: X - domain: X
-Node, global: 42 - local: X - shadow: X - domain: X
-Node, global: 43 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 3
-Node, local: 1 - global: 4
-Node, local: 2 - global: 5
-Node, local: 3 - global: 6
-Node, local: 4 - global: 14
-Node, local: 5 - global: 15
-Node, local: 6 - global: 16
-Node, local: 7 - global: 17
-Node, local: 8 - global: 25
-Node, local: 9 - global: 26
-Node, local: 10 - global: 27
-Node, local: 11 - global: 28
-Node, local: 12 - global: 36
-Node, local: 13 - global: 37
-Node, local: 14 - global: 38
-Node, local: 15 - global: 39
-
-Node, domain: 0 - global: 3
-Node, domain: 1 - global: 4
-Node, domain: 2 - global: 5
-Node, domain: 3 - global: 6
-Node, domain: 4 - global: 14
-Node, domain: 5 - global: 15
-Node, domain: 6 - global: 16
-Node, domain: 7 - global: 17
-Node, domain: 8 - global: 25
-Node, domain: 9 - global: 26
-Node, domain: 10 - global: 27
-Node, domain: 11 - global: 28
-Node, domain: 12 - global: 36
-Node, domain: 13 - global: 37
-Node, domain: 14 - global: 38
-Node, domain: 15 - global: 39
-Node, domain: 16 - global: 2
-Node, domain: 17 - global: 7
-Node, domain: 18 - global: 13
-Node, domain: 19 - global: 18
-Node, domain: 20 - global: 24
-Node, domain: 21 - global: 29
-Node, domain: 22 - global: 35
-Node, domain: 23 - global: 40
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,138 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 2 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060da8)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 4, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: 0 - domain: 2
-Element, global: 6 - local: 0 - shadow: X - domain: 0
-Element, global: 7 - local: 1 - shadow: X - domain: 1
-Element, global: 8 - local: X - shadow: 1 - domain: 3
-Element, global: 9 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 6
-Element, local: 1 - global: 7
-
-Element, domain: 0 - global: 6
-Element, domain: 1 - global: 7
-Element, domain: 2 - global: 5
-Element, domain: 3 - global: 8
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: 0 - domain: 12
-Node, global: 6 - local: 0 - shadow: X - domain: 0
-Node, global: 7 - local: 1 - shadow: X - domain: 1
-Node, global: 8 - local: 2 - shadow: X - domain: 2
-Node, global: 9 - local: X - shadow: 1 - domain: 13
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: X - domain: X
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 2 - domain: 14
-Node, global: 17 - local: 3 - shadow: X - domain: 3
-Node, global: 18 - local: 4 - shadow: X - domain: 4
-Node, global: 19 - local: 5 - shadow: X - domain: 5
-Node, global: 20 - local: X - shadow: 3 - domain: 15
-Node, global: 21 - local: X - shadow: X - domain: X
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: 4 - domain: 16
-Node, global: 28 - local: 6 - shadow: X - domain: 6
-Node, global: 29 - local: 7 - shadow: X - domain: 7
-Node, global: 30 - local: 8 - shadow: X - domain: 8
-Node, global: 31 - local: X - shadow: 5 - domain: 17
-Node, global: 32 - local: X - shadow: X - domain: X
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: X - domain: X
-Node, global: 37 - local: X - shadow: X - domain: X
-Node, global: 38 - local: X - shadow: 6 - domain: 18
-Node, global: 39 - local: 9 - shadow: X - domain: 9
-Node, global: 40 - local: 10 - shadow: X - domain: 10
-Node, global: 41 - local: 11 - shadow: X - domain: 11
-Node, global: 42 - local: X - shadow: 7 - domain: 19
-Node, global: 43 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 6
-Node, local: 1 - global: 7
-Node, local: 2 - global: 8
-Node, local: 3 - global: 17
-Node, local: 4 - global: 18
-Node, local: 5 - global: 19
-Node, local: 6 - global: 28
-Node, local: 7 - global: 29
-Node, local: 8 - global: 30
-Node, local: 9 - global: 39
-Node, local: 10 - global: 40
-Node, local: 11 - global: 41
-
-Node, domain: 0 - global: 6
-Node, domain: 1 - global: 7
-Node, domain: 2 - global: 8
-Node, domain: 3 - global: 17
-Node, domain: 4 - global: 18
-Node, domain: 5 - global: 19
-Node, domain: 6 - global: 28
-Node, domain: 7 - global: 29
-Node, domain: 8 - global: 30
-Node, domain: 9 - global: 39
-Node, domain: 10 - global: 40
-Node, domain: 11 - global: 41
-Node, domain: 12 - global: 5
-Node, domain: 13 - global: 9
-Node, domain: 14 - global: 16
-Node, domain: 15 - global: 20
-Node, domain: 16 - global: 27
-Node, domain: 17 - global: 31
-Node, domain: 18 - global: 38
-Node, domain: 19 - global: 42
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,133 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 3 of 4 in use (4 total).
-allowUnusedCPUs: False
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: True
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060da8)
-		size : (4,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 10, 1, 1 }
-elementGlobalCount: 10
-	elementLocalCounts[0]: { 3, 1, 1 }
-	elementLocalCounts[1]: { 3, 1, 1 }
-	elementLocalCounts[2]: { 2, 1, 1 }
-	elementLocalCounts[3]: { 2, 1, 1 }
-elementDomainCounts: { 3, 1, 1 }
-nodeGlobalCounts: { 11, 2, 2 }
-nodeGlobalCount: 44
-	nodeLocalCounts[0]: { 4, 2, 2 }
-	nodeLocalCounts[1]: { 4, 2, 2 }
-	nodeLocalCounts[2]: { 3, 2, 2 }
-	nodeLocalCounts[3]: { 3, 2, 2 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: X - domain: X
-Element, global: 2 - local: X - shadow: X - domain: X
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: X - domain: X
-Element, global: 6 - local: X - shadow: X - domain: X
-Element, global: 7 - local: X - shadow: 0 - domain: 2
-Element, global: 8 - local: 0 - shadow: X - domain: 0
-Element, global: 9 - local: 1 - shadow: X - domain: 1
-
-Element, local: 0 - global: 8
-Element, local: 1 - global: 9
-
-Element, domain: 0 - global: 8
-Element, domain: 1 - global: 9
-Element, domain: 2 - global: 7
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: X - domain: X
-Node, global: 2 - local: X - shadow: X - domain: X
-Node, global: 3 - local: X - shadow: X - domain: X
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: X - domain: X
-Node, global: 7 - local: X - shadow: 0 - domain: 12
-Node, global: 8 - local: 0 - shadow: X - domain: 0
-Node, global: 9 - local: 1 - shadow: X - domain: 1
-Node, global: 10 - local: 2 - shadow: X - domain: 2
-Node, global: 11 - local: X - shadow: X - domain: X
-Node, global: 12 - local: X - shadow: X - domain: X
-Node, global: 13 - local: X - shadow: X - domain: X
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: X - domain: X
-Node, global: 17 - local: X - shadow: X - domain: X
-Node, global: 18 - local: X - shadow: 1 - domain: 13
-Node, global: 19 - local: 3 - shadow: X - domain: 3
-Node, global: 20 - local: 4 - shadow: X - domain: 4
-Node, global: 21 - local: 5 - shadow: X - domain: 5
-Node, global: 22 - local: X - shadow: X - domain: X
-Node, global: 23 - local: X - shadow: X - domain: X
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: X - domain: X
-Node, global: 27 - local: X - shadow: X - domain: X
-Node, global: 28 - local: X - shadow: X - domain: X
-Node, global: 29 - local: X - shadow: 2 - domain: 14
-Node, global: 30 - local: 6 - shadow: X - domain: 6
-Node, global: 31 - local: 7 - shadow: X - domain: 7
-Node, global: 32 - local: 8 - shadow: X - domain: 8
-Node, global: 33 - local: X - shadow: X - domain: X
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: X - domain: X
-Node, global: 37 - local: X - shadow: X - domain: X
-Node, global: 38 - local: X - shadow: X - domain: X
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: X - shadow: 3 - domain: 15
-Node, global: 41 - local: 9 - shadow: X - domain: 9
-Node, global: 42 - local: 10 - shadow: X - domain: 10
-Node, global: 43 - local: 11 - shadow: X - domain: 11
-
-Node, local: 0 - global: 8
-Node, local: 1 - global: 9
-Node, local: 2 - global: 10
-Node, local: 3 - global: 19
-Node, local: 4 - global: 20
-Node, local: 5 - global: 21
-Node, local: 6 - global: 30
-Node, local: 7 - global: 31
-Node, local: 8 - global: 32
-Node, local: 9 - global: 41
-Node, local: 10 - global: 42
-Node, local: 11 - global: 43
-
-Node, domain: 0 - global: 8
-Node, domain: 1 - global: 9
-Node, domain: 2 - global: 10
-Node, domain: 3 - global: 19
-Node, domain: 4 - global: 20
-Node, domain: 5 - global: 21
-Node, domain: 6 - global: 30
-Node, domain: 7 - global: 31
-Node, domain: 8 - global: 32
-Node, domain: 9 - global: 41
-Node, domain: 10 - global: 42
-Node, domain: 11 - global: 43
-Node, domain: 12 - global: 7
-Node, domain: 13 - global: 18
-Node, domain: 14 - global: 29
-Node, domain: 15 - global: 40
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 10 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD-unbalanced.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD --allowUnusedCPUs=False --allowUnbalancing=True --meshSizeI=11 --meshSizeJ=2 --meshSizeK=2" "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,607 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 1 in use (1 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x80610c8)
-		size : (1,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { False, False, False }
-partitionCounts: { 1, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 4, 4, 4 }
-elementDomainCounts: { 4, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 5, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: 2 - shadow: X - domain: 2
-Element, global: 3 - local: 3 - shadow: X - domain: 3
-Element, global: 4 - local: 4 - shadow: X - domain: 4
-Element, global: 5 - local: 5 - shadow: X - domain: 5
-Element, global: 6 - local: 6 - shadow: X - domain: 6
-Element, global: 7 - local: 7 - shadow: X - domain: 7
-Element, global: 8 - local: 8 - shadow: X - domain: 8
-Element, global: 9 - local: 9 - shadow: X - domain: 9
-Element, global: 10 - local: 10 - shadow: X - domain: 10
-Element, global: 11 - local: 11 - shadow: X - domain: 11
-Element, global: 12 - local: 12 - shadow: X - domain: 12
-Element, global: 13 - local: 13 - shadow: X - domain: 13
-Element, global: 14 - local: 14 - shadow: X - domain: 14
-Element, global: 15 - local: 15 - shadow: X - domain: 15
-Element, global: 16 - local: 16 - shadow: X - domain: 16
-Element, global: 17 - local: 17 - shadow: X - domain: 17
-Element, global: 18 - local: 18 - shadow: X - domain: 18
-Element, global: 19 - local: 19 - shadow: X - domain: 19
-Element, global: 20 - local: 20 - shadow: X - domain: 20
-Element, global: 21 - local: 21 - shadow: X - domain: 21
-Element, global: 22 - local: 22 - shadow: X - domain: 22
-Element, global: 23 - local: 23 - shadow: X - domain: 23
-Element, global: 24 - local: 24 - shadow: X - domain: 24
-Element, global: 25 - local: 25 - shadow: X - domain: 25
-Element, global: 26 - local: 26 - shadow: X - domain: 26
-Element, global: 27 - local: 27 - shadow: X - domain: 27
-Element, global: 28 - local: 28 - shadow: X - domain: 28
-Element, global: 29 - local: 29 - shadow: X - domain: 29
-Element, global: 30 - local: 30 - shadow: X - domain: 30
-Element, global: 31 - local: 31 - shadow: X - domain: 31
-Element, global: 32 - local: 32 - shadow: X - domain: 32
-Element, global: 33 - local: 33 - shadow: X - domain: 33
-Element, global: 34 - local: 34 - shadow: X - domain: 34
-Element, global: 35 - local: 35 - shadow: X - domain: 35
-Element, global: 36 - local: 36 - shadow: X - domain: 36
-Element, global: 37 - local: 37 - shadow: X - domain: 37
-Element, global: 38 - local: 38 - shadow: X - domain: 38
-Element, global: 39 - local: 39 - shadow: X - domain: 39
-Element, global: 40 - local: 40 - shadow: X - domain: 40
-Element, global: 41 - local: 41 - shadow: X - domain: 41
-Element, global: 42 - local: 42 - shadow: X - domain: 42
-Element, global: 43 - local: 43 - shadow: X - domain: 43
-Element, global: 44 - local: 44 - shadow: X - domain: 44
-Element, global: 45 - local: 45 - shadow: X - domain: 45
-Element, global: 46 - local: 46 - shadow: X - domain: 46
-Element, global: 47 - local: 47 - shadow: X - domain: 47
-Element, global: 48 - local: 48 - shadow: X - domain: 48
-Element, global: 49 - local: 49 - shadow: X - domain: 49
-Element, global: 50 - local: 50 - shadow: X - domain: 50
-Element, global: 51 - local: 51 - shadow: X - domain: 51
-Element, global: 52 - local: 52 - shadow: X - domain: 52
-Element, global: 53 - local: 53 - shadow: X - domain: 53
-Element, global: 54 - local: 54 - shadow: X - domain: 54
-Element, global: 55 - local: 55 - shadow: X - domain: 55
-Element, global: 56 - local: 56 - shadow: X - domain: 56
-Element, global: 57 - local: 57 - shadow: X - domain: 57
-Element, global: 58 - local: 58 - shadow: X - domain: 58
-Element, global: 59 - local: 59 - shadow: X - domain: 59
-Element, global: 60 - local: 60 - shadow: X - domain: 60
-Element, global: 61 - local: 61 - shadow: X - domain: 61
-Element, global: 62 - local: 62 - shadow: X - domain: 62
-Element, global: 63 - local: 63 - shadow: X - domain: 63
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 2
-Element, local: 3 - global: 3
-Element, local: 4 - global: 4
-Element, local: 5 - global: 5
-Element, local: 6 - global: 6
-Element, local: 7 - global: 7
-Element, local: 8 - global: 8
-Element, local: 9 - global: 9
-Element, local: 10 - global: 10
-Element, local: 11 - global: 11
-Element, local: 12 - global: 12
-Element, local: 13 - global: 13
-Element, local: 14 - global: 14
-Element, local: 15 - global: 15
-Element, local: 16 - global: 16
-Element, local: 17 - global: 17
-Element, local: 18 - global: 18
-Element, local: 19 - global: 19
-Element, local: 20 - global: 20
-Element, local: 21 - global: 21
-Element, local: 22 - global: 22
-Element, local: 23 - global: 23
-Element, local: 24 - global: 24
-Element, local: 25 - global: 25
-Element, local: 26 - global: 26
-Element, local: 27 - global: 27
-Element, local: 28 - global: 28
-Element, local: 29 - global: 29
-Element, local: 30 - global: 30
-Element, local: 31 - global: 31
-Element, local: 32 - global: 32
-Element, local: 33 - global: 33
-Element, local: 34 - global: 34
-Element, local: 35 - global: 35
-Element, local: 36 - global: 36
-Element, local: 37 - global: 37
-Element, local: 38 - global: 38
-Element, local: 39 - global: 39
-Element, local: 40 - global: 40
-Element, local: 41 - global: 41
-Element, local: 42 - global: 42
-Element, local: 43 - global: 43
-Element, local: 44 - global: 44
-Element, local: 45 - global: 45
-Element, local: 46 - global: 46
-Element, local: 47 - global: 47
-Element, local: 48 - global: 48
-Element, local: 49 - global: 49
-Element, local: 50 - global: 50
-Element, local: 51 - global: 51
-Element, local: 52 - global: 52
-Element, local: 53 - global: 53
-Element, local: 54 - global: 54
-Element, local: 55 - global: 55
-Element, local: 56 - global: 56
-Element, local: 57 - global: 57
-Element, local: 58 - global: 58
-Element, local: 59 - global: 59
-Element, local: 60 - global: 60
-Element, local: 61 - global: 61
-Element, local: 62 - global: 62
-Element, local: 63 - global: 63
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 2
-Element, domain: 3 - global: 3
-Element, domain: 4 - global: 4
-Element, domain: 5 - global: 5
-Element, domain: 6 - global: 6
-Element, domain: 7 - global: 7
-Element, domain: 8 - global: 8
-Element, domain: 9 - global: 9
-Element, domain: 10 - global: 10
-Element, domain: 11 - global: 11
-Element, domain: 12 - global: 12
-Element, domain: 13 - global: 13
-Element, domain: 14 - global: 14
-Element, domain: 15 - global: 15
-Element, domain: 16 - global: 16
-Element, domain: 17 - global: 17
-Element, domain: 18 - global: 18
-Element, domain: 19 - global: 19
-Element, domain: 20 - global: 20
-Element, domain: 21 - global: 21
-Element, domain: 22 - global: 22
-Element, domain: 23 - global: 23
-Element, domain: 24 - global: 24
-Element, domain: 25 - global: 25
-Element, domain: 26 - global: 26
-Element, domain: 27 - global: 27
-Element, domain: 28 - global: 28
-Element, domain: 29 - global: 29
-Element, domain: 30 - global: 30
-Element, domain: 31 - global: 31
-Element, domain: 32 - global: 32
-Element, domain: 33 - global: 33
-Element, domain: 34 - global: 34
-Element, domain: 35 - global: 35
-Element, domain: 36 - global: 36
-Element, domain: 37 - global: 37
-Element, domain: 38 - global: 38
-Element, domain: 39 - global: 39
-Element, domain: 40 - global: 40
-Element, domain: 41 - global: 41
-Element, domain: 42 - global: 42
-Element, domain: 43 - global: 43
-Element, domain: 44 - global: 44
-Element, domain: 45 - global: 45
-Element, domain: 46 - global: 46
-Element, domain: 47 - global: 47
-Element, domain: 48 - global: 48
-Element, domain: 49 - global: 49
-Element, domain: 50 - global: 50
-Element, domain: 51 - global: 51
-Element, domain: 52 - global: 52
-Element, domain: 53 - global: 53
-Element, domain: 54 - global: 54
-Element, domain: 55 - global: 55
-Element, domain: 56 - global: 56
-Element, domain: 57 - global: 57
-Element, domain: 58 - global: 58
-Element, domain: 59 - global: 59
-Element, domain: 60 - global: 60
-Element, domain: 61 - global: 61
-Element, domain: 62 - global: 62
-Element, domain: 63 - global: 63
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: 3 - shadow: X - domain: 3
-Node, global: 4 - local: 4 - shadow: X - domain: 4
-Node, global: 5 - local: 5 - shadow: X - domain: 5
-Node, global: 6 - local: 6 - shadow: X - domain: 6
-Node, global: 7 - local: 7 - shadow: X - domain: 7
-Node, global: 8 - local: 8 - shadow: X - domain: 8
-Node, global: 9 - local: 9 - shadow: X - domain: 9
-Node, global: 10 - local: 10 - shadow: X - domain: 10
-Node, global: 11 - local: 11 - shadow: X - domain: 11
-Node, global: 12 - local: 12 - shadow: X - domain: 12
-Node, global: 13 - local: 13 - shadow: X - domain: 13
-Node, global: 14 - local: 14 - shadow: X - domain: 14
-Node, global: 15 - local: 15 - shadow: X - domain: 15
-Node, global: 16 - local: 16 - shadow: X - domain: 16
-Node, global: 17 - local: 17 - shadow: X - domain: 17
-Node, global: 18 - local: 18 - shadow: X - domain: 18
-Node, global: 19 - local: 19 - shadow: X - domain: 19
-Node, global: 20 - local: 20 - shadow: X - domain: 20
-Node, global: 21 - local: 21 - shadow: X - domain: 21
-Node, global: 22 - local: 22 - shadow: X - domain: 22
-Node, global: 23 - local: 23 - shadow: X - domain: 23
-Node, global: 24 - local: 24 - shadow: X - domain: 24
-Node, global: 25 - local: 25 - shadow: X - domain: 25
-Node, global: 26 - local: 26 - shadow: X - domain: 26
-Node, global: 27 - local: 27 - shadow: X - domain: 27
-Node, global: 28 - local: 28 - shadow: X - domain: 28
-Node, global: 29 - local: 29 - shadow: X - domain: 29
-Node, global: 30 - local: 30 - shadow: X - domain: 30
-Node, global: 31 - local: 31 - shadow: X - domain: 31
-Node, global: 32 - local: 32 - shadow: X - domain: 32
-Node, global: 33 - local: 33 - shadow: X - domain: 33
-Node, global: 34 - local: 34 - shadow: X - domain: 34
-Node, global: 35 - local: 35 - shadow: X - domain: 35
-Node, global: 36 - local: 36 - shadow: X - domain: 36
-Node, global: 37 - local: 37 - shadow: X - domain: 37
-Node, global: 38 - local: 38 - shadow: X - domain: 38
-Node, global: 39 - local: 39 - shadow: X - domain: 39
-Node, global: 40 - local: 40 - shadow: X - domain: 40
-Node, global: 41 - local: 41 - shadow: X - domain: 41
-Node, global: 42 - local: 42 - shadow: X - domain: 42
-Node, global: 43 - local: 43 - shadow: X - domain: 43
-Node, global: 44 - local: 44 - shadow: X - domain: 44
-Node, global: 45 - local: 45 - shadow: X - domain: 45
-Node, global: 46 - local: 46 - shadow: X - domain: 46
-Node, global: 47 - local: 47 - shadow: X - domain: 47
-Node, global: 48 - local: 48 - shadow: X - domain: 48
-Node, global: 49 - local: 49 - shadow: X - domain: 49
-Node, global: 50 - local: 50 - shadow: X - domain: 50
-Node, global: 51 - local: 51 - shadow: X - domain: 51
-Node, global: 52 - local: 52 - shadow: X - domain: 52
-Node, global: 53 - local: 53 - shadow: X - domain: 53
-Node, global: 54 - local: 54 - shadow: X - domain: 54
-Node, global: 55 - local: 55 - shadow: X - domain: 55
-Node, global: 56 - local: 56 - shadow: X - domain: 56
-Node, global: 57 - local: 57 - shadow: X - domain: 57
-Node, global: 58 - local: 58 - shadow: X - domain: 58
-Node, global: 59 - local: 59 - shadow: X - domain: 59
-Node, global: 60 - local: 60 - shadow: X - domain: 60
-Node, global: 61 - local: 61 - shadow: X - domain: 61
-Node, global: 62 - local: 62 - shadow: X - domain: 62
-Node, global: 63 - local: 63 - shadow: X - domain: 63
-Node, global: 64 - local: 64 - shadow: X - domain: 64
-Node, global: 65 - local: 65 - shadow: X - domain: 65
-Node, global: 66 - local: 66 - shadow: X - domain: 66
-Node, global: 67 - local: 67 - shadow: X - domain: 67
-Node, global: 68 - local: 68 - shadow: X - domain: 68
-Node, global: 69 - local: 69 - shadow: X - domain: 69
-Node, global: 70 - local: 70 - shadow: X - domain: 70
-Node, global: 71 - local: 71 - shadow: X - domain: 71
-Node, global: 72 - local: 72 - shadow: X - domain: 72
-Node, global: 73 - local: 73 - shadow: X - domain: 73
-Node, global: 74 - local: 74 - shadow: X - domain: 74
-Node, global: 75 - local: 75 - shadow: X - domain: 75
-Node, global: 76 - local: 76 - shadow: X - domain: 76
-Node, global: 77 - local: 77 - shadow: X - domain: 77
-Node, global: 78 - local: 78 - shadow: X - domain: 78
-Node, global: 79 - local: 79 - shadow: X - domain: 79
-Node, global: 80 - local: 80 - shadow: X - domain: 80
-Node, global: 81 - local: 81 - shadow: X - domain: 81
-Node, global: 82 - local: 82 - shadow: X - domain: 82
-Node, global: 83 - local: 83 - shadow: X - domain: 83
-Node, global: 84 - local: 84 - shadow: X - domain: 84
-Node, global: 85 - local: 85 - shadow: X - domain: 85
-Node, global: 86 - local: 86 - shadow: X - domain: 86
-Node, global: 87 - local: 87 - shadow: X - domain: 87
-Node, global: 88 - local: 88 - shadow: X - domain: 88
-Node, global: 89 - local: 89 - shadow: X - domain: 89
-Node, global: 90 - local: 90 - shadow: X - domain: 90
-Node, global: 91 - local: 91 - shadow: X - domain: 91
-Node, global: 92 - local: 92 - shadow: X - domain: 92
-Node, global: 93 - local: 93 - shadow: X - domain: 93
-Node, global: 94 - local: 94 - shadow: X - domain: 94
-Node, global: 95 - local: 95 - shadow: X - domain: 95
-Node, global: 96 - local: 96 - shadow: X - domain: 96
-Node, global: 97 - local: 97 - shadow: X - domain: 97
-Node, global: 98 - local: 98 - shadow: X - domain: 98
-Node, global: 99 - local: 99 - shadow: X - domain: 99
-Node, global: 100 - local: 100 - shadow: X - domain: 100
-Node, global: 101 - local: 101 - shadow: X - domain: 101
-Node, global: 102 - local: 102 - shadow: X - domain: 102
-Node, global: 103 - local: 103 - shadow: X - domain: 103
-Node, global: 104 - local: 104 - shadow: X - domain: 104
-Node, global: 105 - local: 105 - shadow: X - domain: 105
-Node, global: 106 - local: 106 - shadow: X - domain: 106
-Node, global: 107 - local: 107 - shadow: X - domain: 107
-Node, global: 108 - local: 108 - shadow: X - domain: 108
-Node, global: 109 - local: 109 - shadow: X - domain: 109
-Node, global: 110 - local: 110 - shadow: X - domain: 110
-Node, global: 111 - local: 111 - shadow: X - domain: 111
-Node, global: 112 - local: 112 - shadow: X - domain: 112
-Node, global: 113 - local: 113 - shadow: X - domain: 113
-Node, global: 114 - local: 114 - shadow: X - domain: 114
-Node, global: 115 - local: 115 - shadow: X - domain: 115
-Node, global: 116 - local: 116 - shadow: X - domain: 116
-Node, global: 117 - local: 117 - shadow: X - domain: 117
-Node, global: 118 - local: 118 - shadow: X - domain: 118
-Node, global: 119 - local: 119 - shadow: X - domain: 119
-Node, global: 120 - local: 120 - shadow: X - domain: 120
-Node, global: 121 - local: 121 - shadow: X - domain: 121
-Node, global: 122 - local: 122 - shadow: X - domain: 122
-Node, global: 123 - local: 123 - shadow: X - domain: 123
-Node, global: 124 - local: 124 - shadow: X - domain: 124
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 3
-Node, local: 4 - global: 4
-Node, local: 5 - global: 5
-Node, local: 6 - global: 6
-Node, local: 7 - global: 7
-Node, local: 8 - global: 8
-Node, local: 9 - global: 9
-Node, local: 10 - global: 10
-Node, local: 11 - global: 11
-Node, local: 12 - global: 12
-Node, local: 13 - global: 13
-Node, local: 14 - global: 14
-Node, local: 15 - global: 15
-Node, local: 16 - global: 16
-Node, local: 17 - global: 17
-Node, local: 18 - global: 18
-Node, local: 19 - global: 19
-Node, local: 20 - global: 20
-Node, local: 21 - global: 21
-Node, local: 22 - global: 22
-Node, local: 23 - global: 23
-Node, local: 24 - global: 24
-Node, local: 25 - global: 25
-Node, local: 26 - global: 26
-Node, local: 27 - global: 27
-Node, local: 28 - global: 28
-Node, local: 29 - global: 29
-Node, local: 30 - global: 30
-Node, local: 31 - global: 31
-Node, local: 32 - global: 32
-Node, local: 33 - global: 33
-Node, local: 34 - global: 34
-Node, local: 35 - global: 35
-Node, local: 36 - global: 36
-Node, local: 37 - global: 37
-Node, local: 38 - global: 38
-Node, local: 39 - global: 39
-Node, local: 40 - global: 40
-Node, local: 41 - global: 41
-Node, local: 42 - global: 42
-Node, local: 43 - global: 43
-Node, local: 44 - global: 44
-Node, local: 45 - global: 45
-Node, local: 46 - global: 46
-Node, local: 47 - global: 47
-Node, local: 48 - global: 48
-Node, local: 49 - global: 49
-Node, local: 50 - global: 50
-Node, local: 51 - global: 51
-Node, local: 52 - global: 52
-Node, local: 53 - global: 53
-Node, local: 54 - global: 54
-Node, local: 55 - global: 55
-Node, local: 56 - global: 56
-Node, local: 57 - global: 57
-Node, local: 58 - global: 58
-Node, local: 59 - global: 59
-Node, local: 60 - global: 60
-Node, local: 61 - global: 61
-Node, local: 62 - global: 62
-Node, local: 63 - global: 63
-Node, local: 64 - global: 64
-Node, local: 65 - global: 65
-Node, local: 66 - global: 66
-Node, local: 67 - global: 67
-Node, local: 68 - global: 68
-Node, local: 69 - global: 69
-Node, local: 70 - global: 70
-Node, local: 71 - global: 71
-Node, local: 72 - global: 72
-Node, local: 73 - global: 73
-Node, local: 74 - global: 74
-Node, local: 75 - global: 75
-Node, local: 76 - global: 76
-Node, local: 77 - global: 77
-Node, local: 78 - global: 78
-Node, local: 79 - global: 79
-Node, local: 80 - global: 80
-Node, local: 81 - global: 81
-Node, local: 82 - global: 82
-Node, local: 83 - global: 83
-Node, local: 84 - global: 84
-Node, local: 85 - global: 85
-Node, local: 86 - global: 86
-Node, local: 87 - global: 87
-Node, local: 88 - global: 88
-Node, local: 89 - global: 89
-Node, local: 90 - global: 90
-Node, local: 91 - global: 91
-Node, local: 92 - global: 92
-Node, local: 93 - global: 93
-Node, local: 94 - global: 94
-Node, local: 95 - global: 95
-Node, local: 96 - global: 96
-Node, local: 97 - global: 97
-Node, local: 98 - global: 98
-Node, local: 99 - global: 99
-Node, local: 100 - global: 100
-Node, local: 101 - global: 101
-Node, local: 102 - global: 102
-Node, local: 103 - global: 103
-Node, local: 104 - global: 104
-Node, local: 105 - global: 105
-Node, local: 106 - global: 106
-Node, local: 107 - global: 107
-Node, local: 108 - global: 108
-Node, local: 109 - global: 109
-Node, local: 110 - global: 110
-Node, local: 111 - global: 111
-Node, local: 112 - global: 112
-Node, local: 113 - global: 113
-Node, local: 114 - global: 114
-Node, local: 115 - global: 115
-Node, local: 116 - global: 116
-Node, local: 117 - global: 117
-Node, local: 118 - global: 118
-Node, local: 119 - global: 119
-Node, local: 120 - global: 120
-Node, local: 121 - global: 121
-Node, local: 122 - global: 122
-Node, local: 123 - global: 123
-Node, local: 124 - global: 124
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 3
-Node, domain: 4 - global: 4
-Node, domain: 5 - global: 5
-Node, domain: 6 - global: 6
-Node, domain: 7 - global: 7
-Node, domain: 8 - global: 8
-Node, domain: 9 - global: 9
-Node, domain: 10 - global: 10
-Node, domain: 11 - global: 11
-Node, domain: 12 - global: 12
-Node, domain: 13 - global: 13
-Node, domain: 14 - global: 14
-Node, domain: 15 - global: 15
-Node, domain: 16 - global: 16
-Node, domain: 17 - global: 17
-Node, domain: 18 - global: 18
-Node, domain: 19 - global: 19
-Node, domain: 20 - global: 20
-Node, domain: 21 - global: 21
-Node, domain: 22 - global: 22
-Node, domain: 23 - global: 23
-Node, domain: 24 - global: 24
-Node, domain: 25 - global: 25
-Node, domain: 26 - global: 26
-Node, domain: 27 - global: 27
-Node, domain: 28 - global: 28
-Node, domain: 29 - global: 29
-Node, domain: 30 - global: 30
-Node, domain: 31 - global: 31
-Node, domain: 32 - global: 32
-Node, domain: 33 - global: 33
-Node, domain: 34 - global: 34
-Node, domain: 35 - global: 35
-Node, domain: 36 - global: 36
-Node, domain: 37 - global: 37
-Node, domain: 38 - global: 38
-Node, domain: 39 - global: 39
-Node, domain: 40 - global: 40
-Node, domain: 41 - global: 41
-Node, domain: 42 - global: 42
-Node, domain: 43 - global: 43
-Node, domain: 44 - global: 44
-Node, domain: 45 - global: 45
-Node, domain: 46 - global: 46
-Node, domain: 47 - global: 47
-Node, domain: 48 - global: 48
-Node, domain: 49 - global: 49
-Node, domain: 50 - global: 50
-Node, domain: 51 - global: 51
-Node, domain: 52 - global: 52
-Node, domain: 53 - global: 53
-Node, domain: 54 - global: 54
-Node, domain: 55 - global: 55
-Node, domain: 56 - global: 56
-Node, domain: 57 - global: 57
-Node, domain: 58 - global: 58
-Node, domain: 59 - global: 59
-Node, domain: 60 - global: 60
-Node, domain: 61 - global: 61
-Node, domain: 62 - global: 62
-Node, domain: 63 - global: 63
-Node, domain: 64 - global: 64
-Node, domain: 65 - global: 65
-Node, domain: 66 - global: 66
-Node, domain: 67 - global: 67
-Node, domain: 68 - global: 68
-Node, domain: 69 - global: 69
-Node, domain: 70 - global: 70
-Node, domain: 71 - global: 71
-Node, domain: 72 - global: 72
-Node, domain: 73 - global: 73
-Node, domain: 74 - global: 74
-Node, domain: 75 - global: 75
-Node, domain: 76 - global: 76
-Node, domain: 77 - global: 77
-Node, domain: 78 - global: 78
-Node, domain: 79 - global: 79
-Node, domain: 80 - global: 80
-Node, domain: 81 - global: 81
-Node, domain: 82 - global: 82
-Node, domain: 83 - global: 83
-Node, domain: 84 - global: 84
-Node, domain: 85 - global: 85
-Node, domain: 86 - global: 86
-Node, domain: 87 - global: 87
-Node, domain: 88 - global: 88
-Node, domain: 89 - global: 89
-Node, domain: 90 - global: 90
-Node, domain: 91 - global: 91
-Node, domain: 92 - global: 92
-Node, domain: 93 - global: 93
-Node, domain: 94 - global: 94
-Node, domain: 95 - global: 95
-Node, domain: 96 - global: 96
-Node, domain: 97 - global: 97
-Node, domain: 98 - global: 98
-Node, domain: 99 - global: 99
-Node, domain: 100 - global: 100
-Node, domain: 101 - global: 101
-Node, domain: 102 - global: 102
-Node, domain: 103 - global: 103
-Node, domain: 104 - global: 104
-Node, domain: 105 - global: 105
-Node, domain: 106 - global: 106
-Node, domain: 107 - global: 107
-Node, domain: 108 - global: 108
-Node, domain: 109 - global: 109
-Node, domain: 110 - global: 110
-Node, domain: 111 - global: 111
-Node, domain: 112 - global: 112
-Node, domain: 113 - global: 113
-Node, domain: 114 - global: 114
-Node, domain: 115 - global: 115
-Node, domain: 116 - global: 116
-Node, domain: 117 - global: 117
-Node, domain: 118 - global: 118
-Node, domain: 119 - global: 119
-Node, domain: 120 - global: 120
-Node, domain: 121 - global: 121
-Node, domain: 122 - global: 122
-Node, domain: 123 - global: 123
-Node, domain: 124 - global: 124
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,486 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061400)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 3, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 32
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 1 - domain: 33
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: X - shadow: 2 - domain: 34
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: 6 - shadow: X - domain: 6
-Element, global: 13 - local: 7 - shadow: X - domain: 7
-Element, global: 14 - local: X - shadow: 3 - domain: 35
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: X - shadow: 4 - domain: 36
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: 10 - shadow: X - domain: 10
-Element, global: 21 - local: 11 - shadow: X - domain: 11
-Element, global: 22 - local: X - shadow: 5 - domain: 37
-Element, global: 23 - local: X - shadow: X - domain: X
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: X - shadow: 6 - domain: 38
-Element, global: 27 - local: X - shadow: X - domain: X
-Element, global: 28 - local: 14 - shadow: X - domain: 14
-Element, global: 29 - local: 15 - shadow: X - domain: 15
-Element, global: 30 - local: X - shadow: 7 - domain: 39
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: X - shadow: 8 - domain: 40
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: 18 - shadow: X - domain: 18
-Element, global: 37 - local: 19 - shadow: X - domain: 19
-Element, global: 38 - local: X - shadow: 9 - domain: 41
-Element, global: 39 - local: X - shadow: X - domain: X
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: X - shadow: 10 - domain: 42
-Element, global: 43 - local: X - shadow: X - domain: X
-Element, global: 44 - local: 22 - shadow: X - domain: 22
-Element, global: 45 - local: 23 - shadow: X - domain: 23
-Element, global: 46 - local: X - shadow: 11 - domain: 43
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: X - shadow: 12 - domain: 44
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: 26 - shadow: X - domain: 26
-Element, global: 53 - local: 27 - shadow: X - domain: 27
-Element, global: 54 - local: X - shadow: 13 - domain: 45
-Element, global: 55 - local: X - shadow: X - domain: X
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: X - shadow: 14 - domain: 46
-Element, global: 59 - local: X - shadow: X - domain: X
-Element, global: 60 - local: 30 - shadow: X - domain: 30
-Element, global: 61 - local: 31 - shadow: X - domain: 31
-Element, global: 62 - local: X - shadow: 15 - domain: 47
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 12
-Element, local: 7 - global: 13
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 20
-Element, local: 11 - global: 21
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 28
-Element, local: 15 - global: 29
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 36
-Element, local: 19 - global: 37
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 44
-Element, local: 23 - global: 45
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 52
-Element, local: 27 - global: 53
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 60
-Element, local: 31 - global: 61
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 12
-Element, domain: 7 - global: 13
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 20
-Element, domain: 11 - global: 21
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 28
-Element, domain: 15 - global: 29
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 36
-Element, domain: 19 - global: 37
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 44
-Element, domain: 23 - global: 45
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 52
-Element, domain: 27 - global: 53
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 60
-Element, domain: 31 - global: 61
-Element, domain: 32 - global: 2
-Element, domain: 33 - global: 6
-Element, domain: 34 - global: 10
-Element, domain: 35 - global: 14
-Element, domain: 36 - global: 18
-Element, domain: 37 - global: 22
-Element, domain: 38 - global: 26
-Element, domain: 39 - global: 30
-Element, domain: 40 - global: 34
-Element, domain: 41 - global: 38
-Element, domain: 42 - global: 42
-Element, domain: 43 - global: 46
-Element, domain: 44 - global: 50
-Element, domain: 45 - global: 54
-Element, domain: 46 - global: 58
-Element, domain: 47 - global: 62
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 75
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 1 - domain: 76
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 2 - domain: 77
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: 9 - shadow: X - domain: 9
-Node, global: 16 - local: 10 - shadow: X - domain: 10
-Node, global: 17 - local: 11 - shadow: X - domain: 11
-Node, global: 18 - local: X - shadow: 3 - domain: 78
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 4 - domain: 79
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: 15 - shadow: X - domain: 15
-Node, global: 26 - local: 16 - shadow: X - domain: 16
-Node, global: 27 - local: 17 - shadow: X - domain: 17
-Node, global: 28 - local: X - shadow: 5 - domain: 80
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: 20 - shadow: X - domain: 20
-Node, global: 33 - local: X - shadow: 6 - domain: 81
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: 21 - shadow: X - domain: 21
-Node, global: 36 - local: 22 - shadow: X - domain: 22
-Node, global: 37 - local: 23 - shadow: X - domain: 23
-Node, global: 38 - local: X - shadow: 7 - domain: 82
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: 25 - shadow: X - domain: 25
-Node, global: 42 - local: 26 - shadow: X - domain: 26
-Node, global: 43 - local: X - shadow: 8 - domain: 83
-Node, global: 44 - local: X - shadow: X - domain: X
-Node, global: 45 - local: 27 - shadow: X - domain: 27
-Node, global: 46 - local: 28 - shadow: X - domain: 28
-Node, global: 47 - local: 29 - shadow: X - domain: 29
-Node, global: 48 - local: X - shadow: 9 - domain: 84
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: 30 - shadow: X - domain: 30
-Node, global: 51 - local: 31 - shadow: X - domain: 31
-Node, global: 52 - local: 32 - shadow: X - domain: 32
-Node, global: 53 - local: X - shadow: 10 - domain: 85
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: 33 - shadow: X - domain: 33
-Node, global: 56 - local: 34 - shadow: X - domain: 34
-Node, global: 57 - local: 35 - shadow: X - domain: 35
-Node, global: 58 - local: X - shadow: 11 - domain: 86
-Node, global: 59 - local: X - shadow: X - domain: X
-Node, global: 60 - local: 36 - shadow: X - domain: 36
-Node, global: 61 - local: 37 - shadow: X - domain: 37
-Node, global: 62 - local: 38 - shadow: X - domain: 38
-Node, global: 63 - local: X - shadow: 12 - domain: 87
-Node, global: 64 - local: X - shadow: X - domain: X
-Node, global: 65 - local: 39 - shadow: X - domain: 39
-Node, global: 66 - local: 40 - shadow: X - domain: 40
-Node, global: 67 - local: 41 - shadow: X - domain: 41
-Node, global: 68 - local: X - shadow: 13 - domain: 88
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: 42 - shadow: X - domain: 42
-Node, global: 71 - local: 43 - shadow: X - domain: 43
-Node, global: 72 - local: 44 - shadow: X - domain: 44
-Node, global: 73 - local: X - shadow: 14 - domain: 89
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: 45 - shadow: X - domain: 45
-Node, global: 76 - local: 46 - shadow: X - domain: 46
-Node, global: 77 - local: 47 - shadow: X - domain: 47
-Node, global: 78 - local: X - shadow: 15 - domain: 90
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: 48 - shadow: X - domain: 48
-Node, global: 81 - local: 49 - shadow: X - domain: 49
-Node, global: 82 - local: 50 - shadow: X - domain: 50
-Node, global: 83 - local: X - shadow: 16 - domain: 91
-Node, global: 84 - local: X - shadow: X - domain: X
-Node, global: 85 - local: 51 - shadow: X - domain: 51
-Node, global: 86 - local: 52 - shadow: X - domain: 52
-Node, global: 87 - local: 53 - shadow: X - domain: 53
-Node, global: 88 - local: X - shadow: 17 - domain: 92
-Node, global: 89 - local: X - shadow: X - domain: X
-Node, global: 90 - local: 54 - shadow: X - domain: 54
-Node, global: 91 - local: 55 - shadow: X - domain: 55
-Node, global: 92 - local: 56 - shadow: X - domain: 56
-Node, global: 93 - local: X - shadow: 18 - domain: 93
-Node, global: 94 - local: X - shadow: X - domain: X
-Node, global: 95 - local: 57 - shadow: X - domain: 57
-Node, global: 96 - local: 58 - shadow: X - domain: 58
-Node, global: 97 - local: 59 - shadow: X - domain: 59
-Node, global: 98 - local: X - shadow: 19 - domain: 94
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: 60 - shadow: X - domain: 60
-Node, global: 101 - local: 61 - shadow: X - domain: 61
-Node, global: 102 - local: 62 - shadow: X - domain: 62
-Node, global: 103 - local: X - shadow: 20 - domain: 95
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: 63 - shadow: X - domain: 63
-Node, global: 106 - local: 64 - shadow: X - domain: 64
-Node, global: 107 - local: 65 - shadow: X - domain: 65
-Node, global: 108 - local: X - shadow: 21 - domain: 96
-Node, global: 109 - local: X - shadow: X - domain: X
-Node, global: 110 - local: 66 - shadow: X - domain: 66
-Node, global: 111 - local: 67 - shadow: X - domain: 67
-Node, global: 112 - local: 68 - shadow: X - domain: 68
-Node, global: 113 - local: X - shadow: 22 - domain: 97
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: 69 - shadow: X - domain: 69
-Node, global: 116 - local: 70 - shadow: X - domain: 70
-Node, global: 117 - local: 71 - shadow: X - domain: 71
-Node, global: 118 - local: X - shadow: 23 - domain: 98
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: 72 - shadow: X - domain: 72
-Node, global: 121 - local: 73 - shadow: X - domain: 73
-Node, global: 122 - local: 74 - shadow: X - domain: 74
-Node, global: 123 - local: X - shadow: 24 - domain: 99
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 15
-Node, local: 10 - global: 16
-Node, local: 11 - global: 17
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 25
-Node, local: 16 - global: 26
-Node, local: 17 - global: 27
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 32
-Node, local: 21 - global: 35
-Node, local: 22 - global: 36
-Node, local: 23 - global: 37
-Node, local: 24 - global: 40
-Node, local: 25 - global: 41
-Node, local: 26 - global: 42
-Node, local: 27 - global: 45
-Node, local: 28 - global: 46
-Node, local: 29 - global: 47
-Node, local: 30 - global: 50
-Node, local: 31 - global: 51
-Node, local: 32 - global: 52
-Node, local: 33 - global: 55
-Node, local: 34 - global: 56
-Node, local: 35 - global: 57
-Node, local: 36 - global: 60
-Node, local: 37 - global: 61
-Node, local: 38 - global: 62
-Node, local: 39 - global: 65
-Node, local: 40 - global: 66
-Node, local: 41 - global: 67
-Node, local: 42 - global: 70
-Node, local: 43 - global: 71
-Node, local: 44 - global: 72
-Node, local: 45 - global: 75
-Node, local: 46 - global: 76
-Node, local: 47 - global: 77
-Node, local: 48 - global: 80
-Node, local: 49 - global: 81
-Node, local: 50 - global: 82
-Node, local: 51 - global: 85
-Node, local: 52 - global: 86
-Node, local: 53 - global: 87
-Node, local: 54 - global: 90
-Node, local: 55 - global: 91
-Node, local: 56 - global: 92
-Node, local: 57 - global: 95
-Node, local: 58 - global: 96
-Node, local: 59 - global: 97
-Node, local: 60 - global: 100
-Node, local: 61 - global: 101
-Node, local: 62 - global: 102
-Node, local: 63 - global: 105
-Node, local: 64 - global: 106
-Node, local: 65 - global: 107
-Node, local: 66 - global: 110
-Node, local: 67 - global: 111
-Node, local: 68 - global: 112
-Node, local: 69 - global: 115
-Node, local: 70 - global: 116
-Node, local: 71 - global: 117
-Node, local: 72 - global: 120
-Node, local: 73 - global: 121
-Node, local: 74 - global: 122
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 15
-Node, domain: 10 - global: 16
-Node, domain: 11 - global: 17
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 25
-Node, domain: 16 - global: 26
-Node, domain: 17 - global: 27
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 32
-Node, domain: 21 - global: 35
-Node, domain: 22 - global: 36
-Node, domain: 23 - global: 37
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 41
-Node, domain: 26 - global: 42
-Node, domain: 27 - global: 45
-Node, domain: 28 - global: 46
-Node, domain: 29 - global: 47
-Node, domain: 30 - global: 50
-Node, domain: 31 - global: 51
-Node, domain: 32 - global: 52
-Node, domain: 33 - global: 55
-Node, domain: 34 - global: 56
-Node, domain: 35 - global: 57
-Node, domain: 36 - global: 60
-Node, domain: 37 - global: 61
-Node, domain: 38 - global: 62
-Node, domain: 39 - global: 65
-Node, domain: 40 - global: 66
-Node, domain: 41 - global: 67
-Node, domain: 42 - global: 70
-Node, domain: 43 - global: 71
-Node, domain: 44 - global: 72
-Node, domain: 45 - global: 75
-Node, domain: 46 - global: 76
-Node, domain: 47 - global: 77
-Node, domain: 48 - global: 80
-Node, domain: 49 - global: 81
-Node, domain: 50 - global: 82
-Node, domain: 51 - global: 85
-Node, domain: 52 - global: 86
-Node, domain: 53 - global: 87
-Node, domain: 54 - global: 90
-Node, domain: 55 - global: 91
-Node, domain: 56 - global: 92
-Node, domain: 57 - global: 95
-Node, domain: 58 - global: 96
-Node, domain: 59 - global: 97
-Node, domain: 60 - global: 100
-Node, domain: 61 - global: 101
-Node, domain: 62 - global: 102
-Node, domain: 63 - global: 105
-Node, domain: 64 - global: 106
-Node, domain: 65 - global: 107
-Node, domain: 66 - global: 110
-Node, domain: 67 - global: 111
-Node, domain: 68 - global: 112
-Node, domain: 69 - global: 115
-Node, domain: 70 - global: 116
-Node, domain: 71 - global: 117
-Node, domain: 72 - global: 120
-Node, domain: 73 - global: 121
-Node, domain: 74 - global: 122
-Node, domain: 75 - global: 3
-Node, domain: 76 - global: 8
-Node, domain: 77 - global: 13
-Node, domain: 78 - global: 18
-Node, domain: 79 - global: 23
-Node, domain: 80 - global: 28
-Node, domain: 81 - global: 33
-Node, domain: 82 - global: 38
-Node, domain: 83 - global: 43
-Node, domain: 84 - global: 48
-Node, domain: 85 - global: 53
-Node, domain: 86 - global: 58
-Node, domain: 87 - global: 63
-Node, domain: 88 - global: 68
-Node, domain: 89 - global: 73
-Node, domain: 90 - global: 78
-Node, domain: 91 - global: 83
-Node, domain: 92 - global: 88
-Node, domain: 93 - global: 93
-Node, domain: 94 - global: 98
-Node, domain: 95 - global: 103
-Node, domain: 96 - global: 108
-Node, domain: 97 - global: 113
-Node, domain: 98 - global: 118
-Node, domain: 99 - global: 123
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,486 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 0 of 2 in use (3 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8061728)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 3, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: 0 - shadow: X - domain: 0
-Element, global: 1 - local: 1 - shadow: X - domain: 1
-Element, global: 2 - local: X - shadow: 0 - domain: 32
-Element, global: 3 - local: X - shadow: X - domain: X
-Element, global: 4 - local: 2 - shadow: X - domain: 2
-Element, global: 5 - local: 3 - shadow: X - domain: 3
-Element, global: 6 - local: X - shadow: 1 - domain: 33
-Element, global: 7 - local: X - shadow: X - domain: X
-Element, global: 8 - local: 4 - shadow: X - domain: 4
-Element, global: 9 - local: 5 - shadow: X - domain: 5
-Element, global: 10 - local: X - shadow: 2 - domain: 34
-Element, global: 11 - local: X - shadow: X - domain: X
-Element, global: 12 - local: 6 - shadow: X - domain: 6
-Element, global: 13 - local: 7 - shadow: X - domain: 7
-Element, global: 14 - local: X - shadow: 3 - domain: 35
-Element, global: 15 - local: X - shadow: X - domain: X
-Element, global: 16 - local: 8 - shadow: X - domain: 8
-Element, global: 17 - local: 9 - shadow: X - domain: 9
-Element, global: 18 - local: X - shadow: 4 - domain: 36
-Element, global: 19 - local: X - shadow: X - domain: X
-Element, global: 20 - local: 10 - shadow: X - domain: 10
-Element, global: 21 - local: 11 - shadow: X - domain: 11
-Element, global: 22 - local: X - shadow: 5 - domain: 37
-Element, global: 23 - local: X - shadow: X - domain: X
-Element, global: 24 - local: 12 - shadow: X - domain: 12
-Element, global: 25 - local: 13 - shadow: X - domain: 13
-Element, global: 26 - local: X - shadow: 6 - domain: 38
-Element, global: 27 - local: X - shadow: X - domain: X
-Element, global: 28 - local: 14 - shadow: X - domain: 14
-Element, global: 29 - local: 15 - shadow: X - domain: 15
-Element, global: 30 - local: X - shadow: 7 - domain: 39
-Element, global: 31 - local: X - shadow: X - domain: X
-Element, global: 32 - local: 16 - shadow: X - domain: 16
-Element, global: 33 - local: 17 - shadow: X - domain: 17
-Element, global: 34 - local: X - shadow: 8 - domain: 40
-Element, global: 35 - local: X - shadow: X - domain: X
-Element, global: 36 - local: 18 - shadow: X - domain: 18
-Element, global: 37 - local: 19 - shadow: X - domain: 19
-Element, global: 38 - local: X - shadow: 9 - domain: 41
-Element, global: 39 - local: X - shadow: X - domain: X
-Element, global: 40 - local: 20 - shadow: X - domain: 20
-Element, global: 41 - local: 21 - shadow: X - domain: 21
-Element, global: 42 - local: X - shadow: 10 - domain: 42
-Element, global: 43 - local: X - shadow: X - domain: X
-Element, global: 44 - local: 22 - shadow: X - domain: 22
-Element, global: 45 - local: 23 - shadow: X - domain: 23
-Element, global: 46 - local: X - shadow: 11 - domain: 43
-Element, global: 47 - local: X - shadow: X - domain: X
-Element, global: 48 - local: 24 - shadow: X - domain: 24
-Element, global: 49 - local: 25 - shadow: X - domain: 25
-Element, global: 50 - local: X - shadow: 12 - domain: 44
-Element, global: 51 - local: X - shadow: X - domain: X
-Element, global: 52 - local: 26 - shadow: X - domain: 26
-Element, global: 53 - local: 27 - shadow: X - domain: 27
-Element, global: 54 - local: X - shadow: 13 - domain: 45
-Element, global: 55 - local: X - shadow: X - domain: X
-Element, global: 56 - local: 28 - shadow: X - domain: 28
-Element, global: 57 - local: 29 - shadow: X - domain: 29
-Element, global: 58 - local: X - shadow: 14 - domain: 46
-Element, global: 59 - local: X - shadow: X - domain: X
-Element, global: 60 - local: 30 - shadow: X - domain: 30
-Element, global: 61 - local: 31 - shadow: X - domain: 31
-Element, global: 62 - local: X - shadow: 15 - domain: 47
-Element, global: 63 - local: X - shadow: X - domain: X
-
-Element, local: 0 - global: 0
-Element, local: 1 - global: 1
-Element, local: 2 - global: 4
-Element, local: 3 - global: 5
-Element, local: 4 - global: 8
-Element, local: 5 - global: 9
-Element, local: 6 - global: 12
-Element, local: 7 - global: 13
-Element, local: 8 - global: 16
-Element, local: 9 - global: 17
-Element, local: 10 - global: 20
-Element, local: 11 - global: 21
-Element, local: 12 - global: 24
-Element, local: 13 - global: 25
-Element, local: 14 - global: 28
-Element, local: 15 - global: 29
-Element, local: 16 - global: 32
-Element, local: 17 - global: 33
-Element, local: 18 - global: 36
-Element, local: 19 - global: 37
-Element, local: 20 - global: 40
-Element, local: 21 - global: 41
-Element, local: 22 - global: 44
-Element, local: 23 - global: 45
-Element, local: 24 - global: 48
-Element, local: 25 - global: 49
-Element, local: 26 - global: 52
-Element, local: 27 - global: 53
-Element, local: 28 - global: 56
-Element, local: 29 - global: 57
-Element, local: 30 - global: 60
-Element, local: 31 - global: 61
-
-Element, domain: 0 - global: 0
-Element, domain: 1 - global: 1
-Element, domain: 2 - global: 4
-Element, domain: 3 - global: 5
-Element, domain: 4 - global: 8
-Element, domain: 5 - global: 9
-Element, domain: 6 - global: 12
-Element, domain: 7 - global: 13
-Element, domain: 8 - global: 16
-Element, domain: 9 - global: 17
-Element, domain: 10 - global: 20
-Element, domain: 11 - global: 21
-Element, domain: 12 - global: 24
-Element, domain: 13 - global: 25
-Element, domain: 14 - global: 28
-Element, domain: 15 - global: 29
-Element, domain: 16 - global: 32
-Element, domain: 17 - global: 33
-Element, domain: 18 - global: 36
-Element, domain: 19 - global: 37
-Element, domain: 20 - global: 40
-Element, domain: 21 - global: 41
-Element, domain: 22 - global: 44
-Element, domain: 23 - global: 45
-Element, domain: 24 - global: 48
-Element, domain: 25 - global: 49
-Element, domain: 26 - global: 52
-Element, domain: 27 - global: 53
-Element, domain: 28 - global: 56
-Element, domain: 29 - global: 57
-Element, domain: 30 - global: 60
-Element, domain: 31 - global: 61
-Element, domain: 32 - global: 2
-Element, domain: 33 - global: 6
-Element, domain: 34 - global: 10
-Element, domain: 35 - global: 14
-Element, domain: 36 - global: 18
-Element, domain: 37 - global: 22
-Element, domain: 38 - global: 26
-Element, domain: 39 - global: 30
-Element, domain: 40 - global: 34
-Element, domain: 41 - global: 38
-Element, domain: 42 - global: 42
-Element, domain: 43 - global: 46
-Element, domain: 44 - global: 50
-Element, domain: 45 - global: 54
-Element, domain: 46 - global: 58
-Element, domain: 47 - global: 62
-
-Node, global: 0 - local: 0 - shadow: X - domain: 0
-Node, global: 1 - local: 1 - shadow: X - domain: 1
-Node, global: 2 - local: 2 - shadow: X - domain: 2
-Node, global: 3 - local: X - shadow: 0 - domain: 75
-Node, global: 4 - local: X - shadow: X - domain: X
-Node, global: 5 - local: 3 - shadow: X - domain: 3
-Node, global: 6 - local: 4 - shadow: X - domain: 4
-Node, global: 7 - local: 5 - shadow: X - domain: 5
-Node, global: 8 - local: X - shadow: 1 - domain: 76
-Node, global: 9 - local: X - shadow: X - domain: X
-Node, global: 10 - local: 6 - shadow: X - domain: 6
-Node, global: 11 - local: 7 - shadow: X - domain: 7
-Node, global: 12 - local: 8 - shadow: X - domain: 8
-Node, global: 13 - local: X - shadow: 2 - domain: 77
-Node, global: 14 - local: X - shadow: X - domain: X
-Node, global: 15 - local: 9 - shadow: X - domain: 9
-Node, global: 16 - local: 10 - shadow: X - domain: 10
-Node, global: 17 - local: 11 - shadow: X - domain: 11
-Node, global: 18 - local: X - shadow: 3 - domain: 78
-Node, global: 19 - local: X - shadow: X - domain: X
-Node, global: 20 - local: 12 - shadow: X - domain: 12
-Node, global: 21 - local: 13 - shadow: X - domain: 13
-Node, global: 22 - local: 14 - shadow: X - domain: 14
-Node, global: 23 - local: X - shadow: 4 - domain: 79
-Node, global: 24 - local: X - shadow: X - domain: X
-Node, global: 25 - local: 15 - shadow: X - domain: 15
-Node, global: 26 - local: 16 - shadow: X - domain: 16
-Node, global: 27 - local: 17 - shadow: X - domain: 17
-Node, global: 28 - local: X - shadow: 5 - domain: 80
-Node, global: 29 - local: X - shadow: X - domain: X
-Node, global: 30 - local: 18 - shadow: X - domain: 18
-Node, global: 31 - local: 19 - shadow: X - domain: 19
-Node, global: 32 - local: 20 - shadow: X - domain: 20
-Node, global: 33 - local: X - shadow: 6 - domain: 81
-Node, global: 34 - local: X - shadow: X - domain: X
-Node, global: 35 - local: 21 - shadow: X - domain: 21
-Node, global: 36 - local: 22 - shadow: X - domain: 22
-Node, global: 37 - local: 23 - shadow: X - domain: 23
-Node, global: 38 - local: X - shadow: 7 - domain: 82
-Node, global: 39 - local: X - shadow: X - domain: X
-Node, global: 40 - local: 24 - shadow: X - domain: 24
-Node, global: 41 - local: 25 - shadow: X - domain: 25
-Node, global: 42 - local: 26 - shadow: X - domain: 26
-Node, global: 43 - local: X - shadow: 8 - domain: 83
-Node, global: 44 - local: X - shadow: X - domain: X
-Node, global: 45 - local: 27 - shadow: X - domain: 27
-Node, global: 46 - local: 28 - shadow: X - domain: 28
-Node, global: 47 - local: 29 - shadow: X - domain: 29
-Node, global: 48 - local: X - shadow: 9 - domain: 84
-Node, global: 49 - local: X - shadow: X - domain: X
-Node, global: 50 - local: 30 - shadow: X - domain: 30
-Node, global: 51 - local: 31 - shadow: X - domain: 31
-Node, global: 52 - local: 32 - shadow: X - domain: 32
-Node, global: 53 - local: X - shadow: 10 - domain: 85
-Node, global: 54 - local: X - shadow: X - domain: X
-Node, global: 55 - local: 33 - shadow: X - domain: 33
-Node, global: 56 - local: 34 - shadow: X - domain: 34
-Node, global: 57 - local: 35 - shadow: X - domain: 35
-Node, global: 58 - local: X - shadow: 11 - domain: 86
-Node, global: 59 - local: X - shadow: X - domain: X
-Node, global: 60 - local: 36 - shadow: X - domain: 36
-Node, global: 61 - local: 37 - shadow: X - domain: 37
-Node, global: 62 - local: 38 - shadow: X - domain: 38
-Node, global: 63 - local: X - shadow: 12 - domain: 87
-Node, global: 64 - local: X - shadow: X - domain: X
-Node, global: 65 - local: 39 - shadow: X - domain: 39
-Node, global: 66 - local: 40 - shadow: X - domain: 40
-Node, global: 67 - local: 41 - shadow: X - domain: 41
-Node, global: 68 - local: X - shadow: 13 - domain: 88
-Node, global: 69 - local: X - shadow: X - domain: X
-Node, global: 70 - local: 42 - shadow: X - domain: 42
-Node, global: 71 - local: 43 - shadow: X - domain: 43
-Node, global: 72 - local: 44 - shadow: X - domain: 44
-Node, global: 73 - local: X - shadow: 14 - domain: 89
-Node, global: 74 - local: X - shadow: X - domain: X
-Node, global: 75 - local: 45 - shadow: X - domain: 45
-Node, global: 76 - local: 46 - shadow: X - domain: 46
-Node, global: 77 - local: 47 - shadow: X - domain: 47
-Node, global: 78 - local: X - shadow: 15 - domain: 90
-Node, global: 79 - local: X - shadow: X - domain: X
-Node, global: 80 - local: 48 - shadow: X - domain: 48
-Node, global: 81 - local: 49 - shadow: X - domain: 49
-Node, global: 82 - local: 50 - shadow: X - domain: 50
-Node, global: 83 - local: X - shadow: 16 - domain: 91
-Node, global: 84 - local: X - shadow: X - domain: X
-Node, global: 85 - local: 51 - shadow: X - domain: 51
-Node, global: 86 - local: 52 - shadow: X - domain: 52
-Node, global: 87 - local: 53 - shadow: X - domain: 53
-Node, global: 88 - local: X - shadow: 17 - domain: 92
-Node, global: 89 - local: X - shadow: X - domain: X
-Node, global: 90 - local: 54 - shadow: X - domain: 54
-Node, global: 91 - local: 55 - shadow: X - domain: 55
-Node, global: 92 - local: 56 - shadow: X - domain: 56
-Node, global: 93 - local: X - shadow: 18 - domain: 93
-Node, global: 94 - local: X - shadow: X - domain: X
-Node, global: 95 - local: 57 - shadow: X - domain: 57
-Node, global: 96 - local: 58 - shadow: X - domain: 58
-Node, global: 97 - local: 59 - shadow: X - domain: 59
-Node, global: 98 - local: X - shadow: 19 - domain: 94
-Node, global: 99 - local: X - shadow: X - domain: X
-Node, global: 100 - local: 60 - shadow: X - domain: 60
-Node, global: 101 - local: 61 - shadow: X - domain: 61
-Node, global: 102 - local: 62 - shadow: X - domain: 62
-Node, global: 103 - local: X - shadow: 20 - domain: 95
-Node, global: 104 - local: X - shadow: X - domain: X
-Node, global: 105 - local: 63 - shadow: X - domain: 63
-Node, global: 106 - local: 64 - shadow: X - domain: 64
-Node, global: 107 - local: 65 - shadow: X - domain: 65
-Node, global: 108 - local: X - shadow: 21 - domain: 96
-Node, global: 109 - local: X - shadow: X - domain: X
-Node, global: 110 - local: 66 - shadow: X - domain: 66
-Node, global: 111 - local: 67 - shadow: X - domain: 67
-Node, global: 112 - local: 68 - shadow: X - domain: 68
-Node, global: 113 - local: X - shadow: 22 - domain: 97
-Node, global: 114 - local: X - shadow: X - domain: X
-Node, global: 115 - local: 69 - shadow: X - domain: 69
-Node, global: 116 - local: 70 - shadow: X - domain: 70
-Node, global: 117 - local: 71 - shadow: X - domain: 71
-Node, global: 118 - local: X - shadow: 23 - domain: 98
-Node, global: 119 - local: X - shadow: X - domain: X
-Node, global: 120 - local: 72 - shadow: X - domain: 72
-Node, global: 121 - local: 73 - shadow: X - domain: 73
-Node, global: 122 - local: 74 - shadow: X - domain: 74
-Node, global: 123 - local: X - shadow: 24 - domain: 99
-Node, global: 124 - local: X - shadow: X - domain: X
-
-Node, local: 0 - global: 0
-Node, local: 1 - global: 1
-Node, local: 2 - global: 2
-Node, local: 3 - global: 5
-Node, local: 4 - global: 6
-Node, local: 5 - global: 7
-Node, local: 6 - global: 10
-Node, local: 7 - global: 11
-Node, local: 8 - global: 12
-Node, local: 9 - global: 15
-Node, local: 10 - global: 16
-Node, local: 11 - global: 17
-Node, local: 12 - global: 20
-Node, local: 13 - global: 21
-Node, local: 14 - global: 22
-Node, local: 15 - global: 25
-Node, local: 16 - global: 26
-Node, local: 17 - global: 27
-Node, local: 18 - global: 30
-Node, local: 19 - global: 31
-Node, local: 20 - global: 32
-Node, local: 21 - global: 35
-Node, local: 22 - global: 36
-Node, local: 23 - global: 37
-Node, local: 24 - global: 40
-Node, local: 25 - global: 41
-Node, local: 26 - global: 42
-Node, local: 27 - global: 45
-Node, local: 28 - global: 46
-Node, local: 29 - global: 47
-Node, local: 30 - global: 50
-Node, local: 31 - global: 51
-Node, local: 32 - global: 52
-Node, local: 33 - global: 55
-Node, local: 34 - global: 56
-Node, local: 35 - global: 57
-Node, local: 36 - global: 60
-Node, local: 37 - global: 61
-Node, local: 38 - global: 62
-Node, local: 39 - global: 65
-Node, local: 40 - global: 66
-Node, local: 41 - global: 67
-Node, local: 42 - global: 70
-Node, local: 43 - global: 71
-Node, local: 44 - global: 72
-Node, local: 45 - global: 75
-Node, local: 46 - global: 76
-Node, local: 47 - global: 77
-Node, local: 48 - global: 80
-Node, local: 49 - global: 81
-Node, local: 50 - global: 82
-Node, local: 51 - global: 85
-Node, local: 52 - global: 86
-Node, local: 53 - global: 87
-Node, local: 54 - global: 90
-Node, local: 55 - global: 91
-Node, local: 56 - global: 92
-Node, local: 57 - global: 95
-Node, local: 58 - global: 96
-Node, local: 59 - global: 97
-Node, local: 60 - global: 100
-Node, local: 61 - global: 101
-Node, local: 62 - global: 102
-Node, local: 63 - global: 105
-Node, local: 64 - global: 106
-Node, local: 65 - global: 107
-Node, local: 66 - global: 110
-Node, local: 67 - global: 111
-Node, local: 68 - global: 112
-Node, local: 69 - global: 115
-Node, local: 70 - global: 116
-Node, local: 71 - global: 117
-Node, local: 72 - global: 120
-Node, local: 73 - global: 121
-Node, local: 74 - global: 122
-
-Node, domain: 0 - global: 0
-Node, domain: 1 - global: 1
-Node, domain: 2 - global: 2
-Node, domain: 3 - global: 5
-Node, domain: 4 - global: 6
-Node, domain: 5 - global: 7
-Node, domain: 6 - global: 10
-Node, domain: 7 - global: 11
-Node, domain: 8 - global: 12
-Node, domain: 9 - global: 15
-Node, domain: 10 - global: 16
-Node, domain: 11 - global: 17
-Node, domain: 12 - global: 20
-Node, domain: 13 - global: 21
-Node, domain: 14 - global: 22
-Node, domain: 15 - global: 25
-Node, domain: 16 - global: 26
-Node, domain: 17 - global: 27
-Node, domain: 18 - global: 30
-Node, domain: 19 - global: 31
-Node, domain: 20 - global: 32
-Node, domain: 21 - global: 35
-Node, domain: 22 - global: 36
-Node, domain: 23 - global: 37
-Node, domain: 24 - global: 40
-Node, domain: 25 - global: 41
-Node, domain: 26 - global: 42
-Node, domain: 27 - global: 45
-Node, domain: 28 - global: 46
-Node, domain: 29 - global: 47
-Node, domain: 30 - global: 50
-Node, domain: 31 - global: 51
-Node, domain: 32 - global: 52
-Node, domain: 33 - global: 55
-Node, domain: 34 - global: 56
-Node, domain: 35 - global: 57
-Node, domain: 36 - global: 60
-Node, domain: 37 - global: 61
-Node, domain: 38 - global: 62
-Node, domain: 39 - global: 65
-Node, domain: 40 - global: 66
-Node, domain: 41 - global: 67
-Node, domain: 42 - global: 70
-Node, domain: 43 - global: 71
-Node, domain: 44 - global: 72
-Node, domain: 45 - global: 75
-Node, domain: 46 - global: 76
-Node, domain: 47 - global: 77
-Node, domain: 48 - global: 80
-Node, domain: 49 - global: 81
-Node, domain: 50 - global: 82
-Node, domain: 51 - global: 85
-Node, domain: 52 - global: 86
-Node, domain: 53 - global: 87
-Node, domain: 54 - global: 90
-Node, domain: 55 - global: 91
-Node, domain: 56 - global: 92
-Node, domain: 57 - global: 95
-Node, domain: 58 - global: 96
-Node, domain: 59 - global: 97
-Node, domain: 60 - global: 100
-Node, domain: 61 - global: 101
-Node, domain: 62 - global: 102
-Node, domain: 63 - global: 105
-Node, domain: 64 - global: 106
-Node, domain: 65 - global: 107
-Node, domain: 66 - global: 110
-Node, domain: 67 - global: 111
-Node, domain: 68 - global: 112
-Node, domain: 69 - global: 115
-Node, domain: 70 - global: 116
-Node, domain: 71 - global: 117
-Node, domain: 72 - global: 120
-Node, domain: 73 - global: 121
-Node, domain: 74 - global: 122
-Node, domain: 75 - global: 3
-Node, domain: 76 - global: 8
-Node, domain: 77 - global: 13
-Node, domain: 78 - global: 18
-Node, domain: 79 - global: 23
-Node, domain: 80 - global: 28
-Node, domain: 81 - global: 33
-Node, domain: 82 - global: 38
-Node, domain: 83 - global: 43
-Node, domain: 84 - global: 48
-Node, domain: 85 - global: 53
-Node, domain: 86 - global: 58
-Node, domain: 87 - global: 63
-Node, domain: 88 - global: 68
-Node, domain: 89 - global: 73
-Node, domain: 90 - global: 78
-Node, domain: 91 - global: 83
-Node, domain: 92 - global: 88
-Node, domain: 93 - global: 93
-Node, domain: 94 - global: 98
-Node, domain: 95 - global: 103
-Node, domain: 96 - global: 108
-Node, domain: 97 - global: 113
-Node, domain: 98 - global: 118
-Node, domain: 99 - global: 123
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,486 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (2 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060680)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 3, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: 0 - domain: 32
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: 1 - domain: 33
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: 2 - domain: 34
-Element, global: 10 - local: 4 - shadow: X - domain: 4
-Element, global: 11 - local: 5 - shadow: X - domain: 5
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: 3 - domain: 35
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: 4 - domain: 36
-Element, global: 18 - local: 8 - shadow: X - domain: 8
-Element, global: 19 - local: 9 - shadow: X - domain: 9
-Element, global: 20 - local: X - shadow: X - domain: X
-Element, global: 21 - local: X - shadow: 5 - domain: 37
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: X - domain: X
-Element, global: 25 - local: X - shadow: 6 - domain: 38
-Element, global: 26 - local: 12 - shadow: X - domain: 12
-Element, global: 27 - local: 13 - shadow: X - domain: 13
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: 7 - domain: 39
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: 8 - domain: 40
-Element, global: 34 - local: 16 - shadow: X - domain: 16
-Element, global: 35 - local: 17 - shadow: X - domain: 17
-Element, global: 36 - local: X - shadow: X - domain: X
-Element, global: 37 - local: X - shadow: 9 - domain: 41
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: X - domain: X
-Element, global: 41 - local: X - shadow: 10 - domain: 42
-Element, global: 42 - local: 20 - shadow: X - domain: 20
-Element, global: 43 - local: 21 - shadow: X - domain: 21
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: 11 - domain: 43
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: 12 - domain: 44
-Element, global: 50 - local: 24 - shadow: X - domain: 24
-Element, global: 51 - local: 25 - shadow: X - domain: 25
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: 13 - domain: 45
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: 14 - domain: 46
-Element, global: 58 - local: 28 - shadow: X - domain: 28
-Element, global: 59 - local: 29 - shadow: X - domain: 29
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: 15 - domain: 47
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 10
-Element, local: 5 - global: 11
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 18
-Element, local: 9 - global: 19
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 26
-Element, local: 13 - global: 27
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 34
-Element, local: 17 - global: 35
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 42
-Element, local: 21 - global: 43
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 50
-Element, local: 25 - global: 51
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 58
-Element, local: 29 - global: 59
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 10
-Element, domain: 5 - global: 11
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 18
-Element, domain: 9 - global: 19
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 26
-Element, domain: 13 - global: 27
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 34
-Element, domain: 17 - global: 35
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 42
-Element, domain: 21 - global: 43
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 50
-Element, domain: 25 - global: 51
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 58
-Element, domain: 29 - global: 59
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 1
-Element, domain: 33 - global: 5
-Element, domain: 34 - global: 9
-Element, domain: 35 - global: 13
-Element, domain: 36 - global: 17
-Element, domain: 37 - global: 21
-Element, domain: 38 - global: 25
-Element, domain: 39 - global: 29
-Element, domain: 40 - global: 33
-Element, domain: 41 - global: 37
-Element, domain: 42 - global: 41
-Element, domain: 43 - global: 45
-Element, domain: 44 - global: 49
-Element, domain: 45 - global: 53
-Element, domain: 46 - global: 57
-Element, domain: 47 - global: 61
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: 0 - domain: 75
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: 1 - domain: 76
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: 2 - domain: 77
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 3 - domain: 78
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: 4 - domain: 79
-Node, global: 22 - local: 12 - shadow: X - domain: 12
-Node, global: 23 - local: 13 - shadow: X - domain: 13
-Node, global: 24 - local: 14 - shadow: X - domain: 14
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: 5 - domain: 80
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: 6 - domain: 81
-Node, global: 32 - local: 18 - shadow: X - domain: 18
-Node, global: 33 - local: 19 - shadow: X - domain: 19
-Node, global: 34 - local: 20 - shadow: X - domain: 20
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: 7 - domain: 82
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: 8 - domain: 83
-Node, global: 42 - local: 24 - shadow: X - domain: 24
-Node, global: 43 - local: 25 - shadow: X - domain: 25
-Node, global: 44 - local: 26 - shadow: X - domain: 26
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: 9 - domain: 84
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: 10 - domain: 85
-Node, global: 52 - local: 30 - shadow: X - domain: 30
-Node, global: 53 - local: 31 - shadow: X - domain: 31
-Node, global: 54 - local: 32 - shadow: X - domain: 32
-Node, global: 55 - local: X - shadow: X - domain: X
-Node, global: 56 - local: X - shadow: 11 - domain: 86
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: 35 - shadow: X - domain: 35
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 12 - domain: 87
-Node, global: 62 - local: 36 - shadow: X - domain: 36
-Node, global: 63 - local: 37 - shadow: X - domain: 37
-Node, global: 64 - local: 38 - shadow: X - domain: 38
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 13 - domain: 88
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: 40 - shadow: X - domain: 40
-Node, global: 69 - local: 41 - shadow: X - domain: 41
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: 14 - domain: 89
-Node, global: 72 - local: 42 - shadow: X - domain: 42
-Node, global: 73 - local: 43 - shadow: X - domain: 43
-Node, global: 74 - local: 44 - shadow: X - domain: 44
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: 15 - domain: 90
-Node, global: 77 - local: 45 - shadow: X - domain: 45
-Node, global: 78 - local: 46 - shadow: X - domain: 46
-Node, global: 79 - local: 47 - shadow: X - domain: 47
-Node, global: 80 - local: X - shadow: X - domain: X
-Node, global: 81 - local: X - shadow: 16 - domain: 91
-Node, global: 82 - local: 48 - shadow: X - domain: 48
-Node, global: 83 - local: 49 - shadow: X - domain: 49
-Node, global: 84 - local: 50 - shadow: X - domain: 50
-Node, global: 85 - local: X - shadow: X - domain: X
-Node, global: 86 - local: X - shadow: 17 - domain: 92
-Node, global: 87 - local: 51 - shadow: X - domain: 51
-Node, global: 88 - local: 52 - shadow: X - domain: 52
-Node, global: 89 - local: 53 - shadow: X - domain: 53
-Node, global: 90 - local: X - shadow: X - domain: X
-Node, global: 91 - local: X - shadow: 18 - domain: 93
-Node, global: 92 - local: 54 - shadow: X - domain: 54
-Node, global: 93 - local: 55 - shadow: X - domain: 55
-Node, global: 94 - local: 56 - shadow: X - domain: 56
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: 19 - domain: 94
-Node, global: 97 - local: 57 - shadow: X - domain: 57
-Node, global: 98 - local: 58 - shadow: X - domain: 58
-Node, global: 99 - local: 59 - shadow: X - domain: 59
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: 20 - domain: 95
-Node, global: 102 - local: 60 - shadow: X - domain: 60
-Node, global: 103 - local: 61 - shadow: X - domain: 61
-Node, global: 104 - local: 62 - shadow: X - domain: 62
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 21 - domain: 96
-Node, global: 107 - local: 63 - shadow: X - domain: 63
-Node, global: 108 - local: 64 - shadow: X - domain: 64
-Node, global: 109 - local: 65 - shadow: X - domain: 65
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 22 - domain: 97
-Node, global: 112 - local: 66 - shadow: X - domain: 66
-Node, global: 113 - local: 67 - shadow: X - domain: 67
-Node, global: 114 - local: 68 - shadow: X - domain: 68
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: 23 - domain: 98
-Node, global: 117 - local: 69 - shadow: X - domain: 69
-Node, global: 118 - local: 70 - shadow: X - domain: 70
-Node, global: 119 - local: 71 - shadow: X - domain: 71
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: 24 - domain: 99
-Node, global: 122 - local: 72 - shadow: X - domain: 72
-Node, global: 123 - local: 73 - shadow: X - domain: 73
-Node, global: 124 - local: 74 - shadow: X - domain: 74
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 17
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 22
-Node, local: 13 - global: 23
-Node, local: 14 - global: 24
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 32
-Node, local: 19 - global: 33
-Node, local: 20 - global: 34
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 42
-Node, local: 25 - global: 43
-Node, local: 26 - global: 44
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 52
-Node, local: 31 - global: 53
-Node, local: 32 - global: 54
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 59
-Node, local: 36 - global: 62
-Node, local: 37 - global: 63
-Node, local: 38 - global: 64
-Node, local: 39 - global: 67
-Node, local: 40 - global: 68
-Node, local: 41 - global: 69
-Node, local: 42 - global: 72
-Node, local: 43 - global: 73
-Node, local: 44 - global: 74
-Node, local: 45 - global: 77
-Node, local: 46 - global: 78
-Node, local: 47 - global: 79
-Node, local: 48 - global: 82
-Node, local: 49 - global: 83
-Node, local: 50 - global: 84
-Node, local: 51 - global: 87
-Node, local: 52 - global: 88
-Node, local: 53 - global: 89
-Node, local: 54 - global: 92
-Node, local: 55 - global: 93
-Node, local: 56 - global: 94
-Node, local: 57 - global: 97
-Node, local: 58 - global: 98
-Node, local: 59 - global: 99
-Node, local: 60 - global: 102
-Node, local: 61 - global: 103
-Node, local: 62 - global: 104
-Node, local: 63 - global: 107
-Node, local: 64 - global: 108
-Node, local: 65 - global: 109
-Node, local: 66 - global: 112
-Node, local: 67 - global: 113
-Node, local: 68 - global: 114
-Node, local: 69 - global: 117
-Node, local: 70 - global: 118
-Node, local: 71 - global: 119
-Node, local: 72 - global: 122
-Node, local: 73 - global: 123
-Node, local: 74 - global: 124
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 22
-Node, domain: 13 - global: 23
-Node, domain: 14 - global: 24
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 32
-Node, domain: 19 - global: 33
-Node, domain: 20 - global: 34
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 42
-Node, domain: 25 - global: 43
-Node, domain: 26 - global: 44
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 52
-Node, domain: 31 - global: 53
-Node, domain: 32 - global: 54
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 59
-Node, domain: 36 - global: 62
-Node, domain: 37 - global: 63
-Node, domain: 38 - global: 64
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 68
-Node, domain: 41 - global: 69
-Node, domain: 42 - global: 72
-Node, domain: 43 - global: 73
-Node, domain: 44 - global: 74
-Node, domain: 45 - global: 77
-Node, domain: 46 - global: 78
-Node, domain: 47 - global: 79
-Node, domain: 48 - global: 82
-Node, domain: 49 - global: 83
-Node, domain: 50 - global: 84
-Node, domain: 51 - global: 87
-Node, domain: 52 - global: 88
-Node, domain: 53 - global: 89
-Node, domain: 54 - global: 92
-Node, domain: 55 - global: 93
-Node, domain: 56 - global: 94
-Node, domain: 57 - global: 97
-Node, domain: 58 - global: 98
-Node, domain: 59 - global: 99
-Node, domain: 60 - global: 102
-Node, domain: 61 - global: 103
-Node, domain: 62 - global: 104
-Node, domain: 63 - global: 107
-Node, domain: 64 - global: 108
-Node, domain: 65 - global: 109
-Node, domain: 66 - global: 112
-Node, domain: 67 - global: 113
-Node, domain: 68 - global: 114
-Node, domain: 69 - global: 117
-Node, domain: 70 - global: 118
-Node, domain: 71 - global: 119
-Node, domain: 72 - global: 122
-Node, domain: 73 - global: 123
-Node, domain: 74 - global: 124
-Node, domain: 75 - global: 1
-Node, domain: 76 - global: 6
-Node, domain: 77 - global: 11
-Node, domain: 78 - global: 16
-Node, domain: 79 - global: 21
-Node, domain: 80 - global: 26
-Node, domain: 81 - global: 31
-Node, domain: 82 - global: 36
-Node, domain: 83 - global: 41
-Node, domain: 84 - global: 46
-Node, domain: 85 - global: 51
-Node, domain: 86 - global: 56
-Node, domain: 87 - global: 61
-Node, domain: 88 - global: 66
-Node, domain: 89 - global: 71
-Node, domain: 90 - global: 76
-Node, domain: 91 - global: 81
-Node, domain: 92 - global: 86
-Node, domain: 93 - global: 91
-Node, domain: 94 - global: 96
-Node, domain: 95 - global: 101
-Node, domain: 96 - global: 106
-Node, domain: 97 - global: 111
-Node, domain: 98 - global: 116
-Node, domain: 99 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,486 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Current processor is 1 of 2 in use (3 total).
-allowUnusedCPUs: True
-allowPartitionOnNode: True
-allowPartitionOnElement: False
-allowUnbalancing: False
-shadowDepth: 1
-procTopology:
-	IJKTopology (ptr): (0x8060ad0)
-		size : (2,1,1)
-		isPeriodic : (False,False,False)
-		dynamicSizes : True
-partitionedAxis: { True, False, False }
-partitionCounts: { 2, 1, 1 }
-elementGlobalCounts: { 4, 4, 4 }
-elementGlobalCount: 64
-	elementLocalCounts[0]: { 2, 4, 4 }
-	elementLocalCounts[1]: { 2, 4, 4 }
-elementDomainCounts: { 3, 4, 4 }
-nodeGlobalCounts: { 5, 5, 5 }
-nodeGlobalCount: 125
-	nodeLocalCounts[0]: { 3, 5, 5 }
-	nodeLocalCounts[1]: { 3, 5, 5 }
-Element, global: 0 - local: X - shadow: X - domain: X
-Element, global: 1 - local: X - shadow: 0 - domain: 32
-Element, global: 2 - local: 0 - shadow: X - domain: 0
-Element, global: 3 - local: 1 - shadow: X - domain: 1
-Element, global: 4 - local: X - shadow: X - domain: X
-Element, global: 5 - local: X - shadow: 1 - domain: 33
-Element, global: 6 - local: 2 - shadow: X - domain: 2
-Element, global: 7 - local: 3 - shadow: X - domain: 3
-Element, global: 8 - local: X - shadow: X - domain: X
-Element, global: 9 - local: X - shadow: 2 - domain: 34
-Element, global: 10 - local: 4 - shadow: X - domain: 4
-Element, global: 11 - local: 5 - shadow: X - domain: 5
-Element, global: 12 - local: X - shadow: X - domain: X
-Element, global: 13 - local: X - shadow: 3 - domain: 35
-Element, global: 14 - local: 6 - shadow: X - domain: 6
-Element, global: 15 - local: 7 - shadow: X - domain: 7
-Element, global: 16 - local: X - shadow: X - domain: X
-Element, global: 17 - local: X - shadow: 4 - domain: 36
-Element, global: 18 - local: 8 - shadow: X - domain: 8
-Element, global: 19 - local: 9 - shadow: X - domain: 9
-Element, global: 20 - local: X - shadow: X - domain: X
-Element, global: 21 - local: X - shadow: 5 - domain: 37
-Element, global: 22 - local: 10 - shadow: X - domain: 10
-Element, global: 23 - local: 11 - shadow: X - domain: 11
-Element, global: 24 - local: X - shadow: X - domain: X
-Element, global: 25 - local: X - shadow: 6 - domain: 38
-Element, global: 26 - local: 12 - shadow: X - domain: 12
-Element, global: 27 - local: 13 - shadow: X - domain: 13
-Element, global: 28 - local: X - shadow: X - domain: X
-Element, global: 29 - local: X - shadow: 7 - domain: 39
-Element, global: 30 - local: 14 - shadow: X - domain: 14
-Element, global: 31 - local: 15 - shadow: X - domain: 15
-Element, global: 32 - local: X - shadow: X - domain: X
-Element, global: 33 - local: X - shadow: 8 - domain: 40
-Element, global: 34 - local: 16 - shadow: X - domain: 16
-Element, global: 35 - local: 17 - shadow: X - domain: 17
-Element, global: 36 - local: X - shadow: X - domain: X
-Element, global: 37 - local: X - shadow: 9 - domain: 41
-Element, global: 38 - local: 18 - shadow: X - domain: 18
-Element, global: 39 - local: 19 - shadow: X - domain: 19
-Element, global: 40 - local: X - shadow: X - domain: X
-Element, global: 41 - local: X - shadow: 10 - domain: 42
-Element, global: 42 - local: 20 - shadow: X - domain: 20
-Element, global: 43 - local: 21 - shadow: X - domain: 21
-Element, global: 44 - local: X - shadow: X - domain: X
-Element, global: 45 - local: X - shadow: 11 - domain: 43
-Element, global: 46 - local: 22 - shadow: X - domain: 22
-Element, global: 47 - local: 23 - shadow: X - domain: 23
-Element, global: 48 - local: X - shadow: X - domain: X
-Element, global: 49 - local: X - shadow: 12 - domain: 44
-Element, global: 50 - local: 24 - shadow: X - domain: 24
-Element, global: 51 - local: 25 - shadow: X - domain: 25
-Element, global: 52 - local: X - shadow: X - domain: X
-Element, global: 53 - local: X - shadow: 13 - domain: 45
-Element, global: 54 - local: 26 - shadow: X - domain: 26
-Element, global: 55 - local: 27 - shadow: X - domain: 27
-Element, global: 56 - local: X - shadow: X - domain: X
-Element, global: 57 - local: X - shadow: 14 - domain: 46
-Element, global: 58 - local: 28 - shadow: X - domain: 28
-Element, global: 59 - local: 29 - shadow: X - domain: 29
-Element, global: 60 - local: X - shadow: X - domain: X
-Element, global: 61 - local: X - shadow: 15 - domain: 47
-Element, global: 62 - local: 30 - shadow: X - domain: 30
-Element, global: 63 - local: 31 - shadow: X - domain: 31
-
-Element, local: 0 - global: 2
-Element, local: 1 - global: 3
-Element, local: 2 - global: 6
-Element, local: 3 - global: 7
-Element, local: 4 - global: 10
-Element, local: 5 - global: 11
-Element, local: 6 - global: 14
-Element, local: 7 - global: 15
-Element, local: 8 - global: 18
-Element, local: 9 - global: 19
-Element, local: 10 - global: 22
-Element, local: 11 - global: 23
-Element, local: 12 - global: 26
-Element, local: 13 - global: 27
-Element, local: 14 - global: 30
-Element, local: 15 - global: 31
-Element, local: 16 - global: 34
-Element, local: 17 - global: 35
-Element, local: 18 - global: 38
-Element, local: 19 - global: 39
-Element, local: 20 - global: 42
-Element, local: 21 - global: 43
-Element, local: 22 - global: 46
-Element, local: 23 - global: 47
-Element, local: 24 - global: 50
-Element, local: 25 - global: 51
-Element, local: 26 - global: 54
-Element, local: 27 - global: 55
-Element, local: 28 - global: 58
-Element, local: 29 - global: 59
-Element, local: 30 - global: 62
-Element, local: 31 - global: 63
-
-Element, domain: 0 - global: 2
-Element, domain: 1 - global: 3
-Element, domain: 2 - global: 6
-Element, domain: 3 - global: 7
-Element, domain: 4 - global: 10
-Element, domain: 5 - global: 11
-Element, domain: 6 - global: 14
-Element, domain: 7 - global: 15
-Element, domain: 8 - global: 18
-Element, domain: 9 - global: 19
-Element, domain: 10 - global: 22
-Element, domain: 11 - global: 23
-Element, domain: 12 - global: 26
-Element, domain: 13 - global: 27
-Element, domain: 14 - global: 30
-Element, domain: 15 - global: 31
-Element, domain: 16 - global: 34
-Element, domain: 17 - global: 35
-Element, domain: 18 - global: 38
-Element, domain: 19 - global: 39
-Element, domain: 20 - global: 42
-Element, domain: 21 - global: 43
-Element, domain: 22 - global: 46
-Element, domain: 23 - global: 47
-Element, domain: 24 - global: 50
-Element, domain: 25 - global: 51
-Element, domain: 26 - global: 54
-Element, domain: 27 - global: 55
-Element, domain: 28 - global: 58
-Element, domain: 29 - global: 59
-Element, domain: 30 - global: 62
-Element, domain: 31 - global: 63
-Element, domain: 32 - global: 1
-Element, domain: 33 - global: 5
-Element, domain: 34 - global: 9
-Element, domain: 35 - global: 13
-Element, domain: 36 - global: 17
-Element, domain: 37 - global: 21
-Element, domain: 38 - global: 25
-Element, domain: 39 - global: 29
-Element, domain: 40 - global: 33
-Element, domain: 41 - global: 37
-Element, domain: 42 - global: 41
-Element, domain: 43 - global: 45
-Element, domain: 44 - global: 49
-Element, domain: 45 - global: 53
-Element, domain: 46 - global: 57
-Element, domain: 47 - global: 61
-
-Node, global: 0 - local: X - shadow: X - domain: X
-Node, global: 1 - local: X - shadow: 0 - domain: 75
-Node, global: 2 - local: 0 - shadow: X - domain: 0
-Node, global: 3 - local: 1 - shadow: X - domain: 1
-Node, global: 4 - local: 2 - shadow: X - domain: 2
-Node, global: 5 - local: X - shadow: X - domain: X
-Node, global: 6 - local: X - shadow: 1 - domain: 76
-Node, global: 7 - local: 3 - shadow: X - domain: 3
-Node, global: 8 - local: 4 - shadow: X - domain: 4
-Node, global: 9 - local: 5 - shadow: X - domain: 5
-Node, global: 10 - local: X - shadow: X - domain: X
-Node, global: 11 - local: X - shadow: 2 - domain: 77
-Node, global: 12 - local: 6 - shadow: X - domain: 6
-Node, global: 13 - local: 7 - shadow: X - domain: 7
-Node, global: 14 - local: 8 - shadow: X - domain: 8
-Node, global: 15 - local: X - shadow: X - domain: X
-Node, global: 16 - local: X - shadow: 3 - domain: 78
-Node, global: 17 - local: 9 - shadow: X - domain: 9
-Node, global: 18 - local: 10 - shadow: X - domain: 10
-Node, global: 19 - local: 11 - shadow: X - domain: 11
-Node, global: 20 - local: X - shadow: X - domain: X
-Node, global: 21 - local: X - shadow: 4 - domain: 79
-Node, global: 22 - local: 12 - shadow: X - domain: 12
-Node, global: 23 - local: 13 - shadow: X - domain: 13
-Node, global: 24 - local: 14 - shadow: X - domain: 14
-Node, global: 25 - local: X - shadow: X - domain: X
-Node, global: 26 - local: X - shadow: 5 - domain: 80
-Node, global: 27 - local: 15 - shadow: X - domain: 15
-Node, global: 28 - local: 16 - shadow: X - domain: 16
-Node, global: 29 - local: 17 - shadow: X - domain: 17
-Node, global: 30 - local: X - shadow: X - domain: X
-Node, global: 31 - local: X - shadow: 6 - domain: 81
-Node, global: 32 - local: 18 - shadow: X - domain: 18
-Node, global: 33 - local: 19 - shadow: X - domain: 19
-Node, global: 34 - local: 20 - shadow: X - domain: 20
-Node, global: 35 - local: X - shadow: X - domain: X
-Node, global: 36 - local: X - shadow: 7 - domain: 82
-Node, global: 37 - local: 21 - shadow: X - domain: 21
-Node, global: 38 - local: 22 - shadow: X - domain: 22
-Node, global: 39 - local: 23 - shadow: X - domain: 23
-Node, global: 40 - local: X - shadow: X - domain: X
-Node, global: 41 - local: X - shadow: 8 - domain: 83
-Node, global: 42 - local: 24 - shadow: X - domain: 24
-Node, global: 43 - local: 25 - shadow: X - domain: 25
-Node, global: 44 - local: 26 - shadow: X - domain: 26
-Node, global: 45 - local: X - shadow: X - domain: X
-Node, global: 46 - local: X - shadow: 9 - domain: 84
-Node, global: 47 - local: 27 - shadow: X - domain: 27
-Node, global: 48 - local: 28 - shadow: X - domain: 28
-Node, global: 49 - local: 29 - shadow: X - domain: 29
-Node, global: 50 - local: X - shadow: X - domain: X
-Node, global: 51 - local: X - shadow: 10 - domain: 85
-Node, global: 52 - local: 30 - shadow: X - domain: 30
-Node, global: 53 - local: 31 - shadow: X - domain: 31
-Node, global: 54 - local: 32 - shadow: X - domain: 32
-Node, global: 55 - local: X - shadow: X - domain: X
-Node, global: 56 - local: X - shadow: 11 - domain: 86
-Node, global: 57 - local: 33 - shadow: X - domain: 33
-Node, global: 58 - local: 34 - shadow: X - domain: 34
-Node, global: 59 - local: 35 - shadow: X - domain: 35
-Node, global: 60 - local: X - shadow: X - domain: X
-Node, global: 61 - local: X - shadow: 12 - domain: 87
-Node, global: 62 - local: 36 - shadow: X - domain: 36
-Node, global: 63 - local: 37 - shadow: X - domain: 37
-Node, global: 64 - local: 38 - shadow: X - domain: 38
-Node, global: 65 - local: X - shadow: X - domain: X
-Node, global: 66 - local: X - shadow: 13 - domain: 88
-Node, global: 67 - local: 39 - shadow: X - domain: 39
-Node, global: 68 - local: 40 - shadow: X - domain: 40
-Node, global: 69 - local: 41 - shadow: X - domain: 41
-Node, global: 70 - local: X - shadow: X - domain: X
-Node, global: 71 - local: X - shadow: 14 - domain: 89
-Node, global: 72 - local: 42 - shadow: X - domain: 42
-Node, global: 73 - local: 43 - shadow: X - domain: 43
-Node, global: 74 - local: 44 - shadow: X - domain: 44
-Node, global: 75 - local: X - shadow: X - domain: X
-Node, global: 76 - local: X - shadow: 15 - domain: 90
-Node, global: 77 - local: 45 - shadow: X - domain: 45
-Node, global: 78 - local: 46 - shadow: X - domain: 46
-Node, global: 79 - local: 47 - shadow: X - domain: 47
-Node, global: 80 - local: X - shadow: X - domain: X
-Node, global: 81 - local: X - shadow: 16 - domain: 91
-Node, global: 82 - local: 48 - shadow: X - domain: 48
-Node, global: 83 - local: 49 - shadow: X - domain: 49
-Node, global: 84 - local: 50 - shadow: X - domain: 50
-Node, global: 85 - local: X - shadow: X - domain: X
-Node, global: 86 - local: X - shadow: 17 - domain: 92
-Node, global: 87 - local: 51 - shadow: X - domain: 51
-Node, global: 88 - local: 52 - shadow: X - domain: 52
-Node, global: 89 - local: 53 - shadow: X - domain: 53
-Node, global: 90 - local: X - shadow: X - domain: X
-Node, global: 91 - local: X - shadow: 18 - domain: 93
-Node, global: 92 - local: 54 - shadow: X - domain: 54
-Node, global: 93 - local: 55 - shadow: X - domain: 55
-Node, global: 94 - local: 56 - shadow: X - domain: 56
-Node, global: 95 - local: X - shadow: X - domain: X
-Node, global: 96 - local: X - shadow: 19 - domain: 94
-Node, global: 97 - local: 57 - shadow: X - domain: 57
-Node, global: 98 - local: 58 - shadow: X - domain: 58
-Node, global: 99 - local: 59 - shadow: X - domain: 59
-Node, global: 100 - local: X - shadow: X - domain: X
-Node, global: 101 - local: X - shadow: 20 - domain: 95
-Node, global: 102 - local: 60 - shadow: X - domain: 60
-Node, global: 103 - local: 61 - shadow: X - domain: 61
-Node, global: 104 - local: 62 - shadow: X - domain: 62
-Node, global: 105 - local: X - shadow: X - domain: X
-Node, global: 106 - local: X - shadow: 21 - domain: 96
-Node, global: 107 - local: 63 - shadow: X - domain: 63
-Node, global: 108 - local: 64 - shadow: X - domain: 64
-Node, global: 109 - local: 65 - shadow: X - domain: 65
-Node, global: 110 - local: X - shadow: X - domain: X
-Node, global: 111 - local: X - shadow: 22 - domain: 97
-Node, global: 112 - local: 66 - shadow: X - domain: 66
-Node, global: 113 - local: 67 - shadow: X - domain: 67
-Node, global: 114 - local: 68 - shadow: X - domain: 68
-Node, global: 115 - local: X - shadow: X - domain: X
-Node, global: 116 - local: X - shadow: 23 - domain: 98
-Node, global: 117 - local: 69 - shadow: X - domain: 69
-Node, global: 118 - local: 70 - shadow: X - domain: 70
-Node, global: 119 - local: 71 - shadow: X - domain: 71
-Node, global: 120 - local: X - shadow: X - domain: X
-Node, global: 121 - local: X - shadow: 24 - domain: 99
-Node, global: 122 - local: 72 - shadow: X - domain: 72
-Node, global: 123 - local: 73 - shadow: X - domain: 73
-Node, global: 124 - local: 74 - shadow: X - domain: 74
-
-Node, local: 0 - global: 2
-Node, local: 1 - global: 3
-Node, local: 2 - global: 4
-Node, local: 3 - global: 7
-Node, local: 4 - global: 8
-Node, local: 5 - global: 9
-Node, local: 6 - global: 12
-Node, local: 7 - global: 13
-Node, local: 8 - global: 14
-Node, local: 9 - global: 17
-Node, local: 10 - global: 18
-Node, local: 11 - global: 19
-Node, local: 12 - global: 22
-Node, local: 13 - global: 23
-Node, local: 14 - global: 24
-Node, local: 15 - global: 27
-Node, local: 16 - global: 28
-Node, local: 17 - global: 29
-Node, local: 18 - global: 32
-Node, local: 19 - global: 33
-Node, local: 20 - global: 34
-Node, local: 21 - global: 37
-Node, local: 22 - global: 38
-Node, local: 23 - global: 39
-Node, local: 24 - global: 42
-Node, local: 25 - global: 43
-Node, local: 26 - global: 44
-Node, local: 27 - global: 47
-Node, local: 28 - global: 48
-Node, local: 29 - global: 49
-Node, local: 30 - global: 52
-Node, local: 31 - global: 53
-Node, local: 32 - global: 54
-Node, local: 33 - global: 57
-Node, local: 34 - global: 58
-Node, local: 35 - global: 59
-Node, local: 36 - global: 62
-Node, local: 37 - global: 63
-Node, local: 38 - global: 64
-Node, local: 39 - global: 67
-Node, local: 40 - global: 68
-Node, local: 41 - global: 69
-Node, local: 42 - global: 72
-Node, local: 43 - global: 73
-Node, local: 44 - global: 74
-Node, local: 45 - global: 77
-Node, local: 46 - global: 78
-Node, local: 47 - global: 79
-Node, local: 48 - global: 82
-Node, local: 49 - global: 83
-Node, local: 50 - global: 84
-Node, local: 51 - global: 87
-Node, local: 52 - global: 88
-Node, local: 53 - global: 89
-Node, local: 54 - global: 92
-Node, local: 55 - global: 93
-Node, local: 56 - global: 94
-Node, local: 57 - global: 97
-Node, local: 58 - global: 98
-Node, local: 59 - global: 99
-Node, local: 60 - global: 102
-Node, local: 61 - global: 103
-Node, local: 62 - global: 104
-Node, local: 63 - global: 107
-Node, local: 64 - global: 108
-Node, local: 65 - global: 109
-Node, local: 66 - global: 112
-Node, local: 67 - global: 113
-Node, local: 68 - global: 114
-Node, local: 69 - global: 117
-Node, local: 70 - global: 118
-Node, local: 71 - global: 119
-Node, local: 72 - global: 122
-Node, local: 73 - global: 123
-Node, local: 74 - global: 124
-
-Node, domain: 0 - global: 2
-Node, domain: 1 - global: 3
-Node, domain: 2 - global: 4
-Node, domain: 3 - global: 7
-Node, domain: 4 - global: 8
-Node, domain: 5 - global: 9
-Node, domain: 6 - global: 12
-Node, domain: 7 - global: 13
-Node, domain: 8 - global: 14
-Node, domain: 9 - global: 17
-Node, domain: 10 - global: 18
-Node, domain: 11 - global: 19
-Node, domain: 12 - global: 22
-Node, domain: 13 - global: 23
-Node, domain: 14 - global: 24
-Node, domain: 15 - global: 27
-Node, domain: 16 - global: 28
-Node, domain: 17 - global: 29
-Node, domain: 18 - global: 32
-Node, domain: 19 - global: 33
-Node, domain: 20 - global: 34
-Node, domain: 21 - global: 37
-Node, domain: 22 - global: 38
-Node, domain: 23 - global: 39
-Node, domain: 24 - global: 42
-Node, domain: 25 - global: 43
-Node, domain: 26 - global: 44
-Node, domain: 27 - global: 47
-Node, domain: 28 - global: 48
-Node, domain: 29 - global: 49
-Node, domain: 30 - global: 52
-Node, domain: 31 - global: 53
-Node, domain: 32 - global: 54
-Node, domain: 33 - global: 57
-Node, domain: 34 - global: 58
-Node, domain: 35 - global: 59
-Node, domain: 36 - global: 62
-Node, domain: 37 - global: 63
-Node, domain: 38 - global: 64
-Node, domain: 39 - global: 67
-Node, domain: 40 - global: 68
-Node, domain: 41 - global: 69
-Node, domain: 42 - global: 72
-Node, domain: 43 - global: 73
-Node, domain: 44 - global: 74
-Node, domain: 45 - global: 77
-Node, domain: 46 - global: 78
-Node, domain: 47 - global: 79
-Node, domain: 48 - global: 82
-Node, domain: 49 - global: 83
-Node, domain: 50 - global: 84
-Node, domain: 51 - global: 87
-Node, domain: 52 - global: 88
-Node, domain: 53 - global: 89
-Node, domain: 54 - global: 92
-Node, domain: 55 - global: 93
-Node, domain: 56 - global: 94
-Node, domain: 57 - global: 97
-Node, domain: 58 - global: 98
-Node, domain: 59 - global: 99
-Node, domain: 60 - global: 102
-Node, domain: 61 - global: 103
-Node, domain: 62 - global: 104
-Node, domain: 63 - global: 107
-Node, domain: 64 - global: 108
-Node, domain: 65 - global: 109
-Node, domain: 66 - global: 112
-Node, domain: 67 - global: 113
-Node, domain: 68 - global: 114
-Node, domain: 69 - global: 117
-Node, domain: 70 - global: 118
-Node, domain: 71 - global: 119
-Node, domain: 72 - global: 122
-Node, domain: 73 - global: 123
-Node, domain: 74 - global: 124
-Node, domain: 75 - global: 1
-Node, domain: 76 - global: 6
-Node, domain: 77 - global: 11
-Node, domain: 78 - global: 16
-Node, domain: 79 - global: 21
-Node, domain: 80 - global: 26
-Node, domain: 81 - global: 31
-Node, domain: 82 - global: 36
-Node, domain: 83 - global: 41
-Node, domain: 84 - global: 46
-Node, domain: 85 - global: 51
-Node, domain: 86 - global: 56
-Node, domain: 87 - global: 61
-Node, domain: 88 - global: 66
-Node, domain: 89 - global: 71
-Node, domain: 90 - global: 76
-Node, domain: 91 - global: 81
-Node, domain: 92 - global: 86
-Node, domain: 93 - global: 91
-Node, domain: 94 - global: 96
-Node, domain: 95 - global: 101
-Node, domain: 96 - global: 106
-Node, domain: 97 - global: 111
-Node, domain: 98 - global: 116
-Node, domain: 99 - global: 121
-
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-	Checking general partitions etc
-	Checking the 64 individual items
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,13 +0,0 @@
-StGermain Framework revision 3570. Copyright (C) 2003-2005 VPAC.
-Corner Node Layout
-Rank 2 not in use.
-
-Body Node Layout
-Checking body node decomp has same element decomp as corner node decomp:
-Rank 2 not in use.
-	The decomps matched for the given item types
-	Passed.
-Checking body node decomp has same node decomp as it's element decomp:
-Rank 2 not in use.
-	The decomps matched for the given item types
-	Passed.

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMD " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMD.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,439 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-#include <assert.h>
-
-struct _Node
-{
-	double temp;
-};
-
-struct _Element
-{
-	double temp;
-};
-
-
-void PrintDecompInfoOfHexaMD( HexaMD* decomp, int rank ) {	
-
-	if( rank < decomp->procsInUse ) {
-		Partition_Index		proc_I;
-		Node_GlobalIndex	gNode_I;
-		Node_LocalIndex		lNode_I;
-		Node_DomainIndex	dNode_I;
-		Element_GlobalIndex	gElt_I;
-		Element_LocalIndex	lElt_I;
-		Element_DomainIndex	dElt_I;
-		Stream*                 outStream = Journal_Register( Info_Type, "testHexaMD" );
-		
-		printf( "Current processor is %d of %d in use (%d total).\n",
-			rank, decomp->procsInUse, decomp->nproc );
-		printf( "allowUnusedCPUs: %s\n", StG_BoolToStringMap[decomp->allowUnusedCPUs] );
-		printf( "allowPartitionOnNode: %s\n", StG_BoolToStringMap[decomp->allowPartitionOnNode] );
-		printf( "allowPartitionOnElement: %s\n", StG_BoolToStringMap[decomp->allowPartitionOnElement] );
-		printf( "allowUnbalancing: %s\n", StG_BoolToStringMap[decomp->allowUnbalancing] );
-		printf( "shadowDepth: %u\n", decomp->shadowDepth );
-		printf( "procTopology:\n" );
-		Stream_Indent( outStream );
-		IJKTopology_PrintConcise( (IJKTopology*)decomp->procTopology, outStream );
-		Stream_UnIndent( outStream );
-		
-		printf( "partitionedAxis: { %s, %s, %s }\n",
-			StG_BoolToStringMap[decomp->partitionedAxis[0]], 
-			StG_BoolToStringMap[decomp->partitionedAxis[1]],
-			StG_BoolToStringMap[decomp->partitionedAxis[2]] );
-		printf( "partitionCounts: { %u, %u, %u }\n", decomp->partition3DCounts[0], decomp->partition3DCounts[1], 
-			decomp->partition3DCounts[2] );
-		
-		printf( "elementGlobalCounts: { %u, %u, %u }\n", decomp->elementGlobal3DCounts[0], decomp->elementGlobal3DCounts[1], 
-			decomp->elementGlobal3DCounts[2] );
-		printf( "elementGlobalCount: %u\n", decomp->elementGlobalCount ); 
-		assert( decomp->elementGlobalCount == ( decomp->elementGlobal3DCounts[0] * decomp->elementGlobal3DCounts[1]
-			* decomp->elementGlobal3DCounts[2] ) );
-		for( proc_I = 0; proc_I < decomp->procsInUse; proc_I++ ) {
-			printf( "\telementLocalCounts[%u]: { %u, %u, %u }\n", proc_I, decomp->elementLocal3DCounts[proc_I][0], 
-				decomp->elementLocal3DCounts[proc_I][1], decomp->elementLocal3DCounts[proc_I][2] );
-		}
-		printf( "elementDomainCounts: { %u, %u, %u }\n", decomp->elementDomain3DCounts[0], decomp->elementDomain3DCounts[1], 
-			decomp->elementDomain3DCounts[2] );
-		
-		printf( "nodeGlobalCounts: { %u, %u, %u }\n", decomp->nodeGlobal3DCounts[0], decomp->nodeGlobal3DCounts[1], 
-			decomp->nodeGlobal3DCounts[2] );
-		printf( "nodeGlobalCount: %u\n", decomp->nodeGlobalCount ); 
-		assert( decomp->nodeGlobalCount == ( decomp->nodeGlobal3DCounts[0] * decomp->nodeGlobal3DCounts[1]
-			* decomp->nodeGlobal3DCounts[2] ) );
-		for( proc_I = 0; proc_I < decomp->procsInUse; proc_I++ ) {
-			printf( "\tnodeLocalCounts[%u]: { %u, %u, %u }\n", proc_I, decomp->nodeLocal3DCounts[proc_I][0], 
-				decomp->nodeLocal3DCounts[proc_I][1], decomp->nodeLocal3DCounts[proc_I][2] );
-		}
-
-		
-		for (gElt_I = 0; gElt_I < decomp->elementGlobalCount; gElt_I++)
-		{
-			Element_LocalIndex	localElt;
-			Element_ShadowIndex	shadowElt;
-			Element_DomainIndex	domainElt;
-			
-			localElt = decomp->elementMapGlobalToLocal(decomp, gElt_I);
-			shadowElt = decomp->elementMapGlobalToShadow(decomp, gElt_I);
-			domainElt = decomp->elementMapGlobalToDomain(decomp, gElt_I);
-			printf("Element, global: %u - ", gElt_I);
-			if (localElt < decomp->elementLocalCount)
-				printf("local: %u - ", localElt);
-			else
-				printf("local: X - ");
-			if (shadowElt < decomp->elementShadowCount)
-				printf("shadow: %u - ", shadowElt);
-			else
-				printf("shadow: X - ");
-			if (domainElt < decomp->elementDomainCount)
-				printf("domain: %u\n", domainElt);
-			else
-				printf("domain: X\n");
-		}
-		printf("\n");
-		
-		for (lElt_I = 0; lElt_I < decomp->elementLocalCount; lElt_I++)
-		{
-			Element_GlobalIndex	globalElement;
-			
-			globalElement = decomp->elementMapLocalToGlobal(decomp, lElt_I);
-			printf("Element, local: %u - ", lElt_I);
-			if (globalElement < decomp->elementGlobalCount)
-				printf("global: %u\n", globalElement);
-			else
-				printf("global: X\n");
-		}
-		printf("\n");
-		
-		for (dElt_I = 0; dElt_I < decomp->elementDomainCount; dElt_I++)
-		{
-			Element_GlobalIndex	globalElement;
-			
-			globalElement = decomp->elementMapDomainToGlobal(decomp, dElt_I);
-			printf("Element, domain: %u - ", dElt_I);
-			if (globalElement < decomp->elementGlobalCount)
-				printf("global: %u\n", globalElement);
-			else
-				printf("global: X\n");
-		}
-		printf("\n");
-		
-		for (gNode_I = 0; gNode_I < decomp->nodeGlobalCount; gNode_I++)
-		{
-			Node_LocalIndex		localNode;
-			Node_ShadowIndex	shadowNode;
-			Node_DomainIndex	domainNode;
-			
-			localNode = decomp->nodeMapGlobalToLocal(decomp, gNode_I);
-			shadowNode = decomp->nodeMapGlobalToShadow(decomp, gNode_I);
-			domainNode = decomp->nodeMapGlobalToDomain(decomp, gNode_I);
-			printf("Node, global: %u - ", gNode_I);
-			if (localNode < decomp->nodeLocalCount)
-				printf("local: %u - ", localNode);
-			else
-				printf("local: X - ");
-			if (shadowNode < decomp->nodeShadowCount)
-				printf("shadow: %u - ", shadowNode);
-			else
-				printf("shadow: X - ");
-			if (domainNode < decomp->nodeDomainCount)
-				printf("domain: %u\n", domainNode);
-			else
-				printf("domain: X\n");
-		}
-		printf("\n");
-		
-		for (lNode_I = 0; lNode_I < decomp->nodeLocalCount; lNode_I++)
-		{
-			Node_GlobalIndex	globalNode;
-			
-			globalNode = decomp->nodeMapLocalToGlobal(decomp, lNode_I);
-			printf("Node, local: %u - ", lNode_I);
-			if (globalNode < decomp->nodeGlobalCount)
-				printf("global: %u\n", globalNode);
-			else
-				printf("global: X\n");
-		}
-		printf("\n");
-		
-		for (dNode_I = 0; dNode_I < decomp->nodeDomainCount; dNode_I++)
-		{
-			Node_GlobalIndex globalNode;
-			
-			globalNode = decomp->nodeMapDomainToGlobal(decomp, dNode_I);
-			printf("Node, domain: %u - ", dNode_I);
-			if (globalNode < decomp->nodeGlobalCount)
-				printf("global: %u\n", globalNode);
-			else
-				printf("global: X\n");
-		}
-		printf("\n");
-	}
-	else {
-		printf( "Rank %u not in use.\n", rank );
-	}	
-}
-
-
-Bool CheckDecompItemsAreDecomposedIdentically( HexaMD* decomp1, MeshItemType decomp1ItemType, 
-		HexaMD* decomp2, MeshItemType decomp2ItemType, int rank )
-{	
-
-	if( rank < decomp1->procsInUse ) {
-		int                     ii;
-		Partition_Index		proc_I;
-		Element_GlobalIndex	gItem_I;
-		Dimension_Index         dim_I;
-		Index*                  itemGlobal3DCounts[2];
-		Element_LocalIJK*       itemLocal3DCounts[2];
-		MeshDecomp_Node_MapGlobalToLocalFunction*   itemGlobalToLocalMap[2];
-		MeshDecomp_Node_MapGlobalToShadowFunction*  itemGlobalToShadowMap[2];
-		MeshDecomp_Node_MapGlobalToDomainFunction*  itemGlobalToDomainMap[2];
-		HexaMD*                 decomp;
-		MeshItemType            decompItemType;
-		GlobalIndex             globalCount;
-		
-		printf("\tChecking general partitions etc\n" );
-		for ( dim_I = 0; dim_I < 3; dim_I++ )
-			assert( decomp1->partitionedAxis[dim_I] == decomp2->partitionedAxis[dim_I] );
-		for ( dim_I = 0; dim_I < 3; dim_I++ )
-			assert( decomp1->partition3DCounts[dim_I] == decomp2->partition3DCounts[dim_I] );
-
-		/* Set up which tables to check betweenm depending on which item types we want to check are equal */
-		for ( ii=0; ii < 2; ii++ ) {	
-			if ( ii == 0 ) {
-				decomp = decomp1;
-				decompItemType = decomp1ItemType;
-			}
-			else {
-				decomp = decomp2;
-				decompItemType = decomp2ItemType;
-			}
-
-			if ( decompItemType == ELEMENT_ITEM_TYPE ) {
-				itemGlobal3DCounts[ii] = decomp->elementGlobal3DCounts;
-				itemLocal3DCounts[ii] = decomp->elementLocal3DCounts;
-				itemGlobalToLocalMap[ii] = decomp->elementMapGlobalToLocal;
-				itemGlobalToShadowMap[ii] = decomp->elementMapGlobalToShadow;
-				itemGlobalToDomainMap[ii] = decomp->elementMapGlobalToDomain;
-			}
-			else {	/* NODE_ITEM_TYPE */
-				itemGlobal3DCounts[ii] = decomp->nodeGlobal3DCounts;
-				itemLocal3DCounts[ii] = decomp->nodeLocal3DCounts;
-				itemGlobalToLocalMap[ii] = decomp->nodeMapGlobalToLocal;
-				itemGlobalToShadowMap[ii] = decomp->nodeMapGlobalToShadow;
-				itemGlobalToDomainMap[ii] = decomp->nodeMapGlobalToDomain;
-			}
-		}
-		
-		for ( dim_I = 0; dim_I < 3; dim_I++ )
-			assert( itemGlobal3DCounts[0][dim_I] == itemGlobal3DCounts[1][dim_I] );
-
-		for( proc_I = 0; proc_I < decomp1->procsInUse; proc_I++ ) {
-			for ( dim_I = 0; dim_I < 3; dim_I++ )
-				assert( itemLocal3DCounts[0][proc_I][dim_I] == itemLocal3DCounts[1][proc_I][dim_I] );
-		}
-
-		if ( ( decomp1ItemType == ELEMENT_ITEM_TYPE ) && ( decomp2ItemType == ELEMENT_ITEM_TYPE ) ) {
-			for ( dim_I = 0; dim_I < 3; dim_I++ )
-				assert( decomp1->elementDomain3DCounts[dim_I] == decomp2->elementDomain3DCounts[dim_I] );
-		}		
-
-		if ( decomp1ItemType == ELEMENT_ITEM_TYPE ) {
-			globalCount = decomp1->elementGlobalCount;
-		}
-		else {
-			globalCount = decomp1->nodeGlobalCount;
-		}
-		if ( ( decomp1ItemType == ELEMENT_ITEM_TYPE ) && ( decomp2ItemType == NODE_ITEM_TYPE ) ) {
-			assert( decomp1->elementGlobalCount == decomp2->nodeGlobalCount );
-		}
-		if ( ( decomp1ItemType == NODE_ITEM_TYPE ) && ( decomp2ItemType == ELEMENT_ITEM_TYPE ) ) {
-			assert( decomp1->nodeGlobalCount == decomp2->elementGlobalCount );
-		}
-
-		printf("\tChecking the %d individual items\n", globalCount );
-		for (gItem_I = 0; gItem_I < globalCount; gItem_I++)
-		{
-			LocalIndex	localItem1;
-			ShadowIndex	shadowItem1;
-			DomainIndex	domainItem1;
-			LocalIndex	localItem2;
-			ShadowIndex	shadowItem2;
-			DomainIndex	domainItem2;
-			
-			//printf("\tChecking item %d\n", gItem_I );
-			localItem1 = (itemGlobalToLocalMap[0])(decomp1, gItem_I);
-			shadowItem1 = (itemGlobalToShadowMap[0])(decomp1, gItem_I);
-			domainItem1 = (itemGlobalToDomainMap[0])(decomp1, gItem_I);
-			localItem2 = (itemGlobalToLocalMap[1])(decomp2, gItem_I);
-			shadowItem2 = (itemGlobalToShadowMap[1])(decomp2, gItem_I);
-			domainItem2 = (itemGlobalToDomainMap[1])(decomp2, gItem_I);
-
-			assert( localItem1 == localItem2 );
-			assert( shadowItem1 == shadowItem2 );
-			assert( domainItem1 == domainItem2 );
-		}
-	}
-	else {
-		printf( "Rank %u not in use.\n", rank );
-	}	
-
-	printf("\tThe decomps matched for the given item types\n" );
-	return True;
-}
-
-
-int main(int argc, char *argv[])
-{
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	HexaMD*			decompCorner;
-	HexaMD*			decompBody;
-	Stream*                 stream;
-	Index			decompDims;
-	XML_IO_Handler*         ioHandler;
-	Dimension_Index         dim_I;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-
-	Journal_Enable_TypedStream( DebugStream_Type, False );
-	stream = Journal_Register( DebugStream_Type, HexaMD_Type );
-	Stream_EnableBranch( stream, True );
-	Stream_SetLevelBranch( stream, 3 );
-	
-	dictionary = Dictionary_New();
-
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-
-	/* Moved afterwards to allow command line to over-ride */
-	ioHandler = XML_IO_Handler_New();
-	IO_Handler_ReadAllFromCommandLine( ioHandler, argc, argv, dictionary );
-
-	decompDims = Dictionary_GetUnsignedInt_WithDefault( dictionary, "decompDims", 1 );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decompCorner = HexaMD_New_All( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout, decompDims );
-
-	if( rank == procToWatch ) {
-		printf( "Corner Node Layout\n" );
-		PrintDecompInfoOfHexaMD( decompCorner, rank );
-		printf( "\n" );
-	}
-
-	/* Do a run with body nodes */
-	Stg_Class_Delete( nLayout );
-	/* TODO: the following is a bit of a hack because of the weird way mesh size is defined by default in
-	the dictionary (assumes a corner mesh ) */
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		if ( ((IJKTopology*)nTopology)->size[dim_I] > 1 ) {
-			((IJKTopology*)nTopology)->size[dim_I]--;
-		}
-	}	
-	nLayout = (NodeLayout*)BodyNL_New( "BodyNL", dictionary, eLayout, nTopology );
-	decompBody = HexaMD_New_All( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout, decompDims );
-	if( rank == procToWatch ) {
-		Bool    result;
-
-		printf( "Body Node Layout\n" );
-		//PrintDecompInfoOfHexaMD( decompBody, rank );
-		printf( "Checking body node decomp has same element decomp as corner node decomp:\n" );
-		result = CheckDecompItemsAreDecomposedIdentically( decompCorner, ELEMENT_ITEM_TYPE, 
-			decompBody, ELEMENT_ITEM_TYPE, rank );
-		if ( result == True ) printf( "\tPassed.\n" );
-		else printf( "\tFailed.\n" );
-
-		printf( "Checking body node decomp has same node decomp as it's element decomp:\n" );
-		result = CheckDecompItemsAreDecomposedIdentically( decompBody, ELEMENT_ITEM_TYPE, 
-			decompBody, NODE_ITEM_TYPE, rank );
-		if ( result == True ) printf( "\tPassed.\n" );
-		else printf( "\tFailed.\n" );
-	}
-
-	Stg_Class_Delete( decompBody );
-	Stg_Class_Delete( decompCorner );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return EXIT_SUCCESS;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,8761 +0,0 @@
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 1, 1}
-	element3DCounts: {0, 0, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 1
-	elementCount: 0
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054468
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 0
-
-Node global: 0, Elements: 0
-
-Node (0, 0, 0) -> global 0
-
-Node global 0 -> (0, 0, 0)
-
-
-
-Element (0, 0, 0) -> global XXX
-
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 1, 1}
-	element3DCounts: {1, 0, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 2
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054630
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {X, 0}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-
-Element global: 0, Neighbours: 2, {X, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 1, 1}
-	element3DCounts: {2, 0, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 3
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054808
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {X, 1}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 1, 1}
-	element3DCounts: {3, 0, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80549d0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {3, 1}
-Node global: 3, Neighbours: 2, {X, 2}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, 2}
-Node global: 3, Elements: 2, {2, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, 2}
-Element global: 2, Neighbours: 2, {1, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-Element global: 2, Nodes: 2, {2, 3}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 2, 1}
-	element3DCounts: {0, 1, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 2
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054b98
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {X, 0}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-
-Element global: 0, Neighbours: 2, {X, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 2, 1}
-	element3DCounts: {1, 1, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054d60
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, X, X, 0}
-Node global: 3, Neighbours: 4, {X, X, 2, 1}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, X}
-Node global: 3, Elements: 4, {0, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 2, 1}
-	element3DCounts: {2, 1, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8054f80
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, X, X, 0}
-Node global: 4, Neighbours: 4, {5, X, 3, 1}
-Node global: 5, Neighbours: 4, {X, X, 4, 2}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, X}
-Node global: 4, Elements: 4, {0, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 2, 1}
-	element3DCounts: {3, 1, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80550a8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, X, X, 0}
-Node global: 5, Neighbours: 4, {6, X, 4, 1}
-Node global: 6, Neighbours: 4, {7, X, 5, 2}
-Node global: 7, Neighbours: 4, {X, X, 6, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, X}
-Node global: 5, Elements: 4, {0, 1, X, X}
-Node global: 6, Elements: 4, {1, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, X, X, X}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 3, 1}
-	element3DCounts: {0, 2, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 3
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055268
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {X, 1}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 3, 1}
-	element3DCounts: {1, 2, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055390
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, X, X, 2}
-Node global: 5, Neighbours: 4, {X, X, 4, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 3, 1}
-	element3DCounts: {2, 2, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 9
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055608
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, X, X, 3}
-Node global: 7, Neighbours: 4, {8, X, 6, 4}
-Node global: 8, Neighbours: 4, {X, X, 7, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, 3, X, X}
-Node global: 8, Elements: 4, {3, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, X, X}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 3, 1}
-	element3DCounts: {3, 2, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055608
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, X, X, 4}
-Node global: 9, Neighbours: 4, {10, X, 8, 5}
-Node global: 10, Neighbours: 4, {11, X, 9, 6}
-Node global: 11, Neighbours: 4, {X, X, 10, 7}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, X}
-Node global: 9, Elements: 4, {3, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, X, X}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, X, X, X}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 4, 1}
-	element3DCounts: {0, 3, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055ab8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {3, 1}
-Node global: 3, Neighbours: 2, {X, 2}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, 2}
-Node global: 3, Elements: 2, {2, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 3, 0) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 3, 0)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, 2}
-Element global: 2, Neighbours: 2, {1, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-Element global: 2, Nodes: 2, {2, 3}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 4, 1}
-	element3DCounts: {1, 3, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055b38
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, 6, X, 2}
-Node global: 5, Neighbours: 4, {X, 7, 4, 3}
-Node global: 6, Neighbours: 4, {7, X, X, 4}
-Node global: 7, Neighbours: 4, {X, X, 6, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, 2}
-Node global: 5, Elements: 4, {1, X, 2, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 3, 0) -> global 6
-Node (1, 3, 0) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 3, 0)
-Node global 7 -> (1, 3, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, 2, X}
-Element global: 2, Neighbours: 8, {X, 1, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-Element global: 2, Nodes: 4, {4, 5, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 4, 1}
-	element3DCounts: {2, 3, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055d30
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, 9, X, 3}
-Node global: 7, Neighbours: 4, {8, 10, 6, 4}
-Node global: 8, Neighbours: 4, {X, 11, 7, 5}
-Node global: 9, Neighbours: 4, {10, X, X, 6}
-Node global: 10, Neighbours: 4, {11, X, 9, 7}
-Node global: 11, Neighbours: 4, {X, X, 10, 8}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, 4}
-Node global: 7, Elements: 4, {2, 3, 4, 5}
-Node global: 8, Elements: 4, {3, X, 5, X}
-Node global: 9, Elements: 4, {X, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 3, 0) -> global 9
-Node (1, 3, 0) -> global 10
-Node (2, 3, 0) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 3, 0)
-Node global 10 -> (1, 3, 0)
-Node global 11 -> (2, 3, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, 4, 5}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, 4, 5, X}
-Element global: 4, Neighbours: 8, {X, 2, 3, X, 5, X, X, X}
-Element global: 5, Neighbours: 8, {2, 3, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-Element global: 4, Nodes: 4, {6, 7, 10, 9}
-Element global: 5, Nodes: 4, {7, 8, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 2, 0) -> global 4
-Element (1, 2, 0) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 2, 0)
-Element global 5 -> (1, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 4, 1}
-	element3DCounts: {3, 3, 0}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8055e80
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, 12, X, 4}
-Node global: 9, Neighbours: 4, {10, 13, 8, 5}
-Node global: 10, Neighbours: 4, {11, 14, 9, 6}
-Node global: 11, Neighbours: 4, {X, 15, 10, 7}
-Node global: 12, Neighbours: 4, {13, X, X, 8}
-Node global: 13, Neighbours: 4, {14, X, 12, 9}
-Node global: 14, Neighbours: 4, {15, X, 13, 10}
-Node global: 15, Neighbours: 4, {X, X, 14, 11}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, 6}
-Node global: 9, Elements: 4, {3, 4, 6, 7}
-Node global: 10, Elements: 4, {4, 5, 7, 8}
-Node global: 11, Elements: 4, {5, X, 8, X}
-Node global: 12, Elements: 4, {X, 6, X, X}
-Node global: 13, Elements: 4, {6, 7, X, X}
-Node global: 14, Elements: 4, {7, 8, X, X}
-Node global: 15, Elements: 4, {8, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 3, 0) -> global 12
-Node (1, 3, 0) -> global 13
-Node (2, 3, 0) -> global 14
-Node (3, 3, 0) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 3, 0)
-Node global 13 -> (1, 3, 0)
-Node global 14 -> (2, 3, 0)
-Node global 15 -> (3, 3, 0)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, 6, 7}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, 6, 7, 8}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, 7, 8, X}
-Element global: 6, Neighbours: 8, {X, 3, 4, X, 7, X, X, X}
-Element global: 7, Neighbours: 8, {3, 4, 5, 6, 8, X, X, X}
-Element global: 8, Neighbours: 8, {4, 5, X, 7, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-Element global: 6, Nodes: 4, {8, 9, 13, 12}
-Element global: 7, Nodes: 4, {9, 10, 14, 13}
-Element global: 8, Nodes: 4, {10, 11, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 2, 0) -> global 6
-Element (1, 2, 0) -> global 7
-Element (2, 2, 0) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 2, 0)
-Element global 7 -> (1, 2, 0)
-Element global 8 -> (2, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 1, 2}
-	element3DCounts: {0, 0, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 2
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8056238
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {X, 0}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 0, 1) -> global 1
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 0, 1)
-
-Element global: 0, Neighbours: 2, {X, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 1, 2}
-	element3DCounts: {1, 0, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8056250
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, X, X, 0}
-Node global: 3, Neighbours: 4, {X, X, 2, 1}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, X}
-Node global: 3, Elements: 4, {0, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (1, 0, 1) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (1, 0, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 1, 2}
-	element3DCounts: {2, 0, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80563d8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, X, X, 0}
-Node global: 4, Neighbours: 4, {5, X, 3, 1}
-Node global: 5, Neighbours: 4, {X, X, 4, 2}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, X}
-Node global: 4, Elements: 4, {0, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (1, 0, 1) -> global 4
-Node (2, 0, 1) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (1, 0, 1)
-Node global 5 -> (2, 0, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 1, 2}
-	element3DCounts: {3, 0, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80565a8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, X, X, 0}
-Node global: 5, Neighbours: 4, {6, X, 4, 1}
-Node global: 6, Neighbours: 4, {7, X, 5, 2}
-Node global: 7, Neighbours: 4, {X, X, 6, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, X}
-Node global: 5, Elements: 4, {0, 1, X, X}
-Node global: 6, Elements: 4, {1, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (2, 0, 1) -> global 6
-Node (3, 0, 1) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (2, 0, 1)
-Node global 7 -> (3, 0, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, X, X, X}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 2, 2}
-	element3DCounts: {0, 1, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80569d0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, X, X, 0}
-Node global: 3, Neighbours: 4, {X, X, 2, 1}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, X}
-Node global: 3, Elements: 4, {0, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (0, 1, 1) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (0, 1, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 2, 2}
-	element3DCounts: {1, 1, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 1
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80569c0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 4, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 5, 0, X, X}
-Node global: 2, Neighbours: 6, {3, X, 6, X, 0, X}
-Node global: 3, Neighbours: 6, {X, X, 7, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, X, X, X, 0}
-Node global: 5, Neighbours: 6, {X, 7, X, 4, X, 1}
-Node global: 6, Neighbours: 6, {7, X, X, X, 4, 2}
-Node global: 7, Neighbours: 6, {X, X, X, 6, 5, 3}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, X, X}
-Node global: 4, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 5, Elements: 8, {X, X, 0, X, X, X, X, X}
-Node global: 6, Elements: 8, {X, 0, X, X, X, X, X, X}
-Node global: 7, Elements: 8, {0, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (0, 1, 1) -> global 6
-Node (1, 1, 1) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (0, 1, 1)
-Node global 7 -> (1, 1, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 4, 5, 7, 6}
-
-Element (0, 0, 0) -> global 0
-
-Element global 0 -> (0, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 2, 2}
-	element3DCounts: {2, 1, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8056b50
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 6, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 8, 1, X, X}
-Node global: 3, Neighbours: 6, {4, X, 9, X, 0, X}
-Node global: 4, Neighbours: 6, {5, X, 10, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, X, X, X, 0}
-Node global: 7, Neighbours: 6, {8, 10, X, 6, X, 1}
-Node global: 8, Neighbours: 6, {X, 11, X, 7, X, 2}
-Node global: 9, Neighbours: 6, {10, X, X, X, 6, 3}
-Node global: 10, Neighbours: 6, {11, X, X, 9, 7, 4}
-Node global: 11, Neighbours: 6, {X, X, X, 10, 8, 5}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 7, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 8, Elements: 8, {X, X, 1, X, X, X, X, X}
-Node global: 9, Elements: 8, {X, 0, X, X, X, X, X, X}
-Node global: 10, Elements: 8, {0, 1, X, X, X, X, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (2, 0, 1) -> global 8
-Node (0, 1, 1) -> global 9
-Node (1, 1, 1) -> global 10
-Node (2, 1, 1) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (2, 0, 1)
-Node global 9 -> (0, 1, 1)
-Node global 10 -> (1, 1, 1)
-Node global 11 -> (2, 1, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 6, 7, 10, 9}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 7, 8, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 2, 2}
-	element3DCounts: {3, 1, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8056cf0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 8, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 10, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 11, 2, X, X}
-Node global: 4, Neighbours: 6, {5, X, 12, X, 0, X}
-Node global: 5, Neighbours: 6, {6, X, 13, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, X, 14, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, X, X, X, 0}
-Node global: 9, Neighbours: 6, {10, 13, X, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 14, X, 9, X, 2}
-Node global: 11, Neighbours: 6, {X, 15, X, 10, X, 3}
-Node global: 12, Neighbours: 6, {13, X, X, X, 8, 4}
-Node global: 13, Neighbours: 6, {14, X, X, 12, 9, 5}
-Node global: 14, Neighbours: 6, {15, X, X, 13, 10, 6}
-Node global: 15, Neighbours: 6, {X, X, X, 14, 11, 7}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 9, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 10, Elements: 8, {X, X, 1, 2, X, X, X, X}
-Node global: 11, Elements: 8, {X, X, 2, X, X, X, X, X}
-Node global: 12, Elements: 8, {X, 0, X, X, X, X, X, X}
-Node global: 13, Elements: 8, {0, 1, X, X, X, X, X, X}
-Node global: 14, Elements: 8, {1, 2, X, X, X, X, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (2, 0, 1) -> global 10
-Node (3, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (3, 1, 1) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (2, 0, 1)
-Node global 11 -> (3, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (3, 1, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 8, 9, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 9, 10, 14, 13}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 10, 11, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 3, 2}
-	element3DCounts: {0, 2, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057148
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, X, X, 0}
-Node global: 4, Neighbours: 4, {5, X, 3, 1}
-Node global: 5, Neighbours: 4, {X, X, 4, 2}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, X}
-Node global: 4, Elements: 4, {0, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (0, 1, 1) -> global 4
-Node (0, 2, 1) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (0, 1, 1)
-Node global 5 -> (0, 2, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 3, 2}
-	element3DCounts: {1, 2, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057098
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 6, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 8, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 9, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, X, 10, X, 2, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, 8, X, X, X, 0}
-Node global: 7, Neighbours: 6, {X, 9, X, 6, X, 1}
-Node global: 8, Neighbours: 6, {9, 10, X, X, 6, 2}
-Node global: 9, Neighbours: 6, {X, 11, X, 8, 7, 3}
-Node global: 10, Neighbours: 6, {11, X, X, X, 8, 4}
-Node global: 11, Neighbours: 6, {X, X, X, 10, 9, 5}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 7, Elements: 8, {X, X, 0, X, X, X, X, X}
-Node global: 8, Elements: 8, {X, 0, X, 1, X, X, X, X}
-Node global: 9, Elements: 8, {0, X, 1, X, X, X, X, X}
-Node global: 10, Elements: 8, {X, 1, X, X, X, X, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (0, 1, 1) -> global 8
-Node (1, 1, 1) -> global 9
-Node (0, 2, 1) -> global 10
-Node (1, 2, 1) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (0, 1, 1)
-Node global 9 -> (1, 1, 1)
-Node global 10 -> (0, 2, 1)
-Node global 11 -> (1, 2, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 6, 7, 9, 8}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 8, 9, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 3, 2}
-	element3DCounts: {2, 2, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 18
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057288
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 9, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 10, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 11, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 12, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 13, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 14, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, X, 15, X, 3, X}
-Node global: 7, Neighbours: 6, {8, X, 16, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, X, 17, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, 12, X, X, X, 0}
-Node global: 10, Neighbours: 6, {11, 13, X, 9, X, 1}
-Node global: 11, Neighbours: 6, {X, 14, X, 10, X, 2}
-Node global: 12, Neighbours: 6, {13, 15, X, X, 9, 3}
-Node global: 13, Neighbours: 6, {14, 16, X, 12, 10, 4}
-Node global: 14, Neighbours: 6, {X, 17, X, 13, 11, 5}
-Node global: 15, Neighbours: 6, {16, X, X, X, 12, 6}
-Node global: 16, Neighbours: 6, {17, X, X, 15, 13, 7}
-Node global: 17, Neighbours: 6, {X, X, X, 16, 14, 8}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, X, X}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, X, X}
-Node global: 9, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 10, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 11, Elements: 8, {X, X, 1, X, X, X, X, X}
-Node global: 12, Elements: 8, {X, 0, X, 2, X, X, X, X}
-Node global: 13, Elements: 8, {0, 1, 2, 3, X, X, X, X}
-Node global: 14, Elements: 8, {1, X, 3, X, X, X, X, X}
-Node global: 15, Elements: 8, {X, 2, X, X, X, X, X, X}
-Node global: 16, Elements: 8, {2, 3, X, X, X, X, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 0, 1) -> global 9
-Node (1, 0, 1) -> global 10
-Node (2, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (0, 2, 1) -> global 15
-Node (1, 2, 1) -> global 16
-Node (2, 2, 1) -> global 17
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 0, 1)
-Node global 10 -> (1, 0, 1)
-Node global 11 -> (2, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (0, 2, 1)
-Node global 16 -> (1, 2, 1)
-Node global 17 -> (2, 2, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 9, 10, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 10, 11, 14, 13}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 12, 13, 16, 15}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 13, 14, 17, 16}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 3, 2}
-	element3DCounts: {3, 2, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057488
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 15, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 16, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 17, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 18, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 19, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, X, 20, X, 4, X}
-Node global: 9, Neighbours: 6, {10, X, 21, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, 16, X, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 17, X, 12, X, 1}
-Node global: 14, Neighbours: 6, {15, 18, X, 13, X, 2}
-Node global: 15, Neighbours: 6, {X, 19, X, 14, X, 3}
-Node global: 16, Neighbours: 6, {17, 20, X, X, 12, 4}
-Node global: 17, Neighbours: 6, {18, 21, X, 16, 13, 5}
-Node global: 18, Neighbours: 6, {19, 22, X, 17, 14, 6}
-Node global: 19, Neighbours: 6, {X, 23, X, 18, 15, 7}
-Node global: 20, Neighbours: 6, {21, X, X, X, 16, 8}
-Node global: 21, Neighbours: 6, {22, X, X, 20, 17, 9}
-Node global: 22, Neighbours: 6, {23, X, X, 21, 18, 10}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 19, 11}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, X}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 14, Elements: 8, {X, X, 1, 2, X, X, X, X}
-Node global: 15, Elements: 8, {X, X, 2, X, X, X, X, X}
-Node global: 16, Elements: 8, {X, 0, X, 3, X, X, X, X}
-Node global: 17, Elements: 8, {0, 1, 3, 4, X, X, X, X}
-Node global: 18, Elements: 8, {1, 2, 4, 5, X, X, X, X}
-Node global: 19, Elements: 8, {2, X, 5, X, X, X, X, X}
-Node global: 20, Elements: 8, {X, 3, X, X, X, X, X, X}
-Node global: 21, Elements: 8, {3, 4, X, X, X, X, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (3, 0, 1) -> global 15
-Node (0, 1, 1) -> global 16
-Node (1, 1, 1) -> global 17
-Node (2, 1, 1) -> global 18
-Node (3, 1, 1) -> global 19
-Node (0, 2, 1) -> global 20
-Node (1, 2, 1) -> global 21
-Node (2, 2, 1) -> global 22
-Node (3, 2, 1) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (3, 0, 1)
-Node global 16 -> (0, 1, 1)
-Node global 17 -> (1, 1, 1)
-Node global 18 -> (2, 1, 1)
-Node global 19 -> (3, 1, 1)
-Node global 20 -> (0, 2, 1)
-Node global 21 -> (1, 2, 1)
-Node global 22 -> (2, 2, 1)
-Node global 23 -> (3, 2, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 12, 13, 17, 16}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 13, 14, 18, 17}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 14, 15, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 16, 17, 21, 20}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 17, 18, 22, 21}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 18, 19, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 4, 2}
-	element3DCounts: {0, 3, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057600
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, X, X, 0}
-Node global: 5, Neighbours: 4, {6, X, 4, 1}
-Node global: 6, Neighbours: 4, {7, X, 5, 2}
-Node global: 7, Neighbours: 4, {X, X, 6, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, X}
-Node global: 5, Elements: 4, {0, 1, X, X}
-Node global: 6, Elements: 4, {1, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 3, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (0, 1, 1) -> global 5
-Node (0, 2, 1) -> global 6
-Node (0, 3, 1) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 3, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (0, 1, 1)
-Node global 6 -> (0, 2, 1)
-Node global 7 -> (0, 3, 1)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, X, X}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, X, X, X}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 4, 2}
-	element3DCounts: {1, 3, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057600
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 8, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 10, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 11, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, 12, X, 2, X}
-Node global: 5, Neighbours: 6, {X, 7, 13, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, X, 14, X, 4, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 5, X}
-Node global: 8, Neighbours: 6, {9, 10, X, X, X, 0}
-Node global: 9, Neighbours: 6, {X, 11, X, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 12, X, X, 8, 2}
-Node global: 11, Neighbours: 6, {X, 13, X, 10, 9, 3}
-Node global: 12, Neighbours: 6, {13, 14, X, X, 10, 4}
-Node global: 13, Neighbours: 6, {X, 15, X, 12, 11, 5}
-Node global: 14, Neighbours: 6, {15, X, X, X, 12, 6}
-Node global: 15, Neighbours: 6, {X, X, X, 14, 13, 7}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, 2}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 2, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 9, Elements: 8, {X, X, 0, X, X, X, X, X}
-Node global: 10, Elements: 8, {X, 0, X, 1, X, X, X, X}
-Node global: 11, Elements: 8, {0, X, 1, X, X, X, X, X}
-Node global: 12, Elements: 8, {X, 1, X, 2, X, X, X, X}
-Node global: 13, Elements: 8, {1, X, 2, X, X, X, X, X}
-Node global: 14, Elements: 8, {X, 2, X, X, X, X, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 3, 0) -> global 6
-Node (1, 3, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (0, 1, 1) -> global 10
-Node (1, 1, 1) -> global 11
-Node (0, 2, 1) -> global 12
-Node (1, 2, 1) -> global 13
-Node (0, 3, 1) -> global 14
-Node (1, 3, 1) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 3, 0)
-Node global 7 -> (1, 3, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (0, 1, 1)
-Node global 11 -> (1, 1, 1)
-Node global 12 -> (0, 2, 1)
-Node global 13 -> (1, 2, 1)
-Node global 14 -> (0, 3, 1)
-Node global 15 -> (1, 3, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, 2, X, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 8, 9, 11, 10}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 10, 11, 13, 12}
-Element global: 2, Nodes: 8, {4, 5, 7, 6, 12, 13, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8054390
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8054390
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 4, 2}
-	element3DCounts: {2, 3, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8054390
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057c98
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8054390
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 15, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 16, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 17, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, 18, X, 3, X}
-Node global: 7, Neighbours: 6, {8, 10, 19, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, 11, 20, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, X, 21, X, 6, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 7, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 8, X}
-Node global: 12, Neighbours: 6, {13, 15, X, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 16, X, 12, X, 1}
-Node global: 14, Neighbours: 6, {X, 17, X, 13, X, 2}
-Node global: 15, Neighbours: 6, {16, 18, X, X, 12, 3}
-Node global: 16, Neighbours: 6, {17, 19, X, 15, 13, 4}
-Node global: 17, Neighbours: 6, {X, 20, X, 16, 14, 5}
-Node global: 18, Neighbours: 6, {19, 21, X, X, 15, 6}
-Node global: 19, Neighbours: 6, {20, 22, X, 18, 16, 7}
-Node global: 20, Neighbours: 6, {X, 23, X, 19, 17, 8}
-Node global: 21, Neighbours: 6, {22, X, X, X, 18, 9}
-Node global: 22, Neighbours: 6, {23, X, X, 21, 19, 10}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 20, 11}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, 4}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, 4, 5}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, 5, X}
-Node global: 9, Elements: 8, {X, X, X, X, X, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 14, Elements: 8, {X, X, 1, X, X, X, X, X}
-Node global: 15, Elements: 8, {X, 0, X, 2, X, X, X, X}
-Node global: 16, Elements: 8, {0, 1, 2, 3, X, X, X, X}
-Node global: 17, Elements: 8, {1, X, 3, X, X, X, X, X}
-Node global: 18, Elements: 8, {X, 2, X, 4, X, X, X, X}
-Node global: 19, Elements: 8, {2, 3, 4, 5, X, X, X, X}
-Node global: 20, Elements: 8, {3, X, 5, X, X, X, X, X}
-Node global: 21, Elements: 8, {X, 4, X, X, X, X, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 3, 0) -> global 9
-Node (1, 3, 0) -> global 10
-Node (2, 3, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (0, 1, 1) -> global 15
-Node (1, 1, 1) -> global 16
-Node (2, 1, 1) -> global 17
-Node (0, 2, 1) -> global 18
-Node (1, 2, 1) -> global 19
-Node (2, 2, 1) -> global 20
-Node (0, 3, 1) -> global 21
-Node (1, 3, 1) -> global 22
-Node (2, 3, 1) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 3, 0)
-Node global 10 -> (1, 3, 0)
-Node global 11 -> (2, 3, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (0, 1, 1)
-Node global 16 -> (1, 1, 1)
-Node global 17 -> (2, 1, 1)
-Node global 18 -> (0, 2, 1)
-Node global 19 -> (1, 2, 1)
-Node global 20 -> (2, 2, 1)
-Node global 21 -> (0, 3, 1)
-Node global 22 -> (1, 3, 1)
-Node global 23 -> (2, 3, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, 4, 5, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, 4, 5, X, X, X, X, X, X, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 2, 3, X, 5, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 2, 3, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 12, 13, 16, 15}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 13, 14, 17, 16}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 15, 16, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 16, 17, 20, 19}
-Element global: 4, Nodes: 8, {6, 7, 10, 9, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {7, 8, 11, 10, 19, 20, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 2, 0) -> global 4
-Element (1, 2, 0) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 2, 0)
-Element global 5 -> (1, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8057ad8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ad8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 4, 2}
-	element3DCounts: {3, 3, 1}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ad8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 32
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057b88
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ad8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 16, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 17, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 18, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 19, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 20, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 21, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 22, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 23, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, 24, X, 4, X}
-Node global: 9, Neighbours: 6, {10, 13, 25, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, 14, 26, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, 15, 27, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, X, 28, X, 8, X}
-Node global: 13, Neighbours: 6, {14, X, 29, 12, 9, X}
-Node global: 14, Neighbours: 6, {15, X, 30, 13, 10, X}
-Node global: 15, Neighbours: 6, {X, X, 31, 14, 11, X}
-Node global: 16, Neighbours: 6, {17, 20, X, X, X, 0}
-Node global: 17, Neighbours: 6, {18, 21, X, 16, X, 1}
-Node global: 18, Neighbours: 6, {19, 22, X, 17, X, 2}
-Node global: 19, Neighbours: 6, {X, 23, X, 18, X, 3}
-Node global: 20, Neighbours: 6, {21, 24, X, X, 16, 4}
-Node global: 21, Neighbours: 6, {22, 25, X, 20, 17, 5}
-Node global: 22, Neighbours: 6, {23, 26, X, 21, 18, 6}
-Node global: 23, Neighbours: 6, {X, 27, X, 22, 19, 7}
-Node global: 24, Neighbours: 6, {25, 28, X, X, 20, 8}
-Node global: 25, Neighbours: 6, {26, 29, X, 24, 21, 9}
-Node global: 26, Neighbours: 6, {27, 30, X, 25, 22, 10}
-Node global: 27, Neighbours: 6, {X, 31, X, 26, 23, 11}
-Node global: 28, Neighbours: 6, {29, X, X, X, 24, 12}
-Node global: 29, Neighbours: 6, {30, X, X, 28, 25, 13}
-Node global: 30, Neighbours: 6, {31, X, X, 29, 26, 14}
-Node global: 31, Neighbours: 6, {X, X, X, 30, 27, 15}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, 6}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, 6, 7}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, 7, 8}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, 8, X}
-Node global: 12, Elements: 8, {X, X, X, X, X, 6, X, X}
-Node global: 13, Elements: 8, {X, X, X, X, 6, 7, X, X}
-Node global: 14, Elements: 8, {X, X, X, X, 7, 8, X, X}
-Node global: 15, Elements: 8, {X, X, X, X, 8, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 0, X, X, X, X}
-Node global: 17, Elements: 8, {X, X, 0, 1, X, X, X, X}
-Node global: 18, Elements: 8, {X, X, 1, 2, X, X, X, X}
-Node global: 19, Elements: 8, {X, X, 2, X, X, X, X, X}
-Node global: 20, Elements: 8, {X, 0, X, 3, X, X, X, X}
-Node global: 21, Elements: 8, {0, 1, 3, 4, X, X, X, X}
-Node global: 22, Elements: 8, {1, 2, 4, 5, X, X, X, X}
-Node global: 23, Elements: 8, {2, X, 5, X, X, X, X, X}
-Node global: 24, Elements: 8, {X, 3, X, 6, X, X, X, X}
-Node global: 25, Elements: 8, {3, 4, 6, 7, X, X, X, X}
-Node global: 26, Elements: 8, {4, 5, 7, 8, X, X, X, X}
-Node global: 27, Elements: 8, {5, X, 8, X, X, X, X, X}
-Node global: 28, Elements: 8, {X, 6, X, X, X, X, X, X}
-Node global: 29, Elements: 8, {6, 7, X, X, X, X, X, X}
-Node global: 30, Elements: 8, {7, 8, X, X, X, X, X, X}
-Node global: 31, Elements: 8, {8, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 3, 0) -> global 12
-Node (1, 3, 0) -> global 13
-Node (2, 3, 0) -> global 14
-Node (3, 3, 0) -> global 15
-Node (0, 0, 1) -> global 16
-Node (1, 0, 1) -> global 17
-Node (2, 0, 1) -> global 18
-Node (3, 0, 1) -> global 19
-Node (0, 1, 1) -> global 20
-Node (1, 1, 1) -> global 21
-Node (2, 1, 1) -> global 22
-Node (3, 1, 1) -> global 23
-Node (0, 2, 1) -> global 24
-Node (1, 2, 1) -> global 25
-Node (2, 2, 1) -> global 26
-Node (3, 2, 1) -> global 27
-Node (0, 3, 1) -> global 28
-Node (1, 3, 1) -> global 29
-Node (2, 3, 1) -> global 30
-Node (3, 3, 1) -> global 31
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 3, 0)
-Node global 13 -> (1, 3, 0)
-Node global 14 -> (2, 3, 0)
-Node global 15 -> (3, 3, 0)
-Node global 16 -> (0, 0, 1)
-Node global 17 -> (1, 0, 1)
-Node global 18 -> (2, 0, 1)
-Node global 19 -> (3, 0, 1)
-Node global 20 -> (0, 1, 1)
-Node global 21 -> (1, 1, 1)
-Node global 22 -> (2, 1, 1)
-Node global 23 -> (3, 1, 1)
-Node global 24 -> (0, 2, 1)
-Node global 25 -> (1, 2, 1)
-Node global 26 -> (2, 2, 1)
-Node global 27 -> (3, 2, 1)
-Node global 28 -> (0, 3, 1)
-Node global 29 -> (1, 3, 1)
-Node global 30 -> (2, 3, 1)
-Node global 31 -> (3, 3, 1)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, X, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, X, X, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, 6, 7, X, X, X, X, X, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, 6, 7, 8, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, 7, 8, X, X, X, X, X, X, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 3, 4, X, 7, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 3, 4, 5, 6, 8, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 4, 5, X, 7, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 16, 17, 21, 20}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 17, 18, 22, 21}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 18, 19, 23, 22}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 20, 21, 25, 24}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 21, 22, 26, 25}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 22, 23, 27, 26}
-Element global: 6, Nodes: 8, {8, 9, 13, 12, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {9, 10, 14, 13, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {10, 11, 15, 14, 26, 27, 31, 30}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 2, 0) -> global 6
-Element (1, 2, 0) -> global 7
-Element (2, 2, 0) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 2, 0)
-Element global 7 -> (1, 2, 0)
-Element global 8 -> (2, 2, 0)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 1, 3}
-	element3DCounts: {0, 0, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 3
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057da0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {X, 1}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 0, 1) -> global 1
-Node (0, 0, 2) -> global 2
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 0, 1)
-Node global 2 -> (0, 0, 2)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 1, 3}
-	element3DCounts: {1, 0, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057ed0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, X, X, 2}
-Node global: 5, Neighbours: 4, {X, X, 4, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (1, 0, 1) -> global 3
-Node (0, 0, 2) -> global 4
-Node (1, 0, 2) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (1, 0, 1)
-Node global 4 -> (0, 0, 2)
-Node global 5 -> (1, 0, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 1, 3}
-	element3DCounts: {2, 0, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 9
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8057ed0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, X, X, 3}
-Node global: 7, Neighbours: 4, {8, X, 6, 4}
-Node global: 8, Neighbours: 4, {X, X, 7, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, 3, X, X}
-Node global: 8, Elements: 4, {3, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (1, 0, 1) -> global 4
-Node (2, 0, 1) -> global 5
-Node (0, 0, 2) -> global 6
-Node (1, 0, 2) -> global 7
-Node (2, 0, 2) -> global 8
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (1, 0, 1)
-Node global 5 -> (2, 0, 1)
-Node global 6 -> (0, 0, 2)
-Node global 7 -> (1, 0, 2)
-Node global 8 -> (2, 0, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, X, X}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (1, 0, 1) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (1, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 1, 3}
-	element3DCounts: {3, 0, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8058230
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, X, X, 4}
-Node global: 9, Neighbours: 4, {10, X, 8, 5}
-Node global: 10, Neighbours: 4, {11, X, 9, 6}
-Node global: 11, Neighbours: 4, {X, X, 10, 7}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, X}
-Node global: 9, Elements: 4, {3, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (2, 0, 1) -> global 6
-Node (3, 0, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (1, 0, 2) -> global 9
-Node (2, 0, 2) -> global 10
-Node (3, 0, 2) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (2, 0, 1)
-Node global 7 -> (3, 0, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (1, 0, 2)
-Node global 10 -> (2, 0, 2)
-Node global 11 -> (3, 0, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, X, X}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, X, X, X}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (1, 0, 1) -> global 4
-Element (2, 0, 1) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (1, 0, 1)
-Element global 5 -> (2, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 2, 3}
-	element3DCounts: {0, 1, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 6
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80583f8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, X, X, 2}
-Node global: 5, Neighbours: 4, {X, X, 4, 3}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, X}
-Node global: 5, Elements: 4, {1, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (0, 1, 1) -> global 3
-Node (0, 0, 2) -> global 4
-Node (0, 1, 2) -> global 5
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (0, 1, 1)
-Node global 4 -> (0, 0, 2)
-Node global 5 -> (0, 1, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8057ac0
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8057ac0
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 2, 3}
-	element3DCounts: {1, 1, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8057ac0
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 2
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80589c0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8057ac0
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 4, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 5, 0, X, X}
-Node global: 2, Neighbours: 6, {3, X, 6, X, 0, X}
-Node global: 3, Neighbours: 6, {X, X, 7, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, 8, X, X, 0}
-Node global: 5, Neighbours: 6, {X, 7, 9, 4, X, 1}
-Node global: 6, Neighbours: 6, {7, X, 10, X, 4, 2}
-Node global: 7, Neighbours: 6, {X, X, 11, 6, 5, 3}
-Node global: 8, Neighbours: 6, {9, 10, X, X, X, 4}
-Node global: 9, Neighbours: 6, {X, 11, X, 8, X, 5}
-Node global: 10, Neighbours: 6, {11, X, X, X, 8, 6}
-Node global: 11, Neighbours: 6, {X, X, X, 10, 9, 7}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, X, X}
-Node global: 4, Elements: 8, {X, X, X, 0, X, X, X, 1}
-Node global: 5, Elements: 8, {X, X, 0, X, X, X, 1, X}
-Node global: 6, Elements: 8, {X, 0, X, X, X, 1, X, X}
-Node global: 7, Elements: 8, {0, X, X, X, 1, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 1, X, X, X, X}
-Node global: 9, Elements: 8, {X, X, 1, X, X, X, X, X}
-Node global: 10, Elements: 8, {X, 1, X, X, X, X, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (0, 1, 1) -> global 6
-Node (1, 1, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (1, 0, 2) -> global 9
-Node (0, 1, 2) -> global 10
-Node (1, 1, 2) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (0, 1, 1)
-Node global 7 -> (1, 1, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (1, 0, 2)
-Node global 10 -> (0, 1, 2)
-Node global 11 -> (1, 1, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, 0, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 4, 5, 7, 6}
-Element global: 1, Nodes: 8, {4, 5, 7, 6, 8, 9, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 2, 3}
-	element3DCounts: {2, 1, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 18
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80587b8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 6, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 8, 1, X, X}
-Node global: 3, Neighbours: 6, {4, X, 9, X, 0, X}
-Node global: 4, Neighbours: 6, {5, X, 10, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, 12, X, X, 0}
-Node global: 7, Neighbours: 6, {8, 10, 13, 6, X, 1}
-Node global: 8, Neighbours: 6, {X, 11, 14, 7, X, 2}
-Node global: 9, Neighbours: 6, {10, X, 15, X, 6, 3}
-Node global: 10, Neighbours: 6, {11, X, 16, 9, 7, 4}
-Node global: 11, Neighbours: 6, {X, X, 17, 10, 8, 5}
-Node global: 12, Neighbours: 6, {13, 15, X, X, X, 6}
-Node global: 13, Neighbours: 6, {14, 16, X, 12, X, 7}
-Node global: 14, Neighbours: 6, {X, 17, X, 13, X, 8}
-Node global: 15, Neighbours: 6, {16, X, X, X, 12, 9}
-Node global: 16, Neighbours: 6, {17, X, X, 15, 13, 10}
-Node global: 17, Neighbours: 6, {X, X, X, 16, 14, 11}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, 2}
-Node global: 7, Elements: 8, {X, X, 0, 1, X, X, 2, 3}
-Node global: 8, Elements: 8, {X, X, 1, X, X, X, 3, X}
-Node global: 9, Elements: 8, {X, 0, X, X, X, 2, X, X}
-Node global: 10, Elements: 8, {0, 1, X, X, 2, 3, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, 3, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 2, X, X, X, X}
-Node global: 13, Elements: 8, {X, X, 2, 3, X, X, X, X}
-Node global: 14, Elements: 8, {X, X, 3, X, X, X, X, X}
-Node global: 15, Elements: 8, {X, 2, X, X, X, X, X, X}
-Node global: 16, Elements: 8, {2, 3, X, X, X, X, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (2, 0, 1) -> global 8
-Node (0, 1, 1) -> global 9
-Node (1, 1, 1) -> global 10
-Node (2, 1, 1) -> global 11
-Node (0, 0, 2) -> global 12
-Node (1, 0, 2) -> global 13
-Node (2, 0, 2) -> global 14
-Node (0, 1, 2) -> global 15
-Node (1, 1, 2) -> global 16
-Node (2, 1, 2) -> global 17
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (2, 0, 1)
-Node global 9 -> (0, 1, 1)
-Node global 10 -> (1, 1, 1)
-Node global 11 -> (2, 1, 1)
-Node global 12 -> (0, 0, 2)
-Node global 13 -> (1, 0, 2)
-Node global 14 -> (2, 0, 2)
-Node global 15 -> (0, 1, 2)
-Node global 16 -> (1, 1, 2)
-Node global 17 -> (2, 1, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 2, 3, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, 2, 3, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, 0, 1, X, X, X, X, X, X, X, 3, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, 0, 1, X, X, X, X, X, X, X, 2, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 6, 7, 10, 9}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 7, 8, 11, 10}
-Element global: 2, Nodes: 8, {6, 7, 10, 9, 12, 13, 16, 15}
-Element global: 3, Nodes: 8, {7, 8, 11, 10, 13, 14, 17, 16}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (1, 0, 1) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (1, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 2, 3}
-	element3DCounts: {3, 1, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80589e0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 8, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 10, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 11, 2, X, X}
-Node global: 4, Neighbours: 6, {5, X, 12, X, 0, X}
-Node global: 5, Neighbours: 6, {6, X, 13, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, X, 14, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, 16, X, X, 0}
-Node global: 9, Neighbours: 6, {10, 13, 17, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 14, 18, 9, X, 2}
-Node global: 11, Neighbours: 6, {X, 15, 19, 10, X, 3}
-Node global: 12, Neighbours: 6, {13, X, 20, X, 8, 4}
-Node global: 13, Neighbours: 6, {14, X, 21, 12, 9, 5}
-Node global: 14, Neighbours: 6, {15, X, 22, 13, 10, 6}
-Node global: 15, Neighbours: 6, {X, X, 23, 14, 11, 7}
-Node global: 16, Neighbours: 6, {17, 20, X, X, X, 8}
-Node global: 17, Neighbours: 6, {18, 21, X, 16, X, 9}
-Node global: 18, Neighbours: 6, {19, 22, X, 17, X, 10}
-Node global: 19, Neighbours: 6, {X, 23, X, 18, X, 11}
-Node global: 20, Neighbours: 6, {21, X, X, X, 16, 12}
-Node global: 21, Neighbours: 6, {22, X, X, 20, 17, 13}
-Node global: 22, Neighbours: 6, {23, X, X, 21, 18, 14}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 19, 15}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, 3}
-Node global: 9, Elements: 8, {X, X, 0, 1, X, X, 3, 4}
-Node global: 10, Elements: 8, {X, X, 1, 2, X, X, 4, 5}
-Node global: 11, Elements: 8, {X, X, 2, X, X, X, 5, X}
-Node global: 12, Elements: 8, {X, 0, X, X, X, 3, X, X}
-Node global: 13, Elements: 8, {0, 1, X, X, 3, 4, X, X}
-Node global: 14, Elements: 8, {1, 2, X, X, 4, 5, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, 5, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 3, X, X, X, X}
-Node global: 17, Elements: 8, {X, X, 3, 4, X, X, X, X}
-Node global: 18, Elements: 8, {X, X, 4, 5, X, X, X, X}
-Node global: 19, Elements: 8, {X, X, 5, X, X, X, X, X}
-Node global: 20, Elements: 8, {X, 3, X, X, X, X, X, X}
-Node global: 21, Elements: 8, {3, 4, X, X, X, X, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (2, 0, 1) -> global 10
-Node (3, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (3, 1, 1) -> global 15
-Node (0, 0, 2) -> global 16
-Node (1, 0, 2) -> global 17
-Node (2, 0, 2) -> global 18
-Node (3, 0, 2) -> global 19
-Node (0, 1, 2) -> global 20
-Node (1, 1, 2) -> global 21
-Node (2, 1, 2) -> global 22
-Node (3, 1, 2) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (2, 0, 1)
-Node global 11 -> (3, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (3, 1, 1)
-Node global 16 -> (0, 0, 2)
-Node global 17 -> (1, 0, 2)
-Node global 18 -> (2, 0, 2)
-Node global 19 -> (3, 0, 2)
-Node global 20 -> (0, 1, 2)
-Node global 21 -> (1, 1, 2)
-Node global 22 -> (2, 1, 2)
-Node global 23 -> (3, 1, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 3, 4, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, X, X, X, X, X, X, 3, 4, 5, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 4, 5, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, 0, 1, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, 0, 1, 2, X, X, X, X, X, X, 3, 5, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, 1, 2, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 8, 9, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 9, 10, 14, 13}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 10, 11, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 13, 12, 16, 17, 21, 20}
-Element global: 4, Nodes: 8, {9, 10, 14, 13, 17, 18, 22, 21}
-Element global: 5, Nodes: 8, {10, 11, 15, 14, 18, 19, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (1, 0, 1) -> global 4
-Element (2, 0, 1) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (1, 0, 1)
-Element global 5 -> (2, 0, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 3, 3}
-	element3DCounts: {0, 2, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 9
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8058b58
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, X, X, 3}
-Node global: 7, Neighbours: 4, {8, X, 6, 4}
-Node global: 8, Neighbours: 4, {X, X, 7, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, 3, X, X}
-Node global: 8, Elements: 4, {3, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (0, 1, 1) -> global 4
-Node (0, 2, 1) -> global 5
-Node (0, 0, 2) -> global 6
-Node (0, 1, 2) -> global 7
-Node (0, 2, 2) -> global 8
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (0, 1, 1)
-Node global 5 -> (0, 2, 1)
-Node global 6 -> (0, 0, 2)
-Node global 7 -> (0, 1, 2)
-Node global 8 -> (0, 2, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, X, X}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (0, 1, 1) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (0, 1, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 3, 3}
-	element3DCounts: {1, 2, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 18
-	elementCount: 4
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8058d20
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 6, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 8, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 9, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, X, 10, X, 2, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, 8, 12, X, X, 0}
-Node global: 7, Neighbours: 6, {X, 9, 13, 6, X, 1}
-Node global: 8, Neighbours: 6, {9, 10, 14, X, 6, 2}
-Node global: 9, Neighbours: 6, {X, 11, 15, 8, 7, 3}
-Node global: 10, Neighbours: 6, {11, X, 16, X, 8, 4}
-Node global: 11, Neighbours: 6, {X, X, 17, 10, 9, 5}
-Node global: 12, Neighbours: 6, {13, 14, X, X, X, 6}
-Node global: 13, Neighbours: 6, {X, 15, X, 12, X, 7}
-Node global: 14, Neighbours: 6, {15, 16, X, X, 12, 8}
-Node global: 15, Neighbours: 6, {X, 17, X, 14, 13, 9}
-Node global: 16, Neighbours: 6, {17, X, X, X, 14, 10}
-Node global: 17, Neighbours: 6, {X, X, X, 16, 15, 11}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, 2}
-Node global: 7, Elements: 8, {X, X, 0, X, X, X, 2, X}
-Node global: 8, Elements: 8, {X, 0, X, 1, X, 2, X, 3}
-Node global: 9, Elements: 8, {0, X, 1, X, 2, X, 3, X}
-Node global: 10, Elements: 8, {X, 1, X, X, X, 3, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, 3, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 2, X, X, X, X}
-Node global: 13, Elements: 8, {X, X, 2, X, X, X, X, X}
-Node global: 14, Elements: 8, {X, 2, X, 3, X, X, X, X}
-Node global: 15, Elements: 8, {2, X, 3, X, X, X, X, X}
-Node global: 16, Elements: 8, {X, 3, X, X, X, X, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (0, 1, 1) -> global 8
-Node (1, 1, 1) -> global 9
-Node (0, 2, 1) -> global 10
-Node (1, 2, 1) -> global 11
-Node (0, 0, 2) -> global 12
-Node (1, 0, 2) -> global 13
-Node (0, 1, 2) -> global 14
-Node (1, 1, 2) -> global 15
-Node (0, 2, 2) -> global 16
-Node (1, 2, 2) -> global 17
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (0, 1, 1)
-Node global 9 -> (1, 1, 1)
-Node global 10 -> (0, 2, 1)
-Node global 11 -> (1, 2, 1)
-Node global 12 -> (0, 0, 2)
-Node global 13 -> (1, 0, 2)
-Node global 14 -> (0, 1, 2)
-Node global 15 -> (1, 1, 2)
-Node global 16 -> (0, 2, 2)
-Node global 17 -> (1, 2, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, 2, X, X, 3, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, 2, X, X, 3, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, 0, X, X, 1, X, X, X, X, X, X, X, 3, X, X, X, X, X, X, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, 0, X, X, 1, X, X, X, X, X, 2, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 6, 7, 9, 8}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 8, 9, 11, 10}
-Element global: 2, Nodes: 8, {6, 7, 9, 8, 12, 13, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 11, 10, 14, 15, 17, 16}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (0, 1, 1) -> global 3
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (0, 1, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 3, 3}
-	element3DCounts: {2, 2, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 27
-	elementCount: 8
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8058ef0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 9, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 10, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 11, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 12, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 13, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 14, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, X, 15, X, 3, X}
-Node global: 7, Neighbours: 6, {8, X, 16, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, X, 17, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, 12, 18, X, X, 0}
-Node global: 10, Neighbours: 6, {11, 13, 19, 9, X, 1}
-Node global: 11, Neighbours: 6, {X, 14, 20, 10, X, 2}
-Node global: 12, Neighbours: 6, {13, 15, 21, X, 9, 3}
-Node global: 13, Neighbours: 6, {14, 16, 22, 12, 10, 4}
-Node global: 14, Neighbours: 6, {X, 17, 23, 13, 11, 5}
-Node global: 15, Neighbours: 6, {16, X, 24, X, 12, 6}
-Node global: 16, Neighbours: 6, {17, X, 25, 15, 13, 7}
-Node global: 17, Neighbours: 6, {X, X, 26, 16, 14, 8}
-Node global: 18, Neighbours: 6, {19, 21, X, X, X, 9}
-Node global: 19, Neighbours: 6, {20, 22, X, 18, X, 10}
-Node global: 20, Neighbours: 6, {X, 23, X, 19, X, 11}
-Node global: 21, Neighbours: 6, {22, 24, X, X, 18, 12}
-Node global: 22, Neighbours: 6, {23, 25, X, 21, 19, 13}
-Node global: 23, Neighbours: 6, {X, 26, X, 22, 20, 14}
-Node global: 24, Neighbours: 6, {25, X, X, X, 21, 15}
-Node global: 25, Neighbours: 6, {26, X, X, 24, 22, 16}
-Node global: 26, Neighbours: 6, {X, X, X, 25, 23, 17}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, X, X}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, X, X}
-Node global: 9, Elements: 8, {X, X, X, 0, X, X, X, 4}
-Node global: 10, Elements: 8, {X, X, 0, 1, X, X, 4, 5}
-Node global: 11, Elements: 8, {X, X, 1, X, X, X, 5, X}
-Node global: 12, Elements: 8, {X, 0, X, 2, X, 4, X, 6}
-Node global: 13, Elements: 8, {0, 1, 2, 3, 4, 5, 6, 7}
-Node global: 14, Elements: 8, {1, X, 3, X, 5, X, 7, X}
-Node global: 15, Elements: 8, {X, 2, X, X, X, 6, X, X}
-Node global: 16, Elements: 8, {2, 3, X, X, 6, 7, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, 7, X, X, X}
-Node global: 18, Elements: 8, {X, X, X, 4, X, X, X, X}
-Node global: 19, Elements: 8, {X, X, 4, 5, X, X, X, X}
-Node global: 20, Elements: 8, {X, X, 5, X, X, X, X, X}
-Node global: 21, Elements: 8, {X, 4, X, 6, X, X, X, X}
-Node global: 22, Elements: 8, {4, 5, 6, 7, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, 7, X, X, X, X, X}
-Node global: 24, Elements: 8, {X, 6, X, X, X, X, X, X}
-Node global: 25, Elements: 8, {6, 7, X, X, X, X, X, X}
-Node global: 26, Elements: 8, {7, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 0, 1) -> global 9
-Node (1, 0, 1) -> global 10
-Node (2, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (0, 2, 1) -> global 15
-Node (1, 2, 1) -> global 16
-Node (2, 2, 1) -> global 17
-Node (0, 0, 2) -> global 18
-Node (1, 0, 2) -> global 19
-Node (2, 0, 2) -> global 20
-Node (0, 1, 2) -> global 21
-Node (1, 1, 2) -> global 22
-Node (2, 1, 2) -> global 23
-Node (0, 2, 2) -> global 24
-Node (1, 2, 2) -> global 25
-Node (2, 2, 2) -> global 26
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 0, 1)
-Node global 10 -> (1, 0, 1)
-Node global 11 -> (2, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (0, 2, 1)
-Node global 16 -> (1, 2, 1)
-Node global 17 -> (2, 2, 1)
-Node global 18 -> (0, 0, 2)
-Node global 19 -> (1, 0, 2)
-Node global 20 -> (2, 0, 2)
-Node global 21 -> (0, 1, 2)
-Node global 22 -> (1, 1, 2)
-Node global 23 -> (2, 1, 2)
-Node global 24 -> (0, 2, 2)
-Node global 25 -> (1, 2, 2)
-Node global 26 -> (2, 2, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, 4, 5, X, 6, 7}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, 4, 5, X, 6, 7, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, X, X, X, 4, 5, X, 6, 7, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, X, X, X, 4, 5, X, 6, 7, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, 0, 1, X, 2, 3, X, X, X, X, 5, X, 6, 7, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, 0, 1, X, 2, 3, X, X, X, X, 4, X, 6, 7, X, X, X, X, X, X, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, 0, 1, X, 2, 3, X, X, X, X, 4, 5, X, 7, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {0, 1, X, 2, 3, X, X, X, X, 4, 5, X, 6, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 9, 10, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 10, 11, 14, 13}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 12, 13, 16, 15}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 13, 14, 17, 16}
-Element global: 4, Nodes: 8, {9, 10, 13, 12, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {10, 11, 14, 13, 19, 20, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 16, 15, 21, 22, 25, 24}
-Element global: 7, Nodes: 8, {13, 14, 17, 16, 22, 23, 26, 25}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 0, 1) -> global 4
-Element (1, 0, 1) -> global 5
-Element (0, 1, 1) -> global 6
-Element (1, 1, 1) -> global 7
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 0, 1)
-Element global 5 -> (1, 0, 1)
-Element global 6 -> (0, 1, 1)
-Element global 7 -> (1, 1, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 3, 3}
-	element3DCounts: {3, 2, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 36
-	elementCount: 12
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80590c0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 15, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 16, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 17, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 18, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 19, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, X, 20, X, 4, X}
-Node global: 9, Neighbours: 6, {10, X, 21, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, 16, 24, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 17, 25, 12, X, 1}
-Node global: 14, Neighbours: 6, {15, 18, 26, 13, X, 2}
-Node global: 15, Neighbours: 6, {X, 19, 27, 14, X, 3}
-Node global: 16, Neighbours: 6, {17, 20, 28, X, 12, 4}
-Node global: 17, Neighbours: 6, {18, 21, 29, 16, 13, 5}
-Node global: 18, Neighbours: 6, {19, 22, 30, 17, 14, 6}
-Node global: 19, Neighbours: 6, {X, 23, 31, 18, 15, 7}
-Node global: 20, Neighbours: 6, {21, X, 32, X, 16, 8}
-Node global: 21, Neighbours: 6, {22, X, 33, 20, 17, 9}
-Node global: 22, Neighbours: 6, {23, X, 34, 21, 18, 10}
-Node global: 23, Neighbours: 6, {X, X, 35, 22, 19, 11}
-Node global: 24, Neighbours: 6, {25, 28, X, X, X, 12}
-Node global: 25, Neighbours: 6, {26, 29, X, 24, X, 13}
-Node global: 26, Neighbours: 6, {27, 30, X, 25, X, 14}
-Node global: 27, Neighbours: 6, {X, 31, X, 26, X, 15}
-Node global: 28, Neighbours: 6, {29, 32, X, X, 24, 16}
-Node global: 29, Neighbours: 6, {30, 33, X, 28, 25, 17}
-Node global: 30, Neighbours: 6, {31, 34, X, 29, 26, 18}
-Node global: 31, Neighbours: 6, {X, 35, X, 30, 27, 19}
-Node global: 32, Neighbours: 6, {33, X, X, X, 28, 20}
-Node global: 33, Neighbours: 6, {34, X, X, 32, 29, 21}
-Node global: 34, Neighbours: 6, {35, X, X, 33, 30, 22}
-Node global: 35, Neighbours: 6, {X, X, X, 34, 31, 23}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, X}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, 6}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, 6, 7}
-Node global: 14, Elements: 8, {X, X, 1, 2, X, X, 7, 8}
-Node global: 15, Elements: 8, {X, X, 2, X, X, X, 8, X}
-Node global: 16, Elements: 8, {X, 0, X, 3, X, 6, X, 9}
-Node global: 17, Elements: 8, {0, 1, 3, 4, 6, 7, 9, 10}
-Node global: 18, Elements: 8, {1, 2, 4, 5, 7, 8, 10, 11}
-Node global: 19, Elements: 8, {2, X, 5, X, 8, X, 11, X}
-Node global: 20, Elements: 8, {X, 3, X, X, X, 9, X, X}
-Node global: 21, Elements: 8, {3, 4, X, X, 9, 10, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, 10, 11, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 11, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, X}
-Node global: 25, Elements: 8, {X, X, 6, 7, X, X, X, X}
-Node global: 26, Elements: 8, {X, X, 7, 8, X, X, X, X}
-Node global: 27, Elements: 8, {X, X, 8, X, X, X, X, X}
-Node global: 28, Elements: 8, {X, 6, X, 9, X, X, X, X}
-Node global: 29, Elements: 8, {6, 7, 9, 10, X, X, X, X}
-Node global: 30, Elements: 8, {7, 8, 10, 11, X, X, X, X}
-Node global: 31, Elements: 8, {8, X, 11, X, X, X, X, X}
-Node global: 32, Elements: 8, {X, 9, X, X, X, X, X, X}
-Node global: 33, Elements: 8, {9, 10, X, X, X, X, X, X}
-Node global: 34, Elements: 8, {10, 11, X, X, X, X, X, X}
-Node global: 35, Elements: 8, {11, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (3, 0, 1) -> global 15
-Node (0, 1, 1) -> global 16
-Node (1, 1, 1) -> global 17
-Node (2, 1, 1) -> global 18
-Node (3, 1, 1) -> global 19
-Node (0, 2, 1) -> global 20
-Node (1, 2, 1) -> global 21
-Node (2, 2, 1) -> global 22
-Node (3, 2, 1) -> global 23
-Node (0, 0, 2) -> global 24
-Node (1, 0, 2) -> global 25
-Node (2, 0, 2) -> global 26
-Node (3, 0, 2) -> global 27
-Node (0, 1, 2) -> global 28
-Node (1, 1, 2) -> global 29
-Node (2, 1, 2) -> global 30
-Node (3, 1, 2) -> global 31
-Node (0, 2, 2) -> global 32
-Node (1, 2, 2) -> global 33
-Node (2, 2, 2) -> global 34
-Node (3, 2, 2) -> global 35
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (3, 0, 1)
-Node global 16 -> (0, 1, 1)
-Node global 17 -> (1, 1, 1)
-Node global 18 -> (2, 1, 1)
-Node global 19 -> (3, 1, 1)
-Node global 20 -> (0, 2, 1)
-Node global 21 -> (1, 2, 1)
-Node global 22 -> (2, 2, 1)
-Node global 23 -> (3, 2, 1)
-Node global 24 -> (0, 0, 2)
-Node global 25 -> (1, 0, 2)
-Node global 26 -> (2, 0, 2)
-Node global 27 -> (3, 0, 2)
-Node global 28 -> (0, 1, 2)
-Node global 29 -> (1, 1, 2)
-Node global 30 -> (2, 1, 2)
-Node global 31 -> (3, 1, 2)
-Node global 32 -> (0, 2, 2)
-Node global 33 -> (1, 2, 2)
-Node global 34 -> (2, 2, 2)
-Node global 35 -> (3, 2, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, 6, 7, X, 9, 10}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, 6, 7, 8, 9, 10, 11}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, 7, 8, X, 10, 11, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, X, X, X, 6, 7, X, 9, 10, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, X, X, X, 6, 7, 8, 9, 10, 11, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, X, X, X, 7, 8, X, 10, 11, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 0, 1, X, 3, 4, X, X, X, X, 7, X, 9, 10, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, 0, 1, 2, 3, 4, 5, X, X, X, 6, 8, 9, 10, 11, X, X, X, X, X, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, 1, 2, X, 4, 5, X, X, X, X, 7, X, 10, 11, X, X, X, X, X, X, X, X, X, X}
-Element global: 9, Neighbours: 26, {X, 0, 1, X, 3, 4, X, X, X, X, 6, 7, X, 10, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 10, Neighbours: 26, {0, 1, 2, 3, 4, 5, X, X, X, 6, 7, 8, 9, 11, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 11, Neighbours: 26, {1, 2, X, 4, 5, X, X, X, X, 7, 8, X, 10, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 12, 13, 17, 16}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 13, 14, 18, 17}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 14, 15, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 16, 17, 21, 20}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 17, 18, 22, 21}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 18, 19, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 17, 16, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {13, 14, 18, 17, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {14, 15, 19, 18, 26, 27, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 21, 20, 28, 29, 33, 32}
-Element global: 10, Nodes: 8, {17, 18, 22, 21, 29, 30, 34, 33}
-Element global: 11, Nodes: 8, {18, 19, 23, 22, 30, 31, 35, 34}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 0, 1) -> global 6
-Element (1, 0, 1) -> global 7
-Element (2, 0, 1) -> global 8
-Element (0, 1, 1) -> global 9
-Element (1, 1, 1) -> global 10
-Element (2, 1, 1) -> global 11
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 0, 1)
-Element global 7 -> (1, 0, 1)
-Element global 8 -> (2, 0, 1)
-Element global 9 -> (0, 1, 1)
-Element global 10 -> (1, 1, 1)
-Element global 11 -> (2, 1, 1)
-
-
-HexaMeshTopology (ptr): 0x8058708
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8058708
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 4, 3}
-	element3DCounts: {0, 3, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8058708
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059718
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8058708
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, X, X, 4}
-Node global: 9, Neighbours: 4, {10, X, 8, 5}
-Node global: 10, Neighbours: 4, {11, X, 9, 6}
-Node global: 11, Neighbours: 4, {X, X, 10, 7}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, X}
-Node global: 9, Elements: 4, {3, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 3, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (0, 1, 1) -> global 5
-Node (0, 2, 1) -> global 6
-Node (0, 3, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (0, 1, 2) -> global 9
-Node (0, 2, 2) -> global 10
-Node (0, 3, 2) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 3, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (0, 1, 1)
-Node global 6 -> (0, 2, 1)
-Node global 7 -> (0, 3, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (0, 1, 2)
-Node global 10 -> (0, 2, 2)
-Node global 11 -> (0, 3, 2)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, X, X}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, X, X, X}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (0, 1, 1) -> global 4
-Element (0, 2, 1) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (0, 1, 1)
-Element global 5 -> (0, 2, 1)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 4, 3}
-	element3DCounts: {1, 3, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80594c0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 8, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 10, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 11, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, 12, X, 2, X}
-Node global: 5, Neighbours: 6, {X, 7, 13, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, X, 14, X, 4, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 5, X}
-Node global: 8, Neighbours: 6, {9, 10, 16, X, X, 0}
-Node global: 9, Neighbours: 6, {X, 11, 17, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 12, 18, X, 8, 2}
-Node global: 11, Neighbours: 6, {X, 13, 19, 10, 9, 3}
-Node global: 12, Neighbours: 6, {13, 14, 20, X, 10, 4}
-Node global: 13, Neighbours: 6, {X, 15, 21, 12, 11, 5}
-Node global: 14, Neighbours: 6, {15, X, 22, X, 12, 6}
-Node global: 15, Neighbours: 6, {X, X, 23, 14, 13, 7}
-Node global: 16, Neighbours: 6, {17, 18, X, X, X, 8}
-Node global: 17, Neighbours: 6, {X, 19, X, 16, X, 9}
-Node global: 18, Neighbours: 6, {19, 20, X, X, 16, 10}
-Node global: 19, Neighbours: 6, {X, 21, X, 18, 17, 11}
-Node global: 20, Neighbours: 6, {21, 22, X, X, 18, 12}
-Node global: 21, Neighbours: 6, {X, 23, X, 20, 19, 13}
-Node global: 22, Neighbours: 6, {23, X, X, X, 20, 14}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 21, 15}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, 2}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 2, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, 3}
-Node global: 9, Elements: 8, {X, X, 0, X, X, X, 3, X}
-Node global: 10, Elements: 8, {X, 0, X, 1, X, 3, X, 4}
-Node global: 11, Elements: 8, {0, X, 1, X, 3, X, 4, X}
-Node global: 12, Elements: 8, {X, 1, X, 2, X, 4, X, 5}
-Node global: 13, Elements: 8, {1, X, 2, X, 4, X, 5, X}
-Node global: 14, Elements: 8, {X, 2, X, X, X, 5, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, 5, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 3, X, X, X, X}
-Node global: 17, Elements: 8, {X, X, 3, X, X, X, X, X}
-Node global: 18, Elements: 8, {X, 3, X, 4, X, X, X, X}
-Node global: 19, Elements: 8, {3, X, 4, X, X, X, X, X}
-Node global: 20, Elements: 8, {X, 4, X, 5, X, X, X, X}
-Node global: 21, Elements: 8, {4, X, 5, X, X, X, X, X}
-Node global: 22, Elements: 8, {X, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 3, 0) -> global 6
-Node (1, 3, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (0, 1, 1) -> global 10
-Node (1, 1, 1) -> global 11
-Node (0, 2, 1) -> global 12
-Node (1, 2, 1) -> global 13
-Node (0, 3, 1) -> global 14
-Node (1, 3, 1) -> global 15
-Node (0, 0, 2) -> global 16
-Node (1, 0, 2) -> global 17
-Node (0, 1, 2) -> global 18
-Node (1, 1, 2) -> global 19
-Node (0, 2, 2) -> global 20
-Node (1, 2, 2) -> global 21
-Node (0, 3, 2) -> global 22
-Node (1, 3, 2) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 3, 0)
-Node global 7 -> (1, 3, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (0, 1, 1)
-Node global 11 -> (1, 1, 1)
-Node global 12 -> (0, 2, 1)
-Node global 13 -> (1, 2, 1)
-Node global 14 -> (0, 3, 1)
-Node global 15 -> (1, 3, 1)
-Node global 16 -> (0, 0, 2)
-Node global 17 -> (1, 0, 2)
-Node global 18 -> (0, 1, 2)
-Node global 19 -> (1, 1, 2)
-Node global 20 -> (0, 2, 2)
-Node global 21 -> (1, 2, 2)
-Node global 22 -> (0, 3, 2)
-Node global 23 -> (1, 3, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, 3, X, X, 4, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, 2, X, X, 3, X, X, 4, X, X, 5, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 4, X, X, 5, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, 0, X, X, 1, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, 0, X, X, 1, X, X, 2, X, X, 3, X, X, X, X, 5, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, 1, X, X, 2, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 8, 9, 11, 10}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 10, 11, 13, 12}
-Element global: 2, Nodes: 8, {4, 5, 7, 6, 12, 13, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 11, 10, 16, 17, 19, 18}
-Element global: 4, Nodes: 8, {10, 11, 13, 12, 18, 19, 21, 20}
-Element global: 5, Nodes: 8, {12, 13, 15, 14, 20, 21, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (0, 1, 1) -> global 4
-Element (0, 2, 1) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (0, 1, 1)
-Element global 5 -> (0, 2, 1)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 4, 3}
-	element3DCounts: {2, 3, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 36
-	elementCount: 12
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059630
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 15, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 16, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 17, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, 18, X, 3, X}
-Node global: 7, Neighbours: 6, {8, 10, 19, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, 11, 20, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, X, 21, X, 6, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 7, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 8, X}
-Node global: 12, Neighbours: 6, {13, 15, 24, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 16, 25, 12, X, 1}
-Node global: 14, Neighbours: 6, {X, 17, 26, 13, X, 2}
-Node global: 15, Neighbours: 6, {16, 18, 27, X, 12, 3}
-Node global: 16, Neighbours: 6, {17, 19, 28, 15, 13, 4}
-Node global: 17, Neighbours: 6, {X, 20, 29, 16, 14, 5}
-Node global: 18, Neighbours: 6, {19, 21, 30, X, 15, 6}
-Node global: 19, Neighbours: 6, {20, 22, 31, 18, 16, 7}
-Node global: 20, Neighbours: 6, {X, 23, 32, 19, 17, 8}
-Node global: 21, Neighbours: 6, {22, X, 33, X, 18, 9}
-Node global: 22, Neighbours: 6, {23, X, 34, 21, 19, 10}
-Node global: 23, Neighbours: 6, {X, X, 35, 22, 20, 11}
-Node global: 24, Neighbours: 6, {25, 27, X, X, X, 12}
-Node global: 25, Neighbours: 6, {26, 28, X, 24, X, 13}
-Node global: 26, Neighbours: 6, {X, 29, X, 25, X, 14}
-Node global: 27, Neighbours: 6, {28, 30, X, X, 24, 15}
-Node global: 28, Neighbours: 6, {29, 31, X, 27, 25, 16}
-Node global: 29, Neighbours: 6, {X, 32, X, 28, 26, 17}
-Node global: 30, Neighbours: 6, {31, 33, X, X, 27, 18}
-Node global: 31, Neighbours: 6, {32, 34, X, 30, 28, 19}
-Node global: 32, Neighbours: 6, {X, 35, X, 31, 29, 20}
-Node global: 33, Neighbours: 6, {34, X, X, X, 30, 21}
-Node global: 34, Neighbours: 6, {35, X, X, 33, 31, 22}
-Node global: 35, Neighbours: 6, {X, X, X, 34, 32, 23}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, 4}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, 4, 5}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, 5, X}
-Node global: 9, Elements: 8, {X, X, X, X, X, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, 6}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, 6, 7}
-Node global: 14, Elements: 8, {X, X, 1, X, X, X, 7, X}
-Node global: 15, Elements: 8, {X, 0, X, 2, X, 6, X, 8}
-Node global: 16, Elements: 8, {0, 1, 2, 3, 6, 7, 8, 9}
-Node global: 17, Elements: 8, {1, X, 3, X, 7, X, 9, X}
-Node global: 18, Elements: 8, {X, 2, X, 4, X, 8, X, 10}
-Node global: 19, Elements: 8, {2, 3, 4, 5, 8, 9, 10, 11}
-Node global: 20, Elements: 8, {3, X, 5, X, 9, X, 11, X}
-Node global: 21, Elements: 8, {X, 4, X, X, X, 10, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, 10, 11, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 11, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, X}
-Node global: 25, Elements: 8, {X, X, 6, 7, X, X, X, X}
-Node global: 26, Elements: 8, {X, X, 7, X, X, X, X, X}
-Node global: 27, Elements: 8, {X, 6, X, 8, X, X, X, X}
-Node global: 28, Elements: 8, {6, 7, 8, 9, X, X, X, X}
-Node global: 29, Elements: 8, {7, X, 9, X, X, X, X, X}
-Node global: 30, Elements: 8, {X, 8, X, 10, X, X, X, X}
-Node global: 31, Elements: 8, {8, 9, 10, 11, X, X, X, X}
-Node global: 32, Elements: 8, {9, X, 11, X, X, X, X, X}
-Node global: 33, Elements: 8, {X, 10, X, X, X, X, X, X}
-Node global: 34, Elements: 8, {10, 11, X, X, X, X, X, X}
-Node global: 35, Elements: 8, {11, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 3, 0) -> global 9
-Node (1, 3, 0) -> global 10
-Node (2, 3, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (0, 1, 1) -> global 15
-Node (1, 1, 1) -> global 16
-Node (2, 1, 1) -> global 17
-Node (0, 2, 1) -> global 18
-Node (1, 2, 1) -> global 19
-Node (2, 2, 1) -> global 20
-Node (0, 3, 1) -> global 21
-Node (1, 3, 1) -> global 22
-Node (2, 3, 1) -> global 23
-Node (0, 0, 2) -> global 24
-Node (1, 0, 2) -> global 25
-Node (2, 0, 2) -> global 26
-Node (0, 1, 2) -> global 27
-Node (1, 1, 2) -> global 28
-Node (2, 1, 2) -> global 29
-Node (0, 2, 2) -> global 30
-Node (1, 2, 2) -> global 31
-Node (2, 2, 2) -> global 32
-Node (0, 3, 2) -> global 33
-Node (1, 3, 2) -> global 34
-Node (2, 3, 2) -> global 35
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 3, 0)
-Node global 10 -> (1, 3, 0)
-Node global 11 -> (2, 3, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (0, 1, 1)
-Node global 16 -> (1, 1, 1)
-Node global 17 -> (2, 1, 1)
-Node global 18 -> (0, 2, 1)
-Node global 19 -> (1, 2, 1)
-Node global 20 -> (2, 2, 1)
-Node global 21 -> (0, 3, 1)
-Node global 22 -> (1, 3, 1)
-Node global 23 -> (2, 3, 1)
-Node global 24 -> (0, 0, 2)
-Node global 25 -> (1, 0, 2)
-Node global 26 -> (2, 0, 2)
-Node global 27 -> (0, 1, 2)
-Node global 28 -> (1, 1, 2)
-Node global 29 -> (2, 1, 2)
-Node global 30 -> (0, 2, 2)
-Node global 31 -> (1, 2, 2)
-Node global 32 -> (2, 2, 2)
-Node global 33 -> (0, 3, 2)
-Node global 34 -> (1, 3, 2)
-Node global 35 -> (2, 3, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, 6, 7, X, 8, 9}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, 6, 7, X, 8, 9, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, 4, 5, X, 6, 7, X, 8, 9, X, 10, 11}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, 4, 5, X, 6, 7, X, 8, 9, X, 10, 11, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 2, 3, X, 5, X, X, X, X, 8, 9, X, 10, 11, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 2, 3, X, 4, X, X, X, X, 8, 9, X, 10, 11, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 0, 1, X, 2, 3, X, X, X, X, 7, X, 8, 9, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, 0, 1, X, 2, 3, X, X, X, X, 6, X, 8, 9, X, X, X, X, X, X, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, 0, 1, X, 2, 3, X, 4, 5, X, 6, 7, X, 9, X, 10, 11, X, X, X, X, X, X, X, X, X}
-Element global: 9, Neighbours: 26, {0, 1, X, 2, 3, X, 4, 5, X, 6, 7, X, 8, X, 10, 11, X, X, X, X, X, X, X, X, X, X}
-Element global: 10, Neighbours: 26, {X, 2, 3, X, 4, 5, X, X, X, X, 8, 9, X, 11, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 11, Neighbours: 26, {2, 3, X, 4, 5, X, X, X, X, 8, 9, X, 10, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 12, 13, 16, 15}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 13, 14, 17, 16}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 15, 16, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 16, 17, 20, 19}
-Element global: 4, Nodes: 8, {6, 7, 10, 9, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {7, 8, 11, 10, 19, 20, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 16, 15, 24, 25, 28, 27}
-Element global: 7, Nodes: 8, {13, 14, 17, 16, 25, 26, 29, 28}
-Element global: 8, Nodes: 8, {15, 16, 19, 18, 27, 28, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 20, 19, 28, 29, 32, 31}
-Element global: 10, Nodes: 8, {18, 19, 22, 21, 30, 31, 34, 33}
-Element global: 11, Nodes: 8, {19, 20, 23, 22, 31, 32, 35, 34}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 2, 0) -> global 4
-Element (1, 2, 0) -> global 5
-Element (0, 0, 1) -> global 6
-Element (1, 0, 1) -> global 7
-Element (0, 1, 1) -> global 8
-Element (1, 1, 1) -> global 9
-Element (0, 2, 1) -> global 10
-Element (1, 2, 1) -> global 11
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 2, 0)
-Element global 5 -> (1, 2, 0)
-Element global 6 -> (0, 0, 1)
-Element global 7 -> (1, 0, 1)
-Element global 8 -> (0, 1, 1)
-Element global 9 -> (1, 1, 1)
-Element global 10 -> (0, 2, 1)
-Element global 11 -> (1, 2, 1)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 4, 3}
-	element3DCounts: {3, 3, 2}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 48
-	elementCount: 18
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059820
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 16, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 17, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 18, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 19, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 20, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 21, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 22, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 23, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, 24, X, 4, X}
-Node global: 9, Neighbours: 6, {10, 13, 25, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, 14, 26, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, 15, 27, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, X, 28, X, 8, X}
-Node global: 13, Neighbours: 6, {14, X, 29, 12, 9, X}
-Node global: 14, Neighbours: 6, {15, X, 30, 13, 10, X}
-Node global: 15, Neighbours: 6, {X, X, 31, 14, 11, X}
-Node global: 16, Neighbours: 6, {17, 20, 32, X, X, 0}
-Node global: 17, Neighbours: 6, {18, 21, 33, 16, X, 1}
-Node global: 18, Neighbours: 6, {19, 22, 34, 17, X, 2}
-Node global: 19, Neighbours: 6, {X, 23, 35, 18, X, 3}
-Node global: 20, Neighbours: 6, {21, 24, 36, X, 16, 4}
-Node global: 21, Neighbours: 6, {22, 25, 37, 20, 17, 5}
-Node global: 22, Neighbours: 6, {23, 26, 38, 21, 18, 6}
-Node global: 23, Neighbours: 6, {X, 27, 39, 22, 19, 7}
-Node global: 24, Neighbours: 6, {25, 28, 40, X, 20, 8}
-Node global: 25, Neighbours: 6, {26, 29, 41, 24, 21, 9}
-Node global: 26, Neighbours: 6, {27, 30, 42, 25, 22, 10}
-Node global: 27, Neighbours: 6, {X, 31, 43, 26, 23, 11}
-Node global: 28, Neighbours: 6, {29, X, 44, X, 24, 12}
-Node global: 29, Neighbours: 6, {30, X, 45, 28, 25, 13}
-Node global: 30, Neighbours: 6, {31, X, 46, 29, 26, 14}
-Node global: 31, Neighbours: 6, {X, X, 47, 30, 27, 15}
-Node global: 32, Neighbours: 6, {33, 36, X, X, X, 16}
-Node global: 33, Neighbours: 6, {34, 37, X, 32, X, 17}
-Node global: 34, Neighbours: 6, {35, 38, X, 33, X, 18}
-Node global: 35, Neighbours: 6, {X, 39, X, 34, X, 19}
-Node global: 36, Neighbours: 6, {37, 40, X, X, 32, 20}
-Node global: 37, Neighbours: 6, {38, 41, X, 36, 33, 21}
-Node global: 38, Neighbours: 6, {39, 42, X, 37, 34, 22}
-Node global: 39, Neighbours: 6, {X, 43, X, 38, 35, 23}
-Node global: 40, Neighbours: 6, {41, 44, X, X, 36, 24}
-Node global: 41, Neighbours: 6, {42, 45, X, 40, 37, 25}
-Node global: 42, Neighbours: 6, {43, 46, X, 41, 38, 26}
-Node global: 43, Neighbours: 6, {X, 47, X, 42, 39, 27}
-Node global: 44, Neighbours: 6, {45, X, X, X, 40, 28}
-Node global: 45, Neighbours: 6, {46, X, X, 44, 41, 29}
-Node global: 46, Neighbours: 6, {47, X, X, 45, 42, 30}
-Node global: 47, Neighbours: 6, {X, X, X, 46, 43, 31}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, 6}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, 6, 7}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, 7, 8}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, 8, X}
-Node global: 12, Elements: 8, {X, X, X, X, X, 6, X, X}
-Node global: 13, Elements: 8, {X, X, X, X, 6, 7, X, X}
-Node global: 14, Elements: 8, {X, X, X, X, 7, 8, X, X}
-Node global: 15, Elements: 8, {X, X, X, X, 8, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 0, X, X, X, 9}
-Node global: 17, Elements: 8, {X, X, 0, 1, X, X, 9, 10}
-Node global: 18, Elements: 8, {X, X, 1, 2, X, X, 10, 11}
-Node global: 19, Elements: 8, {X, X, 2, X, X, X, 11, X}
-Node global: 20, Elements: 8, {X, 0, X, 3, X, 9, X, 12}
-Node global: 21, Elements: 8, {0, 1, 3, 4, 9, 10, 12, 13}
-Node global: 22, Elements: 8, {1, 2, 4, 5, 10, 11, 13, 14}
-Node global: 23, Elements: 8, {2, X, 5, X, 11, X, 14, X}
-Node global: 24, Elements: 8, {X, 3, X, 6, X, 12, X, 15}
-Node global: 25, Elements: 8, {3, 4, 6, 7, 12, 13, 15, 16}
-Node global: 26, Elements: 8, {4, 5, 7, 8, 13, 14, 16, 17}
-Node global: 27, Elements: 8, {5, X, 8, X, 14, X, 17, X}
-Node global: 28, Elements: 8, {X, 6, X, X, X, 15, X, X}
-Node global: 29, Elements: 8, {6, 7, X, X, 15, 16, X, X}
-Node global: 30, Elements: 8, {7, 8, X, X, 16, 17, X, X}
-Node global: 31, Elements: 8, {8, X, X, X, 17, X, X, X}
-Node global: 32, Elements: 8, {X, X, X, 9, X, X, X, X}
-Node global: 33, Elements: 8, {X, X, 9, 10, X, X, X, X}
-Node global: 34, Elements: 8, {X, X, 10, 11, X, X, X, X}
-Node global: 35, Elements: 8, {X, X, 11, X, X, X, X, X}
-Node global: 36, Elements: 8, {X, 9, X, 12, X, X, X, X}
-Node global: 37, Elements: 8, {9, 10, 12, 13, X, X, X, X}
-Node global: 38, Elements: 8, {10, 11, 13, 14, X, X, X, X}
-Node global: 39, Elements: 8, {11, X, 14, X, X, X, X, X}
-Node global: 40, Elements: 8, {X, 12, X, 15, X, X, X, X}
-Node global: 41, Elements: 8, {12, 13, 15, 16, X, X, X, X}
-Node global: 42, Elements: 8, {13, 14, 16, 17, X, X, X, X}
-Node global: 43, Elements: 8, {14, X, 17, X, X, X, X, X}
-Node global: 44, Elements: 8, {X, 15, X, X, X, X, X, X}
-Node global: 45, Elements: 8, {15, 16, X, X, X, X, X, X}
-Node global: 46, Elements: 8, {16, 17, X, X, X, X, X, X}
-Node global: 47, Elements: 8, {17, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 3, 0) -> global 12
-Node (1, 3, 0) -> global 13
-Node (2, 3, 0) -> global 14
-Node (3, 3, 0) -> global 15
-Node (0, 0, 1) -> global 16
-Node (1, 0, 1) -> global 17
-Node (2, 0, 1) -> global 18
-Node (3, 0, 1) -> global 19
-Node (0, 1, 1) -> global 20
-Node (1, 1, 1) -> global 21
-Node (2, 1, 1) -> global 22
-Node (3, 1, 1) -> global 23
-Node (0, 2, 1) -> global 24
-Node (1, 2, 1) -> global 25
-Node (2, 2, 1) -> global 26
-Node (3, 2, 1) -> global 27
-Node (0, 3, 1) -> global 28
-Node (1, 3, 1) -> global 29
-Node (2, 3, 1) -> global 30
-Node (3, 3, 1) -> global 31
-Node (0, 0, 2) -> global 32
-Node (1, 0, 2) -> global 33
-Node (2, 0, 2) -> global 34
-Node (3, 0, 2) -> global 35
-Node (0, 1, 2) -> global 36
-Node (1, 1, 2) -> global 37
-Node (2, 1, 2) -> global 38
-Node (3, 1, 2) -> global 39
-Node (0, 2, 2) -> global 40
-Node (1, 2, 2) -> global 41
-Node (2, 2, 2) -> global 42
-Node (3, 2, 2) -> global 43
-Node (0, 3, 2) -> global 44
-Node (1, 3, 2) -> global 45
-Node (2, 3, 2) -> global 46
-Node (3, 3, 2) -> global 47
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 3, 0)
-Node global 13 -> (1, 3, 0)
-Node global 14 -> (2, 3, 0)
-Node global 15 -> (3, 3, 0)
-Node global 16 -> (0, 0, 1)
-Node global 17 -> (1, 0, 1)
-Node global 18 -> (2, 0, 1)
-Node global 19 -> (3, 0, 1)
-Node global 20 -> (0, 1, 1)
-Node global 21 -> (1, 1, 1)
-Node global 22 -> (2, 1, 1)
-Node global 23 -> (3, 1, 1)
-Node global 24 -> (0, 2, 1)
-Node global 25 -> (1, 2, 1)
-Node global 26 -> (2, 2, 1)
-Node global 27 -> (3, 2, 1)
-Node global 28 -> (0, 3, 1)
-Node global 29 -> (1, 3, 1)
-Node global 30 -> (2, 3, 1)
-Node global 31 -> (3, 3, 1)
-Node global 32 -> (0, 0, 2)
-Node global 33 -> (1, 0, 2)
-Node global 34 -> (2, 0, 2)
-Node global 35 -> (3, 0, 2)
-Node global 36 -> (0, 1, 2)
-Node global 37 -> (1, 1, 2)
-Node global 38 -> (2, 1, 2)
-Node global 39 -> (3, 1, 2)
-Node global 40 -> (0, 2, 2)
-Node global 41 -> (1, 2, 2)
-Node global 42 -> (2, 2, 2)
-Node global 43 -> (3, 2, 2)
-Node global 44 -> (0, 3, 2)
-Node global 45 -> (1, 3, 2)
-Node global 46 -> (2, 3, 2)
-Node global 47 -> (3, 3, 2)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, 9, 10, X, 12, 13}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, 9, 10, 11, 12, 13, 14}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, 10, 11, X, 13, 14, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, 6, 7, X, 9, 10, X, 12, 13, X, 15, 16}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, 7, 8, X, 10, 11, X, 13, 14, X, 16, 17, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 3, 4, X, 7, X, X, X, X, 12, 13, X, 15, 16, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 3, 4, 5, 6, 8, X, X, X, 12, 13, 14, 15, 16, 17, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 4, 5, X, 7, X, X, X, X, 13, 14, X, 16, 17, X, X, X, X}
-Element global: 9, Neighbours: 26, {X, X, X, X, 0, 1, X, 3, 4, X, X, X, X, 10, X, 12, 13, X, X, X, X, X, X, X, X, X}
-Element global: 10, Neighbours: 26, {X, X, X, 0, 1, 2, 3, 4, 5, X, X, X, 9, 11, 12, 13, 14, X, X, X, X, X, X, X, X, X}
-Element global: 11, Neighbours: 26, {X, X, X, 1, 2, X, 4, 5, X, X, X, X, 10, X, 13, 14, X, X, X, X, X, X, X, X, X, X}
-Element global: 12, Neighbours: 26, {X, 0, 1, X, 3, 4, X, 6, 7, X, 9, 10, X, 13, X, 15, 16, X, X, X, X, X, X, X, X, X}
-Element global: 13, Neighbours: 26, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, X, X, X, X, X, X, X, X, X}
-Element global: 14, Neighbours: 26, {1, 2, X, 4, 5, X, 7, 8, X, 10, 11, X, 13, X, 16, 17, X, X, X, X, X, X, X, X, X, X}
-Element global: 15, Neighbours: 26, {X, 3, 4, X, 6, 7, X, X, X, X, 12, 13, X, 16, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 16, Neighbours: 26, {3, 4, 5, 6, 7, 8, X, X, X, 12, 13, 14, 15, 17, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 17, Neighbours: 26, {4, 5, X, 7, 8, X, X, X, X, 13, 14, X, 16, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 16, 17, 21, 20}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 17, 18, 22, 21}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 18, 19, 23, 22}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 20, 21, 25, 24}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 21, 22, 26, 25}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 22, 23, 27, 26}
-Element global: 6, Nodes: 8, {8, 9, 13, 12, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {9, 10, 14, 13, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {10, 11, 15, 14, 26, 27, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 21, 20, 32, 33, 37, 36}
-Element global: 10, Nodes: 8, {17, 18, 22, 21, 33, 34, 38, 37}
-Element global: 11, Nodes: 8, {18, 19, 23, 22, 34, 35, 39, 38}
-Element global: 12, Nodes: 8, {20, 21, 25, 24, 36, 37, 41, 40}
-Element global: 13, Nodes: 8, {21, 22, 26, 25, 37, 38, 42, 41}
-Element global: 14, Nodes: 8, {22, 23, 27, 26, 38, 39, 43, 42}
-Element global: 15, Nodes: 8, {24, 25, 29, 28, 40, 41, 45, 44}
-Element global: 16, Nodes: 8, {25, 26, 30, 29, 41, 42, 46, 45}
-Element global: 17, Nodes: 8, {26, 27, 31, 30, 42, 43, 47, 46}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 2, 0) -> global 6
-Element (1, 2, 0) -> global 7
-Element (2, 2, 0) -> global 8
-Element (0, 0, 1) -> global 9
-Element (1, 0, 1) -> global 10
-Element (2, 0, 1) -> global 11
-Element (0, 1, 1) -> global 12
-Element (1, 1, 1) -> global 13
-Element (2, 1, 1) -> global 14
-Element (0, 2, 1) -> global 15
-Element (1, 2, 1) -> global 16
-Element (2, 2, 1) -> global 17
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 2, 0)
-Element global 7 -> (1, 2, 0)
-Element global 8 -> (2, 2, 0)
-Element global 9 -> (0, 0, 1)
-Element global 10 -> (1, 0, 1)
-Element global 11 -> (2, 0, 1)
-Element global 12 -> (0, 1, 1)
-Element global 13 -> (1, 1, 1)
-Element global 14 -> (2, 1, 1)
-Element global 15 -> (0, 2, 1)
-Element global 16 -> (1, 2, 1)
-Element global 17 -> (2, 2, 1)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 1, 4}
-	element3DCounts: {0, 0, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 4
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x80599f0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 2, {1, X}
-Node global: 1, Neighbours: 2, {2, 0}
-Node global: 2, Neighbours: 2, {3, 1}
-Node global: 3, Neighbours: 2, {X, 2}
-
-Node global: 0, Elements: 2, {X, 0}
-Node global: 1, Elements: 2, {0, 1}
-Node global: 2, Elements: 2, {1, 2}
-Node global: 3, Elements: 2, {2, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 0, 1) -> global 1
-Node (0, 0, 2) -> global 2
-Node (0, 0, 3) -> global 3
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 0, 1)
-Node global 2 -> (0, 0, 2)
-Node global 3 -> (0, 0, 3)
-
-Element global: 0, Neighbours: 2, {X, 1}
-Element global: 1, Neighbours: 2, {0, 2}
-Element global: 2, Neighbours: 2, {1, X}
-
-Element global: 0, Nodes: 2, {0, 1}
-Element global: 1, Nodes: 2, {1, 2}
-Element global: 2, Nodes: 2, {2, 3}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-Element (0, 0, 2) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-Element global 2 -> (0, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 1, 4}
-	element3DCounts: {1, 0, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059ba8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, 6, X, 2}
-Node global: 5, Neighbours: 4, {X, 7, 4, 3}
-Node global: 6, Neighbours: 4, {7, X, X, 4}
-Node global: 7, Neighbours: 4, {X, X, 6, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, 2}
-Node global: 5, Elements: 4, {1, X, 2, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (1, 0, 1) -> global 3
-Node (0, 0, 2) -> global 4
-Node (1, 0, 2) -> global 5
-Node (0, 0, 3) -> global 6
-Node (1, 0, 3) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (1, 0, 1)
-Node global 4 -> (0, 0, 2)
-Node global 5 -> (1, 0, 2)
-Node global 6 -> (0, 0, 3)
-Node global 7 -> (1, 0, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, 2, X}
-Element global: 2, Neighbours: 8, {X, 1, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-Element global: 2, Nodes: 4, {4, 5, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-Element (0, 0, 2) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-Element global 2 -> (0, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 1, 4}
-	element3DCounts: {2, 0, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059d30
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, 9, X, 3}
-Node global: 7, Neighbours: 4, {8, 10, 6, 4}
-Node global: 8, Neighbours: 4, {X, 11, 7, 5}
-Node global: 9, Neighbours: 4, {10, X, X, 6}
-Node global: 10, Neighbours: 4, {11, X, 9, 7}
-Node global: 11, Neighbours: 4, {X, X, 10, 8}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, 4}
-Node global: 7, Elements: 4, {2, 3, 4, 5}
-Node global: 8, Elements: 4, {3, X, 5, X}
-Node global: 9, Elements: 4, {X, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (1, 0, 1) -> global 4
-Node (2, 0, 1) -> global 5
-Node (0, 0, 2) -> global 6
-Node (1, 0, 2) -> global 7
-Node (2, 0, 2) -> global 8
-Node (0, 0, 3) -> global 9
-Node (1, 0, 3) -> global 10
-Node (2, 0, 3) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (1, 0, 1)
-Node global 5 -> (2, 0, 1)
-Node global 6 -> (0, 0, 2)
-Node global 7 -> (1, 0, 2)
-Node global 8 -> (2, 0, 2)
-Node global 9 -> (0, 0, 3)
-Node global 10 -> (1, 0, 3)
-Node global 11 -> (2, 0, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, 4, 5}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, 4, 5, X}
-Element global: 4, Neighbours: 8, {X, 2, 3, X, 5, X, X, X}
-Element global: 5, Neighbours: 8, {2, 3, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-Element global: 4, Nodes: 4, {6, 7, 10, 9}
-Element global: 5, Nodes: 4, {7, 8, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (1, 0, 1) -> global 3
-Element (0, 0, 2) -> global 4
-Element (1, 0, 2) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (1, 0, 1)
-Element global 4 -> (0, 0, 2)
-Element global 5 -> (1, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 1, 4}
-	element3DCounts: {3, 0, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x8059ef8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, 12, X, 4}
-Node global: 9, Neighbours: 4, {10, 13, 8, 5}
-Node global: 10, Neighbours: 4, {11, 14, 9, 6}
-Node global: 11, Neighbours: 4, {X, 15, 10, 7}
-Node global: 12, Neighbours: 4, {13, X, X, 8}
-Node global: 13, Neighbours: 4, {14, X, 12, 9}
-Node global: 14, Neighbours: 4, {15, X, 13, 10}
-Node global: 15, Neighbours: 4, {X, X, 14, 11}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, 6}
-Node global: 9, Elements: 4, {3, 4, 6, 7}
-Node global: 10, Elements: 4, {4, 5, 7, 8}
-Node global: 11, Elements: 4, {5, X, 8, X}
-Node global: 12, Elements: 4, {X, 6, X, X}
-Node global: 13, Elements: 4, {6, 7, X, X}
-Node global: 14, Elements: 4, {7, 8, X, X}
-Node global: 15, Elements: 4, {8, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (2, 0, 1) -> global 6
-Node (3, 0, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (1, 0, 2) -> global 9
-Node (2, 0, 2) -> global 10
-Node (3, 0, 2) -> global 11
-Node (0, 0, 3) -> global 12
-Node (1, 0, 3) -> global 13
-Node (2, 0, 3) -> global 14
-Node (3, 0, 3) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (2, 0, 1)
-Node global 7 -> (3, 0, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (1, 0, 2)
-Node global 10 -> (2, 0, 2)
-Node global 11 -> (3, 0, 2)
-Node global 12 -> (0, 0, 3)
-Node global 13 -> (1, 0, 3)
-Node global 14 -> (2, 0, 3)
-Node global 15 -> (3, 0, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, 6, 7}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, 6, 7, 8}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, 7, 8, X}
-Element global: 6, Neighbours: 8, {X, 3, 4, X, 7, X, X, X}
-Element global: 7, Neighbours: 8, {3, 4, 5, 6, 8, X, X, X}
-Element global: 8, Neighbours: 8, {4, 5, X, 7, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-Element global: 6, Nodes: 4, {8, 9, 13, 12}
-Element global: 7, Nodes: 4, {9, 10, 14, 13}
-Element global: 8, Nodes: 4, {10, 11, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (1, 0, 1) -> global 4
-Element (2, 0, 1) -> global 5
-Element (0, 0, 2) -> global 6
-Element (1, 0, 2) -> global 7
-Element (2, 0, 2) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (1, 0, 1)
-Element global 5 -> (2, 0, 1)
-Element global 6 -> (0, 0, 2)
-Element global 7 -> (1, 0, 2)
-Element global 8 -> (2, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 2, 4}
-	element3DCounts: {0, 1, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 8
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a0c0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 2, X, X}
-Node global: 1, Neighbours: 4, {X, 3, 0, X}
-Node global: 2, Neighbours: 4, {3, 4, X, 0}
-Node global: 3, Neighbours: 4, {X, 5, 2, 1}
-Node global: 4, Neighbours: 4, {5, 6, X, 2}
-Node global: 5, Neighbours: 4, {X, 7, 4, 3}
-Node global: 6, Neighbours: 4, {7, X, X, 4}
-Node global: 7, Neighbours: 4, {X, X, 6, 5}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, X}
-Node global: 2, Elements: 4, {X, 0, X, 1}
-Node global: 3, Elements: 4, {0, X, 1, X}
-Node global: 4, Elements: 4, {X, 1, X, 2}
-Node global: 5, Elements: 4, {1, X, 2, X}
-Node global: 6, Elements: 4, {X, 2, X, X}
-Node global: 7, Elements: 4, {2, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 0, 1) -> global 2
-Node (0, 1, 1) -> global 3
-Node (0, 0, 2) -> global 4
-Node (0, 1, 2) -> global 5
-Node (0, 0, 3) -> global 6
-Node (0, 1, 3) -> global 7
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 0, 1)
-Node global 3 -> (0, 1, 1)
-Node global 4 -> (0, 0, 2)
-Node global 5 -> (0, 1, 2)
-Node global 6 -> (0, 0, 3)
-Node global 7 -> (0, 1, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, X, X, 1, X}
-Element global: 1, Neighbours: 8, {X, 0, X, X, X, X, 2, X}
-Element global: 2, Neighbours: 8, {X, 1, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 3, 2}
-Element global: 1, Nodes: 4, {2, 3, 5, 4}
-Element global: 2, Nodes: 4, {4, 5, 7, 6}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-Element (0, 0, 2) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-Element global 2 -> (0, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x8059410
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x8059410
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 2, 4}
-	element3DCounts: {1, 1, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x8059410
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 3
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a810
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x8059410
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 4, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 5, 0, X, X}
-Node global: 2, Neighbours: 6, {3, X, 6, X, 0, X}
-Node global: 3, Neighbours: 6, {X, X, 7, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, 8, X, X, 0}
-Node global: 5, Neighbours: 6, {X, 7, 9, 4, X, 1}
-Node global: 6, Neighbours: 6, {7, X, 10, X, 4, 2}
-Node global: 7, Neighbours: 6, {X, X, 11, 6, 5, 3}
-Node global: 8, Neighbours: 6, {9, 10, 12, X, X, 4}
-Node global: 9, Neighbours: 6, {X, 11, 13, 8, X, 5}
-Node global: 10, Neighbours: 6, {11, X, 14, X, 8, 6}
-Node global: 11, Neighbours: 6, {X, X, 15, 10, 9, 7}
-Node global: 12, Neighbours: 6, {13, 14, X, X, X, 8}
-Node global: 13, Neighbours: 6, {X, 15, X, 12, X, 9}
-Node global: 14, Neighbours: 6, {15, X, X, X, 12, 10}
-Node global: 15, Neighbours: 6, {X, X, X, 14, 13, 11}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, X, X}
-Node global: 4, Elements: 8, {X, X, X, 0, X, X, X, 1}
-Node global: 5, Elements: 8, {X, X, 0, X, X, X, 1, X}
-Node global: 6, Elements: 8, {X, 0, X, X, X, 1, X, X}
-Node global: 7, Elements: 8, {0, X, X, X, 1, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 1, X, X, X, 2}
-Node global: 9, Elements: 8, {X, X, 1, X, X, X, 2, X}
-Node global: 10, Elements: 8, {X, 1, X, X, X, 2, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, 2, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 2, X, X, X, X}
-Node global: 13, Elements: 8, {X, X, 2, X, X, X, X, X}
-Node global: 14, Elements: 8, {X, 2, X, X, X, X, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (1, 0, 1) -> global 5
-Node (0, 1, 1) -> global 6
-Node (1, 1, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (1, 0, 2) -> global 9
-Node (0, 1, 2) -> global 10
-Node (1, 1, 2) -> global 11
-Node (0, 0, 3) -> global 12
-Node (1, 0, 3) -> global 13
-Node (0, 1, 3) -> global 14
-Node (1, 1, 3) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (1, 0, 1)
-Node global 6 -> (0, 1, 1)
-Node global 7 -> (1, 1, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (1, 0, 2)
-Node global 10 -> (0, 1, 2)
-Node global 11 -> (1, 1, 2)
-Node global 12 -> (0, 0, 3)
-Node global 13 -> (1, 0, 3)
-Node global 14 -> (0, 1, 3)
-Node global 15 -> (1, 1, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, 0, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 2, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, 1, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 4, 5, 7, 6}
-Element global: 1, Nodes: 8, {4, 5, 7, 6, 8, 9, 11, 10}
-Element global: 2, Nodes: 8, {8, 9, 11, 10, 12, 13, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (0, 0, 1) -> global 1
-Element (0, 0, 2) -> global 2
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 0, 1)
-Element global 2 -> (0, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 2, 4}
-	element3DCounts: {2, 1, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a4a8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 6, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 8, 1, X, X}
-Node global: 3, Neighbours: 6, {4, X, 9, X, 0, X}
-Node global: 4, Neighbours: 6, {5, X, 10, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, 12, X, X, 0}
-Node global: 7, Neighbours: 6, {8, 10, 13, 6, X, 1}
-Node global: 8, Neighbours: 6, {X, 11, 14, 7, X, 2}
-Node global: 9, Neighbours: 6, {10, X, 15, X, 6, 3}
-Node global: 10, Neighbours: 6, {11, X, 16, 9, 7, 4}
-Node global: 11, Neighbours: 6, {X, X, 17, 10, 8, 5}
-Node global: 12, Neighbours: 6, {13, 15, 18, X, X, 6}
-Node global: 13, Neighbours: 6, {14, 16, 19, 12, X, 7}
-Node global: 14, Neighbours: 6, {X, 17, 20, 13, X, 8}
-Node global: 15, Neighbours: 6, {16, X, 21, X, 12, 9}
-Node global: 16, Neighbours: 6, {17, X, 22, 15, 13, 10}
-Node global: 17, Neighbours: 6, {X, X, 23, 16, 14, 11}
-Node global: 18, Neighbours: 6, {19, 21, X, X, X, 12}
-Node global: 19, Neighbours: 6, {20, 22, X, 18, X, 13}
-Node global: 20, Neighbours: 6, {X, 23, X, 19, X, 14}
-Node global: 21, Neighbours: 6, {22, X, X, X, 18, 15}
-Node global: 22, Neighbours: 6, {23, X, X, 21, 19, 16}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 20, 17}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, 2}
-Node global: 7, Elements: 8, {X, X, 0, 1, X, X, 2, 3}
-Node global: 8, Elements: 8, {X, X, 1, X, X, X, 3, X}
-Node global: 9, Elements: 8, {X, 0, X, X, X, 2, X, X}
-Node global: 10, Elements: 8, {0, 1, X, X, 2, 3, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, 3, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 2, X, X, X, 4}
-Node global: 13, Elements: 8, {X, X, 2, 3, X, X, 4, 5}
-Node global: 14, Elements: 8, {X, X, 3, X, X, X, 5, X}
-Node global: 15, Elements: 8, {X, 2, X, X, X, 4, X, X}
-Node global: 16, Elements: 8, {2, 3, X, X, 4, 5, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, 5, X, X, X}
-Node global: 18, Elements: 8, {X, X, X, 4, X, X, X, X}
-Node global: 19, Elements: 8, {X, X, 4, 5, X, X, X, X}
-Node global: 20, Elements: 8, {X, X, 5, X, X, X, X, X}
-Node global: 21, Elements: 8, {X, 4, X, X, X, X, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (2, 0, 1) -> global 8
-Node (0, 1, 1) -> global 9
-Node (1, 1, 1) -> global 10
-Node (2, 1, 1) -> global 11
-Node (0, 0, 2) -> global 12
-Node (1, 0, 2) -> global 13
-Node (2, 0, 2) -> global 14
-Node (0, 1, 2) -> global 15
-Node (1, 1, 2) -> global 16
-Node (2, 1, 2) -> global 17
-Node (0, 0, 3) -> global 18
-Node (1, 0, 3) -> global 19
-Node (2, 0, 3) -> global 20
-Node (0, 1, 3) -> global 21
-Node (1, 1, 3) -> global 22
-Node (2, 1, 3) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (2, 0, 1)
-Node global 9 -> (0, 1, 1)
-Node global 10 -> (1, 1, 1)
-Node global 11 -> (2, 1, 1)
-Node global 12 -> (0, 0, 2)
-Node global 13 -> (1, 0, 2)
-Node global 14 -> (2, 0, 2)
-Node global 15 -> (0, 1, 2)
-Node global 16 -> (1, 1, 2)
-Node global 17 -> (2, 1, 2)
-Node global 18 -> (0, 0, 3)
-Node global 19 -> (1, 0, 3)
-Node global 20 -> (2, 0, 3)
-Node global 21 -> (0, 1, 3)
-Node global 22 -> (1, 1, 3)
-Node global 23 -> (2, 1, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 2, 3, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, 2, 3, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, 0, 1, X, X, X, X, X, X, X, 3, X, X, X, X, X, X, X, 4, 5, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, 0, 1, X, X, X, X, X, X, X, 2, X, X, X, X, X, X, X, 4, 5, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, 2, 3, X, X, X, X, X, X, X, 5, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, 2, 3, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 6, 7, 10, 9}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 7, 8, 11, 10}
-Element global: 2, Nodes: 8, {6, 7, 10, 9, 12, 13, 16, 15}
-Element global: 3, Nodes: 8, {7, 8, 11, 10, 13, 14, 17, 16}
-Element global: 4, Nodes: 8, {12, 13, 16, 15, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {13, 14, 17, 16, 19, 20, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (1, 0, 1) -> global 3
-Element (0, 0, 2) -> global 4
-Element (1, 0, 2) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (1, 0, 1)
-Element global 4 -> (0, 0, 2)
-Element global 5 -> (1, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 2, 4}
-	element3DCounts: {3, 1, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 32
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a618
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 8, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 10, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 11, 2, X, X}
-Node global: 4, Neighbours: 6, {5, X, 12, X, 0, X}
-Node global: 5, Neighbours: 6, {6, X, 13, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, X, 14, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, 16, X, X, 0}
-Node global: 9, Neighbours: 6, {10, 13, 17, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 14, 18, 9, X, 2}
-Node global: 11, Neighbours: 6, {X, 15, 19, 10, X, 3}
-Node global: 12, Neighbours: 6, {13, X, 20, X, 8, 4}
-Node global: 13, Neighbours: 6, {14, X, 21, 12, 9, 5}
-Node global: 14, Neighbours: 6, {15, X, 22, 13, 10, 6}
-Node global: 15, Neighbours: 6, {X, X, 23, 14, 11, 7}
-Node global: 16, Neighbours: 6, {17, 20, 24, X, X, 8}
-Node global: 17, Neighbours: 6, {18, 21, 25, 16, X, 9}
-Node global: 18, Neighbours: 6, {19, 22, 26, 17, X, 10}
-Node global: 19, Neighbours: 6, {X, 23, 27, 18, X, 11}
-Node global: 20, Neighbours: 6, {21, X, 28, X, 16, 12}
-Node global: 21, Neighbours: 6, {22, X, 29, 20, 17, 13}
-Node global: 22, Neighbours: 6, {23, X, 30, 21, 18, 14}
-Node global: 23, Neighbours: 6, {X, X, 31, 22, 19, 15}
-Node global: 24, Neighbours: 6, {25, 28, X, X, X, 16}
-Node global: 25, Neighbours: 6, {26, 29, X, 24, X, 17}
-Node global: 26, Neighbours: 6, {27, 30, X, 25, X, 18}
-Node global: 27, Neighbours: 6, {X, 31, X, 26, X, 19}
-Node global: 28, Neighbours: 6, {29, X, X, X, 24, 20}
-Node global: 29, Neighbours: 6, {30, X, X, 28, 25, 21}
-Node global: 30, Neighbours: 6, {31, X, X, 29, 26, 22}
-Node global: 31, Neighbours: 6, {X, X, X, 30, 27, 23}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, X, X}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, 3}
-Node global: 9, Elements: 8, {X, X, 0, 1, X, X, 3, 4}
-Node global: 10, Elements: 8, {X, X, 1, 2, X, X, 4, 5}
-Node global: 11, Elements: 8, {X, X, 2, X, X, X, 5, X}
-Node global: 12, Elements: 8, {X, 0, X, X, X, 3, X, X}
-Node global: 13, Elements: 8, {0, 1, X, X, 3, 4, X, X}
-Node global: 14, Elements: 8, {1, 2, X, X, 4, 5, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, 5, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 3, X, X, X, 6}
-Node global: 17, Elements: 8, {X, X, 3, 4, X, X, 6, 7}
-Node global: 18, Elements: 8, {X, X, 4, 5, X, X, 7, 8}
-Node global: 19, Elements: 8, {X, X, 5, X, X, X, 8, X}
-Node global: 20, Elements: 8, {X, 3, X, X, X, 6, X, X}
-Node global: 21, Elements: 8, {3, 4, X, X, 6, 7, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, 7, 8, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 8, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, X}
-Node global: 25, Elements: 8, {X, X, 6, 7, X, X, X, X}
-Node global: 26, Elements: 8, {X, X, 7, 8, X, X, X, X}
-Node global: 27, Elements: 8, {X, X, 8, X, X, X, X, X}
-Node global: 28, Elements: 8, {X, 6, X, X, X, X, X, X}
-Node global: 29, Elements: 8, {6, 7, X, X, X, X, X, X}
-Node global: 30, Elements: 8, {7, 8, X, X, X, X, X, X}
-Node global: 31, Elements: 8, {8, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (2, 0, 1) -> global 10
-Node (3, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (3, 1, 1) -> global 15
-Node (0, 0, 2) -> global 16
-Node (1, 0, 2) -> global 17
-Node (2, 0, 2) -> global 18
-Node (3, 0, 2) -> global 19
-Node (0, 1, 2) -> global 20
-Node (1, 1, 2) -> global 21
-Node (2, 1, 2) -> global 22
-Node (3, 1, 2) -> global 23
-Node (0, 0, 3) -> global 24
-Node (1, 0, 3) -> global 25
-Node (2, 0, 3) -> global 26
-Node (3, 0, 3) -> global 27
-Node (0, 1, 3) -> global 28
-Node (1, 1, 3) -> global 29
-Node (2, 1, 3) -> global 30
-Node (3, 1, 3) -> global 31
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (2, 0, 1)
-Node global 11 -> (3, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (3, 1, 1)
-Node global 16 -> (0, 0, 2)
-Node global 17 -> (1, 0, 2)
-Node global 18 -> (2, 0, 2)
-Node global 19 -> (3, 0, 2)
-Node global 20 -> (0, 1, 2)
-Node global 21 -> (1, 1, 2)
-Node global 22 -> (2, 1, 2)
-Node global 23 -> (3, 1, 2)
-Node global 24 -> (0, 0, 3)
-Node global 25 -> (1, 0, 3)
-Node global 26 -> (2, 0, 3)
-Node global 27 -> (3, 0, 3)
-Node global 28 -> (0, 1, 3)
-Node global 29 -> (1, 1, 3)
-Node global 30 -> (2, 1, 3)
-Node global 31 -> (3, 1, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 3, 4, X, X, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, X, X, X, X, X, X, 3, 4, 5, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 4, 5, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, 0, 1, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, 6, 7, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, 0, 1, 2, X, X, X, X, X, X, 3, 5, X, X, X, X, X, X, 6, 7, 8, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, 1, 2, X, X, X, X, X, X, X, 4, X, X, X, X, X, X, X, 7, 8, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 3, 4, X, X, X, X, X, X, X, 7, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, 3, 4, 5, X, X, X, X, X, X, 6, 8, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, 4, 5, X, X, X, X, X, X, X, 7, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 8, 9, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 9, 10, 14, 13}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 10, 11, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 13, 12, 16, 17, 21, 20}
-Element global: 4, Nodes: 8, {9, 10, 14, 13, 17, 18, 22, 21}
-Element global: 5, Nodes: 8, {10, 11, 15, 14, 18, 19, 23, 22}
-Element global: 6, Nodes: 8, {16, 17, 21, 20, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {17, 18, 22, 21, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {18, 19, 23, 22, 26, 27, 31, 30}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (1, 0, 1) -> global 4
-Element (2, 0, 1) -> global 5
-Element (0, 0, 2) -> global 6
-Element (1, 0, 2) -> global 7
-Element (2, 0, 2) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (1, 0, 1)
-Element global 5 -> (2, 0, 1)
-Element global 6 -> (0, 0, 2)
-Element global 7 -> (1, 0, 2)
-Element global 8 -> (2, 0, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 3, 4}
-	element3DCounts: {0, 2, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 12
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a888
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 3, X, X}
-Node global: 1, Neighbours: 4, {2, 4, 0, X}
-Node global: 2, Neighbours: 4, {X, 5, 1, X}
-Node global: 3, Neighbours: 4, {4, 6, X, 0}
-Node global: 4, Neighbours: 4, {5, 7, 3, 1}
-Node global: 5, Neighbours: 4, {X, 8, 4, 2}
-Node global: 6, Neighbours: 4, {7, 9, X, 3}
-Node global: 7, Neighbours: 4, {8, 10, 6, 4}
-Node global: 8, Neighbours: 4, {X, 11, 7, 5}
-Node global: 9, Neighbours: 4, {10, X, X, 6}
-Node global: 10, Neighbours: 4, {11, X, 9, 7}
-Node global: 11, Neighbours: 4, {X, X, 10, 8}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, X}
-Node global: 3, Elements: 4, {X, 0, X, 2}
-Node global: 4, Elements: 4, {0, 1, 2, 3}
-Node global: 5, Elements: 4, {1, X, 3, X}
-Node global: 6, Elements: 4, {X, 2, X, 4}
-Node global: 7, Elements: 4, {2, 3, 4, 5}
-Node global: 8, Elements: 4, {3, X, 5, X}
-Node global: 9, Elements: 4, {X, 4, X, X}
-Node global: 10, Elements: 4, {4, 5, X, X}
-Node global: 11, Elements: 4, {5, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 0, 1) -> global 3
-Node (0, 1, 1) -> global 4
-Node (0, 2, 1) -> global 5
-Node (0, 0, 2) -> global 6
-Node (0, 1, 2) -> global 7
-Node (0, 2, 2) -> global 8
-Node (0, 0, 3) -> global 9
-Node (0, 1, 3) -> global 10
-Node (0, 2, 3) -> global 11
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 0, 1)
-Node global 4 -> (0, 1, 1)
-Node global 5 -> (0, 2, 1)
-Node global 6 -> (0, 0, 2)
-Node global 7 -> (0, 1, 2)
-Node global 8 -> (0, 2, 2)
-Node global 9 -> (0, 0, 3)
-Node global 10 -> (0, 1, 3)
-Node global 11 -> (0, 2, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 2, 3}
-Element global: 1, Neighbours: 8, {X, X, X, 0, X, 2, 3, X}
-Element global: 2, Neighbours: 8, {X, 0, 1, X, 3, X, 4, 5}
-Element global: 3, Neighbours: 8, {0, 1, X, 2, X, 4, 5, X}
-Element global: 4, Neighbours: 8, {X, 2, 3, X, 5, X, X, X}
-Element global: 5, Neighbours: 8, {2, 3, X, 4, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 4, 3}
-Element global: 1, Nodes: 4, {1, 2, 5, 4}
-Element global: 2, Nodes: 4, {3, 4, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 8, 7}
-Element global: 4, Nodes: 4, {6, 7, 10, 9}
-Element global: 5, Nodes: 4, {7, 8, 11, 10}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (0, 1, 1) -> global 3
-Element (0, 0, 2) -> global 4
-Element (0, 1, 2) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (0, 1, 1)
-Element global 4 -> (0, 0, 2)
-Element global 5 -> (0, 1, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 3, 4}
-	element3DCounts: {1, 2, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 24
-	elementCount: 6
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805a9f8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 6, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 7, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 8, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 9, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, X, 10, X, 2, X}
-Node global: 5, Neighbours: 6, {X, X, 11, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, 8, 12, X, X, 0}
-Node global: 7, Neighbours: 6, {X, 9, 13, 6, X, 1}
-Node global: 8, Neighbours: 6, {9, 10, 14, X, 6, 2}
-Node global: 9, Neighbours: 6, {X, 11, 15, 8, 7, 3}
-Node global: 10, Neighbours: 6, {11, X, 16, X, 8, 4}
-Node global: 11, Neighbours: 6, {X, X, 17, 10, 9, 5}
-Node global: 12, Neighbours: 6, {13, 14, 18, X, X, 6}
-Node global: 13, Neighbours: 6, {X, 15, 19, 12, X, 7}
-Node global: 14, Neighbours: 6, {15, 16, 20, X, 12, 8}
-Node global: 15, Neighbours: 6, {X, 17, 21, 14, 13, 9}
-Node global: 16, Neighbours: 6, {17, X, 22, X, 14, 10}
-Node global: 17, Neighbours: 6, {X, X, 23, 16, 15, 11}
-Node global: 18, Neighbours: 6, {19, 20, X, X, X, 12}
-Node global: 19, Neighbours: 6, {X, 21, X, 18, X, 13}
-Node global: 20, Neighbours: 6, {21, 22, X, X, 18, 14}
-Node global: 21, Neighbours: 6, {X, 23, X, 20, 19, 15}
-Node global: 22, Neighbours: 6, {23, X, X, X, 20, 16}
-Node global: 23, Neighbours: 6, {X, X, X, 22, 21, 17}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, X}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, X, X}
-Node global: 6, Elements: 8, {X, X, X, 0, X, X, X, 2}
-Node global: 7, Elements: 8, {X, X, 0, X, X, X, 2, X}
-Node global: 8, Elements: 8, {X, 0, X, 1, X, 2, X, 3}
-Node global: 9, Elements: 8, {0, X, 1, X, 2, X, 3, X}
-Node global: 10, Elements: 8, {X, 1, X, X, X, 3, X, X}
-Node global: 11, Elements: 8, {1, X, X, X, 3, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 2, X, X, X, 4}
-Node global: 13, Elements: 8, {X, X, 2, X, X, X, 4, X}
-Node global: 14, Elements: 8, {X, 2, X, 3, X, 4, X, 5}
-Node global: 15, Elements: 8, {2, X, 3, X, 4, X, 5, X}
-Node global: 16, Elements: 8, {X, 3, X, X, X, 5, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, 5, X, X, X}
-Node global: 18, Elements: 8, {X, X, X, 4, X, X, X, X}
-Node global: 19, Elements: 8, {X, X, 4, X, X, X, X, X}
-Node global: 20, Elements: 8, {X, 4, X, 5, X, X, X, X}
-Node global: 21, Elements: 8, {4, X, 5, X, X, X, X, X}
-Node global: 22, Elements: 8, {X, 5, X, X, X, X, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 0, 1) -> global 6
-Node (1, 0, 1) -> global 7
-Node (0, 1, 1) -> global 8
-Node (1, 1, 1) -> global 9
-Node (0, 2, 1) -> global 10
-Node (1, 2, 1) -> global 11
-Node (0, 0, 2) -> global 12
-Node (1, 0, 2) -> global 13
-Node (0, 1, 2) -> global 14
-Node (1, 1, 2) -> global 15
-Node (0, 2, 2) -> global 16
-Node (1, 2, 2) -> global 17
-Node (0, 0, 3) -> global 18
-Node (1, 0, 3) -> global 19
-Node (0, 1, 3) -> global 20
-Node (1, 1, 3) -> global 21
-Node (0, 2, 3) -> global 22
-Node (1, 2, 3) -> global 23
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 0, 1)
-Node global 7 -> (1, 0, 1)
-Node global 8 -> (0, 1, 1)
-Node global 9 -> (1, 1, 1)
-Node global 10 -> (0, 2, 1)
-Node global 11 -> (1, 2, 1)
-Node global 12 -> (0, 0, 2)
-Node global 13 -> (1, 0, 2)
-Node global 14 -> (0, 1, 2)
-Node global 15 -> (1, 1, 2)
-Node global 16 -> (0, 2, 2)
-Node global 17 -> (1, 2, 2)
-Node global 18 -> (0, 0, 3)
-Node global 19 -> (1, 0, 3)
-Node global 20 -> (0, 1, 3)
-Node global 21 -> (1, 1, 3)
-Node global 22 -> (0, 2, 3)
-Node global 23 -> (1, 2, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, 2, X, X, 3, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, X, X, X, 2, X, X, 3, X, X, X, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, 0, X, X, 1, X, X, X, X, X, X, X, 3, X, X, X, X, X, 4, X, X, 5, X}
-Element global: 3, Neighbours: 26, {X, 0, X, X, 1, X, X, X, X, X, 2, X, X, X, X, X, X, X, 4, X, X, 5, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, 2, X, X, 3, X, X, X, X, X, X, X, 5, X, X, X, X, X, X, X, X, X, X}
-Element global: 5, Neighbours: 26, {X, 2, X, X, 3, X, X, X, X, X, 4, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 6, 7, 9, 8}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 8, 9, 11, 10}
-Element global: 2, Nodes: 8, {6, 7, 9, 8, 12, 13, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 11, 10, 14, 15, 17, 16}
-Element global: 4, Nodes: 8, {12, 13, 15, 14, 18, 19, 21, 20}
-Element global: 5, Nodes: 8, {14, 15, 17, 16, 20, 21, 23, 22}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 0, 1) -> global 2
-Element (0, 1, 1) -> global 3
-Element (0, 0, 2) -> global 4
-Element (0, 1, 2) -> global 5
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 0, 1)
-Element global 3 -> (0, 1, 1)
-Element global 4 -> (0, 0, 2)
-Element global 5 -> (0, 1, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 3, 4}
-	element3DCounts: {2, 2, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 36
-	elementCount: 12
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805abc8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 9, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 10, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 11, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 12, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 13, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 14, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, X, 15, X, 3, X}
-Node global: 7, Neighbours: 6, {8, X, 16, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, X, 17, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, 12, 18, X, X, 0}
-Node global: 10, Neighbours: 6, {11, 13, 19, 9, X, 1}
-Node global: 11, Neighbours: 6, {X, 14, 20, 10, X, 2}
-Node global: 12, Neighbours: 6, {13, 15, 21, X, 9, 3}
-Node global: 13, Neighbours: 6, {14, 16, 22, 12, 10, 4}
-Node global: 14, Neighbours: 6, {X, 17, 23, 13, 11, 5}
-Node global: 15, Neighbours: 6, {16, X, 24, X, 12, 6}
-Node global: 16, Neighbours: 6, {17, X, 25, 15, 13, 7}
-Node global: 17, Neighbours: 6, {X, X, 26, 16, 14, 8}
-Node global: 18, Neighbours: 6, {19, 21, 27, X, X, 9}
-Node global: 19, Neighbours: 6, {20, 22, 28, 18, X, 10}
-Node global: 20, Neighbours: 6, {X, 23, 29, 19, X, 11}
-Node global: 21, Neighbours: 6, {22, 24, 30, X, 18, 12}
-Node global: 22, Neighbours: 6, {23, 25, 31, 21, 19, 13}
-Node global: 23, Neighbours: 6, {X, 26, 32, 22, 20, 14}
-Node global: 24, Neighbours: 6, {25, X, 33, X, 21, 15}
-Node global: 25, Neighbours: 6, {26, X, 34, 24, 22, 16}
-Node global: 26, Neighbours: 6, {X, X, 35, 25, 23, 17}
-Node global: 27, Neighbours: 6, {28, 30, X, X, X, 18}
-Node global: 28, Neighbours: 6, {29, 31, X, 27, X, 19}
-Node global: 29, Neighbours: 6, {X, 32, X, 28, X, 20}
-Node global: 30, Neighbours: 6, {31, 33, X, X, 27, 21}
-Node global: 31, Neighbours: 6, {32, 34, X, 30, 28, 22}
-Node global: 32, Neighbours: 6, {X, 35, X, 31, 29, 23}
-Node global: 33, Neighbours: 6, {34, X, X, X, 30, 24}
-Node global: 34, Neighbours: 6, {35, X, X, 33, 31, 25}
-Node global: 35, Neighbours: 6, {X, X, X, 34, 32, 26}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, X, X}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, X, X}
-Node global: 9, Elements: 8, {X, X, X, 0, X, X, X, 4}
-Node global: 10, Elements: 8, {X, X, 0, 1, X, X, 4, 5}
-Node global: 11, Elements: 8, {X, X, 1, X, X, X, 5, X}
-Node global: 12, Elements: 8, {X, 0, X, 2, X, 4, X, 6}
-Node global: 13, Elements: 8, {0, 1, 2, 3, 4, 5, 6, 7}
-Node global: 14, Elements: 8, {1, X, 3, X, 5, X, 7, X}
-Node global: 15, Elements: 8, {X, 2, X, X, X, 6, X, X}
-Node global: 16, Elements: 8, {2, 3, X, X, 6, 7, X, X}
-Node global: 17, Elements: 8, {3, X, X, X, 7, X, X, X}
-Node global: 18, Elements: 8, {X, X, X, 4, X, X, X, 8}
-Node global: 19, Elements: 8, {X, X, 4, 5, X, X, 8, 9}
-Node global: 20, Elements: 8, {X, X, 5, X, X, X, 9, X}
-Node global: 21, Elements: 8, {X, 4, X, 6, X, 8, X, 10}
-Node global: 22, Elements: 8, {4, 5, 6, 7, 8, 9, 10, 11}
-Node global: 23, Elements: 8, {5, X, 7, X, 9, X, 11, X}
-Node global: 24, Elements: 8, {X, 6, X, X, X, 10, X, X}
-Node global: 25, Elements: 8, {6, 7, X, X, 10, 11, X, X}
-Node global: 26, Elements: 8, {7, X, X, X, 11, X, X, X}
-Node global: 27, Elements: 8, {X, X, X, 8, X, X, X, X}
-Node global: 28, Elements: 8, {X, X, 8, 9, X, X, X, X}
-Node global: 29, Elements: 8, {X, X, 9, X, X, X, X, X}
-Node global: 30, Elements: 8, {X, 8, X, 10, X, X, X, X}
-Node global: 31, Elements: 8, {8, 9, 10, 11, X, X, X, X}
-Node global: 32, Elements: 8, {9, X, 11, X, X, X, X, X}
-Node global: 33, Elements: 8, {X, 10, X, X, X, X, X, X}
-Node global: 34, Elements: 8, {10, 11, X, X, X, X, X, X}
-Node global: 35, Elements: 8, {11, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 0, 1) -> global 9
-Node (1, 0, 1) -> global 10
-Node (2, 0, 1) -> global 11
-Node (0, 1, 1) -> global 12
-Node (1, 1, 1) -> global 13
-Node (2, 1, 1) -> global 14
-Node (0, 2, 1) -> global 15
-Node (1, 2, 1) -> global 16
-Node (2, 2, 1) -> global 17
-Node (0, 0, 2) -> global 18
-Node (1, 0, 2) -> global 19
-Node (2, 0, 2) -> global 20
-Node (0, 1, 2) -> global 21
-Node (1, 1, 2) -> global 22
-Node (2, 1, 2) -> global 23
-Node (0, 2, 2) -> global 24
-Node (1, 2, 2) -> global 25
-Node (2, 2, 2) -> global 26
-Node (0, 0, 3) -> global 27
-Node (1, 0, 3) -> global 28
-Node (2, 0, 3) -> global 29
-Node (0, 1, 3) -> global 30
-Node (1, 1, 3) -> global 31
-Node (2, 1, 3) -> global 32
-Node (0, 2, 3) -> global 33
-Node (1, 2, 3) -> global 34
-Node (2, 2, 3) -> global 35
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 0, 1)
-Node global 10 -> (1, 0, 1)
-Node global 11 -> (2, 0, 1)
-Node global 12 -> (0, 1, 1)
-Node global 13 -> (1, 1, 1)
-Node global 14 -> (2, 1, 1)
-Node global 15 -> (0, 2, 1)
-Node global 16 -> (1, 2, 1)
-Node global 17 -> (2, 2, 1)
-Node global 18 -> (0, 0, 2)
-Node global 19 -> (1, 0, 2)
-Node global 20 -> (2, 0, 2)
-Node global 21 -> (0, 1, 2)
-Node global 22 -> (1, 1, 2)
-Node global 23 -> (2, 1, 2)
-Node global 24 -> (0, 2, 2)
-Node global 25 -> (1, 2, 2)
-Node global 26 -> (2, 2, 2)
-Node global 27 -> (0, 0, 3)
-Node global 28 -> (1, 0, 3)
-Node global 29 -> (2, 0, 3)
-Node global 30 -> (0, 1, 3)
-Node global 31 -> (1, 1, 3)
-Node global 32 -> (2, 1, 3)
-Node global 33 -> (0, 2, 3)
-Node global 34 -> (1, 2, 3)
-Node global 35 -> (2, 2, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, 4, 5, X, 6, 7}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, 4, 5, X, 6, 7, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, X, X, X, 4, 5, X, 6, 7, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, X, X, X, 4, 5, X, 6, 7, X, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, 0, 1, X, 2, 3, X, X, X, X, 5, X, 6, 7, X, X, X, X, 8, 9, X, 10, 11}
-Element global: 5, Neighbours: 26, {X, X, X, 0, 1, X, 2, 3, X, X, X, X, 4, X, 6, 7, X, X, X, X, 8, 9, X, 10, 11, X}
-Element global: 6, Neighbours: 26, {X, 0, 1, X, 2, 3, X, X, X, X, 4, 5, X, 7, X, X, X, X, 8, 9, X, 10, 11, X, X, X}
-Element global: 7, Neighbours: 26, {0, 1, X, 2, 3, X, X, X, X, 4, 5, X, 6, X, X, X, X, 8, 9, X, 10, 11, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, X, 4, 5, X, 6, 7, X, X, X, X, 9, X, 10, 11, X, X, X, X, X, X, X, X, X}
-Element global: 9, Neighbours: 26, {X, X, X, 4, 5, X, 6, 7, X, X, X, X, 8, X, 10, 11, X, X, X, X, X, X, X, X, X, X}
-Element global: 10, Neighbours: 26, {X, 4, 5, X, 6, 7, X, X, X, X, 8, 9, X, 11, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 11, Neighbours: 26, {4, 5, X, 6, 7, X, X, X, X, 8, 9, X, 10, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 9, 10, 13, 12}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 10, 11, 14, 13}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 12, 13, 16, 15}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 13, 14, 17, 16}
-Element global: 4, Nodes: 8, {9, 10, 13, 12, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {10, 11, 14, 13, 19, 20, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 16, 15, 21, 22, 25, 24}
-Element global: 7, Nodes: 8, {13, 14, 17, 16, 22, 23, 26, 25}
-Element global: 8, Nodes: 8, {18, 19, 22, 21, 27, 28, 31, 30}
-Element global: 9, Nodes: 8, {19, 20, 23, 22, 28, 29, 32, 31}
-Element global: 10, Nodes: 8, {21, 22, 25, 24, 30, 31, 34, 33}
-Element global: 11, Nodes: 8, {22, 23, 26, 25, 31, 32, 35, 34}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 0, 1) -> global 4
-Element (1, 0, 1) -> global 5
-Element (0, 1, 1) -> global 6
-Element (1, 1, 1) -> global 7
-Element (0, 0, 2) -> global 8
-Element (1, 0, 2) -> global 9
-Element (0, 1, 2) -> global 10
-Element (1, 1, 2) -> global 11
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 0, 1)
-Element global 5 -> (1, 0, 1)
-Element global 6 -> (0, 1, 1)
-Element global 7 -> (1, 1, 1)
-Element global 8 -> (0, 0, 2)
-Element global 9 -> (1, 0, 2)
-Element global 10 -> (0, 1, 2)
-Element global 11 -> (1, 1, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 3, 4}
-	element3DCounts: {3, 2, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 48
-	elementCount: 18
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805ad98
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 15, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 16, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 17, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 18, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 19, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, X, 20, X, 4, X}
-Node global: 9, Neighbours: 6, {10, X, 21, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, 16, 24, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 17, 25, 12, X, 1}
-Node global: 14, Neighbours: 6, {15, 18, 26, 13, X, 2}
-Node global: 15, Neighbours: 6, {X, 19, 27, 14, X, 3}
-Node global: 16, Neighbours: 6, {17, 20, 28, X, 12, 4}
-Node global: 17, Neighbours: 6, {18, 21, 29, 16, 13, 5}
-Node global: 18, Neighbours: 6, {19, 22, 30, 17, 14, 6}
-Node global: 19, Neighbours: 6, {X, 23, 31, 18, 15, 7}
-Node global: 20, Neighbours: 6, {21, X, 32, X, 16, 8}
-Node global: 21, Neighbours: 6, {22, X, 33, 20, 17, 9}
-Node global: 22, Neighbours: 6, {23, X, 34, 21, 18, 10}
-Node global: 23, Neighbours: 6, {X, X, 35, 22, 19, 11}
-Node global: 24, Neighbours: 6, {25, 28, 36, X, X, 12}
-Node global: 25, Neighbours: 6, {26, 29, 37, 24, X, 13}
-Node global: 26, Neighbours: 6, {27, 30, 38, 25, X, 14}
-Node global: 27, Neighbours: 6, {X, 31, 39, 26, X, 15}
-Node global: 28, Neighbours: 6, {29, 32, 40, X, 24, 16}
-Node global: 29, Neighbours: 6, {30, 33, 41, 28, 25, 17}
-Node global: 30, Neighbours: 6, {31, 34, 42, 29, 26, 18}
-Node global: 31, Neighbours: 6, {X, 35, 43, 30, 27, 19}
-Node global: 32, Neighbours: 6, {33, X, 44, X, 28, 20}
-Node global: 33, Neighbours: 6, {34, X, 45, 32, 29, 21}
-Node global: 34, Neighbours: 6, {35, X, 46, 33, 30, 22}
-Node global: 35, Neighbours: 6, {X, X, 47, 34, 31, 23}
-Node global: 36, Neighbours: 6, {37, 40, X, X, X, 24}
-Node global: 37, Neighbours: 6, {38, 41, X, 36, X, 25}
-Node global: 38, Neighbours: 6, {39, 42, X, 37, X, 26}
-Node global: 39, Neighbours: 6, {X, 43, X, 38, X, 27}
-Node global: 40, Neighbours: 6, {41, 44, X, X, 36, 28}
-Node global: 41, Neighbours: 6, {42, 45, X, 40, 37, 29}
-Node global: 42, Neighbours: 6, {43, 46, X, 41, 38, 30}
-Node global: 43, Neighbours: 6, {X, 47, X, 42, 39, 31}
-Node global: 44, Neighbours: 6, {45, X, X, X, 40, 32}
-Node global: 45, Neighbours: 6, {46, X, X, 44, 41, 33}
-Node global: 46, Neighbours: 6, {47, X, X, 45, 42, 34}
-Node global: 47, Neighbours: 6, {X, X, X, 46, 43, 35}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, X}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, 6}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, 6, 7}
-Node global: 14, Elements: 8, {X, X, 1, 2, X, X, 7, 8}
-Node global: 15, Elements: 8, {X, X, 2, X, X, X, 8, X}
-Node global: 16, Elements: 8, {X, 0, X, 3, X, 6, X, 9}
-Node global: 17, Elements: 8, {0, 1, 3, 4, 6, 7, 9, 10}
-Node global: 18, Elements: 8, {1, 2, 4, 5, 7, 8, 10, 11}
-Node global: 19, Elements: 8, {2, X, 5, X, 8, X, 11, X}
-Node global: 20, Elements: 8, {X, 3, X, X, X, 9, X, X}
-Node global: 21, Elements: 8, {3, 4, X, X, 9, 10, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, 10, 11, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 11, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, 12}
-Node global: 25, Elements: 8, {X, X, 6, 7, X, X, 12, 13}
-Node global: 26, Elements: 8, {X, X, 7, 8, X, X, 13, 14}
-Node global: 27, Elements: 8, {X, X, 8, X, X, X, 14, X}
-Node global: 28, Elements: 8, {X, 6, X, 9, X, 12, X, 15}
-Node global: 29, Elements: 8, {6, 7, 9, 10, 12, 13, 15, 16}
-Node global: 30, Elements: 8, {7, 8, 10, 11, 13, 14, 16, 17}
-Node global: 31, Elements: 8, {8, X, 11, X, 14, X, 17, X}
-Node global: 32, Elements: 8, {X, 9, X, X, X, 15, X, X}
-Node global: 33, Elements: 8, {9, 10, X, X, 15, 16, X, X}
-Node global: 34, Elements: 8, {10, 11, X, X, 16, 17, X, X}
-Node global: 35, Elements: 8, {11, X, X, X, 17, X, X, X}
-Node global: 36, Elements: 8, {X, X, X, 12, X, X, X, X}
-Node global: 37, Elements: 8, {X, X, 12, 13, X, X, X, X}
-Node global: 38, Elements: 8, {X, X, 13, 14, X, X, X, X}
-Node global: 39, Elements: 8, {X, X, 14, X, X, X, X, X}
-Node global: 40, Elements: 8, {X, 12, X, 15, X, X, X, X}
-Node global: 41, Elements: 8, {12, 13, 15, 16, X, X, X, X}
-Node global: 42, Elements: 8, {13, 14, 16, 17, X, X, X, X}
-Node global: 43, Elements: 8, {14, X, 17, X, X, X, X, X}
-Node global: 44, Elements: 8, {X, 15, X, X, X, X, X, X}
-Node global: 45, Elements: 8, {15, 16, X, X, X, X, X, X}
-Node global: 46, Elements: 8, {16, 17, X, X, X, X, X, X}
-Node global: 47, Elements: 8, {17, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (3, 0, 1) -> global 15
-Node (0, 1, 1) -> global 16
-Node (1, 1, 1) -> global 17
-Node (2, 1, 1) -> global 18
-Node (3, 1, 1) -> global 19
-Node (0, 2, 1) -> global 20
-Node (1, 2, 1) -> global 21
-Node (2, 2, 1) -> global 22
-Node (3, 2, 1) -> global 23
-Node (0, 0, 2) -> global 24
-Node (1, 0, 2) -> global 25
-Node (2, 0, 2) -> global 26
-Node (3, 0, 2) -> global 27
-Node (0, 1, 2) -> global 28
-Node (1, 1, 2) -> global 29
-Node (2, 1, 2) -> global 30
-Node (3, 1, 2) -> global 31
-Node (0, 2, 2) -> global 32
-Node (1, 2, 2) -> global 33
-Node (2, 2, 2) -> global 34
-Node (3, 2, 2) -> global 35
-Node (0, 0, 3) -> global 36
-Node (1, 0, 3) -> global 37
-Node (2, 0, 3) -> global 38
-Node (3, 0, 3) -> global 39
-Node (0, 1, 3) -> global 40
-Node (1, 1, 3) -> global 41
-Node (2, 1, 3) -> global 42
-Node (3, 1, 3) -> global 43
-Node (0, 2, 3) -> global 44
-Node (1, 2, 3) -> global 45
-Node (2, 2, 3) -> global 46
-Node (3, 2, 3) -> global 47
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (3, 0, 1)
-Node global 16 -> (0, 1, 1)
-Node global 17 -> (1, 1, 1)
-Node global 18 -> (2, 1, 1)
-Node global 19 -> (3, 1, 1)
-Node global 20 -> (0, 2, 1)
-Node global 21 -> (1, 2, 1)
-Node global 22 -> (2, 2, 1)
-Node global 23 -> (3, 2, 1)
-Node global 24 -> (0, 0, 2)
-Node global 25 -> (1, 0, 2)
-Node global 26 -> (2, 0, 2)
-Node global 27 -> (3, 0, 2)
-Node global 28 -> (0, 1, 2)
-Node global 29 -> (1, 1, 2)
-Node global 30 -> (2, 1, 2)
-Node global 31 -> (3, 1, 2)
-Node global 32 -> (0, 2, 2)
-Node global 33 -> (1, 2, 2)
-Node global 34 -> (2, 2, 2)
-Node global 35 -> (3, 2, 2)
-Node global 36 -> (0, 0, 3)
-Node global 37 -> (1, 0, 3)
-Node global 38 -> (2, 0, 3)
-Node global 39 -> (3, 0, 3)
-Node global 40 -> (0, 1, 3)
-Node global 41 -> (1, 1, 3)
-Node global 42 -> (2, 1, 3)
-Node global 43 -> (3, 1, 3)
-Node global 44 -> (0, 2, 3)
-Node global 45 -> (1, 2, 3)
-Node global 46 -> (2, 2, 3)
-Node global 47 -> (3, 2, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, 6, 7, X, 9, 10}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, 6, 7, 8, 9, 10, 11}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, 7, 8, X, 10, 11, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, X, X, X, 6, 7, X, 9, 10, X, X, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, X, X, X, 6, 7, 8, 9, 10, 11, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, X, X, X, 7, 8, X, 10, 11, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 0, 1, X, 3, 4, X, X, X, X, 7, X, 9, 10, X, X, X, X, 12, 13, X, 15, 16}
-Element global: 7, Neighbours: 26, {X, X, X, 0, 1, 2, 3, 4, 5, X, X, X, 6, 8, 9, 10, 11, X, X, X, 12, 13, 14, 15, 16, 17}
-Element global: 8, Neighbours: 26, {X, X, X, 1, 2, X, 4, 5, X, X, X, X, 7, X, 10, 11, X, X, X, X, 13, 14, X, 16, 17, X}
-Element global: 9, Neighbours: 26, {X, 0, 1, X, 3, 4, X, X, X, X, 6, 7, X, 10, X, X, X, X, 12, 13, X, 15, 16, X, X, X}
-Element global: 10, Neighbours: 26, {0, 1, 2, 3, 4, 5, X, X, X, 6, 7, 8, 9, 11, X, X, X, 12, 13, 14, 15, 16, 17, X, X, X}
-Element global: 11, Neighbours: 26, {1, 2, X, 4, 5, X, X, X, X, 7, 8, X, 10, X, X, X, X, 13, 14, X, 16, 17, X, X, X, X}
-Element global: 12, Neighbours: 26, {X, X, X, X, 6, 7, X, 9, 10, X, X, X, X, 13, X, 15, 16, X, X, X, X, X, X, X, X, X}
-Element global: 13, Neighbours: 26, {X, X, X, 6, 7, 8, 9, 10, 11, X, X, X, 12, 14, 15, 16, 17, X, X, X, X, X, X, X, X, X}
-Element global: 14, Neighbours: 26, {X, X, X, 7, 8, X, 10, 11, X, X, X, X, 13, X, 16, 17, X, X, X, X, X, X, X, X, X, X}
-Element global: 15, Neighbours: 26, {X, 6, 7, X, 9, 10, X, X, X, X, 12, 13, X, 16, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 16, Neighbours: 26, {6, 7, 8, 9, 10, 11, X, X, X, 12, 13, 14, 15, 17, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 17, Neighbours: 26, {7, 8, X, 10, 11, X, X, X, X, 13, 14, X, 16, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 12, 13, 17, 16}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 13, 14, 18, 17}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 14, 15, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 16, 17, 21, 20}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 17, 18, 22, 21}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 18, 19, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 17, 16, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {13, 14, 18, 17, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {14, 15, 19, 18, 26, 27, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 21, 20, 28, 29, 33, 32}
-Element global: 10, Nodes: 8, {17, 18, 22, 21, 29, 30, 34, 33}
-Element global: 11, Nodes: 8, {18, 19, 23, 22, 30, 31, 35, 34}
-Element global: 12, Nodes: 8, {24, 25, 29, 28, 36, 37, 41, 40}
-Element global: 13, Nodes: 8, {25, 26, 30, 29, 37, 38, 42, 41}
-Element global: 14, Nodes: 8, {26, 27, 31, 30, 38, 39, 43, 42}
-Element global: 15, Nodes: 8, {28, 29, 33, 32, 40, 41, 45, 44}
-Element global: 16, Nodes: 8, {29, 30, 34, 33, 41, 42, 46, 45}
-Element global: 17, Nodes: 8, {30, 31, 35, 34, 42, 43, 47, 46}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 0, 1) -> global 6
-Element (1, 0, 1) -> global 7
-Element (2, 0, 1) -> global 8
-Element (0, 1, 1) -> global 9
-Element (1, 1, 1) -> global 10
-Element (2, 1, 1) -> global 11
-Element (0, 0, 2) -> global 12
-Element (1, 0, 2) -> global 13
-Element (2, 0, 2) -> global 14
-Element (0, 1, 2) -> global 15
-Element (1, 1, 2) -> global 16
-Element (2, 1, 2) -> global 17
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 0, 1)
-Element global 7 -> (1, 0, 1)
-Element global 8 -> (2, 0, 1)
-Element global 9 -> (0, 1, 1)
-Element global 10 -> (1, 1, 1)
-Element global 11 -> (2, 1, 1)
-Element global 12 -> (0, 0, 2)
-Element global 13 -> (1, 0, 2)
-Element global 14 -> (2, 0, 2)
-Element global 15 -> (0, 1, 2)
-Element global 16 -> (1, 1, 2)
-Element global 17 -> (2, 1, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {1, 4, 4}
-	element3DCounts: {0, 3, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 16
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805af30
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 4, {1, 4, X, X}
-Node global: 1, Neighbours: 4, {2, 5, 0, X}
-Node global: 2, Neighbours: 4, {3, 6, 1, X}
-Node global: 3, Neighbours: 4, {X, 7, 2, X}
-Node global: 4, Neighbours: 4, {5, 8, X, 0}
-Node global: 5, Neighbours: 4, {6, 9, 4, 1}
-Node global: 6, Neighbours: 4, {7, 10, 5, 2}
-Node global: 7, Neighbours: 4, {X, 11, 6, 3}
-Node global: 8, Neighbours: 4, {9, 12, X, 4}
-Node global: 9, Neighbours: 4, {10, 13, 8, 5}
-Node global: 10, Neighbours: 4, {11, 14, 9, 6}
-Node global: 11, Neighbours: 4, {X, 15, 10, 7}
-Node global: 12, Neighbours: 4, {13, X, X, 8}
-Node global: 13, Neighbours: 4, {14, X, 12, 9}
-Node global: 14, Neighbours: 4, {15, X, 13, 10}
-Node global: 15, Neighbours: 4, {X, X, 14, 11}
-
-Node global: 0, Elements: 4, {X, X, X, 0}
-Node global: 1, Elements: 4, {X, X, 0, 1}
-Node global: 2, Elements: 4, {X, X, 1, 2}
-Node global: 3, Elements: 4, {X, X, 2, X}
-Node global: 4, Elements: 4, {X, 0, X, 3}
-Node global: 5, Elements: 4, {0, 1, 3, 4}
-Node global: 6, Elements: 4, {1, 2, 4, 5}
-Node global: 7, Elements: 4, {2, X, 5, X}
-Node global: 8, Elements: 4, {X, 3, X, 6}
-Node global: 9, Elements: 4, {3, 4, 6, 7}
-Node global: 10, Elements: 4, {4, 5, 7, 8}
-Node global: 11, Elements: 4, {5, X, 8, X}
-Node global: 12, Elements: 4, {X, 6, X, X}
-Node global: 13, Elements: 4, {6, 7, X, X}
-Node global: 14, Elements: 4, {7, 8, X, X}
-Node global: 15, Elements: 4, {8, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (0, 1, 0) -> global 1
-Node (0, 2, 0) -> global 2
-Node (0, 3, 0) -> global 3
-Node (0, 0, 1) -> global 4
-Node (0, 1, 1) -> global 5
-Node (0, 2, 1) -> global 6
-Node (0, 3, 1) -> global 7
-Node (0, 0, 2) -> global 8
-Node (0, 1, 2) -> global 9
-Node (0, 2, 2) -> global 10
-Node (0, 3, 2) -> global 11
-Node (0, 0, 3) -> global 12
-Node (0, 1, 3) -> global 13
-Node (0, 2, 3) -> global 14
-Node (0, 3, 3) -> global 15
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (0, 1, 0)
-Node global 2 -> (0, 2, 0)
-Node global 3 -> (0, 3, 0)
-Node global 4 -> (0, 0, 1)
-Node global 5 -> (0, 1, 1)
-Node global 6 -> (0, 2, 1)
-Node global 7 -> (0, 3, 1)
-Node global 8 -> (0, 0, 2)
-Node global 9 -> (0, 1, 2)
-Node global 10 -> (0, 2, 2)
-Node global 11 -> (0, 3, 2)
-Node global 12 -> (0, 0, 3)
-Node global 13 -> (0, 1, 3)
-Node global 14 -> (0, 2, 3)
-Node global 15 -> (0, 3, 3)
-
-Element global: 0, Neighbours: 8, {X, X, X, X, 1, X, 3, 4}
-Element global: 1, Neighbours: 8, {X, X, X, 0, 2, 3, 4, 5}
-Element global: 2, Neighbours: 8, {X, X, X, 1, X, 4, 5, X}
-Element global: 3, Neighbours: 8, {X, 0, 1, X, 4, X, 6, 7}
-Element global: 4, Neighbours: 8, {0, 1, 2, 3, 5, 6, 7, 8}
-Element global: 5, Neighbours: 8, {1, 2, X, 4, X, 7, 8, X}
-Element global: 6, Neighbours: 8, {X, 3, 4, X, 7, X, X, X}
-Element global: 7, Neighbours: 8, {3, 4, 5, 6, 8, X, X, X}
-Element global: 8, Neighbours: 8, {4, 5, X, 7, X, X, X, X}
-
-Element global: 0, Nodes: 4, {0, 1, 5, 4}
-Element global: 1, Nodes: 4, {1, 2, 6, 5}
-Element global: 2, Nodes: 4, {2, 3, 7, 6}
-Element global: 3, Nodes: 4, {4, 5, 9, 8}
-Element global: 4, Nodes: 4, {5, 6, 10, 9}
-Element global: 5, Nodes: 4, {6, 7, 11, 10}
-Element global: 6, Nodes: 4, {8, 9, 13, 12}
-Element global: 7, Nodes: 4, {9, 10, 14, 13}
-Element global: 8, Nodes: 4, {10, 11, 15, 14}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (0, 1, 1) -> global 4
-Element (0, 2, 1) -> global 5
-Element (0, 0, 2) -> global 6
-Element (0, 1, 2) -> global 7
-Element (0, 2, 2) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (0, 1, 1)
-Element global 5 -> (0, 2, 1)
-Element global 6 -> (0, 0, 2)
-Element global 7 -> (0, 1, 2)
-Element global 8 -> (0, 2, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {2, 4, 4}
-	element3DCounts: {1, 3, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 32
-	elementCount: 9
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805b0f8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 2, 8, X, X, X}
-Node global: 1, Neighbours: 6, {X, 3, 9, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 4, 10, X, 0, X}
-Node global: 3, Neighbours: 6, {X, 5, 11, 2, 1, X}
-Node global: 4, Neighbours: 6, {5, 6, 12, X, 2, X}
-Node global: 5, Neighbours: 6, {X, 7, 13, 4, 3, X}
-Node global: 6, Neighbours: 6, {7, X, 14, X, 4, X}
-Node global: 7, Neighbours: 6, {X, X, 15, 6, 5, X}
-Node global: 8, Neighbours: 6, {9, 10, 16, X, X, 0}
-Node global: 9, Neighbours: 6, {X, 11, 17, 8, X, 1}
-Node global: 10, Neighbours: 6, {11, 12, 18, X, 8, 2}
-Node global: 11, Neighbours: 6, {X, 13, 19, 10, 9, 3}
-Node global: 12, Neighbours: 6, {13, 14, 20, X, 10, 4}
-Node global: 13, Neighbours: 6, {X, 15, 21, 12, 11, 5}
-Node global: 14, Neighbours: 6, {15, X, 22, X, 12, 6}
-Node global: 15, Neighbours: 6, {X, X, 23, 14, 13, 7}
-Node global: 16, Neighbours: 6, {17, 18, 24, X, X, 8}
-Node global: 17, Neighbours: 6, {X, 19, 25, 16, X, 9}
-Node global: 18, Neighbours: 6, {19, 20, 26, X, 16, 10}
-Node global: 19, Neighbours: 6, {X, 21, 27, 18, 17, 11}
-Node global: 20, Neighbours: 6, {21, 22, 28, X, 18, 12}
-Node global: 21, Neighbours: 6, {X, 23, 29, 20, 19, 13}
-Node global: 22, Neighbours: 6, {23, X, 30, X, 20, 14}
-Node global: 23, Neighbours: 6, {X, X, 31, 22, 21, 15}
-Node global: 24, Neighbours: 6, {25, 26, X, X, X, 16}
-Node global: 25, Neighbours: 6, {X, 27, X, 24, X, 17}
-Node global: 26, Neighbours: 6, {27, 28, X, X, 24, 18}
-Node global: 27, Neighbours: 6, {X, 29, X, 26, 25, 19}
-Node global: 28, Neighbours: 6, {29, 30, X, X, 26, 20}
-Node global: 29, Neighbours: 6, {X, 31, X, 28, 27, 21}
-Node global: 30, Neighbours: 6, {31, X, X, X, 28, 22}
-Node global: 31, Neighbours: 6, {X, X, X, 30, 29, 23}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, X}
-Node global: 2, Elements: 8, {X, X, X, X, X, 0, X, 1}
-Node global: 3, Elements: 8, {X, X, X, X, 0, X, 1, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 1, X, 2}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 2, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, X}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, X, X}
-Node global: 8, Elements: 8, {X, X, X, 0, X, X, X, 3}
-Node global: 9, Elements: 8, {X, X, 0, X, X, X, 3, X}
-Node global: 10, Elements: 8, {X, 0, X, 1, X, 3, X, 4}
-Node global: 11, Elements: 8, {0, X, 1, X, 3, X, 4, X}
-Node global: 12, Elements: 8, {X, 1, X, 2, X, 4, X, 5}
-Node global: 13, Elements: 8, {1, X, 2, X, 4, X, 5, X}
-Node global: 14, Elements: 8, {X, 2, X, X, X, 5, X, X}
-Node global: 15, Elements: 8, {2, X, X, X, 5, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 3, X, X, X, 6}
-Node global: 17, Elements: 8, {X, X, 3, X, X, X, 6, X}
-Node global: 18, Elements: 8, {X, 3, X, 4, X, 6, X, 7}
-Node global: 19, Elements: 8, {3, X, 4, X, 6, X, 7, X}
-Node global: 20, Elements: 8, {X, 4, X, 5, X, 7, X, 8}
-Node global: 21, Elements: 8, {4, X, 5, X, 7, X, 8, X}
-Node global: 22, Elements: 8, {X, 5, X, X, X, 8, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 8, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, X}
-Node global: 25, Elements: 8, {X, X, 6, X, X, X, X, X}
-Node global: 26, Elements: 8, {X, 6, X, 7, X, X, X, X}
-Node global: 27, Elements: 8, {6, X, 7, X, X, X, X, X}
-Node global: 28, Elements: 8, {X, 7, X, 8, X, X, X, X}
-Node global: 29, Elements: 8, {7, X, 8, X, X, X, X, X}
-Node global: 30, Elements: 8, {X, 8, X, X, X, X, X, X}
-Node global: 31, Elements: 8, {8, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (0, 1, 0) -> global 2
-Node (1, 1, 0) -> global 3
-Node (0, 2, 0) -> global 4
-Node (1, 2, 0) -> global 5
-Node (0, 3, 0) -> global 6
-Node (1, 3, 0) -> global 7
-Node (0, 0, 1) -> global 8
-Node (1, 0, 1) -> global 9
-Node (0, 1, 1) -> global 10
-Node (1, 1, 1) -> global 11
-Node (0, 2, 1) -> global 12
-Node (1, 2, 1) -> global 13
-Node (0, 3, 1) -> global 14
-Node (1, 3, 1) -> global 15
-Node (0, 0, 2) -> global 16
-Node (1, 0, 2) -> global 17
-Node (0, 1, 2) -> global 18
-Node (1, 1, 2) -> global 19
-Node (0, 2, 2) -> global 20
-Node (1, 2, 2) -> global 21
-Node (0, 3, 2) -> global 22
-Node (1, 3, 2) -> global 23
-Node (0, 0, 3) -> global 24
-Node (1, 0, 3) -> global 25
-Node (0, 1, 3) -> global 26
-Node (1, 1, 3) -> global 27
-Node (0, 2, 3) -> global 28
-Node (1, 2, 3) -> global 29
-Node (0, 3, 3) -> global 30
-Node (1, 3, 3) -> global 31
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (0, 1, 0)
-Node global 3 -> (1, 1, 0)
-Node global 4 -> (0, 2, 0)
-Node global 5 -> (1, 2, 0)
-Node global 6 -> (0, 3, 0)
-Node global 7 -> (1, 3, 0)
-Node global 8 -> (0, 0, 1)
-Node global 9 -> (1, 0, 1)
-Node global 10 -> (0, 1, 1)
-Node global 11 -> (1, 1, 1)
-Node global 12 -> (0, 2, 1)
-Node global 13 -> (1, 2, 1)
-Node global 14 -> (0, 3, 1)
-Node global 15 -> (1, 3, 1)
-Node global 16 -> (0, 0, 2)
-Node global 17 -> (1, 0, 2)
-Node global 18 -> (0, 1, 2)
-Node global 19 -> (1, 1, 2)
-Node global 20 -> (0, 2, 2)
-Node global 21 -> (1, 2, 2)
-Node global 22 -> (0, 3, 2)
-Node global 23 -> (1, 3, 2)
-Node global 24 -> (0, 0, 3)
-Node global 25 -> (1, 0, 3)
-Node global 26 -> (0, 1, 3)
-Node global 27 -> (1, 1, 3)
-Node global 28 -> (0, 2, 3)
-Node global 29 -> (1, 2, 3)
-Node global 30 -> (0, 3, 3)
-Node global 31 -> (1, 3, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, 3, X, X, 4, X}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, X, X, X, X, 2, X, X, 3, X, X, 4, X, X, 5, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 1, X, X, X, X, X, X, X, 4, X, X, 5, X, X, X, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, 0, X, X, 1, X, X, X, X, X, X, X, 4, X, X, X, X, X, 6, X, X, 7, X}
-Element global: 4, Neighbours: 26, {X, 0, X, X, 1, X, X, 2, X, X, 3, X, X, X, X, 5, X, X, 6, X, X, 7, X, X, 8, X}
-Element global: 5, Neighbours: 26, {X, 1, X, X, 2, X, X, X, X, X, 4, X, X, X, X, X, X, X, 7, X, X, 8, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 3, X, X, 4, X, X, X, X, X, X, X, 7, X, X, X, X, X, X, X, X, X, X}
-Element global: 7, Neighbours: 26, {X, 3, X, X, 4, X, X, 5, X, X, 6, X, X, X, X, 8, X, X, X, X, X, X, X, X, X, X}
-Element global: 8, Neighbours: 26, {X, 4, X, X, 5, X, X, X, X, X, 7, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 3, 2, 8, 9, 11, 10}
-Element global: 1, Nodes: 8, {2, 3, 5, 4, 10, 11, 13, 12}
-Element global: 2, Nodes: 8, {4, 5, 7, 6, 12, 13, 15, 14}
-Element global: 3, Nodes: 8, {8, 9, 11, 10, 16, 17, 19, 18}
-Element global: 4, Nodes: 8, {10, 11, 13, 12, 18, 19, 21, 20}
-Element global: 5, Nodes: 8, {12, 13, 15, 14, 20, 21, 23, 22}
-Element global: 6, Nodes: 8, {16, 17, 19, 18, 24, 25, 27, 26}
-Element global: 7, Nodes: 8, {18, 19, 21, 20, 26, 27, 29, 28}
-Element global: 8, Nodes: 8, {20, 21, 23, 22, 28, 29, 31, 30}
-
-Element (0, 0, 0) -> global 0
-Element (0, 1, 0) -> global 1
-Element (0, 2, 0) -> global 2
-Element (0, 0, 1) -> global 3
-Element (0, 1, 1) -> global 4
-Element (0, 2, 1) -> global 5
-Element (0, 0, 2) -> global 6
-Element (0, 1, 2) -> global 7
-Element (0, 2, 2) -> global 8
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (0, 1, 0)
-Element global 2 -> (0, 2, 0)
-Element global 3 -> (0, 0, 1)
-Element global 4 -> (0, 1, 1)
-Element global 5 -> (0, 2, 1)
-Element global 6 -> (0, 0, 2)
-Element global 7 -> (0, 1, 2)
-Element global 8 -> (0, 2, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {3, 4, 4}
-	element3DCounts: {2, 3, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 48
-	elementCount: 18
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805b2c8
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 3, 12, X, X, X}
-Node global: 1, Neighbours: 6, {2, 4, 13, 0, X, X}
-Node global: 2, Neighbours: 6, {X, 5, 14, 1, X, X}
-Node global: 3, Neighbours: 6, {4, 6, 15, X, 0, X}
-Node global: 4, Neighbours: 6, {5, 7, 16, 3, 1, X}
-Node global: 5, Neighbours: 6, {X, 8, 17, 4, 2, X}
-Node global: 6, Neighbours: 6, {7, 9, 18, X, 3, X}
-Node global: 7, Neighbours: 6, {8, 10, 19, 6, 4, X}
-Node global: 8, Neighbours: 6, {X, 11, 20, 7, 5, X}
-Node global: 9, Neighbours: 6, {10, X, 21, X, 6, X}
-Node global: 10, Neighbours: 6, {11, X, 22, 9, 7, X}
-Node global: 11, Neighbours: 6, {X, X, 23, 10, 8, X}
-Node global: 12, Neighbours: 6, {13, 15, 24, X, X, 0}
-Node global: 13, Neighbours: 6, {14, 16, 25, 12, X, 1}
-Node global: 14, Neighbours: 6, {X, 17, 26, 13, X, 2}
-Node global: 15, Neighbours: 6, {16, 18, 27, X, 12, 3}
-Node global: 16, Neighbours: 6, {17, 19, 28, 15, 13, 4}
-Node global: 17, Neighbours: 6, {X, 20, 29, 16, 14, 5}
-Node global: 18, Neighbours: 6, {19, 21, 30, X, 15, 6}
-Node global: 19, Neighbours: 6, {20, 22, 31, 18, 16, 7}
-Node global: 20, Neighbours: 6, {X, 23, 32, 19, 17, 8}
-Node global: 21, Neighbours: 6, {22, X, 33, X, 18, 9}
-Node global: 22, Neighbours: 6, {23, X, 34, 21, 19, 10}
-Node global: 23, Neighbours: 6, {X, X, 35, 22, 20, 11}
-Node global: 24, Neighbours: 6, {25, 27, 36, X, X, 12}
-Node global: 25, Neighbours: 6, {26, 28, 37, 24, X, 13}
-Node global: 26, Neighbours: 6, {X, 29, 38, 25, X, 14}
-Node global: 27, Neighbours: 6, {28, 30, 39, X, 24, 15}
-Node global: 28, Neighbours: 6, {29, 31, 40, 27, 25, 16}
-Node global: 29, Neighbours: 6, {X, 32, 41, 28, 26, 17}
-Node global: 30, Neighbours: 6, {31, 33, 42, X, 27, 18}
-Node global: 31, Neighbours: 6, {32, 34, 43, 30, 28, 19}
-Node global: 32, Neighbours: 6, {X, 35, 44, 31, 29, 20}
-Node global: 33, Neighbours: 6, {34, X, 45, X, 30, 21}
-Node global: 34, Neighbours: 6, {35, X, 46, 33, 31, 22}
-Node global: 35, Neighbours: 6, {X, X, 47, 34, 32, 23}
-Node global: 36, Neighbours: 6, {37, 39, X, X, X, 24}
-Node global: 37, Neighbours: 6, {38, 40, X, 36, X, 25}
-Node global: 38, Neighbours: 6, {X, 41, X, 37, X, 26}
-Node global: 39, Neighbours: 6, {40, 42, X, X, 36, 27}
-Node global: 40, Neighbours: 6, {41, 43, X, 39, 37, 28}
-Node global: 41, Neighbours: 6, {X, 44, X, 40, 38, 29}
-Node global: 42, Neighbours: 6, {43, 45, X, X, 39, 30}
-Node global: 43, Neighbours: 6, {44, 46, X, 42, 40, 31}
-Node global: 44, Neighbours: 6, {X, 47, X, 43, 41, 32}
-Node global: 45, Neighbours: 6, {46, X, X, X, 42, 33}
-Node global: 46, Neighbours: 6, {47, X, X, 45, 43, 34}
-Node global: 47, Neighbours: 6, {X, X, X, 46, 44, 35}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, X}
-Node global: 3, Elements: 8, {X, X, X, X, X, 0, X, 2}
-Node global: 4, Elements: 8, {X, X, X, X, 0, 1, 2, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 1, X, 3, X}
-Node global: 6, Elements: 8, {X, X, X, X, X, 2, X, 4}
-Node global: 7, Elements: 8, {X, X, X, X, 2, 3, 4, 5}
-Node global: 8, Elements: 8, {X, X, X, X, 3, X, 5, X}
-Node global: 9, Elements: 8, {X, X, X, X, X, 4, X, X}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, X, X}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, X, X}
-Node global: 12, Elements: 8, {X, X, X, 0, X, X, X, 6}
-Node global: 13, Elements: 8, {X, X, 0, 1, X, X, 6, 7}
-Node global: 14, Elements: 8, {X, X, 1, X, X, X, 7, X}
-Node global: 15, Elements: 8, {X, 0, X, 2, X, 6, X, 8}
-Node global: 16, Elements: 8, {0, 1, 2, 3, 6, 7, 8, 9}
-Node global: 17, Elements: 8, {1, X, 3, X, 7, X, 9, X}
-Node global: 18, Elements: 8, {X, 2, X, 4, X, 8, X, 10}
-Node global: 19, Elements: 8, {2, 3, 4, 5, 8, 9, 10, 11}
-Node global: 20, Elements: 8, {3, X, 5, X, 9, X, 11, X}
-Node global: 21, Elements: 8, {X, 4, X, X, X, 10, X, X}
-Node global: 22, Elements: 8, {4, 5, X, X, 10, 11, X, X}
-Node global: 23, Elements: 8, {5, X, X, X, 11, X, X, X}
-Node global: 24, Elements: 8, {X, X, X, 6, X, X, X, 12}
-Node global: 25, Elements: 8, {X, X, 6, 7, X, X, 12, 13}
-Node global: 26, Elements: 8, {X, X, 7, X, X, X, 13, X}
-Node global: 27, Elements: 8, {X, 6, X, 8, X, 12, X, 14}
-Node global: 28, Elements: 8, {6, 7, 8, 9, 12, 13, 14, 15}
-Node global: 29, Elements: 8, {7, X, 9, X, 13, X, 15, X}
-Node global: 30, Elements: 8, {X, 8, X, 10, X, 14, X, 16}
-Node global: 31, Elements: 8, {8, 9, 10, 11, 14, 15, 16, 17}
-Node global: 32, Elements: 8, {9, X, 11, X, 15, X, 17, X}
-Node global: 33, Elements: 8, {X, 10, X, X, X, 16, X, X}
-Node global: 34, Elements: 8, {10, 11, X, X, 16, 17, X, X}
-Node global: 35, Elements: 8, {11, X, X, X, 17, X, X, X}
-Node global: 36, Elements: 8, {X, X, X, 12, X, X, X, X}
-Node global: 37, Elements: 8, {X, X, 12, 13, X, X, X, X}
-Node global: 38, Elements: 8, {X, X, 13, X, X, X, X, X}
-Node global: 39, Elements: 8, {X, 12, X, 14, X, X, X, X}
-Node global: 40, Elements: 8, {12, 13, 14, 15, X, X, X, X}
-Node global: 41, Elements: 8, {13, X, 15, X, X, X, X, X}
-Node global: 42, Elements: 8, {X, 14, X, 16, X, X, X, X}
-Node global: 43, Elements: 8, {14, 15, 16, 17, X, X, X, X}
-Node global: 44, Elements: 8, {15, X, 17, X, X, X, X, X}
-Node global: 45, Elements: 8, {X, 16, X, X, X, X, X, X}
-Node global: 46, Elements: 8, {16, 17, X, X, X, X, X, X}
-Node global: 47, Elements: 8, {17, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (0, 1, 0) -> global 3
-Node (1, 1, 0) -> global 4
-Node (2, 1, 0) -> global 5
-Node (0, 2, 0) -> global 6
-Node (1, 2, 0) -> global 7
-Node (2, 2, 0) -> global 8
-Node (0, 3, 0) -> global 9
-Node (1, 3, 0) -> global 10
-Node (2, 3, 0) -> global 11
-Node (0, 0, 1) -> global 12
-Node (1, 0, 1) -> global 13
-Node (2, 0, 1) -> global 14
-Node (0, 1, 1) -> global 15
-Node (1, 1, 1) -> global 16
-Node (2, 1, 1) -> global 17
-Node (0, 2, 1) -> global 18
-Node (1, 2, 1) -> global 19
-Node (2, 2, 1) -> global 20
-Node (0, 3, 1) -> global 21
-Node (1, 3, 1) -> global 22
-Node (2, 3, 1) -> global 23
-Node (0, 0, 2) -> global 24
-Node (1, 0, 2) -> global 25
-Node (2, 0, 2) -> global 26
-Node (0, 1, 2) -> global 27
-Node (1, 1, 2) -> global 28
-Node (2, 1, 2) -> global 29
-Node (0, 2, 2) -> global 30
-Node (1, 2, 2) -> global 31
-Node (2, 2, 2) -> global 32
-Node (0, 3, 2) -> global 33
-Node (1, 3, 2) -> global 34
-Node (2, 3, 2) -> global 35
-Node (0, 0, 3) -> global 36
-Node (1, 0, 3) -> global 37
-Node (2, 0, 3) -> global 38
-Node (0, 1, 3) -> global 39
-Node (1, 1, 3) -> global 40
-Node (2, 1, 3) -> global 41
-Node (0, 2, 3) -> global 42
-Node (1, 2, 3) -> global 43
-Node (2, 2, 3) -> global 44
-Node (0, 3, 3) -> global 45
-Node (1, 3, 3) -> global 46
-Node (2, 3, 3) -> global 47
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (0, 1, 0)
-Node global 4 -> (1, 1, 0)
-Node global 5 -> (2, 1, 0)
-Node global 6 -> (0, 2, 0)
-Node global 7 -> (1, 2, 0)
-Node global 8 -> (2, 2, 0)
-Node global 9 -> (0, 3, 0)
-Node global 10 -> (1, 3, 0)
-Node global 11 -> (2, 3, 0)
-Node global 12 -> (0, 0, 1)
-Node global 13 -> (1, 0, 1)
-Node global 14 -> (2, 0, 1)
-Node global 15 -> (0, 1, 1)
-Node global 16 -> (1, 1, 1)
-Node global 17 -> (2, 1, 1)
-Node global 18 -> (0, 2, 1)
-Node global 19 -> (1, 2, 1)
-Node global 20 -> (2, 2, 1)
-Node global 21 -> (0, 3, 1)
-Node global 22 -> (1, 3, 1)
-Node global 23 -> (2, 3, 1)
-Node global 24 -> (0, 0, 2)
-Node global 25 -> (1, 0, 2)
-Node global 26 -> (2, 0, 2)
-Node global 27 -> (0, 1, 2)
-Node global 28 -> (1, 1, 2)
-Node global 29 -> (2, 1, 2)
-Node global 30 -> (0, 2, 2)
-Node global 31 -> (1, 2, 2)
-Node global 32 -> (2, 2, 2)
-Node global 33 -> (0, 3, 2)
-Node global 34 -> (1, 3, 2)
-Node global 35 -> (2, 3, 2)
-Node global 36 -> (0, 0, 3)
-Node global 37 -> (1, 0, 3)
-Node global 38 -> (2, 0, 3)
-Node global 39 -> (0, 1, 3)
-Node global 40 -> (1, 1, 3)
-Node global 41 -> (2, 1, 3)
-Node global 42 -> (0, 2, 3)
-Node global 43 -> (1, 2, 3)
-Node global 44 -> (2, 2, 3)
-Node global 45 -> (0, 3, 3)
-Node global 46 -> (1, 3, 3)
-Node global 47 -> (2, 3, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 2, 3, X, X, X, X, 6, 7, X, 8, 9}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, X, 2, 3, X, X, X, X, 6, 7, X, 8, 9, X}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 3, X, 4, 5, X, 6, 7, X, 8, 9, X, 10, 11}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, X, 2, X, 4, 5, X, 6, 7, X, 8, 9, X, 10, 11, X}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 2, 3, X, 5, X, X, X, X, 8, 9, X, 10, 11, X, X, X}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 2, 3, X, 4, X, X, X, X, 8, 9, X, 10, 11, X, X, X, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, 0, 1, X, 2, 3, X, X, X, X, 7, X, 8, 9, X, X, X, X, 12, 13, X, 14, 15}
-Element global: 7, Neighbours: 26, {X, X, X, 0, 1, X, 2, 3, X, X, X, X, 6, X, 8, 9, X, X, X, X, 12, 13, X, 14, 15, X}
-Element global: 8, Neighbours: 26, {X, 0, 1, X, 2, 3, X, 4, 5, X, 6, 7, X, 9, X, 10, 11, X, 12, 13, X, 14, 15, X, 16, 17}
-Element global: 9, Neighbours: 26, {0, 1, X, 2, 3, X, 4, 5, X, 6, 7, X, 8, X, 10, 11, X, 12, 13, X, 14, 15, X, 16, 17, X}
-Element global: 10, Neighbours: 26, {X, 2, 3, X, 4, 5, X, X, X, X, 8, 9, X, 11, X, X, X, X, 14, 15, X, 16, 17, X, X, X}
-Element global: 11, Neighbours: 26, {2, 3, X, 4, 5, X, X, X, X, 8, 9, X, 10, X, X, X, X, 14, 15, X, 16, 17, X, X, X, X}
-Element global: 12, Neighbours: 26, {X, X, X, X, 6, 7, X, 8, 9, X, X, X, X, 13, X, 14, 15, X, X, X, X, X, X, X, X, X}
-Element global: 13, Neighbours: 26, {X, X, X, 6, 7, X, 8, 9, X, X, X, X, 12, X, 14, 15, X, X, X, X, X, X, X, X, X, X}
-Element global: 14, Neighbours: 26, {X, 6, 7, X, 8, 9, X, 10, 11, X, 12, 13, X, 15, X, 16, 17, X, X, X, X, X, X, X, X, X}
-Element global: 15, Neighbours: 26, {6, 7, X, 8, 9, X, 10, 11, X, 12, 13, X, 14, X, 16, 17, X, X, X, X, X, X, X, X, X, X}
-Element global: 16, Neighbours: 26, {X, 8, 9, X, 10, 11, X, X, X, X, 14, 15, X, 17, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 17, Neighbours: 26, {8, 9, X, 10, 11, X, X, X, X, 14, 15, X, 16, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 4, 3, 12, 13, 16, 15}
-Element global: 1, Nodes: 8, {1, 2, 5, 4, 13, 14, 17, 16}
-Element global: 2, Nodes: 8, {3, 4, 7, 6, 15, 16, 19, 18}
-Element global: 3, Nodes: 8, {4, 5, 8, 7, 16, 17, 20, 19}
-Element global: 4, Nodes: 8, {6, 7, 10, 9, 18, 19, 22, 21}
-Element global: 5, Nodes: 8, {7, 8, 11, 10, 19, 20, 23, 22}
-Element global: 6, Nodes: 8, {12, 13, 16, 15, 24, 25, 28, 27}
-Element global: 7, Nodes: 8, {13, 14, 17, 16, 25, 26, 29, 28}
-Element global: 8, Nodes: 8, {15, 16, 19, 18, 27, 28, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 20, 19, 28, 29, 32, 31}
-Element global: 10, Nodes: 8, {18, 19, 22, 21, 30, 31, 34, 33}
-Element global: 11, Nodes: 8, {19, 20, 23, 22, 31, 32, 35, 34}
-Element global: 12, Nodes: 8, {24, 25, 28, 27, 36, 37, 40, 39}
-Element global: 13, Nodes: 8, {25, 26, 29, 28, 37, 38, 41, 40}
-Element global: 14, Nodes: 8, {27, 28, 31, 30, 39, 40, 43, 42}
-Element global: 15, Nodes: 8, {28, 29, 32, 31, 40, 41, 44, 43}
-Element global: 16, Nodes: 8, {30, 31, 34, 33, 42, 43, 46, 45}
-Element global: 17, Nodes: 8, {31, 32, 35, 34, 43, 44, 47, 46}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (0, 1, 0) -> global 2
-Element (1, 1, 0) -> global 3
-Element (0, 2, 0) -> global 4
-Element (1, 2, 0) -> global 5
-Element (0, 0, 1) -> global 6
-Element (1, 0, 1) -> global 7
-Element (0, 1, 1) -> global 8
-Element (1, 1, 1) -> global 9
-Element (0, 2, 1) -> global 10
-Element (1, 2, 1) -> global 11
-Element (0, 0, 2) -> global 12
-Element (1, 0, 2) -> global 13
-Element (0, 1, 2) -> global 14
-Element (1, 1, 2) -> global 15
-Element (0, 2, 2) -> global 16
-Element (1, 2, 2) -> global 17
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (0, 1, 0)
-Element global 3 -> (1, 1, 0)
-Element global 4 -> (0, 2, 0)
-Element global 5 -> (1, 2, 0)
-Element global 6 -> (0, 0, 1)
-Element global 7 -> (1, 0, 1)
-Element global 8 -> (0, 1, 1)
-Element global 9 -> (1, 1, 1)
-Element global 10 -> (0, 2, 1)
-Element global 11 -> (1, 2, 1)
-Element global 12 -> (0, 0, 2)
-Element global 13 -> (1, 0, 2)
-Element global 14 -> (0, 1, 2)
-Element global 15 -> (1, 1, 2)
-Element global 16 -> (0, 2, 2)
-Element global 17 -> (1, 2, 2)
-
-
-HexaMeshTopology (ptr): 0x805a3f8
-	dictionary (ptr): 0x8054268
-RegularMeshTopology (ptr): 0x805a3f8
-	node3DTo1D (func ptr): 0x804d1f6
-	node1DTo3D (func ptr): 0x804d21b
-	element3DTo1D (func ptr): 0x804d29d
-	element1DTo3D (func ptr): 0x804d357
-	node3DCounts: {4, 4, 4}
-	element3DCounts: {3, 3, 3}
-	nodesPerElement: 8
-	ascendingIJK_ToHughesNodeNumberMap (ptr): 0x8054440
-		ascendingIJK_ToHughesNodeNumberMap[0]: 0
-		ascendingIJK_ToHughesNodeNumberMap[1]: 1
-		ascendingIJK_ToHughesNodeNumberMap[2]: 3
-		ascendingIJK_ToHughesNodeNumberMap[3]: 2
-		ascendingIJK_ToHughesNodeNumberMap[4]: 4
-		ascendingIJK_ToHughesNodeNumberMap[5]: 5
-		ascendingIJK_ToHughesNodeNumberMap[6]: 7
-		ascendingIJK_ToHughesNodeNumberMap[7]: 6
-MeshTopology (ptr): 0x805a3f8
-	nodeNeighbourCount (func ptr): 0x804a76a
-	nodeBuildNeighbours (func ptr): 0x804a7af
-	nodeElementCount (func ptr): 0x804b132
-	nodeBuildElements (func ptr): 0x804b192
-	elementNeighbourCount (func ptr): 0x804babc
-	elementBuildNeighbours (func ptr): 0x804bb56
-	elementNodeCount (func ptr): 0x804cd54
-	elementBuildNodes (func ptr): 0x804cdb4
-	nodeCount: 64
-	elementCount: 27
-	boundaryNodeCount: 6
-	boundaryNodeTbl (ptr): 0x805bad0
-		boundaryNodeTbl[0]: {1, 2, 5}
-		boundaryNodeTbl[1]: {2, 3, 6}
-		boundaryNodeTbl[2]: {6, 7, 5}
-		boundaryNodeTbl[3]: {4, 7, 0}
-		boundaryNodeTbl[4]: {5, 4, 1}
-		boundaryNodeTbl[5]: {0, 3, 1}
-Class (ptr): 0x805a3f8
-	sizeOfSelf: 120
-	_deleteSelf: True
-	type: HexaMeshTopology
-	_delete (func ptr): 0x804a6c2
-	_print (func ptr): 0x804a6ee
-Node global: 0, Neighbours: 6, {1, 4, 16, X, X, X}
-Node global: 1, Neighbours: 6, {2, 5, 17, 0, X, X}
-Node global: 2, Neighbours: 6, {3, 6, 18, 1, X, X}
-Node global: 3, Neighbours: 6, {X, 7, 19, 2, X, X}
-Node global: 4, Neighbours: 6, {5, 8, 20, X, 0, X}
-Node global: 5, Neighbours: 6, {6, 9, 21, 4, 1, X}
-Node global: 6, Neighbours: 6, {7, 10, 22, 5, 2, X}
-Node global: 7, Neighbours: 6, {X, 11, 23, 6, 3, X}
-Node global: 8, Neighbours: 6, {9, 12, 24, X, 4, X}
-Node global: 9, Neighbours: 6, {10, 13, 25, 8, 5, X}
-Node global: 10, Neighbours: 6, {11, 14, 26, 9, 6, X}
-Node global: 11, Neighbours: 6, {X, 15, 27, 10, 7, X}
-Node global: 12, Neighbours: 6, {13, X, 28, X, 8, X}
-Node global: 13, Neighbours: 6, {14, X, 29, 12, 9, X}
-Node global: 14, Neighbours: 6, {15, X, 30, 13, 10, X}
-Node global: 15, Neighbours: 6, {X, X, 31, 14, 11, X}
-Node global: 16, Neighbours: 6, {17, 20, 32, X, X, 0}
-Node global: 17, Neighbours: 6, {18, 21, 33, 16, X, 1}
-Node global: 18, Neighbours: 6, {19, 22, 34, 17, X, 2}
-Node global: 19, Neighbours: 6, {X, 23, 35, 18, X, 3}
-Node global: 20, Neighbours: 6, {21, 24, 36, X, 16, 4}
-Node global: 21, Neighbours: 6, {22, 25, 37, 20, 17, 5}
-Node global: 22, Neighbours: 6, {23, 26, 38, 21, 18, 6}
-Node global: 23, Neighbours: 6, {X, 27, 39, 22, 19, 7}
-Node global: 24, Neighbours: 6, {25, 28, 40, X, 20, 8}
-Node global: 25, Neighbours: 6, {26, 29, 41, 24, 21, 9}
-Node global: 26, Neighbours: 6, {27, 30, 42, 25, 22, 10}
-Node global: 27, Neighbours: 6, {X, 31, 43, 26, 23, 11}
-Node global: 28, Neighbours: 6, {29, X, 44, X, 24, 12}
-Node global: 29, Neighbours: 6, {30, X, 45, 28, 25, 13}
-Node global: 30, Neighbours: 6, {31, X, 46, 29, 26, 14}
-Node global: 31, Neighbours: 6, {X, X, 47, 30, 27, 15}
-Node global: 32, Neighbours: 6, {33, 36, 48, X, X, 16}
-Node global: 33, Neighbours: 6, {34, 37, 49, 32, X, 17}
-Node global: 34, Neighbours: 6, {35, 38, 50, 33, X, 18}
-Node global: 35, Neighbours: 6, {X, 39, 51, 34, X, 19}
-Node global: 36, Neighbours: 6, {37, 40, 52, X, 32, 20}
-Node global: 37, Neighbours: 6, {38, 41, 53, 36, 33, 21}
-Node global: 38, Neighbours: 6, {39, 42, 54, 37, 34, 22}
-Node global: 39, Neighbours: 6, {X, 43, 55, 38, 35, 23}
-Node global: 40, Neighbours: 6, {41, 44, 56, X, 36, 24}
-Node global: 41, Neighbours: 6, {42, 45, 57, 40, 37, 25}
-Node global: 42, Neighbours: 6, {43, 46, 58, 41, 38, 26}
-Node global: 43, Neighbours: 6, {X, 47, 59, 42, 39, 27}
-Node global: 44, Neighbours: 6, {45, X, 60, X, 40, 28}
-Node global: 45, Neighbours: 6, {46, X, 61, 44, 41, 29}
-Node global: 46, Neighbours: 6, {47, X, 62, 45, 42, 30}
-Node global: 47, Neighbours: 6, {X, X, 63, 46, 43, 31}
-Node global: 48, Neighbours: 6, {49, 52, X, X, X, 32}
-Node global: 49, Neighbours: 6, {50, 53, X, 48, X, 33}
-Node global: 50, Neighbours: 6, {51, 54, X, 49, X, 34}
-Node global: 51, Neighbours: 6, {X, 55, X, 50, X, 35}
-Node global: 52, Neighbours: 6, {53, 56, X, X, 48, 36}
-Node global: 53, Neighbours: 6, {54, 57, X, 52, 49, 37}
-Node global: 54, Neighbours: 6, {55, 58, X, 53, 50, 38}
-Node global: 55, Neighbours: 6, {X, 59, X, 54, 51, 39}
-Node global: 56, Neighbours: 6, {57, 60, X, X, 52, 40}
-Node global: 57, Neighbours: 6, {58, 61, X, 56, 53, 41}
-Node global: 58, Neighbours: 6, {59, 62, X, 57, 54, 42}
-Node global: 59, Neighbours: 6, {X, 63, X, 58, 55, 43}
-Node global: 60, Neighbours: 6, {61, X, X, X, 56, 44}
-Node global: 61, Neighbours: 6, {62, X, X, 60, 57, 45}
-Node global: 62, Neighbours: 6, {63, X, X, 61, 58, 46}
-Node global: 63, Neighbours: 6, {X, X, X, 62, 59, 47}
-
-Node global: 0, Elements: 8, {X, X, X, X, X, X, X, 0}
-Node global: 1, Elements: 8, {X, X, X, X, X, X, 0, 1}
-Node global: 2, Elements: 8, {X, X, X, X, X, X, 1, 2}
-Node global: 3, Elements: 8, {X, X, X, X, X, X, 2, X}
-Node global: 4, Elements: 8, {X, X, X, X, X, 0, X, 3}
-Node global: 5, Elements: 8, {X, X, X, X, 0, 1, 3, 4}
-Node global: 6, Elements: 8, {X, X, X, X, 1, 2, 4, 5}
-Node global: 7, Elements: 8, {X, X, X, X, 2, X, 5, X}
-Node global: 8, Elements: 8, {X, X, X, X, X, 3, X, 6}
-Node global: 9, Elements: 8, {X, X, X, X, 3, 4, 6, 7}
-Node global: 10, Elements: 8, {X, X, X, X, 4, 5, 7, 8}
-Node global: 11, Elements: 8, {X, X, X, X, 5, X, 8, X}
-Node global: 12, Elements: 8, {X, X, X, X, X, 6, X, X}
-Node global: 13, Elements: 8, {X, X, X, X, 6, 7, X, X}
-Node global: 14, Elements: 8, {X, X, X, X, 7, 8, X, X}
-Node global: 15, Elements: 8, {X, X, X, X, 8, X, X, X}
-Node global: 16, Elements: 8, {X, X, X, 0, X, X, X, 9}
-Node global: 17, Elements: 8, {X, X, 0, 1, X, X, 9, 10}
-Node global: 18, Elements: 8, {X, X, 1, 2, X, X, 10, 11}
-Node global: 19, Elements: 8, {X, X, 2, X, X, X, 11, X}
-Node global: 20, Elements: 8, {X, 0, X, 3, X, 9, X, 12}
-Node global: 21, Elements: 8, {0, 1, 3, 4, 9, 10, 12, 13}
-Node global: 22, Elements: 8, {1, 2, 4, 5, 10, 11, 13, 14}
-Node global: 23, Elements: 8, {2, X, 5, X, 11, X, 14, X}
-Node global: 24, Elements: 8, {X, 3, X, 6, X, 12, X, 15}
-Node global: 25, Elements: 8, {3, 4, 6, 7, 12, 13, 15, 16}
-Node global: 26, Elements: 8, {4, 5, 7, 8, 13, 14, 16, 17}
-Node global: 27, Elements: 8, {5, X, 8, X, 14, X, 17, X}
-Node global: 28, Elements: 8, {X, 6, X, X, X, 15, X, X}
-Node global: 29, Elements: 8, {6, 7, X, X, 15, 16, X, X}
-Node global: 30, Elements: 8, {7, 8, X, X, 16, 17, X, X}
-Node global: 31, Elements: 8, {8, X, X, X, 17, X, X, X}
-Node global: 32, Elements: 8, {X, X, X, 9, X, X, X, 18}
-Node global: 33, Elements: 8, {X, X, 9, 10, X, X, 18, 19}
-Node global: 34, Elements: 8, {X, X, 10, 11, X, X, 19, 20}
-Node global: 35, Elements: 8, {X, X, 11, X, X, X, 20, X}
-Node global: 36, Elements: 8, {X, 9, X, 12, X, 18, X, 21}
-Node global: 37, Elements: 8, {9, 10, 12, 13, 18, 19, 21, 22}
-Node global: 38, Elements: 8, {10, 11, 13, 14, 19, 20, 22, 23}
-Node global: 39, Elements: 8, {11, X, 14, X, 20, X, 23, X}
-Node global: 40, Elements: 8, {X, 12, X, 15, X, 21, X, 24}
-Node global: 41, Elements: 8, {12, 13, 15, 16, 21, 22, 24, 25}
-Node global: 42, Elements: 8, {13, 14, 16, 17, 22, 23, 25, 26}
-Node global: 43, Elements: 8, {14, X, 17, X, 23, X, 26, X}
-Node global: 44, Elements: 8, {X, 15, X, X, X, 24, X, X}
-Node global: 45, Elements: 8, {15, 16, X, X, 24, 25, X, X}
-Node global: 46, Elements: 8, {16, 17, X, X, 25, 26, X, X}
-Node global: 47, Elements: 8, {17, X, X, X, 26, X, X, X}
-Node global: 48, Elements: 8, {X, X, X, 18, X, X, X, X}
-Node global: 49, Elements: 8, {X, X, 18, 19, X, X, X, X}
-Node global: 50, Elements: 8, {X, X, 19, 20, X, X, X, X}
-Node global: 51, Elements: 8, {X, X, 20, X, X, X, X, X}
-Node global: 52, Elements: 8, {X, 18, X, 21, X, X, X, X}
-Node global: 53, Elements: 8, {18, 19, 21, 22, X, X, X, X}
-Node global: 54, Elements: 8, {19, 20, 22, 23, X, X, X, X}
-Node global: 55, Elements: 8, {20, X, 23, X, X, X, X, X}
-Node global: 56, Elements: 8, {X, 21, X, 24, X, X, X, X}
-Node global: 57, Elements: 8, {21, 22, 24, 25, X, X, X, X}
-Node global: 58, Elements: 8, {22, 23, 25, 26, X, X, X, X}
-Node global: 59, Elements: 8, {23, X, 26, X, X, X, X, X}
-Node global: 60, Elements: 8, {X, 24, X, X, X, X, X, X}
-Node global: 61, Elements: 8, {24, 25, X, X, X, X, X, X}
-Node global: 62, Elements: 8, {25, 26, X, X, X, X, X, X}
-Node global: 63, Elements: 8, {26, X, X, X, X, X, X, X}
-
-Node (0, 0, 0) -> global 0
-Node (1, 0, 0) -> global 1
-Node (2, 0, 0) -> global 2
-Node (3, 0, 0) -> global 3
-Node (0, 1, 0) -> global 4
-Node (1, 1, 0) -> global 5
-Node (2, 1, 0) -> global 6
-Node (3, 1, 0) -> global 7
-Node (0, 2, 0) -> global 8
-Node (1, 2, 0) -> global 9
-Node (2, 2, 0) -> global 10
-Node (3, 2, 0) -> global 11
-Node (0, 3, 0) -> global 12
-Node (1, 3, 0) -> global 13
-Node (2, 3, 0) -> global 14
-Node (3, 3, 0) -> global 15
-Node (0, 0, 1) -> global 16
-Node (1, 0, 1) -> global 17
-Node (2, 0, 1) -> global 18
-Node (3, 0, 1) -> global 19
-Node (0, 1, 1) -> global 20
-Node (1, 1, 1) -> global 21
-Node (2, 1, 1) -> global 22
-Node (3, 1, 1) -> global 23
-Node (0, 2, 1) -> global 24
-Node (1, 2, 1) -> global 25
-Node (2, 2, 1) -> global 26
-Node (3, 2, 1) -> global 27
-Node (0, 3, 1) -> global 28
-Node (1, 3, 1) -> global 29
-Node (2, 3, 1) -> global 30
-Node (3, 3, 1) -> global 31
-Node (0, 0, 2) -> global 32
-Node (1, 0, 2) -> global 33
-Node (2, 0, 2) -> global 34
-Node (3, 0, 2) -> global 35
-Node (0, 1, 2) -> global 36
-Node (1, 1, 2) -> global 37
-Node (2, 1, 2) -> global 38
-Node (3, 1, 2) -> global 39
-Node (0, 2, 2) -> global 40
-Node (1, 2, 2) -> global 41
-Node (2, 2, 2) -> global 42
-Node (3, 2, 2) -> global 43
-Node (0, 3, 2) -> global 44
-Node (1, 3, 2) -> global 45
-Node (2, 3, 2) -> global 46
-Node (3, 3, 2) -> global 47
-Node (0, 0, 3) -> global 48
-Node (1, 0, 3) -> global 49
-Node (2, 0, 3) -> global 50
-Node (3, 0, 3) -> global 51
-Node (0, 1, 3) -> global 52
-Node (1, 1, 3) -> global 53
-Node (2, 1, 3) -> global 54
-Node (3, 1, 3) -> global 55
-Node (0, 2, 3) -> global 56
-Node (1, 2, 3) -> global 57
-Node (2, 2, 3) -> global 58
-Node (3, 2, 3) -> global 59
-Node (0, 3, 3) -> global 60
-Node (1, 3, 3) -> global 61
-Node (2, 3, 3) -> global 62
-Node (3, 3, 3) -> global 63
-
-Node global 0 -> (0, 0, 0)
-Node global 1 -> (1, 0, 0)
-Node global 2 -> (2, 0, 0)
-Node global 3 -> (3, 0, 0)
-Node global 4 -> (0, 1, 0)
-Node global 5 -> (1, 1, 0)
-Node global 6 -> (2, 1, 0)
-Node global 7 -> (3, 1, 0)
-Node global 8 -> (0, 2, 0)
-Node global 9 -> (1, 2, 0)
-Node global 10 -> (2, 2, 0)
-Node global 11 -> (3, 2, 0)
-Node global 12 -> (0, 3, 0)
-Node global 13 -> (1, 3, 0)
-Node global 14 -> (2, 3, 0)
-Node global 15 -> (3, 3, 0)
-Node global 16 -> (0, 0, 1)
-Node global 17 -> (1, 0, 1)
-Node global 18 -> (2, 0, 1)
-Node global 19 -> (3, 0, 1)
-Node global 20 -> (0, 1, 1)
-Node global 21 -> (1, 1, 1)
-Node global 22 -> (2, 1, 1)
-Node global 23 -> (3, 1, 1)
-Node global 24 -> (0, 2, 1)
-Node global 25 -> (1, 2, 1)
-Node global 26 -> (2, 2, 1)
-Node global 27 -> (3, 2, 1)
-Node global 28 -> (0, 3, 1)
-Node global 29 -> (1, 3, 1)
-Node global 30 -> (2, 3, 1)
-Node global 31 -> (3, 3, 1)
-Node global 32 -> (0, 0, 2)
-Node global 33 -> (1, 0, 2)
-Node global 34 -> (2, 0, 2)
-Node global 35 -> (3, 0, 2)
-Node global 36 -> (0, 1, 2)
-Node global 37 -> (1, 1, 2)
-Node global 38 -> (2, 1, 2)
-Node global 39 -> (3, 1, 2)
-Node global 40 -> (0, 2, 2)
-Node global 41 -> (1, 2, 2)
-Node global 42 -> (2, 2, 2)
-Node global 43 -> (3, 2, 2)
-Node global 44 -> (0, 3, 2)
-Node global 45 -> (1, 3, 2)
-Node global 46 -> (2, 3, 2)
-Node global 47 -> (3, 3, 2)
-Node global 48 -> (0, 0, 3)
-Node global 49 -> (1, 0, 3)
-Node global 50 -> (2, 0, 3)
-Node global 51 -> (3, 0, 3)
-Node global 52 -> (0, 1, 3)
-Node global 53 -> (1, 1, 3)
-Node global 54 -> (2, 1, 3)
-Node global 55 -> (3, 1, 3)
-Node global 56 -> (0, 2, 3)
-Node global 57 -> (1, 2, 3)
-Node global 58 -> (2, 2, 3)
-Node global 59 -> (3, 2, 3)
-Node global 60 -> (0, 3, 3)
-Node global 61 -> (1, 3, 3)
-Node global 62 -> (2, 3, 3)
-Node global 63 -> (3, 3, 3)
-
-Element global: 0, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 3, 4, X, X, X, X, 9, 10, X, 12, 13}
-Element global: 1, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 0, 2, 3, 4, 5, X, X, X, 9, 10, 11, 12, 13, 14}
-Element global: 2, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, X, X, 1, X, 4, 5, X, X, X, X, 10, 11, X, 13, 14, X}
-Element global: 3, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 0, 1, X, 4, X, 6, 7, X, 9, 10, X, 12, 13, X, 15, 16}
-Element global: 4, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}
-Element global: 5, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 1, 2, X, 4, X, 7, 8, X, 10, 11, X, 13, 14, X, 16, 17, X}
-Element global: 6, Neighbours: 26, {X, X, X, X, X, X, X, X, X, X, 3, 4, X, 7, X, X, X, X, 12, 13, X, 15, 16, X, X, X}
-Element global: 7, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 3, 4, 5, 6, 8, X, X, X, 12, 13, 14, 15, 16, 17, X, X, X}
-Element global: 8, Neighbours: 26, {X, X, X, X, X, X, X, X, X, 4, 5, X, 7, X, X, X, X, 13, 14, X, 16, 17, X, X, X, X}
-Element global: 9, Neighbours: 26, {X, X, X, X, 0, 1, X, 3, 4, X, X, X, X, 10, X, 12, 13, X, X, X, X, 18, 19, X, 21, 22}
-Element global: 10, Neighbours: 26, {X, X, X, 0, 1, 2, 3, 4, 5, X, X, X, 9, 11, 12, 13, 14, X, X, X, 18, 19, 20, 21, 22, 23}
-Element global: 11, Neighbours: 26, {X, X, X, 1, 2, X, 4, 5, X, X, X, X, 10, X, 13, 14, X, X, X, X, 19, 20, X, 22, 23, X}
-Element global: 12, Neighbours: 26, {X, 0, 1, X, 3, 4, X, 6, 7, X, 9, 10, X, 13, X, 15, 16, X, 18, 19, X, 21, 22, X, 24, 25}
-Element global: 13, Neighbours: 26, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}
-Element global: 14, Neighbours: 26, {1, 2, X, 4, 5, X, 7, 8, X, 10, 11, X, 13, X, 16, 17, X, 19, 20, X, 22, 23, X, 25, 26, X}
-Element global: 15, Neighbours: 26, {X, 3, 4, X, 6, 7, X, X, X, X, 12, 13, X, 16, X, X, X, X, 21, 22, X, 24, 25, X, X, X}
-Element global: 16, Neighbours: 26, {3, 4, 5, 6, 7, 8, X, X, X, 12, 13, 14, 15, 17, X, X, X, 21, 22, 23, 24, 25, 26, X, X, X}
-Element global: 17, Neighbours: 26, {4, 5, X, 7, 8, X, X, X, X, 13, 14, X, 16, X, X, X, X, 22, 23, X, 25, 26, X, X, X, X}
-Element global: 18, Neighbours: 26, {X, X, X, X, 9, 10, X, 12, 13, X, X, X, X, 19, X, 21, 22, X, X, X, X, X, X, X, X, X}
-Element global: 19, Neighbours: 26, {X, X, X, 9, 10, 11, 12, 13, 14, X, X, X, 18, 20, 21, 22, 23, X, X, X, X, X, X, X, X, X}
-Element global: 20, Neighbours: 26, {X, X, X, 10, 11, X, 13, 14, X, X, X, X, 19, X, 22, 23, X, X, X, X, X, X, X, X, X, X}
-Element global: 21, Neighbours: 26, {X, 9, 10, X, 12, 13, X, 15, 16, X, 18, 19, X, 22, X, 24, 25, X, X, X, X, X, X, X, X, X}
-Element global: 22, Neighbours: 26, {9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, X, X, X, X, X, X, X, X, X}
-Element global: 23, Neighbours: 26, {10, 11, X, 13, 14, X, 16, 17, X, 19, 20, X, 22, X, 25, 26, X, X, X, X, X, X, X, X, X, X}
-Element global: 24, Neighbours: 26, {X, 12, 13, X, 15, 16, X, X, X, X, 21, 22, X, 25, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 25, Neighbours: 26, {12, 13, 14, 15, 16, 17, X, X, X, 21, 22, 23, 24, 26, X, X, X, X, X, X, X, X, X, X, X, X}
-Element global: 26, Neighbours: 26, {13, 14, X, 16, 17, X, X, X, X, 22, 23, X, 25, X, X, X, X, X, X, X, X, X, X, X, X, X}
-
-Element global: 0, Nodes: 8, {0, 1, 5, 4, 16, 17, 21, 20}
-Element global: 1, Nodes: 8, {1, 2, 6, 5, 17, 18, 22, 21}
-Element global: 2, Nodes: 8, {2, 3, 7, 6, 18, 19, 23, 22}
-Element global: 3, Nodes: 8, {4, 5, 9, 8, 20, 21, 25, 24}
-Element global: 4, Nodes: 8, {5, 6, 10, 9, 21, 22, 26, 25}
-Element global: 5, Nodes: 8, {6, 7, 11, 10, 22, 23, 27, 26}
-Element global: 6, Nodes: 8, {8, 9, 13, 12, 24, 25, 29, 28}
-Element global: 7, Nodes: 8, {9, 10, 14, 13, 25, 26, 30, 29}
-Element global: 8, Nodes: 8, {10, 11, 15, 14, 26, 27, 31, 30}
-Element global: 9, Nodes: 8, {16, 17, 21, 20, 32, 33, 37, 36}
-Element global: 10, Nodes: 8, {17, 18, 22, 21, 33, 34, 38, 37}
-Element global: 11, Nodes: 8, {18, 19, 23, 22, 34, 35, 39, 38}
-Element global: 12, Nodes: 8, {20, 21, 25, 24, 36, 37, 41, 40}
-Element global: 13, Nodes: 8, {21, 22, 26, 25, 37, 38, 42, 41}
-Element global: 14, Nodes: 8, {22, 23, 27, 26, 38, 39, 43, 42}
-Element global: 15, Nodes: 8, {24, 25, 29, 28, 40, 41, 45, 44}
-Element global: 16, Nodes: 8, {25, 26, 30, 29, 41, 42, 46, 45}
-Element global: 17, Nodes: 8, {26, 27, 31, 30, 42, 43, 47, 46}
-Element global: 18, Nodes: 8, {32, 33, 37, 36, 48, 49, 53, 52}
-Element global: 19, Nodes: 8, {33, 34, 38, 37, 49, 50, 54, 53}
-Element global: 20, Nodes: 8, {34, 35, 39, 38, 50, 51, 55, 54}
-Element global: 21, Nodes: 8, {36, 37, 41, 40, 52, 53, 57, 56}
-Element global: 22, Nodes: 8, {37, 38, 42, 41, 53, 54, 58, 57}
-Element global: 23, Nodes: 8, {38, 39, 43, 42, 54, 55, 59, 58}
-Element global: 24, Nodes: 8, {40, 41, 45, 44, 56, 57, 61, 60}
-Element global: 25, Nodes: 8, {41, 42, 46, 45, 57, 58, 62, 61}
-Element global: 26, Nodes: 8, {42, 43, 47, 46, 58, 59, 63, 62}
-
-Element (0, 0, 0) -> global 0
-Element (1, 0, 0) -> global 1
-Element (2, 0, 0) -> global 2
-Element (0, 1, 0) -> global 3
-Element (1, 1, 0) -> global 4
-Element (2, 1, 0) -> global 5
-Element (0, 2, 0) -> global 6
-Element (1, 2, 0) -> global 7
-Element (2, 2, 0) -> global 8
-Element (0, 0, 1) -> global 9
-Element (1, 0, 1) -> global 10
-Element (2, 0, 1) -> global 11
-Element (0, 1, 1) -> global 12
-Element (1, 1, 1) -> global 13
-Element (2, 1, 1) -> global 14
-Element (0, 2, 1) -> global 15
-Element (1, 2, 1) -> global 16
-Element (2, 2, 1) -> global 17
-Element (0, 0, 2) -> global 18
-Element (1, 0, 2) -> global 19
-Element (2, 0, 2) -> global 20
-Element (0, 1, 2) -> global 21
-Element (1, 1, 2) -> global 22
-Element (2, 1, 2) -> global 23
-Element (0, 2, 2) -> global 24
-Element (1, 2, 2) -> global 25
-Element (2, 2, 2) -> global 26
-
-Element global 0 -> (0, 0, 0)
-Element global 1 -> (1, 0, 0)
-Element global 2 -> (2, 0, 0)
-Element global 3 -> (0, 1, 0)
-Element global 4 -> (1, 1, 0)
-Element global 5 -> (2, 1, 0)
-Element global 6 -> (0, 2, 0)
-Element global 7 -> (1, 2, 0)
-Element global 8 -> (2, 2, 0)
-Element global 9 -> (0, 0, 1)
-Element global 10 -> (1, 0, 1)
-Element global 11 -> (2, 0, 1)
-Element global 12 -> (0, 1, 1)
-Element global 13 -> (1, 1, 1)
-Element global 14 -> (2, 1, 1)
-Element global 15 -> (0, 2, 1)
-Element global 16 -> (1, 2, 1)
-Element global 17 -> (2, 2, 1)
-Element global 18 -> (0, 0, 2)
-Element global 19 -> (1, 0, 2)
-Element global 20 -> (2, 0, 2)
-Element global 21 -> (0, 1, 2)
-Element global 22 -> (1, 1, 2)
-Element global 23 -> (2, 1, 2)
-Element global 24 -> (0, 2, 2)
-Element global 25 -> (1, 2, 2)
-Element global 26 -> (2, 2, 2)
-
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testHexaMeshTopology.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testHexaMeshTopology " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,14 +0,0 @@
-Element corner indices:
-	Element 0 : { 0, 1, 3 }
-	Element 1 : { 1, 4, 3 }
-	Element 2 : { 1, 2, 4 }
-	Element 3 : { 2, 5, 4 }
-
-Corner element indices:
-	Corner 0 : { 0 }
-	Corner 1 : { 0, 1, 2 }
-	Corner 2 : { 2, 3 }
-	Corner 3 : { 0, 1 }
-	Corner 4 : { 1, 2, 3 }
-	Corner 5 : { 3 }
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testIrregEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,121 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	Dictionary*		dictionary;
-	Geometry*		geometry;
-	Topology*		topology;
-	ElementLayout*		eLayout;
-	Element_GlobalIndex	e_I;
-	Index			i;
-	XML_IO_Handler*		io_handler;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(MPI_COMM_WORLD, &procCount);
-	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	io_handler = XML_IO_Handler_New();
-	dictionary = Dictionary_New();
-	IO_Handler_ReadAllFromFile( io_handler, "data/trisurf.xml", dictionary );
-	
-	geometry = (Geometry*)IrregGeometry_New( "irregGeometry", dictionary, "geometry" );
-	topology = (Topology*)IrregTopology_New( "IrregTopology", dictionary, "topology" );
-	eLayout = (ElementLayout*)IrregEL_New( "IrregEL", dictionary, geometry, topology, "elements" );
-	
-	/*
-	ElementLayout_Build( eLayout, meshDecomp );
-	*/
-	
-	printf( "Element corner indices:\n" );
-	for( e_I = 0; e_I < eLayout->elementCount; e_I++ ) {
-		Index* corners = Memory_Alloc_Array( Index, eLayout->elementCornerCount, "corners" );
-		
-		eLayout->buildCornerIndices( eLayout, e_I, corners );
-		
-		printf( "\tElement %u : { %u", e_I, corners[0] );
-		for( i = 1; i < eLayout->elementCornerCount; i++ )
-			printf( ", %u", corners[i] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	printf( "Corner element indices:\n" );
-	for( i = 0; i < eLayout->cornerCount; i++ ) {
-		Element_GlobalIndex	elementCnt = eLayout->cornerElementCount( eLayout, i );
-		Element_GlobalIndex*	elements = Memory_Alloc_Array( Element_GlobalIndex, elementCnt, "elements" );
-		
-		eLayout->buildCornerElements( eLayout, i, elements );
-		
-		printf( "\tCorner %u : { %u", i, elements[0] );
-		for( e_I = 1; e_I < elementCnt; e_I++ )
-			printf( ", %u", elements[e_I] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	Stg_Class_Delete( dictionary );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( geometry );
-	Stg_Class_Delete( topology );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf-withLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf-withLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf-withLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,259 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <mpi.h>
-
-int main(int argc, char *argv[])
-{
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	MeshTopology*		mt, *rmt;
-	MeshGeometry*		mg, *rmg;
-	MeshDecomp*		md, *rmd;
-	MeshLayout*		rml;
-	ShadowIndex		sd;
-	XML_IO_Handler*		io_handler = XML_IO_Handler_New();
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_size(MPI_COMM_WORLD, &procCount);
-	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 0 ) );
-	IO_Handler_ReadAllFromFile(io_handler, "data/surface.xml", dictionary);
-	
-	rmt = (MeshTopology*)HexaMeshTopology_New(dictionary);
-	rmg = (MeshGeometry*)HexaMeshGeometry_New(dictionary);
-	
-	mt = (MeshTopology*)TriSurfTopology_New(dictionary, "imElements");
-	mg = (MeshGeometry*)TriSurfGeometry_New(dictionary, "imNodes");
-	
-	for (sd = 0; sd < 2; sd++)
-	{
-		Dictionary_Set( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( sd ) );
-	
-		rmd = (MeshDecomp*)RegularMeshDecomp_New(dictionary, MPI_COMM_WORLD, rmt);
-		rml = MeshLayout_New(rmt, rmg, rmd);
-		md = (MeshDecomp*)IrregularMeshDecomp_New_FromMeshLayout(dictionary, MPI_COMM_WORLD, mt, mg, rml);
-					
-		if (rank == procToWatch)
-		{
-			Node_GlobalIndex	gNode_I;
-			Node_LocalIndex		lNode_I;
-			Node_ShadowIndex	sNode_I;
-			Node_DomainIndex	dNode_I;
-			Element_GlobalIndex	gElt_I;
-			Element_LocalIndex	lElt_I;
-			Element_ShadowIndex	sElt_I;
-			Element_DomainIndex	dElt_I;
-						
-			Print(md);
-			printf("\n");
-			
-			for (gNode_I = 0; gNode_I < md->nodeGlobalCount; gNode_I++)
-			{
-				Node_LocalIndex		localNode;
-				Node_ShadowIndex	shadowNode;
-				Node_DomainIndex	domainNode;
-							
-				localNode = md->nodeMapGlobalToLocal(md, gNode_I);
-				shadowNode = md->nodeMapGlobalToShadow(md, gNode_I);
-				domainNode = md->nodeMapGlobalToDomain(md, gNode_I);
-				printf("Node, global: %u - ", gNode_I);
-				if (localNode < md->nodeLocalCount)
-					printf("local: %u - ", localNode);
-				else
-					printf("local: X - ");
-				if (shadowNode < md->nodeShadowCount)
-					printf("shadow: %u - ", shadowNode);
-				else
-					printf("shadow: X - ");
-				if (domainNode < md->nodeDomainCount)
-					printf("domain: %u\n", domainNode);
-				else
-					printf("domain: X\n");
-			}
-			printf("\n");
-						
-			for (lNode_I = 0; lNode_I < md->nodeLocalCount; lNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-				
-				globalNode = md->nodeMapLocalToGlobal(md, lNode_I);
-				printf("Node, local: %u - ", lNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-					
-			for (sNode_I = 0; sNode_I < md->nodeShadowCount; sNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-							
-				globalNode = md->nodeMapShadowToGlobal(md, sNode_I);
-				printf("Node, shadow: %u - ", sNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (dNode_I = 0; dNode_I < md->nodeLocalCount; dNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-					
-				globalNode = md->nodeMapDomainToGlobal(md, dNode_I);
-				printf("Node, domain: %u - ", dNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (gElt_I = 0; gElt_I < md->elementGlobalCount; gElt_I++)
-			{
-				Element_LocalIndex	localElt;
-				Element_ShadowIndex	shadowElt;
-				Element_DomainIndex	domainElt;
-							
-				localElt = md->elementMapGlobalToLocal(md, gElt_I);
-				shadowElt = md->elementMapGlobalToShadow(md, gElt_I);
-				domainElt = md->elementMapGlobalToDomain(md, gElt_I);
-				printf("Element, global: %u - ", gElt_I);
-				if (localElt < md->elementLocalCount)
-					printf("local: %u - ", localElt);
-				else
-					printf("local: X - ");
-				if (shadowElt < md->elementShadowCount)
-					printf("shadow: %u - ", shadowElt);
-				else
-					printf("shadow: X - ");
-				if (domainElt < md->elementDomainCount)
-					printf("domain: %u\n", domainElt);
-				else
-					printf("domain: X\n");
-			}
-			printf("\n");
-						
-			for (lElt_I = 0; lElt_I < md->elementLocalCount; lElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-						
-				globalElement = md->elementMapLocalToGlobal(md, lElt_I);
-				printf("Element, local: %u - ", lElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (sElt_I = 0; sElt_I < md->elementShadowCount; sElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-							
-				globalElement = md->elementMapShadowToGlobal(md, sElt_I);
-				printf("Element, shadow: %u - ", sElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (dElt_I = 0; dElt_I < md->elementLocalCount; dElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-					
-				globalElement = md->elementMapDomainToGlobal(md, dElt_I);
-				printf("Element, domain: %u - ", dElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-		}
-		
-		Stg_Class_Delete(md);
-		Stg_Class_Delete(rml);
-		Stg_Class_Delete(rmd);
-	}
-	
-	Stg_Class_Delete(mg);
-	Stg_Class_Delete(mt);
-	
-	Stg_Class_Delete(rmg);
-	Stg_Class_Delete(rmt);
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testIrregularMeshDecomp-triSurf.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,246 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <mpi.h>
-
-
-int main(int argc, char *argv[])
-{
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	MeshTopology*		mt;
-	MeshGeometry*		mg;
-	MeshDecomp*		md;
-	ShadowIndex		sd;
-	XML_IO_Handler*		io_handler = XML_IO_Handler_New();
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_size(MPI_COMM_WORLD, &procCount);
-	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 0 ) );
-	IO_Handler_ReadAllFromFile(io_handler, "data/surface.xml", dictionary);
-	
-	mt = (MeshTopology*)TriSurfTopology_New(dictionary, "imElements");
-	mg = (MeshGeometry*)TriSurfGeometry_New(dictionary, "imNodes");
-	
-	for (sd = 0; sd < 2; sd++)
-	{
-		Dictionary_Set( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( sd ) );
-	
-		md = (MeshDecomp*)IrregularMeshDecomp_New(dictionary, MPI_COMM_WORLD, mt, mg);
-					
-		if (rank == procToWatch)
-		{
-			Node_GlobalIndex	gNode_I;
-			Node_LocalIndex		lNode_I;
-			Node_ShadowIndex	sNode_I;
-			Node_DomainIndex	dNode_I;
-			Element_GlobalIndex	gElt_I;
-			Element_LocalIndex	lElt_I;
-			Element_ShadowIndex	sElt_I;
-			Element_DomainIndex	dElt_I;
-						
-			Print(md);
-			printf("\n");
-			
-			for (gNode_I = 0; gNode_I < md->nodeGlobalCount; gNode_I++)
-			{
-				Node_LocalIndex		localNode;
-				Node_ShadowIndex	shadowNode;
-				Node_DomainIndex	domainNode;
-							
-				localNode = md->nodeMapGlobalToLocal(md, gNode_I);
-				shadowNode = md->nodeMapGlobalToShadow(md, gNode_I);
-				domainNode = md->nodeMapGlobalToDomain(md, gNode_I);
-				printf("Node, global: %u - ", gNode_I);
-				if (localNode < md->nodeLocalCount)
-					printf("local: %u - ", localNode);
-				else
-					printf("local: X - ");
-				if (shadowNode < md->nodeShadowCount)
-					printf("shadow: %u - ", shadowNode);
-				else
-					printf("shadow: X - ");
-				if (domainNode < md->nodeDomainCount)
-					printf("domain: %u\n", domainNode);
-				else
-					printf("domain: X\n");
-			}
-			printf("\n");
-						
-			for (lNode_I = 0; lNode_I < md->nodeLocalCount; lNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-				
-				globalNode = md->nodeMapLocalToGlobal(md, lNode_I);
-				printf("Node, local: %u - ", lNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-					
-			for (sNode_I = 0; sNode_I < md->nodeShadowCount; sNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-							
-				globalNode = md->nodeMapShadowToGlobal(md, sNode_I);
-				printf("Node, shadow: %u - ", sNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (dNode_I = 0; dNode_I < md->nodeLocalCount; dNode_I++)
-			{
-				Node_GlobalIndex	globalNode;
-					
-				globalNode = md->nodeMapDomainToGlobal(md, dNode_I);
-				printf("Node, domain: %u - ", dNode_I);
-				if (globalNode < md->nodeGlobalCount)
-					printf("global: %u\n", globalNode);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (gElt_I = 0; gElt_I < md->elementGlobalCount; gElt_I++)
-			{
-				Element_LocalIndex	localElt;
-				Element_ShadowIndex	shadowElt;
-				Element_DomainIndex	domainElt;
-							
-				localElt = md->elementMapGlobalToLocal(md, gElt_I);
-				shadowElt = md->elementMapGlobalToShadow(md, gElt_I);
-				domainElt = md->elementMapGlobalToDomain(md, gElt_I);
-				printf("Element, global: %u - ", gElt_I);
-				if (localElt < md->elementLocalCount)
-					printf("local: %u - ", localElt);
-				else
-					printf("local: X - ");
-				if (shadowElt < md->elementShadowCount)
-					printf("shadow: %u - ", shadowElt);
-				else
-					printf("shadow: X - ");
-				if (domainElt < md->elementDomainCount)
-					printf("domain: %u\n", domainElt);
-				else
-					printf("domain: X\n");
-			}
-			printf("\n");
-						
-			for (lElt_I = 0; lElt_I < md->elementLocalCount; lElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-						
-				globalElement = md->elementMapLocalToGlobal(md, lElt_I);
-				printf("Element, local: %u - ", lElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (sElt_I = 0; sElt_I < md->elementShadowCount; sElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-							
-				globalElement = md->elementMapShadowToGlobal(md, sElt_I);
-				printf("Element, shadow: %u - ", sElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-						
-			for (dElt_I = 0; dElt_I < md->elementLocalCount; dElt_I++)
-			{
-				Element_GlobalIndex	globalElement;
-					
-				globalElement = md->elementMapDomainToGlobal(md, dElt_I);
-				printf("Element, domain: %u - ", dElt_I);
-				if (globalElement < md->elementGlobalCount)
-					printf("global: %u\n", globalElement);
-				else
-					printf("global: X\n");
-			}
-			printf("\n");
-		}
-		
-		Stg_Class_Delete(md);
-	}
-	
-	Stg_Class_Delete(mg);
-	Stg_Class_Delete(mt);
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-Watching rank 0
-Building mesh:
-Done.
-partitionedAxis: { False, False, False }
-partitionCounts: { 1, 1, 1 }
-elementGlobalCounts: { 32, 32, 32 }
-	elementLocalCounts[0]: { 32, 32, 32 }
-nodeGlobalCounts: { 33, 33, 33 }
-	nodeLocalCounts[0]: { 33, 33, 33 }

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMesh-large " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,16 +0,0 @@
-Watching rank 0
-StGermain Framework. Copyright (C) 2003-2005 VPAC.
-Building mesh:
-Done.
-partitionedAxis: { True, False, False }
-partitionCounts: { 4, 1, 1 }
-elementGlobalCounts: { 32, 32, 32 }
-	elementLocalCounts[0]: { 8, 32, 32 }
-	elementLocalCounts[1]: { 8, 32, 32 }
-	elementLocalCounts[2]: { 8, 32, 32 }
-	elementLocalCounts[3]: { 8, 32, 32 }
-nodeGlobalCounts: { 33, 33, 33 }
-	nodeLocalCounts[0]: { 9, 33, 33 }
-	nodeLocalCounts[1]: { 9, 33, 33 }
-	nodeLocalCounts[2]: { 9, 33, 33 }
-	nodeLocalCounts[3]: { 9, 33, 33 }

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMesh-large " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh-large.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,153 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <mpi.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-struct _Node
-{
-	double temp;
-};
-
-
-struct _Element
-{
-	double temp;
-};
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			numProcessors;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	HexaMD*		decomp;
-	MeshLayout*		meshLayout;
-	Mesh*			mesh;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init( &argc, &argv );
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size( CommWorld, &numProcessors );
-	MPI_Comm_rank( CommWorld, &rank );
-	
-	procToWatch = (argc >= 2) ? atoi( argv[1] ) : 0;
-	
-	if ( rank == procToWatch ) printf( "Watching rank %d\n", rank );
-	
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	dictionary = Dictionary_New();
-	/* Use default settings ... see if not having G2L slows us down too much. */
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "buildElementNodeTbl", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "buildElementNeighbourTbl", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "buildNodeElementTbl", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "buildNodeNeighbourTbl", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	meshLayout = MeshLayout_New( "MeshLayout", eLayout, nLayout, (MeshDecomp*)decomp );
-	
-	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", meshLayout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
-	
-	if ( rank == procToWatch ) printf( "Building mesh:\n" );
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	if ( rank == procToWatch ) printf( "Done.\n" );
-	if ( rank == procToWatch ) {
-		Partition_Index proc_I;
-
-		printf( "partitionedAxis: { %s, %s, %s }\n", decomp->partitionedAxis[0] ? "True" : "False", 
-			decomp->partitionedAxis[1] ? "True" : "False", decomp->partitionedAxis[2] ? "True" : "False" );
-		printf( "partitionCounts: { %u, %u, %u }\n", decomp->partition3DCounts[0], decomp->partition3DCounts[1], 
-			decomp->partition3DCounts[2] );
-		
-		printf( "elementGlobalCounts: { %u, %u, %u }\n", decomp->elementGlobal3DCounts[0], decomp->elementGlobal3DCounts[1], 
-			decomp->elementGlobal3DCounts[2] );
-		for( proc_I = 0; proc_I < decomp->procsInUse; proc_I++ ) {
-			printf( "\telementLocalCounts[%u]: { %u, %u, %u }\n", proc_I, decomp->elementLocal3DCounts[proc_I][0], 
-				decomp->elementLocal3DCounts[proc_I][1], decomp->elementLocal3DCounts[proc_I][2] );
-		}
-		
-		printf( "nodeGlobalCounts: { %u, %u, %u }\n", decomp->nodeGlobal3DCounts[0], decomp->nodeGlobal3DCounts[1], 
-			decomp->nodeGlobal3DCounts[2] );
-		for( proc_I = 0; proc_I < decomp->procsInUse; proc_I++ ) {
-			printf( "\tnodeLocalCounts[%u]: { %u, %u, %u }\n", proc_I, decomp->nodeLocal3DCounts[proc_I][0], 
-				decomp->nodeLocal3DCounts[proc_I][1], decomp->nodeLocal3DCounts[proc_I][2] );
-		}
-	}
-	
-	Stg_Class_Delete( mesh );
-	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( meshLayout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,428 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f0f0)
-Stg_Component (ptr): 0x805f0f0
-Stg_Object (ptr): 0x805f0f0
-	Stg_Class (ptr): 0x805f0f0
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f881dd
-		_print (func ptr): 0xb7f88a6a
-		_copy (func ptr): 0xb7f89c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f8751c
-	_construct (func ptr): 0xb7f8800e
-	_build (func ptr): 0xb7f8a322
-	_initialise (func ptr): 0xb7f8b214
-	_execute (func ptr): 0xb7f8b219
-	_destroy (func ptr): 0xb7f881d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c4b8
-	layout (ptr): 0x805ee18
-Extension (ptr):0x805f4c0
-Stg_Object (ptr): 0x805f4c0
-	Stg_Class (ptr): 0x805f4c0
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f00018
-		_print (func ptr): 0xb7f00066
-		_copy (func ptr): 0xb7f00200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f520
-Stg_ObjectList (ptr):0x805f520
-	Stg_Class (ptr): 0x805f520
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f31f3e
-		_print (func ptr): 0xb7f31f75
-		_copy (func ptr): 0xb7f32217
-	_append(func ptr): 0xb7f32e7b
-	_prepend(func ptr): 0xb7f32f41
-	_replaceAll(func ptr): 0xb7f33005
-	_replace(func ptr): 0xb7f330be
-	_insertBefore(func ptr): 0xb7f3325b
-	_insertAfter(func ptr): 0xb7f33416
-	_remove(func ptr): 0xb7f335d3
-	_getIndex(func ptr): 0xb7f33679
-	_get(func ptr): 0xb7f33727
-	_allocMoreMemory(func ptr): 0xb7f338fa
-	_insertAtIndex(func ptr): 0xb7f33980
-	_removeByIndex(func ptr): 0xb7f339fe
-	_deleteAllObjects(func ptr): 0xb7f3387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f5c0
-Stg_Object (ptr): 0x805f5c0
-	Stg_Class (ptr): 0x805f5c0
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f00018
-		_print (func ptr): 0xb7f00066
-		_copy (func ptr): 0xb7f00200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f638
-Stg_ObjectList (ptr):0x805f638
-	Stg_Class (ptr): 0x805f638
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f31f3e
-		_print (func ptr): 0xb7f31f75
-		_copy (func ptr): 0xb7f32217
-	_append(func ptr): 0xb7f32e7b
-	_prepend(func ptr): 0xb7f32f41
-	_replaceAll(func ptr): 0xb7f33005
-	_replace(func ptr): 0xb7f330be
-	_insertBefore(func ptr): 0xb7f3325b
-	_insertAfter(func ptr): 0xb7f33416
-	_remove(func ptr): 0xb7f335d3
-	_getIndex(func ptr): 0xb7f33679
-	_get(func ptr): 0xb7f33727
-	_allocMoreMemory(func ptr): 0xb7f338fa
-	_insertAtIndex(func ptr): 0xb7f33980
-	_removeByIndex(func ptr): 0xb7f339fe
-	_deleteAllObjects(func ptr): 0xb7f3387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x805fe68
-	nodeLocalCount: 64
-	nodeDomainCount: 64
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060078
-	nodeCoord[0-64]:   (0.00,0.00,0.00), (0.33,0.00,0.00), (0.67,0.00,0.00), (1.00,0.00,0.00), (0.00,0.33,0.00), (0.33,0.33,0.00), (0.67,0.33,0.00), (1.00,0.33,0.00), (0.00,0.67,0.00), (0.33,0.67,0.00), (0.67,0.67,0.00), (1.00,0.67,0.00), (0.00,1.00,0.00), (0.33,1.00,0.00), (0.67,1.00,0.00), (1.00,1.00,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.67,0.00,0.33), (1.00,0.00,0.33), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.67,0.33,0.33), (1.00,0.33,0.33), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.67,0.67,0.33), (1.00,0.67,0.33), (0.00,1.00,0.33), (0.33,1.00,0.33), (0.67,1.00,0.33), (1.00,1.00,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.67,0.00,0.67), (1.00,0.00,0.67), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.67,0.33,0.67), (1.00,0.33,0.67), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.67,0.67,0.67), (1.00,0.67,0.67), (0.00,1.00,0.67), (0.33,1.00,0.67), (0.67,1.00,0.67), (1.00,1.00,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.67,0.00,1.00), (1.00,0.00,1.00), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.67,0.33,1.00), (1.00,0.33,1.00), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.67,0.67,1.00), (1.00,0.67,1.00), (0.00,1.00,1.00), (0.33,1.00,1.00), (0.67,1.00,1.00), (1.00,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060688
-	nodeL2G[0-64]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060688
-	nodeD2G[0-64]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060798
-	nodeG2L[0-64]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060798
-	nodeG2D[0-64]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80608a8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x80609b8
-	nodeNeighbourTbl[0-64]:
-		nodeNeighbourTbl[0][0-6]: 001 004 016 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 002 005 017 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 006 018 001 064 064 
-		nodeNeighbourTbl[3][0-6]: 064 007 019 002 064 064 
-		nodeNeighbourTbl[4][0-6]: 005 008 020 064 000 064 
-		nodeNeighbourTbl[5][0-6]: 006 009 021 004 001 064 
-		nodeNeighbourTbl[6][0-6]: 007 010 022 005 002 064 
-		nodeNeighbourTbl[7][0-6]: 064 011 023 006 003 064 
-		nodeNeighbourTbl[8][0-6]: 009 012 024 064 004 064 
-		nodeNeighbourTbl[9][0-6]: 010 013 025 008 005 064 
-		nodeNeighbourTbl[10][0-6]: 011 014 026 009 006 064 
-		nodeNeighbourTbl[11][0-6]: 064 015 027 010 007 064 
-		nodeNeighbourTbl[12][0-6]: 013 064 028 064 008 064 
-		nodeNeighbourTbl[13][0-6]: 014 064 029 012 009 064 
-		nodeNeighbourTbl[14][0-6]: 015 064 030 013 010 064 
-		nodeNeighbourTbl[15][0-6]: 064 064 031 014 011 064 
-		nodeNeighbourTbl[16][0-6]: 017 020 032 064 064 000 
-		nodeNeighbourTbl[17][0-6]: 018 021 033 016 064 001 
-		nodeNeighbourTbl[18][0-6]: 019 022 034 017 064 002 
-		nodeNeighbourTbl[19][0-6]: 064 023 035 018 064 003 
-		nodeNeighbourTbl[20][0-6]: 021 024 036 064 016 004 
-		nodeNeighbourTbl[21][0-6]: 022 025 037 020 017 005 
-		nodeNeighbourTbl[22][0-6]: 023 026 038 021 018 006 
-		nodeNeighbourTbl[23][0-6]: 064 027 039 022 019 007 
-		nodeNeighbourTbl[24][0-6]: 025 028 040 064 020 008 
-		nodeNeighbourTbl[25][0-6]: 026 029 041 024 021 009 
-		nodeNeighbourTbl[26][0-6]: 027 030 042 025 022 010 
-		nodeNeighbourTbl[27][0-6]: 064 031 043 026 023 011 
-		nodeNeighbourTbl[28][0-6]: 029 064 044 064 024 012 
-		nodeNeighbourTbl[29][0-6]: 030 064 045 028 025 013 
-		nodeNeighbourTbl[30][0-6]: 031 064 046 029 026 014 
-		nodeNeighbourTbl[31][0-6]: 064 064 047 030 027 015 
-		nodeNeighbourTbl[32][0-6]: 033 036 048 064 064 016 
-		nodeNeighbourTbl[33][0-6]: 034 037 049 032 064 017 
-		nodeNeighbourTbl[34][0-6]: 035 038 050 033 064 018 
-		nodeNeighbourTbl[35][0-6]: 064 039 051 034 064 019 
-		nodeNeighbourTbl[36][0-6]: 037 040 052 064 032 020 
-		nodeNeighbourTbl[37][0-6]: 038 041 053 036 033 021 
-		nodeNeighbourTbl[38][0-6]: 039 042 054 037 034 022 
-		nodeNeighbourTbl[39][0-6]: 064 043 055 038 035 023 
-		nodeNeighbourTbl[40][0-6]: 041 044 056 064 036 024 
-		nodeNeighbourTbl[41][0-6]: 042 045 057 040 037 025 
-		nodeNeighbourTbl[42][0-6]: 043 046 058 041 038 026 
-		nodeNeighbourTbl[43][0-6]: 064 047 059 042 039 027 
-		nodeNeighbourTbl[44][0-6]: 045 064 060 064 040 028 
-		nodeNeighbourTbl[45][0-6]: 046 064 061 044 041 029 
-		nodeNeighbourTbl[46][0-6]: 047 064 062 045 042 030 
-		nodeNeighbourTbl[47][0-6]: 064 064 063 046 043 031 
-		nodeNeighbourTbl[48][0-6]: 049 052 064 064 064 032 
-		nodeNeighbourTbl[49][0-6]: 050 053 064 048 064 033 
-		nodeNeighbourTbl[50][0-6]: 051 054 064 049 064 034 
-		nodeNeighbourTbl[51][0-6]: 064 055 064 050 064 035 
-		nodeNeighbourTbl[52][0-6]: 053 056 064 064 048 036 
-		nodeNeighbourTbl[53][0-6]: 054 057 064 052 049 037 
-		nodeNeighbourTbl[54][0-6]: 055 058 064 053 050 038 
-		nodeNeighbourTbl[55][0-6]: 064 059 064 054 051 039 
-		nodeNeighbourTbl[56][0-6]: 057 060 064 064 052 040 
-		nodeNeighbourTbl[57][0-6]: 058 061 064 056 053 041 
-		nodeNeighbourTbl[58][0-6]: 059 062 064 057 054 042 
-		nodeNeighbourTbl[59][0-6]: 064 063 064 058 055 043 
-		nodeNeighbourTbl[60][0-6]: 061 064 064 064 056 044 
-		nodeNeighbourTbl[61][0-6]: 062 064 064 060 057 045 
-		nodeNeighbourTbl[62][0-6]: 063 064 064 061 058 046 
-		nodeNeighbourTbl[63][0-6]: 064 064 064 062 059 047 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x80610c8
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x80611d8
-	nodeElementTbl[0-64]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 001 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 027 001 002 
-		nodeElementTbl[3][0-8]: 027 027 027 027 027 027 002 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 000 027 003 
-		nodeElementTbl[5][0-8]: 027 027 027 027 000 001 003 004 
-		nodeElementTbl[6][0-8]: 027 027 027 027 001 002 004 005 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 005 027 
-		nodeElementTbl[8][0-8]: 027 027 027 027 027 003 027 006 
-		nodeElementTbl[9][0-8]: 027 027 027 027 003 004 006 007 
-		nodeElementTbl[10][0-8]: 027 027 027 027 004 005 007 008 
-		nodeElementTbl[11][0-8]: 027 027 027 027 005 027 008 027 
-		nodeElementTbl[12][0-8]: 027 027 027 027 027 006 027 027 
-		nodeElementTbl[13][0-8]: 027 027 027 027 006 007 027 027 
-		nodeElementTbl[14][0-8]: 027 027 027 027 007 008 027 027 
-		nodeElementTbl[15][0-8]: 027 027 027 027 008 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 000 027 027 027 009 
-		nodeElementTbl[17][0-8]: 027 027 000 001 027 027 009 010 
-		nodeElementTbl[18][0-8]: 027 027 001 002 027 027 010 011 
-		nodeElementTbl[19][0-8]: 027 027 002 027 027 027 011 027 
-		nodeElementTbl[20][0-8]: 027 000 027 003 027 009 027 012 
-		nodeElementTbl[21][0-8]: 000 001 003 004 009 010 012 013 
-		nodeElementTbl[22][0-8]: 001 002 004 005 010 011 013 014 
-		nodeElementTbl[23][0-8]: 002 027 005 027 011 027 014 027 
-		nodeElementTbl[24][0-8]: 027 003 027 006 027 012 027 015 
-		nodeElementTbl[25][0-8]: 003 004 006 007 012 013 015 016 
-		nodeElementTbl[26][0-8]: 004 005 007 008 013 014 016 017 
-		nodeElementTbl[27][0-8]: 005 027 008 027 014 027 017 027 
-		nodeElementTbl[28][0-8]: 027 006 027 027 027 015 027 027 
-		nodeElementTbl[29][0-8]: 006 007 027 027 015 016 027 027 
-		nodeElementTbl[30][0-8]: 007 008 027 027 016 017 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 017 027 027 027 
-		nodeElementTbl[32][0-8]: 027 027 027 009 027 027 027 018 
-		nodeElementTbl[33][0-8]: 027 027 009 010 027 027 018 019 
-		nodeElementTbl[34][0-8]: 027 027 010 011 027 027 019 020 
-		nodeElementTbl[35][0-8]: 027 027 011 027 027 027 020 027 
-		nodeElementTbl[36][0-8]: 027 009 027 012 027 018 027 021 
-		nodeElementTbl[37][0-8]: 009 010 012 013 018 019 021 022 
-		nodeElementTbl[38][0-8]: 010 011 013 014 019 020 022 023 
-		nodeElementTbl[39][0-8]: 011 027 014 027 020 027 023 027 
-		nodeElementTbl[40][0-8]: 027 012 027 015 027 021 027 024 
-		nodeElementTbl[41][0-8]: 012 013 015 016 021 022 024 025 
-		nodeElementTbl[42][0-8]: 013 014 016 017 022 023 025 026 
-		nodeElementTbl[43][0-8]: 014 027 017 027 023 027 026 027 
-		nodeElementTbl[44][0-8]: 027 015 027 027 027 024 027 027 
-		nodeElementTbl[45][0-8]: 015 016 027 027 024 025 027 027 
-		nodeElementTbl[46][0-8]: 016 017 027 027 025 026 027 027 
-		nodeElementTbl[47][0-8]: 017 027 027 027 026 027 027 027 
-		nodeElementTbl[48][0-8]: 027 027 027 018 027 027 027 027 
-		nodeElementTbl[49][0-8]: 027 027 018 019 027 027 027 027 
-		nodeElementTbl[50][0-8]: 027 027 019 020 027 027 027 027 
-		nodeElementTbl[51][0-8]: 027 027 020 027 027 027 027 027 
-		nodeElementTbl[52][0-8]: 027 018 027 021 027 027 027 027 
-		nodeElementTbl[53][0-8]: 018 019 021 022 027 027 027 027 
-		nodeElementTbl[54][0-8]: 019 020 022 023 027 027 027 027 
-		nodeElementTbl[55][0-8]: 020 027 023 027 027 027 027 027 
-		nodeElementTbl[56][0-8]: 027 021 027 024 027 027 027 027 
-		nodeElementTbl[57][0-8]: 021 022 024 025 027 027 027 027 
-		nodeElementTbl[58][0-8]: 022 023 025 026 027 027 027 027 
-		nodeElementTbl[59][0-8]: 023 027 026 027 027 027 027 027 
-		nodeElementTbl[60][0-8]: 027 024 027 027 027 027 027 027 
-		nodeElementTbl[61][0-8]: 024 025 027 027 027 027 027 027 
-		nodeElementTbl[62][0-8]: 025 026 027 027 027 027 027 027 
-		nodeElementTbl[63][0-8]: 026 027 027 027 027 027 027 027 
-	element (ptr): 0x8061ae8
-	elementLocalCount: 27
-	elementDomainCount: 27
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805fc48
-	elementL2G[0-27]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805fc48
-	elementD2G[0-27]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8061bd0
-	elementG2L[0-27]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8061bd0
-	elementG2D[0-27]:   000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061c48
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061cc0
-	elementNeighbourTbl[0-27]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 003 004 027 027 027 027 009 010 027 012 013 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 000 002 003 004 005 027 027 027 009 010 011 012 013 014 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 001 027 004 005 027 027 027 027 010 011 027 013 014 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 027 027 027 027 027 027 000 001 027 004 027 006 007 027 009 010 027 012 013 027 015 016 
-		elementNeighbourTbl[4][0-26]: 027 027 027 027 027 027 027 027 027 000 001 002 003 005 006 007 008 009 010 011 012 013 014 015 016 017 
-		elementNeighbourTbl[5][0-26]: 027 027 027 027 027 027 027 027 027 001 002 027 004 027 007 008 027 010 011 027 013 014 027 016 017 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 027 027 027 027 027 027 003 004 027 007 027 027 027 027 012 013 027 015 016 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 027 027 027 027 027 027 027 027 003 004 005 006 008 027 027 027 012 013 014 015 016 017 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 027 027 027 027 027 027 027 027 004 005 027 007 027 027 027 027 013 014 027 016 017 027 027 027 027 
-		elementNeighbourTbl[9][0-26]: 027 027 027 027 000 001 027 003 004 027 027 027 027 010 027 012 013 027 027 027 027 018 019 027 021 022 
-		elementNeighbourTbl[10][0-26]: 027 027 027 000 001 002 003 004 005 027 027 027 009 011 012 013 014 027 027 027 018 019 020 021 022 023 
-		elementNeighbourTbl[11][0-26]: 027 027 027 001 002 027 004 005 027 027 027 027 010 027 013 014 027 027 027 027 019 020 027 022 023 027 
-		elementNeighbourTbl[12][0-26]: 027 000 001 027 003 004 027 006 007 027 009 010 027 013 027 015 016 027 018 019 027 021 022 027 024 025 
-		elementNeighbourTbl[13][0-26]: 000 001 002 003 004 005 006 007 008 009 010 011 012 014 015 016 017 018 019 020 021 022 023 024 025 026 
-		elementNeighbourTbl[14][0-26]: 001 002 027 004 005 027 007 008 027 010 011 027 013 027 016 017 027 019 020 027 022 023 027 025 026 027 
-		elementNeighbourTbl[15][0-26]: 027 003 004 027 006 007 027 027 027 027 012 013 027 016 027 027 027 027 021 022 027 024 025 027 027 027 
-		elementNeighbourTbl[16][0-26]: 003 004 005 006 007 008 027 027 027 012 013 014 015 017 027 027 027 021 022 023 024 025 026 027 027 027 
-		elementNeighbourTbl[17][0-26]: 004 005 027 007 008 027 027 027 027 013 014 027 016 027 027 027 027 022 023 027 025 026 027 027 027 027 
-		elementNeighbourTbl[18][0-26]: 027 027 027 027 009 010 027 012 013 027 027 027 027 019 027 021 022 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[19][0-26]: 027 027 027 009 010 011 012 013 014 027 027 027 018 020 021 022 023 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[20][0-26]: 027 027 027 010 011 027 013 014 027 027 027 027 019 027 022 023 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[21][0-26]: 027 009 010 027 012 013 027 015 016 027 018 019 027 022 027 024 025 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[22][0-26]: 009 010 011 012 013 014 015 016 017 018 019 020 021 023 024 025 026 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[23][0-26]: 010 011 027 013 014 027 016 017 027 019 020 027 022 027 025 026 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[24][0-26]: 027 012 013 027 015 016 027 027 027 027 021 022 027 025 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[25][0-26]: 012 013 014 015 016 017 027 027 027 021 022 023 024 026 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[26][0-26]: 013 014 027 016 017 027 027 027 027 022 023 027 025 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x8062830
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80628a8
-	elementNodeTbl[0-27]:
-		elementNodeTbl[0][0-8]: 000 001 005 004 016 017 021 020 
-		elementNodeTbl[1][0-8]: 001 002 006 005 017 018 022 021 
-		elementNodeTbl[2][0-8]: 002 003 007 006 018 019 023 022 
-		elementNodeTbl[3][0-8]: 004 005 009 008 020 021 025 024 
-		elementNodeTbl[4][0-8]: 005 006 010 009 021 022 026 025 
-		elementNodeTbl[5][0-8]: 006 007 011 010 022 023 027 026 
-		elementNodeTbl[6][0-8]: 008 009 013 012 024 025 029 028 
-		elementNodeTbl[7][0-8]: 009 010 014 013 025 026 030 029 
-		elementNodeTbl[8][0-8]: 010 011 015 014 026 027 031 030 
-		elementNodeTbl[9][0-8]: 016 017 021 020 032 033 037 036 
-		elementNodeTbl[10][0-8]: 017 018 022 021 033 034 038 037 
-		elementNodeTbl[11][0-8]: 018 019 023 022 034 035 039 038 
-		elementNodeTbl[12][0-8]: 020 021 025 024 036 037 041 040 
-		elementNodeTbl[13][0-8]: 021 022 026 025 037 038 042 041 
-		elementNodeTbl[14][0-8]: 022 023 027 026 038 039 043 042 
-		elementNodeTbl[15][0-8]: 024 025 029 028 040 041 045 044 
-		elementNodeTbl[16][0-8]: 025 026 030 029 041 042 046 045 
-		elementNodeTbl[17][0-8]: 026 027 031 030 042 043 047 046 
-		elementNodeTbl[18][0-8]: 032 033 037 036 048 049 053 052 
-		elementNodeTbl[19][0-8]: 033 034 038 037 049 050 054 053 
-		elementNodeTbl[20][0-8]: 034 035 039 038 050 051 055 054 
-		elementNodeTbl[21][0-8]: 036 037 041 040 052 053 057 056 
-		elementNodeTbl[22][0-8]: 037 038 042 041 053 054 058 057 
-		elementNodeTbl[23][0-8]: 038 039 043 042 054 055 059 058 
-		elementNodeTbl[24][0-8]: 040 041 045 044 056 057 061 060 
-		elementNodeTbl[25][0-8]: 041 042 046 045 057 058 062 061 
-		elementNodeTbl[26][0-8]: 042 043 047 046 058 059 063 062 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.00,0.00,0.00), (0.33,0.00,0.00), (0.33,0.33,0.00), (0.00,0.33,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), 
-Element 1:
-	(0.33,0.00,0.00), (0.67,0.00,0.00), (0.67,0.33,0.00), (0.33,0.33,0.00), (0.33,0.00,0.33), (0.67,0.00,0.33), (0.67,0.33,0.33), (0.33,0.33,0.33), 
-Element 2:
-	(0.67,0.00,0.00), (1.00,0.00,0.00), (1.00,0.33,0.00), (0.67,0.33,0.00), (0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), 
-Element 3:
-	(0.00,0.33,0.00), (0.33,0.33,0.00), (0.33,0.67,0.00), (0.00,0.67,0.00), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), 
-Element 4:
-	(0.33,0.33,0.00), (0.67,0.33,0.00), (0.67,0.67,0.00), (0.33,0.67,0.00), (0.33,0.33,0.33), (0.67,0.33,0.33), (0.67,0.67,0.33), (0.33,0.67,0.33), 
-Element 5:
-	(0.67,0.33,0.00), (1.00,0.33,0.00), (1.00,0.67,0.00), (0.67,0.67,0.00), (0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), 
-Element 6:
-	(0.00,0.67,0.00), (0.33,0.67,0.00), (0.33,1.00,0.00), (0.00,1.00,0.00), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), 
-Element 7:
-	(0.33,0.67,0.00), (0.67,0.67,0.00), (0.67,1.00,0.00), (0.33,1.00,0.00), (0.33,0.67,0.33), (0.67,0.67,0.33), (0.67,1.00,0.33), (0.33,1.00,0.33), 
-Element 8:
-	(0.67,0.67,0.00), (1.00,0.67,0.00), (1.00,1.00,0.00), (0.67,1.00,0.00), (0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), 
-Element 9:
-	(0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), 
-Element 10:
-	(0.33,0.00,0.33), (0.67,0.00,0.33), (0.67,0.33,0.33), (0.33,0.33,0.33), (0.33,0.00,0.67), (0.67,0.00,0.67), (0.67,0.33,0.67), (0.33,0.33,0.67), 
-Element 11:
-	(0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), (0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), 
-Element 12:
-	(0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), 
-Element 13:
-	(0.33,0.33,0.33), (0.67,0.33,0.33), (0.67,0.67,0.33), (0.33,0.67,0.33), (0.33,0.33,0.67), (0.67,0.33,0.67), (0.67,0.67,0.67), (0.33,0.67,0.67), 
-Element 14:
-	(0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), (0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), 
-Element 15:
-	(0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), 
-Element 16:
-	(0.33,0.67,0.33), (0.67,0.67,0.33), (0.67,1.00,0.33), (0.33,1.00,0.33), (0.33,0.67,0.67), (0.67,0.67,0.67), (0.67,1.00,0.67), (0.33,1.00,0.67), 
-Element 17:
-	(0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), (0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), 
-Element 18:
-	(0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.33,0.33,1.00), (0.00,0.33,1.00), 
-Element 19:
-	(0.33,0.00,0.67), (0.67,0.00,0.67), (0.67,0.33,0.67), (0.33,0.33,0.67), (0.33,0.00,1.00), (0.67,0.00,1.00), (0.67,0.33,1.00), (0.33,0.33,1.00), 
-Element 20:
-	(0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), (0.67,0.00,1.00), (1.00,0.00,1.00), (1.00,0.33,1.00), (0.67,0.33,1.00), 
-Element 21:
-	(0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.33,0.67,1.00), (0.00,0.67,1.00), 
-Element 22:
-	(0.33,0.33,0.67), (0.67,0.33,0.67), (0.67,0.67,0.67), (0.33,0.67,0.67), (0.33,0.33,1.00), (0.67,0.33,1.00), (0.67,0.67,1.00), (0.33,0.67,1.00), 
-Element 23:
-	(0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), (0.67,0.33,1.00), (1.00,0.33,1.00), (1.00,0.67,1.00), (0.67,0.67,1.00), 
-Element 24:
-	(0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.33,1.00,1.00), (0.00,1.00,1.00), 
-Element 25:
-	(0.33,0.67,0.67), (0.67,0.67,0.67), (0.67,1.00,0.67), (0.33,1.00,0.67), (0.33,0.67,1.00), (0.67,0.67,1.00), (0.67,1.00,1.00), (0.33,1.00,1.00), 
-Element 26:
-	(0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), (0.67,0.67,1.00), (1.00,0.67,1.00), (1.00,1.00,1.00), (0.67,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,292 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f370)
-Stg_Component (ptr): 0x805f370
-Stg_Object (ptr): 0x805f370
-	Stg_Class (ptr): 0x805f370
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7ee61dd
-		_print (func ptr): 0xb7ee6a6a
-		_copy (func ptr): 0xb7ee7c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7ee551c
-	_construct (func ptr): 0xb7ee600e
-	_build (func ptr): 0xb7ee8322
-	_initialise (func ptr): 0xb7ee9214
-	_execute (func ptr): 0xb7ee9219
-	_destroy (func ptr): 0xb7ee61d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c560
-	layout (ptr): 0x805f028
-Extension (ptr):0x805f740
-Stg_Object (ptr): 0x805f740
-	Stg_Class (ptr): 0x805f740
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e5e018
-		_print (func ptr): 0xb7e5e066
-		_copy (func ptr): 0xb7e5e200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f7a0
-Stg_ObjectList (ptr):0x805f7a0
-	Stg_Class (ptr): 0x805f7a0
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7e8ff3e
-		_print (func ptr): 0xb7e8ff75
-		_copy (func ptr): 0xb7e90217
-	_append(func ptr): 0xb7e90e7b
-	_prepend(func ptr): 0xb7e90f41
-	_replaceAll(func ptr): 0xb7e91005
-	_replace(func ptr): 0xb7e910be
-	_insertBefore(func ptr): 0xb7e9125b
-	_insertAfter(func ptr): 0xb7e91416
-	_remove(func ptr): 0xb7e915d3
-	_getIndex(func ptr): 0xb7e91679
-	_get(func ptr): 0xb7e91727
-	_allocMoreMemory(func ptr): 0xb7e918fa
-	_insertAtIndex(func ptr): 0xb7e91980
-	_removeByIndex(func ptr): 0xb7e919fe
-	_deleteAllObjects(func ptr): 0xb7e9187b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f810
-Stg_Object (ptr): 0x805f810
-	Stg_Class (ptr): 0x805f810
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e5e018
-		_print (func ptr): 0xb7e5e066
-		_copy (func ptr): 0xb7e5e200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f870
-Stg_ObjectList (ptr):0x805f870
-	Stg_Class (ptr): 0x805f870
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7e8ff3e
-		_print (func ptr): 0xb7e8ff75
-		_copy (func ptr): 0xb7e90217
-	_append(func ptr): 0xb7e90e7b
-	_prepend(func ptr): 0xb7e90f41
-	_replaceAll(func ptr): 0xb7e91005
-	_replace(func ptr): 0xb7e910be
-	_insertBefore(func ptr): 0xb7e9125b
-	_insertAfter(func ptr): 0xb7e91416
-	_remove(func ptr): 0xb7e915d3
-	_getIndex(func ptr): 0xb7e91679
-	_get(func ptr): 0xb7e91727
-	_allocMoreMemory(func ptr): 0xb7e918fa
-	_insertAtIndex(func ptr): 0xb7e91980
-	_removeByIndex(func ptr): 0xb7e919fe
-	_deleteAllObjects(func ptr): 0xb7e9187b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060070
-	nodeLocalCount: 32
-	nodeDomainCount: 32
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060180
-	nodeCoord[0-32]:   (0.00,0.00,0.00), (0.33,0.00,0.00), (0.00,0.33,0.00), (0.33,0.33,0.00), (0.00,0.67,0.00), (0.33,0.67,0.00), (0.00,1.00,0.00), (0.33,1.00,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.00,1.00,0.33), (0.33,1.00,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.00,1.00,0.67), (0.33,1.00,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.00,1.00,1.00), (0.33,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x805fe50
-	nodeL2G[0-32]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x805fe50
-	nodeD2G[0-32]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060490
-	nodeG2L[0-64]:   000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 064 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060490
-	nodeG2D[0-64]:   000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 064 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80605a0
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060630
-	nodeNeighbourTbl[0-32]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060a38
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060ac8
-	nodeElementTbl[0-32]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-	element (ptr): 0x80609c0
-	elementLocalCount: 9
-	elementDomainCount: 9
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805aa18
-	elementL2G[0-9]:   000 003 006 009 012 015 018 021 024 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805aa18
-	elementD2G[0-9]:   000 003 006 009 012 015 018 021 024 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8060f58
-	elementG2L[0-27]:   000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 027 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060f58
-	elementG2D[0-27]:   000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 027 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x805e730
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8060fd0
-	elementNeighbourTbl[0-9]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 003 027 027 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 027 027 027 027 002 027 027 003 027 027 004 027 027 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 027 027 004 027 027 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 027 027 001 027 027 027 027 027 027 027 004 027 027 027 027 027 006 027 027 007 027 
-		elementNeighbourTbl[4][0-26]: 027 000 027 027 001 027 027 002 027 027 003 027 027 027 027 005 027 027 006 027 027 007 027 027 008 027 
-		elementNeighbourTbl[5][0-26]: 027 001 027 027 002 027 027 027 027 027 004 027 027 027 027 027 027 027 007 027 027 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 027 027 004 027 027 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 027 027 004 027 027 005 027 027 006 027 027 027 027 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 027 027 005 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805efd0
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80613a8
-	elementNodeTbl[0-9]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.00,0.00,0.00), (0.33,0.00,0.00), (0.33,0.33,0.00), (0.00,0.33,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), 
-Element 1:
-	(0.00,0.33,0.00), (0.33,0.33,0.00), (0.33,0.67,0.00), (0.00,0.67,0.00), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), 
-Element 2:
-	(0.00,0.67,0.00), (0.33,0.67,0.00), (0.33,1.00,0.00), (0.00,1.00,0.00), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), 
-Element 3:
-	(0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), 
-Element 4:
-	(0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), 
-Element 5:
-	(0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), 
-Element 6:
-	(0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.33,0.33,1.00), (0.00,0.33,1.00), 
-Element 7:
-	(0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.33,0.67,1.00), (0.00,0.67,1.00), 
-Element 8:
-	(0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.33,1.00,1.00), (0.00,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,292 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f388)
-Stg_Component (ptr): 0x805f388
-Stg_Object (ptr): 0x805f388
-	Stg_Class (ptr): 0x805f388
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f881dd
-		_print (func ptr): 0xb7f88a6a
-		_copy (func ptr): 0xb7f89c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f8751c
-	_construct (func ptr): 0xb7f8800e
-	_build (func ptr): 0xb7f8a322
-	_initialise (func ptr): 0xb7f8b214
-	_execute (func ptr): 0xb7f8b219
-	_destroy (func ptr): 0xb7f881d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c568
-	layout (ptr): 0x805f040
-Extension (ptr):0x805f758
-Stg_Object (ptr): 0x805f758
-	Stg_Class (ptr): 0x805f758
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f00018
-		_print (func ptr): 0xb7f00066
-		_copy (func ptr): 0xb7f00200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f7b8
-Stg_ObjectList (ptr):0x805f7b8
-	Stg_Class (ptr): 0x805f7b8
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f31f3e
-		_print (func ptr): 0xb7f31f75
-		_copy (func ptr): 0xb7f32217
-	_append(func ptr): 0xb7f32e7b
-	_prepend(func ptr): 0xb7f32f41
-	_replaceAll(func ptr): 0xb7f33005
-	_replace(func ptr): 0xb7f330be
-	_insertBefore(func ptr): 0xb7f3325b
-	_insertAfter(func ptr): 0xb7f33416
-	_remove(func ptr): 0xb7f335d3
-	_getIndex(func ptr): 0xb7f33679
-	_get(func ptr): 0xb7f33727
-	_allocMoreMemory(func ptr): 0xb7f338fa
-	_insertAtIndex(func ptr): 0xb7f33980
-	_removeByIndex(func ptr): 0xb7f339fe
-	_deleteAllObjects(func ptr): 0xb7f3387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f828
-Stg_Object (ptr): 0x805f828
-	Stg_Class (ptr): 0x805f828
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f00018
-		_print (func ptr): 0xb7f00066
-		_copy (func ptr): 0xb7f00200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f888
-Stg_ObjectList (ptr):0x805f888
-	Stg_Class (ptr): 0x805f888
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f31f3e
-		_print (func ptr): 0xb7f31f75
-		_copy (func ptr): 0xb7f32217
-	_append(func ptr): 0xb7f32e7b
-	_prepend(func ptr): 0xb7f32f41
-	_replaceAll(func ptr): 0xb7f33005
-	_replace(func ptr): 0xb7f330be
-	_insertBefore(func ptr): 0xb7f3325b
-	_insertAfter(func ptr): 0xb7f33416
-	_remove(func ptr): 0xb7f335d3
-	_getIndex(func ptr): 0xb7f33679
-	_get(func ptr): 0xb7f33727
-	_allocMoreMemory(func ptr): 0xb7f338fa
-	_insertAtIndex(func ptr): 0xb7f33980
-	_removeByIndex(func ptr): 0xb7f339fe
-	_deleteAllObjects(func ptr): 0xb7f3387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060058
-	nodeLocalCount: 32
-	nodeDomainCount: 32
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060168
-	nodeCoord[0-32]:   (0.00,0.00,0.00), (0.33,0.00,0.00), (0.00,0.33,0.00), (0.33,0.33,0.00), (0.00,0.67,0.00), (0.33,0.67,0.00), (0.00,1.00,0.00), (0.33,1.00,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.00,1.00,0.33), (0.33,1.00,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.00,1.00,0.67), (0.33,1.00,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.00,1.00,1.00), (0.33,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x805fe38
-	nodeL2G[0-32]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x805fe38
-	nodeD2G[0-32]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060478
-	nodeG2L[0-64]:   000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 064 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060478
-	nodeG2D[0-64]:   000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 064 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060588
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060618
-	nodeNeighbourTbl[0-32]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060a20
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060ab0
-	nodeElementTbl[0-32]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-	element (ptr): 0x80609a8
-	elementLocalCount: 9
-	elementDomainCount: 9
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805aa20
-	elementL2G[0-9]:   000 003 006 009 012 015 018 021 024 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805aa20
-	elementD2G[0-9]:   000 003 006 009 012 015 018 021 024 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8060f40
-	elementG2L[0-27]:   000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 027 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060f40
-	elementG2D[0-27]:   000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 027 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x805efe8
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8060fb8
-	elementNeighbourTbl[0-9]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 003 027 027 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 027 027 027 027 002 027 027 003 027 027 004 027 027 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 027 027 004 027 027 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 027 027 001 027 027 027 027 027 027 027 004 027 027 027 027 027 006 027 027 007 027 
-		elementNeighbourTbl[4][0-26]: 027 000 027 027 001 027 027 002 027 027 003 027 027 027 027 005 027 027 006 027 027 007 027 027 008 027 
-		elementNeighbourTbl[5][0-26]: 027 001 027 027 002 027 027 027 027 027 004 027 027 027 027 027 027 027 007 027 027 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 027 027 004 027 027 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 027 027 004 027 027 005 027 027 006 027 027 027 027 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 027 027 005 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805d008
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8061390
-	elementNodeTbl[0-9]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.00,0.00,0.00), (0.33,0.00,0.00), (0.33,0.33,0.00), (0.00,0.33,0.00), (0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), 
-Element 1:
-	(0.00,0.33,0.00), (0.33,0.33,0.00), (0.33,0.67,0.00), (0.00,0.67,0.00), (0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), 
-Element 2:
-	(0.00,0.67,0.00), (0.33,0.67,0.00), (0.33,1.00,0.00), (0.00,1.00,0.00), (0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), 
-Element 3:
-	(0.00,0.00,0.33), (0.33,0.00,0.33), (0.33,0.33,0.33), (0.00,0.33,0.33), (0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), 
-Element 4:
-	(0.00,0.33,0.33), (0.33,0.33,0.33), (0.33,0.67,0.33), (0.00,0.67,0.33), (0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), 
-Element 5:
-	(0.00,0.67,0.33), (0.33,0.67,0.33), (0.33,1.00,0.33), (0.00,1.00,0.33), (0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), 
-Element 6:
-	(0.00,0.00,0.67), (0.33,0.00,0.67), (0.33,0.33,0.67), (0.00,0.33,0.67), (0.00,0.00,1.00), (0.33,0.00,1.00), (0.33,0.33,1.00), (0.00,0.33,1.00), 
-Element 7:
-	(0.00,0.33,0.67), (0.33,0.33,0.67), (0.33,0.67,0.67), (0.00,0.67,0.67), (0.00,0.33,1.00), (0.33,0.33,1.00), (0.33,0.67,1.00), (0.00,0.67,1.00), 
-Element 8:
-	(0.00,0.67,0.67), (0.33,0.67,0.67), (0.33,1.00,0.67), (0.00,1.00,0.67), (0.00,0.67,1.00), (0.33,0.67,1.00), (0.33,1.00,1.00), (0.00,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testMesh " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.0of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,292 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f350)
-Stg_Component (ptr): 0x805f350
-Stg_Object (ptr): 0x805f350
-	Stg_Class (ptr): 0x805f350
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7eee1dd
-		_print (func ptr): 0xb7eeea6a
-		_copy (func ptr): 0xb7eefc4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eed51c
-	_construct (func ptr): 0xb7eee00e
-	_build (func ptr): 0xb7ef0322
-	_initialise (func ptr): 0xb7ef1214
-	_execute (func ptr): 0xb7ef1219
-	_destroy (func ptr): 0xb7eee1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c540
-	layout (ptr): 0x805f008
-Extension (ptr):0x805f720
-Stg_Object (ptr): 0x805f720
-	Stg_Class (ptr): 0x805f720
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e66018
-		_print (func ptr): 0xb7e66066
-		_copy (func ptr): 0xb7e66200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f780
-Stg_ObjectList (ptr):0x805f780
-	Stg_Class (ptr): 0x805f780
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7e97f3e
-		_print (func ptr): 0xb7e97f75
-		_copy (func ptr): 0xb7e98217
-	_append(func ptr): 0xb7e98e7b
-	_prepend(func ptr): 0xb7e98f41
-	_replaceAll(func ptr): 0xb7e99005
-	_replace(func ptr): 0xb7e990be
-	_insertBefore(func ptr): 0xb7e9925b
-	_insertAfter(func ptr): 0xb7e99416
-	_remove(func ptr): 0xb7e995d3
-	_getIndex(func ptr): 0xb7e99679
-	_get(func ptr): 0xb7e99727
-	_allocMoreMemory(func ptr): 0xb7e998fa
-	_insertAtIndex(func ptr): 0xb7e99980
-	_removeByIndex(func ptr): 0xb7e999fe
-	_deleteAllObjects(func ptr): 0xb7e9987b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f7f0
-Stg_Object (ptr): 0x805f7f0
-	Stg_Class (ptr): 0x805f7f0
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e66018
-		_print (func ptr): 0xb7e66066
-		_copy (func ptr): 0xb7e66200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f850
-Stg_ObjectList (ptr):0x805f850
-	Stg_Class (ptr): 0x805f850
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7e97f3e
-		_print (func ptr): 0xb7e97f75
-		_copy (func ptr): 0xb7e98217
-	_append(func ptr): 0xb7e98e7b
-	_prepend(func ptr): 0xb7e98f41
-	_replaceAll(func ptr): 0xb7e99005
-	_replace(func ptr): 0xb7e990be
-	_insertBefore(func ptr): 0xb7e9925b
-	_insertAfter(func ptr): 0xb7e99416
-	_remove(func ptr): 0xb7e995d3
-	_getIndex(func ptr): 0xb7e99679
-	_get(func ptr): 0xb7e99727
-	_allocMoreMemory(func ptr): 0xb7e998fa
-	_insertAtIndex(func ptr): 0xb7e99980
-	_removeByIndex(func ptr): 0xb7e999fe
-	_deleteAllObjects(func ptr): 0xb7e9987b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060050
-	nodeLocalCount: 32
-	nodeDomainCount: 32
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060160
-	nodeCoord[0-32]:   (0.67,0.00,0.00), (1.00,0.00,0.00), (0.67,0.33,0.00), (1.00,0.33,0.00), (0.67,0.67,0.00), (1.00,0.67,0.00), (0.67,1.00,0.00), (1.00,1.00,0.00), (0.67,0.00,0.33), (1.00,0.00,0.33), (0.67,0.33,0.33), (1.00,0.33,0.33), (0.67,0.67,0.33), (1.00,0.67,0.33), (0.67,1.00,0.33), (1.00,1.00,0.33), (0.67,0.00,0.67), (1.00,0.00,0.67), (0.67,0.33,0.67), (1.00,0.33,0.67), (0.67,0.67,0.67), (1.00,0.67,0.67), (0.67,1.00,0.67), (1.00,1.00,0.67), (0.67,0.00,1.00), (1.00,0.00,1.00), (0.67,0.33,1.00), (1.00,0.33,1.00), (0.67,0.67,1.00), (1.00,0.67,1.00), (0.67,1.00,1.00), (1.00,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x805fe30
-	nodeL2G[0-32]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x805fe30
-	nodeD2G[0-32]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060470
-	nodeG2L[0-64]:   064 064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060470
-	nodeG2D[0-64]:   064 064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060580
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060610
-	nodeNeighbourTbl[0-32]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060a18
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060aa8
-	nodeElementTbl[0-32]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-	element (ptr): 0x80609a0
-	elementLocalCount: 9
-	elementDomainCount: 9
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805a9f8
-	elementL2G[0-9]:   002 005 008 011 014 017 020 023 026 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805a9f8
-	elementD2G[0-9]:   002 005 008 011 014 017 020 023 026 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8060f38
-	elementG2L[0-27]:   027 027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060f38
-	elementG2D[0-27]:   027 027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x805e710
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8060fb0
-	elementNeighbourTbl[0-9]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 003 027 027 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 027 027 027 027 002 027 027 003 027 027 004 027 027 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 027 027 004 027 027 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 027 027 001 027 027 027 027 027 027 027 004 027 027 027 027 027 006 027 027 007 027 
-		elementNeighbourTbl[4][0-26]: 027 000 027 027 001 027 027 002 027 027 003 027 027 027 027 005 027 027 006 027 027 007 027 027 008 027 
-		elementNeighbourTbl[5][0-26]: 027 001 027 027 002 027 027 027 027 027 004 027 027 027 027 027 027 027 007 027 027 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 027 027 004 027 027 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 027 027 004 027 027 005 027 027 006 027 027 027 027 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 027 027 005 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805efb0
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8061388
-	elementNodeTbl[0-9]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.67,0.00,0.00), (1.00,0.00,0.00), (1.00,0.33,0.00), (0.67,0.33,0.00), (0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), 
-Element 1:
-	(0.67,0.33,0.00), (1.00,0.33,0.00), (1.00,0.67,0.00), (0.67,0.67,0.00), (0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), 
-Element 2:
-	(0.67,0.67,0.00), (1.00,0.67,0.00), (1.00,1.00,0.00), (0.67,1.00,0.00), (0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), 
-Element 3:
-	(0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), (0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), 
-Element 4:
-	(0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), (0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), 
-Element 5:
-	(0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), (0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), 
-Element 6:
-	(0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), (0.67,0.00,1.00), (1.00,0.00,1.00), (1.00,0.33,1.00), (0.67,0.33,1.00), 
-Element 7:
-	(0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), (0.67,0.33,1.00), (1.00,0.33,1.00), (1.00,0.67,1.00), (0.67,0.67,1.00), 
-Element 8:
-	(0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), (0.67,0.67,1.00), (1.00,0.67,1.00), (1.00,1.00,1.00), (0.67,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,292 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f3f8)
-Stg_Component (ptr): 0x805f3f8
-Stg_Object (ptr): 0x805f3f8
-	Stg_Class (ptr): 0x805f3f8
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7fdb1dd
-		_print (func ptr): 0xb7fdba6a
-		_copy (func ptr): 0xb7fdcc4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7fda51c
-	_construct (func ptr): 0xb7fdb00e
-	_build (func ptr): 0xb7fdd322
-	_initialise (func ptr): 0xb7fde214
-	_execute (func ptr): 0xb7fde219
-	_destroy (func ptr): 0xb7fdb1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c540
-	layout (ptr): 0x805f0b0
-Extension (ptr):0x805f7c8
-Stg_Object (ptr): 0x805f7c8
-	Stg_Class (ptr): 0x805f7c8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f53018
-		_print (func ptr): 0xb7f53066
-		_copy (func ptr): 0xb7f53200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f828
-Stg_ObjectList (ptr):0x805f828
-	Stg_Class (ptr): 0x805f828
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f84f3e
-		_print (func ptr): 0xb7f84f75
-		_copy (func ptr): 0xb7f85217
-	_append(func ptr): 0xb7f85e7b
-	_prepend(func ptr): 0xb7f85f41
-	_replaceAll(func ptr): 0xb7f86005
-	_replace(func ptr): 0xb7f860be
-	_insertBefore(func ptr): 0xb7f8625b
-	_insertAfter(func ptr): 0xb7f86416
-	_remove(func ptr): 0xb7f865d3
-	_getIndex(func ptr): 0xb7f86679
-	_get(func ptr): 0xb7f86727
-	_allocMoreMemory(func ptr): 0xb7f868fa
-	_insertAtIndex(func ptr): 0xb7f86980
-	_removeByIndex(func ptr): 0xb7f869fe
-	_deleteAllObjects(func ptr): 0xb7f8687b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f898
-Stg_Object (ptr): 0x805f898
-	Stg_Class (ptr): 0x805f898
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f53018
-		_print (func ptr): 0xb7f53066
-		_copy (func ptr): 0xb7f53200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f8f8
-Stg_ObjectList (ptr):0x805f8f8
-	Stg_Class (ptr): 0x805f8f8
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f84f3e
-		_print (func ptr): 0xb7f84f75
-		_copy (func ptr): 0xb7f85217
-	_append(func ptr): 0xb7f85e7b
-	_prepend(func ptr): 0xb7f85f41
-	_replaceAll(func ptr): 0xb7f86005
-	_replace(func ptr): 0xb7f860be
-	_insertBefore(func ptr): 0xb7f8625b
-	_insertAfter(func ptr): 0xb7f86416
-	_remove(func ptr): 0xb7f865d3
-	_getIndex(func ptr): 0xb7f86679
-	_get(func ptr): 0xb7f86727
-	_allocMoreMemory(func ptr): 0xb7f868fa
-	_insertAtIndex(func ptr): 0xb7f86980
-	_removeByIndex(func ptr): 0xb7f869fe
-	_deleteAllObjects(func ptr): 0xb7f8687b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x80600c8
-	nodeLocalCount: 32
-	nodeDomainCount: 32
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x80601d8
-	nodeCoord[0-32]:   (0.33,0.00,0.00), (0.67,0.00,0.00), (0.33,0.33,0.00), (0.67,0.33,0.00), (0.33,0.67,0.00), (0.67,0.67,0.00), (0.33,1.00,0.00), (0.67,1.00,0.00), (0.33,0.00,0.33), (0.67,0.00,0.33), (0.33,0.33,0.33), (0.67,0.33,0.33), (0.33,0.67,0.33), (0.67,0.67,0.33), (0.33,1.00,0.33), (0.67,1.00,0.33), (0.33,0.00,0.67), (0.67,0.00,0.67), (0.33,0.33,0.67), (0.67,0.33,0.67), (0.33,0.67,0.67), (0.67,0.67,0.67), (0.33,1.00,0.67), (0.67,1.00,0.67), (0.33,0.00,1.00), (0.67,0.00,1.00), (0.33,0.33,1.00), (0.67,0.33,1.00), (0.33,0.67,1.00), (0.67,0.67,1.00), (0.33,1.00,1.00), (0.67,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x805fea8
-	nodeL2G[0-32]:   001 002 005 006 009 010 013 014 017 018 021 022 025 026 029 030 033 034 037 038 041 042 045 046 049 050 053 054 057 058 061 062 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x805fea8
-	nodeD2G[0-32]:   001 002 005 006 009 010 013 014 017 018 021 022 025 026 029 030 033 034 037 038 041 042 045 046 049 050 053 054 057 058 061 062 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x80604e8
-	nodeG2L[0-64]:   064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80604e8
-	nodeG2D[0-64]:   064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80605f8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060688
-	nodeNeighbourTbl[0-32]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060a90
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060b20
-	nodeElementTbl[0-32]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-	element (ptr): 0x8060a18
-	elementLocalCount: 9
-	elementDomainCount: 9
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805a9f8
-	elementL2G[0-9]:   001 004 007 010 013 016 019 022 025 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805a9f8
-	elementD2G[0-9]:   001 004 007 010 013 016 019 022 025 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8060fb0
-	elementG2L[0-27]:   027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060fb0
-	elementG2D[0-27]:   027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x805f058
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061028
-	elementNeighbourTbl[0-9]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 003 027 027 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 027 027 027 027 002 027 027 003 027 027 004 027 027 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 027 027 004 027 027 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 027 027 001 027 027 027 027 027 027 027 004 027 027 027 027 027 006 027 027 007 027 
-		elementNeighbourTbl[4][0-26]: 027 000 027 027 001 027 027 002 027 027 003 027 027 027 027 005 027 027 006 027 027 007 027 027 008 027 
-		elementNeighbourTbl[5][0-26]: 027 001 027 027 002 027 027 027 027 027 004 027 027 027 027 027 027 027 007 027 027 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 027 027 004 027 027 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 027 027 004 027 027 005 027 027 006 027 027 027 027 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 027 027 005 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805cfe0
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8061400
-	elementNodeTbl[0-9]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.33,0.00,0.00), (0.67,0.00,0.00), (0.67,0.33,0.00), (0.33,0.33,0.00), (0.33,0.00,0.33), (0.67,0.00,0.33), (0.67,0.33,0.33), (0.33,0.33,0.33), 
-Element 1:
-	(0.33,0.33,0.00), (0.67,0.33,0.00), (0.67,0.67,0.00), (0.33,0.67,0.00), (0.33,0.33,0.33), (0.67,0.33,0.33), (0.67,0.67,0.33), (0.33,0.67,0.33), 
-Element 2:
-	(0.33,0.67,0.00), (0.67,0.67,0.00), (0.67,1.00,0.00), (0.33,1.00,0.00), (0.33,0.67,0.33), (0.67,0.67,0.33), (0.67,1.00,0.33), (0.33,1.00,0.33), 
-Element 3:
-	(0.33,0.00,0.33), (0.67,0.00,0.33), (0.67,0.33,0.33), (0.33,0.33,0.33), (0.33,0.00,0.67), (0.67,0.00,0.67), (0.67,0.33,0.67), (0.33,0.33,0.67), 
-Element 4:
-	(0.33,0.33,0.33), (0.67,0.33,0.33), (0.67,0.67,0.33), (0.33,0.67,0.33), (0.33,0.33,0.67), (0.67,0.33,0.67), (0.67,0.67,0.67), (0.33,0.67,0.67), 
-Element 5:
-	(0.33,0.67,0.33), (0.67,0.67,0.33), (0.67,1.00,0.33), (0.33,1.00,0.33), (0.33,0.67,0.67), (0.67,0.67,0.67), (0.67,1.00,0.67), (0.33,1.00,0.67), 
-Element 6:
-	(0.33,0.00,0.67), (0.67,0.00,0.67), (0.67,0.33,0.67), (0.33,0.33,0.67), (0.33,0.00,1.00), (0.67,0.00,1.00), (0.67,0.33,1.00), (0.33,0.33,1.00), 
-Element 7:
-	(0.33,0.33,0.67), (0.67,0.33,0.67), (0.67,0.67,0.67), (0.33,0.67,0.67), (0.33,0.33,1.00), (0.67,0.33,1.00), (0.67,0.67,1.00), (0.33,0.67,1.00), 
-Element 8:
-	(0.33,0.67,0.67), (0.67,0.67,0.67), (0.67,1.00,0.67), (0.33,1.00,0.67), (0.33,0.67,1.00), (0.67,0.67,1.00), (0.67,1.00,1.00), (0.33,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testMesh " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.1of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,292 +1,4 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f360)
-Stg_Component (ptr): 0x805f360
-Stg_Object (ptr): 0x805f360
-	Stg_Class (ptr): 0x805f360
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f381dd
-		_print (func ptr): 0xb7f38a6a
-		_copy (func ptr): 0xb7f39c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f3751c
-	_construct (func ptr): 0xb7f3800e
-	_build (func ptr): 0xb7f3a322
-	_initialise (func ptr): 0xb7f3b214
-	_execute (func ptr): 0xb7f3b219
-	_destroy (func ptr): 0xb7f381d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c540
-	layout (ptr): 0x805f018
-Extension (ptr):0x805f730
-Stg_Object (ptr): 0x805f730
-	Stg_Class (ptr): 0x805f730
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7eb0018
-		_print (func ptr): 0xb7eb0066
-		_copy (func ptr): 0xb7eb0200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f790
-Stg_ObjectList (ptr):0x805f790
-	Stg_Class (ptr): 0x805f790
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ee1f3e
-		_print (func ptr): 0xb7ee1f75
-		_copy (func ptr): 0xb7ee2217
-	_append(func ptr): 0xb7ee2e7b
-	_prepend(func ptr): 0xb7ee2f41
-	_replaceAll(func ptr): 0xb7ee3005
-	_replace(func ptr): 0xb7ee30be
-	_insertBefore(func ptr): 0xb7ee325b
-	_insertAfter(func ptr): 0xb7ee3416
-	_remove(func ptr): 0xb7ee35d3
-	_getIndex(func ptr): 0xb7ee3679
-	_get(func ptr): 0xb7ee3727
-	_allocMoreMemory(func ptr): 0xb7ee38fa
-	_insertAtIndex(func ptr): 0xb7ee3980
-	_removeByIndex(func ptr): 0xb7ee39fe
-	_deleteAllObjects(func ptr): 0xb7ee387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f800
-Stg_Object (ptr): 0x805f800
-	Stg_Class (ptr): 0x805f800
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7eb0018
-		_print (func ptr): 0xb7eb0066
-		_copy (func ptr): 0xb7eb0200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f860
-Stg_ObjectList (ptr):0x805f860
-	Stg_Class (ptr): 0x805f860
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ee1f3e
-		_print (func ptr): 0xb7ee1f75
-		_copy (func ptr): 0xb7ee2217
-	_append(func ptr): 0xb7ee2e7b
-	_prepend(func ptr): 0xb7ee2f41
-	_replaceAll(func ptr): 0xb7ee3005
-	_replace(func ptr): 0xb7ee30be
-	_insertBefore(func ptr): 0xb7ee325b
-	_insertAfter(func ptr): 0xb7ee3416
-	_remove(func ptr): 0xb7ee35d3
-	_getIndex(func ptr): 0xb7ee3679
-	_get(func ptr): 0xb7ee3727
-	_allocMoreMemory(func ptr): 0xb7ee38fa
-	_insertAtIndex(func ptr): 0xb7ee3980
-	_removeByIndex(func ptr): 0xb7ee39fe
-	_deleteAllObjects(func ptr): 0xb7ee387b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060030
-	nodeLocalCount: 32
-	nodeDomainCount: 32
-	nodeShadowCount: 0
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060140
-	nodeCoord[0-32]:   (0.67,0.00,0.00), (1.00,0.00,0.00), (0.67,0.33,0.00), (1.00,0.33,0.00), (0.67,0.67,0.00), (1.00,0.67,0.00), (0.67,1.00,0.00), (1.00,1.00,0.00), (0.67,0.00,0.33), (1.00,0.00,0.33), (0.67,0.33,0.33), (1.00,0.33,0.33), (0.67,0.67,0.33), (1.00,0.67,0.33), (0.67,1.00,0.33), (1.00,1.00,0.33), (0.67,0.00,0.67), (1.00,0.00,0.67), (0.67,0.33,0.67), (1.00,0.33,0.67), (0.67,0.67,0.67), (1.00,0.67,0.67), (0.67,1.00,0.67), (1.00,1.00,0.67), (0.67,0.00,1.00), (1.00,0.00,1.00), (0.67,0.33,1.00), (1.00,0.33,1.00), (0.67,0.67,1.00), (1.00,0.67,1.00), (0.67,1.00,1.00), (1.00,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x805fe10
-	nodeL2G[0-32]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x805fe10
-	nodeD2G[0-32]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060450
-	nodeG2L[0-64]:   064 064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060450
-	nodeG2D[0-64]:   064 064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060560
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x80605f0
-	nodeNeighbourTbl[0-32]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x80609f8
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060a88
-	nodeElementTbl[0-32]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-	element (ptr): 0x8060980
-	elementLocalCount: 9
-	elementDomainCount: 9
-	elementShadowCount: 0
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805a9f8
-	elementL2G[0-9]:   002 005 008 011 014 017 020 023 026 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805a9f8
-	elementD2G[0-9]:   002 005 008 011 014 017 020 023 026 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8060f18
-	elementG2L[0-27]:   027 027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060f18
-	elementG2D[0-27]:   027 027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x805efc0
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8060f90
-	elementNeighbourTbl[0-9]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 003 027 027 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 027 027 027 027 002 027 027 003 027 027 004 027 027 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 027 027 027 027 027 027 027 004 027 027 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 027 027 001 027 027 027 027 027 027 027 004 027 027 027 027 027 006 027 027 007 027 
-		elementNeighbourTbl[4][0-26]: 027 000 027 027 001 027 027 002 027 027 003 027 027 027 027 005 027 027 006 027 027 007 027 027 008 027 
-		elementNeighbourTbl[5][0-26]: 027 001 027 027 002 027 027 027 027 027 004 027 027 027 027 027 027 027 007 027 027 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 027 027 004 027 027 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 027 027 004 027 027 005 027 027 006 027 027 027 027 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 027 027 005 027 027 027 027 027 007 027 027 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805cfe0
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8061368
-	elementNodeTbl[0-9]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-	procNbrCnt: 0
-	procNbrTbl (ptr): (nil)
-	elementShadowInfo->procShadowedCnt (ptr): (nil)
-	elementShadowInfo->procShadowedTbl (ptr): (nil)
-	elementShadowInfo->procShadowCnt (ptr): (nil)
-	elementShadowInfo->procShadowTbl (ptr): (nil)
-	nodeShadowInfo->procShadowedCnt (ptr): (nil)
-	nodeShadowInfo->procShadowedTbl (ptr): (nil)
-	nodeShadowInfo->procShadowCnt (ptr): (nil)
-	nodeShadowInfo->procShadowTbl (ptr): (nil)
-Test that the getNodeCoordPtrsOfElement() function works
-Element 0:
-	(0.67,0.00,0.00), (1.00,0.00,0.00), (1.00,0.33,0.00), (0.67,0.33,0.00), (0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), 
-Element 1:
-	(0.67,0.33,0.00), (1.00,0.33,0.00), (1.00,0.67,0.00), (0.67,0.67,0.00), (0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), 
-Element 2:
-	(0.67,0.67,0.00), (1.00,0.67,0.00), (1.00,1.00,0.00), (0.67,1.00,0.00), (0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), 
-Element 3:
-	(0.67,0.00,0.33), (1.00,0.00,0.33), (1.00,0.33,0.33), (0.67,0.33,0.33), (0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), 
-Element 4:
-	(0.67,0.33,0.33), (1.00,0.33,0.33), (1.00,0.67,0.33), (0.67,0.67,0.33), (0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), 
-Element 5:
-	(0.67,0.67,0.33), (1.00,0.67,0.33), (1.00,1.00,0.33), (0.67,1.00,0.33), (0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), 
-Element 6:
-	(0.67,0.00,0.67), (1.00,0.00,0.67), (1.00,0.33,0.67), (0.67,0.33,0.67), (0.67,0.00,1.00), (1.00,0.00,1.00), (1.00,0.33,1.00), (0.67,0.33,1.00), 
-Element 7:
-	(0.67,0.33,0.67), (1.00,0.33,0.67), (1.00,0.67,0.67), (0.67,0.67,0.67), (0.67,0.33,1.00), (1.00,0.33,1.00), (1.00,0.67,1.00), (0.67,0.67,1.00), 
-Element 8:
-	(0.67,0.67,0.67), (1.00,0.67,0.67), (1.00,1.00,0.67), (0.67,1.00,0.67), (0.67,0.67,1.00), (1.00,0.67,1.00), (1.00,1.00,1.00), (0.67,1.00,1.00), 
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testMesh " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.2of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,4 @@
+   Running test 'test nearest vertex'... passed
+   Running test 'test element search (1D)'... passed
+   Running test 'test element search (2D)'... passed
+   Running test 'test element search (3D)'... passed

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+TEST_SCRIPT=./VMake/executableTester.sh
+until test -r ${TEST_SCRIPT} ; do
+        TEST_SCRIPT=../${TEST_SCRIPT}
+done
+. ${TEST_SCRIPT}
+
+runAndHandleSystemTest "testMesh " "$0" "$@"


Property changes on: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.3of4.sh
___________________________________________________________________
Name: svn:executable
   + *

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMesh.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,126 +28,376 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <mpi.h>
+#include <mpi.h>
+
 #include "Base/Base.h"
-
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
 #include "Discretisation/Mesh/Mesh.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
 
-struct _Node
-{
-	double temp;
-};
+Bool testNearVert( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		sizes[3];
+	double			minCrd[3];
+	double			maxCrd[3];
 
-struct _Element
-{
-	double temp;
-};
+	sizes[0] = sizes[1] = sizes[2] = nProcs;
+	minCrd[0] = minCrd[1] = minCrd[2] = 0.0;
+	maxCrd[0] = maxCrd[1] = maxCrd[2] = (double)nProcs;
 
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, 3, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
 
-int main(int argc, char *argv[])
-{
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	MeshDecomp*		decomp;
-	MeshLayout*		ml;
+	mesh = Mesh_New( "" );
+	Mesh_SetGenerator( mesh, gen );
+	Build( mesh, NULL, False );
+
+	if( rank == watch ) {
+		unsigned	e_i;
+
+		for( e_i = 0; e_i < Mesh_GetDomainSize( mesh, MT_VOLUME ); e_i++ ) {
+			unsigned	nInc, *inc;
+			unsigned	inc_i;
+
+			Mesh_GetIncidence( mesh, MT_VOLUME, e_i, MT_VERTEX, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				double*	vert;
+
+				vert = Mesh_GetVertex( mesh, inc[inc_i] );
+				if( Mesh_NearestVertex( mesh, vert ) != inc[inc_i] ) {
+					result = False;
+					goto done;
+				}
+			}
+		}
+	}
+
+done:
+	FreeObject( gen );
+	FreeObject( mesh );
+
+	return result;
+}
+
+Bool testElSearch1D( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
+	CartesianGenerator*	gen;
 	Mesh*			mesh;
-	Stream*			stream;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
+	unsigned		sizes[1];
+	double			minCrd[1];
+	double			maxCrd[1];
 
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
+	sizes[0] = nProcs;
+	minCrd[0] = 0.0;
+	maxCrd[0] = (double)nProcs;
 
-	stream = Journal_Register (Info_Type, "myStream");
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 0 ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	ml = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
-	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", ml, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
-	
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	
-	if (rank == procToWatch)
-	{
-		Element_DomainIndex	element_dI = 0;
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, 1, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
 
-		Print(mesh, stream);
-		
-		Journal_Printf( stream, "Test that the getNodeCoordPtrsOfElement() function works\n" );
-		for ( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ ) {
-			Journal_Printf( stream, "Element %u:\n\t", element_dI );
-			Mesh_PrintNodeCoordsOfElement( mesh, element_dI, stream );
+	mesh = Mesh_New( "" );
+	Mesh_SetGenerator( mesh, gen );
+	Build( mesh, NULL, False );
+
+	if( rank == watch ) {
+		unsigned	e_i;
+
+		for( e_i = 0; e_i < Mesh_GetDomainSize( mesh, MT_EDGE ); e_i++ ) {
+			unsigned	nInc, *inc;
+			double		point[1];
+			unsigned	elDim, elInd;
+			unsigned	inc_i;
+
+			Mesh_GetIncidence( mesh, MT_EDGE, e_i, MT_VERTEX, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				double*	vert;
+
+				vert = Mesh_GetVertex( mesh, inc[inc_i] );
+				if( !Mesh_Search( mesh, vert, &elDim, &elInd ) || 
+				    elDim != MT_VERTEX || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_EDGE, e_i, MT_VERTEX, &nInc, &inc );
+			point[0] = 0.0;
+			for( inc_i = 0; inc_i < nInc; inc_i++ )
+				point[0] += Mesh_GetVertex( mesh, inc[inc_i] )[0];
+			point[0] /= (double)nInc;
+			if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+			    elDim != MT_EDGE || 
+			    elInd != e_i )
+			{
+				result = False;
+				goto done;
+			}
 		}
 	}
-	
-	Stg_Class_Delete(mesh);
-	Stg_Class_Delete(ml);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete(dictionary);
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
+
+done:
+	FreeObject( gen );
+	FreeObject( mesh );
+
+	return result;
+}
+
+Bool testElSearch2D( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		sizes[2];
+	double			minCrd[2];
+	double			maxCrd[2];
+
+	sizes[0] = sizes[1] = nProcs;
+	minCrd[0] = minCrd[1] = 0.0;
+	maxCrd[0] = maxCrd[1] = (double)nProcs;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, 2, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetGenerator( mesh, gen );
+	Build( mesh, NULL, False );
+
+	if( rank == watch ) {
+		unsigned	e_i;
+
+		for( e_i = 0; e_i < Mesh_GetDomainSize( mesh, MT_FACE ); e_i++ ) {
+			unsigned	nInc, *inc;
+			double		point[2];
+			unsigned	elDim, elInd;
+			unsigned	inc_i;
+
+			Mesh_GetIncidence( mesh, MT_FACE, e_i, MT_VERTEX, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				double*	vert;
+
+				vert = Mesh_GetVertex( mesh, inc[inc_i] );
+				if( !Mesh_Search( mesh, vert, &elDim, &elInd ) || 
+				    elDim != MT_VERTEX || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_FACE, e_i, MT_EDGE, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				unsigned	nEdgeInc, *edgeInc;
+				unsigned	inc_j;
+
+				Mesh_GetIncidence( mesh, MT_EDGE, inc[inc_i], MT_VERTEX, &nEdgeInc, &edgeInc );
+				point[0] = point[1] = 0.0;
+				for( inc_j = 0; inc_j < nEdgeInc; inc_j++ ) {
+					point[0] += Mesh_GetVertex( mesh, edgeInc[inc_j] )[0];
+					point[1] += Mesh_GetVertex( mesh, edgeInc[inc_j] )[1];
+				}
+				point[0] /= (double)nEdgeInc;
+				point[1] /= (double)nEdgeInc;
+				if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+				    elDim != MT_EDGE || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_FACE, e_i, MT_VERTEX, &nInc, &inc );
+			point[0] = point[1] = 0.0;
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				point[0] += Mesh_GetVertex( mesh, inc[inc_i] )[0];
+				point[1] += Mesh_GetVertex( mesh, inc[inc_i] )[1];
+			}
+			point[0] /= (double)nInc;
+			point[1] /= (double)nInc;
+			if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+			    elDim != MT_FACE || 
+			    elInd != e_i )
+			{
+				result = False;
+				goto done;
+			}
+		}
+	}
+
+done:
+	FreeObject( gen );
+	FreeObject( mesh );
+
+	return result;
+}
+
+Bool testElSearch3D( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool			result = True;
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		sizes[3];
+	double			minCrd[3];
+	double			maxCrd[3];
+
+	sizes[0] = sizes[1] = sizes[2] = nProcs;
+	minCrd[0] = minCrd[1] = minCrd[2] = 0.0;
+	maxCrd[0] = maxCrd[1] = maxCrd[2] = (double)nProcs;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, 3, sizes, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrd, maxCrd );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetGenerator( mesh, gen );
+	Build( mesh, NULL, False );
+
+	if( rank == watch ) {
+		unsigned	e_i;
+
+		for( e_i = 0; e_i < Mesh_GetDomainSize( mesh, MT_VOLUME ); e_i++ ) {
+			unsigned	nInc, *inc;
+			double		point[3];
+			unsigned	elDim, elInd;
+			unsigned	inc_i;
+
+			Mesh_GetIncidence( mesh, MT_VOLUME, e_i, MT_VERTEX, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				double*	vert;
+
+				vert = Mesh_GetVertex( mesh, inc[inc_i] );
+				if( !Mesh_Search( mesh, vert, &elDim, &elInd ) || 
+				    elDim != MT_VERTEX || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_VOLUME, e_i, MT_EDGE, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				unsigned	nEdgeInc, *edgeInc;
+				unsigned	inc_j;
+
+				Mesh_GetIncidence( mesh, MT_EDGE, inc[inc_i], MT_VERTEX, &nEdgeInc, &edgeInc );
+				point[0] = point[1] = point[2] = 0.0;
+				for( inc_j = 0; inc_j < nEdgeInc; inc_j++ ) {
+					point[0] += Mesh_GetVertex( mesh, edgeInc[inc_j] )[0];
+					point[1] += Mesh_GetVertex( mesh, edgeInc[inc_j] )[1];
+					point[2] += Mesh_GetVertex( mesh, edgeInc[inc_j] )[2];
+				}
+				point[0] /= (double)nEdgeInc;
+				point[1] /= (double)nEdgeInc;
+				point[2] /= (double)nEdgeInc;
+				if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+				    elDim != MT_EDGE || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_VOLUME, e_i, MT_FACE, &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				unsigned	nFaceInc, *faceInc;
+				unsigned	inc_j;
+
+				Mesh_GetIncidence( mesh, MT_FACE, inc[inc_i], MT_VERTEX, &nFaceInc, &faceInc );
+				point[0] = point[1] = point[2] = 0.0;
+				for( inc_j = 0; inc_j < nFaceInc; inc_j++ ) {
+					point[0] += Mesh_GetVertex( mesh, faceInc[inc_j] )[0];
+					point[1] += Mesh_GetVertex( mesh, faceInc[inc_j] )[1];
+					point[2] += Mesh_GetVertex( mesh, faceInc[inc_j] )[2];
+				}
+				point[0] /= (double)nFaceInc;
+				point[1] /= (double)nFaceInc;
+				point[2] /= (double)nFaceInc;
+				if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+				    elDim != MT_FACE || 
+				    elInd != inc[inc_i] )
+				{
+					result = False;
+					goto done;
+				}
+			}
+
+			Mesh_GetIncidence( mesh, MT_VOLUME, e_i, MT_VERTEX, &nInc, &inc );
+			point[0] = point[1] = point[2] = 0.0;
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				point[0] += Mesh_GetVertex( mesh, inc[inc_i] )[0];
+				point[1] += Mesh_GetVertex( mesh, inc[inc_i] )[1];
+				point[2] += Mesh_GetVertex( mesh, inc[inc_i] )[2];
+			}
+			point[0] /= (double)nInc;
+			point[1] /= (double)nInc;
+			point[2] /= (double)nInc;
+			if( !Mesh_Search( mesh, point, &elDim, &elInd ) || 
+			    elDim != MT_VOLUME || 
+			    elInd != e_i )
+			{
+				result = False;
+				goto done;
+			}
+		}
+	}
+
+done:
+	FreeObject( gen );
+	FreeObject( mesh );
+
+	return result;
+}
+
+
+#define nTests	4
+
+TestSuite_Test	tests[nTests] = {{"test nearest vertex", testNearVert, 1}, 
+				 {"test element search (1D)", testElSearch1D, 1}, 
+				 {"test element search (2D)", testElSearch2D, 1}, 
+				 {"test element search (3D)", testElSearch3D, 1}};
+
+
+int main( int argc, char* argv[] ) {
+	TestSuite*	suite;
+
+	/* Initialise MPI, get world info. */
+	MPI_Init( &argc, &argv );
+
+	/* Initialise StGermain. */
+	BaseFoundation_Init( &argc, &argv );
+	BaseIO_Init( &argc, &argv );
+	BaseContainer_Init( &argc, &argv );
+
+	/* Create the test suite. */
+	suite = TestSuite_New();
+	TestSuite_SetProcToWatch( suite, (argc >= 2) ? atoi( argv[1] ) : 0 );
+	TestSuite_SetTests( suite, nTests, tests );
+
+	/* Run the tests. */
+	TestSuite_Run( suite );
+
+	/* Destroy test suites. */
+	FreeObject( suite );
+
+	/* Finalise StGermain. */
+	BaseContainer_Finalise();
+	BaseIO_Finalise();
+	BaseFoundation_Finalise();
+
 	/* Close off MPI */
 	MPI_Finalize();
-	
-	return 0; /* success */
+
+	return MPI_SUCCESS;
 }

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,18 +0,0 @@
-MeshLayout (ptr): 0x80c4c58
-	topology (ptr): 0x80c46f0
-	geometry (ptr): 0x80c4830
-	decomp (ptr): 0x80c4ac8
-Class (ptr): 0x80c4c58
-	sizeOfSelf: 32
-	_deleteSelf: True
-	type: MeshLayout
-	_delete (func ptr): 0x80556bd
-	_print (func ptr): 0x80556e9
-Point: {0.25, 0.25, 0.25} - element: 0
-Point: {0.75, 0.25, 0.25} - element: 1
-Point: {0.25, 0.75, 0.25} - element: 2
-Point: {0.75, 0.75, 0.25} - element: 3
-Point: {0.25, 0.25, 0.75} - element: 4
-Point: {0.75, 0.25, 0.75} - element: 5
-Point: {0.25, 0.75, 0.75} - element: 6
-Point: {0.75, 0.75, 0.75} - element: 7

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshLayout " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,122 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-
-int main(int argc, char *argv[])
-{
-	int		rank;
-	int		procCount;
-	int		procToWatch;
-	Dictionary*	dictionary;
-	MeshTopology*	mt;
-	MeshGeometry*	mg;
-	MeshDecomp*	md;
-	MeshLayout*	ml;
-	Coord		point[8] = {{0.25, 0.25, 0.25}, {0.75, 0.25, 0.25}, {0.25, 0.75, 0.25}, {0.75, 0.75, 0.25}, 
-				{0.25, 0.25, 0.75}, {0.75, 0.25, 0.75}, {0.25, 0.75, 0.75}, {0.75, 0.75, 0.75}};
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_size(MPI_COMM_WORLD, &procCount);
-	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 0 ) );
-	
-	mt = (MeshTopology*)HexaMeshTopology_New(dictionary);
-	mg = (MeshGeometry*)HexaMeshGeometry_New(dictionary);
-	md = (MeshDecomp*)RegularMeshDecomp_New(dictionary, MPI_COMM_WORLD, mt);
-	ml = MeshLayout_New(mt, mg, md);
-	
-	if (rank == procToWatch)
-	{
-		Element_GlobalIndex	elt;
-		Index			i;
-		
-		Print(ml);
-		
-		for (i = 0; i < 8; i++)
-		{
-			elt = MeshLayout_ElementWithPoint(ml, point[i]);
-			printf("Point: {%g, %g, %g} - element: ", point[i][0], point[i][1], point[i][2]);
-			if (elt < ml->decomp->nodeGlobalCount)
-				printf("%u\n", elt);
-			else
-				printf("X\n");
-		}
-	}
-	
-	Stg_Class_Delete(ml);
-	Stg_Class_Delete(md);
-	Stg_Class_Delete(mg);
-	Stg_Class_Delete(mt);
-	Stg_Class_Delete(dictionary);
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,414 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f770)
-Stg_Component (ptr): 0x805f770
-Stg_Object (ptr): 0x805f770
-	Stg_Class (ptr): 0x805f770
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7efe1dd
-		_print (func ptr): 0xb7efea6a
-		_copy (func ptr): 0xb7effc4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7efd51c
-	_construct (func ptr): 0xb7efe00e
-	_build (func ptr): 0xb7f00322
-	_initialise (func ptr): 0xb7f01214
-	_execute (func ptr): 0xb7f01219
-	_destroy (func ptr): 0xb7efe1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c5a8
-	layout (ptr): 0x805f4c0
-Extension (ptr):0x805fb40
-Stg_Object (ptr): 0x805fb40
-	Stg_Class (ptr): 0x805fb40
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e76018
-		_print (func ptr): 0xb7e76066
-		_copy (func ptr): 0xb7e76200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fba0
-Stg_ObjectList (ptr):0x805fba0
-	Stg_Class (ptr): 0x805fba0
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ea7f3e
-		_print (func ptr): 0xb7ea7f75
-		_copy (func ptr): 0xb7ea8217
-	_append(func ptr): 0xb7ea8e7b
-	_prepend(func ptr): 0xb7ea8f41
-	_replaceAll(func ptr): 0xb7ea9005
-	_replace(func ptr): 0xb7ea90be
-	_insertBefore(func ptr): 0xb7ea925b
-	_insertAfter(func ptr): 0xb7ea9416
-	_remove(func ptr): 0xb7ea95d3
-	_getIndex(func ptr): 0xb7ea9679
-	_get(func ptr): 0xb7ea9727
-	_allocMoreMemory(func ptr): 0xb7ea98fa
-	_insertAtIndex(func ptr): 0xb7ea9980
-	_removeByIndex(func ptr): 0xb7ea99fe
-	_deleteAllObjects(func ptr): 0xb7ea987b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805fc10
-Stg_Object (ptr): 0x805fc10
-	Stg_Class (ptr): 0x805fc10
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7e76018
-		_print (func ptr): 0xb7e76066
-		_copy (func ptr): 0xb7e76200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fc70
-Stg_ObjectList (ptr):0x805fc70
-	Stg_Class (ptr): 0x805fc70
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ea7f3e
-		_print (func ptr): 0xb7ea7f75
-		_copy (func ptr): 0xb7ea8217
-	_append(func ptr): 0xb7ea8e7b
-	_prepend(func ptr): 0xb7ea8f41
-	_replaceAll(func ptr): 0xb7ea9005
-	_replace(func ptr): 0xb7ea90be
-	_insertBefore(func ptr): 0xb7ea925b
-	_insertAfter(func ptr): 0xb7ea9416
-	_remove(func ptr): 0xb7ea95d3
-	_getIndex(func ptr): 0xb7ea9679
-	_get(func ptr): 0xb7ea9727
-	_allocMoreMemory(func ptr): 0xb7ea98fa
-	_insertAtIndex(func ptr): 0xb7ea9980
-	_removeByIndex(func ptr): 0xb7ea99fe
-	_deleteAllObjects(func ptr): 0xb7ea987b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x80604a0
-	nodeLocalCount: 12
-	nodeDomainCount: 27
-	nodeShadowCount: 15
-	nodeGlobalCount: 27
-	nodeCoord (ptr): 0x8060588
-	nodeCoord[0-27]:   (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060280
-	nodeL2G[0-12]:   000 001 003 004 009 010 012 013 018 019 021 022 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060280
-	nodeD2G[0-27]:   000 001 003 004 009 010 012 013 018 019 021 022 002 005 006 007 008 011 014 015 016 017 020 023 024 025 026 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060898
-	nodeG2L[0-27]:   000 001 027 002 003 027 027 027 027 004 005 027 006 007 027 027 027 027 008 009 027 010 011 027 027 027 027 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060820
-	nodeG2D[0-27]:   000 001 012 002 003 013 014 015 016 004 005 017 006 007 018 019 020 021 008 009 022 010 011 023 024 025 026 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060910
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060988
-	nodeNeighbourTbl[0-27]:
-		nodeNeighbourTbl[0][0-6]: 001 002 004 027 027 027 
-		nodeNeighbourTbl[1][0-6]: 012 003 005 000 027 027 
-		nodeNeighbourTbl[2][0-6]: 003 014 006 027 000 027 
-		nodeNeighbourTbl[3][0-6]: 013 015 007 002 001 027 
-		nodeNeighbourTbl[4][0-6]: 005 006 008 027 027 000 
-		nodeNeighbourTbl[5][0-6]: 017 007 009 004 027 001 
-		nodeNeighbourTbl[6][0-6]: 007 019 010 027 004 002 
-		nodeNeighbourTbl[7][0-6]: 018 020 011 006 005 003 
-		nodeNeighbourTbl[8][0-6]: 009 010 027 027 027 004 
-		nodeNeighbourTbl[9][0-6]: 022 011 027 008 027 005 
-		nodeNeighbourTbl[10][0-6]: 011 024 027 027 008 006 
-		nodeNeighbourTbl[11][0-6]: 023 025 027 010 009 007 
-		nodeNeighbourTbl[12][0-6]: 027 013 017 001 027 027 
-		nodeNeighbourTbl[13][0-6]: 027 016 018 003 012 027 
-		nodeNeighbourTbl[14][0-6]: 015 027 019 027 002 027 
-		nodeNeighbourTbl[15][0-6]: 016 027 020 014 003 027 
-		nodeNeighbourTbl[16][0-6]: 027 027 021 015 013 027 
-		nodeNeighbourTbl[17][0-6]: 027 018 022 005 027 012 
-		nodeNeighbourTbl[18][0-6]: 027 021 023 007 017 013 
-		nodeNeighbourTbl[19][0-6]: 020 027 024 027 006 014 
-		nodeNeighbourTbl[20][0-6]: 021 027 025 019 007 015 
-		nodeNeighbourTbl[21][0-6]: 027 027 026 020 018 016 
-		nodeNeighbourTbl[22][0-6]: 027 023 027 009 027 017 
-		nodeNeighbourTbl[23][0-6]: 027 026 027 011 022 018 
-		nodeNeighbourTbl[24][0-6]: 025 027 027 027 010 019 
-		nodeNeighbourTbl[25][0-6]: 026 027 027 024 011 020 
-		nodeNeighbourTbl[26][0-6]: 027 027 027 025 023 021 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060c88
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060d00
-	nodeElementTbl[0-27]:
-		nodeElementTbl[0][0-8]: 008 008 008 008 008 008 008 000 
-		nodeElementTbl[1][0-8]: 008 008 008 008 008 008 000 002 
-		nodeElementTbl[2][0-8]: 008 008 008 008 008 000 008 003 
-		nodeElementTbl[3][0-8]: 008 008 008 008 000 002 003 004 
-		nodeElementTbl[4][0-8]: 008 008 008 000 008 008 008 001 
-		nodeElementTbl[5][0-8]: 008 008 000 002 008 008 001 005 
-		nodeElementTbl[6][0-8]: 008 000 008 003 008 001 008 006 
-		nodeElementTbl[7][0-8]: 000 002 003 004 001 005 006 007 
-		nodeElementTbl[8][0-8]: 008 008 008 001 008 008 008 008 
-		nodeElementTbl[9][0-8]: 008 008 001 005 008 008 008 008 
-		nodeElementTbl[10][0-8]: 008 001 008 006 008 008 008 008 
-		nodeElementTbl[11][0-8]: 001 005 006 007 008 008 008 008 
-		nodeElementTbl[12][0-8]: 008 008 008 008 008 008 002 008 
-		nodeElementTbl[13][0-8]: 008 008 008 008 002 008 004 008 
-		nodeElementTbl[14][0-8]: 008 008 008 008 008 003 008 008 
-		nodeElementTbl[15][0-8]: 008 008 008 008 003 004 008 008 
-		nodeElementTbl[16][0-8]: 008 008 008 008 004 008 008 008 
-		nodeElementTbl[17][0-8]: 008 008 002 008 008 008 005 008 
-		nodeElementTbl[18][0-8]: 002 008 004 008 005 008 007 008 
-		nodeElementTbl[19][0-8]: 008 003 008 008 008 006 008 008 
-		nodeElementTbl[20][0-8]: 003 004 008 008 006 007 008 008 
-		nodeElementTbl[21][0-8]: 004 008 008 008 007 008 008 008 
-		nodeElementTbl[22][0-8]: 008 008 005 008 008 008 008 008 
-		nodeElementTbl[23][0-8]: 005 008 007 008 008 008 008 008 
-		nodeElementTbl[24][0-8]: 008 006 008 008 008 008 008 008 
-		nodeElementTbl[25][0-8]: 006 007 008 008 008 008 008 008 
-		nodeElementTbl[26][0-8]: 007 008 008 008 008 008 008 008 
-	element (ptr): 0x80610d8
-	elementLocalCount: 2
-	elementDomainCount: 8
-	elementShadowCount: 6
-	elementGlobalCount: 8
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805d048
-	elementL2G[0-2]:   000 004 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805d048
-	elementD2G[0-8]:   000 004 001 002 003 005 006 007 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8061158
-	elementG2L[0-8]:   000 008 008 008 001 008 008 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8061128
-	elementG2D[0-8]:   000 002 003 004 001 005 006 007 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061188
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x80611b8
-	elementNeighbourTbl[0-8]:
-		elementNeighbourTbl[0][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 008 002 008 003 004 008 008 008 008 001 005 008 006 007 
-		elementNeighbourTbl[1][0-26]: 008 008 008 008 000 002 008 003 004 008 008 008 008 005 008 006 007 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[2][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 000 008 003 004 008 008 008 008 001 005 008 006 007 008 
-		elementNeighbourTbl[3][0-26]: 008 008 008 008 008 008 008 008 008 008 000 002 008 004 008 008 008 008 001 005 008 006 007 008 008 008 
-		elementNeighbourTbl[4][0-26]: 008 008 008 008 008 008 008 008 008 000 002 008 003 008 008 008 008 001 005 008 006 007 008 008 008 008 
-		elementNeighbourTbl[5][0-26]: 008 008 008 000 002 008 003 004 008 008 008 008 001 008 006 007 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[6][0-26]: 008 000 002 008 003 004 008 008 008 008 001 005 008 007 008 008 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[7][0-26]: 000 002 008 003 004 008 008 008 008 001 005 008 006 008 008 008 008 008 008 008 008 008 008 008 008 008 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805aa50
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8061528
-	elementNodeTbl[0-8]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 004 005 007 006 
-		elementNodeTbl[1][0-8]: 004 005 007 006 008 009 011 010 
-		elementNodeTbl[2][0-8]: 001 012 013 003 005 017 018 007 
-		elementNodeTbl[3][0-8]: 002 003 015 014 006 007 020 019 
-		elementNodeTbl[4][0-8]: 003 013 016 015 007 018 021 020 
-		elementNodeTbl[5][0-8]: 005 017 018 007 009 022 023 011 
-		elementNodeTbl[6][0-8]: 006 007 020 019 010 011 025 024 
-		elementNodeTbl[7][0-8]: 007 018 021 020 011 023 026 025 
-	procNbrCnt: 3
-	procNbrTbl (ptr): 0x80602f8
-		procNbrTbl[0]: 1
-		procNbrTbl[1]: 2
-		procNbrTbl[2]: 3
-	elementShadowInfo->procShadowedCnt (ptr): 0x8060468
-		elementShadowInfo->procShadowedCnt[0]: 2
-		elementShadowInfo->procShadowedCnt[1]: 2
-		elementShadowInfo->procShadowedCnt[2]: 2
-	elementShadowInfo->procShadowedTbl (ptr): 0x805d078
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x8060388
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-		elementShadowInfo->procShadowedTbl[1] (ptr): 0x8061750
-			elementShadowInfo->procShadowedTbl[1][0]: 0
-			elementShadowInfo->procShadowedTbl[1][1]: 1
-		elementShadowInfo->procShadowedTbl[2] (ptr): 0x80617a8
-			elementShadowInfo->procShadowedTbl[2][0]: 0
-			elementShadowInfo->procShadowedTbl[2][1]: 1
-	elementShadowInfo->procShadowCnt (ptr): 0x80617c0
-		elementShadowInfo->procShadowCnt[0]: 2
-		elementShadowInfo->procShadowCnt[1]: 2
-		elementShadowInfo->procShadowCnt[2]: 2
-	elementShadowInfo->procShadowTbl (ptr): 0x80617d8
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80617f0
-			elementShadowInfo->procShadowTbl[0][0]: 2
-			elementShadowInfo->procShadowTbl[0][1]: 5
-		elementShadowInfo->procShadowTbl[1] (ptr): 0x8061808
-			elementShadowInfo->procShadowTbl[1][0]: 3
-			elementShadowInfo->procShadowTbl[1][1]: 6
-		elementShadowInfo->procShadowTbl[2] (ptr): 0x8061820
-			elementShadowInfo->procShadowTbl[2][0]: 4
-			elementShadowInfo->procShadowTbl[2][1]: 7
-	nodeShadowInfo->procShadowedCnt (ptr): 0x8061878
-		nodeShadowInfo->procShadowedCnt[0]: 6
-		nodeShadowInfo->procShadowedCnt[1]: 6
-		nodeShadowInfo->procShadowedCnt[2]: 9
-	nodeShadowInfo->procShadowedTbl (ptr): 0x8061890
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x80616a8
-			nodeShadowInfo->procShadowedTbl[0][0]: 0
-			nodeShadowInfo->procShadowedTbl[0][1]: 2
-			nodeShadowInfo->procShadowedTbl[0][2]: 4
-			nodeShadowInfo->procShadowedTbl[0][3]: 6
-			nodeShadowInfo->procShadowedTbl[0][4]: 8
-			nodeShadowInfo->procShadowedTbl[0][5]: 10
-		nodeShadowInfo->procShadowedTbl[1] (ptr): 0x8061680
-			nodeShadowInfo->procShadowedTbl[1][0]: 0
-			nodeShadowInfo->procShadowedTbl[1][1]: 1
-			nodeShadowInfo->procShadowedTbl[1][2]: 4
-			nodeShadowInfo->procShadowedTbl[1][3]: 5
-			nodeShadowInfo->procShadowedTbl[1][4]: 8
-			nodeShadowInfo->procShadowedTbl[1][5]: 9
-		nodeShadowInfo->procShadowedTbl[2] (ptr): 0x8061a70
-			nodeShadowInfo->procShadowedTbl[2][0]: 0
-			nodeShadowInfo->procShadowedTbl[2][1]: 1
-			nodeShadowInfo->procShadowedTbl[2][2]: 2
-			nodeShadowInfo->procShadowedTbl[2][3]: 4
-			nodeShadowInfo->procShadowedTbl[2][4]: 5
-			nodeShadowInfo->procShadowedTbl[2][5]: 6
-			nodeShadowInfo->procShadowedTbl[2][6]: 8
-			nodeShadowInfo->procShadowedTbl[2][7]: 9
-			nodeShadowInfo->procShadowedTbl[2][8]: 10
-	nodeShadowInfo->procShadowCnt (ptr): 0x8061aa0
-		nodeShadowInfo->procShadowCnt[0]: 6
-		nodeShadowInfo->procShadowCnt[1]: 6
-		nodeShadowInfo->procShadowCnt[2]: 9
-	nodeShadowInfo->procShadowTbl (ptr): 0x8061ab8
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8061658
-			nodeShadowInfo->procShadowTbl[0][0]: 12
-			nodeShadowInfo->procShadowTbl[0][1]: 13
-			nodeShadowInfo->procShadowTbl[0][2]: 17
-			nodeShadowInfo->procShadowTbl[0][3]: 18
-			nodeShadowInfo->procShadowTbl[0][4]: 22
-			nodeShadowInfo->procShadowTbl[0][5]: 23
-		nodeShadowInfo->procShadowTbl[1] (ptr): 0x8061ad0
-			nodeShadowInfo->procShadowTbl[1][0]: 14
-			nodeShadowInfo->procShadowTbl[1][1]: 15
-			nodeShadowInfo->procShadowTbl[1][2]: 19
-			nodeShadowInfo->procShadowTbl[1][3]: 20
-			nodeShadowInfo->procShadowTbl[1][4]: 24
-			nodeShadowInfo->procShadowTbl[1][5]: 25
-		nodeShadowInfo->procShadowTbl[2] (ptr): 0x8061af8
-			nodeShadowInfo->procShadowTbl[2][0]: 13
-			nodeShadowInfo->procShadowTbl[2][1]: 15
-			nodeShadowInfo->procShadowTbl[2][2]: 16
-			nodeShadowInfo->procShadowTbl[2][3]: 18
-			nodeShadowInfo->procShadowTbl[2][4]: 20
-			nodeShadowInfo->procShadowTbl[2][5]: 21
-			nodeShadowInfo->procShadowTbl[2][6]: 23
-			nodeShadowInfo->procShadowTbl[2][7]: 25
-			nodeShadowInfo->procShadowTbl[2][8]: 26
-Pre-sync:
-	nodeCoord[0]: { 0, 0, 0 } - temp: 10
-	nodeCoord[1]: { 0, 0, 0 } - temp: 10
-	nodeCoord[2]: { 0, 0, 0 } - temp: 10
-	nodeCoord[3]: { 0, 0, 0 } - temp: 10
-	nodeCoord[4]: { 0, 0, 0 } - temp: 10
-	nodeCoord[5]: { 0, 0, 0 } - temp: 10
-	nodeCoord[6]: { 0, 0, 0 } - temp: 10
-	nodeCoord[7]: { 0, 0, 0 } - temp: 10
-	nodeCoord[8]: { 0, 0, 0 } - temp: 10
-	nodeCoord[9]: { 0, 0, 0 } - temp: 10
-	nodeCoord[10]: { 0, 0, 0 } - temp: 10
-	nodeCoord[11]: { 0, 0, 0 } - temp: 10
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 0, 0, 0 } - temp: 10
-	nodeCoord[14]: { 0, 0, 0 } - temp: 10
-	nodeCoord[15]: { 0, 0, 0 } - temp: 10
-	nodeCoord[16]: { 0, 0, 0 } - temp: 10
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 0, 0, 0 } - temp: 10
-	nodeCoord[19]: { 0, 0, 0 } - temp: 10
-	nodeCoord[20]: { 0, 0, 0 } - temp: 10
-	nodeCoord[21]: { 0, 0, 0 } - temp: 10
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 0, 0, 0 } - temp: 10
-	nodeCoord[24]: { 0, 0, 0 } - temp: 10
-	nodeCoord[25]: { 0, 0, 0 } - temp: 10
-	nodeCoord[26]: { 0, 0, 0 } - temp: 10
-	element[0]: temp: 20
-	element[1]: temp: 20
-	element[2]: temp: 20
-	element[3]: temp: 20
-	element[4]: temp: 20
-	element[5]: temp: 20
-	element[6]: temp: 20
-	element[7]: temp: 20
-Post-sync:
-	nodeCoord[0]: { 0, 0, 0 } - temp: 10
-	nodeCoord[1]: { 0, 0, 0 } - temp: 10
-	nodeCoord[2]: { 0, 0, 0 } - temp: 10
-	nodeCoord[3]: { 0, 0, 0 } - temp: 10
-	nodeCoord[4]: { 0, 0, 0 } - temp: 10
-	nodeCoord[5]: { 0, 0, 0 } - temp: 10
-	nodeCoord[6]: { 0, 0, 0 } - temp: 10
-	nodeCoord[7]: { 0, 0, 0 } - temp: 10
-	nodeCoord[8]: { 0, 0, 0 } - temp: 10
-	nodeCoord[9]: { 0, 0, 0 } - temp: 10
-	nodeCoord[10]: { 0, 0, 0 } - temp: 10
-	nodeCoord[11]: { 0, 0, 0 } - temp: 10
-	nodeCoord[12]: { 1, 1, 1 } - temp: 11
-	nodeCoord[13]: { 3, 3, 3 } - temp: 13
-	nodeCoord[14]: { 2, 2, 2 } - temp: 12
-	nodeCoord[15]: { 3, 3, 3 } - temp: 13
-	nodeCoord[16]: { 3, 3, 3 } - temp: 13
-	nodeCoord[17]: { 1, 1, 1 } - temp: 11
-	nodeCoord[18]: { 3, 3, 3 } - temp: 13
-	nodeCoord[19]: { 2, 2, 2 } - temp: 12
-	nodeCoord[20]: { 3, 3, 3 } - temp: 13
-	nodeCoord[21]: { 3, 3, 3 } - temp: 13
-	nodeCoord[22]: { 1, 1, 1 } - temp: 11
-	nodeCoord[23]: { 3, 3, 3 } - temp: 13
-	nodeCoord[24]: { 2, 2, 2 } - temp: 12
-	nodeCoord[25]: { 3, 3, 3 } - temp: 13
-	nodeCoord[26]: { 3, 3, 3 } - temp: 13
-	element[0]: temp: 20
-	element[1]: temp: 20
-	element[2]: temp: 21
-	element[3]: temp: 22
-	element[4]: temp: 23
-	element[5]: temp: 21
-	element[6]: temp: 22
-	element[7]: temp: 23

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.0of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync-2D " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,414 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f728)
-Stg_Component (ptr): 0x805f728
-Stg_Object (ptr): 0x805f728
-	Stg_Class (ptr): 0x805f728
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7fd91dd
-		_print (func ptr): 0xb7fd9a6a
-		_copy (func ptr): 0xb7fdac4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7fd851c
-	_construct (func ptr): 0xb7fd900e
-	_build (func ptr): 0xb7fdb322
-	_initialise (func ptr): 0xb7fdc214
-	_execute (func ptr): 0xb7fdc219
-	_destroy (func ptr): 0xb7fd91d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c560
-	layout (ptr): 0x805f478
-Extension (ptr):0x805faf8
-Stg_Object (ptr): 0x805faf8
-	Stg_Class (ptr): 0x805faf8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f51018
-		_print (func ptr): 0xb7f51066
-		_copy (func ptr): 0xb7f51200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fb58
-Stg_ObjectList (ptr):0x805fb58
-	Stg_Class (ptr): 0x805fb58
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f82f3e
-		_print (func ptr): 0xb7f82f75
-		_copy (func ptr): 0xb7f83217
-	_append(func ptr): 0xb7f83e7b
-	_prepend(func ptr): 0xb7f83f41
-	_replaceAll(func ptr): 0xb7f84005
-	_replace(func ptr): 0xb7f840be
-	_insertBefore(func ptr): 0xb7f8425b
-	_insertAfter(func ptr): 0xb7f84416
-	_remove(func ptr): 0xb7f845d3
-	_getIndex(func ptr): 0xb7f84679
-	_get(func ptr): 0xb7f84727
-	_allocMoreMemory(func ptr): 0xb7f848fa
-	_insertAtIndex(func ptr): 0xb7f84980
-	_removeByIndex(func ptr): 0xb7f849fe
-	_deleteAllObjects(func ptr): 0xb7f8487b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805fbc8
-Stg_Object (ptr): 0x805fbc8
-	Stg_Class (ptr): 0x805fbc8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f51018
-		_print (func ptr): 0xb7f51066
-		_copy (func ptr): 0xb7f51200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fc28
-Stg_ObjectList (ptr):0x805fc28
-	Stg_Class (ptr): 0x805fc28
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f82f3e
-		_print (func ptr): 0xb7f82f75
-		_copy (func ptr): 0xb7f83217
-	_append(func ptr): 0xb7f83e7b
-	_prepend(func ptr): 0xb7f83f41
-	_replaceAll(func ptr): 0xb7f84005
-	_replace(func ptr): 0xb7f840be
-	_insertBefore(func ptr): 0xb7f8425b
-	_insertAfter(func ptr): 0xb7f84416
-	_remove(func ptr): 0xb7f845d3
-	_getIndex(func ptr): 0xb7f84679
-	_get(func ptr): 0xb7f84727
-	_allocMoreMemory(func ptr): 0xb7f848fa
-	_insertAtIndex(func ptr): 0xb7f84980
-	_removeByIndex(func ptr): 0xb7f849fe
-	_deleteAllObjects(func ptr): 0xb7f8487b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060458
-	nodeLocalCount: 12
-	nodeDomainCount: 27
-	nodeShadowCount: 15
-	nodeGlobalCount: 27
-	nodeCoord (ptr): 0x8060540
-	nodeCoord[0-27]:   (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060238
-	nodeL2G[0-12]:   001 002 004 005 010 011 013 014 019 020 022 023 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060238
-	nodeD2G[0-27]:   001 002 004 005 010 011 013 014 019 020 022 023 000 003 006 007 008 009 012 015 016 017 018 021 024 025 026 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060850
-	nodeG2L[0-27]:   027 000 001 027 002 003 027 027 027 027 004 005 027 006 007 027 027 027 027 008 009 027 010 011 027 027 027 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80607d8
-	nodeG2D[0-27]:   012 000 001 013 002 003 014 015 016 017 004 005 018 006 007 019 020 021 022 008 009 023 010 011 024 025 026 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80608c8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060940
-	nodeNeighbourTbl[0-27]:
-		nodeNeighbourTbl[0][0-6]: 001 002 004 012 027 027 
-		nodeNeighbourTbl[1][0-6]: 027 003 005 000 027 027 
-		nodeNeighbourTbl[2][0-6]: 003 015 006 013 000 027 
-		nodeNeighbourTbl[3][0-6]: 027 016 007 002 001 027 
-		nodeNeighbourTbl[4][0-6]: 005 006 008 017 027 000 
-		nodeNeighbourTbl[5][0-6]: 027 007 009 004 027 001 
-		nodeNeighbourTbl[6][0-6]: 007 020 010 018 004 002 
-		nodeNeighbourTbl[7][0-6]: 027 021 011 006 005 003 
-		nodeNeighbourTbl[8][0-6]: 009 010 027 022 027 004 
-		nodeNeighbourTbl[9][0-6]: 027 011 027 008 027 005 
-		nodeNeighbourTbl[10][0-6]: 011 025 027 023 008 006 
-		nodeNeighbourTbl[11][0-6]: 027 026 027 010 009 007 
-		nodeNeighbourTbl[12][0-6]: 000 013 017 027 027 027 
-		nodeNeighbourTbl[13][0-6]: 002 014 018 027 012 027 
-		nodeNeighbourTbl[14][0-6]: 015 027 019 027 013 027 
-		nodeNeighbourTbl[15][0-6]: 016 027 020 014 002 027 
-		nodeNeighbourTbl[16][0-6]: 027 027 021 015 003 027 
-		nodeNeighbourTbl[17][0-6]: 004 018 022 027 027 012 
-		nodeNeighbourTbl[18][0-6]: 006 019 023 027 017 013 
-		nodeNeighbourTbl[19][0-6]: 020 027 024 027 018 014 
-		nodeNeighbourTbl[20][0-6]: 021 027 025 019 006 015 
-		nodeNeighbourTbl[21][0-6]: 027 027 026 020 007 016 
-		nodeNeighbourTbl[22][0-6]: 008 023 027 027 027 017 
-		nodeNeighbourTbl[23][0-6]: 010 024 027 027 022 018 
-		nodeNeighbourTbl[24][0-6]: 025 027 027 027 023 019 
-		nodeNeighbourTbl[25][0-6]: 026 027 027 024 010 020 
-		nodeNeighbourTbl[26][0-6]: 027 027 027 025 011 021 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060c40
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060cb8
-	nodeElementTbl[0-27]:
-		nodeElementTbl[0][0-8]: 008 008 008 008 008 008 002 000 
-		nodeElementTbl[1][0-8]: 008 008 008 008 008 008 000 008 
-		nodeElementTbl[2][0-8]: 008 008 008 008 002 000 003 004 
-		nodeElementTbl[3][0-8]: 008 008 008 008 000 008 004 008 
-		nodeElementTbl[4][0-8]: 008 008 002 000 008 008 005 001 
-		nodeElementTbl[5][0-8]: 008 008 000 008 008 008 001 008 
-		nodeElementTbl[6][0-8]: 002 000 003 004 005 001 006 007 
-		nodeElementTbl[7][0-8]: 000 008 004 008 001 008 007 008 
-		nodeElementTbl[8][0-8]: 008 008 005 001 008 008 008 008 
-		nodeElementTbl[9][0-8]: 008 008 001 008 008 008 008 008 
-		nodeElementTbl[10][0-8]: 005 001 006 007 008 008 008 008 
-		nodeElementTbl[11][0-8]: 001 008 007 008 008 008 008 008 
-		nodeElementTbl[12][0-8]: 008 008 008 008 008 008 008 002 
-		nodeElementTbl[13][0-8]: 008 008 008 008 008 002 008 003 
-		nodeElementTbl[14][0-8]: 008 008 008 008 008 003 008 008 
-		nodeElementTbl[15][0-8]: 008 008 008 008 003 004 008 008 
-		nodeElementTbl[16][0-8]: 008 008 008 008 004 008 008 008 
-		nodeElementTbl[17][0-8]: 008 008 008 002 008 008 008 005 
-		nodeElementTbl[18][0-8]: 008 002 008 003 008 005 008 006 
-		nodeElementTbl[19][0-8]: 008 003 008 008 008 006 008 008 
-		nodeElementTbl[20][0-8]: 003 004 008 008 006 007 008 008 
-		nodeElementTbl[21][0-8]: 004 008 008 008 007 008 008 008 
-		nodeElementTbl[22][0-8]: 008 008 008 005 008 008 008 008 
-		nodeElementTbl[23][0-8]: 008 005 008 006 008 008 008 008 
-		nodeElementTbl[24][0-8]: 008 006 008 008 008 008 008 008 
-		nodeElementTbl[25][0-8]: 006 007 008 008 008 008 008 008 
-		nodeElementTbl[26][0-8]: 007 008 008 008 008 008 008 008 
-	element (ptr): 0x8061090
-	elementLocalCount: 2
-	elementDomainCount: 8
-	elementShadowCount: 6
-	elementGlobalCount: 8
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805d000
-	elementL2G[0-2]:   001 005 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805d000
-	elementD2G[0-8]:   001 005 000 002 003 004 006 007 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8061110
-	elementG2L[0-8]:   008 000 008 008 008 001 008 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x80610e0
-	elementG2D[0-8]:   002 000 003 004 005 001 006 007 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061140
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061170
-	elementNeighbourTbl[0-8]:
-		elementNeighbourTbl[0][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 002 008 003 004 008 008 008 008 005 001 008 006 007 008 
-		elementNeighbourTbl[1][0-26]: 008 008 008 002 000 008 003 004 008 008 008 008 005 008 006 007 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[2][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 008 000 008 003 004 008 008 008 008 005 001 008 006 007 
-		elementNeighbourTbl[3][0-26]: 008 008 008 008 008 008 008 008 008 008 002 000 008 004 008 008 008 008 005 001 008 006 007 008 008 008 
-		elementNeighbourTbl[4][0-26]: 008 008 008 008 008 008 008 008 008 002 000 008 003 008 008 008 008 005 001 008 006 007 008 008 008 008 
-		elementNeighbourTbl[5][0-26]: 008 008 008 008 002 000 008 003 004 008 008 008 008 001 008 006 007 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[6][0-26]: 008 002 000 008 003 004 008 008 008 008 005 001 008 007 008 008 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[7][0-26]: 002 000 008 003 004 008 008 008 008 005 001 008 006 008 008 008 008 008 008 008 008 008 008 008 008 008 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805aa18
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80614e0
-	elementNodeTbl[0-8]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 004 005 007 006 
-		elementNodeTbl[1][0-8]: 004 005 007 006 008 009 011 010 
-		elementNodeTbl[2][0-8]: 012 000 002 013 017 004 006 018 
-		elementNodeTbl[3][0-8]: 013 002 015 014 018 006 020 019 
-		elementNodeTbl[4][0-8]: 002 003 016 015 006 007 021 020 
-		elementNodeTbl[5][0-8]: 017 004 006 018 022 008 010 023 
-		elementNodeTbl[6][0-8]: 018 006 020 019 023 010 025 024 
-		elementNodeTbl[7][0-8]: 006 007 021 020 010 011 026 025 
-	procNbrCnt: 3
-	procNbrTbl (ptr): 0x80602b0
-		procNbrTbl[0]: 0
-		procNbrTbl[1]: 2
-		procNbrTbl[2]: 3
-	elementShadowInfo->procShadowedCnt (ptr): 0x8060420
-		elementShadowInfo->procShadowedCnt[0]: 2
-		elementShadowInfo->procShadowedCnt[1]: 2
-		elementShadowInfo->procShadowedCnt[2]: 2
-	elementShadowInfo->procShadowedTbl (ptr): 0x805d030
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x8060340
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-		elementShadowInfo->procShadowedTbl[1] (ptr): 0x8061708
-			elementShadowInfo->procShadowedTbl[1][0]: 0
-			elementShadowInfo->procShadowedTbl[1][1]: 1
-		elementShadowInfo->procShadowedTbl[2] (ptr): 0x8061770
-			elementShadowInfo->procShadowedTbl[2][0]: 0
-			elementShadowInfo->procShadowedTbl[2][1]: 1
-	elementShadowInfo->procShadowCnt (ptr): 0x8061788
-		elementShadowInfo->procShadowCnt[0]: 2
-		elementShadowInfo->procShadowCnt[1]: 2
-		elementShadowInfo->procShadowCnt[2]: 2
-	elementShadowInfo->procShadowTbl (ptr): 0x80617a0
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80617b8
-			elementShadowInfo->procShadowTbl[0][0]: 2
-			elementShadowInfo->procShadowTbl[0][1]: 5
-		elementShadowInfo->procShadowTbl[1] (ptr): 0x80617d0
-			elementShadowInfo->procShadowTbl[1][0]: 3
-			elementShadowInfo->procShadowTbl[1][1]: 6
-		elementShadowInfo->procShadowTbl[2] (ptr): 0x80617e8
-			elementShadowInfo->procShadowTbl[2][0]: 4
-			elementShadowInfo->procShadowTbl[2][1]: 7
-	nodeShadowInfo->procShadowedCnt (ptr): 0x8061840
-		nodeShadowInfo->procShadowedCnt[0]: 6
-		nodeShadowInfo->procShadowedCnt[1]: 9
-		nodeShadowInfo->procShadowedCnt[2]: 6
-	nodeShadowInfo->procShadowedTbl (ptr): 0x8061858
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x8061660
-			nodeShadowInfo->procShadowedTbl[0][0]: 1
-			nodeShadowInfo->procShadowedTbl[0][1]: 3
-			nodeShadowInfo->procShadowedTbl[0][2]: 5
-			nodeShadowInfo->procShadowedTbl[0][3]: 7
-			nodeShadowInfo->procShadowedTbl[0][4]: 9
-			nodeShadowInfo->procShadowedTbl[0][5]: 11
-		nodeShadowInfo->procShadowedTbl[1] (ptr): 0x80619e8
-			nodeShadowInfo->procShadowedTbl[1][0]: 0
-			nodeShadowInfo->procShadowedTbl[1][1]: 1
-			nodeShadowInfo->procShadowedTbl[1][2]: 3
-			nodeShadowInfo->procShadowedTbl[1][3]: 4
-			nodeShadowInfo->procShadowedTbl[1][4]: 5
-			nodeShadowInfo->procShadowedTbl[1][5]: 7
-			nodeShadowInfo->procShadowedTbl[1][6]: 8
-			nodeShadowInfo->procShadowedTbl[1][7]: 9
-			nodeShadowInfo->procShadowedTbl[1][8]: 11
-		nodeShadowInfo->procShadowedTbl[2] (ptr): 0x8061638
-			nodeShadowInfo->procShadowedTbl[2][0]: 0
-			nodeShadowInfo->procShadowedTbl[2][1]: 1
-			nodeShadowInfo->procShadowedTbl[2][2]: 4
-			nodeShadowInfo->procShadowedTbl[2][3]: 5
-			nodeShadowInfo->procShadowedTbl[2][4]: 8
-			nodeShadowInfo->procShadowedTbl[2][5]: 9
-	nodeShadowInfo->procShadowCnt (ptr): 0x8061a68
-		nodeShadowInfo->procShadowCnt[0]: 6
-		nodeShadowInfo->procShadowCnt[1]: 9
-		nodeShadowInfo->procShadowCnt[2]: 6
-	nodeShadowInfo->procShadowTbl (ptr): 0x8061a80
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8061610
-			nodeShadowInfo->procShadowTbl[0][0]: 12
-			nodeShadowInfo->procShadowTbl[0][1]: 13
-			nodeShadowInfo->procShadowTbl[0][2]: 17
-			nodeShadowInfo->procShadowTbl[0][3]: 18
-			nodeShadowInfo->procShadowTbl[0][4]: 22
-			nodeShadowInfo->procShadowTbl[0][5]: 23
-		nodeShadowInfo->procShadowTbl[1] (ptr): 0x8061a98
-			nodeShadowInfo->procShadowTbl[1][0]: 13
-			nodeShadowInfo->procShadowTbl[1][1]: 14
-			nodeShadowInfo->procShadowTbl[1][2]: 15
-			nodeShadowInfo->procShadowTbl[1][3]: 18
-			nodeShadowInfo->procShadowTbl[1][4]: 19
-			nodeShadowInfo->procShadowTbl[1][5]: 20
-			nodeShadowInfo->procShadowTbl[1][6]: 23
-			nodeShadowInfo->procShadowTbl[1][7]: 24
-			nodeShadowInfo->procShadowTbl[1][8]: 25
-		nodeShadowInfo->procShadowTbl[2] (ptr): 0x8061ac8
-			nodeShadowInfo->procShadowTbl[2][0]: 15
-			nodeShadowInfo->procShadowTbl[2][1]: 16
-			nodeShadowInfo->procShadowTbl[2][2]: 20
-			nodeShadowInfo->procShadowTbl[2][3]: 21
-			nodeShadowInfo->procShadowTbl[2][4]: 25
-			nodeShadowInfo->procShadowTbl[2][5]: 26
-Pre-sync:
-	nodeCoord[0]: { 1, 1, 1 } - temp: 11
-	nodeCoord[1]: { 1, 1, 1 } - temp: 11
-	nodeCoord[2]: { 1, 1, 1 } - temp: 11
-	nodeCoord[3]: { 1, 1, 1 } - temp: 11
-	nodeCoord[4]: { 1, 1, 1 } - temp: 11
-	nodeCoord[5]: { 1, 1, 1 } - temp: 11
-	nodeCoord[6]: { 1, 1, 1 } - temp: 11
-	nodeCoord[7]: { 1, 1, 1 } - temp: 11
-	nodeCoord[8]: { 1, 1, 1 } - temp: 11
-	nodeCoord[9]: { 1, 1, 1 } - temp: 11
-	nodeCoord[10]: { 1, 1, 1 } - temp: 11
-	nodeCoord[11]: { 1, 1, 1 } - temp: 11
-	nodeCoord[12]: { 1, 1, 1 } - temp: 11
-	nodeCoord[13]: { 1, 1, 1 } - temp: 11
-	nodeCoord[14]: { 1, 1, 1 } - temp: 11
-	nodeCoord[15]: { 1, 1, 1 } - temp: 11
-	nodeCoord[16]: { 1, 1, 1 } - temp: 11
-	nodeCoord[17]: { 1, 1, 1 } - temp: 11
-	nodeCoord[18]: { 1, 1, 1 } - temp: 11
-	nodeCoord[19]: { 1, 1, 1 } - temp: 11
-	nodeCoord[20]: { 1, 1, 1 } - temp: 11
-	nodeCoord[21]: { 1, 1, 1 } - temp: 11
-	nodeCoord[22]: { 1, 1, 1 } - temp: 11
-	nodeCoord[23]: { 1, 1, 1 } - temp: 11
-	nodeCoord[24]: { 1, 1, 1 } - temp: 11
-	nodeCoord[25]: { 1, 1, 1 } - temp: 11
-	nodeCoord[26]: { 1, 1, 1 } - temp: 11
-	element[0]: temp: 21
-	element[1]: temp: 21
-	element[2]: temp: 21
-	element[3]: temp: 21
-	element[4]: temp: 21
-	element[5]: temp: 21
-	element[6]: temp: 21
-	element[7]: temp: 21
-Post-sync:
-	nodeCoord[0]: { 1, 1, 1 } - temp: 11
-	nodeCoord[1]: { 1, 1, 1 } - temp: 11
-	nodeCoord[2]: { 1, 1, 1 } - temp: 11
-	nodeCoord[3]: { 1, 1, 1 } - temp: 11
-	nodeCoord[4]: { 1, 1, 1 } - temp: 11
-	nodeCoord[5]: { 1, 1, 1 } - temp: 11
-	nodeCoord[6]: { 1, 1, 1 } - temp: 11
-	nodeCoord[7]: { 1, 1, 1 } - temp: 11
-	nodeCoord[8]: { 1, 1, 1 } - temp: 11
-	nodeCoord[9]: { 1, 1, 1 } - temp: 11
-	nodeCoord[10]: { 1, 1, 1 } - temp: 11
-	nodeCoord[11]: { 1, 1, 1 } - temp: 11
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 2, 2, 2 } - temp: 12
-	nodeCoord[14]: { 2, 2, 2 } - temp: 12
-	nodeCoord[15]: { 3, 3, 3 } - temp: 13
-	nodeCoord[16]: { 3, 3, 3 } - temp: 13
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 2, 2, 2 } - temp: 12
-	nodeCoord[19]: { 2, 2, 2 } - temp: 12
-	nodeCoord[20]: { 3, 3, 3 } - temp: 13
-	nodeCoord[21]: { 3, 3, 3 } - temp: 13
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 2, 2, 2 } - temp: 12
-	nodeCoord[24]: { 2, 2, 2 } - temp: 12
-	nodeCoord[25]: { 3, 3, 3 } - temp: 13
-	nodeCoord[26]: { 3, 3, 3 } - temp: 13
-	element[0]: temp: 21
-	element[1]: temp: 21
-	element[2]: temp: 20
-	element[3]: temp: 22
-	element[4]: temp: 23
-	element[5]: temp: 20
-	element[6]: temp: 22
-	element[7]: temp: 23

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.1of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync-2D " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,414 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f728)
-Stg_Component (ptr): 0x805f728
-Stg_Object (ptr): 0x805f728
-	Stg_Class (ptr): 0x805f728
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7fcd1dd
-		_print (func ptr): 0xb7fcda6a
-		_copy (func ptr): 0xb7fcec4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7fcc51c
-	_construct (func ptr): 0xb7fcd00e
-	_build (func ptr): 0xb7fcf322
-	_initialise (func ptr): 0xb7fd0214
-	_execute (func ptr): 0xb7fd0219
-	_destroy (func ptr): 0xb7fcd1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c560
-	layout (ptr): 0x805f478
-Extension (ptr):0x805faf8
-Stg_Object (ptr): 0x805faf8
-	Stg_Class (ptr): 0x805faf8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f45018
-		_print (func ptr): 0xb7f45066
-		_copy (func ptr): 0xb7f45200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fb58
-Stg_ObjectList (ptr):0x805fb58
-	Stg_Class (ptr): 0x805fb58
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f76f3e
-		_print (func ptr): 0xb7f76f75
-		_copy (func ptr): 0xb7f77217
-	_append(func ptr): 0xb7f77e7b
-	_prepend(func ptr): 0xb7f77f41
-	_replaceAll(func ptr): 0xb7f78005
-	_replace(func ptr): 0xb7f780be
-	_insertBefore(func ptr): 0xb7f7825b
-	_insertAfter(func ptr): 0xb7f78416
-	_remove(func ptr): 0xb7f785d3
-	_getIndex(func ptr): 0xb7f78679
-	_get(func ptr): 0xb7f78727
-	_allocMoreMemory(func ptr): 0xb7f788fa
-	_insertAtIndex(func ptr): 0xb7f78980
-	_removeByIndex(func ptr): 0xb7f789fe
-	_deleteAllObjects(func ptr): 0xb7f7887b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805fbc8
-Stg_Object (ptr): 0x805fbc8
-	Stg_Class (ptr): 0x805fbc8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f45018
-		_print (func ptr): 0xb7f45066
-		_copy (func ptr): 0xb7f45200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fc28
-Stg_ObjectList (ptr):0x805fc28
-	Stg_Class (ptr): 0x805fc28
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f76f3e
-		_print (func ptr): 0xb7f76f75
-		_copy (func ptr): 0xb7f77217
-	_append(func ptr): 0xb7f77e7b
-	_prepend(func ptr): 0xb7f77f41
-	_replaceAll(func ptr): 0xb7f78005
-	_replace(func ptr): 0xb7f780be
-	_insertBefore(func ptr): 0xb7f7825b
-	_insertAfter(func ptr): 0xb7f78416
-	_remove(func ptr): 0xb7f785d3
-	_getIndex(func ptr): 0xb7f78679
-	_get(func ptr): 0xb7f78727
-	_allocMoreMemory(func ptr): 0xb7f788fa
-	_insertAtIndex(func ptr): 0xb7f78980
-	_removeByIndex(func ptr): 0xb7f789fe
-	_deleteAllObjects(func ptr): 0xb7f7887b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060458
-	nodeLocalCount: 12
-	nodeDomainCount: 27
-	nodeShadowCount: 15
-	nodeGlobalCount: 27
-	nodeCoord (ptr): 0x8060540
-	nodeCoord[0-27]:   (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060238
-	nodeL2G[0-12]:   003 004 006 007 012 013 015 016 021 022 024 025 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060238
-	nodeD2G[0-27]:   003 004 006 007 012 013 015 016 021 022 024 025 000 001 002 005 008 009 010 011 014 017 018 019 020 023 026 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060850
-	nodeG2L[0-27]:   027 027 027 000 001 027 002 003 027 027 027 027 004 005 027 006 007 027 027 027 027 008 009 027 010 011 027 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80607d8
-	nodeG2D[0-27]:   012 013 014 000 001 015 002 003 016 017 018 019 004 005 020 006 007 021 022 023 024 008 009 025 010 011 026 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80608c8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060940
-	nodeNeighbourTbl[0-27]:
-		nodeNeighbourTbl[0][0-6]: 001 002 004 027 012 027 
-		nodeNeighbourTbl[1][0-6]: 015 003 005 000 013 027 
-		nodeNeighbourTbl[2][0-6]: 003 027 006 027 000 027 
-		nodeNeighbourTbl[3][0-6]: 016 027 007 002 001 027 
-		nodeNeighbourTbl[4][0-6]: 005 006 008 027 017 000 
-		nodeNeighbourTbl[5][0-6]: 020 007 009 004 018 001 
-		nodeNeighbourTbl[6][0-6]: 007 027 010 027 004 002 
-		nodeNeighbourTbl[7][0-6]: 021 027 011 006 005 003 
-		nodeNeighbourTbl[8][0-6]: 009 010 027 027 022 004 
-		nodeNeighbourTbl[9][0-6]: 025 011 027 008 023 005 
-		nodeNeighbourTbl[10][0-6]: 011 027 027 027 008 006 
-		nodeNeighbourTbl[11][0-6]: 026 027 027 010 009 007 
-		nodeNeighbourTbl[12][0-6]: 013 000 017 027 027 027 
-		nodeNeighbourTbl[13][0-6]: 014 001 018 012 027 027 
-		nodeNeighbourTbl[14][0-6]: 027 015 019 013 027 027 
-		nodeNeighbourTbl[15][0-6]: 027 016 020 001 014 027 
-		nodeNeighbourTbl[16][0-6]: 027 027 021 003 015 027 
-		nodeNeighbourTbl[17][0-6]: 018 004 022 027 027 012 
-		nodeNeighbourTbl[18][0-6]: 019 005 023 017 027 013 
-		nodeNeighbourTbl[19][0-6]: 027 020 024 018 027 014 
-		nodeNeighbourTbl[20][0-6]: 027 021 025 005 019 015 
-		nodeNeighbourTbl[21][0-6]: 027 027 026 007 020 016 
-		nodeNeighbourTbl[22][0-6]: 023 008 027 027 027 017 
-		nodeNeighbourTbl[23][0-6]: 024 009 027 022 027 018 
-		nodeNeighbourTbl[24][0-6]: 027 025 027 023 027 019 
-		nodeNeighbourTbl[25][0-6]: 027 026 027 009 024 020 
-		nodeNeighbourTbl[26][0-6]: 027 027 027 011 025 021 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060c40
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060cb8
-	nodeElementTbl[0-27]:
-		nodeElementTbl[0][0-8]: 008 008 008 008 008 002 008 000 
-		nodeElementTbl[1][0-8]: 008 008 008 008 002 003 000 004 
-		nodeElementTbl[2][0-8]: 008 008 008 008 008 000 008 008 
-		nodeElementTbl[3][0-8]: 008 008 008 008 000 004 008 008 
-		nodeElementTbl[4][0-8]: 008 002 008 000 008 005 008 001 
-		nodeElementTbl[5][0-8]: 002 003 000 004 005 006 001 007 
-		nodeElementTbl[6][0-8]: 008 000 008 008 008 001 008 008 
-		nodeElementTbl[7][0-8]: 000 004 008 008 001 007 008 008 
-		nodeElementTbl[8][0-8]: 008 005 008 001 008 008 008 008 
-		nodeElementTbl[9][0-8]: 005 006 001 007 008 008 008 008 
-		nodeElementTbl[10][0-8]: 008 001 008 008 008 008 008 008 
-		nodeElementTbl[11][0-8]: 001 007 008 008 008 008 008 008 
-		nodeElementTbl[12][0-8]: 008 008 008 008 008 008 008 002 
-		nodeElementTbl[13][0-8]: 008 008 008 008 008 008 002 003 
-		nodeElementTbl[14][0-8]: 008 008 008 008 008 008 003 008 
-		nodeElementTbl[15][0-8]: 008 008 008 008 003 008 004 008 
-		nodeElementTbl[16][0-8]: 008 008 008 008 004 008 008 008 
-		nodeElementTbl[17][0-8]: 008 008 008 002 008 008 008 005 
-		nodeElementTbl[18][0-8]: 008 008 002 003 008 008 005 006 
-		nodeElementTbl[19][0-8]: 008 008 003 008 008 008 006 008 
-		nodeElementTbl[20][0-8]: 003 008 004 008 006 008 007 008 
-		nodeElementTbl[21][0-8]: 004 008 008 008 007 008 008 008 
-		nodeElementTbl[22][0-8]: 008 008 008 005 008 008 008 008 
-		nodeElementTbl[23][0-8]: 008 008 005 006 008 008 008 008 
-		nodeElementTbl[24][0-8]: 008 008 006 008 008 008 008 008 
-		nodeElementTbl[25][0-8]: 006 008 007 008 008 008 008 008 
-		nodeElementTbl[26][0-8]: 007 008 008 008 008 008 008 008 
-	element (ptr): 0x8061090
-	elementLocalCount: 2
-	elementDomainCount: 8
-	elementShadowCount: 6
-	elementGlobalCount: 8
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805d000
-	elementL2G[0-2]:   002 006 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805d000
-	elementD2G[0-8]:   002 006 000 001 003 004 005 007 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8061110
-	elementG2L[0-8]:   008 008 000 008 008 008 001 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x80610e0
-	elementG2D[0-8]:   002 003 000 004 005 006 001 007 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061140
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061170
-	elementNeighbourTbl[0-8]:
-		elementNeighbourTbl[0][0-26]: 008 008 008 008 008 008 008 008 008 008 002 003 008 004 008 008 008 008 005 006 008 001 007 008 008 008 
-		elementNeighbourTbl[1][0-26]: 008 002 003 008 000 004 008 008 008 008 005 006 008 007 008 008 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[2][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 008 003 008 000 004 008 008 008 008 005 006 008 001 007 
-		elementNeighbourTbl[3][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 002 008 000 004 008 008 008 008 005 006 008 001 007 008 
-		elementNeighbourTbl[4][0-26]: 008 008 008 008 008 008 008 008 008 002 003 008 000 008 008 008 008 005 006 008 001 007 008 008 008 008 
-		elementNeighbourTbl[5][0-26]: 008 008 008 008 002 003 008 000 004 008 008 008 008 006 008 001 007 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[6][0-26]: 008 008 008 002 003 008 000 004 008 008 008 008 005 008 001 007 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[7][0-26]: 002 003 008 000 004 008 008 008 008 005 006 008 001 008 008 008 008 008 008 008 008 008 008 008 008 008 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805aa18
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80614e0
-	elementNodeTbl[0-8]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 004 005 007 006 
-		elementNodeTbl[1][0-8]: 004 005 007 006 008 009 011 010 
-		elementNodeTbl[2][0-8]: 012 013 001 000 017 018 005 004 
-		elementNodeTbl[3][0-8]: 013 014 015 001 018 019 020 005 
-		elementNodeTbl[4][0-8]: 001 015 016 003 005 020 021 007 
-		elementNodeTbl[5][0-8]: 017 018 005 004 022 023 009 008 
-		elementNodeTbl[6][0-8]: 018 019 020 005 023 024 025 009 
-		elementNodeTbl[7][0-8]: 005 020 021 007 009 025 026 011 
-	procNbrCnt: 3
-	procNbrTbl (ptr): 0x80602b0
-		procNbrTbl[0]: 0
-		procNbrTbl[1]: 1
-		procNbrTbl[2]: 3
-	elementShadowInfo->procShadowedCnt (ptr): 0x8060420
-		elementShadowInfo->procShadowedCnt[0]: 2
-		elementShadowInfo->procShadowedCnt[1]: 2
-		elementShadowInfo->procShadowedCnt[2]: 2
-	elementShadowInfo->procShadowedTbl (ptr): 0x805d030
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x8060340
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-		elementShadowInfo->procShadowedTbl[1] (ptr): 0x8061708
-			elementShadowInfo->procShadowedTbl[1][0]: 0
-			elementShadowInfo->procShadowedTbl[1][1]: 1
-		elementShadowInfo->procShadowedTbl[2] (ptr): 0x8061770
-			elementShadowInfo->procShadowedTbl[2][0]: 0
-			elementShadowInfo->procShadowedTbl[2][1]: 1
-	elementShadowInfo->procShadowCnt (ptr): 0x8061788
-		elementShadowInfo->procShadowCnt[0]: 2
-		elementShadowInfo->procShadowCnt[1]: 2
-		elementShadowInfo->procShadowCnt[2]: 2
-	elementShadowInfo->procShadowTbl (ptr): 0x80617a0
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80617b8
-			elementShadowInfo->procShadowTbl[0][0]: 2
-			elementShadowInfo->procShadowTbl[0][1]: 5
-		elementShadowInfo->procShadowTbl[1] (ptr): 0x80617d0
-			elementShadowInfo->procShadowTbl[1][0]: 3
-			elementShadowInfo->procShadowTbl[1][1]: 6
-		elementShadowInfo->procShadowTbl[2] (ptr): 0x80617e8
-			elementShadowInfo->procShadowTbl[2][0]: 4
-			elementShadowInfo->procShadowTbl[2][1]: 7
-	nodeShadowInfo->procShadowedCnt (ptr): 0x8061840
-		nodeShadowInfo->procShadowedCnt[0]: 6
-		nodeShadowInfo->procShadowedCnt[1]: 9
-		nodeShadowInfo->procShadowedCnt[2]: 6
-	nodeShadowInfo->procShadowedTbl (ptr): 0x8061858
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x8061660
-			nodeShadowInfo->procShadowedTbl[0][0]: 2
-			nodeShadowInfo->procShadowedTbl[0][1]: 3
-			nodeShadowInfo->procShadowedTbl[0][2]: 6
-			nodeShadowInfo->procShadowedTbl[0][3]: 7
-			nodeShadowInfo->procShadowedTbl[0][4]: 10
-			nodeShadowInfo->procShadowedTbl[0][5]: 11
-		nodeShadowInfo->procShadowedTbl[1] (ptr): 0x80619e8
-			nodeShadowInfo->procShadowedTbl[1][0]: 0
-			nodeShadowInfo->procShadowedTbl[1][1]: 2
-			nodeShadowInfo->procShadowedTbl[1][2]: 3
-			nodeShadowInfo->procShadowedTbl[1][3]: 4
-			nodeShadowInfo->procShadowedTbl[1][4]: 6
-			nodeShadowInfo->procShadowedTbl[1][5]: 7
-			nodeShadowInfo->procShadowedTbl[1][6]: 8
-			nodeShadowInfo->procShadowedTbl[1][7]: 10
-			nodeShadowInfo->procShadowedTbl[1][8]: 11
-		nodeShadowInfo->procShadowedTbl[2] (ptr): 0x8061638
-			nodeShadowInfo->procShadowedTbl[2][0]: 0
-			nodeShadowInfo->procShadowedTbl[2][1]: 2
-			nodeShadowInfo->procShadowedTbl[2][2]: 4
-			nodeShadowInfo->procShadowedTbl[2][3]: 6
-			nodeShadowInfo->procShadowedTbl[2][4]: 8
-			nodeShadowInfo->procShadowedTbl[2][5]: 10
-	nodeShadowInfo->procShadowCnt (ptr): 0x8061a68
-		nodeShadowInfo->procShadowCnt[0]: 6
-		nodeShadowInfo->procShadowCnt[1]: 9
-		nodeShadowInfo->procShadowCnt[2]: 6
-	nodeShadowInfo->procShadowTbl (ptr): 0x8061a80
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8061610
-			nodeShadowInfo->procShadowTbl[0][0]: 12
-			nodeShadowInfo->procShadowTbl[0][1]: 13
-			nodeShadowInfo->procShadowTbl[0][2]: 17
-			nodeShadowInfo->procShadowTbl[0][3]: 18
-			nodeShadowInfo->procShadowTbl[0][4]: 22
-			nodeShadowInfo->procShadowTbl[0][5]: 23
-		nodeShadowInfo->procShadowTbl[1] (ptr): 0x8061a98
-			nodeShadowInfo->procShadowTbl[1][0]: 13
-			nodeShadowInfo->procShadowTbl[1][1]: 14
-			nodeShadowInfo->procShadowTbl[1][2]: 15
-			nodeShadowInfo->procShadowTbl[1][3]: 18
-			nodeShadowInfo->procShadowTbl[1][4]: 19
-			nodeShadowInfo->procShadowTbl[1][5]: 20
-			nodeShadowInfo->procShadowTbl[1][6]: 23
-			nodeShadowInfo->procShadowTbl[1][7]: 24
-			nodeShadowInfo->procShadowTbl[1][8]: 25
-		nodeShadowInfo->procShadowTbl[2] (ptr): 0x8061ac8
-			nodeShadowInfo->procShadowTbl[2][0]: 15
-			nodeShadowInfo->procShadowTbl[2][1]: 16
-			nodeShadowInfo->procShadowTbl[2][2]: 20
-			nodeShadowInfo->procShadowTbl[2][3]: 21
-			nodeShadowInfo->procShadowTbl[2][4]: 25
-			nodeShadowInfo->procShadowTbl[2][5]: 26
-Pre-sync:
-	nodeCoord[0]: { 2, 2, 2 } - temp: 12
-	nodeCoord[1]: { 2, 2, 2 } - temp: 12
-	nodeCoord[2]: { 2, 2, 2 } - temp: 12
-	nodeCoord[3]: { 2, 2, 2 } - temp: 12
-	nodeCoord[4]: { 2, 2, 2 } - temp: 12
-	nodeCoord[5]: { 2, 2, 2 } - temp: 12
-	nodeCoord[6]: { 2, 2, 2 } - temp: 12
-	nodeCoord[7]: { 2, 2, 2 } - temp: 12
-	nodeCoord[8]: { 2, 2, 2 } - temp: 12
-	nodeCoord[9]: { 2, 2, 2 } - temp: 12
-	nodeCoord[10]: { 2, 2, 2 } - temp: 12
-	nodeCoord[11]: { 2, 2, 2 } - temp: 12
-	nodeCoord[12]: { 2, 2, 2 } - temp: 12
-	nodeCoord[13]: { 2, 2, 2 } - temp: 12
-	nodeCoord[14]: { 2, 2, 2 } - temp: 12
-	nodeCoord[15]: { 2, 2, 2 } - temp: 12
-	nodeCoord[16]: { 2, 2, 2 } - temp: 12
-	nodeCoord[17]: { 2, 2, 2 } - temp: 12
-	nodeCoord[18]: { 2, 2, 2 } - temp: 12
-	nodeCoord[19]: { 2, 2, 2 } - temp: 12
-	nodeCoord[20]: { 2, 2, 2 } - temp: 12
-	nodeCoord[21]: { 2, 2, 2 } - temp: 12
-	nodeCoord[22]: { 2, 2, 2 } - temp: 12
-	nodeCoord[23]: { 2, 2, 2 } - temp: 12
-	nodeCoord[24]: { 2, 2, 2 } - temp: 12
-	nodeCoord[25]: { 2, 2, 2 } - temp: 12
-	nodeCoord[26]: { 2, 2, 2 } - temp: 12
-	element[0]: temp: 22
-	element[1]: temp: 22
-	element[2]: temp: 22
-	element[3]: temp: 22
-	element[4]: temp: 22
-	element[5]: temp: 22
-	element[6]: temp: 22
-	element[7]: temp: 22
-Post-sync:
-	nodeCoord[0]: { 2, 2, 2 } - temp: 12
-	nodeCoord[1]: { 2, 2, 2 } - temp: 12
-	nodeCoord[2]: { 2, 2, 2 } - temp: 12
-	nodeCoord[3]: { 2, 2, 2 } - temp: 12
-	nodeCoord[4]: { 2, 2, 2 } - temp: 12
-	nodeCoord[5]: { 2, 2, 2 } - temp: 12
-	nodeCoord[6]: { 2, 2, 2 } - temp: 12
-	nodeCoord[7]: { 2, 2, 2 } - temp: 12
-	nodeCoord[8]: { 2, 2, 2 } - temp: 12
-	nodeCoord[9]: { 2, 2, 2 } - temp: 12
-	nodeCoord[10]: { 2, 2, 2 } - temp: 12
-	nodeCoord[11]: { 2, 2, 2 } - temp: 12
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 1, 1, 1 } - temp: 11
-	nodeCoord[14]: { 1, 1, 1 } - temp: 11
-	nodeCoord[15]: { 3, 3, 3 } - temp: 13
-	nodeCoord[16]: { 3, 3, 3 } - temp: 13
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 1, 1, 1 } - temp: 11
-	nodeCoord[19]: { 1, 1, 1 } - temp: 11
-	nodeCoord[20]: { 3, 3, 3 } - temp: 13
-	nodeCoord[21]: { 3, 3, 3 } - temp: 13
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 1, 1, 1 } - temp: 11
-	nodeCoord[24]: { 1, 1, 1 } - temp: 11
-	nodeCoord[25]: { 3, 3, 3 } - temp: 13
-	nodeCoord[26]: { 3, 3, 3 } - temp: 13
-	element[0]: temp: 22
-	element[1]: temp: 22
-	element[2]: temp: 20
-	element[3]: temp: 21
-	element[4]: temp: 23
-	element[5]: temp: 20
-	element[6]: temp: 21
-	element[7]: temp: 23

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.2of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync-2D " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,414 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f728)
-Stg_Component (ptr): 0x805f728
-Stg_Object (ptr): 0x805f728
-	Stg_Class (ptr): 0x805f728
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f811dd
-		_print (func ptr): 0xb7f81a6a
-		_copy (func ptr): 0xb7f82c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f8051c
-	_construct (func ptr): 0xb7f8100e
-	_build (func ptr): 0xb7f83322
-	_initialise (func ptr): 0xb7f84214
-	_execute (func ptr): 0xb7f84219
-	_destroy (func ptr): 0xb7f811d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c560
-	layout (ptr): 0x805f478
-Extension (ptr):0x805faf8
-Stg_Object (ptr): 0x805faf8
-	Stg_Class (ptr): 0x805faf8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7ef9018
-		_print (func ptr): 0xb7ef9066
-		_copy (func ptr): 0xb7ef9200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fb58
-Stg_ObjectList (ptr):0x805fb58
-	Stg_Class (ptr): 0x805fb58
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f2af3e
-		_print (func ptr): 0xb7f2af75
-		_copy (func ptr): 0xb7f2b217
-	_append(func ptr): 0xb7f2be7b
-	_prepend(func ptr): 0xb7f2bf41
-	_replaceAll(func ptr): 0xb7f2c005
-	_replace(func ptr): 0xb7f2c0be
-	_insertBefore(func ptr): 0xb7f2c25b
-	_insertAfter(func ptr): 0xb7f2c416
-	_remove(func ptr): 0xb7f2c5d3
-	_getIndex(func ptr): 0xb7f2c679
-	_get(func ptr): 0xb7f2c727
-	_allocMoreMemory(func ptr): 0xb7f2c8fa
-	_insertAtIndex(func ptr): 0xb7f2c980
-	_removeByIndex(func ptr): 0xb7f2c9fe
-	_deleteAllObjects(func ptr): 0xb7f2c87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805fbc8
-Stg_Object (ptr): 0x805fbc8
-	Stg_Class (ptr): 0x805fbc8
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7ef9018
-		_print (func ptr): 0xb7ef9066
-		_copy (func ptr): 0xb7ef9200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fc28
-Stg_ObjectList (ptr):0x805fc28
-	Stg_Class (ptr): 0x805fc28
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f2af3e
-		_print (func ptr): 0xb7f2af75
-		_copy (func ptr): 0xb7f2b217
-	_append(func ptr): 0xb7f2be7b
-	_prepend(func ptr): 0xb7f2bf41
-	_replaceAll(func ptr): 0xb7f2c005
-	_replace(func ptr): 0xb7f2c0be
-	_insertBefore(func ptr): 0xb7f2c25b
-	_insertAfter(func ptr): 0xb7f2c416
-	_remove(func ptr): 0xb7f2c5d3
-	_getIndex(func ptr): 0xb7f2c679
-	_get(func ptr): 0xb7f2c727
-	_allocMoreMemory(func ptr): 0xb7f2c8fa
-	_insertAtIndex(func ptr): 0xb7f2c980
-	_removeByIndex(func ptr): 0xb7f2c9fe
-	_deleteAllObjects(func ptr): 0xb7f2c87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060458
-	nodeLocalCount: 12
-	nodeDomainCount: 27
-	nodeShadowCount: 15
-	nodeGlobalCount: 27
-	nodeCoord (ptr): 0x8060540
-	nodeCoord[0-27]:   (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), (3.00,3.00,3.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060238
-	nodeL2G[0-12]:   004 005 007 008 013 014 016 017 022 023 025 026 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060238
-	nodeD2G[0-27]:   004 005 007 008 013 014 016 017 022 023 025 026 000 001 002 003 006 009 010 011 012 015 018 019 020 021 024 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060850
-	nodeG2L[0-27]:   027 027 027 027 000 001 027 002 003 027 027 027 027 004 005 027 006 007 027 027 027 027 008 009 027 010 011 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80607d8
-	nodeG2D[0-27]:   012 013 014 015 000 001 016 002 003 017 018 019 020 004 005 021 006 007 022 023 024 025 008 009 026 010 011 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x80608c8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060940
-	nodeNeighbourTbl[0-27]:
-		nodeNeighbourTbl[0][0-6]: 001 002 004 015 013 027 
-		nodeNeighbourTbl[1][0-6]: 027 003 005 000 014 027 
-		nodeNeighbourTbl[2][0-6]: 003 027 006 016 000 027 
-		nodeNeighbourTbl[3][0-6]: 027 027 007 002 001 027 
-		nodeNeighbourTbl[4][0-6]: 005 006 008 020 018 000 
-		nodeNeighbourTbl[5][0-6]: 027 007 009 004 019 001 
-		nodeNeighbourTbl[6][0-6]: 007 027 010 021 004 002 
-		nodeNeighbourTbl[7][0-6]: 027 027 011 006 005 003 
-		nodeNeighbourTbl[8][0-6]: 009 010 027 025 023 004 
-		nodeNeighbourTbl[9][0-6]: 027 011 027 008 024 005 
-		nodeNeighbourTbl[10][0-6]: 011 027 027 026 008 006 
-		nodeNeighbourTbl[11][0-6]: 027 027 027 010 009 007 
-		nodeNeighbourTbl[12][0-6]: 013 015 017 027 027 027 
-		nodeNeighbourTbl[13][0-6]: 014 000 018 012 027 027 
-		nodeNeighbourTbl[14][0-6]: 027 001 019 013 027 027 
-		nodeNeighbourTbl[15][0-6]: 000 016 020 027 012 027 
-		nodeNeighbourTbl[16][0-6]: 002 027 021 027 015 027 
-		nodeNeighbourTbl[17][0-6]: 018 020 022 027 027 012 
-		nodeNeighbourTbl[18][0-6]: 019 004 023 017 027 013 
-		nodeNeighbourTbl[19][0-6]: 027 005 024 018 027 014 
-		nodeNeighbourTbl[20][0-6]: 004 021 025 027 017 015 
-		nodeNeighbourTbl[21][0-6]: 006 027 026 027 020 016 
-		nodeNeighbourTbl[22][0-6]: 023 025 027 027 027 017 
-		nodeNeighbourTbl[23][0-6]: 024 008 027 022 027 018 
-		nodeNeighbourTbl[24][0-6]: 027 009 027 023 027 019 
-		nodeNeighbourTbl[25][0-6]: 008 026 027 027 022 020 
-		nodeNeighbourTbl[26][0-6]: 010 027 027 027 025 021 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8060c40
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x8060cb8
-	nodeElementTbl[0-27]:
-		nodeElementTbl[0][0-8]: 008 008 008 008 002 003 004 000 
-		nodeElementTbl[1][0-8]: 008 008 008 008 003 008 000 008 
-		nodeElementTbl[2][0-8]: 008 008 008 008 004 000 008 008 
-		nodeElementTbl[3][0-8]: 008 008 008 008 000 008 008 008 
-		nodeElementTbl[4][0-8]: 002 003 004 000 005 006 007 001 
-		nodeElementTbl[5][0-8]: 003 008 000 008 006 008 001 008 
-		nodeElementTbl[6][0-8]: 004 000 008 008 007 001 008 008 
-		nodeElementTbl[7][0-8]: 000 008 008 008 001 008 008 008 
-		nodeElementTbl[8][0-8]: 005 006 007 001 008 008 008 008 
-		nodeElementTbl[9][0-8]: 006 008 001 008 008 008 008 008 
-		nodeElementTbl[10][0-8]: 007 001 008 008 008 008 008 008 
-		nodeElementTbl[11][0-8]: 001 008 008 008 008 008 008 008 
-		nodeElementTbl[12][0-8]: 008 008 008 008 008 008 008 002 
-		nodeElementTbl[13][0-8]: 008 008 008 008 008 008 002 003 
-		nodeElementTbl[14][0-8]: 008 008 008 008 008 008 003 008 
-		nodeElementTbl[15][0-8]: 008 008 008 008 008 002 008 004 
-		nodeElementTbl[16][0-8]: 008 008 008 008 008 004 008 008 
-		nodeElementTbl[17][0-8]: 008 008 008 002 008 008 008 005 
-		nodeElementTbl[18][0-8]: 008 008 002 003 008 008 005 006 
-		nodeElementTbl[19][0-8]: 008 008 003 008 008 008 006 008 
-		nodeElementTbl[20][0-8]: 008 002 008 004 008 005 008 007 
-		nodeElementTbl[21][0-8]: 008 004 008 008 008 007 008 008 
-		nodeElementTbl[22][0-8]: 008 008 008 005 008 008 008 008 
-		nodeElementTbl[23][0-8]: 008 008 005 006 008 008 008 008 
-		nodeElementTbl[24][0-8]: 008 008 006 008 008 008 008 008 
-		nodeElementTbl[25][0-8]: 008 005 008 007 008 008 008 008 
-		nodeElementTbl[26][0-8]: 008 007 008 008 008 008 008 008 
-	element (ptr): 0x8061090
-	elementLocalCount: 2
-	elementDomainCount: 8
-	elementShadowCount: 6
-	elementGlobalCount: 8
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805d000
-	elementL2G[0-2]:   003 007 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805d000
-	elementD2G[0-8]:   003 007 000 001 002 004 005 006 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x8061110
-	elementG2L[0-8]:   008 008 008 000 008 008 008 001 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x80610e0
-	elementG2D[0-8]:   002 003 004 000 005 006 007 001 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061140
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061170
-	elementNeighbourTbl[0-8]:
-		elementNeighbourTbl[0][0-26]: 008 008 008 008 008 008 008 008 008 002 003 008 004 008 008 008 008 005 006 008 007 001 008 008 008 008 
-		elementNeighbourTbl[1][0-26]: 002 003 008 004 000 008 008 008 008 005 006 008 007 008 008 008 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[2][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 008 003 008 004 000 008 008 008 008 005 006 008 007 001 
-		elementNeighbourTbl[3][0-26]: 008 008 008 008 008 008 008 008 008 008 008 008 002 008 004 000 008 008 008 008 005 006 008 007 001 008 
-		elementNeighbourTbl[4][0-26]: 008 008 008 008 008 008 008 008 008 008 002 003 008 000 008 008 008 008 005 006 008 007 001 008 008 008 
-		elementNeighbourTbl[5][0-26]: 008 008 008 008 002 003 008 004 000 008 008 008 008 006 008 007 001 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[6][0-26]: 008 008 008 002 003 008 004 000 008 008 008 008 005 008 007 001 008 008 008 008 008 008 008 008 008 008 
-		elementNeighbourTbl[7][0-26]: 008 002 003 008 004 000 008 008 008 008 005 006 008 001 008 008 008 008 008 008 008 008 008 008 008 008 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x805aa18
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80614e0
-	elementNodeTbl[0-8]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 004 005 007 006 
-		elementNodeTbl[1][0-8]: 004 005 007 006 008 009 011 010 
-		elementNodeTbl[2][0-8]: 012 013 000 015 017 018 004 020 
-		elementNodeTbl[3][0-8]: 013 014 001 000 018 019 005 004 
-		elementNodeTbl[4][0-8]: 015 000 002 016 020 004 006 021 
-		elementNodeTbl[5][0-8]: 017 018 004 020 022 023 008 025 
-		elementNodeTbl[6][0-8]: 018 019 005 004 023 024 009 008 
-		elementNodeTbl[7][0-8]: 020 004 006 021 025 008 010 026 
-	procNbrCnt: 3
-	procNbrTbl (ptr): 0x80602b0
-		procNbrTbl[0]: 0
-		procNbrTbl[1]: 1
-		procNbrTbl[2]: 2
-	elementShadowInfo->procShadowedCnt (ptr): 0x8060420
-		elementShadowInfo->procShadowedCnt[0]: 2
-		elementShadowInfo->procShadowedCnt[1]: 2
-		elementShadowInfo->procShadowedCnt[2]: 2
-	elementShadowInfo->procShadowedTbl (ptr): 0x805d030
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x8060340
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-		elementShadowInfo->procShadowedTbl[1] (ptr): 0x8061708
-			elementShadowInfo->procShadowedTbl[1][0]: 0
-			elementShadowInfo->procShadowedTbl[1][1]: 1
-		elementShadowInfo->procShadowedTbl[2] (ptr): 0x8061770
-			elementShadowInfo->procShadowedTbl[2][0]: 0
-			elementShadowInfo->procShadowedTbl[2][1]: 1
-	elementShadowInfo->procShadowCnt (ptr): 0x8061788
-		elementShadowInfo->procShadowCnt[0]: 2
-		elementShadowInfo->procShadowCnt[1]: 2
-		elementShadowInfo->procShadowCnt[2]: 2
-	elementShadowInfo->procShadowTbl (ptr): 0x80617a0
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80617b8
-			elementShadowInfo->procShadowTbl[0][0]: 2
-			elementShadowInfo->procShadowTbl[0][1]: 5
-		elementShadowInfo->procShadowTbl[1] (ptr): 0x80617d0
-			elementShadowInfo->procShadowTbl[1][0]: 3
-			elementShadowInfo->procShadowTbl[1][1]: 6
-		elementShadowInfo->procShadowTbl[2] (ptr): 0x80617e8
-			elementShadowInfo->procShadowTbl[2][0]: 4
-			elementShadowInfo->procShadowTbl[2][1]: 7
-	nodeShadowInfo->procShadowedCnt (ptr): 0x8061840
-		nodeShadowInfo->procShadowedCnt[0]: 9
-		nodeShadowInfo->procShadowedCnt[1]: 6
-		nodeShadowInfo->procShadowedCnt[2]: 6
-	nodeShadowInfo->procShadowedTbl (ptr): 0x8061858
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x8061998
-			nodeShadowInfo->procShadowedTbl[0][0]: 1
-			nodeShadowInfo->procShadowedTbl[0][1]: 2
-			nodeShadowInfo->procShadowedTbl[0][2]: 3
-			nodeShadowInfo->procShadowedTbl[0][3]: 5
-			nodeShadowInfo->procShadowedTbl[0][4]: 6
-			nodeShadowInfo->procShadowedTbl[0][5]: 7
-			nodeShadowInfo->procShadowedTbl[0][6]: 9
-			nodeShadowInfo->procShadowedTbl[0][7]: 10
-			nodeShadowInfo->procShadowedTbl[0][8]: 11
-		nodeShadowInfo->procShadowedTbl[1] (ptr): 0x8061660
-			nodeShadowInfo->procShadowedTbl[1][0]: 2
-			nodeShadowInfo->procShadowedTbl[1][1]: 3
-			nodeShadowInfo->procShadowedTbl[1][2]: 6
-			nodeShadowInfo->procShadowedTbl[1][3]: 7
-			nodeShadowInfo->procShadowedTbl[1][4]: 10
-			nodeShadowInfo->procShadowedTbl[1][5]: 11
-		nodeShadowInfo->procShadowedTbl[2] (ptr): 0x8061638
-			nodeShadowInfo->procShadowedTbl[2][0]: 1
-			nodeShadowInfo->procShadowedTbl[2][1]: 3
-			nodeShadowInfo->procShadowedTbl[2][2]: 5
-			nodeShadowInfo->procShadowedTbl[2][3]: 7
-			nodeShadowInfo->procShadowedTbl[2][4]: 9
-			nodeShadowInfo->procShadowedTbl[2][5]: 11
-	nodeShadowInfo->procShadowCnt (ptr): 0x8061a68
-		nodeShadowInfo->procShadowCnt[0]: 9
-		nodeShadowInfo->procShadowCnt[1]: 6
-		nodeShadowInfo->procShadowCnt[2]: 6
-	nodeShadowInfo->procShadowTbl (ptr): 0x8061a80
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8061a98
-			nodeShadowInfo->procShadowTbl[0][0]: 12
-			nodeShadowInfo->procShadowTbl[0][1]: 13
-			nodeShadowInfo->procShadowTbl[0][2]: 15
-			nodeShadowInfo->procShadowTbl[0][3]: 17
-			nodeShadowInfo->procShadowTbl[0][4]: 18
-			nodeShadowInfo->procShadowTbl[0][5]: 20
-			nodeShadowInfo->procShadowTbl[0][6]: 22
-			nodeShadowInfo->procShadowTbl[0][7]: 23
-			nodeShadowInfo->procShadowTbl[0][8]: 25
-		nodeShadowInfo->procShadowTbl[1] (ptr): 0x8061610
-			nodeShadowInfo->procShadowTbl[1][0]: 13
-			nodeShadowInfo->procShadowTbl[1][1]: 14
-			nodeShadowInfo->procShadowTbl[1][2]: 18
-			nodeShadowInfo->procShadowTbl[1][3]: 19
-			nodeShadowInfo->procShadowTbl[1][4]: 23
-			nodeShadowInfo->procShadowTbl[1][5]: 24
-		nodeShadowInfo->procShadowTbl[2] (ptr): 0x8061ac8
-			nodeShadowInfo->procShadowTbl[2][0]: 15
-			nodeShadowInfo->procShadowTbl[2][1]: 16
-			nodeShadowInfo->procShadowTbl[2][2]: 20
-			nodeShadowInfo->procShadowTbl[2][3]: 21
-			nodeShadowInfo->procShadowTbl[2][4]: 25
-			nodeShadowInfo->procShadowTbl[2][5]: 26
-Pre-sync:
-	nodeCoord[0]: { 3, 3, 3 } - temp: 13
-	nodeCoord[1]: { 3, 3, 3 } - temp: 13
-	nodeCoord[2]: { 3, 3, 3 } - temp: 13
-	nodeCoord[3]: { 3, 3, 3 } - temp: 13
-	nodeCoord[4]: { 3, 3, 3 } - temp: 13
-	nodeCoord[5]: { 3, 3, 3 } - temp: 13
-	nodeCoord[6]: { 3, 3, 3 } - temp: 13
-	nodeCoord[7]: { 3, 3, 3 } - temp: 13
-	nodeCoord[8]: { 3, 3, 3 } - temp: 13
-	nodeCoord[9]: { 3, 3, 3 } - temp: 13
-	nodeCoord[10]: { 3, 3, 3 } - temp: 13
-	nodeCoord[11]: { 3, 3, 3 } - temp: 13
-	nodeCoord[12]: { 3, 3, 3 } - temp: 13
-	nodeCoord[13]: { 3, 3, 3 } - temp: 13
-	nodeCoord[14]: { 3, 3, 3 } - temp: 13
-	nodeCoord[15]: { 3, 3, 3 } - temp: 13
-	nodeCoord[16]: { 3, 3, 3 } - temp: 13
-	nodeCoord[17]: { 3, 3, 3 } - temp: 13
-	nodeCoord[18]: { 3, 3, 3 } - temp: 13
-	nodeCoord[19]: { 3, 3, 3 } - temp: 13
-	nodeCoord[20]: { 3, 3, 3 } - temp: 13
-	nodeCoord[21]: { 3, 3, 3 } - temp: 13
-	nodeCoord[22]: { 3, 3, 3 } - temp: 13
-	nodeCoord[23]: { 3, 3, 3 } - temp: 13
-	nodeCoord[24]: { 3, 3, 3 } - temp: 13
-	nodeCoord[25]: { 3, 3, 3 } - temp: 13
-	nodeCoord[26]: { 3, 3, 3 } - temp: 13
-	element[0]: temp: 23
-	element[1]: temp: 23
-	element[2]: temp: 23
-	element[3]: temp: 23
-	element[4]: temp: 23
-	element[5]: temp: 23
-	element[6]: temp: 23
-	element[7]: temp: 23
-Post-sync:
-	nodeCoord[0]: { 3, 3, 3 } - temp: 13
-	nodeCoord[1]: { 3, 3, 3 } - temp: 13
-	nodeCoord[2]: { 3, 3, 3 } - temp: 13
-	nodeCoord[3]: { 3, 3, 3 } - temp: 13
-	nodeCoord[4]: { 3, 3, 3 } - temp: 13
-	nodeCoord[5]: { 3, 3, 3 } - temp: 13
-	nodeCoord[6]: { 3, 3, 3 } - temp: 13
-	nodeCoord[7]: { 3, 3, 3 } - temp: 13
-	nodeCoord[8]: { 3, 3, 3 } - temp: 13
-	nodeCoord[9]: { 3, 3, 3 } - temp: 13
-	nodeCoord[10]: { 3, 3, 3 } - temp: 13
-	nodeCoord[11]: { 3, 3, 3 } - temp: 13
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 1, 1, 1 } - temp: 11
-	nodeCoord[14]: { 1, 1, 1 } - temp: 11
-	nodeCoord[15]: { 2, 2, 2 } - temp: 12
-	nodeCoord[16]: { 2, 2, 2 } - temp: 12
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 1, 1, 1 } - temp: 11
-	nodeCoord[19]: { 1, 1, 1 } - temp: 11
-	nodeCoord[20]: { 2, 2, 2 } - temp: 12
-	nodeCoord[21]: { 2, 2, 2 } - temp: 12
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 1, 1, 1 } - temp: 11
-	nodeCoord[24]: { 1, 1, 1 } - temp: 11
-	nodeCoord[25]: { 2, 2, 2 } - temp: 12
-	nodeCoord[26]: { 2, 2, 2 } - temp: 12
-	element[0]: temp: 23
-	element[1]: temp: 23
-	element[2]: temp: 20
-	element[3]: temp: 21
-	element[4]: temp: 22
-	element[5]: temp: 20
-	element[6]: temp: 21
-	element[7]: temp: 22

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.3of4.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync-2D " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-2D.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,176 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: testMeshSync.c 2136 2004-09-30 02:47:13Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-struct _Node
-{
-	double temp;
-};
-
-struct _Element
-{
-	double temp;
-};
-
-
-int main( int argc, char* argv[] )
-{
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	MeshDecomp*		decomp;
-	MeshLayout*		ml;
-	Mesh*			mesh;
-	Stream*			stream;
-	Node_DomainIndex	node_dI;
-	Element_DomainIndex	element_dI;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	stream = Journal_Register (Info_Type, "myStream");
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New_All( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout, 2 );
-	ml = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
-	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", ml, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
-	
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	
-	for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-		mesh->nodeCoord[node_dI][0] = (double)rank;
-		mesh->nodeCoord[node_dI][1] = (double)rank;
-		mesh->nodeCoord[node_dI][2] = (double)rank;
-		mesh->node[node_dI].temp = 10.0 + (double)rank;
-	}
-	for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ ) {
-		mesh->element[element_dI].temp = 20.0 + (double)rank;
-	}
-	
-	if( rank == procToWatch ) {
-		Print(mesh, stream);
-		
-		printf( "Pre-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-	
-	Mesh_Sync( mesh );
-	
-	if( rank == procToWatch ) {
-		printf( "Post-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-	
-	Stg_Class_Delete( mesh );
-	Stg_Class_Delete( ml );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-large.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-large.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync-large.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,179 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: testMeshSync.c 2136 2004-09-30 02:47:13Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-struct _Node
-{
-	double temp;
-};
-
-struct _Element
-{
-	double temp;
-	double buf[100];
-};
-
-
-int main( int argc, char* argv[] )
-{
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	MeshDecomp*		decomp;
-	MeshLayout*		ml;
-	Mesh*			mesh;
-	Stream*			stream;
-	Node_DomainIndex	node_dI;
-	Element_DomainIndex	element_dI;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	stream = Journal_Register (Info_Type, "myStream");
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 17 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 13 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 13 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New_All( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout, 1 );
-	ml = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
-	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", ml, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
-	
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	
-	for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-		mesh->nodeCoord[node_dI][0] = (double)rank;
-		mesh->nodeCoord[node_dI][1] = (double)rank;
-		mesh->nodeCoord[node_dI][2] = (double)rank;
-		mesh->node[node_dI].temp = 10.0 + (double)rank;
-	}
-	for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ ) {
-		mesh->element[element_dI].temp = 20.0 + (double)rank;
-	}
-#if 0	
-	if( rank == procToWatch ) {
-		Print(mesh, stream);
-		
-		printf( "Pre-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-#endif
-	
-	Mesh_Sync( mesh );
-#if 0	
-	if( rank == procToWatch ) {
-		printf( "Post-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-#endif
-	
-	Stg_Class_Delete( mesh );
-	Stg_Class_Delete( ml );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,516 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f498)
-Stg_Component (ptr): 0x805f498
-Stg_Object (ptr): 0x805f498
-	Stg_Class (ptr): 0x805f498
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7fda1dd
-		_print (func ptr): 0xb7fdaa6a
-		_copy (func ptr): 0xb7fdbc4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7fd951c
-	_construct (func ptr): 0xb7fda00e
-	_build (func ptr): 0xb7fdc322
-	_initialise (func ptr): 0xb7fdd214
-	_execute (func ptr): 0xb7fdd219
-	_destroy (func ptr): 0xb7fda1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c568
-	layout (ptr): 0x805f150
-Extension (ptr):0x805f868
-Stg_Object (ptr): 0x805f868
-	Stg_Class (ptr): 0x805f868
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f52018
-		_print (func ptr): 0xb7f52066
-		_copy (func ptr): 0xb7f52200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f8e0
-Stg_ObjectList (ptr):0x805f8e0
-	Stg_Class (ptr): 0x805f8e0
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f83f3e
-		_print (func ptr): 0xb7f83f75
-		_copy (func ptr): 0xb7f84217
-	_append(func ptr): 0xb7f84e7b
-	_prepend(func ptr): 0xb7f84f41
-	_replaceAll(func ptr): 0xb7f85005
-	_replace(func ptr): 0xb7f850be
-	_insertBefore(func ptr): 0xb7f8525b
-	_insertAfter(func ptr): 0xb7f85416
-	_remove(func ptr): 0xb7f855d3
-	_getIndex(func ptr): 0xb7f85679
-	_get(func ptr): 0xb7f85727
-	_allocMoreMemory(func ptr): 0xb7f858fa
-	_insertAtIndex(func ptr): 0xb7f85980
-	_removeByIndex(func ptr): 0xb7f859fe
-	_deleteAllObjects(func ptr): 0xb7f8587b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f950
-Stg_Object (ptr): 0x805f950
-	Stg_Class (ptr): 0x805f950
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7f52018
-		_print (func ptr): 0xb7f52066
-		_copy (func ptr): 0xb7f52200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f9c8
-Stg_ObjectList (ptr):0x805f9c8
-	Stg_Class (ptr): 0x805f9c8
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7f83f3e
-		_print (func ptr): 0xb7f83f75
-		_copy (func ptr): 0xb7f84217
-	_append(func ptr): 0xb7f84e7b
-	_prepend(func ptr): 0xb7f84f41
-	_replaceAll(func ptr): 0xb7f85005
-	_replace(func ptr): 0xb7f850be
-	_insertBefore(func ptr): 0xb7f8525b
-	_insertAfter(func ptr): 0xb7f85416
-	_remove(func ptr): 0xb7f855d3
-	_getIndex(func ptr): 0xb7f85679
-	_get(func ptr): 0xb7f85727
-	_allocMoreMemory(func ptr): 0xb7f858fa
-	_insertAtIndex(func ptr): 0xb7f85980
-	_removeByIndex(func ptr): 0xb7f859fe
-	_deleteAllObjects(func ptr): 0xb7f8587b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060198
-	nodeLocalCount: 32
-	nodeDomainCount: 48
-	nodeShadowCount: 16
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060328
-	nodeCoord[0-48]:   (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), (0.00,0.00,0.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060808
-	nodeL2G[0-32]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060808
-	nodeD2G[0-48]:   000 001 004 005 008 009 012 013 016 017 020 021 024 025 028 029 032 033 036 037 040 041 044 045 048 049 052 053 056 057 060 061 002 006 010 014 018 022 026 030 034 038 042 046 050 054 058 062 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x80609e8
-	nodeG2L[0-64]:   000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 064 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80608d8
-	nodeG2D[0-64]:   000 001 032 064 002 003 033 064 004 005 034 064 006 007 035 064 008 009 036 064 010 011 037 064 012 013 038 064 014 015 039 064 016 017 040 064 018 019 041 064 020 021 042 064 022 023 043 064 024 025 044 064 026 027 045 064 028 029 046 064 030 031 047 064 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060af8
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060bc8
-	nodeNeighbourTbl[0-48]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 064 064 064 
-		nodeNeighbourTbl[1][0-6]: 032 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 064 000 064 
-		nodeNeighbourTbl[3][0-6]: 033 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 064 002 064 
-		nodeNeighbourTbl[5][0-6]: 034 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 064 004 064 
-		nodeNeighbourTbl[7][0-6]: 035 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 064 064 000 
-		nodeNeighbourTbl[9][0-6]: 036 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 064 008 002 
-		nodeNeighbourTbl[11][0-6]: 037 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 064 010 004 
-		nodeNeighbourTbl[13][0-6]: 038 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 064 012 006 
-		nodeNeighbourTbl[15][0-6]: 039 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 064 064 008 
-		nodeNeighbourTbl[17][0-6]: 040 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 064 016 010 
-		nodeNeighbourTbl[19][0-6]: 041 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 064 018 012 
-		nodeNeighbourTbl[21][0-6]: 042 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 064 020 014 
-		nodeNeighbourTbl[23][0-6]: 043 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 064 064 016 
-		nodeNeighbourTbl[25][0-6]: 044 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 064 024 018 
-		nodeNeighbourTbl[27][0-6]: 045 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 064 026 020 
-		nodeNeighbourTbl[29][0-6]: 046 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 064 028 022 
-		nodeNeighbourTbl[31][0-6]: 047 064 064 030 029 023 
-		nodeNeighbourTbl[32][0-6]: 064 033 036 001 064 064 
-		nodeNeighbourTbl[33][0-6]: 064 034 037 003 032 064 
-		nodeNeighbourTbl[34][0-6]: 064 035 038 005 033 064 
-		nodeNeighbourTbl[35][0-6]: 064 064 039 007 034 064 
-		nodeNeighbourTbl[36][0-6]: 064 037 040 009 064 032 
-		nodeNeighbourTbl[37][0-6]: 064 038 041 011 036 033 
-		nodeNeighbourTbl[38][0-6]: 064 039 042 013 037 034 
-		nodeNeighbourTbl[39][0-6]: 064 064 043 015 038 035 
-		nodeNeighbourTbl[40][0-6]: 064 041 044 017 064 036 
-		nodeNeighbourTbl[41][0-6]: 064 042 045 019 040 037 
-		nodeNeighbourTbl[42][0-6]: 064 043 046 021 041 038 
-		nodeNeighbourTbl[43][0-6]: 064 064 047 023 042 039 
-		nodeNeighbourTbl[44][0-6]: 064 045 064 025 064 040 
-		nodeNeighbourTbl[45][0-6]: 064 046 064 027 044 041 
-		nodeNeighbourTbl[46][0-6]: 064 047 064 029 045 042 
-		nodeNeighbourTbl[47][0-6]: 064 064 064 031 046 043 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x8061118
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x80611e8
-	nodeElementTbl[0-48]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 027 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 009 
-		nodeElementTbl[2][0-8]: 027 027 027 027 027 000 027 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 009 001 010 
-		nodeElementTbl[4][0-8]: 027 027 027 027 027 001 027 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 010 002 011 
-		nodeElementTbl[6][0-8]: 027 027 027 027 027 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 011 027 027 
-		nodeElementTbl[8][0-8]: 027 027 027 000 027 027 027 003 
-		nodeElementTbl[9][0-8]: 027 027 000 009 027 027 003 012 
-		nodeElementTbl[10][0-8]: 027 000 027 001 027 003 027 004 
-		nodeElementTbl[11][0-8]: 000 009 001 010 003 012 004 013 
-		nodeElementTbl[12][0-8]: 027 001 027 002 027 004 027 005 
-		nodeElementTbl[13][0-8]: 001 010 002 011 004 013 005 014 
-		nodeElementTbl[14][0-8]: 027 002 027 027 027 005 027 027 
-		nodeElementTbl[15][0-8]: 002 011 027 027 005 014 027 027 
-		nodeElementTbl[16][0-8]: 027 027 027 003 027 027 027 006 
-		nodeElementTbl[17][0-8]: 027 027 003 012 027 027 006 015 
-		nodeElementTbl[18][0-8]: 027 003 027 004 027 006 027 007 
-		nodeElementTbl[19][0-8]: 003 012 004 013 006 015 007 016 
-		nodeElementTbl[20][0-8]: 027 004 027 005 027 007 027 008 
-		nodeElementTbl[21][0-8]: 004 013 005 014 007 016 008 017 
-		nodeElementTbl[22][0-8]: 027 005 027 027 027 008 027 027 
-		nodeElementTbl[23][0-8]: 005 014 027 027 008 017 027 027 
-		nodeElementTbl[24][0-8]: 027 027 027 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 015 027 027 027 027 
-		nodeElementTbl[26][0-8]: 027 006 027 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 015 007 016 027 027 027 027 
-		nodeElementTbl[28][0-8]: 027 007 027 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 016 008 017 027 027 027 027 
-		nodeElementTbl[30][0-8]: 027 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 017 027 027 027 027 027 027 
-		nodeElementTbl[32][0-8]: 027 027 027 027 027 027 009 027 
-		nodeElementTbl[33][0-8]: 027 027 027 027 009 027 010 027 
-		nodeElementTbl[34][0-8]: 027 027 027 027 010 027 011 027 
-		nodeElementTbl[35][0-8]: 027 027 027 027 011 027 027 027 
-		nodeElementTbl[36][0-8]: 027 027 009 027 027 027 012 027 
-		nodeElementTbl[37][0-8]: 009 027 010 027 012 027 013 027 
-		nodeElementTbl[38][0-8]: 010 027 011 027 013 027 014 027 
-		nodeElementTbl[39][0-8]: 011 027 027 027 014 027 027 027 
-		nodeElementTbl[40][0-8]: 027 027 012 027 027 027 015 027 
-		nodeElementTbl[41][0-8]: 012 027 013 027 015 027 016 027 
-		nodeElementTbl[42][0-8]: 013 027 014 027 016 027 017 027 
-		nodeElementTbl[43][0-8]: 014 027 027 027 017 027 027 027 
-		nodeElementTbl[44][0-8]: 027 027 015 027 027 027 027 027 
-		nodeElementTbl[45][0-8]: 015 027 016 027 027 027 027 027 
-		nodeElementTbl[46][0-8]: 016 027 017 027 027 027 027 027 
-		nodeElementTbl[47][0-8]: 017 027 027 027 027 027 027 027 
-	element (ptr): 0x80618b8
-	elementLocalCount: 9
-	elementDomainCount: 18
-	elementShadowCount: 9
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805ff78
-	elementL2G[0-9]:   000 003 006 009 012 015 018 021 024 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805ff78
-	elementD2G[0-18]:   000 003 006 009 012 015 018 021 024 001 004 007 010 013 016 019 022 025 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x80619d0
-	elementG2L[0-27]:   000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 027 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8061958
-	elementG2D[0-27]:   000 009 027 001 010 027 002 011 027 003 012 027 004 013 027 005 014 027 006 015 027 007 016 027 008 017 027 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061a48
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061aa0
-	elementNeighbourTbl[0-18]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 009 027 001 010 027 027 027 027 003 012 027 004 013 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 027 000 009 027 010 027 002 011 027 003 012 027 004 013 027 005 014 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 027 001 010 027 011 027 027 027 027 004 013 027 005 014 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 027 000 009 027 001 010 027 027 027 027 012 027 004 013 027 027 027 027 006 015 027 007 016 
-		elementNeighbourTbl[4][0-26]: 027 000 009 027 001 010 027 002 011 027 003 012 027 013 027 005 014 027 006 015 027 007 016 027 008 017 
-		elementNeighbourTbl[5][0-26]: 027 001 010 027 002 011 027 027 027 027 004 013 027 014 027 027 027 027 007 016 027 008 017 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 027 003 012 027 004 013 027 027 027 027 015 027 007 016 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 027 003 012 027 004 013 027 005 014 027 006 015 027 016 027 008 017 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 027 004 013 027 005 014 027 027 027 027 007 016 027 017 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[9][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 000 027 001 010 027 027 027 027 003 012 027 004 013 027 
-		elementNeighbourTbl[10][0-26]: 027 027 027 027 027 027 027 027 027 000 009 027 001 027 002 011 027 003 012 027 004 013 027 005 014 027 
-		elementNeighbourTbl[11][0-26]: 027 027 027 027 027 027 027 027 027 001 010 027 002 027 027 027 027 004 013 027 005 014 027 027 027 027 
-		elementNeighbourTbl[12][0-26]: 027 027 027 000 009 027 001 010 027 027 027 027 003 027 004 013 027 027 027 027 006 015 027 007 016 027 
-		elementNeighbourTbl[13][0-26]: 000 009 027 001 010 027 002 011 027 003 012 027 004 027 005 014 027 006 015 027 007 016 027 008 017 027 
-		elementNeighbourTbl[14][0-26]: 001 010 027 002 011 027 027 027 027 004 013 027 005 027 027 027 027 007 016 027 008 017 027 027 027 027 
-		elementNeighbourTbl[15][0-26]: 027 027 027 003 012 027 004 013 027 027 027 027 006 027 007 016 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[16][0-26]: 003 012 027 004 013 027 005 014 027 006 015 027 007 027 008 017 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[17][0-26]: 004 013 027 005 014 027 027 027 027 007 016 027 008 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x8062248
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x80622a0
-	elementNodeTbl[0-18]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-		elementNodeTbl[9][0-8]: 001 032 033 003 009 036 037 011 
-		elementNodeTbl[10][0-8]: 003 033 034 005 011 037 038 013 
-		elementNodeTbl[11][0-8]: 005 034 035 007 013 038 039 015 
-		elementNodeTbl[12][0-8]: 009 036 037 011 017 040 041 019 
-		elementNodeTbl[13][0-8]: 011 037 038 013 019 041 042 021 
-		elementNodeTbl[14][0-8]: 013 038 039 015 021 042 043 023 
-		elementNodeTbl[15][0-8]: 017 040 041 019 025 044 045 027 
-		elementNodeTbl[16][0-8]: 019 041 042 021 027 045 046 029 
-		elementNodeTbl[17][0-8]: 021 042 043 023 029 046 047 031 
-	procNbrCnt: 1
-	procNbrTbl (ptr): 0x8060080
-		procNbrTbl[0]: 1
-	elementShadowInfo->procShadowedCnt (ptr): 0x805fff8
-		elementShadowInfo->procShadowedCnt[0]: 9
-	elementShadowInfo->procShadowedTbl (ptr): 0x8060160
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x805d008
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-			elementShadowInfo->procShadowedTbl[0][2]: 2
-			elementShadowInfo->procShadowedTbl[0][3]: 3
-			elementShadowInfo->procShadowedTbl[0][4]: 4
-			elementShadowInfo->procShadowedTbl[0][5]: 5
-			elementShadowInfo->procShadowedTbl[0][6]: 6
-			elementShadowInfo->procShadowedTbl[0][7]: 7
-			elementShadowInfo->procShadowedTbl[0][8]: 8
-	elementShadowInfo->procShadowCnt (ptr): 0x805aa30
-		elementShadowInfo->procShadowCnt[0]: 9
-	elementShadowInfo->procShadowTbl (ptr): 0x805aa40
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80607b8
-			elementShadowInfo->procShadowTbl[0][0]: 9
-			elementShadowInfo->procShadowTbl[0][1]: 10
-			elementShadowInfo->procShadowTbl[0][2]: 11
-			elementShadowInfo->procShadowTbl[0][3]: 12
-			elementShadowInfo->procShadowTbl[0][4]: 13
-			elementShadowInfo->procShadowTbl[0][5]: 14
-			elementShadowInfo->procShadowTbl[0][6]: 15
-			elementShadowInfo->procShadowTbl[0][7]: 16
-			elementShadowInfo->procShadowTbl[0][8]: 17
-	nodeShadowInfo->procShadowedCnt (ptr): 0x805d038
-		nodeShadowInfo->procShadowedCnt[0]: 16
-	nodeShadowInfo->procShadowedTbl (ptr): 0x80607e8
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x80625a8
-			nodeShadowInfo->procShadowedTbl[0][0]: 0
-			nodeShadowInfo->procShadowedTbl[0][1]: 2
-			nodeShadowInfo->procShadowedTbl[0][2]: 4
-			nodeShadowInfo->procShadowedTbl[0][3]: 6
-			nodeShadowInfo->procShadowedTbl[0][4]: 8
-			nodeShadowInfo->procShadowedTbl[0][5]: 10
-			nodeShadowInfo->procShadowedTbl[0][6]: 12
-			nodeShadowInfo->procShadowedTbl[0][7]: 14
-			nodeShadowInfo->procShadowedTbl[0][8]: 16
-			nodeShadowInfo->procShadowedTbl[0][9]: 18
-			nodeShadowInfo->procShadowedTbl[0][10]: 20
-			nodeShadowInfo->procShadowedTbl[0][11]: 22
-			nodeShadowInfo->procShadowedTbl[0][12]: 24
-			nodeShadowInfo->procShadowedTbl[0][13]: 26
-			nodeShadowInfo->procShadowedTbl[0][14]: 28
-			nodeShadowInfo->procShadowedTbl[0][15]: 30
-	nodeShadowInfo->procShadowCnt (ptr): 0x8062678
-		nodeShadowInfo->procShadowCnt[0]: 16
-	nodeShadowInfo->procShadowTbl (ptr): 0x80625f8
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8062688
-			nodeShadowInfo->procShadowTbl[0][0]: 32
-			nodeShadowInfo->procShadowTbl[0][1]: 33
-			nodeShadowInfo->procShadowTbl[0][2]: 34
-			nodeShadowInfo->procShadowTbl[0][3]: 35
-			nodeShadowInfo->procShadowTbl[0][4]: 36
-			nodeShadowInfo->procShadowTbl[0][5]: 37
-			nodeShadowInfo->procShadowTbl[0][6]: 38
-			nodeShadowInfo->procShadowTbl[0][7]: 39
-			nodeShadowInfo->procShadowTbl[0][8]: 40
-			nodeShadowInfo->procShadowTbl[0][9]: 41
-			nodeShadowInfo->procShadowTbl[0][10]: 42
-			nodeShadowInfo->procShadowTbl[0][11]: 43
-			nodeShadowInfo->procShadowTbl[0][12]: 44
-			nodeShadowInfo->procShadowTbl[0][13]: 45
-			nodeShadowInfo->procShadowTbl[0][14]: 46
-			nodeShadowInfo->procShadowTbl[0][15]: 47
-Pre-sync:
-	nodeCoord[0]: { 0, 0, 0 } - temp: 10
-	nodeCoord[1]: { 0, 0, 0 } - temp: 10
-	nodeCoord[2]: { 0, 0, 0 } - temp: 10
-	nodeCoord[3]: { 0, 0, 0 } - temp: 10
-	nodeCoord[4]: { 0, 0, 0 } - temp: 10
-	nodeCoord[5]: { 0, 0, 0 } - temp: 10
-	nodeCoord[6]: { 0, 0, 0 } - temp: 10
-	nodeCoord[7]: { 0, 0, 0 } - temp: 10
-	nodeCoord[8]: { 0, 0, 0 } - temp: 10
-	nodeCoord[9]: { 0, 0, 0 } - temp: 10
-	nodeCoord[10]: { 0, 0, 0 } - temp: 10
-	nodeCoord[11]: { 0, 0, 0 } - temp: 10
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 0, 0, 0 } - temp: 10
-	nodeCoord[14]: { 0, 0, 0 } - temp: 10
-	nodeCoord[15]: { 0, 0, 0 } - temp: 10
-	nodeCoord[16]: { 0, 0, 0 } - temp: 10
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 0, 0, 0 } - temp: 10
-	nodeCoord[19]: { 0, 0, 0 } - temp: 10
-	nodeCoord[20]: { 0, 0, 0 } - temp: 10
-	nodeCoord[21]: { 0, 0, 0 } - temp: 10
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 0, 0, 0 } - temp: 10
-	nodeCoord[24]: { 0, 0, 0 } - temp: 10
-	nodeCoord[25]: { 0, 0, 0 } - temp: 10
-	nodeCoord[26]: { 0, 0, 0 } - temp: 10
-	nodeCoord[27]: { 0, 0, 0 } - temp: 10
-	nodeCoord[28]: { 0, 0, 0 } - temp: 10
-	nodeCoord[29]: { 0, 0, 0 } - temp: 10
-	nodeCoord[30]: { 0, 0, 0 } - temp: 10
-	nodeCoord[31]: { 0, 0, 0 } - temp: 10
-	nodeCoord[32]: { 0, 0, 0 } - temp: 10
-	nodeCoord[33]: { 0, 0, 0 } - temp: 10
-	nodeCoord[34]: { 0, 0, 0 } - temp: 10
-	nodeCoord[35]: { 0, 0, 0 } - temp: 10
-	nodeCoord[36]: { 0, 0, 0 } - temp: 10
-	nodeCoord[37]: { 0, 0, 0 } - temp: 10
-	nodeCoord[38]: { 0, 0, 0 } - temp: 10
-	nodeCoord[39]: { 0, 0, 0 } - temp: 10
-	nodeCoord[40]: { 0, 0, 0 } - temp: 10
-	nodeCoord[41]: { 0, 0, 0 } - temp: 10
-	nodeCoord[42]: { 0, 0, 0 } - temp: 10
-	nodeCoord[43]: { 0, 0, 0 } - temp: 10
-	nodeCoord[44]: { 0, 0, 0 } - temp: 10
-	nodeCoord[45]: { 0, 0, 0 } - temp: 10
-	nodeCoord[46]: { 0, 0, 0 } - temp: 10
-	nodeCoord[47]: { 0, 0, 0 } - temp: 10
-	element[0]: temp: 20
-	element[1]: temp: 20
-	element[2]: temp: 20
-	element[3]: temp: 20
-	element[4]: temp: 20
-	element[5]: temp: 20
-	element[6]: temp: 20
-	element[7]: temp: 20
-	element[8]: temp: 20
-	element[9]: temp: 20
-	element[10]: temp: 20
-	element[11]: temp: 20
-	element[12]: temp: 20
-	element[13]: temp: 20
-	element[14]: temp: 20
-	element[15]: temp: 20
-	element[16]: temp: 20
-	element[17]: temp: 20
-Post-sync:
-	nodeCoord[0]: { 0, 0, 0 } - temp: 10
-	nodeCoord[1]: { 0, 0, 0 } - temp: 10
-	nodeCoord[2]: { 0, 0, 0 } - temp: 10
-	nodeCoord[3]: { 0, 0, 0 } - temp: 10
-	nodeCoord[4]: { 0, 0, 0 } - temp: 10
-	nodeCoord[5]: { 0, 0, 0 } - temp: 10
-	nodeCoord[6]: { 0, 0, 0 } - temp: 10
-	nodeCoord[7]: { 0, 0, 0 } - temp: 10
-	nodeCoord[8]: { 0, 0, 0 } - temp: 10
-	nodeCoord[9]: { 0, 0, 0 } - temp: 10
-	nodeCoord[10]: { 0, 0, 0 } - temp: 10
-	nodeCoord[11]: { 0, 0, 0 } - temp: 10
-	nodeCoord[12]: { 0, 0, 0 } - temp: 10
-	nodeCoord[13]: { 0, 0, 0 } - temp: 10
-	nodeCoord[14]: { 0, 0, 0 } - temp: 10
-	nodeCoord[15]: { 0, 0, 0 } - temp: 10
-	nodeCoord[16]: { 0, 0, 0 } - temp: 10
-	nodeCoord[17]: { 0, 0, 0 } - temp: 10
-	nodeCoord[18]: { 0, 0, 0 } - temp: 10
-	nodeCoord[19]: { 0, 0, 0 } - temp: 10
-	nodeCoord[20]: { 0, 0, 0 } - temp: 10
-	nodeCoord[21]: { 0, 0, 0 } - temp: 10
-	nodeCoord[22]: { 0, 0, 0 } - temp: 10
-	nodeCoord[23]: { 0, 0, 0 } - temp: 10
-	nodeCoord[24]: { 0, 0, 0 } - temp: 10
-	nodeCoord[25]: { 0, 0, 0 } - temp: 10
-	nodeCoord[26]: { 0, 0, 0 } - temp: 10
-	nodeCoord[27]: { 0, 0, 0 } - temp: 10
-	nodeCoord[28]: { 0, 0, 0 } - temp: 10
-	nodeCoord[29]: { 0, 0, 0 } - temp: 10
-	nodeCoord[30]: { 0, 0, 0 } - temp: 10
-	nodeCoord[31]: { 0, 0, 0 } - temp: 10
-	nodeCoord[32]: { 1, 1, 1 } - temp: 11
-	nodeCoord[33]: { 1, 1, 1 } - temp: 11
-	nodeCoord[34]: { 1, 1, 1 } - temp: 11
-	nodeCoord[35]: { 1, 1, 1 } - temp: 11
-	nodeCoord[36]: { 1, 1, 1 } - temp: 11
-	nodeCoord[37]: { 1, 1, 1 } - temp: 11
-	nodeCoord[38]: { 1, 1, 1 } - temp: 11
-	nodeCoord[39]: { 1, 1, 1 } - temp: 11
-	nodeCoord[40]: { 1, 1, 1 } - temp: 11
-	nodeCoord[41]: { 1, 1, 1 } - temp: 11
-	nodeCoord[42]: { 1, 1, 1 } - temp: 11
-	nodeCoord[43]: { 1, 1, 1 } - temp: 11
-	nodeCoord[44]: { 1, 1, 1 } - temp: 11
-	nodeCoord[45]: { 1, 1, 1 } - temp: 11
-	nodeCoord[46]: { 1, 1, 1 } - temp: 11
-	nodeCoord[47]: { 1, 1, 1 } - temp: 11
-	element[0]: temp: 20
-	element[1]: temp: 20
-	element[2]: temp: 20
-	element[3]: temp: 20
-	element[4]: temp: 20
-	element[5]: temp: 20
-	element[6]: temp: 20
-	element[7]: temp: 20
-	element[8]: temp: 20
-	element[9]: temp: 21
-	element[10]: temp: 21
-	element[11]: temp: 21
-	element[12]: temp: 21
-	element[13]: temp: 21
-	element[14]: temp: 21
-	element[15]: temp: 21
-	element[16]: temp: 21
-	element[17]: temp: 21

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,675 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f5c0)
-Stg_Component (ptr): 0x805f5c0
-Stg_Object (ptr): 0x805f5c0
-	Stg_Class (ptr): 0x805f5c0
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f331dd
-		_print (func ptr): 0xb7f33a6a
-		_copy (func ptr): 0xb7f34c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f3251c
-	_construct (func ptr): 0xb7f3300e
-	_build (func ptr): 0xb7f35322
-	_initialise (func ptr): 0xb7f36214
-	_execute (func ptr): 0xb7f36219
-	_destroy (func ptr): 0xb7f331d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c540
-	layout (ptr): 0x805f278
-Extension (ptr):0x805f990
-Stg_Object (ptr): 0x805f990
-	Stg_Class (ptr): 0x805f990
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7eab018
-		_print (func ptr): 0xb7eab066
-		_copy (func ptr): 0xb7eab200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805fa08
-Stg_ObjectList (ptr):0x805fa08
-	Stg_Class (ptr): 0x805fa08
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7edcf3e
-		_print (func ptr): 0xb7edcf75
-		_copy (func ptr): 0xb7edd217
-	_append(func ptr): 0xb7edde7b
-	_prepend(func ptr): 0xb7eddf41
-	_replaceAll(func ptr): 0xb7ede005
-	_replace(func ptr): 0xb7ede0be
-	_insertBefore(func ptr): 0xb7ede25b
-	_insertAfter(func ptr): 0xb7ede416
-	_remove(func ptr): 0xb7ede5d3
-	_getIndex(func ptr): 0xb7ede679
-	_get(func ptr): 0xb7ede727
-	_allocMoreMemory(func ptr): 0xb7ede8fa
-	_insertAtIndex(func ptr): 0xb7ede980
-	_removeByIndex(func ptr): 0xb7ede9fe
-	_deleteAllObjects(func ptr): 0xb7ede87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805fa78
-Stg_Object (ptr): 0x805fa78
-	Stg_Class (ptr): 0x805fa78
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7eab018
-		_print (func ptr): 0xb7eab066
-		_copy (func ptr): 0xb7eab200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805faf0
-Stg_ObjectList (ptr):0x805faf0
-	Stg_Class (ptr): 0x805faf0
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7edcf3e
-		_print (func ptr): 0xb7edcf75
-		_copy (func ptr): 0xb7edd217
-	_append(func ptr): 0xb7edde7b
-	_prepend(func ptr): 0xb7eddf41
-	_replaceAll(func ptr): 0xb7ede005
-	_replace(func ptr): 0xb7ede0be
-	_insertBefore(func ptr): 0xb7ede25b
-	_insertAfter(func ptr): 0xb7ede416
-	_remove(func ptr): 0xb7ede5d3
-	_getIndex(func ptr): 0xb7ede679
-	_get(func ptr): 0xb7ede727
-	_allocMoreMemory(func ptr): 0xb7ede8fa
-	_insertAtIndex(func ptr): 0xb7ede980
-	_removeByIndex(func ptr): 0xb7ede9fe
-	_deleteAllObjects(func ptr): 0xb7ede87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x80602c0
-	nodeLocalCount: 32
-	nodeDomainCount: 64
-	nodeShadowCount: 32
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x80604d0
-	nodeCoord[0-64]:   (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), (1.00,1.00,1.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x8060b70
-	nodeL2G[0-32]:   001 002 005 006 009 010 013 014 017 018 021 022 025 026 029 030 033 034 037 038 041 042 045 046 049 050 053 054 057 058 061 062 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x8060b70
-	nodeD2G[0-64]:   001 002 005 006 009 010 013 014 017 018 021 022 025 026 029 030 033 034 037 038 041 042 045 046 049 050 053 054 057 058 061 062 000 003 004 007 008 011 012 015 016 019 020 023 024 027 028 031 032 035 036 039 040 043 044 047 048 051 052 055 056 059 060 063 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x8060d90
-	nodeG2L[0-64]:   064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 064 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x8060c80
-	nodeG2D[0-64]:   032 000 001 033 034 002 003 035 036 004 005 037 038 006 007 039 040 008 009 041 042 010 011 043 044 012 013 045 046 014 015 047 048 016 017 049 050 018 019 051 052 020 021 053 054 022 023 055 056 024 025 057 058 026 027 059 060 028 029 061 062 030 031 063 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060ea0
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060fb0
-	nodeNeighbourTbl[0-64]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 032 064 064 
-		nodeNeighbourTbl[1][0-6]: 033 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 034 000 064 
-		nodeNeighbourTbl[3][0-6]: 035 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 036 002 064 
-		nodeNeighbourTbl[5][0-6]: 037 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 038 004 064 
-		nodeNeighbourTbl[7][0-6]: 039 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 040 064 000 
-		nodeNeighbourTbl[9][0-6]: 041 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 042 008 002 
-		nodeNeighbourTbl[11][0-6]: 043 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 044 010 004 
-		nodeNeighbourTbl[13][0-6]: 045 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 046 012 006 
-		nodeNeighbourTbl[15][0-6]: 047 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 048 064 008 
-		nodeNeighbourTbl[17][0-6]: 049 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 050 016 010 
-		nodeNeighbourTbl[19][0-6]: 051 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 052 018 012 
-		nodeNeighbourTbl[21][0-6]: 053 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 054 020 014 
-		nodeNeighbourTbl[23][0-6]: 055 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 056 064 016 
-		nodeNeighbourTbl[25][0-6]: 057 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 058 024 018 
-		nodeNeighbourTbl[27][0-6]: 059 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 060 026 020 
-		nodeNeighbourTbl[29][0-6]: 061 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 062 028 022 
-		nodeNeighbourTbl[31][0-6]: 063 064 064 030 029 023 
-		nodeNeighbourTbl[32][0-6]: 000 034 040 064 064 064 
-		nodeNeighbourTbl[33][0-6]: 064 035 041 001 064 064 
-		nodeNeighbourTbl[34][0-6]: 002 036 042 064 032 064 
-		nodeNeighbourTbl[35][0-6]: 064 037 043 003 033 064 
-		nodeNeighbourTbl[36][0-6]: 004 038 044 064 034 064 
-		nodeNeighbourTbl[37][0-6]: 064 039 045 005 035 064 
-		nodeNeighbourTbl[38][0-6]: 006 064 046 064 036 064 
-		nodeNeighbourTbl[39][0-6]: 064 064 047 007 037 064 
-		nodeNeighbourTbl[40][0-6]: 008 042 048 064 064 032 
-		nodeNeighbourTbl[41][0-6]: 064 043 049 009 064 033 
-		nodeNeighbourTbl[42][0-6]: 010 044 050 064 040 034 
-		nodeNeighbourTbl[43][0-6]: 064 045 051 011 041 035 
-		nodeNeighbourTbl[44][0-6]: 012 046 052 064 042 036 
-		nodeNeighbourTbl[45][0-6]: 064 047 053 013 043 037 
-		nodeNeighbourTbl[46][0-6]: 014 064 054 064 044 038 
-		nodeNeighbourTbl[47][0-6]: 064 064 055 015 045 039 
-		nodeNeighbourTbl[48][0-6]: 016 050 056 064 064 040 
-		nodeNeighbourTbl[49][0-6]: 064 051 057 017 064 041 
-		nodeNeighbourTbl[50][0-6]: 018 052 058 064 048 042 
-		nodeNeighbourTbl[51][0-6]: 064 053 059 019 049 043 
-		nodeNeighbourTbl[52][0-6]: 020 054 060 064 050 044 
-		nodeNeighbourTbl[53][0-6]: 064 055 061 021 051 045 
-		nodeNeighbourTbl[54][0-6]: 022 064 062 064 052 046 
-		nodeNeighbourTbl[55][0-6]: 064 064 063 023 053 047 
-		nodeNeighbourTbl[56][0-6]: 024 058 064 064 064 048 
-		nodeNeighbourTbl[57][0-6]: 064 059 064 025 064 049 
-		nodeNeighbourTbl[58][0-6]: 026 060 064 064 056 050 
-		nodeNeighbourTbl[59][0-6]: 064 061 064 027 057 051 
-		nodeNeighbourTbl[60][0-6]: 028 062 064 064 058 052 
-		nodeNeighbourTbl[61][0-6]: 064 063 064 029 059 053 
-		nodeNeighbourTbl[62][0-6]: 030 064 064 064 060 054 
-		nodeNeighbourTbl[63][0-6]: 064 064 064 031 061 055 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x80616c0
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x80617d0
-	nodeElementTbl[0-64]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 009 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 010 
-		nodeElementTbl[2][0-8]: 027 027 027 027 009 000 011 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 010 001 012 
-		nodeElementTbl[4][0-8]: 027 027 027 027 011 001 013 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 012 002 014 
-		nodeElementTbl[6][0-8]: 027 027 027 027 013 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 014 027 027 
-		nodeElementTbl[8][0-8]: 027 027 009 000 027 027 015 003 
-		nodeElementTbl[9][0-8]: 027 027 000 010 027 027 003 016 
-		nodeElementTbl[10][0-8]: 009 000 011 001 015 003 017 004 
-		nodeElementTbl[11][0-8]: 000 010 001 012 003 016 004 018 
-		nodeElementTbl[12][0-8]: 011 001 013 002 017 004 019 005 
-		nodeElementTbl[13][0-8]: 001 012 002 014 004 018 005 020 
-		nodeElementTbl[14][0-8]: 013 002 027 027 019 005 027 027 
-		nodeElementTbl[15][0-8]: 002 014 027 027 005 020 027 027 
-		nodeElementTbl[16][0-8]: 027 027 015 003 027 027 021 006 
-		nodeElementTbl[17][0-8]: 027 027 003 016 027 027 006 022 
-		nodeElementTbl[18][0-8]: 015 003 017 004 021 006 023 007 
-		nodeElementTbl[19][0-8]: 003 016 004 018 006 022 007 024 
-		nodeElementTbl[20][0-8]: 017 004 019 005 023 007 025 008 
-		nodeElementTbl[21][0-8]: 004 018 005 020 007 024 008 026 
-		nodeElementTbl[22][0-8]: 019 005 027 027 025 008 027 027 
-		nodeElementTbl[23][0-8]: 005 020 027 027 008 026 027 027 
-		nodeElementTbl[24][0-8]: 027 027 021 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 022 027 027 027 027 
-		nodeElementTbl[26][0-8]: 021 006 023 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 022 007 024 027 027 027 027 
-		nodeElementTbl[28][0-8]: 023 007 025 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 024 008 026 027 027 027 027 
-		nodeElementTbl[30][0-8]: 025 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 026 027 027 027 027 027 027 
-		nodeElementTbl[32][0-8]: 027 027 027 027 027 027 027 009 
-		nodeElementTbl[33][0-8]: 027 027 027 027 027 027 010 027 
-		nodeElementTbl[34][0-8]: 027 027 027 027 027 009 027 011 
-		nodeElementTbl[35][0-8]: 027 027 027 027 010 027 012 027 
-		nodeElementTbl[36][0-8]: 027 027 027 027 027 011 027 013 
-		nodeElementTbl[37][0-8]: 027 027 027 027 012 027 014 027 
-		nodeElementTbl[38][0-8]: 027 027 027 027 027 013 027 027 
-		nodeElementTbl[39][0-8]: 027 027 027 027 014 027 027 027 
-		nodeElementTbl[40][0-8]: 027 027 027 009 027 027 027 015 
-		nodeElementTbl[41][0-8]: 027 027 010 027 027 027 016 027 
-		nodeElementTbl[42][0-8]: 027 009 027 011 027 015 027 017 
-		nodeElementTbl[43][0-8]: 010 027 012 027 016 027 018 027 
-		nodeElementTbl[44][0-8]: 027 011 027 013 027 017 027 019 
-		nodeElementTbl[45][0-8]: 012 027 014 027 018 027 020 027 
-		nodeElementTbl[46][0-8]: 027 013 027 027 027 019 027 027 
-		nodeElementTbl[47][0-8]: 014 027 027 027 020 027 027 027 
-		nodeElementTbl[48][0-8]: 027 027 027 015 027 027 027 021 
-		nodeElementTbl[49][0-8]: 027 027 016 027 027 027 022 027 
-		nodeElementTbl[50][0-8]: 027 015 027 017 027 021 027 023 
-		nodeElementTbl[51][0-8]: 016 027 018 027 022 027 024 027 
-		nodeElementTbl[52][0-8]: 027 017 027 019 027 023 027 025 
-		nodeElementTbl[53][0-8]: 018 027 020 027 024 027 026 027 
-		nodeElementTbl[54][0-8]: 027 019 027 027 027 025 027 027 
-		nodeElementTbl[55][0-8]: 020 027 027 027 026 027 027 027 
-		nodeElementTbl[56][0-8]: 027 027 027 021 027 027 027 027 
-		nodeElementTbl[57][0-8]: 027 027 022 027 027 027 027 027 
-		nodeElementTbl[58][0-8]: 027 021 027 023 027 027 027 027 
-		nodeElementTbl[59][0-8]: 022 027 024 027 027 027 027 027 
-		nodeElementTbl[60][0-8]: 027 023 027 025 027 027 027 027 
-		nodeElementTbl[61][0-8]: 024 027 026 027 027 027 027 027 
-		nodeElementTbl[62][0-8]: 027 025 027 027 027 027 027 027 
-		nodeElementTbl[63][0-8]: 026 027 027 027 027 027 027 027 
-	element (ptr): 0x80620e0
-	elementLocalCount: 9
-	elementDomainCount: 27
-	elementShadowCount: 18
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x80600a0
-	elementL2G[0-9]:   001 004 007 010 013 016 019 022 025 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x80600a0
-	elementD2G[0-27]:   001 004 007 010 013 016 019 022 025 000 002 003 005 006 008 009 011 012 014 015 017 018 020 021 023 024 026 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x80621c8
-	elementG2L[0-27]:   027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 027 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8060ae0
-	elementG2D[0-27]:   009 000 010 011 001 012 013 002 014 015 003 016 017 004 018 019 005 020 021 006 022 023 007 024 025 008 026 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8062240
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x80622b8
-	elementNeighbourTbl[0-27]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 009 010 011 001 012 027 027 027 015 003 016 017 004 018 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 009 000 010 011 012 013 002 014 015 003 016 017 004 018 019 005 020 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 011 001 012 013 014 027 027 027 017 004 018 019 005 020 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 009 000 010 011 001 012 027 027 027 015 016 017 004 018 027 027 027 021 006 022 023 007 024 
-		elementNeighbourTbl[4][0-26]: 009 000 010 011 001 012 013 002 014 015 003 016 017 018 019 005 020 021 006 022 023 007 024 025 008 026 
-		elementNeighbourTbl[5][0-26]: 011 001 012 013 002 014 027 027 027 017 004 018 019 020 027 027 027 023 007 024 025 008 026 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 015 003 016 017 004 018 027 027 027 021 022 023 007 024 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 015 003 016 017 004 018 019 005 020 021 006 022 023 024 025 008 026 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 017 004 018 019 005 020 027 027 027 023 007 024 025 026 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[9][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 000 027 011 001 027 027 027 027 015 003 027 017 004 
-		elementNeighbourTbl[10][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 000 027 001 012 027 027 027 027 003 016 027 004 018 027 
-		elementNeighbourTbl[11][0-26]: 027 027 027 027 027 027 027 027 027 027 009 000 027 001 027 013 002 027 015 003 027 017 004 027 019 005 
-		elementNeighbourTbl[12][0-26]: 027 027 027 027 027 027 027 027 027 000 010 027 001 027 002 014 027 003 016 027 004 018 027 005 020 027 
-		elementNeighbourTbl[13][0-26]: 027 027 027 027 027 027 027 027 027 027 011 001 027 002 027 027 027 027 017 004 027 019 005 027 027 027 
-		elementNeighbourTbl[14][0-26]: 027 027 027 027 027 027 027 027 027 001 012 027 002 027 027 027 027 004 018 027 005 020 027 027 027 027 
-		elementNeighbourTbl[15][0-26]: 027 027 027 027 009 000 027 011 001 027 027 027 027 003 027 017 004 027 027 027 027 021 006 027 023 007 
-		elementNeighbourTbl[16][0-26]: 027 027 027 000 010 027 001 012 027 027 027 027 003 027 004 018 027 027 027 027 006 022 027 007 024 027 
-		elementNeighbourTbl[17][0-26]: 027 009 000 027 011 001 027 013 002 027 015 003 027 004 027 019 005 027 021 006 027 023 007 027 025 008 
-		elementNeighbourTbl[18][0-26]: 000 010 027 001 012 027 002 014 027 003 016 027 004 027 005 020 027 006 022 027 007 024 027 008 026 027 
-		elementNeighbourTbl[19][0-26]: 027 011 001 027 013 002 027 027 027 027 017 004 027 005 027 027 027 027 023 007 027 025 008 027 027 027 
-		elementNeighbourTbl[20][0-26]: 001 012 027 002 014 027 027 027 027 004 018 027 005 027 027 027 027 007 024 027 008 026 027 027 027 027 
-		elementNeighbourTbl[21][0-26]: 027 027 027 027 015 003 027 017 004 027 027 027 027 006 027 023 007 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[22][0-26]: 027 027 027 003 016 027 004 018 027 027 027 027 006 027 007 024 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[23][0-26]: 027 015 003 027 017 004 027 019 005 027 021 006 027 007 027 025 008 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[24][0-26]: 003 016 027 004 018 027 005 020 027 006 022 027 007 027 008 026 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[25][0-26]: 027 017 004 027 019 005 027 027 027 027 023 007 027 008 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[26][0-26]: 004 018 027 005 020 027 027 027 027 007 024 027 008 027 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x8062e28
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8062ea0
-	elementNodeTbl[0-27]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-		elementNodeTbl[9][0-8]: 032 000 002 034 040 008 010 042 
-		elementNodeTbl[10][0-8]: 001 033 035 003 009 041 043 011 
-		elementNodeTbl[11][0-8]: 034 002 004 036 042 010 012 044 
-		elementNodeTbl[12][0-8]: 003 035 037 005 011 043 045 013 
-		elementNodeTbl[13][0-8]: 036 004 006 038 044 012 014 046 
-		elementNodeTbl[14][0-8]: 005 037 039 007 013 045 047 015 
-		elementNodeTbl[15][0-8]: 040 008 010 042 048 016 018 050 
-		elementNodeTbl[16][0-8]: 009 041 043 011 017 049 051 019 
-		elementNodeTbl[17][0-8]: 042 010 012 044 050 018 020 052 
-		elementNodeTbl[18][0-8]: 011 043 045 013 019 051 053 021 
-		elementNodeTbl[19][0-8]: 044 012 014 046 052 020 022 054 
-		elementNodeTbl[20][0-8]: 013 045 047 015 021 053 055 023 
-		elementNodeTbl[21][0-8]: 048 016 018 050 056 024 026 058 
-		elementNodeTbl[22][0-8]: 017 049 051 019 025 057 059 027 
-		elementNodeTbl[23][0-8]: 050 018 020 052 058 026 028 060 
-		elementNodeTbl[24][0-8]: 019 051 053 021 027 059 061 029 
-		elementNodeTbl[25][0-8]: 052 020 022 054 060 028 030 062 
-		elementNodeTbl[26][0-8]: 021 053 055 023 029 061 063 031 
-	procNbrCnt: 2
-	procNbrTbl (ptr): 0x8060288
-		procNbrTbl[0]: 0
-		procNbrTbl[1]: 2
-	elementShadowInfo->procShadowedCnt (ptr): 0x80601a8
-		elementShadowInfo->procShadowedCnt[0]: 9
-		elementShadowInfo->procShadowedCnt[1]: 9
-	elementShadowInfo->procShadowedTbl (ptr): 0x8060b58
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x80632c8
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-			elementShadowInfo->procShadowedTbl[0][2]: 2
-			elementShadowInfo->procShadowedTbl[0][3]: 3
-			elementShadowInfo->procShadowedTbl[0][4]: 4
-			elementShadowInfo->procShadowedTbl[0][5]: 5
-			elementShadowInfo->procShadowedTbl[0][6]: 6
-			elementShadowInfo->procShadowedTbl[0][7]: 7
-			elementShadowInfo->procShadowedTbl[0][8]: 8
-		elementShadowInfo->procShadowedTbl[1] (ptr): 0x805cfe0
-			elementShadowInfo->procShadowedTbl[1][0]: 0
-			elementShadowInfo->procShadowedTbl[1][1]: 1
-			elementShadowInfo->procShadowedTbl[1][2]: 2
-			elementShadowInfo->procShadowedTbl[1][3]: 3
-			elementShadowInfo->procShadowedTbl[1][4]: 4
-			elementShadowInfo->procShadowedTbl[1][5]: 5
-			elementShadowInfo->procShadowedTbl[1][6]: 6
-			elementShadowInfo->procShadowedTbl[1][7]: 7
-			elementShadowInfo->procShadowedTbl[1][8]: 8
-	elementShadowInfo->procShadowCnt (ptr): 0x8063348
-		elementShadowInfo->procShadowCnt[0]: 9
-		elementShadowInfo->procShadowCnt[1]: 9
-	elementShadowInfo->procShadowTbl (ptr): 0x8063360
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x80633a0
-			elementShadowInfo->procShadowTbl[0][0]: 9
-			elementShadowInfo->procShadowTbl[0][1]: 11
-			elementShadowInfo->procShadowTbl[0][2]: 13
-			elementShadowInfo->procShadowTbl[0][3]: 15
-			elementShadowInfo->procShadowTbl[0][4]: 17
-			elementShadowInfo->procShadowTbl[0][5]: 19
-			elementShadowInfo->procShadowTbl[0][6]: 21
-			elementShadowInfo->procShadowTbl[0][7]: 23
-			elementShadowInfo->procShadowTbl[0][8]: 25
-		elementShadowInfo->procShadowTbl[1] (ptr): 0x80633d0
-			elementShadowInfo->procShadowTbl[1][0]: 10
-			elementShadowInfo->procShadowTbl[1][1]: 12
-			elementShadowInfo->procShadowTbl[1][2]: 14
-			elementShadowInfo->procShadowTbl[1][3]: 16
-			elementShadowInfo->procShadowTbl[1][4]: 18
-			elementShadowInfo->procShadowTbl[1][5]: 20
-			elementShadowInfo->procShadowTbl[1][6]: 22
-			elementShadowInfo->procShadowTbl[1][7]: 24
-			elementShadowInfo->procShadowTbl[1][8]: 26
-	nodeShadowInfo->procShadowedCnt (ptr): 0x8063488
-		nodeShadowInfo->procShadowedCnt[0]: 16
-		nodeShadowInfo->procShadowedCnt[1]: 16
-	nodeShadowInfo->procShadowedTbl (ptr): 0x80634a0
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x8063500
-			nodeShadowInfo->procShadowedTbl[0][0]: 1
-			nodeShadowInfo->procShadowedTbl[0][1]: 3
-			nodeShadowInfo->procShadowedTbl[0][2]: 5
-			nodeShadowInfo->procShadowedTbl[0][3]: 7
-			nodeShadowInfo->procShadowedTbl[0][4]: 9
-			nodeShadowInfo->procShadowedTbl[0][5]: 11
-			nodeShadowInfo->procShadowedTbl[0][6]: 13
-			nodeShadowInfo->procShadowedTbl[0][7]: 15
-			nodeShadowInfo->procShadowedTbl[0][8]: 17
-			nodeShadowInfo->procShadowedTbl[0][9]: 19
-			nodeShadowInfo->procShadowedTbl[0][10]: 21
-			nodeShadowInfo->procShadowedTbl[0][11]: 23
-			nodeShadowInfo->procShadowedTbl[0][12]: 25
-			nodeShadowInfo->procShadowedTbl[0][13]: 27
-			nodeShadowInfo->procShadowedTbl[0][14]: 29
-			nodeShadowInfo->procShadowedTbl[0][15]: 31
-		nodeShadowInfo->procShadowedTbl[1] (ptr): 0x8063550
-			nodeShadowInfo->procShadowedTbl[1][0]: 0
-			nodeShadowInfo->procShadowedTbl[1][1]: 2
-			nodeShadowInfo->procShadowedTbl[1][2]: 4
-			nodeShadowInfo->procShadowedTbl[1][3]: 6
-			nodeShadowInfo->procShadowedTbl[1][4]: 8
-			nodeShadowInfo->procShadowedTbl[1][5]: 10
-			nodeShadowInfo->procShadowedTbl[1][6]: 12
-			nodeShadowInfo->procShadowedTbl[1][7]: 14
-			nodeShadowInfo->procShadowedTbl[1][8]: 16
-			nodeShadowInfo->procShadowedTbl[1][9]: 18
-			nodeShadowInfo->procShadowedTbl[1][10]: 20
-			nodeShadowInfo->procShadowedTbl[1][11]: 22
-			nodeShadowInfo->procShadowedTbl[1][12]: 24
-			nodeShadowInfo->procShadowedTbl[1][13]: 26
-			nodeShadowInfo->procShadowedTbl[1][14]: 28
-			nodeShadowInfo->procShadowedTbl[1][15]: 30
-	nodeShadowInfo->procShadowCnt (ptr): 0x8063640
-		nodeShadowInfo->procShadowCnt[0]: 16
-		nodeShadowInfo->procShadowCnt[1]: 16
-	nodeShadowInfo->procShadowTbl (ptr): 0x8063658
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8063670
-			nodeShadowInfo->procShadowTbl[0][0]: 32
-			nodeShadowInfo->procShadowTbl[0][1]: 34
-			nodeShadowInfo->procShadowTbl[0][2]: 36
-			nodeShadowInfo->procShadowTbl[0][3]: 38
-			nodeShadowInfo->procShadowTbl[0][4]: 40
-			nodeShadowInfo->procShadowTbl[0][5]: 42
-			nodeShadowInfo->procShadowTbl[0][6]: 44
-			nodeShadowInfo->procShadowTbl[0][7]: 46
-			nodeShadowInfo->procShadowTbl[0][8]: 48
-			nodeShadowInfo->procShadowTbl[0][9]: 50
-			nodeShadowInfo->procShadowTbl[0][10]: 52
-			nodeShadowInfo->procShadowTbl[0][11]: 54
-			nodeShadowInfo->procShadowTbl[0][12]: 56
-			nodeShadowInfo->procShadowTbl[0][13]: 58
-			nodeShadowInfo->procShadowTbl[0][14]: 60
-			nodeShadowInfo->procShadowTbl[0][15]: 62
-		nodeShadowInfo->procShadowTbl[1] (ptr): 0x80636c0
-			nodeShadowInfo->procShadowTbl[1][0]: 33
-			nodeShadowInfo->procShadowTbl[1][1]: 35
-			nodeShadowInfo->procShadowTbl[1][2]: 37
-			nodeShadowInfo->procShadowTbl[1][3]: 39
-			nodeShadowInfo->procShadowTbl[1][4]: 41
-			nodeShadowInfo->procShadowTbl[1][5]: 43
-			nodeShadowInfo->procShadowTbl[1][6]: 45
-			nodeShadowInfo->procShadowTbl[1][7]: 47
-			nodeShadowInfo->procShadowTbl[1][8]: 49
-			nodeShadowInfo->procShadowTbl[1][9]: 51
-			nodeShadowInfo->procShadowTbl[1][10]: 53
-			nodeShadowInfo->procShadowTbl[1][11]: 55
-			nodeShadowInfo->procShadowTbl[1][12]: 57
-			nodeShadowInfo->procShadowTbl[1][13]: 59
-			nodeShadowInfo->procShadowTbl[1][14]: 61
-			nodeShadowInfo->procShadowTbl[1][15]: 63
-Pre-sync:
-	nodeCoord[0]: { 1, 1, 1 } - temp: 11
-	nodeCoord[1]: { 1, 1, 1 } - temp: 11
-	nodeCoord[2]: { 1, 1, 1 } - temp: 11
-	nodeCoord[3]: { 1, 1, 1 } - temp: 11
-	nodeCoord[4]: { 1, 1, 1 } - temp: 11
-	nodeCoord[5]: { 1, 1, 1 } - temp: 11
-	nodeCoord[6]: { 1, 1, 1 } - temp: 11
-	nodeCoord[7]: { 1, 1, 1 } - temp: 11
-	nodeCoord[8]: { 1, 1, 1 } - temp: 11
-	nodeCoord[9]: { 1, 1, 1 } - temp: 11
-	nodeCoord[10]: { 1, 1, 1 } - temp: 11
-	nodeCoord[11]: { 1, 1, 1 } - temp: 11
-	nodeCoord[12]: { 1, 1, 1 } - temp: 11
-	nodeCoord[13]: { 1, 1, 1 } - temp: 11
-	nodeCoord[14]: { 1, 1, 1 } - temp: 11
-	nodeCoord[15]: { 1, 1, 1 } - temp: 11
-	nodeCoord[16]: { 1, 1, 1 } - temp: 11
-	nodeCoord[17]: { 1, 1, 1 } - temp: 11
-	nodeCoord[18]: { 1, 1, 1 } - temp: 11
-	nodeCoord[19]: { 1, 1, 1 } - temp: 11
-	nodeCoord[20]: { 1, 1, 1 } - temp: 11
-	nodeCoord[21]: { 1, 1, 1 } - temp: 11
-	nodeCoord[22]: { 1, 1, 1 } - temp: 11
-	nodeCoord[23]: { 1, 1, 1 } - temp: 11
-	nodeCoord[24]: { 1, 1, 1 } - temp: 11
-	nodeCoord[25]: { 1, 1, 1 } - temp: 11
-	nodeCoord[26]: { 1, 1, 1 } - temp: 11
-	nodeCoord[27]: { 1, 1, 1 } - temp: 11
-	nodeCoord[28]: { 1, 1, 1 } - temp: 11
-	nodeCoord[29]: { 1, 1, 1 } - temp: 11
-	nodeCoord[30]: { 1, 1, 1 } - temp: 11
-	nodeCoord[31]: { 1, 1, 1 } - temp: 11
-	nodeCoord[32]: { 1, 1, 1 } - temp: 11
-	nodeCoord[33]: { 1, 1, 1 } - temp: 11
-	nodeCoord[34]: { 1, 1, 1 } - temp: 11
-	nodeCoord[35]: { 1, 1, 1 } - temp: 11
-	nodeCoord[36]: { 1, 1, 1 } - temp: 11
-	nodeCoord[37]: { 1, 1, 1 } - temp: 11
-	nodeCoord[38]: { 1, 1, 1 } - temp: 11
-	nodeCoord[39]: { 1, 1, 1 } - temp: 11
-	nodeCoord[40]: { 1, 1, 1 } - temp: 11
-	nodeCoord[41]: { 1, 1, 1 } - temp: 11
-	nodeCoord[42]: { 1, 1, 1 } - temp: 11
-	nodeCoord[43]: { 1, 1, 1 } - temp: 11
-	nodeCoord[44]: { 1, 1, 1 } - temp: 11
-	nodeCoord[45]: { 1, 1, 1 } - temp: 11
-	nodeCoord[46]: { 1, 1, 1 } - temp: 11
-	nodeCoord[47]: { 1, 1, 1 } - temp: 11
-	nodeCoord[48]: { 1, 1, 1 } - temp: 11
-	nodeCoord[49]: { 1, 1, 1 } - temp: 11
-	nodeCoord[50]: { 1, 1, 1 } - temp: 11
-	nodeCoord[51]: { 1, 1, 1 } - temp: 11
-	nodeCoord[52]: { 1, 1, 1 } - temp: 11
-	nodeCoord[53]: { 1, 1, 1 } - temp: 11
-	nodeCoord[54]: { 1, 1, 1 } - temp: 11
-	nodeCoord[55]: { 1, 1, 1 } - temp: 11
-	nodeCoord[56]: { 1, 1, 1 } - temp: 11
-	nodeCoord[57]: { 1, 1, 1 } - temp: 11
-	nodeCoord[58]: { 1, 1, 1 } - temp: 11
-	nodeCoord[59]: { 1, 1, 1 } - temp: 11
-	nodeCoord[60]: { 1, 1, 1 } - temp: 11
-	nodeCoord[61]: { 1, 1, 1 } - temp: 11
-	nodeCoord[62]: { 1, 1, 1 } - temp: 11
-	nodeCoord[63]: { 1, 1, 1 } - temp: 11
-	element[0]: temp: 21
-	element[1]: temp: 21
-	element[2]: temp: 21
-	element[3]: temp: 21
-	element[4]: temp: 21
-	element[5]: temp: 21
-	element[6]: temp: 21
-	element[7]: temp: 21
-	element[8]: temp: 21
-	element[9]: temp: 21
-	element[10]: temp: 21
-	element[11]: temp: 21
-	element[12]: temp: 21
-	element[13]: temp: 21
-	element[14]: temp: 21
-	element[15]: temp: 21
-	element[16]: temp: 21
-	element[17]: temp: 21
-	element[18]: temp: 21
-	element[19]: temp: 21
-	element[20]: temp: 21
-	element[21]: temp: 21
-	element[22]: temp: 21
-	element[23]: temp: 21
-	element[24]: temp: 21
-	element[25]: temp: 21
-	element[26]: temp: 21
-Post-sync:
-	nodeCoord[0]: { 1, 1, 1 } - temp: 11
-	nodeCoord[1]: { 1, 1, 1 } - temp: 11
-	nodeCoord[2]: { 1, 1, 1 } - temp: 11
-	nodeCoord[3]: { 1, 1, 1 } - temp: 11
-	nodeCoord[4]: { 1, 1, 1 } - temp: 11
-	nodeCoord[5]: { 1, 1, 1 } - temp: 11
-	nodeCoord[6]: { 1, 1, 1 } - temp: 11
-	nodeCoord[7]: { 1, 1, 1 } - temp: 11
-	nodeCoord[8]: { 1, 1, 1 } - temp: 11
-	nodeCoord[9]: { 1, 1, 1 } - temp: 11
-	nodeCoord[10]: { 1, 1, 1 } - temp: 11
-	nodeCoord[11]: { 1, 1, 1 } - temp: 11
-	nodeCoord[12]: { 1, 1, 1 } - temp: 11
-	nodeCoord[13]: { 1, 1, 1 } - temp: 11
-	nodeCoord[14]: { 1, 1, 1 } - temp: 11
-	nodeCoord[15]: { 1, 1, 1 } - temp: 11
-	nodeCoord[16]: { 1, 1, 1 } - temp: 11
-	nodeCoord[17]: { 1, 1, 1 } - temp: 11
-	nodeCoord[18]: { 1, 1, 1 } - temp: 11
-	nodeCoord[19]: { 1, 1, 1 } - temp: 11
-	nodeCoord[20]: { 1, 1, 1 } - temp: 11
-	nodeCoord[21]: { 1, 1, 1 } - temp: 11
-	nodeCoord[22]: { 1, 1, 1 } - temp: 11
-	nodeCoord[23]: { 1, 1, 1 } - temp: 11
-	nodeCoord[24]: { 1, 1, 1 } - temp: 11
-	nodeCoord[25]: { 1, 1, 1 } - temp: 11
-	nodeCoord[26]: { 1, 1, 1 } - temp: 11
-	nodeCoord[27]: { 1, 1, 1 } - temp: 11
-	nodeCoord[28]: { 1, 1, 1 } - temp: 11
-	nodeCoord[29]: { 1, 1, 1 } - temp: 11
-	nodeCoord[30]: { 1, 1, 1 } - temp: 11
-	nodeCoord[31]: { 1, 1, 1 } - temp: 11
-	nodeCoord[32]: { 0, 0, 0 } - temp: 10
-	nodeCoord[33]: { 2, 2, 2 } - temp: 12
-	nodeCoord[34]: { 0, 0, 0 } - temp: 10
-	nodeCoord[35]: { 2, 2, 2 } - temp: 12
-	nodeCoord[36]: { 0, 0, 0 } - temp: 10
-	nodeCoord[37]: { 2, 2, 2 } - temp: 12
-	nodeCoord[38]: { 0, 0, 0 } - temp: 10
-	nodeCoord[39]: { 2, 2, 2 } - temp: 12
-	nodeCoord[40]: { 0, 0, 0 } - temp: 10
-	nodeCoord[41]: { 2, 2, 2 } - temp: 12
-	nodeCoord[42]: { 0, 0, 0 } - temp: 10
-	nodeCoord[43]: { 2, 2, 2 } - temp: 12
-	nodeCoord[44]: { 0, 0, 0 } - temp: 10
-	nodeCoord[45]: { 2, 2, 2 } - temp: 12
-	nodeCoord[46]: { 0, 0, 0 } - temp: 10
-	nodeCoord[47]: { 2, 2, 2 } - temp: 12
-	nodeCoord[48]: { 0, 0, 0 } - temp: 10
-	nodeCoord[49]: { 2, 2, 2 } - temp: 12
-	nodeCoord[50]: { 0, 0, 0 } - temp: 10
-	nodeCoord[51]: { 2, 2, 2 } - temp: 12
-	nodeCoord[52]: { 0, 0, 0 } - temp: 10
-	nodeCoord[53]: { 2, 2, 2 } - temp: 12
-	nodeCoord[54]: { 0, 0, 0 } - temp: 10
-	nodeCoord[55]: { 2, 2, 2 } - temp: 12
-	nodeCoord[56]: { 0, 0, 0 } - temp: 10
-	nodeCoord[57]: { 2, 2, 2 } - temp: 12
-	nodeCoord[58]: { 0, 0, 0 } - temp: 10
-	nodeCoord[59]: { 2, 2, 2 } - temp: 12
-	nodeCoord[60]: { 0, 0, 0 } - temp: 10
-	nodeCoord[61]: { 2, 2, 2 } - temp: 12
-	nodeCoord[62]: { 0, 0, 0 } - temp: 10
-	nodeCoord[63]: { 2, 2, 2 } - temp: 12
-	element[0]: temp: 21
-	element[1]: temp: 21
-	element[2]: temp: 21
-	element[3]: temp: 21
-	element[4]: temp: 21
-	element[5]: temp: 21
-	element[6]: temp: 21
-	element[7]: temp: 21
-	element[8]: temp: 21
-	element[9]: temp: 20
-	element[10]: temp: 22
-	element[11]: temp: 20
-	element[12]: temp: 22
-	element[13]: temp: 20
-	element[14]: temp: 22
-	element[15]: temp: 20
-	element[16]: temp: 22
-	element[17]: temp: 20
-	element[18]: temp: 22
-	element[19]: temp: 20
-	element[20]: temp: 22
-	element[21]: temp: 20
-	element[22]: temp: 22
-	element[23]: temp: 20
-	element[24]: temp: 22
-	element[25]: temp: 20
-	element[26]: temp: 22

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,516 +0,0 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-Mesh (ptr): (0x805f470)
-Stg_Component (ptr): 0x805f470
-Stg_Object (ptr): 0x805f470
-	Stg_Class (ptr): 0x805f470
-		sizeOfSelf: 400
-		_deleteSelf: Yes
-		type: Mesh
-		_delete (func ptr): 0xb7f4f1dd
-		_print (func ptr): 0xb7f4fa6a
-		_copy (func ptr): 0xb7f50c4e
-	name: Mesh
-	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f4e51c
-	_construct (func ptr): 0xb7f4f00e
-	_build (func ptr): 0xb7f51322
-	_initialise (func ptr): 0xb7f52214
-	_execute (func ptr): 0xb7f52219
-	_destroy (func ptr): 0xb7f4f1d8
-	isConstructed: True
-	isBuilt: True
-	isInitialised: True
-	hasExecuted: False
-	isDestroyed: False
-	constructor function name: Mesh-Construct
-	build function name: Mesh-Build
-	initialise function name: Mesh-Initialise
-	execute function name: Mesh-Execute
-	destroy function name: Mesh-Destroy
-	dictionary (ptr): 0x805c540
-	layout (ptr): 0x805f128
-Extension (ptr):0x805f840
-Stg_Object (ptr): 0x805f840
-	Stg_Class (ptr): 0x805f840
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7ec7018
-		_print (func ptr): 0xb7ec7066
-		_copy (func ptr): 0xb7ec7200
-	name: node
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f8b8
-Stg_ObjectList (ptr):0x805f8b8
-	Stg_Class (ptr): 0x805f8b8
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ef8f3e
-		_print (func ptr): 0xb7ef8f75
-		_copy (func ptr): 0xb7ef9217
-	_append(func ptr): 0xb7ef9e7b
-	_prepend(func ptr): 0xb7ef9f41
-	_replaceAll(func ptr): 0xb7efa005
-	_replace(func ptr): 0xb7efa0be
-	_insertBefore(func ptr): 0xb7efa25b
-	_insertAfter(func ptr): 0xb7efa416
-	_remove(func ptr): 0xb7efa5d3
-	_getIndex(func ptr): 0xb7efa679
-	_get(func ptr): 0xb7efa727
-	_allocMoreMemory(func ptr): 0xb7efa8fa
-	_insertAtIndex(func ptr): 0xb7efa980
-	_removeByIndex(func ptr): 0xb7efa9fe
-	_deleteAllObjects(func ptr): 0xb7efa87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-Extension (ptr):0x805f928
-Stg_Object (ptr): 0x805f928
-	Stg_Class (ptr): 0x805f928
-		sizeOfSelf: 80
-		_deleteSelf: Yes
-		type: Extension
-		_delete (func ptr): 0xb7ec7018
-		_print (func ptr): 0xb7ec7066
-		_copy (func ptr): 0xb7ec7200
-	name: element
-	nameAllocationType: NON_GLOBAL
-	initialSize 8
-	finalSize 8
-	count: 0
-	extInfos (ptr): 0x805f9a0
-Stg_ObjectList (ptr):0x805f9a0
-	Stg_Class (ptr): 0x805f9a0
-		sizeOfSelf: 96
-		_deleteSelf: Yes
-		type: Stg_ObjectList
-		_delete (func ptr): 0xb7ef8f3e
-		_print (func ptr): 0xb7ef8f75
-		_copy (func ptr): 0xb7ef9217
-	_append(func ptr): 0xb7ef9e7b
-	_prepend(func ptr): 0xb7ef9f41
-	_replaceAll(func ptr): 0xb7efa005
-	_replace(func ptr): 0xb7efa0be
-	_insertBefore(func ptr): 0xb7efa25b
-	_insertAfter(func ptr): 0xb7efa416
-	_remove(func ptr): 0xb7efa5d3
-	_getIndex(func ptr): 0xb7efa679
-	_get(func ptr): 0xb7efa727
-	_allocMoreMemory(func ptr): 0xb7efa8fa
-	_insertAtIndex(func ptr): 0xb7efa980
-	_removeByIndex(func ptr): 0xb7efa9fe
-	_deleteAllObjects(func ptr): 0xb7efa87b
-	_size: 8
-	_delta: 8
-	_noJournalingInCopy: 0
-	count: 0
-	data[0-0]:
-	_extensionsToExisting (ptr): (nil)
-	_existingObject (ptr): (nil)
-	_array (ptr): (nil)
-	itemSize 0
-	em (ptr) (nil)
-	count 0
-	node (ptr): 0x8060170
-	nodeLocalCount: 32
-	nodeDomainCount: 48
-	nodeShadowCount: 16
-	nodeGlobalCount: 64
-	nodeCoord (ptr): 0x8060300
-	nodeCoord[0-48]:   (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), (2.00,2.00,2.00), 
-	ownsNodeLocalToGlobalMap: 1
-	nodeL2G (ptr): 0x80607e0
-	nodeL2G[0-32]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 
-	ownsNodeDomainToGlobalMap: 1
-	nodeD2G (ptr): 0x80607e0
-	nodeD2G[0-48]:   002 003 006 007 010 011 014 015 018 019 022 023 026 027 030 031 034 035 038 039 042 043 046 047 050 051 054 055 058 059 062 063 001 005 009 013 017 021 025 029 033 037 041 045 049 053 057 061 
-	ownsNodeGlobalToLocalMap: 1
-	nodeG2L (ptr): 0x80609c0
-	nodeG2L[0-64]:   064 064 000 001 064 064 002 003 064 064 004 005 064 064 006 007 064 064 008 009 064 064 010 011 064 064 012 013 064 064 014 015 064 064 016 017 064 064 018 019 064 064 020 021 064 064 022 023 064 064 024 025 064 064 026 027 064 064 028 029 064 064 030 031 
-	ownsNodeGlobalToDomainMap: 1
-	nodeG2D (ptr): 0x80608b0
-	nodeG2D[0-64]:   064 032 000 001 064 033 002 003 064 034 004 005 064 035 006 007 064 036 008 009 064 037 010 011 064 038 012 013 064 039 014 015 064 040 016 017 064 041 018 019 064 042 020 021 064 043 022 023 064 044 024 025 064 045 026 027 064 046 028 029 064 047 030 031 
-	ownsNodeNeighbourCountTbl: 1
-	nodeNeighbourCountTbl (ptr): 0x8060ad0
-	ownsNodeNeighbourTbl: 1
-	nodeNeighbourTbl (ptr): 0x8060ba0
-	nodeNeighbourTbl[0-48]:
-		nodeNeighbourTbl[0][0-6]: 001 002 008 032 064 064 
-		nodeNeighbourTbl[1][0-6]: 064 003 009 000 064 064 
-		nodeNeighbourTbl[2][0-6]: 003 004 010 033 000 064 
-		nodeNeighbourTbl[3][0-6]: 064 005 011 002 001 064 
-		nodeNeighbourTbl[4][0-6]: 005 006 012 034 002 064 
-		nodeNeighbourTbl[5][0-6]: 064 007 013 004 003 064 
-		nodeNeighbourTbl[6][0-6]: 007 064 014 035 004 064 
-		nodeNeighbourTbl[7][0-6]: 064 064 015 006 005 064 
-		nodeNeighbourTbl[8][0-6]: 009 010 016 036 064 000 
-		nodeNeighbourTbl[9][0-6]: 064 011 017 008 064 001 
-		nodeNeighbourTbl[10][0-6]: 011 012 018 037 008 002 
-		nodeNeighbourTbl[11][0-6]: 064 013 019 010 009 003 
-		nodeNeighbourTbl[12][0-6]: 013 014 020 038 010 004 
-		nodeNeighbourTbl[13][0-6]: 064 015 021 012 011 005 
-		nodeNeighbourTbl[14][0-6]: 015 064 022 039 012 006 
-		nodeNeighbourTbl[15][0-6]: 064 064 023 014 013 007 
-		nodeNeighbourTbl[16][0-6]: 017 018 024 040 064 008 
-		nodeNeighbourTbl[17][0-6]: 064 019 025 016 064 009 
-		nodeNeighbourTbl[18][0-6]: 019 020 026 041 016 010 
-		nodeNeighbourTbl[19][0-6]: 064 021 027 018 017 011 
-		nodeNeighbourTbl[20][0-6]: 021 022 028 042 018 012 
-		nodeNeighbourTbl[21][0-6]: 064 023 029 020 019 013 
-		nodeNeighbourTbl[22][0-6]: 023 064 030 043 020 014 
-		nodeNeighbourTbl[23][0-6]: 064 064 031 022 021 015 
-		nodeNeighbourTbl[24][0-6]: 025 026 064 044 064 016 
-		nodeNeighbourTbl[25][0-6]: 064 027 064 024 064 017 
-		nodeNeighbourTbl[26][0-6]: 027 028 064 045 024 018 
-		nodeNeighbourTbl[27][0-6]: 064 029 064 026 025 019 
-		nodeNeighbourTbl[28][0-6]: 029 030 064 046 026 020 
-		nodeNeighbourTbl[29][0-6]: 064 031 064 028 027 021 
-		nodeNeighbourTbl[30][0-6]: 031 064 064 047 028 022 
-		nodeNeighbourTbl[31][0-6]: 064 064 064 030 029 023 
-		nodeNeighbourTbl[32][0-6]: 000 033 036 064 064 064 
-		nodeNeighbourTbl[33][0-6]: 002 034 037 064 032 064 
-		nodeNeighbourTbl[34][0-6]: 004 035 038 064 033 064 
-		nodeNeighbourTbl[35][0-6]: 006 064 039 064 034 064 
-		nodeNeighbourTbl[36][0-6]: 008 037 040 064 064 032 
-		nodeNeighbourTbl[37][0-6]: 010 038 041 064 036 033 
-		nodeNeighbourTbl[38][0-6]: 012 039 042 064 037 034 
-		nodeNeighbourTbl[39][0-6]: 014 064 043 064 038 035 
-		nodeNeighbourTbl[40][0-6]: 016 041 044 064 064 036 
-		nodeNeighbourTbl[41][0-6]: 018 042 045 064 040 037 
-		nodeNeighbourTbl[42][0-6]: 020 043 046 064 041 038 
-		nodeNeighbourTbl[43][0-6]: 022 064 047 064 042 039 
-		nodeNeighbourTbl[44][0-6]: 024 045 064 064 064 040 
-		nodeNeighbourTbl[45][0-6]: 026 046 064 064 044 041 
-		nodeNeighbourTbl[46][0-6]: 028 047 064 064 045 042 
-		nodeNeighbourTbl[47][0-6]: 030 064 064 064 046 043 
-	ownsNodeElementCountTbl: 1
-	nodeElementCountTbl (ptr): 0x80610f0
-	ownsNodeElementTbl: 1
-	nodeElementTbl (ptr): 0x80611c0
-	nodeElementTbl[0-48]:
-		nodeElementTbl[0][0-8]: 027 027 027 027 027 027 009 000 
-		nodeElementTbl[1][0-8]: 027 027 027 027 027 027 000 027 
-		nodeElementTbl[2][0-8]: 027 027 027 027 009 000 010 001 
-		nodeElementTbl[3][0-8]: 027 027 027 027 000 027 001 027 
-		nodeElementTbl[4][0-8]: 027 027 027 027 010 001 011 002 
-		nodeElementTbl[5][0-8]: 027 027 027 027 001 027 002 027 
-		nodeElementTbl[6][0-8]: 027 027 027 027 011 002 027 027 
-		nodeElementTbl[7][0-8]: 027 027 027 027 002 027 027 027 
-		nodeElementTbl[8][0-8]: 027 027 009 000 027 027 012 003 
-		nodeElementTbl[9][0-8]: 027 027 000 027 027 027 003 027 
-		nodeElementTbl[10][0-8]: 009 000 010 001 012 003 013 004 
-		nodeElementTbl[11][0-8]: 000 027 001 027 003 027 004 027 
-		nodeElementTbl[12][0-8]: 010 001 011 002 013 004 014 005 
-		nodeElementTbl[13][0-8]: 001 027 002 027 004 027 005 027 
-		nodeElementTbl[14][0-8]: 011 002 027 027 014 005 027 027 
-		nodeElementTbl[15][0-8]: 002 027 027 027 005 027 027 027 
-		nodeElementTbl[16][0-8]: 027 027 012 003 027 027 015 006 
-		nodeElementTbl[17][0-8]: 027 027 003 027 027 027 006 027 
-		nodeElementTbl[18][0-8]: 012 003 013 004 015 006 016 007 
-		nodeElementTbl[19][0-8]: 003 027 004 027 006 027 007 027 
-		nodeElementTbl[20][0-8]: 013 004 014 005 016 007 017 008 
-		nodeElementTbl[21][0-8]: 004 027 005 027 007 027 008 027 
-		nodeElementTbl[22][0-8]: 014 005 027 027 017 008 027 027 
-		nodeElementTbl[23][0-8]: 005 027 027 027 008 027 027 027 
-		nodeElementTbl[24][0-8]: 027 027 015 006 027 027 027 027 
-		nodeElementTbl[25][0-8]: 027 027 006 027 027 027 027 027 
-		nodeElementTbl[26][0-8]: 015 006 016 007 027 027 027 027 
-		nodeElementTbl[27][0-8]: 006 027 007 027 027 027 027 027 
-		nodeElementTbl[28][0-8]: 016 007 017 008 027 027 027 027 
-		nodeElementTbl[29][0-8]: 007 027 008 027 027 027 027 027 
-		nodeElementTbl[30][0-8]: 017 008 027 027 027 027 027 027 
-		nodeElementTbl[31][0-8]: 008 027 027 027 027 027 027 027 
-		nodeElementTbl[32][0-8]: 027 027 027 027 027 027 027 009 
-		nodeElementTbl[33][0-8]: 027 027 027 027 027 009 027 010 
-		nodeElementTbl[34][0-8]: 027 027 027 027 027 010 027 011 
-		nodeElementTbl[35][0-8]: 027 027 027 027 027 011 027 027 
-		nodeElementTbl[36][0-8]: 027 027 027 009 027 027 027 012 
-		nodeElementTbl[37][0-8]: 027 009 027 010 027 012 027 013 
-		nodeElementTbl[38][0-8]: 027 010 027 011 027 013 027 014 
-		nodeElementTbl[39][0-8]: 027 011 027 027 027 014 027 027 
-		nodeElementTbl[40][0-8]: 027 027 027 012 027 027 027 015 
-		nodeElementTbl[41][0-8]: 027 012 027 013 027 015 027 016 
-		nodeElementTbl[42][0-8]: 027 013 027 014 027 016 027 017 
-		nodeElementTbl[43][0-8]: 027 014 027 027 027 017 027 027 
-		nodeElementTbl[44][0-8]: 027 027 027 015 027 027 027 027 
-		nodeElementTbl[45][0-8]: 027 015 027 016 027 027 027 027 
-		nodeElementTbl[46][0-8]: 027 016 027 017 027 027 027 027 
-		nodeElementTbl[47][0-8]: 027 017 027 027 027 027 027 027 
-	element (ptr): 0x8061890
-	elementLocalCount: 9
-	elementDomainCount: 18
-	elementShadowCount: 9
-	elementGlobalCount: 27
-	ownsElementLocalToGlobalMap: 1
-	elementL2G (ptr): 0x805ff50
-	elementL2G[0-9]:   002 005 008 011 014 017 020 023 026 
-	ownsElementDomainToGlobalMap: 1
-	elementD2G (ptr): 0x805ff50
-	elementD2G[0-18]:   002 005 008 011 014 017 020 023 026 001 004 007 010 013 016 019 022 025 
-	ownsElementGlobalToLocalMap: 1
-	elementG2L (ptr): 0x80619a8
-	elementG2L[0-27]:   027 027 000 027 027 001 027 027 002 027 027 003 027 027 004 027 027 005 027 027 006 027 027 007 027 027 008 
-	ownsElementGlobalToDomainMap: 1
-	elementG2D (ptr): 0x8061930
-	elementG2D[0-27]:   027 009 000 027 010 001 027 011 002 027 012 003 027 013 004 027 014 005 027 015 006 027 016 007 027 017 008 
-	ownsElementNeighbourCountTbl: 1
-	elementNeighbourCountTbl (ptr): 0x8061a20
-	ownsElementNeighbourTbl: 1
-	elementNeighbourTbl (ptr): 0x8061a78
-	elementNeighbourTbl[0-18]:
-		elementNeighbourTbl[0][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 009 027 010 001 027 027 027 027 012 003 027 013 004 027 
-		elementNeighbourTbl[1][0-26]: 027 027 027 027 027 027 027 027 027 009 000 027 010 027 011 002 027 012 003 027 013 004 027 014 005 027 
-		elementNeighbourTbl[2][0-26]: 027 027 027 027 027 027 027 027 027 010 001 027 011 027 027 027 027 013 004 027 014 005 027 027 027 027 
-		elementNeighbourTbl[3][0-26]: 027 027 027 009 000 027 010 001 027 027 027 027 012 027 013 004 027 027 027 027 015 006 027 016 007 027 
-		elementNeighbourTbl[4][0-26]: 009 000 027 010 001 027 011 002 027 012 003 027 013 027 014 005 027 015 006 027 016 007 027 017 008 027 
-		elementNeighbourTbl[5][0-26]: 010 001 027 011 002 027 027 027 027 013 004 027 014 027 027 027 027 016 007 027 017 008 027 027 027 027 
-		elementNeighbourTbl[6][0-26]: 027 027 027 012 003 027 013 004 027 027 027 027 015 027 016 007 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[7][0-26]: 012 003 027 013 004 027 014 005 027 015 006 027 016 027 017 008 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[8][0-26]: 013 004 027 014 005 027 027 027 027 016 007 027 017 027 027 027 027 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[9][0-26]: 027 027 027 027 027 027 027 027 027 027 027 027 027 000 027 010 001 027 027 027 027 012 003 027 013 004 
-		elementNeighbourTbl[10][0-26]: 027 027 027 027 027 027 027 027 027 027 009 000 027 001 027 011 002 027 012 003 027 013 004 027 014 005 
-		elementNeighbourTbl[11][0-26]: 027 027 027 027 027 027 027 027 027 027 010 001 027 002 027 027 027 027 013 004 027 014 005 027 027 027 
-		elementNeighbourTbl[12][0-26]: 027 027 027 027 009 000 027 010 001 027 027 027 027 003 027 013 004 027 027 027 027 015 006 027 016 007 
-		elementNeighbourTbl[13][0-26]: 027 009 000 027 010 001 027 011 002 027 012 003 027 004 027 014 005 027 015 006 027 016 007 027 017 008 
-		elementNeighbourTbl[14][0-26]: 027 010 001 027 011 002 027 027 027 027 013 004 027 005 027 027 027 027 016 007 027 017 008 027 027 027 
-		elementNeighbourTbl[15][0-26]: 027 027 027 027 012 003 027 013 004 027 027 027 027 006 027 016 007 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[16][0-26]: 027 012 003 027 013 004 027 014 005 027 015 006 027 007 027 017 008 027 027 027 027 027 027 027 027 027 
-		elementNeighbourTbl[17][0-26]: 027 013 004 027 014 005 027 027 027 027 016 007 027 008 027 027 027 027 027 027 027 027 027 027 027 027 
-	ownsElementNodeCountTbl: 1
-	elementNodeCountTbl (ptr): 0x8062220
-	ownsElementNodeTbl: 1
-	elementNodeTbl (ptr): 0x8062278
-	elementNodeTbl[0-18]:
-		elementNodeTbl[0][0-8]: 000 001 003 002 008 009 011 010 
-		elementNodeTbl[1][0-8]: 002 003 005 004 010 011 013 012 
-		elementNodeTbl[2][0-8]: 004 005 007 006 012 013 015 014 
-		elementNodeTbl[3][0-8]: 008 009 011 010 016 017 019 018 
-		elementNodeTbl[4][0-8]: 010 011 013 012 018 019 021 020 
-		elementNodeTbl[5][0-8]: 012 013 015 014 020 021 023 022 
-		elementNodeTbl[6][0-8]: 016 017 019 018 024 025 027 026 
-		elementNodeTbl[7][0-8]: 018 019 021 020 026 027 029 028 
-		elementNodeTbl[8][0-8]: 020 021 023 022 028 029 031 030 
-		elementNodeTbl[9][0-8]: 032 000 002 033 036 008 010 037 
-		elementNodeTbl[10][0-8]: 033 002 004 034 037 010 012 038 
-		elementNodeTbl[11][0-8]: 034 004 006 035 038 012 014 039 
-		elementNodeTbl[12][0-8]: 036 008 010 037 040 016 018 041 
-		elementNodeTbl[13][0-8]: 037 010 012 038 041 018 020 042 
-		elementNodeTbl[14][0-8]: 038 012 014 039 042 020 022 043 
-		elementNodeTbl[15][0-8]: 040 016 018 041 044 024 026 045 
-		elementNodeTbl[16][0-8]: 041 018 020 042 045 026 028 046 
-		elementNodeTbl[17][0-8]: 042 020 022 043 046 028 030 047 
-	procNbrCnt: 1
-	procNbrTbl (ptr): 0x8060058
-		procNbrTbl[0]: 1
-	elementShadowInfo->procShadowedCnt (ptr): 0x805ffd0
-		elementShadowInfo->procShadowedCnt[0]: 9
-	elementShadowInfo->procShadowedTbl (ptr): 0x8060138
-		elementShadowInfo->procShadowedTbl[0] (ptr): 0x805cfe0
-			elementShadowInfo->procShadowedTbl[0][0]: 0
-			elementShadowInfo->procShadowedTbl[0][1]: 1
-			elementShadowInfo->procShadowedTbl[0][2]: 2
-			elementShadowInfo->procShadowedTbl[0][3]: 3
-			elementShadowInfo->procShadowedTbl[0][4]: 4
-			elementShadowInfo->procShadowedTbl[0][5]: 5
-			elementShadowInfo->procShadowedTbl[0][6]: 6
-			elementShadowInfo->procShadowedTbl[0][7]: 7
-			elementShadowInfo->procShadowedTbl[0][8]: 8
-	elementShadowInfo->procShadowCnt (ptr): 0x805aa08
-		elementShadowInfo->procShadowCnt[0]: 9
-	elementShadowInfo->procShadowTbl (ptr): 0x805aa18
-		elementShadowInfo->procShadowTbl[0] (ptr): 0x8060790
-			elementShadowInfo->procShadowTbl[0][0]: 9
-			elementShadowInfo->procShadowTbl[0][1]: 10
-			elementShadowInfo->procShadowTbl[0][2]: 11
-			elementShadowInfo->procShadowTbl[0][3]: 12
-			elementShadowInfo->procShadowTbl[0][4]: 13
-			elementShadowInfo->procShadowTbl[0][5]: 14
-			elementShadowInfo->procShadowTbl[0][6]: 15
-			elementShadowInfo->procShadowTbl[0][7]: 16
-			elementShadowInfo->procShadowTbl[0][8]: 17
-	nodeShadowInfo->procShadowedCnt (ptr): 0x805d010
-		nodeShadowInfo->procShadowedCnt[0]: 16
-	nodeShadowInfo->procShadowedTbl (ptr): 0x80607c0
-		nodeShadowInfo->procShadowedTbl[0] (ptr): 0x8062580
-			nodeShadowInfo->procShadowedTbl[0][0]: 1
-			nodeShadowInfo->procShadowedTbl[0][1]: 3
-			nodeShadowInfo->procShadowedTbl[0][2]: 5
-			nodeShadowInfo->procShadowedTbl[0][3]: 7
-			nodeShadowInfo->procShadowedTbl[0][4]: 9
-			nodeShadowInfo->procShadowedTbl[0][5]: 11
-			nodeShadowInfo->procShadowedTbl[0][6]: 13
-			nodeShadowInfo->procShadowedTbl[0][7]: 15
-			nodeShadowInfo->procShadowedTbl[0][8]: 17
-			nodeShadowInfo->procShadowedTbl[0][9]: 19
-			nodeShadowInfo->procShadowedTbl[0][10]: 21
-			nodeShadowInfo->procShadowedTbl[0][11]: 23
-			nodeShadowInfo->procShadowedTbl[0][12]: 25
-			nodeShadowInfo->procShadowedTbl[0][13]: 27
-			nodeShadowInfo->procShadowedTbl[0][14]: 29
-			nodeShadowInfo->procShadowedTbl[0][15]: 31
-	nodeShadowInfo->procShadowCnt (ptr): 0x8062650
-		nodeShadowInfo->procShadowCnt[0]: 16
-	nodeShadowInfo->procShadowTbl (ptr): 0x80625d0
-		nodeShadowInfo->procShadowTbl[0] (ptr): 0x8062660
-			nodeShadowInfo->procShadowTbl[0][0]: 32
-			nodeShadowInfo->procShadowTbl[0][1]: 33
-			nodeShadowInfo->procShadowTbl[0][2]: 34
-			nodeShadowInfo->procShadowTbl[0][3]: 35
-			nodeShadowInfo->procShadowTbl[0][4]: 36
-			nodeShadowInfo->procShadowTbl[0][5]: 37
-			nodeShadowInfo->procShadowTbl[0][6]: 38
-			nodeShadowInfo->procShadowTbl[0][7]: 39
-			nodeShadowInfo->procShadowTbl[0][8]: 40
-			nodeShadowInfo->procShadowTbl[0][9]: 41
-			nodeShadowInfo->procShadowTbl[0][10]: 42
-			nodeShadowInfo->procShadowTbl[0][11]: 43
-			nodeShadowInfo->procShadowTbl[0][12]: 44
-			nodeShadowInfo->procShadowTbl[0][13]: 45
-			nodeShadowInfo->procShadowTbl[0][14]: 46
-			nodeShadowInfo->procShadowTbl[0][15]: 47
-Pre-sync:
-	nodeCoord[0]: { 2, 2, 2 } - temp: 12
-	nodeCoord[1]: { 2, 2, 2 } - temp: 12
-	nodeCoord[2]: { 2, 2, 2 } - temp: 12
-	nodeCoord[3]: { 2, 2, 2 } - temp: 12
-	nodeCoord[4]: { 2, 2, 2 } - temp: 12
-	nodeCoord[5]: { 2, 2, 2 } - temp: 12
-	nodeCoord[6]: { 2, 2, 2 } - temp: 12
-	nodeCoord[7]: { 2, 2, 2 } - temp: 12
-	nodeCoord[8]: { 2, 2, 2 } - temp: 12
-	nodeCoord[9]: { 2, 2, 2 } - temp: 12
-	nodeCoord[10]: { 2, 2, 2 } - temp: 12
-	nodeCoord[11]: { 2, 2, 2 } - temp: 12
-	nodeCoord[12]: { 2, 2, 2 } - temp: 12
-	nodeCoord[13]: { 2, 2, 2 } - temp: 12
-	nodeCoord[14]: { 2, 2, 2 } - temp: 12
-	nodeCoord[15]: { 2, 2, 2 } - temp: 12
-	nodeCoord[16]: { 2, 2, 2 } - temp: 12
-	nodeCoord[17]: { 2, 2, 2 } - temp: 12
-	nodeCoord[18]: { 2, 2, 2 } - temp: 12
-	nodeCoord[19]: { 2, 2, 2 } - temp: 12
-	nodeCoord[20]: { 2, 2, 2 } - temp: 12
-	nodeCoord[21]: { 2, 2, 2 } - temp: 12
-	nodeCoord[22]: { 2, 2, 2 } - temp: 12
-	nodeCoord[23]: { 2, 2, 2 } - temp: 12
-	nodeCoord[24]: { 2, 2, 2 } - temp: 12
-	nodeCoord[25]: { 2, 2, 2 } - temp: 12
-	nodeCoord[26]: { 2, 2, 2 } - temp: 12
-	nodeCoord[27]: { 2, 2, 2 } - temp: 12
-	nodeCoord[28]: { 2, 2, 2 } - temp: 12
-	nodeCoord[29]: { 2, 2, 2 } - temp: 12
-	nodeCoord[30]: { 2, 2, 2 } - temp: 12
-	nodeCoord[31]: { 2, 2, 2 } - temp: 12
-	nodeCoord[32]: { 2, 2, 2 } - temp: 12
-	nodeCoord[33]: { 2, 2, 2 } - temp: 12
-	nodeCoord[34]: { 2, 2, 2 } - temp: 12
-	nodeCoord[35]: { 2, 2, 2 } - temp: 12
-	nodeCoord[36]: { 2, 2, 2 } - temp: 12
-	nodeCoord[37]: { 2, 2, 2 } - temp: 12
-	nodeCoord[38]: { 2, 2, 2 } - temp: 12
-	nodeCoord[39]: { 2, 2, 2 } - temp: 12
-	nodeCoord[40]: { 2, 2, 2 } - temp: 12
-	nodeCoord[41]: { 2, 2, 2 } - temp: 12
-	nodeCoord[42]: { 2, 2, 2 } - temp: 12
-	nodeCoord[43]: { 2, 2, 2 } - temp: 12
-	nodeCoord[44]: { 2, 2, 2 } - temp: 12
-	nodeCoord[45]: { 2, 2, 2 } - temp: 12
-	nodeCoord[46]: { 2, 2, 2 } - temp: 12
-	nodeCoord[47]: { 2, 2, 2 } - temp: 12
-	element[0]: temp: 22
-	element[1]: temp: 22
-	element[2]: temp: 22
-	element[3]: temp: 22
-	element[4]: temp: 22
-	element[5]: temp: 22
-	element[6]: temp: 22
-	element[7]: temp: 22
-	element[8]: temp: 22
-	element[9]: temp: 22
-	element[10]: temp: 22
-	element[11]: temp: 22
-	element[12]: temp: 22
-	element[13]: temp: 22
-	element[14]: temp: 22
-	element[15]: temp: 22
-	element[16]: temp: 22
-	element[17]: temp: 22
-Post-sync:
-	nodeCoord[0]: { 2, 2, 2 } - temp: 12
-	nodeCoord[1]: { 2, 2, 2 } - temp: 12
-	nodeCoord[2]: { 2, 2, 2 } - temp: 12
-	nodeCoord[3]: { 2, 2, 2 } - temp: 12
-	nodeCoord[4]: { 2, 2, 2 } - temp: 12
-	nodeCoord[5]: { 2, 2, 2 } - temp: 12
-	nodeCoord[6]: { 2, 2, 2 } - temp: 12
-	nodeCoord[7]: { 2, 2, 2 } - temp: 12
-	nodeCoord[8]: { 2, 2, 2 } - temp: 12
-	nodeCoord[9]: { 2, 2, 2 } - temp: 12
-	nodeCoord[10]: { 2, 2, 2 } - temp: 12
-	nodeCoord[11]: { 2, 2, 2 } - temp: 12
-	nodeCoord[12]: { 2, 2, 2 } - temp: 12
-	nodeCoord[13]: { 2, 2, 2 } - temp: 12
-	nodeCoord[14]: { 2, 2, 2 } - temp: 12
-	nodeCoord[15]: { 2, 2, 2 } - temp: 12
-	nodeCoord[16]: { 2, 2, 2 } - temp: 12
-	nodeCoord[17]: { 2, 2, 2 } - temp: 12
-	nodeCoord[18]: { 2, 2, 2 } - temp: 12
-	nodeCoord[19]: { 2, 2, 2 } - temp: 12
-	nodeCoord[20]: { 2, 2, 2 } - temp: 12
-	nodeCoord[21]: { 2, 2, 2 } - temp: 12
-	nodeCoord[22]: { 2, 2, 2 } - temp: 12
-	nodeCoord[23]: { 2, 2, 2 } - temp: 12
-	nodeCoord[24]: { 2, 2, 2 } - temp: 12
-	nodeCoord[25]: { 2, 2, 2 } - temp: 12
-	nodeCoord[26]: { 2, 2, 2 } - temp: 12
-	nodeCoord[27]: { 2, 2, 2 } - temp: 12
-	nodeCoord[28]: { 2, 2, 2 } - temp: 12
-	nodeCoord[29]: { 2, 2, 2 } - temp: 12
-	nodeCoord[30]: { 2, 2, 2 } - temp: 12
-	nodeCoord[31]: { 2, 2, 2 } - temp: 12
-	nodeCoord[32]: { 1, 1, 1 } - temp: 11
-	nodeCoord[33]: { 1, 1, 1 } - temp: 11
-	nodeCoord[34]: { 1, 1, 1 } - temp: 11
-	nodeCoord[35]: { 1, 1, 1 } - temp: 11
-	nodeCoord[36]: { 1, 1, 1 } - temp: 11
-	nodeCoord[37]: { 1, 1, 1 } - temp: 11
-	nodeCoord[38]: { 1, 1, 1 } - temp: 11
-	nodeCoord[39]: { 1, 1, 1 } - temp: 11
-	nodeCoord[40]: { 1, 1, 1 } - temp: 11
-	nodeCoord[41]: { 1, 1, 1 } - temp: 11
-	nodeCoord[42]: { 1, 1, 1 } - temp: 11
-	nodeCoord[43]: { 1, 1, 1 } - temp: 11
-	nodeCoord[44]: { 1, 1, 1 } - temp: 11
-	nodeCoord[45]: { 1, 1, 1 } - temp: 11
-	nodeCoord[46]: { 1, 1, 1 } - temp: 11
-	nodeCoord[47]: { 1, 1, 1 } - temp: 11
-	element[0]: temp: 22
-	element[1]: temp: 22
-	element[2]: temp: 22
-	element[3]: temp: 22
-	element[4]: temp: 22
-	element[5]: temp: 22
-	element[6]: temp: 22
-	element[7]: temp: 22
-	element[8]: temp: 22
-	element[9]: temp: 21
-	element[10]: temp: 21
-	element[11]: temp: 21
-	element[12]: temp: 21
-	element[13]: temp: 21
-	element[14]: temp: 21
-	element[15]: temp: 21
-	element[16]: temp: 21
-	element[17]: temp: 21

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshSync " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshSync.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,176 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: testMeshSync.c 2136 2004-09-30 02:47:13Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-struct _Node
-{
-	double temp;
-};
-
-struct _Element
-{
-	double temp;
-};
-
-
-int main( int argc, char* argv[] )
-{
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	MeshDecomp*		decomp;
-	MeshLayout*		ml;
-	Mesh*			mesh;
-	Stream*			stream;
-	Node_DomainIndex	node_dI;
-	Element_DomainIndex	element_dI;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	stream = Journal_Register (Info_Type, "myStream");
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New_All( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout, 1 );
-	ml = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
-	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", ml, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
-	
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	
-	for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-		mesh->nodeCoord[node_dI][0] = (double)rank;
-		mesh->nodeCoord[node_dI][1] = (double)rank;
-		mesh->nodeCoord[node_dI][2] = (double)rank;
-		mesh->node[node_dI].temp = 10.0 + (double)rank;
-	}
-	for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ ) {
-		mesh->element[element_dI].temp = 20.0 + (double)rank;
-	}
-	
-	if( rank == procToWatch ) {
-		Print(mesh, stream);
-		
-		printf( "Pre-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-	
-	Mesh_Sync( mesh );
-	
-	if( rank == procToWatch ) {
-		printf( "Post-sync:\n" );
-		for( node_dI = 0; node_dI < mesh->nodeDomainCount; node_dI++ ) {
-			printf( "\tnodeCoord[%d]: { %g, %g, %g } - temp: %g\n",  node_dI, mesh->nodeCoord[node_dI][0],
-				mesh->nodeCoord[node_dI][1], mesh->nodeCoord[node_dI][2], mesh->node[node_dI].temp );
-		}
-		for( element_dI = 0; element_dI < mesh->elementDomainCount; element_dI++ )
-			printf( "\telement[%d]: temp: %g\n", element_dI, mesh->element[element_dI].temp );
-	}
-	
-	Stg_Class_Delete( mesh );
-	Stg_Class_Delete( ml );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshTopology.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshTopology.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testMeshTopology.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -39,58 +39,80 @@
 #include "Discretisation/Mesh/Mesh.h"
 
 
-Bool testSetElements( unsigned rank, unsigned nProcs, unsigned watch );
 void buildElements( unsigned rank, unsigned nProcs, 
-		    unsigned* nEls, unsigned** els );
+		    unsigned* nEls, unsigned** els )
+{
+	unsigned	start;
+	unsigned	e_i;
 
+	*nEls = 100;
+	*els = Memory_Alloc_Array_Unnamed( unsigned, *nEls );
+	start = rank * (*nEls - 10);
 
-#define nTests	1
+	for( e_i = 0; e_i < *nEls; e_i++ )
+		(*els)[e_i] = start + e_i;
+}
 
-TestSuite_Test	tests[nTests] = {{"set elements", testSetElements}};
+void buildAll( unsigned rank, unsigned nProcs ) {
+}
 
 
 Bool testSetElements( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
 	MeshTopology*	topo;
 	unsigned	nDims = 3;
-	unsigned	nEls = 0;
-	unsigned*	els = NULL;
+	unsigned	nEls, *els;
 
 	buildElements( rank, nProcs, &nEls, &els );
-	topo = MeshTopology_New( "" );
-	MeshTopology_SetNDims( topo, nDims );
+	topo = MeshTopology_New( "meshTopology" );
+	MeshTopology_SetDimSize( topo, nDims );
 	MeshTopology_SetElements( topo, MT_VERTEX, nEls, els );
 
 	if( rank == watch ) {
 		if( topo->nDims != 3 || topo->nTDims != 4 || 
 		    !topo->domains || !topo->domains[MT_VERTEX] || !topo->domains[MT_VERTEX]->decomp )
 		{
-			FreeArray( els );
-			FreeObject( topo );
-			return False;
+			result = False;
+			goto done;
 		}
 	}
 
+done:
 	FreeArray( els );
 	FreeObject( topo );
 
-	return True;
+	return result;
 }
 
-void buildElements( unsigned rank, unsigned nProcs, 
-		    unsigned* nEls, unsigned** els )
-{
-	unsigned	start;
-	unsigned	e_i;
+Bool testShadows( unsigned rank, unsigned nProcs, unsigned watch ) {
+	Bool		result = True;
+	MeshTopology*	topo;
+	unsigned	nDims = 3;
+	unsigned	nEls, *els;
 
-	*nEls = 100;
-	*els = Memory_Alloc_Array_Unnamed( unsigned, *nEls );
-	start = rank * (*nEls - 10);
+	buildElements( rank, nProcs, &nEls, &els );
+	topo = MeshTopology_New( "meshTopology" );
+	MeshTopology_SetDimSize( topo, nDims );
+	MeshTopology_SetElements( topo, MT_VERTEX, nEls, els );
+	MeshTopology_SetShadowDepth( topo, 1 );
 
-	for( e_i = 0; e_i < *nEls; e_i++ )
-		(*els)[e_i] = start + e_i;
+	if( rank == watch ) {
+	}
+
+done:
+	FreeArray( els );
+	FreeObject( topo );
+
+	return result;
 }
 
 
+#define nTests	2
+
+TestSuite_Test	tests[nTests] = {{"set elements", testSetElements, 10}, 
+				 {"shadow depth", testShadows, 10}};
+
+
 int main( int argc, char* argv[] ) {
 	TestSuite*	suite;
 

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,834 +0,0 @@
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 0 (0.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 1 (0.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 2 (1.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 3 (1.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00,0.00):
-		Incl    4, Excl    4
-	Test point 4 (2.10,0.10,0.10):
-		Incl    4, Excl    4
-	Node 5 (2.50,0.00,0.00):
-		Incl    5, Excl    5
-	Test point 5 (2.60,0.10,0.10):
-		Incl    5, Excl    5
-	Node 6 (3.00,0.00,0.00):
-		Incl    6, Excl    6
-	Test point 6 (3.10,0.10,0.10):
-		Incl    6, Excl    6
-	Node 7 (3.50,0.00,0.00):
-		Incl    7, Excl    7
-	Test point 7 (3.60,0.10,0.10):
-		Incl    7, Excl    7
-	Node 8 (4.00,0.00,0.00):
-		Incl    8, Excl    8
-	Test point 8 (4.10,0.10,0.10):
-		Incl    8, Excl    8
-	Node 9 (4.50,0.00,0.00):
-		Incl    9, Excl    9
-	Test point 9 (4.60,0.10,0.10):
-		Incl    9, Excl    9
-	Node 10 (5.00,0.00,0.00):
-		Incl   10, Excl   10
-	Test point 10 (5.10,0.10,0.10):
-		Incl   10, Excl   10
-	Node 11 (5.50,0.00,0.00):
-		Incl   11, Excl   11
-	Test point 11 (5.60,0.10,0.10):
-		Incl   11, Excl   11
-	Node 12 (6.00,0.00,0.00):
-		Incl   11, Excl   11
-	Test point 12 (6.10,0.10,0.10):
-		Incl  108, Excl  108
-	Node 13 (0.00,0.33,0.00):
-		Incl   12, Excl   12
-	Test point 13 (0.10,0.43,0.10):
-		Incl   12, Excl   12
-	Node 14 (0.50,0.33,0.00):
-		Incl   13, Excl   13
-	Test point 14 (0.60,0.43,0.10):
-		Incl   13, Excl   13
-	Node 15 (1.00,0.33,0.00):
-		Incl   14, Excl   14
-	Test point 15 (1.10,0.43,0.10):
-		Incl   14, Excl   14
-	Node 16 (1.50,0.33,0.00):
-		Incl   15, Excl   15
-	Test point 16 (1.60,0.43,0.10):
-		Incl   15, Excl   15
-	Node 17 (2.00,0.33,0.00):
-		Incl   16, Excl   16
-	Test point 17 (2.10,0.43,0.10):
-		Incl   16, Excl   16
-	Node 18 (2.50,0.33,0.00):
-		Incl   17, Excl   17
-	Test point 18 (2.60,0.43,0.10):
-		Incl   17, Excl   17
-	Node 19 (3.00,0.33,0.00):
-		Incl   18, Excl   18
-	Test point 19 (3.10,0.43,0.10):
-		Incl   18, Excl   18
-	Node 20 (3.50,0.33,0.00):
-		Incl   19, Excl   19
-	Test point 20 (3.60,0.43,0.10):
-		Incl   19, Excl   19
-	Node 21 (4.00,0.33,0.00):
-		Incl   20, Excl   20
-	Test point 21 (4.10,0.43,0.10):
-		Incl   20, Excl   20
-	Node 22 (4.50,0.33,0.00):
-		Incl   21, Excl   21
-	Test point 22 (4.60,0.43,0.10):
-		Incl   21, Excl   21
-	Node 23 (5.00,0.33,0.00):
-		Incl   22, Excl   22
-	Test point 23 (5.10,0.43,0.10):
-		Incl   22, Excl   22
-	Node 24 (5.50,0.33,0.00):
-		Incl   23, Excl   23
-	Test point 24 (5.60,0.43,0.10):
-		Incl   23, Excl   23
-	Node 25 (6.00,0.33,0.00):
-		Incl   23, Excl   23
-	Test point 25 (6.10,0.43,0.10):
-		Incl  108, Excl  108
-	Node 26 (0.00,0.67,0.00):
-		Incl   24, Excl   24
-	Test point 26 (0.10,0.77,0.10):
-		Incl   24, Excl   24
-	Node 27 (0.50,0.67,0.00):
-		Incl   25, Excl   25
-	Test point 27 (0.60,0.77,0.10):
-		Incl   25, Excl   25
-	Node 28 (1.00,0.67,0.00):
-		Incl   26, Excl   26
-	Test point 28 (1.10,0.77,0.10):
-		Incl   26, Excl   26
-	Node 29 (1.50,0.67,0.00):
-		Incl   27, Excl   27
-	Test point 29 (1.60,0.77,0.10):
-		Incl   27, Excl   27
-	Node 30 (2.00,0.67,0.00):
-		Incl   28, Excl   28
-	Test point 30 (2.10,0.77,0.10):
-		Incl   28, Excl   28
-	Node 31 (2.50,0.67,0.00):
-		Incl   29, Excl   29
-	Test point 31 (2.60,0.77,0.10):
-		Incl   29, Excl   29
-	Node 32 (3.00,0.67,0.00):
-		Incl   30, Excl   30
-	Test point 32 (3.10,0.77,0.10):
-		Incl   30, Excl   30
-	Node 33 (3.50,0.67,0.00):
-		Incl   31, Excl   31
-	Test point 33 (3.60,0.77,0.10):
-		Incl   31, Excl   31
-	Node 34 (4.00,0.67,0.00):
-		Incl   32, Excl   32
-	Test point 34 (4.10,0.77,0.10):
-		Incl   32, Excl   32
-	Node 35 (4.50,0.67,0.00):
-		Incl   33, Excl   33
-	Test point 35 (4.60,0.77,0.10):
-		Incl   33, Excl   33
-	Node 36 (5.00,0.67,0.00):
-		Incl   34, Excl   34
-	Test point 36 (5.10,0.77,0.10):
-		Incl   34, Excl   34
-	Node 37 (5.50,0.67,0.00):
-		Incl   35, Excl   35
-	Test point 37 (5.60,0.77,0.10):
-		Incl   35, Excl   35
-	Node 38 (6.00,0.67,0.00):
-		Incl   35, Excl   35
-	Test point 38 (6.10,0.77,0.10):
-		Incl  108, Excl  108
-	Node 39 (0.00,1.00,0.00):
-		Incl   24, Excl   24
-	Test point 39 (0.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 40 (0.50,1.00,0.00):
-		Incl   25, Excl   25
-	Test point 40 (0.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 41 (1.00,1.00,0.00):
-		Incl   26, Excl   26
-	Test point 41 (1.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 42 (1.50,1.00,0.00):
-		Incl   27, Excl   27
-	Test point 42 (1.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 43 (2.00,1.00,0.00):
-		Incl   28, Excl   28
-	Test point 43 (2.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 44 (2.50,1.00,0.00):
-		Incl   29, Excl   29
-	Test point 44 (2.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 45 (3.00,1.00,0.00):
-		Incl   30, Excl   30
-	Test point 45 (3.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 46 (3.50,1.00,0.00):
-		Incl   31, Excl   31
-	Test point 46 (3.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 47 (4.00,1.00,0.00):
-		Incl   32, Excl   32
-	Test point 47 (4.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 48 (4.50,1.00,0.00):
-		Incl   33, Excl   33
-	Test point 48 (4.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 49 (5.00,1.00,0.00):
-		Incl   34, Excl   34
-	Test point 49 (5.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 50 (5.50,1.00,0.00):
-		Incl   35, Excl   35
-	Test point 50 (5.60,1.10,0.10):
-		Incl  108, Excl  108
-	Node 51 (6.00,1.00,0.00):
-		Incl   35, Excl   35
-	Test point 51 (6.10,1.10,0.10):
-		Incl  108, Excl  108
-	Node 52 (0.00,0.00,0.33):
-		Incl   36, Excl   36
-	Test point 52 (0.10,0.10,0.43):
-		Incl   36, Excl   36
-	Node 53 (0.50,0.00,0.33):
-		Incl   37, Excl   37
-	Test point 53 (0.60,0.10,0.43):
-		Incl   37, Excl   37
-	Node 54 (1.00,0.00,0.33):
-		Incl   38, Excl   38
-	Test point 54 (1.10,0.10,0.43):
-		Incl   38, Excl   38
-	Node 55 (1.50,0.00,0.33):
-		Incl   39, Excl   39
-	Test point 55 (1.60,0.10,0.43):
-		Incl   39, Excl   39
-	Node 56 (2.00,0.00,0.33):
-		Incl   40, Excl   40
-	Test point 56 (2.10,0.10,0.43):
-		Incl   40, Excl   40
-	Node 57 (2.50,0.00,0.33):
-		Incl   41, Excl   41
-	Test point 57 (2.60,0.10,0.43):
-		Incl   41, Excl   41
-	Node 58 (3.00,0.00,0.33):
-		Incl   42, Excl   42
-	Test point 58 (3.10,0.10,0.43):
-		Incl   42, Excl   42
-	Node 59 (3.50,0.00,0.33):
-		Incl   43, Excl   43
-	Test point 59 (3.60,0.10,0.43):
-		Incl   43, Excl   43
-	Node 60 (4.00,0.00,0.33):
-		Incl   44, Excl   44
-	Test point 60 (4.10,0.10,0.43):
-		Incl   44, Excl   44
-	Node 61 (4.50,0.00,0.33):
-		Incl   45, Excl   45
-	Test point 61 (4.60,0.10,0.43):
-		Incl   45, Excl   45
-	Node 62 (5.00,0.00,0.33):
-		Incl   46, Excl   46
-	Test point 62 (5.10,0.10,0.43):
-		Incl   46, Excl   46
-	Node 63 (5.50,0.00,0.33):
-		Incl   47, Excl   47
-	Test point 63 (5.60,0.10,0.43):
-		Incl   47, Excl   47
-	Node 64 (6.00,0.00,0.33):
-		Incl   47, Excl   47
-	Test point 64 (6.10,0.10,0.43):
-		Incl  108, Excl  108
-	Node 65 (0.00,0.33,0.33):
-		Incl   48, Excl   48
-	Test point 65 (0.10,0.43,0.43):
-		Incl   48, Excl   48
-	Node 66 (0.50,0.33,0.33):
-		Incl   49, Excl   49
-	Test point 66 (0.60,0.43,0.43):
-		Incl   49, Excl   49
-	Node 67 (1.00,0.33,0.33):
-		Incl   50, Excl   50
-	Test point 67 (1.10,0.43,0.43):
-		Incl   50, Excl   50
-	Node 68 (1.50,0.33,0.33):
-		Incl   51, Excl   51
-	Test point 68 (1.60,0.43,0.43):
-		Incl   51, Excl   51
-	Node 69 (2.00,0.33,0.33):
-		Incl   52, Excl   52
-	Test point 69 (2.10,0.43,0.43):
-		Incl   52, Excl   52
-	Node 70 (2.50,0.33,0.33):
-		Incl   53, Excl   53
-	Test point 70 (2.60,0.43,0.43):
-		Incl   53, Excl   53
-	Node 71 (3.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 71 (3.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 72 (3.50,0.33,0.33):
-		Incl   55, Excl   55
-	Test point 72 (3.60,0.43,0.43):
-		Incl   55, Excl   55
-	Node 73 (4.00,0.33,0.33):
-		Incl   56, Excl   56
-	Test point 73 (4.10,0.43,0.43):
-		Incl   56, Excl   56
-	Node 74 (4.50,0.33,0.33):
-		Incl   57, Excl   57
-	Test point 74 (4.60,0.43,0.43):
-		Incl   57, Excl   57
-	Node 75 (5.00,0.33,0.33):
-		Incl   58, Excl   58
-	Test point 75 (5.10,0.43,0.43):
-		Incl   58, Excl   58
-	Node 76 (5.50,0.33,0.33):
-		Incl   59, Excl   59
-	Test point 76 (5.60,0.43,0.43):
-		Incl   59, Excl   59
-	Node 77 (6.00,0.33,0.33):
-		Incl   59, Excl   59
-	Test point 77 (6.10,0.43,0.43):
-		Incl  108, Excl  108
-	Node 78 (0.00,0.67,0.33):
-		Incl   60, Excl   60
-	Test point 78 (0.10,0.77,0.43):
-		Incl   60, Excl   60
-	Node 79 (0.50,0.67,0.33):
-		Incl   61, Excl   61
-	Test point 79 (0.60,0.77,0.43):
-		Incl   61, Excl   61
-	Node 80 (1.00,0.67,0.33):
-		Incl   62, Excl   62
-	Test point 80 (1.10,0.77,0.43):
-		Incl   62, Excl   62
-	Node 81 (1.50,0.67,0.33):
-		Incl   63, Excl   63
-	Test point 81 (1.60,0.77,0.43):
-		Incl   63, Excl   63
-	Node 82 (2.00,0.67,0.33):
-		Incl   64, Excl   64
-	Test point 82 (2.10,0.77,0.43):
-		Incl   64, Excl   64
-	Node 83 (2.50,0.67,0.33):
-		Incl   65, Excl   65
-	Test point 83 (2.60,0.77,0.43):
-		Incl   65, Excl   65
-	Node 84 (3.00,0.67,0.33):
-		Incl   66, Excl   66
-	Test point 84 (3.10,0.77,0.43):
-		Incl   66, Excl   66
-	Node 85 (3.50,0.67,0.33):
-		Incl   67, Excl   67
-	Test point 85 (3.60,0.77,0.43):
-		Incl   67, Excl   67
-	Node 86 (4.00,0.67,0.33):
-		Incl   68, Excl   68
-	Test point 86 (4.10,0.77,0.43):
-		Incl   68, Excl   68
-	Node 87 (4.50,0.67,0.33):
-		Incl   69, Excl   69
-	Test point 87 (4.60,0.77,0.43):
-		Incl   69, Excl   69
-	Node 88 (5.00,0.67,0.33):
-		Incl   70, Excl   70
-	Test point 88 (5.10,0.77,0.43):
-		Incl   70, Excl   70
-	Node 89 (5.50,0.67,0.33):
-		Incl   71, Excl   71
-	Test point 89 (5.60,0.77,0.43):
-		Incl   71, Excl   71
-	Node 90 (6.00,0.67,0.33):
-		Incl   71, Excl   71
-	Test point 90 (6.10,0.77,0.43):
-		Incl  108, Excl  108
-	Node 91 (0.00,1.00,0.33):
-		Incl   60, Excl   60
-	Test point 91 (0.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 92 (0.50,1.00,0.33):
-		Incl   61, Excl   61
-	Test point 92 (0.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 93 (1.00,1.00,0.33):
-		Incl   62, Excl   62
-	Test point 93 (1.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 94 (1.50,1.00,0.33):
-		Incl   63, Excl   63
-	Test point 94 (1.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 95 (2.00,1.00,0.33):
-		Incl   64, Excl   64
-	Test point 95 (2.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 96 (2.50,1.00,0.33):
-		Incl   65, Excl   65
-	Test point 96 (2.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 97 (3.00,1.00,0.33):
-		Incl   66, Excl   66
-	Test point 97 (3.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 98 (3.50,1.00,0.33):
-		Incl   67, Excl   67
-	Test point 98 (3.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 99 (4.00,1.00,0.33):
-		Incl   68, Excl   68
-	Test point 99 (4.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 100 (4.50,1.00,0.33):
-		Incl   69, Excl   69
-	Test point 100 (4.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 101 (5.00,1.00,0.33):
-		Incl   70, Excl   70
-	Test point 101 (5.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 102 (5.50,1.00,0.33):
-		Incl   71, Excl   71
-	Test point 102 (5.60,1.10,0.43):
-		Incl  108, Excl  108
-	Node 103 (6.00,1.00,0.33):
-		Incl   71, Excl   71
-	Test point 103 (6.10,1.10,0.43):
-		Incl  108, Excl  108
-	Node 104 (0.00,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 104 (0.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 105 (0.50,0.00,0.67):
-		Incl   73, Excl   73
-	Test point 105 (0.60,0.10,0.77):
-		Incl   73, Excl   73
-	Node 106 (1.00,0.00,0.67):
-		Incl   74, Excl   74
-	Test point 106 (1.10,0.10,0.77):
-		Incl   74, Excl   74
-	Node 107 (1.50,0.00,0.67):
-		Incl   75, Excl   75
-	Test point 107 (1.60,0.10,0.77):
-		Incl   75, Excl   75
-	Node 108 (2.00,0.00,0.67):
-		Incl   76, Excl   76
-	Test point 108 (2.10,0.10,0.77):
-		Incl   76, Excl   76
-	Node 109 (2.50,0.00,0.67):
-		Incl   77, Excl   77
-	Test point 109 (2.60,0.10,0.77):
-		Incl   77, Excl   77
-	Node 110 (3.00,0.00,0.67):
-		Incl   78, Excl   78
-	Test point 110 (3.10,0.10,0.77):
-		Incl   78, Excl   78
-	Node 111 (3.50,0.00,0.67):
-		Incl   79, Excl   79
-	Test point 111 (3.60,0.10,0.77):
-		Incl   79, Excl   79
-	Node 112 (4.00,0.00,0.67):
-		Incl   80, Excl   80
-	Test point 112 (4.10,0.10,0.77):
-		Incl   80, Excl   80
-	Node 113 (4.50,0.00,0.67):
-		Incl   81, Excl   81
-	Test point 113 (4.60,0.10,0.77):
-		Incl   81, Excl   81
-	Node 114 (5.00,0.00,0.67):
-		Incl   82, Excl   82
-	Test point 114 (5.10,0.10,0.77):
-		Incl   82, Excl   82
-	Node 115 (5.50,0.00,0.67):
-		Incl   83, Excl   83
-	Test point 115 (5.60,0.10,0.77):
-		Incl   83, Excl   83
-	Node 116 (6.00,0.00,0.67):
-		Incl   83, Excl   83
-	Test point 116 (6.10,0.10,0.77):
-		Incl  108, Excl  108
-	Node 117 (0.00,0.33,0.67):
-		Incl   84, Excl   84
-	Test point 117 (0.10,0.43,0.77):
-		Incl   84, Excl   84
-	Node 118 (0.50,0.33,0.67):
-		Incl   85, Excl   85
-	Test point 118 (0.60,0.43,0.77):
-		Incl   85, Excl   85
-	Node 119 (1.00,0.33,0.67):
-		Incl   86, Excl   86
-	Test point 119 (1.10,0.43,0.77):
-		Incl   86, Excl   86
-	Node 120 (1.50,0.33,0.67):
-		Incl   87, Excl   87
-	Test point 120 (1.60,0.43,0.77):
-		Incl   87, Excl   87
-	Node 121 (2.00,0.33,0.67):
-		Incl   88, Excl   88
-	Test point 121 (2.10,0.43,0.77):
-		Incl   88, Excl   88
-	Node 122 (2.50,0.33,0.67):
-		Incl   89, Excl   89
-	Test point 122 (2.60,0.43,0.77):
-		Incl   89, Excl   89
-	Node 123 (3.00,0.33,0.67):
-		Incl   90, Excl   90
-	Test point 123 (3.10,0.43,0.77):
-		Incl   90, Excl   90
-	Node 124 (3.50,0.33,0.67):
-		Incl   91, Excl   91
-	Test point 124 (3.60,0.43,0.77):
-		Incl   91, Excl   91
-	Node 125 (4.00,0.33,0.67):
-		Incl   92, Excl   92
-	Test point 125 (4.10,0.43,0.77):
-		Incl   92, Excl   92
-	Node 126 (4.50,0.33,0.67):
-		Incl   93, Excl   93
-	Test point 126 (4.60,0.43,0.77):
-		Incl   93, Excl   93
-	Node 127 (5.00,0.33,0.67):
-		Incl   94, Excl   94
-	Test point 127 (5.10,0.43,0.77):
-		Incl   94, Excl   94
-	Node 128 (5.50,0.33,0.67):
-		Incl   95, Excl   95
-	Test point 128 (5.60,0.43,0.77):
-		Incl   95, Excl   95
-	Node 129 (6.00,0.33,0.67):
-		Incl   95, Excl   95
-	Test point 129 (6.10,0.43,0.77):
-		Incl  108, Excl  108
-	Node 130 (0.00,0.67,0.67):
-		Incl   96, Excl   96
-	Test point 130 (0.10,0.77,0.77):
-		Incl   96, Excl   96
-	Node 131 (0.50,0.67,0.67):
-		Incl   97, Excl   97
-	Test point 131 (0.60,0.77,0.77):
-		Incl   97, Excl   97
-	Node 132 (1.00,0.67,0.67):
-		Incl   98, Excl   98
-	Test point 132 (1.10,0.77,0.77):
-		Incl   98, Excl   98
-	Node 133 (1.50,0.67,0.67):
-		Incl   99, Excl   99
-	Test point 133 (1.60,0.77,0.77):
-		Incl   99, Excl   99
-	Node 134 (2.00,0.67,0.67):
-		Incl  100, Excl  100
-	Test point 134 (2.10,0.77,0.77):
-		Incl  100, Excl  100
-	Node 135 (2.50,0.67,0.67):
-		Incl  101, Excl  101
-	Test point 135 (2.60,0.77,0.77):
-		Incl  101, Excl  101
-	Node 136 (3.00,0.67,0.67):
-		Incl  102, Excl  102
-	Test point 136 (3.10,0.77,0.77):
-		Incl  102, Excl  102
-	Node 137 (3.50,0.67,0.67):
-		Incl  103, Excl  103
-	Test point 137 (3.60,0.77,0.77):
-		Incl  103, Excl  103
-	Node 138 (4.00,0.67,0.67):
-		Incl  104, Excl  104
-	Test point 138 (4.10,0.77,0.77):
-		Incl  104, Excl  104
-	Node 139 (4.50,0.67,0.67):
-		Incl  105, Excl  105
-	Test point 139 (4.60,0.77,0.77):
-		Incl  105, Excl  105
-	Node 140 (5.00,0.67,0.67):
-		Incl  106, Excl  106
-	Test point 140 (5.10,0.77,0.77):
-		Incl  106, Excl  106
-	Node 141 (5.50,0.67,0.67):
-		Incl  107, Excl  107
-	Test point 141 (5.60,0.77,0.77):
-		Incl  107, Excl  107
-	Node 142 (6.00,0.67,0.67):
-		Incl  107, Excl  107
-	Test point 142 (6.10,0.77,0.77):
-		Incl  108, Excl  108
-	Node 143 (0.00,1.00,0.67):
-		Incl   96, Excl   96
-	Test point 143 (0.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 144 (0.50,1.00,0.67):
-		Incl   97, Excl   97
-	Test point 144 (0.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 145 (1.00,1.00,0.67):
-		Incl   98, Excl   98
-	Test point 145 (1.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 146 (1.50,1.00,0.67):
-		Incl   99, Excl   99
-	Test point 146 (1.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 147 (2.00,1.00,0.67):
-		Incl  100, Excl  100
-	Test point 147 (2.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 148 (2.50,1.00,0.67):
-		Incl  101, Excl  101
-	Test point 148 (2.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 149 (3.00,1.00,0.67):
-		Incl  102, Excl  102
-	Test point 149 (3.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 150 (3.50,1.00,0.67):
-		Incl  103, Excl  103
-	Test point 150 (3.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 151 (4.00,1.00,0.67):
-		Incl  104, Excl  104
-	Test point 151 (4.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 152 (4.50,1.00,0.67):
-		Incl  105, Excl  105
-	Test point 152 (4.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 153 (5.00,1.00,0.67):
-		Incl  106, Excl  106
-	Test point 153 (5.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 154 (5.50,1.00,0.67):
-		Incl  107, Excl  107
-	Test point 154 (5.60,1.10,0.77):
-		Incl  108, Excl  108
-	Node 155 (6.00,1.00,0.67):
-		Incl  107, Excl  107
-	Test point 155 (6.10,1.10,0.77):
-		Incl  108, Excl  108
-	Node 156 (0.00,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 156 (0.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 157 (0.50,0.00,1.00):
-		Incl   73, Excl   73
-	Test point 157 (0.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 158 (1.00,0.00,1.00):
-		Incl   74, Excl   74
-	Test point 158 (1.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 159 (1.50,0.00,1.00):
-		Incl   75, Excl   75
-	Test point 159 (1.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 160 (2.00,0.00,1.00):
-		Incl   76, Excl   76
-	Test point 160 (2.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 161 (2.50,0.00,1.00):
-		Incl   77, Excl   77
-	Test point 161 (2.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 162 (3.00,0.00,1.00):
-		Incl   78, Excl   78
-	Test point 162 (3.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 163 (3.50,0.00,1.00):
-		Incl   79, Excl   79
-	Test point 163 (3.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 164 (4.00,0.00,1.00):
-		Incl   80, Excl   80
-	Test point 164 (4.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 165 (4.50,0.00,1.00):
-		Incl   81, Excl   81
-	Test point 165 (4.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 166 (5.00,0.00,1.00):
-		Incl   82, Excl   82
-	Test point 166 (5.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 167 (5.50,0.00,1.00):
-		Incl   83, Excl   83
-	Test point 167 (5.60,0.10,1.10):
-		Incl  108, Excl  108
-	Node 168 (6.00,0.00,1.00):
-		Incl   83, Excl   83
-	Test point 168 (6.10,0.10,1.10):
-		Incl  108, Excl  108
-	Node 169 (0.00,0.33,1.00):
-		Incl   84, Excl   84
-	Test point 169 (0.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 170 (0.50,0.33,1.00):
-		Incl   85, Excl   85
-	Test point 170 (0.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 171 (1.00,0.33,1.00):
-		Incl   86, Excl   86
-	Test point 171 (1.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 172 (1.50,0.33,1.00):
-		Incl   87, Excl   87
-	Test point 172 (1.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 173 (2.00,0.33,1.00):
-		Incl   88, Excl   88
-	Test point 173 (2.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 174 (2.50,0.33,1.00):
-		Incl   89, Excl   89
-	Test point 174 (2.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 175 (3.00,0.33,1.00):
-		Incl   90, Excl   90
-	Test point 175 (3.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 176 (3.50,0.33,1.00):
-		Incl   91, Excl   91
-	Test point 176 (3.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 177 (4.00,0.33,1.00):
-		Incl   92, Excl   92
-	Test point 177 (4.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 178 (4.50,0.33,1.00):
-		Incl   93, Excl   93
-	Test point 178 (4.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 179 (5.00,0.33,1.00):
-		Incl   94, Excl   94
-	Test point 179 (5.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 180 (5.50,0.33,1.00):
-		Incl   95, Excl   95
-	Test point 180 (5.60,0.43,1.10):
-		Incl  108, Excl  108
-	Node 181 (6.00,0.33,1.00):
-		Incl   95, Excl   95
-	Test point 181 (6.10,0.43,1.10):
-		Incl  108, Excl  108
-	Node 182 (0.00,0.67,1.00):
-		Incl   96, Excl   96
-	Test point 182 (0.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 183 (0.50,0.67,1.00):
-		Incl   97, Excl   97
-	Test point 183 (0.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 184 (1.00,0.67,1.00):
-		Incl   98, Excl   98
-	Test point 184 (1.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 185 (1.50,0.67,1.00):
-		Incl   99, Excl   99
-	Test point 185 (1.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 186 (2.00,0.67,1.00):
-		Incl  100, Excl  100
-	Test point 186 (2.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 187 (2.50,0.67,1.00):
-		Incl  101, Excl  101
-	Test point 187 (2.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 188 (3.00,0.67,1.00):
-		Incl  102, Excl  102
-	Test point 188 (3.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 189 (3.50,0.67,1.00):
-		Incl  103, Excl  103
-	Test point 189 (3.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 190 (4.00,0.67,1.00):
-		Incl  104, Excl  104
-	Test point 190 (4.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 191 (4.50,0.67,1.00):
-		Incl  105, Excl  105
-	Test point 191 (4.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 192 (5.00,0.67,1.00):
-		Incl  106, Excl  106
-	Test point 192 (5.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 193 (5.50,0.67,1.00):
-		Incl  107, Excl  107
-	Test point 193 (5.60,0.77,1.10):
-		Incl  108, Excl  108
-	Node 194 (6.00,0.67,1.00):
-		Incl  107, Excl  107
-	Test point 194 (6.10,0.77,1.10):
-		Incl  108, Excl  108
-	Node 195 (0.00,1.00,1.00):
-		Incl   96, Excl   96
-	Test point 195 (0.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 196 (0.50,1.00,1.00):
-		Incl   97, Excl   97
-	Test point 196 (0.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 197 (1.00,1.00,1.00):
-		Incl   98, Excl   98
-	Test point 197 (1.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 198 (1.50,1.00,1.00):
-		Incl   99, Excl   99
-	Test point 198 (1.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 199 (2.00,1.00,1.00):
-		Incl  100, Excl  100
-	Test point 199 (2.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 200 (2.50,1.00,1.00):
-		Incl  101, Excl  101
-	Test point 200 (2.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 201 (3.00,1.00,1.00):
-		Incl  102, Excl  102
-	Test point 201 (3.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 202 (3.50,1.00,1.00):
-		Incl  103, Excl  103
-	Test point 202 (3.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 203 (4.00,1.00,1.00):
-		Incl  104, Excl  104
-	Test point 203 (4.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 204 (4.50,1.00,1.00):
-		Incl  105, Excl  105
-	Test point 204 (4.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 205 (5.00,1.00,1.00):
-		Incl  106, Excl  106
-	Test point 205 (5.10,1.10,1.10):
-		Incl  108, Excl  108
-	Node 206 (5.50,1.00,1.00):
-		Incl  107, Excl  107
-	Test point 206 (5.60,1.10,1.10):
-		Incl  108, Excl  108
-	Node 207 (6.00,1.00,1.00):
-		Incl  107, Excl  107
-	Test point 207 (6.10,1.10,1.10):
-		Incl  108, Excl  108
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,835 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 0 (0.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 1 (0.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 2 (1.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 3 (1.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00,0.00):
-		Incl    4, Excl    4
-	Test point 4 (2.10,0.10,0.10):
-		Incl    4, Excl    4
-	Node 5 (2.50,0.00,0.00):
-		Incl    5, Excl    5
-	Test point 5 (2.60,0.10,0.10):
-		Incl    5, Excl    5
-	Node 6 (3.00,0.00,0.00):
-		Incl    5, Excl   54
-	Test point 6 (3.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 7 (3.50,0.00,0.00):
-		Incl   54, Excl   72
-	Test point 7 (3.60,0.10,0.10):
-		Incl   72, Excl   72
-	Node 8 (4.00,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 8 (4.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 9 (4.50,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 9 (4.60,0.10,0.10):
-		Incl   72, Excl   72
-	Node 10 (5.00,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 10 (5.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 11 (5.50,0.00,0.00):
-		Incl   55, Excl   55
-	Test point 11 (5.60,0.10,0.10):
-		Incl   55, Excl   55
-	Node 12 (6.00,0.00,0.00):
-		Incl   55, Excl   55
-	Test point 12 (6.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 13 (0.00,0.33,0.00):
-		Incl    6, Excl    6
-	Test point 13 (0.10,0.43,0.10):
-		Incl    6, Excl    6
-	Node 14 (0.50,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 14 (0.60,0.43,0.10):
-		Incl    7, Excl    7
-	Node 15 (1.00,0.33,0.00):
-		Incl    8, Excl    8
-	Test point 15 (1.10,0.43,0.10):
-		Incl    8, Excl    8
-	Node 16 (1.50,0.33,0.00):
-		Incl    9, Excl    9
-	Test point 16 (1.60,0.43,0.10):
-		Incl    9, Excl    9
-	Node 17 (2.00,0.33,0.00):
-		Incl   10, Excl   10
-	Test point 17 (2.10,0.43,0.10):
-		Incl   10, Excl   10
-	Node 18 (2.50,0.33,0.00):
-		Incl   11, Excl   11
-	Test point 18 (2.60,0.43,0.10):
-		Incl   11, Excl   11
-	Node 19 (3.00,0.33,0.00):
-		Incl   11, Excl   56
-	Test point 19 (3.10,0.43,0.10):
-		Incl   56, Excl   56
-	Node 20 (3.50,0.33,0.00):
-		Incl   56, Excl   72
-	Test point 20 (3.60,0.43,0.10):
-		Incl   72, Excl   72
-	Node 21 (4.00,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 21 (4.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 22 (4.50,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 22 (4.60,0.43,0.10):
-		Incl   72, Excl   72
-	Node 23 (5.00,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 23 (5.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 24 (5.50,0.33,0.00):
-		Incl   57, Excl   57
-	Test point 24 (5.60,0.43,0.10):
-		Incl   57, Excl   57
-	Node 25 (6.00,0.33,0.00):
-		Incl   57, Excl   57
-	Test point 25 (6.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 26 (0.00,0.67,0.00):
-		Incl   12, Excl   12
-	Test point 26 (0.10,0.77,0.10):
-		Incl   12, Excl   12
-	Node 27 (0.50,0.67,0.00):
-		Incl   13, Excl   13
-	Test point 27 (0.60,0.77,0.10):
-		Incl   13, Excl   13
-	Node 28 (1.00,0.67,0.00):
-		Incl   14, Excl   14
-	Test point 28 (1.10,0.77,0.10):
-		Incl   14, Excl   14
-	Node 29 (1.50,0.67,0.00):
-		Incl   15, Excl   15
-	Test point 29 (1.60,0.77,0.10):
-		Incl   15, Excl   15
-	Node 30 (2.00,0.67,0.00):
-		Incl   16, Excl   16
-	Test point 30 (2.10,0.77,0.10):
-		Incl   16, Excl   16
-	Node 31 (2.50,0.67,0.00):
-		Incl   17, Excl   17
-	Test point 31 (2.60,0.77,0.10):
-		Incl   17, Excl   17
-	Node 32 (3.00,0.67,0.00):
-		Incl   17, Excl   58
-	Test point 32 (3.10,0.77,0.10):
-		Incl   58, Excl   58
-	Node 33 (3.50,0.67,0.00):
-		Incl   58, Excl   72
-	Test point 33 (3.60,0.77,0.10):
-		Incl   72, Excl   72
-	Node 34 (4.00,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 34 (4.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 35 (4.50,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 35 (4.60,0.77,0.10):
-		Incl   72, Excl   72
-	Node 36 (5.00,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 36 (5.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 37 (5.50,0.67,0.00):
-		Incl   59, Excl   59
-	Test point 37 (5.60,0.77,0.10):
-		Incl   59, Excl   59
-	Node 38 (6.00,0.67,0.00):
-		Incl   59, Excl   59
-	Test point 38 (6.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 39 (0.00,1.00,0.00):
-		Incl   12, Excl   12
-	Test point 39 (0.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 40 (0.50,1.00,0.00):
-		Incl   13, Excl   13
-	Test point 40 (0.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 41 (1.00,1.00,0.00):
-		Incl   14, Excl   14
-	Test point 41 (1.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 42 (1.50,1.00,0.00):
-		Incl   15, Excl   15
-	Test point 42 (1.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 43 (2.00,1.00,0.00):
-		Incl   16, Excl   16
-	Test point 43 (2.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 44 (2.50,1.00,0.00):
-		Incl   17, Excl   17
-	Test point 44 (2.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 45 (3.00,1.00,0.00):
-		Incl   17, Excl   58
-	Test point 45 (3.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 46 (3.50,1.00,0.00):
-		Incl   58, Excl   72
-	Test point 46 (3.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 47 (4.00,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 47 (4.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 48 (4.50,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 48 (4.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 49 (5.00,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 49 (5.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 50 (5.50,1.00,0.00):
-		Incl   59, Excl   59
-	Test point 50 (5.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 51 (6.00,1.00,0.00):
-		Incl   59, Excl   59
-	Test point 51 (6.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 52 (0.00,0.00,0.33):
-		Incl   18, Excl   18
-	Test point 52 (0.10,0.10,0.43):
-		Incl   18, Excl   18
-	Node 53 (0.50,0.00,0.33):
-		Incl   19, Excl   19
-	Test point 53 (0.60,0.10,0.43):
-		Incl   19, Excl   19
-	Node 54 (1.00,0.00,0.33):
-		Incl   20, Excl   20
-	Test point 54 (1.10,0.10,0.43):
-		Incl   20, Excl   20
-	Node 55 (1.50,0.00,0.33):
-		Incl   21, Excl   21
-	Test point 55 (1.60,0.10,0.43):
-		Incl   21, Excl   21
-	Node 56 (2.00,0.00,0.33):
-		Incl   22, Excl   22
-	Test point 56 (2.10,0.10,0.43):
-		Incl   22, Excl   22
-	Node 57 (2.50,0.00,0.33):
-		Incl   23, Excl   23
-	Test point 57 (2.60,0.10,0.43):
-		Incl   23, Excl   23
-	Node 58 (3.00,0.00,0.33):
-		Incl   23, Excl   60
-	Test point 58 (3.10,0.10,0.43):
-		Incl   60, Excl   60
-	Node 59 (3.50,0.00,0.33):
-		Incl   60, Excl   72
-	Test point 59 (3.60,0.10,0.43):
-		Incl   72, Excl   72
-	Node 60 (4.00,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 60 (4.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 61 (4.50,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 61 (4.60,0.10,0.43):
-		Incl   72, Excl   72
-	Node 62 (5.00,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 62 (5.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 63 (5.50,0.00,0.33):
-		Incl   61, Excl   61
-	Test point 63 (5.60,0.10,0.43):
-		Incl   61, Excl   61
-	Node 64 (6.00,0.00,0.33):
-		Incl   61, Excl   61
-	Test point 64 (6.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 65 (0.00,0.33,0.33):
-		Incl   24, Excl   24
-	Test point 65 (0.10,0.43,0.43):
-		Incl   24, Excl   24
-	Node 66 (0.50,0.33,0.33):
-		Incl   25, Excl   25
-	Test point 66 (0.60,0.43,0.43):
-		Incl   25, Excl   25
-	Node 67 (1.00,0.33,0.33):
-		Incl   26, Excl   26
-	Test point 67 (1.10,0.43,0.43):
-		Incl   26, Excl   26
-	Node 68 (1.50,0.33,0.33):
-		Incl   27, Excl   27
-	Test point 68 (1.60,0.43,0.43):
-		Incl   27, Excl   27
-	Node 69 (2.00,0.33,0.33):
-		Incl   28, Excl   28
-	Test point 69 (2.10,0.43,0.43):
-		Incl   28, Excl   28
-	Node 70 (2.50,0.33,0.33):
-		Incl   29, Excl   29
-	Test point 70 (2.60,0.43,0.43):
-		Incl   29, Excl   29
-	Node 71 (3.00,0.33,0.33):
-		Incl   29, Excl   62
-	Test point 71 (3.10,0.43,0.43):
-		Incl   62, Excl   62
-	Node 72 (3.50,0.33,0.33):
-		Incl   62, Excl   72
-	Test point 72 (3.60,0.43,0.43):
-		Incl   72, Excl   72
-	Node 73 (4.00,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 73 (4.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 74 (4.50,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 74 (4.60,0.43,0.43):
-		Incl   72, Excl   72
-	Node 75 (5.00,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 75 (5.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 76 (5.50,0.33,0.33):
-		Incl   63, Excl   63
-	Test point 76 (5.60,0.43,0.43):
-		Incl   63, Excl   63
-	Node 77 (6.00,0.33,0.33):
-		Incl   63, Excl   63
-	Test point 77 (6.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 78 (0.00,0.67,0.33):
-		Incl   30, Excl   30
-	Test point 78 (0.10,0.77,0.43):
-		Incl   30, Excl   30
-	Node 79 (0.50,0.67,0.33):
-		Incl   31, Excl   31
-	Test point 79 (0.60,0.77,0.43):
-		Incl   31, Excl   31
-	Node 80 (1.00,0.67,0.33):
-		Incl   32, Excl   32
-	Test point 80 (1.10,0.77,0.43):
-		Incl   32, Excl   32
-	Node 81 (1.50,0.67,0.33):
-		Incl   33, Excl   33
-	Test point 81 (1.60,0.77,0.43):
-		Incl   33, Excl   33
-	Node 82 (2.00,0.67,0.33):
-		Incl   34, Excl   34
-	Test point 82 (2.10,0.77,0.43):
-		Incl   34, Excl   34
-	Node 83 (2.50,0.67,0.33):
-		Incl   35, Excl   35
-	Test point 83 (2.60,0.77,0.43):
-		Incl   35, Excl   35
-	Node 84 (3.00,0.67,0.33):
-		Incl   35, Excl   64
-	Test point 84 (3.10,0.77,0.43):
-		Incl   64, Excl   64
-	Node 85 (3.50,0.67,0.33):
-		Incl   64, Excl   72
-	Test point 85 (3.60,0.77,0.43):
-		Incl   72, Excl   72
-	Node 86 (4.00,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 86 (4.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 87 (4.50,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 87 (4.60,0.77,0.43):
-		Incl   72, Excl   72
-	Node 88 (5.00,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 88 (5.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 89 (5.50,0.67,0.33):
-		Incl   65, Excl   65
-	Test point 89 (5.60,0.77,0.43):
-		Incl   65, Excl   65
-	Node 90 (6.00,0.67,0.33):
-		Incl   65, Excl   65
-	Test point 90 (6.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 91 (0.00,1.00,0.33):
-		Incl   30, Excl   30
-	Test point 91 (0.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 92 (0.50,1.00,0.33):
-		Incl   31, Excl   31
-	Test point 92 (0.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 93 (1.00,1.00,0.33):
-		Incl   32, Excl   32
-	Test point 93 (1.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 94 (1.50,1.00,0.33):
-		Incl   33, Excl   33
-	Test point 94 (1.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 95 (2.00,1.00,0.33):
-		Incl   34, Excl   34
-	Test point 95 (2.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 96 (2.50,1.00,0.33):
-		Incl   35, Excl   35
-	Test point 96 (2.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 97 (3.00,1.00,0.33):
-		Incl   35, Excl   64
-	Test point 97 (3.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 98 (3.50,1.00,0.33):
-		Incl   64, Excl   72
-	Test point 98 (3.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 99 (4.00,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 99 (4.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 100 (4.50,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 100 (4.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 101 (5.00,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 101 (5.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 102 (5.50,1.00,0.33):
-		Incl   65, Excl   65
-	Test point 102 (5.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 103 (6.00,1.00,0.33):
-		Incl   65, Excl   65
-	Test point 103 (6.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 104 (0.00,0.00,0.67):
-		Incl   36, Excl   36
-	Test point 104 (0.10,0.10,0.77):
-		Incl   36, Excl   36
-	Node 105 (0.50,0.00,0.67):
-		Incl   37, Excl   37
-	Test point 105 (0.60,0.10,0.77):
-		Incl   37, Excl   37
-	Node 106 (1.00,0.00,0.67):
-		Incl   38, Excl   38
-	Test point 106 (1.10,0.10,0.77):
-		Incl   38, Excl   38
-	Node 107 (1.50,0.00,0.67):
-		Incl   39, Excl   39
-	Test point 107 (1.60,0.10,0.77):
-		Incl   39, Excl   39
-	Node 108 (2.00,0.00,0.67):
-		Incl   40, Excl   40
-	Test point 108 (2.10,0.10,0.77):
-		Incl   40, Excl   40
-	Node 109 (2.50,0.00,0.67):
-		Incl   41, Excl   41
-	Test point 109 (2.60,0.10,0.77):
-		Incl   41, Excl   41
-	Node 110 (3.00,0.00,0.67):
-		Incl   41, Excl   66
-	Test point 110 (3.10,0.10,0.77):
-		Incl   66, Excl   66
-	Node 111 (3.50,0.00,0.67):
-		Incl   66, Excl   72
-	Test point 111 (3.60,0.10,0.77):
-		Incl   72, Excl   72
-	Node 112 (4.00,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 112 (4.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 113 (4.50,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 113 (4.60,0.10,0.77):
-		Incl   72, Excl   72
-	Node 114 (5.00,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 114 (5.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 115 (5.50,0.00,0.67):
-		Incl   67, Excl   67
-	Test point 115 (5.60,0.10,0.77):
-		Incl   67, Excl   67
-	Node 116 (6.00,0.00,0.67):
-		Incl   67, Excl   67
-	Test point 116 (6.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 117 (0.00,0.33,0.67):
-		Incl   42, Excl   42
-	Test point 117 (0.10,0.43,0.77):
-		Incl   42, Excl   42
-	Node 118 (0.50,0.33,0.67):
-		Incl   43, Excl   43
-	Test point 118 (0.60,0.43,0.77):
-		Incl   43, Excl   43
-	Node 119 (1.00,0.33,0.67):
-		Incl   44, Excl   44
-	Test point 119 (1.10,0.43,0.77):
-		Incl   44, Excl   44
-	Node 120 (1.50,0.33,0.67):
-		Incl   45, Excl   45
-	Test point 120 (1.60,0.43,0.77):
-		Incl   45, Excl   45
-	Node 121 (2.00,0.33,0.67):
-		Incl   46, Excl   46
-	Test point 121 (2.10,0.43,0.77):
-		Incl   46, Excl   46
-	Node 122 (2.50,0.33,0.67):
-		Incl   47, Excl   47
-	Test point 122 (2.60,0.43,0.77):
-		Incl   47, Excl   47
-	Node 123 (3.00,0.33,0.67):
-		Incl   47, Excl   68
-	Test point 123 (3.10,0.43,0.77):
-		Incl   68, Excl   68
-	Node 124 (3.50,0.33,0.67):
-		Incl   68, Excl   72
-	Test point 124 (3.60,0.43,0.77):
-		Incl   72, Excl   72
-	Node 125 (4.00,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 125 (4.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 126 (4.50,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 126 (4.60,0.43,0.77):
-		Incl   72, Excl   72
-	Node 127 (5.00,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 127 (5.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 128 (5.50,0.33,0.67):
-		Incl   69, Excl   69
-	Test point 128 (5.60,0.43,0.77):
-		Incl   69, Excl   69
-	Node 129 (6.00,0.33,0.67):
-		Incl   69, Excl   69
-	Test point 129 (6.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 130 (0.00,0.67,0.67):
-		Incl   48, Excl   48
-	Test point 130 (0.10,0.77,0.77):
-		Incl   48, Excl   48
-	Node 131 (0.50,0.67,0.67):
-		Incl   49, Excl   49
-	Test point 131 (0.60,0.77,0.77):
-		Incl   49, Excl   49
-	Node 132 (1.00,0.67,0.67):
-		Incl   50, Excl   50
-	Test point 132 (1.10,0.77,0.77):
-		Incl   50, Excl   50
-	Node 133 (1.50,0.67,0.67):
-		Incl   51, Excl   51
-	Test point 133 (1.60,0.77,0.77):
-		Incl   51, Excl   51
-	Node 134 (2.00,0.67,0.67):
-		Incl   52, Excl   52
-	Test point 134 (2.10,0.77,0.77):
-		Incl   52, Excl   52
-	Node 135 (2.50,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 135 (2.60,0.77,0.77):
-		Incl   53, Excl   53
-	Node 136 (3.00,0.67,0.67):
-		Incl   53, Excl   70
-	Test point 136 (3.10,0.77,0.77):
-		Incl   70, Excl   70
-	Node 137 (3.50,0.67,0.67):
-		Incl   70, Excl   72
-	Test point 137 (3.60,0.77,0.77):
-		Incl   72, Excl   72
-	Node 138 (4.00,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 138 (4.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 139 (4.50,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 139 (4.60,0.77,0.77):
-		Incl   72, Excl   72
-	Node 140 (5.00,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 140 (5.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 141 (5.50,0.67,0.67):
-		Incl   71, Excl   71
-	Test point 141 (5.60,0.77,0.77):
-		Incl   71, Excl   71
-	Node 142 (6.00,0.67,0.67):
-		Incl   71, Excl   71
-	Test point 142 (6.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 143 (0.00,1.00,0.67):
-		Incl   48, Excl   48
-	Test point 143 (0.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 144 (0.50,1.00,0.67):
-		Incl   49, Excl   49
-	Test point 144 (0.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 145 (1.00,1.00,0.67):
-		Incl   50, Excl   50
-	Test point 145 (1.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 146 (1.50,1.00,0.67):
-		Incl   51, Excl   51
-	Test point 146 (1.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 147 (2.00,1.00,0.67):
-		Incl   52, Excl   52
-	Test point 147 (2.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 148 (2.50,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 148 (2.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 149 (3.00,1.00,0.67):
-		Incl   53, Excl   70
-	Test point 149 (3.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 150 (3.50,1.00,0.67):
-		Incl   70, Excl   72
-	Test point 150 (3.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 151 (4.00,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 151 (4.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 152 (4.50,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 152 (4.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 153 (5.00,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 153 (5.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 154 (5.50,1.00,0.67):
-		Incl   71, Excl   71
-	Test point 154 (5.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 155 (6.00,1.00,0.67):
-		Incl   71, Excl   71
-	Test point 155 (6.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 156 (0.00,0.00,1.00):
-		Incl   36, Excl   36
-	Test point 156 (0.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 157 (0.50,0.00,1.00):
-		Incl   37, Excl   37
-	Test point 157 (0.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 158 (1.00,0.00,1.00):
-		Incl   38, Excl   38
-	Test point 158 (1.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 159 (1.50,0.00,1.00):
-		Incl   39, Excl   39
-	Test point 159 (1.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 160 (2.00,0.00,1.00):
-		Incl   40, Excl   40
-	Test point 160 (2.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 161 (2.50,0.00,1.00):
-		Incl   41, Excl   41
-	Test point 161 (2.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 162 (3.00,0.00,1.00):
-		Incl   41, Excl   66
-	Test point 162 (3.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 163 (3.50,0.00,1.00):
-		Incl   66, Excl   72
-	Test point 163 (3.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 164 (4.00,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 164 (4.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 165 (4.50,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 165 (4.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 166 (5.00,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 166 (5.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 167 (5.50,0.00,1.00):
-		Incl   67, Excl   67
-	Test point 167 (5.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 168 (6.00,0.00,1.00):
-		Incl   67, Excl   67
-	Test point 168 (6.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 169 (0.00,0.33,1.00):
-		Incl   42, Excl   42
-	Test point 169 (0.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 170 (0.50,0.33,1.00):
-		Incl   43, Excl   43
-	Test point 170 (0.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 171 (1.00,0.33,1.00):
-		Incl   44, Excl   44
-	Test point 171 (1.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 172 (1.50,0.33,1.00):
-		Incl   45, Excl   45
-	Test point 172 (1.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 173 (2.00,0.33,1.00):
-		Incl   46, Excl   46
-	Test point 173 (2.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 174 (2.50,0.33,1.00):
-		Incl   47, Excl   47
-	Test point 174 (2.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 175 (3.00,0.33,1.00):
-		Incl   47, Excl   68
-	Test point 175 (3.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 176 (3.50,0.33,1.00):
-		Incl   68, Excl   72
-	Test point 176 (3.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 177 (4.00,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 177 (4.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 178 (4.50,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 178 (4.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 179 (5.00,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 179 (5.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 180 (5.50,0.33,1.00):
-		Incl   69, Excl   69
-	Test point 180 (5.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 181 (6.00,0.33,1.00):
-		Incl   69, Excl   69
-	Test point 181 (6.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 182 (0.00,0.67,1.00):
-		Incl   48, Excl   48
-	Test point 182 (0.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 183 (0.50,0.67,1.00):
-		Incl   49, Excl   49
-	Test point 183 (0.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 184 (1.00,0.67,1.00):
-		Incl   50, Excl   50
-	Test point 184 (1.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 185 (1.50,0.67,1.00):
-		Incl   51, Excl   51
-	Test point 185 (1.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 186 (2.00,0.67,1.00):
-		Incl   52, Excl   52
-	Test point 186 (2.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 187 (2.50,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 187 (2.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 188 (3.00,0.67,1.00):
-		Incl   53, Excl   70
-	Test point 188 (3.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 189 (3.50,0.67,1.00):
-		Incl   70, Excl   72
-	Test point 189 (3.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 190 (4.00,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 190 (4.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 191 (4.50,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 191 (4.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 192 (5.00,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 192 (5.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 193 (5.50,0.67,1.00):
-		Incl   71, Excl   71
-	Test point 193 (5.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 194 (6.00,0.67,1.00):
-		Incl   71, Excl   71
-	Test point 194 (6.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 195 (0.00,1.00,1.00):
-		Incl   48, Excl   48
-	Test point 195 (0.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 196 (0.50,1.00,1.00):
-		Incl   49, Excl   49
-	Test point 196 (0.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 197 (1.00,1.00,1.00):
-		Incl   50, Excl   50
-	Test point 197 (1.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 198 (1.50,1.00,1.00):
-		Incl   51, Excl   51
-	Test point 198 (1.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 199 (2.00,1.00,1.00):
-		Incl   52, Excl   52
-	Test point 199 (2.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 200 (2.50,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 200 (2.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 201 (3.00,1.00,1.00):
-		Incl   53, Excl   70
-	Test point 201 (3.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 202 (3.50,1.00,1.00):
-		Incl   70, Excl   72
-	Test point 202 (3.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 203 (4.00,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 203 (4.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 204 (4.50,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 204 (4.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 205 (5.00,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 205 (5.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 206 (5.50,1.00,1.00):
-		Incl   71, Excl   71
-	Test point 206 (5.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 207 (6.00,1.00,1.00):
-		Incl   71, Excl   71
-	Test point 207 (6.10,1.10,1.10):
-		Incl   72, Excl   72
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,835 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 0 (0.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 1 (0.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 2 (1.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 3 (1.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00,0.00):
-		Incl    3, Excl   36
-	Test point 4 (2.10,0.10,0.10):
-		Incl   36, Excl   36
-	Node 5 (2.50,0.00,0.00):
-		Incl   36, Excl   54
-	Test point 5 (2.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 6 (3.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 6 (3.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 7 (3.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 7 (3.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 8 (4.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 8 (4.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 9 (4.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 9 (4.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 10 (5.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 10 (5.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 11 (5.50,0.00,0.00):
-		Incl   37, Excl   37
-	Test point 11 (5.60,0.10,0.10):
-		Incl   37, Excl   37
-	Node 12 (6.00,0.00,0.00):
-		Incl   37, Excl   37
-	Test point 12 (6.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 13 (0.00,0.33,0.00):
-		Incl    4, Excl    4
-	Test point 13 (0.10,0.43,0.10):
-		Incl    4, Excl    4
-	Node 14 (0.50,0.33,0.00):
-		Incl    5, Excl    5
-	Test point 14 (0.60,0.43,0.10):
-		Incl    5, Excl    5
-	Node 15 (1.00,0.33,0.00):
-		Incl    6, Excl    6
-	Test point 15 (1.10,0.43,0.10):
-		Incl    6, Excl    6
-	Node 16 (1.50,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 16 (1.60,0.43,0.10):
-		Incl    7, Excl    7
-	Node 17 (2.00,0.33,0.00):
-		Incl    7, Excl   38
-	Test point 17 (2.10,0.43,0.10):
-		Incl   38, Excl   38
-	Node 18 (2.50,0.33,0.00):
-		Incl   38, Excl   54
-	Test point 18 (2.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 19 (3.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 19 (3.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 20 (3.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 20 (3.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 21 (4.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 21 (4.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 22 (4.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 22 (4.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 23 (5.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 23 (5.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 24 (5.50,0.33,0.00):
-		Incl   39, Excl   39
-	Test point 24 (5.60,0.43,0.10):
-		Incl   39, Excl   39
-	Node 25 (6.00,0.33,0.00):
-		Incl   39, Excl   39
-	Test point 25 (6.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 26 (0.00,0.67,0.00):
-		Incl    8, Excl    8
-	Test point 26 (0.10,0.77,0.10):
-		Incl    8, Excl    8
-	Node 27 (0.50,0.67,0.00):
-		Incl    9, Excl    9
-	Test point 27 (0.60,0.77,0.10):
-		Incl    9, Excl    9
-	Node 28 (1.00,0.67,0.00):
-		Incl   10, Excl   10
-	Test point 28 (1.10,0.77,0.10):
-		Incl   10, Excl   10
-	Node 29 (1.50,0.67,0.00):
-		Incl   11, Excl   11
-	Test point 29 (1.60,0.77,0.10):
-		Incl   11, Excl   11
-	Node 30 (2.00,0.67,0.00):
-		Incl   11, Excl   40
-	Test point 30 (2.10,0.77,0.10):
-		Incl   40, Excl   40
-	Node 31 (2.50,0.67,0.00):
-		Incl   40, Excl   54
-	Test point 31 (2.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 32 (3.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 32 (3.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 33 (3.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 33 (3.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 34 (4.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 34 (4.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 35 (4.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 35 (4.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 36 (5.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 36 (5.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 37 (5.50,0.67,0.00):
-		Incl   41, Excl   41
-	Test point 37 (5.60,0.77,0.10):
-		Incl   41, Excl   41
-	Node 38 (6.00,0.67,0.00):
-		Incl   41, Excl   41
-	Test point 38 (6.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 39 (0.00,1.00,0.00):
-		Incl    8, Excl    8
-	Test point 39 (0.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 40 (0.50,1.00,0.00):
-		Incl    9, Excl    9
-	Test point 40 (0.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 41 (1.00,1.00,0.00):
-		Incl   10, Excl   10
-	Test point 41 (1.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 42 (1.50,1.00,0.00):
-		Incl   11, Excl   11
-	Test point 42 (1.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 43 (2.00,1.00,0.00):
-		Incl   11, Excl   40
-	Test point 43 (2.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 44 (2.50,1.00,0.00):
-		Incl   40, Excl   54
-	Test point 44 (2.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 45 (3.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 45 (3.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 46 (3.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 46 (3.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 47 (4.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 47 (4.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 48 (4.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 48 (4.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 49 (5.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 49 (5.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 50 (5.50,1.00,0.00):
-		Incl   41, Excl   41
-	Test point 50 (5.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 51 (6.00,1.00,0.00):
-		Incl   41, Excl   41
-	Test point 51 (6.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 52 (0.00,0.00,0.33):
-		Incl   12, Excl   12
-	Test point 52 (0.10,0.10,0.43):
-		Incl   12, Excl   12
-	Node 53 (0.50,0.00,0.33):
-		Incl   13, Excl   13
-	Test point 53 (0.60,0.10,0.43):
-		Incl   13, Excl   13
-	Node 54 (1.00,0.00,0.33):
-		Incl   14, Excl   14
-	Test point 54 (1.10,0.10,0.43):
-		Incl   14, Excl   14
-	Node 55 (1.50,0.00,0.33):
-		Incl   15, Excl   15
-	Test point 55 (1.60,0.10,0.43):
-		Incl   15, Excl   15
-	Node 56 (2.00,0.00,0.33):
-		Incl   15, Excl   42
-	Test point 56 (2.10,0.10,0.43):
-		Incl   42, Excl   42
-	Node 57 (2.50,0.00,0.33):
-		Incl   42, Excl   54
-	Test point 57 (2.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 58 (3.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 58 (3.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 59 (3.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 59 (3.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 60 (4.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 60 (4.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 61 (4.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 61 (4.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 62 (5.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 62 (5.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 63 (5.50,0.00,0.33):
-		Incl   43, Excl   43
-	Test point 63 (5.60,0.10,0.43):
-		Incl   43, Excl   43
-	Node 64 (6.00,0.00,0.33):
-		Incl   43, Excl   43
-	Test point 64 (6.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 65 (0.00,0.33,0.33):
-		Incl   16, Excl   16
-	Test point 65 (0.10,0.43,0.43):
-		Incl   16, Excl   16
-	Node 66 (0.50,0.33,0.33):
-		Incl   17, Excl   17
-	Test point 66 (0.60,0.43,0.43):
-		Incl   17, Excl   17
-	Node 67 (1.00,0.33,0.33):
-		Incl   18, Excl   18
-	Test point 67 (1.10,0.43,0.43):
-		Incl   18, Excl   18
-	Node 68 (1.50,0.33,0.33):
-		Incl   19, Excl   19
-	Test point 68 (1.60,0.43,0.43):
-		Incl   19, Excl   19
-	Node 69 (2.00,0.33,0.33):
-		Incl   19, Excl   44
-	Test point 69 (2.10,0.43,0.43):
-		Incl   44, Excl   44
-	Node 70 (2.50,0.33,0.33):
-		Incl   44, Excl   54
-	Test point 70 (2.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 71 (3.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 71 (3.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 72 (3.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 72 (3.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 73 (4.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 73 (4.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 74 (4.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 74 (4.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 75 (5.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 75 (5.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 76 (5.50,0.33,0.33):
-		Incl   45, Excl   45
-	Test point 76 (5.60,0.43,0.43):
-		Incl   45, Excl   45
-	Node 77 (6.00,0.33,0.33):
-		Incl   45, Excl   45
-	Test point 77 (6.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 78 (0.00,0.67,0.33):
-		Incl   20, Excl   20
-	Test point 78 (0.10,0.77,0.43):
-		Incl   20, Excl   20
-	Node 79 (0.50,0.67,0.33):
-		Incl   21, Excl   21
-	Test point 79 (0.60,0.77,0.43):
-		Incl   21, Excl   21
-	Node 80 (1.00,0.67,0.33):
-		Incl   22, Excl   22
-	Test point 80 (1.10,0.77,0.43):
-		Incl   22, Excl   22
-	Node 81 (1.50,0.67,0.33):
-		Incl   23, Excl   23
-	Test point 81 (1.60,0.77,0.43):
-		Incl   23, Excl   23
-	Node 82 (2.00,0.67,0.33):
-		Incl   23, Excl   46
-	Test point 82 (2.10,0.77,0.43):
-		Incl   46, Excl   46
-	Node 83 (2.50,0.67,0.33):
-		Incl   46, Excl   54
-	Test point 83 (2.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 84 (3.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 84 (3.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 85 (3.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 85 (3.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 86 (4.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 86 (4.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 87 (4.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 87 (4.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 88 (5.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 88 (5.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 89 (5.50,0.67,0.33):
-		Incl   47, Excl   47
-	Test point 89 (5.60,0.77,0.43):
-		Incl   47, Excl   47
-	Node 90 (6.00,0.67,0.33):
-		Incl   47, Excl   47
-	Test point 90 (6.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 91 (0.00,1.00,0.33):
-		Incl   20, Excl   20
-	Test point 91 (0.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 92 (0.50,1.00,0.33):
-		Incl   21, Excl   21
-	Test point 92 (0.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 93 (1.00,1.00,0.33):
-		Incl   22, Excl   22
-	Test point 93 (1.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 94 (1.50,1.00,0.33):
-		Incl   23, Excl   23
-	Test point 94 (1.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 95 (2.00,1.00,0.33):
-		Incl   23, Excl   46
-	Test point 95 (2.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 96 (2.50,1.00,0.33):
-		Incl   46, Excl   54
-	Test point 96 (2.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 97 (3.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 97 (3.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 98 (3.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 98 (3.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 99 (4.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 99 (4.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 100 (4.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 100 (4.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 101 (5.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 101 (5.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 102 (5.50,1.00,0.33):
-		Incl   47, Excl   47
-	Test point 102 (5.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 103 (6.00,1.00,0.33):
-		Incl   47, Excl   47
-	Test point 103 (6.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 104 (0.00,0.00,0.67):
-		Incl   24, Excl   24
-	Test point 104 (0.10,0.10,0.77):
-		Incl   24, Excl   24
-	Node 105 (0.50,0.00,0.67):
-		Incl   25, Excl   25
-	Test point 105 (0.60,0.10,0.77):
-		Incl   25, Excl   25
-	Node 106 (1.00,0.00,0.67):
-		Incl   26, Excl   26
-	Test point 106 (1.10,0.10,0.77):
-		Incl   26, Excl   26
-	Node 107 (1.50,0.00,0.67):
-		Incl   27, Excl   27
-	Test point 107 (1.60,0.10,0.77):
-		Incl   27, Excl   27
-	Node 108 (2.00,0.00,0.67):
-		Incl   27, Excl   48
-	Test point 108 (2.10,0.10,0.77):
-		Incl   48, Excl   48
-	Node 109 (2.50,0.00,0.67):
-		Incl   48, Excl   54
-	Test point 109 (2.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 110 (3.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 110 (3.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 111 (3.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 111 (3.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 112 (4.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 112 (4.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 113 (4.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 113 (4.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 114 (5.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 114 (5.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 115 (5.50,0.00,0.67):
-		Incl   49, Excl   49
-	Test point 115 (5.60,0.10,0.77):
-		Incl   49, Excl   49
-	Node 116 (6.00,0.00,0.67):
-		Incl   49, Excl   49
-	Test point 116 (6.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 117 (0.00,0.33,0.67):
-		Incl   28, Excl   28
-	Test point 117 (0.10,0.43,0.77):
-		Incl   28, Excl   28
-	Node 118 (0.50,0.33,0.67):
-		Incl   29, Excl   29
-	Test point 118 (0.60,0.43,0.77):
-		Incl   29, Excl   29
-	Node 119 (1.00,0.33,0.67):
-		Incl   30, Excl   30
-	Test point 119 (1.10,0.43,0.77):
-		Incl   30, Excl   30
-	Node 120 (1.50,0.33,0.67):
-		Incl   31, Excl   31
-	Test point 120 (1.60,0.43,0.77):
-		Incl   31, Excl   31
-	Node 121 (2.00,0.33,0.67):
-		Incl   31, Excl   50
-	Test point 121 (2.10,0.43,0.77):
-		Incl   50, Excl   50
-	Node 122 (2.50,0.33,0.67):
-		Incl   50, Excl   54
-	Test point 122 (2.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 123 (3.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 123 (3.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 124 (3.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 124 (3.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 125 (4.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 125 (4.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 126 (4.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 126 (4.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 127 (5.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 127 (5.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 128 (5.50,0.33,0.67):
-		Incl   51, Excl   51
-	Test point 128 (5.60,0.43,0.77):
-		Incl   51, Excl   51
-	Node 129 (6.00,0.33,0.67):
-		Incl   51, Excl   51
-	Test point 129 (6.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 130 (0.00,0.67,0.67):
-		Incl   32, Excl   32
-	Test point 130 (0.10,0.77,0.77):
-		Incl   32, Excl   32
-	Node 131 (0.50,0.67,0.67):
-		Incl   33, Excl   33
-	Test point 131 (0.60,0.77,0.77):
-		Incl   33, Excl   33
-	Node 132 (1.00,0.67,0.67):
-		Incl   34, Excl   34
-	Test point 132 (1.10,0.77,0.77):
-		Incl   34, Excl   34
-	Node 133 (1.50,0.67,0.67):
-		Incl   35, Excl   35
-	Test point 133 (1.60,0.77,0.77):
-		Incl   35, Excl   35
-	Node 134 (2.00,0.67,0.67):
-		Incl   35, Excl   52
-	Test point 134 (2.10,0.77,0.77):
-		Incl   52, Excl   52
-	Node 135 (2.50,0.67,0.67):
-		Incl   52, Excl   54
-	Test point 135 (2.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 136 (3.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 136 (3.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 137 (3.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 137 (3.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 138 (4.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 138 (4.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 139 (4.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 139 (4.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 140 (5.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 140 (5.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 141 (5.50,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 141 (5.60,0.77,0.77):
-		Incl   53, Excl   53
-	Node 142 (6.00,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 142 (6.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 143 (0.00,1.00,0.67):
-		Incl   32, Excl   32
-	Test point 143 (0.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 144 (0.50,1.00,0.67):
-		Incl   33, Excl   33
-	Test point 144 (0.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 145 (1.00,1.00,0.67):
-		Incl   34, Excl   34
-	Test point 145 (1.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 146 (1.50,1.00,0.67):
-		Incl   35, Excl   35
-	Test point 146 (1.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 147 (2.00,1.00,0.67):
-		Incl   35, Excl   52
-	Test point 147 (2.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 148 (2.50,1.00,0.67):
-		Incl   52, Excl   54
-	Test point 148 (2.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 149 (3.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 149 (3.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 150 (3.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 150 (3.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 151 (4.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 151 (4.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 152 (4.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 152 (4.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 153 (5.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 153 (5.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 154 (5.50,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 154 (5.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 155 (6.00,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 155 (6.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 156 (0.00,0.00,1.00):
-		Incl   24, Excl   24
-	Test point 156 (0.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 157 (0.50,0.00,1.00):
-		Incl   25, Excl   25
-	Test point 157 (0.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 158 (1.00,0.00,1.00):
-		Incl   26, Excl   26
-	Test point 158 (1.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 159 (1.50,0.00,1.00):
-		Incl   27, Excl   27
-	Test point 159 (1.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 160 (2.00,0.00,1.00):
-		Incl   27, Excl   48
-	Test point 160 (2.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 161 (2.50,0.00,1.00):
-		Incl   48, Excl   54
-	Test point 161 (2.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 162 (3.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 162 (3.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 163 (3.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 163 (3.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 164 (4.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 164 (4.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 165 (4.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 165 (4.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 166 (5.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 166 (5.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 167 (5.50,0.00,1.00):
-		Incl   49, Excl   49
-	Test point 167 (5.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 168 (6.00,0.00,1.00):
-		Incl   49, Excl   49
-	Test point 168 (6.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 169 (0.00,0.33,1.00):
-		Incl   28, Excl   28
-	Test point 169 (0.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 170 (0.50,0.33,1.00):
-		Incl   29, Excl   29
-	Test point 170 (0.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 171 (1.00,0.33,1.00):
-		Incl   30, Excl   30
-	Test point 171 (1.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 172 (1.50,0.33,1.00):
-		Incl   31, Excl   31
-	Test point 172 (1.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 173 (2.00,0.33,1.00):
-		Incl   31, Excl   50
-	Test point 173 (2.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 174 (2.50,0.33,1.00):
-		Incl   50, Excl   54
-	Test point 174 (2.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 175 (3.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 175 (3.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 176 (3.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 176 (3.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 177 (4.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 177 (4.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 178 (4.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 178 (4.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 179 (5.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 179 (5.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 180 (5.50,0.33,1.00):
-		Incl   51, Excl   51
-	Test point 180 (5.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 181 (6.00,0.33,1.00):
-		Incl   51, Excl   51
-	Test point 181 (6.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 182 (0.00,0.67,1.00):
-		Incl   32, Excl   32
-	Test point 182 (0.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 183 (0.50,0.67,1.00):
-		Incl   33, Excl   33
-	Test point 183 (0.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 184 (1.00,0.67,1.00):
-		Incl   34, Excl   34
-	Test point 184 (1.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 185 (1.50,0.67,1.00):
-		Incl   35, Excl   35
-	Test point 185 (1.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 186 (2.00,0.67,1.00):
-		Incl   35, Excl   52
-	Test point 186 (2.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 187 (2.50,0.67,1.00):
-		Incl   52, Excl   54
-	Test point 187 (2.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 188 (3.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 188 (3.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 189 (3.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 189 (3.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 190 (4.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 190 (4.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 191 (4.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 191 (4.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 192 (5.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 192 (5.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 193 (5.50,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 193 (5.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 194 (6.00,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 194 (6.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 195 (0.00,1.00,1.00):
-		Incl   32, Excl   32
-	Test point 195 (0.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 196 (0.50,1.00,1.00):
-		Incl   33, Excl   33
-	Test point 196 (0.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 197 (1.00,1.00,1.00):
-		Incl   34, Excl   34
-	Test point 197 (1.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 198 (1.50,1.00,1.00):
-		Incl   35, Excl   35
-	Test point 198 (1.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 199 (2.00,1.00,1.00):
-		Incl   35, Excl   52
-	Test point 199 (2.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 200 (2.50,1.00,1.00):
-		Incl   52, Excl   54
-	Test point 200 (2.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 201 (3.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 201 (3.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 202 (3.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 202 (3.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 203 (4.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 203 (4.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 204 (4.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 204 (4.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 205 (5.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 205 (5.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 206 (5.50,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 206 (5.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 207 (6.00,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 207 (6.10,1.10,1.10):
-		Incl   54, Excl   54
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,835 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 0 (0.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 1 (0.50,0.00,0.00):
-		Incl   54, Excl   72
-	Test point 1 (0.60,0.10,0.10):
-		Incl   72, Excl   72
-	Node 2 (1.00,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 2 (1.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 3 (1.50,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 3 (1.60,0.10,0.10):
-		Incl   72, Excl   72
-	Node 4 (2.00,0.00,0.00):
-		Incl   72, Excl   72
-	Test point 4 (2.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 5 (2.50,0.00,0.00):
-		Incl   55, Excl   55
-	Test point 5 (2.60,0.10,0.10):
-		Incl   55, Excl   55
-	Node 6 (3.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 6 (3.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 7 (3.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 7 (3.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 8 (4.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 8 (4.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 9 (4.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 9 (4.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 10 (5.00,0.00,0.00):
-		Incl    4, Excl    4
-	Test point 10 (5.10,0.10,0.10):
-		Incl    4, Excl    4
-	Node 11 (5.50,0.00,0.00):
-		Incl    5, Excl    5
-	Test point 11 (5.60,0.10,0.10):
-		Incl    5, Excl    5
-	Node 12 (6.00,0.00,0.00):
-		Incl    5, Excl    5
-	Test point 12 (6.10,0.10,0.10):
-		Incl   72, Excl   72
-	Node 13 (0.00,0.33,0.00):
-		Incl   56, Excl   56
-	Test point 13 (0.10,0.43,0.10):
-		Incl   56, Excl   56
-	Node 14 (0.50,0.33,0.00):
-		Incl   56, Excl   72
-	Test point 14 (0.60,0.43,0.10):
-		Incl   72, Excl   72
-	Node 15 (1.00,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 15 (1.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 16 (1.50,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 16 (1.60,0.43,0.10):
-		Incl   72, Excl   72
-	Node 17 (2.00,0.33,0.00):
-		Incl   72, Excl   72
-	Test point 17 (2.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 18 (2.50,0.33,0.00):
-		Incl   57, Excl   57
-	Test point 18 (2.60,0.43,0.10):
-		Incl   57, Excl   57
-	Node 19 (3.00,0.33,0.00):
-		Incl    6, Excl    6
-	Test point 19 (3.10,0.43,0.10):
-		Incl    6, Excl    6
-	Node 20 (3.50,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 20 (3.60,0.43,0.10):
-		Incl    7, Excl    7
-	Node 21 (4.00,0.33,0.00):
-		Incl    8, Excl    8
-	Test point 21 (4.10,0.43,0.10):
-		Incl    8, Excl    8
-	Node 22 (4.50,0.33,0.00):
-		Incl    9, Excl    9
-	Test point 22 (4.60,0.43,0.10):
-		Incl    9, Excl    9
-	Node 23 (5.00,0.33,0.00):
-		Incl   10, Excl   10
-	Test point 23 (5.10,0.43,0.10):
-		Incl   10, Excl   10
-	Node 24 (5.50,0.33,0.00):
-		Incl   11, Excl   11
-	Test point 24 (5.60,0.43,0.10):
-		Incl   11, Excl   11
-	Node 25 (6.00,0.33,0.00):
-		Incl   11, Excl   11
-	Test point 25 (6.10,0.43,0.10):
-		Incl   72, Excl   72
-	Node 26 (0.00,0.67,0.00):
-		Incl   58, Excl   58
-	Test point 26 (0.10,0.77,0.10):
-		Incl   58, Excl   58
-	Node 27 (0.50,0.67,0.00):
-		Incl   58, Excl   72
-	Test point 27 (0.60,0.77,0.10):
-		Incl   72, Excl   72
-	Node 28 (1.00,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 28 (1.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 29 (1.50,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 29 (1.60,0.77,0.10):
-		Incl   72, Excl   72
-	Node 30 (2.00,0.67,0.00):
-		Incl   72, Excl   72
-	Test point 30 (2.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 31 (2.50,0.67,0.00):
-		Incl   59, Excl   59
-	Test point 31 (2.60,0.77,0.10):
-		Incl   59, Excl   59
-	Node 32 (3.00,0.67,0.00):
-		Incl   12, Excl   12
-	Test point 32 (3.10,0.77,0.10):
-		Incl   12, Excl   12
-	Node 33 (3.50,0.67,0.00):
-		Incl   13, Excl   13
-	Test point 33 (3.60,0.77,0.10):
-		Incl   13, Excl   13
-	Node 34 (4.00,0.67,0.00):
-		Incl   14, Excl   14
-	Test point 34 (4.10,0.77,0.10):
-		Incl   14, Excl   14
-	Node 35 (4.50,0.67,0.00):
-		Incl   15, Excl   15
-	Test point 35 (4.60,0.77,0.10):
-		Incl   15, Excl   15
-	Node 36 (5.00,0.67,0.00):
-		Incl   16, Excl   16
-	Test point 36 (5.10,0.77,0.10):
-		Incl   16, Excl   16
-	Node 37 (5.50,0.67,0.00):
-		Incl   17, Excl   17
-	Test point 37 (5.60,0.77,0.10):
-		Incl   17, Excl   17
-	Node 38 (6.00,0.67,0.00):
-		Incl   17, Excl   17
-	Test point 38 (6.10,0.77,0.10):
-		Incl   72, Excl   72
-	Node 39 (0.00,1.00,0.00):
-		Incl   58, Excl   58
-	Test point 39 (0.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 40 (0.50,1.00,0.00):
-		Incl   58, Excl   72
-	Test point 40 (0.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 41 (1.00,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 41 (1.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 42 (1.50,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 42 (1.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 43 (2.00,1.00,0.00):
-		Incl   72, Excl   72
-	Test point 43 (2.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 44 (2.50,1.00,0.00):
-		Incl   59, Excl   59
-	Test point 44 (2.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 45 (3.00,1.00,0.00):
-		Incl   12, Excl   12
-	Test point 45 (3.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 46 (3.50,1.00,0.00):
-		Incl   13, Excl   13
-	Test point 46 (3.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 47 (4.00,1.00,0.00):
-		Incl   14, Excl   14
-	Test point 47 (4.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 48 (4.50,1.00,0.00):
-		Incl   15, Excl   15
-	Test point 48 (4.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 49 (5.00,1.00,0.00):
-		Incl   16, Excl   16
-	Test point 49 (5.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 50 (5.50,1.00,0.00):
-		Incl   17, Excl   17
-	Test point 50 (5.60,1.10,0.10):
-		Incl   72, Excl   72
-	Node 51 (6.00,1.00,0.00):
-		Incl   17, Excl   17
-	Test point 51 (6.10,1.10,0.10):
-		Incl   72, Excl   72
-	Node 52 (0.00,0.00,0.33):
-		Incl   60, Excl   60
-	Test point 52 (0.10,0.10,0.43):
-		Incl   60, Excl   60
-	Node 53 (0.50,0.00,0.33):
-		Incl   60, Excl   72
-	Test point 53 (0.60,0.10,0.43):
-		Incl   72, Excl   72
-	Node 54 (1.00,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 54 (1.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 55 (1.50,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 55 (1.60,0.10,0.43):
-		Incl   72, Excl   72
-	Node 56 (2.00,0.00,0.33):
-		Incl   72, Excl   72
-	Test point 56 (2.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 57 (2.50,0.00,0.33):
-		Incl   61, Excl   61
-	Test point 57 (2.60,0.10,0.43):
-		Incl   61, Excl   61
-	Node 58 (3.00,0.00,0.33):
-		Incl   18, Excl   18
-	Test point 58 (3.10,0.10,0.43):
-		Incl   18, Excl   18
-	Node 59 (3.50,0.00,0.33):
-		Incl   19, Excl   19
-	Test point 59 (3.60,0.10,0.43):
-		Incl   19, Excl   19
-	Node 60 (4.00,0.00,0.33):
-		Incl   20, Excl   20
-	Test point 60 (4.10,0.10,0.43):
-		Incl   20, Excl   20
-	Node 61 (4.50,0.00,0.33):
-		Incl   21, Excl   21
-	Test point 61 (4.60,0.10,0.43):
-		Incl   21, Excl   21
-	Node 62 (5.00,0.00,0.33):
-		Incl   22, Excl   22
-	Test point 62 (5.10,0.10,0.43):
-		Incl   22, Excl   22
-	Node 63 (5.50,0.00,0.33):
-		Incl   23, Excl   23
-	Test point 63 (5.60,0.10,0.43):
-		Incl   23, Excl   23
-	Node 64 (6.00,0.00,0.33):
-		Incl   23, Excl   23
-	Test point 64 (6.10,0.10,0.43):
-		Incl   72, Excl   72
-	Node 65 (0.00,0.33,0.33):
-		Incl   62, Excl   62
-	Test point 65 (0.10,0.43,0.43):
-		Incl   62, Excl   62
-	Node 66 (0.50,0.33,0.33):
-		Incl   62, Excl   72
-	Test point 66 (0.60,0.43,0.43):
-		Incl   72, Excl   72
-	Node 67 (1.00,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 67 (1.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 68 (1.50,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 68 (1.60,0.43,0.43):
-		Incl   72, Excl   72
-	Node 69 (2.00,0.33,0.33):
-		Incl   72, Excl   72
-	Test point 69 (2.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 70 (2.50,0.33,0.33):
-		Incl   63, Excl   63
-	Test point 70 (2.60,0.43,0.43):
-		Incl   63, Excl   63
-	Node 71 (3.00,0.33,0.33):
-		Incl   24, Excl   24
-	Test point 71 (3.10,0.43,0.43):
-		Incl   24, Excl   24
-	Node 72 (3.50,0.33,0.33):
-		Incl   25, Excl   25
-	Test point 72 (3.60,0.43,0.43):
-		Incl   25, Excl   25
-	Node 73 (4.00,0.33,0.33):
-		Incl   26, Excl   26
-	Test point 73 (4.10,0.43,0.43):
-		Incl   26, Excl   26
-	Node 74 (4.50,0.33,0.33):
-		Incl   27, Excl   27
-	Test point 74 (4.60,0.43,0.43):
-		Incl   27, Excl   27
-	Node 75 (5.00,0.33,0.33):
-		Incl   28, Excl   28
-	Test point 75 (5.10,0.43,0.43):
-		Incl   28, Excl   28
-	Node 76 (5.50,0.33,0.33):
-		Incl   29, Excl   29
-	Test point 76 (5.60,0.43,0.43):
-		Incl   29, Excl   29
-	Node 77 (6.00,0.33,0.33):
-		Incl   29, Excl   29
-	Test point 77 (6.10,0.43,0.43):
-		Incl   72, Excl   72
-	Node 78 (0.00,0.67,0.33):
-		Incl   64, Excl   64
-	Test point 78 (0.10,0.77,0.43):
-		Incl   64, Excl   64
-	Node 79 (0.50,0.67,0.33):
-		Incl   64, Excl   72
-	Test point 79 (0.60,0.77,0.43):
-		Incl   72, Excl   72
-	Node 80 (1.00,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 80 (1.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 81 (1.50,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 81 (1.60,0.77,0.43):
-		Incl   72, Excl   72
-	Node 82 (2.00,0.67,0.33):
-		Incl   72, Excl   72
-	Test point 82 (2.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 83 (2.50,0.67,0.33):
-		Incl   65, Excl   65
-	Test point 83 (2.60,0.77,0.43):
-		Incl   65, Excl   65
-	Node 84 (3.00,0.67,0.33):
-		Incl   30, Excl   30
-	Test point 84 (3.10,0.77,0.43):
-		Incl   30, Excl   30
-	Node 85 (3.50,0.67,0.33):
-		Incl   31, Excl   31
-	Test point 85 (3.60,0.77,0.43):
-		Incl   31, Excl   31
-	Node 86 (4.00,0.67,0.33):
-		Incl   32, Excl   32
-	Test point 86 (4.10,0.77,0.43):
-		Incl   32, Excl   32
-	Node 87 (4.50,0.67,0.33):
-		Incl   33, Excl   33
-	Test point 87 (4.60,0.77,0.43):
-		Incl   33, Excl   33
-	Node 88 (5.00,0.67,0.33):
-		Incl   34, Excl   34
-	Test point 88 (5.10,0.77,0.43):
-		Incl   34, Excl   34
-	Node 89 (5.50,0.67,0.33):
-		Incl   35, Excl   35
-	Test point 89 (5.60,0.77,0.43):
-		Incl   35, Excl   35
-	Node 90 (6.00,0.67,0.33):
-		Incl   35, Excl   35
-	Test point 90 (6.10,0.77,0.43):
-		Incl   72, Excl   72
-	Node 91 (0.00,1.00,0.33):
-		Incl   64, Excl   64
-	Test point 91 (0.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 92 (0.50,1.00,0.33):
-		Incl   64, Excl   72
-	Test point 92 (0.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 93 (1.00,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 93 (1.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 94 (1.50,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 94 (1.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 95 (2.00,1.00,0.33):
-		Incl   72, Excl   72
-	Test point 95 (2.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 96 (2.50,1.00,0.33):
-		Incl   65, Excl   65
-	Test point 96 (2.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 97 (3.00,1.00,0.33):
-		Incl   30, Excl   30
-	Test point 97 (3.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 98 (3.50,1.00,0.33):
-		Incl   31, Excl   31
-	Test point 98 (3.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 99 (4.00,1.00,0.33):
-		Incl   32, Excl   32
-	Test point 99 (4.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 100 (4.50,1.00,0.33):
-		Incl   33, Excl   33
-	Test point 100 (4.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 101 (5.00,1.00,0.33):
-		Incl   34, Excl   34
-	Test point 101 (5.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 102 (5.50,1.00,0.33):
-		Incl   35, Excl   35
-	Test point 102 (5.60,1.10,0.43):
-		Incl   72, Excl   72
-	Node 103 (6.00,1.00,0.33):
-		Incl   35, Excl   35
-	Test point 103 (6.10,1.10,0.43):
-		Incl   72, Excl   72
-	Node 104 (0.00,0.00,0.67):
-		Incl   66, Excl   66
-	Test point 104 (0.10,0.10,0.77):
-		Incl   66, Excl   66
-	Node 105 (0.50,0.00,0.67):
-		Incl   66, Excl   72
-	Test point 105 (0.60,0.10,0.77):
-		Incl   72, Excl   72
-	Node 106 (1.00,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 106 (1.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 107 (1.50,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 107 (1.60,0.10,0.77):
-		Incl   72, Excl   72
-	Node 108 (2.00,0.00,0.67):
-		Incl   72, Excl   72
-	Test point 108 (2.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 109 (2.50,0.00,0.67):
-		Incl   67, Excl   67
-	Test point 109 (2.60,0.10,0.77):
-		Incl   67, Excl   67
-	Node 110 (3.00,0.00,0.67):
-		Incl   36, Excl   36
-	Test point 110 (3.10,0.10,0.77):
-		Incl   36, Excl   36
-	Node 111 (3.50,0.00,0.67):
-		Incl   37, Excl   37
-	Test point 111 (3.60,0.10,0.77):
-		Incl   37, Excl   37
-	Node 112 (4.00,0.00,0.67):
-		Incl   38, Excl   38
-	Test point 112 (4.10,0.10,0.77):
-		Incl   38, Excl   38
-	Node 113 (4.50,0.00,0.67):
-		Incl   39, Excl   39
-	Test point 113 (4.60,0.10,0.77):
-		Incl   39, Excl   39
-	Node 114 (5.00,0.00,0.67):
-		Incl   40, Excl   40
-	Test point 114 (5.10,0.10,0.77):
-		Incl   40, Excl   40
-	Node 115 (5.50,0.00,0.67):
-		Incl   41, Excl   41
-	Test point 115 (5.60,0.10,0.77):
-		Incl   41, Excl   41
-	Node 116 (6.00,0.00,0.67):
-		Incl   41, Excl   41
-	Test point 116 (6.10,0.10,0.77):
-		Incl   72, Excl   72
-	Node 117 (0.00,0.33,0.67):
-		Incl   68, Excl   68
-	Test point 117 (0.10,0.43,0.77):
-		Incl   68, Excl   68
-	Node 118 (0.50,0.33,0.67):
-		Incl   68, Excl   72
-	Test point 118 (0.60,0.43,0.77):
-		Incl   72, Excl   72
-	Node 119 (1.00,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 119 (1.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 120 (1.50,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 120 (1.60,0.43,0.77):
-		Incl   72, Excl   72
-	Node 121 (2.00,0.33,0.67):
-		Incl   72, Excl   72
-	Test point 121 (2.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 122 (2.50,0.33,0.67):
-		Incl   69, Excl   69
-	Test point 122 (2.60,0.43,0.77):
-		Incl   69, Excl   69
-	Node 123 (3.00,0.33,0.67):
-		Incl   42, Excl   42
-	Test point 123 (3.10,0.43,0.77):
-		Incl   42, Excl   42
-	Node 124 (3.50,0.33,0.67):
-		Incl   43, Excl   43
-	Test point 124 (3.60,0.43,0.77):
-		Incl   43, Excl   43
-	Node 125 (4.00,0.33,0.67):
-		Incl   44, Excl   44
-	Test point 125 (4.10,0.43,0.77):
-		Incl   44, Excl   44
-	Node 126 (4.50,0.33,0.67):
-		Incl   45, Excl   45
-	Test point 126 (4.60,0.43,0.77):
-		Incl   45, Excl   45
-	Node 127 (5.00,0.33,0.67):
-		Incl   46, Excl   46
-	Test point 127 (5.10,0.43,0.77):
-		Incl   46, Excl   46
-	Node 128 (5.50,0.33,0.67):
-		Incl   47, Excl   47
-	Test point 128 (5.60,0.43,0.77):
-		Incl   47, Excl   47
-	Node 129 (6.00,0.33,0.67):
-		Incl   47, Excl   47
-	Test point 129 (6.10,0.43,0.77):
-		Incl   72, Excl   72
-	Node 130 (0.00,0.67,0.67):
-		Incl   70, Excl   70
-	Test point 130 (0.10,0.77,0.77):
-		Incl   70, Excl   70
-	Node 131 (0.50,0.67,0.67):
-		Incl   70, Excl   72
-	Test point 131 (0.60,0.77,0.77):
-		Incl   72, Excl   72
-	Node 132 (1.00,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 132 (1.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 133 (1.50,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 133 (1.60,0.77,0.77):
-		Incl   72, Excl   72
-	Node 134 (2.00,0.67,0.67):
-		Incl   72, Excl   72
-	Test point 134 (2.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 135 (2.50,0.67,0.67):
-		Incl   71, Excl   71
-	Test point 135 (2.60,0.77,0.77):
-		Incl   71, Excl   71
-	Node 136 (3.00,0.67,0.67):
-		Incl   48, Excl   48
-	Test point 136 (3.10,0.77,0.77):
-		Incl   48, Excl   48
-	Node 137 (3.50,0.67,0.67):
-		Incl   49, Excl   49
-	Test point 137 (3.60,0.77,0.77):
-		Incl   49, Excl   49
-	Node 138 (4.00,0.67,0.67):
-		Incl   50, Excl   50
-	Test point 138 (4.10,0.77,0.77):
-		Incl   50, Excl   50
-	Node 139 (4.50,0.67,0.67):
-		Incl   51, Excl   51
-	Test point 139 (4.60,0.77,0.77):
-		Incl   51, Excl   51
-	Node 140 (5.00,0.67,0.67):
-		Incl   52, Excl   52
-	Test point 140 (5.10,0.77,0.77):
-		Incl   52, Excl   52
-	Node 141 (5.50,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 141 (5.60,0.77,0.77):
-		Incl   53, Excl   53
-	Node 142 (6.00,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 142 (6.10,0.77,0.77):
-		Incl   72, Excl   72
-	Node 143 (0.00,1.00,0.67):
-		Incl   70, Excl   70
-	Test point 143 (0.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 144 (0.50,1.00,0.67):
-		Incl   70, Excl   72
-	Test point 144 (0.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 145 (1.00,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 145 (1.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 146 (1.50,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 146 (1.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 147 (2.00,1.00,0.67):
-		Incl   72, Excl   72
-	Test point 147 (2.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 148 (2.50,1.00,0.67):
-		Incl   71, Excl   71
-	Test point 148 (2.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 149 (3.00,1.00,0.67):
-		Incl   48, Excl   48
-	Test point 149 (3.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 150 (3.50,1.00,0.67):
-		Incl   49, Excl   49
-	Test point 150 (3.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 151 (4.00,1.00,0.67):
-		Incl   50, Excl   50
-	Test point 151 (4.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 152 (4.50,1.00,0.67):
-		Incl   51, Excl   51
-	Test point 152 (4.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 153 (5.00,1.00,0.67):
-		Incl   52, Excl   52
-	Test point 153 (5.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 154 (5.50,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 154 (5.60,1.10,0.77):
-		Incl   72, Excl   72
-	Node 155 (6.00,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 155 (6.10,1.10,0.77):
-		Incl   72, Excl   72
-	Node 156 (0.00,0.00,1.00):
-		Incl   66, Excl   66
-	Test point 156 (0.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 157 (0.50,0.00,1.00):
-		Incl   66, Excl   72
-	Test point 157 (0.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 158 (1.00,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 158 (1.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 159 (1.50,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 159 (1.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 160 (2.00,0.00,1.00):
-		Incl   72, Excl   72
-	Test point 160 (2.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 161 (2.50,0.00,1.00):
-		Incl   67, Excl   67
-	Test point 161 (2.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 162 (3.00,0.00,1.00):
-		Incl   36, Excl   36
-	Test point 162 (3.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 163 (3.50,0.00,1.00):
-		Incl   37, Excl   37
-	Test point 163 (3.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 164 (4.00,0.00,1.00):
-		Incl   38, Excl   38
-	Test point 164 (4.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 165 (4.50,0.00,1.00):
-		Incl   39, Excl   39
-	Test point 165 (4.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 166 (5.00,0.00,1.00):
-		Incl   40, Excl   40
-	Test point 166 (5.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 167 (5.50,0.00,1.00):
-		Incl   41, Excl   41
-	Test point 167 (5.60,0.10,1.10):
-		Incl   72, Excl   72
-	Node 168 (6.00,0.00,1.00):
-		Incl   41, Excl   41
-	Test point 168 (6.10,0.10,1.10):
-		Incl   72, Excl   72
-	Node 169 (0.00,0.33,1.00):
-		Incl   68, Excl   68
-	Test point 169 (0.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 170 (0.50,0.33,1.00):
-		Incl   68, Excl   72
-	Test point 170 (0.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 171 (1.00,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 171 (1.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 172 (1.50,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 172 (1.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 173 (2.00,0.33,1.00):
-		Incl   72, Excl   72
-	Test point 173 (2.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 174 (2.50,0.33,1.00):
-		Incl   69, Excl   69
-	Test point 174 (2.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 175 (3.00,0.33,1.00):
-		Incl   42, Excl   42
-	Test point 175 (3.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 176 (3.50,0.33,1.00):
-		Incl   43, Excl   43
-	Test point 176 (3.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 177 (4.00,0.33,1.00):
-		Incl   44, Excl   44
-	Test point 177 (4.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 178 (4.50,0.33,1.00):
-		Incl   45, Excl   45
-	Test point 178 (4.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 179 (5.00,0.33,1.00):
-		Incl   46, Excl   46
-	Test point 179 (5.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 180 (5.50,0.33,1.00):
-		Incl   47, Excl   47
-	Test point 180 (5.60,0.43,1.10):
-		Incl   72, Excl   72
-	Node 181 (6.00,0.33,1.00):
-		Incl   47, Excl   47
-	Test point 181 (6.10,0.43,1.10):
-		Incl   72, Excl   72
-	Node 182 (0.00,0.67,1.00):
-		Incl   70, Excl   70
-	Test point 182 (0.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 183 (0.50,0.67,1.00):
-		Incl   70, Excl   72
-	Test point 183 (0.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 184 (1.00,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 184 (1.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 185 (1.50,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 185 (1.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 186 (2.00,0.67,1.00):
-		Incl   72, Excl   72
-	Test point 186 (2.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 187 (2.50,0.67,1.00):
-		Incl   71, Excl   71
-	Test point 187 (2.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 188 (3.00,0.67,1.00):
-		Incl   48, Excl   48
-	Test point 188 (3.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 189 (3.50,0.67,1.00):
-		Incl   49, Excl   49
-	Test point 189 (3.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 190 (4.00,0.67,1.00):
-		Incl   50, Excl   50
-	Test point 190 (4.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 191 (4.50,0.67,1.00):
-		Incl   51, Excl   51
-	Test point 191 (4.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 192 (5.00,0.67,1.00):
-		Incl   52, Excl   52
-	Test point 192 (5.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 193 (5.50,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 193 (5.60,0.77,1.10):
-		Incl   72, Excl   72
-	Node 194 (6.00,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 194 (6.10,0.77,1.10):
-		Incl   72, Excl   72
-	Node 195 (0.00,1.00,1.00):
-		Incl   70, Excl   70
-	Test point 195 (0.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 196 (0.50,1.00,1.00):
-		Incl   70, Excl   72
-	Test point 196 (0.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 197 (1.00,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 197 (1.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 198 (1.50,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 198 (1.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 199 (2.00,1.00,1.00):
-		Incl   72, Excl   72
-	Test point 199 (2.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 200 (2.50,1.00,1.00):
-		Incl   71, Excl   71
-	Test point 200 (2.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 201 (3.00,1.00,1.00):
-		Incl   48, Excl   48
-	Test point 201 (3.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 202 (3.50,1.00,1.00):
-		Incl   49, Excl   49
-	Test point 202 (3.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 203 (4.00,1.00,1.00):
-		Incl   50, Excl   50
-	Test point 203 (4.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 204 (4.50,1.00,1.00):
-		Incl   51, Excl   51
-	Test point 204 (4.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 205 (5.00,1.00,1.00):
-		Incl   52, Excl   52
-	Test point 205 (5.10,1.10,1.10):
-		Incl   72, Excl   72
-	Node 206 (5.50,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 206 (5.60,1.10,1.10):
-		Incl   72, Excl   72
-	Node 207 (6.00,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 207 (6.10,1.10,1.10):
-		Incl   72, Excl   72
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,835 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 0 (0.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 1 (0.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 1 (0.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 2 (1.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 2 (1.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 3 (1.50,0.00,0.00):
-		Incl   36, Excl   36
-	Test point 3 (1.60,0.10,0.10):
-		Incl   36, Excl   36
-	Node 4 (2.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 4 (2.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 5 (2.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 5 (2.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 6 (3.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 6 (3.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 7 (3.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 7 (3.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 8 (4.00,0.00,0.00):
-		Incl    3, Excl   37
-	Test point 8 (4.10,0.10,0.10):
-		Incl   37, Excl   37
-	Node 9 (4.50,0.00,0.00):
-		Incl   37, Excl   54
-	Test point 9 (4.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 10 (5.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 10 (5.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 11 (5.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 11 (5.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 12 (6.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 12 (6.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 13 (0.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 13 (0.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 14 (0.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 14 (0.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 15 (1.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 15 (1.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 16 (1.50,0.33,0.00):
-		Incl   38, Excl   38
-	Test point 16 (1.60,0.43,0.10):
-		Incl   38, Excl   38
-	Node 17 (2.00,0.33,0.00):
-		Incl    4, Excl    4
-	Test point 17 (2.10,0.43,0.10):
-		Incl    4, Excl    4
-	Node 18 (2.50,0.33,0.00):
-		Incl    5, Excl    5
-	Test point 18 (2.60,0.43,0.10):
-		Incl    5, Excl    5
-	Node 19 (3.00,0.33,0.00):
-		Incl    6, Excl    6
-	Test point 19 (3.10,0.43,0.10):
-		Incl    6, Excl    6
-	Node 20 (3.50,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 20 (3.60,0.43,0.10):
-		Incl    7, Excl    7
-	Node 21 (4.00,0.33,0.00):
-		Incl    7, Excl   39
-	Test point 21 (4.10,0.43,0.10):
-		Incl   39, Excl   39
-	Node 22 (4.50,0.33,0.00):
-		Incl   39, Excl   54
-	Test point 22 (4.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 23 (5.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 23 (5.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 24 (5.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 24 (5.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 25 (6.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 25 (6.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 26 (0.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 26 (0.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 27 (0.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 27 (0.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 28 (1.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 28 (1.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 29 (1.50,0.67,0.00):
-		Incl   40, Excl   40
-	Test point 29 (1.60,0.77,0.10):
-		Incl   40, Excl   40
-	Node 30 (2.00,0.67,0.00):
-		Incl    8, Excl    8
-	Test point 30 (2.10,0.77,0.10):
-		Incl    8, Excl    8
-	Node 31 (2.50,0.67,0.00):
-		Incl    9, Excl    9
-	Test point 31 (2.60,0.77,0.10):
-		Incl    9, Excl    9
-	Node 32 (3.00,0.67,0.00):
-		Incl   10, Excl   10
-	Test point 32 (3.10,0.77,0.10):
-		Incl   10, Excl   10
-	Node 33 (3.50,0.67,0.00):
-		Incl   11, Excl   11
-	Test point 33 (3.60,0.77,0.10):
-		Incl   11, Excl   11
-	Node 34 (4.00,0.67,0.00):
-		Incl   11, Excl   41
-	Test point 34 (4.10,0.77,0.10):
-		Incl   41, Excl   41
-	Node 35 (4.50,0.67,0.00):
-		Incl   41, Excl   54
-	Test point 35 (4.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 36 (5.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 36 (5.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 37 (5.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 37 (5.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 38 (6.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 38 (6.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 39 (0.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 39 (0.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 40 (0.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 40 (0.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 41 (1.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 41 (1.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 42 (1.50,1.00,0.00):
-		Incl   40, Excl   40
-	Test point 42 (1.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 43 (2.00,1.00,0.00):
-		Incl    8, Excl    8
-	Test point 43 (2.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 44 (2.50,1.00,0.00):
-		Incl    9, Excl    9
-	Test point 44 (2.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 45 (3.00,1.00,0.00):
-		Incl   10, Excl   10
-	Test point 45 (3.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 46 (3.50,1.00,0.00):
-		Incl   11, Excl   11
-	Test point 46 (3.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 47 (4.00,1.00,0.00):
-		Incl   11, Excl   41
-	Test point 47 (4.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 48 (4.50,1.00,0.00):
-		Incl   41, Excl   54
-	Test point 48 (4.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 49 (5.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 49 (5.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 50 (5.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 50 (5.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 51 (6.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 51 (6.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 52 (0.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 52 (0.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 53 (0.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 53 (0.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 54 (1.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 54 (1.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 55 (1.50,0.00,0.33):
-		Incl   42, Excl   42
-	Test point 55 (1.60,0.10,0.43):
-		Incl   42, Excl   42
-	Node 56 (2.00,0.00,0.33):
-		Incl   12, Excl   12
-	Test point 56 (2.10,0.10,0.43):
-		Incl   12, Excl   12
-	Node 57 (2.50,0.00,0.33):
-		Incl   13, Excl   13
-	Test point 57 (2.60,0.10,0.43):
-		Incl   13, Excl   13
-	Node 58 (3.00,0.00,0.33):
-		Incl   14, Excl   14
-	Test point 58 (3.10,0.10,0.43):
-		Incl   14, Excl   14
-	Node 59 (3.50,0.00,0.33):
-		Incl   15, Excl   15
-	Test point 59 (3.60,0.10,0.43):
-		Incl   15, Excl   15
-	Node 60 (4.00,0.00,0.33):
-		Incl   15, Excl   43
-	Test point 60 (4.10,0.10,0.43):
-		Incl   43, Excl   43
-	Node 61 (4.50,0.00,0.33):
-		Incl   43, Excl   54
-	Test point 61 (4.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 62 (5.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 62 (5.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 63 (5.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 63 (5.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 64 (6.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 64 (6.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 65 (0.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 65 (0.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 66 (0.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 66 (0.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 67 (1.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 67 (1.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 68 (1.50,0.33,0.33):
-		Incl   44, Excl   44
-	Test point 68 (1.60,0.43,0.43):
-		Incl   44, Excl   44
-	Node 69 (2.00,0.33,0.33):
-		Incl   16, Excl   16
-	Test point 69 (2.10,0.43,0.43):
-		Incl   16, Excl   16
-	Node 70 (2.50,0.33,0.33):
-		Incl   17, Excl   17
-	Test point 70 (2.60,0.43,0.43):
-		Incl   17, Excl   17
-	Node 71 (3.00,0.33,0.33):
-		Incl   18, Excl   18
-	Test point 71 (3.10,0.43,0.43):
-		Incl   18, Excl   18
-	Node 72 (3.50,0.33,0.33):
-		Incl   19, Excl   19
-	Test point 72 (3.60,0.43,0.43):
-		Incl   19, Excl   19
-	Node 73 (4.00,0.33,0.33):
-		Incl   19, Excl   45
-	Test point 73 (4.10,0.43,0.43):
-		Incl   45, Excl   45
-	Node 74 (4.50,0.33,0.33):
-		Incl   45, Excl   54
-	Test point 74 (4.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 75 (5.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 75 (5.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 76 (5.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 76 (5.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 77 (6.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 77 (6.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 78 (0.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 78 (0.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 79 (0.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 79 (0.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 80 (1.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 80 (1.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 81 (1.50,0.67,0.33):
-		Incl   46, Excl   46
-	Test point 81 (1.60,0.77,0.43):
-		Incl   46, Excl   46
-	Node 82 (2.00,0.67,0.33):
-		Incl   20, Excl   20
-	Test point 82 (2.10,0.77,0.43):
-		Incl   20, Excl   20
-	Node 83 (2.50,0.67,0.33):
-		Incl   21, Excl   21
-	Test point 83 (2.60,0.77,0.43):
-		Incl   21, Excl   21
-	Node 84 (3.00,0.67,0.33):
-		Incl   22, Excl   22
-	Test point 84 (3.10,0.77,0.43):
-		Incl   22, Excl   22
-	Node 85 (3.50,0.67,0.33):
-		Incl   23, Excl   23
-	Test point 85 (3.60,0.77,0.43):
-		Incl   23, Excl   23
-	Node 86 (4.00,0.67,0.33):
-		Incl   23, Excl   47
-	Test point 86 (4.10,0.77,0.43):
-		Incl   47, Excl   47
-	Node 87 (4.50,0.67,0.33):
-		Incl   47, Excl   54
-	Test point 87 (4.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 88 (5.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 88 (5.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 89 (5.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 89 (5.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 90 (6.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 90 (6.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 91 (0.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 91 (0.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 92 (0.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 92 (0.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 93 (1.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 93 (1.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 94 (1.50,1.00,0.33):
-		Incl   46, Excl   46
-	Test point 94 (1.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 95 (2.00,1.00,0.33):
-		Incl   20, Excl   20
-	Test point 95 (2.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 96 (2.50,1.00,0.33):
-		Incl   21, Excl   21
-	Test point 96 (2.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 97 (3.00,1.00,0.33):
-		Incl   22, Excl   22
-	Test point 97 (3.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 98 (3.50,1.00,0.33):
-		Incl   23, Excl   23
-	Test point 98 (3.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 99 (4.00,1.00,0.33):
-		Incl   23, Excl   47
-	Test point 99 (4.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 100 (4.50,1.00,0.33):
-		Incl   47, Excl   54
-	Test point 100 (4.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 101 (5.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 101 (5.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 102 (5.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 102 (5.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 103 (6.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 103 (6.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 104 (0.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 104 (0.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 105 (0.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 105 (0.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 106 (1.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 106 (1.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 107 (1.50,0.00,0.67):
-		Incl   48, Excl   48
-	Test point 107 (1.60,0.10,0.77):
-		Incl   48, Excl   48
-	Node 108 (2.00,0.00,0.67):
-		Incl   24, Excl   24
-	Test point 108 (2.10,0.10,0.77):
-		Incl   24, Excl   24
-	Node 109 (2.50,0.00,0.67):
-		Incl   25, Excl   25
-	Test point 109 (2.60,0.10,0.77):
-		Incl   25, Excl   25
-	Node 110 (3.00,0.00,0.67):
-		Incl   26, Excl   26
-	Test point 110 (3.10,0.10,0.77):
-		Incl   26, Excl   26
-	Node 111 (3.50,0.00,0.67):
-		Incl   27, Excl   27
-	Test point 111 (3.60,0.10,0.77):
-		Incl   27, Excl   27
-	Node 112 (4.00,0.00,0.67):
-		Incl   27, Excl   49
-	Test point 112 (4.10,0.10,0.77):
-		Incl   49, Excl   49
-	Node 113 (4.50,0.00,0.67):
-		Incl   49, Excl   54
-	Test point 113 (4.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 114 (5.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 114 (5.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 115 (5.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 115 (5.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 116 (6.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 116 (6.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 117 (0.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 117 (0.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 118 (0.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 118 (0.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 119 (1.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 119 (1.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 120 (1.50,0.33,0.67):
-		Incl   50, Excl   50
-	Test point 120 (1.60,0.43,0.77):
-		Incl   50, Excl   50
-	Node 121 (2.00,0.33,0.67):
-		Incl   28, Excl   28
-	Test point 121 (2.10,0.43,0.77):
-		Incl   28, Excl   28
-	Node 122 (2.50,0.33,0.67):
-		Incl   29, Excl   29
-	Test point 122 (2.60,0.43,0.77):
-		Incl   29, Excl   29
-	Node 123 (3.00,0.33,0.67):
-		Incl   30, Excl   30
-	Test point 123 (3.10,0.43,0.77):
-		Incl   30, Excl   30
-	Node 124 (3.50,0.33,0.67):
-		Incl   31, Excl   31
-	Test point 124 (3.60,0.43,0.77):
-		Incl   31, Excl   31
-	Node 125 (4.00,0.33,0.67):
-		Incl   31, Excl   51
-	Test point 125 (4.10,0.43,0.77):
-		Incl   51, Excl   51
-	Node 126 (4.50,0.33,0.67):
-		Incl   51, Excl   54
-	Test point 126 (4.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 127 (5.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 127 (5.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 128 (5.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 128 (5.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 129 (6.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 129 (6.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 130 (0.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 130 (0.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 131 (0.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 131 (0.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 132 (1.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 132 (1.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 133 (1.50,0.67,0.67):
-		Incl   52, Excl   52
-	Test point 133 (1.60,0.77,0.77):
-		Incl   52, Excl   52
-	Node 134 (2.00,0.67,0.67):
-		Incl   32, Excl   32
-	Test point 134 (2.10,0.77,0.77):
-		Incl   32, Excl   32
-	Node 135 (2.50,0.67,0.67):
-		Incl   33, Excl   33
-	Test point 135 (2.60,0.77,0.77):
-		Incl   33, Excl   33
-	Node 136 (3.00,0.67,0.67):
-		Incl   34, Excl   34
-	Test point 136 (3.10,0.77,0.77):
-		Incl   34, Excl   34
-	Node 137 (3.50,0.67,0.67):
-		Incl   35, Excl   35
-	Test point 137 (3.60,0.77,0.77):
-		Incl   35, Excl   35
-	Node 138 (4.00,0.67,0.67):
-		Incl   35, Excl   53
-	Test point 138 (4.10,0.77,0.77):
-		Incl   53, Excl   53
-	Node 139 (4.50,0.67,0.67):
-		Incl   53, Excl   54
-	Test point 139 (4.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 140 (5.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 140 (5.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 141 (5.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 141 (5.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 142 (6.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 142 (6.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 143 (0.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 143 (0.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 144 (0.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 144 (0.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 145 (1.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 145 (1.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 146 (1.50,1.00,0.67):
-		Incl   52, Excl   52
-	Test point 146 (1.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 147 (2.00,1.00,0.67):
-		Incl   32, Excl   32
-	Test point 147 (2.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 148 (2.50,1.00,0.67):
-		Incl   33, Excl   33
-	Test point 148 (2.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 149 (3.00,1.00,0.67):
-		Incl   34, Excl   34
-	Test point 149 (3.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 150 (3.50,1.00,0.67):
-		Incl   35, Excl   35
-	Test point 150 (3.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 151 (4.00,1.00,0.67):
-		Incl   35, Excl   53
-	Test point 151 (4.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 152 (4.50,1.00,0.67):
-		Incl   53, Excl   54
-	Test point 152 (4.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 153 (5.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 153 (5.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 154 (5.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 154 (5.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 155 (6.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 155 (6.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 156 (0.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 156 (0.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 157 (0.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 157 (0.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 158 (1.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 158 (1.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 159 (1.50,0.00,1.00):
-		Incl   48, Excl   48
-	Test point 159 (1.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 160 (2.00,0.00,1.00):
-		Incl   24, Excl   24
-	Test point 160 (2.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 161 (2.50,0.00,1.00):
-		Incl   25, Excl   25
-	Test point 161 (2.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 162 (3.00,0.00,1.00):
-		Incl   26, Excl   26
-	Test point 162 (3.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 163 (3.50,0.00,1.00):
-		Incl   27, Excl   27
-	Test point 163 (3.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 164 (4.00,0.00,1.00):
-		Incl   27, Excl   49
-	Test point 164 (4.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 165 (4.50,0.00,1.00):
-		Incl   49, Excl   54
-	Test point 165 (4.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 166 (5.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 166 (5.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 167 (5.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 167 (5.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 168 (6.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 168 (6.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 169 (0.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 169 (0.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 170 (0.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 170 (0.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 171 (1.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 171 (1.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 172 (1.50,0.33,1.00):
-		Incl   50, Excl   50
-	Test point 172 (1.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 173 (2.00,0.33,1.00):
-		Incl   28, Excl   28
-	Test point 173 (2.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 174 (2.50,0.33,1.00):
-		Incl   29, Excl   29
-	Test point 174 (2.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 175 (3.00,0.33,1.00):
-		Incl   30, Excl   30
-	Test point 175 (3.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 176 (3.50,0.33,1.00):
-		Incl   31, Excl   31
-	Test point 176 (3.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 177 (4.00,0.33,1.00):
-		Incl   31, Excl   51
-	Test point 177 (4.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 178 (4.50,0.33,1.00):
-		Incl   51, Excl   54
-	Test point 178 (4.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 179 (5.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 179 (5.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 180 (5.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 180 (5.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 181 (6.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 181 (6.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 182 (0.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 182 (0.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 183 (0.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 183 (0.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 184 (1.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 184 (1.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 185 (1.50,0.67,1.00):
-		Incl   52, Excl   52
-	Test point 185 (1.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 186 (2.00,0.67,1.00):
-		Incl   32, Excl   32
-	Test point 186 (2.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 187 (2.50,0.67,1.00):
-		Incl   33, Excl   33
-	Test point 187 (2.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 188 (3.00,0.67,1.00):
-		Incl   34, Excl   34
-	Test point 188 (3.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 189 (3.50,0.67,1.00):
-		Incl   35, Excl   35
-	Test point 189 (3.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 190 (4.00,0.67,1.00):
-		Incl   35, Excl   53
-	Test point 190 (4.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 191 (4.50,0.67,1.00):
-		Incl   53, Excl   54
-	Test point 191 (4.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 192 (5.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 192 (5.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 193 (5.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 193 (5.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 194 (6.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 194 (6.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 195 (0.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 195 (0.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 196 (0.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 196 (0.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 197 (1.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 197 (1.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 198 (1.50,1.00,1.00):
-		Incl   52, Excl   52
-	Test point 198 (1.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 199 (2.00,1.00,1.00):
-		Incl   32, Excl   32
-	Test point 199 (2.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 200 (2.50,1.00,1.00):
-		Incl   33, Excl   33
-	Test point 200 (2.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 201 (3.00,1.00,1.00):
-		Incl   34, Excl   34
-	Test point 201 (3.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 202 (3.50,1.00,1.00):
-		Incl   35, Excl   35
-	Test point 202 (3.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 203 (4.00,1.00,1.00):
-		Incl   35, Excl   53
-	Test point 203 (4.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 204 (4.50,1.00,1.00):
-		Incl   53, Excl   54
-	Test point 204 (4.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 205 (5.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 205 (5.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 206 (5.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 206 (5.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 207 (6.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 207 (6.10,1.10,1.10):
-		Incl   54, Excl   54
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,835 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00,0.00):
-		Incl   36, Excl   36
-	Test point 0 (0.10,0.10,0.10):
-		Incl   36, Excl   36
-	Node 1 (0.50,0.00,0.00):
-		Incl   36, Excl   54
-	Test point 1 (0.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 2 (1.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 2 (1.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 3 (1.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 3 (1.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 4 (2.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 4 (2.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 5 (2.50,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 5 (2.60,0.10,0.10):
-		Incl   54, Excl   54
-	Node 6 (3.00,0.00,0.00):
-		Incl   54, Excl   54
-	Test point 6 (3.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 7 (3.50,0.00,0.00):
-		Incl   37, Excl   37
-	Test point 7 (3.60,0.10,0.10):
-		Incl   37, Excl   37
-	Node 8 (4.00,0.00,0.00):
-		Incl    0, Excl    0
-	Test point 8 (4.10,0.10,0.10):
-		Incl    0, Excl    0
-	Node 9 (4.50,0.00,0.00):
-		Incl    1, Excl    1
-	Test point 9 (4.60,0.10,0.10):
-		Incl    1, Excl    1
-	Node 10 (5.00,0.00,0.00):
-		Incl    2, Excl    2
-	Test point 10 (5.10,0.10,0.10):
-		Incl    2, Excl    2
-	Node 11 (5.50,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 11 (5.60,0.10,0.10):
-		Incl    3, Excl    3
-	Node 12 (6.00,0.00,0.00):
-		Incl    3, Excl    3
-	Test point 12 (6.10,0.10,0.10):
-		Incl   54, Excl   54
-	Node 13 (0.00,0.33,0.00):
-		Incl   38, Excl   38
-	Test point 13 (0.10,0.43,0.10):
-		Incl   38, Excl   38
-	Node 14 (0.50,0.33,0.00):
-		Incl   38, Excl   54
-	Test point 14 (0.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 15 (1.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 15 (1.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 16 (1.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 16 (1.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 17 (2.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 17 (2.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 18 (2.50,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 18 (2.60,0.43,0.10):
-		Incl   54, Excl   54
-	Node 19 (3.00,0.33,0.00):
-		Incl   54, Excl   54
-	Test point 19 (3.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 20 (3.50,0.33,0.00):
-		Incl   39, Excl   39
-	Test point 20 (3.60,0.43,0.10):
-		Incl   39, Excl   39
-	Node 21 (4.00,0.33,0.00):
-		Incl    4, Excl    4
-	Test point 21 (4.10,0.43,0.10):
-		Incl    4, Excl    4
-	Node 22 (4.50,0.33,0.00):
-		Incl    5, Excl    5
-	Test point 22 (4.60,0.43,0.10):
-		Incl    5, Excl    5
-	Node 23 (5.00,0.33,0.00):
-		Incl    6, Excl    6
-	Test point 23 (5.10,0.43,0.10):
-		Incl    6, Excl    6
-	Node 24 (5.50,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 24 (5.60,0.43,0.10):
-		Incl    7, Excl    7
-	Node 25 (6.00,0.33,0.00):
-		Incl    7, Excl    7
-	Test point 25 (6.10,0.43,0.10):
-		Incl   54, Excl   54
-	Node 26 (0.00,0.67,0.00):
-		Incl   40, Excl   40
-	Test point 26 (0.10,0.77,0.10):
-		Incl   40, Excl   40
-	Node 27 (0.50,0.67,0.00):
-		Incl   40, Excl   54
-	Test point 27 (0.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 28 (1.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 28 (1.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 29 (1.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 29 (1.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 30 (2.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 30 (2.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 31 (2.50,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 31 (2.60,0.77,0.10):
-		Incl   54, Excl   54
-	Node 32 (3.00,0.67,0.00):
-		Incl   54, Excl   54
-	Test point 32 (3.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 33 (3.50,0.67,0.00):
-		Incl   41, Excl   41
-	Test point 33 (3.60,0.77,0.10):
-		Incl   41, Excl   41
-	Node 34 (4.00,0.67,0.00):
-		Incl    8, Excl    8
-	Test point 34 (4.10,0.77,0.10):
-		Incl    8, Excl    8
-	Node 35 (4.50,0.67,0.00):
-		Incl    9, Excl    9
-	Test point 35 (4.60,0.77,0.10):
-		Incl    9, Excl    9
-	Node 36 (5.00,0.67,0.00):
-		Incl   10, Excl   10
-	Test point 36 (5.10,0.77,0.10):
-		Incl   10, Excl   10
-	Node 37 (5.50,0.67,0.00):
-		Incl   11, Excl   11
-	Test point 37 (5.60,0.77,0.10):
-		Incl   11, Excl   11
-	Node 38 (6.00,0.67,0.00):
-		Incl   11, Excl   11
-	Test point 38 (6.10,0.77,0.10):
-		Incl   54, Excl   54
-	Node 39 (0.00,1.00,0.00):
-		Incl   40, Excl   40
-	Test point 39 (0.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 40 (0.50,1.00,0.00):
-		Incl   40, Excl   54
-	Test point 40 (0.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 41 (1.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 41 (1.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 42 (1.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 42 (1.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 43 (2.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 43 (2.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 44 (2.50,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 44 (2.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 45 (3.00,1.00,0.00):
-		Incl   54, Excl   54
-	Test point 45 (3.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 46 (3.50,1.00,0.00):
-		Incl   41, Excl   41
-	Test point 46 (3.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 47 (4.00,1.00,0.00):
-		Incl    8, Excl    8
-	Test point 47 (4.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 48 (4.50,1.00,0.00):
-		Incl    9, Excl    9
-	Test point 48 (4.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 49 (5.00,1.00,0.00):
-		Incl   10, Excl   10
-	Test point 49 (5.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 50 (5.50,1.00,0.00):
-		Incl   11, Excl   11
-	Test point 50 (5.60,1.10,0.10):
-		Incl   54, Excl   54
-	Node 51 (6.00,1.00,0.00):
-		Incl   11, Excl   11
-	Test point 51 (6.10,1.10,0.10):
-		Incl   54, Excl   54
-	Node 52 (0.00,0.00,0.33):
-		Incl   42, Excl   42
-	Test point 52 (0.10,0.10,0.43):
-		Incl   42, Excl   42
-	Node 53 (0.50,0.00,0.33):
-		Incl   42, Excl   54
-	Test point 53 (0.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 54 (1.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 54 (1.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 55 (1.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 55 (1.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 56 (2.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 56 (2.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 57 (2.50,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 57 (2.60,0.10,0.43):
-		Incl   54, Excl   54
-	Node 58 (3.00,0.00,0.33):
-		Incl   54, Excl   54
-	Test point 58 (3.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 59 (3.50,0.00,0.33):
-		Incl   43, Excl   43
-	Test point 59 (3.60,0.10,0.43):
-		Incl   43, Excl   43
-	Node 60 (4.00,0.00,0.33):
-		Incl   12, Excl   12
-	Test point 60 (4.10,0.10,0.43):
-		Incl   12, Excl   12
-	Node 61 (4.50,0.00,0.33):
-		Incl   13, Excl   13
-	Test point 61 (4.60,0.10,0.43):
-		Incl   13, Excl   13
-	Node 62 (5.00,0.00,0.33):
-		Incl   14, Excl   14
-	Test point 62 (5.10,0.10,0.43):
-		Incl   14, Excl   14
-	Node 63 (5.50,0.00,0.33):
-		Incl   15, Excl   15
-	Test point 63 (5.60,0.10,0.43):
-		Incl   15, Excl   15
-	Node 64 (6.00,0.00,0.33):
-		Incl   15, Excl   15
-	Test point 64 (6.10,0.10,0.43):
-		Incl   54, Excl   54
-	Node 65 (0.00,0.33,0.33):
-		Incl   44, Excl   44
-	Test point 65 (0.10,0.43,0.43):
-		Incl   44, Excl   44
-	Node 66 (0.50,0.33,0.33):
-		Incl   44, Excl   54
-	Test point 66 (0.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 67 (1.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 67 (1.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 68 (1.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 68 (1.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 69 (2.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 69 (2.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 70 (2.50,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 70 (2.60,0.43,0.43):
-		Incl   54, Excl   54
-	Node 71 (3.00,0.33,0.33):
-		Incl   54, Excl   54
-	Test point 71 (3.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 72 (3.50,0.33,0.33):
-		Incl   45, Excl   45
-	Test point 72 (3.60,0.43,0.43):
-		Incl   45, Excl   45
-	Node 73 (4.00,0.33,0.33):
-		Incl   16, Excl   16
-	Test point 73 (4.10,0.43,0.43):
-		Incl   16, Excl   16
-	Node 74 (4.50,0.33,0.33):
-		Incl   17, Excl   17
-	Test point 74 (4.60,0.43,0.43):
-		Incl   17, Excl   17
-	Node 75 (5.00,0.33,0.33):
-		Incl   18, Excl   18
-	Test point 75 (5.10,0.43,0.43):
-		Incl   18, Excl   18
-	Node 76 (5.50,0.33,0.33):
-		Incl   19, Excl   19
-	Test point 76 (5.60,0.43,0.43):
-		Incl   19, Excl   19
-	Node 77 (6.00,0.33,0.33):
-		Incl   19, Excl   19
-	Test point 77 (6.10,0.43,0.43):
-		Incl   54, Excl   54
-	Node 78 (0.00,0.67,0.33):
-		Incl   46, Excl   46
-	Test point 78 (0.10,0.77,0.43):
-		Incl   46, Excl   46
-	Node 79 (0.50,0.67,0.33):
-		Incl   46, Excl   54
-	Test point 79 (0.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 80 (1.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 80 (1.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 81 (1.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 81 (1.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 82 (2.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 82 (2.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 83 (2.50,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 83 (2.60,0.77,0.43):
-		Incl   54, Excl   54
-	Node 84 (3.00,0.67,0.33):
-		Incl   54, Excl   54
-	Test point 84 (3.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 85 (3.50,0.67,0.33):
-		Incl   47, Excl   47
-	Test point 85 (3.60,0.77,0.43):
-		Incl   47, Excl   47
-	Node 86 (4.00,0.67,0.33):
-		Incl   20, Excl   20
-	Test point 86 (4.10,0.77,0.43):
-		Incl   20, Excl   20
-	Node 87 (4.50,0.67,0.33):
-		Incl   21, Excl   21
-	Test point 87 (4.60,0.77,0.43):
-		Incl   21, Excl   21
-	Node 88 (5.00,0.67,0.33):
-		Incl   22, Excl   22
-	Test point 88 (5.10,0.77,0.43):
-		Incl   22, Excl   22
-	Node 89 (5.50,0.67,0.33):
-		Incl   23, Excl   23
-	Test point 89 (5.60,0.77,0.43):
-		Incl   23, Excl   23
-	Node 90 (6.00,0.67,0.33):
-		Incl   23, Excl   23
-	Test point 90 (6.10,0.77,0.43):
-		Incl   54, Excl   54
-	Node 91 (0.00,1.00,0.33):
-		Incl   46, Excl   46
-	Test point 91 (0.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 92 (0.50,1.00,0.33):
-		Incl   46, Excl   54
-	Test point 92 (0.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 93 (1.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 93 (1.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 94 (1.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 94 (1.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 95 (2.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 95 (2.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 96 (2.50,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 96 (2.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 97 (3.00,1.00,0.33):
-		Incl   54, Excl   54
-	Test point 97 (3.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 98 (3.50,1.00,0.33):
-		Incl   47, Excl   47
-	Test point 98 (3.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 99 (4.00,1.00,0.33):
-		Incl   20, Excl   20
-	Test point 99 (4.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 100 (4.50,1.00,0.33):
-		Incl   21, Excl   21
-	Test point 100 (4.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 101 (5.00,1.00,0.33):
-		Incl   22, Excl   22
-	Test point 101 (5.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 102 (5.50,1.00,0.33):
-		Incl   23, Excl   23
-	Test point 102 (5.60,1.10,0.43):
-		Incl   54, Excl   54
-	Node 103 (6.00,1.00,0.33):
-		Incl   23, Excl   23
-	Test point 103 (6.10,1.10,0.43):
-		Incl   54, Excl   54
-	Node 104 (0.00,0.00,0.67):
-		Incl   48, Excl   48
-	Test point 104 (0.10,0.10,0.77):
-		Incl   48, Excl   48
-	Node 105 (0.50,0.00,0.67):
-		Incl   48, Excl   54
-	Test point 105 (0.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 106 (1.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 106 (1.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 107 (1.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 107 (1.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 108 (2.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 108 (2.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 109 (2.50,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 109 (2.60,0.10,0.77):
-		Incl   54, Excl   54
-	Node 110 (3.00,0.00,0.67):
-		Incl   54, Excl   54
-	Test point 110 (3.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 111 (3.50,0.00,0.67):
-		Incl   49, Excl   49
-	Test point 111 (3.60,0.10,0.77):
-		Incl   49, Excl   49
-	Node 112 (4.00,0.00,0.67):
-		Incl   24, Excl   24
-	Test point 112 (4.10,0.10,0.77):
-		Incl   24, Excl   24
-	Node 113 (4.50,0.00,0.67):
-		Incl   25, Excl   25
-	Test point 113 (4.60,0.10,0.77):
-		Incl   25, Excl   25
-	Node 114 (5.00,0.00,0.67):
-		Incl   26, Excl   26
-	Test point 114 (5.10,0.10,0.77):
-		Incl   26, Excl   26
-	Node 115 (5.50,0.00,0.67):
-		Incl   27, Excl   27
-	Test point 115 (5.60,0.10,0.77):
-		Incl   27, Excl   27
-	Node 116 (6.00,0.00,0.67):
-		Incl   27, Excl   27
-	Test point 116 (6.10,0.10,0.77):
-		Incl   54, Excl   54
-	Node 117 (0.00,0.33,0.67):
-		Incl   50, Excl   50
-	Test point 117 (0.10,0.43,0.77):
-		Incl   50, Excl   50
-	Node 118 (0.50,0.33,0.67):
-		Incl   50, Excl   54
-	Test point 118 (0.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 119 (1.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 119 (1.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 120 (1.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 120 (1.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 121 (2.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 121 (2.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 122 (2.50,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 122 (2.60,0.43,0.77):
-		Incl   54, Excl   54
-	Node 123 (3.00,0.33,0.67):
-		Incl   54, Excl   54
-	Test point 123 (3.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 124 (3.50,0.33,0.67):
-		Incl   51, Excl   51
-	Test point 124 (3.60,0.43,0.77):
-		Incl   51, Excl   51
-	Node 125 (4.00,0.33,0.67):
-		Incl   28, Excl   28
-	Test point 125 (4.10,0.43,0.77):
-		Incl   28, Excl   28
-	Node 126 (4.50,0.33,0.67):
-		Incl   29, Excl   29
-	Test point 126 (4.60,0.43,0.77):
-		Incl   29, Excl   29
-	Node 127 (5.00,0.33,0.67):
-		Incl   30, Excl   30
-	Test point 127 (5.10,0.43,0.77):
-		Incl   30, Excl   30
-	Node 128 (5.50,0.33,0.67):
-		Incl   31, Excl   31
-	Test point 128 (5.60,0.43,0.77):
-		Incl   31, Excl   31
-	Node 129 (6.00,0.33,0.67):
-		Incl   31, Excl   31
-	Test point 129 (6.10,0.43,0.77):
-		Incl   54, Excl   54
-	Node 130 (0.00,0.67,0.67):
-		Incl   52, Excl   52
-	Test point 130 (0.10,0.77,0.77):
-		Incl   52, Excl   52
-	Node 131 (0.50,0.67,0.67):
-		Incl   52, Excl   54
-	Test point 131 (0.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 132 (1.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 132 (1.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 133 (1.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 133 (1.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 134 (2.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 134 (2.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 135 (2.50,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 135 (2.60,0.77,0.77):
-		Incl   54, Excl   54
-	Node 136 (3.00,0.67,0.67):
-		Incl   54, Excl   54
-	Test point 136 (3.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 137 (3.50,0.67,0.67):
-		Incl   53, Excl   53
-	Test point 137 (3.60,0.77,0.77):
-		Incl   53, Excl   53
-	Node 138 (4.00,0.67,0.67):
-		Incl   32, Excl   32
-	Test point 138 (4.10,0.77,0.77):
-		Incl   32, Excl   32
-	Node 139 (4.50,0.67,0.67):
-		Incl   33, Excl   33
-	Test point 139 (4.60,0.77,0.77):
-		Incl   33, Excl   33
-	Node 140 (5.00,0.67,0.67):
-		Incl   34, Excl   34
-	Test point 140 (5.10,0.77,0.77):
-		Incl   34, Excl   34
-	Node 141 (5.50,0.67,0.67):
-		Incl   35, Excl   35
-	Test point 141 (5.60,0.77,0.77):
-		Incl   35, Excl   35
-	Node 142 (6.00,0.67,0.67):
-		Incl   35, Excl   35
-	Test point 142 (6.10,0.77,0.77):
-		Incl   54, Excl   54
-	Node 143 (0.00,1.00,0.67):
-		Incl   52, Excl   52
-	Test point 143 (0.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 144 (0.50,1.00,0.67):
-		Incl   52, Excl   54
-	Test point 144 (0.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 145 (1.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 145 (1.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 146 (1.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 146 (1.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 147 (2.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 147 (2.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 148 (2.50,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 148 (2.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 149 (3.00,1.00,0.67):
-		Incl   54, Excl   54
-	Test point 149 (3.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 150 (3.50,1.00,0.67):
-		Incl   53, Excl   53
-	Test point 150 (3.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 151 (4.00,1.00,0.67):
-		Incl   32, Excl   32
-	Test point 151 (4.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 152 (4.50,1.00,0.67):
-		Incl   33, Excl   33
-	Test point 152 (4.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 153 (5.00,1.00,0.67):
-		Incl   34, Excl   34
-	Test point 153 (5.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 154 (5.50,1.00,0.67):
-		Incl   35, Excl   35
-	Test point 154 (5.60,1.10,0.77):
-		Incl   54, Excl   54
-	Node 155 (6.00,1.00,0.67):
-		Incl   35, Excl   35
-	Test point 155 (6.10,1.10,0.77):
-		Incl   54, Excl   54
-	Node 156 (0.00,0.00,1.00):
-		Incl   48, Excl   48
-	Test point 156 (0.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 157 (0.50,0.00,1.00):
-		Incl   48, Excl   54
-	Test point 157 (0.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 158 (1.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 158 (1.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 159 (1.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 159 (1.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 160 (2.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 160 (2.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 161 (2.50,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 161 (2.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 162 (3.00,0.00,1.00):
-		Incl   54, Excl   54
-	Test point 162 (3.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 163 (3.50,0.00,1.00):
-		Incl   49, Excl   49
-	Test point 163 (3.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 164 (4.00,0.00,1.00):
-		Incl   24, Excl   24
-	Test point 164 (4.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 165 (4.50,0.00,1.00):
-		Incl   25, Excl   25
-	Test point 165 (4.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 166 (5.00,0.00,1.00):
-		Incl   26, Excl   26
-	Test point 166 (5.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 167 (5.50,0.00,1.00):
-		Incl   27, Excl   27
-	Test point 167 (5.60,0.10,1.10):
-		Incl   54, Excl   54
-	Node 168 (6.00,0.00,1.00):
-		Incl   27, Excl   27
-	Test point 168 (6.10,0.10,1.10):
-		Incl   54, Excl   54
-	Node 169 (0.00,0.33,1.00):
-		Incl   50, Excl   50
-	Test point 169 (0.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 170 (0.50,0.33,1.00):
-		Incl   50, Excl   54
-	Test point 170 (0.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 171 (1.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 171 (1.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 172 (1.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 172 (1.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 173 (2.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 173 (2.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 174 (2.50,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 174 (2.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 175 (3.00,0.33,1.00):
-		Incl   54, Excl   54
-	Test point 175 (3.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 176 (3.50,0.33,1.00):
-		Incl   51, Excl   51
-	Test point 176 (3.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 177 (4.00,0.33,1.00):
-		Incl   28, Excl   28
-	Test point 177 (4.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 178 (4.50,0.33,1.00):
-		Incl   29, Excl   29
-	Test point 178 (4.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 179 (5.00,0.33,1.00):
-		Incl   30, Excl   30
-	Test point 179 (5.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 180 (5.50,0.33,1.00):
-		Incl   31, Excl   31
-	Test point 180 (5.60,0.43,1.10):
-		Incl   54, Excl   54
-	Node 181 (6.00,0.33,1.00):
-		Incl   31, Excl   31
-	Test point 181 (6.10,0.43,1.10):
-		Incl   54, Excl   54
-	Node 182 (0.00,0.67,1.00):
-		Incl   52, Excl   52
-	Test point 182 (0.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 183 (0.50,0.67,1.00):
-		Incl   52, Excl   54
-	Test point 183 (0.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 184 (1.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 184 (1.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 185 (1.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 185 (1.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 186 (2.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 186 (2.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 187 (2.50,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 187 (2.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 188 (3.00,0.67,1.00):
-		Incl   54, Excl   54
-	Test point 188 (3.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 189 (3.50,0.67,1.00):
-		Incl   53, Excl   53
-	Test point 189 (3.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 190 (4.00,0.67,1.00):
-		Incl   32, Excl   32
-	Test point 190 (4.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 191 (4.50,0.67,1.00):
-		Incl   33, Excl   33
-	Test point 191 (4.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 192 (5.00,0.67,1.00):
-		Incl   34, Excl   34
-	Test point 192 (5.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 193 (5.50,0.67,1.00):
-		Incl   35, Excl   35
-	Test point 193 (5.60,0.77,1.10):
-		Incl   54, Excl   54
-	Node 194 (6.00,0.67,1.00):
-		Incl   35, Excl   35
-	Test point 194 (6.10,0.77,1.10):
-		Incl   54, Excl   54
-	Node 195 (0.00,1.00,1.00):
-		Incl   52, Excl   52
-	Test point 195 (0.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 196 (0.50,1.00,1.00):
-		Incl   52, Excl   54
-	Test point 196 (0.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 197 (1.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 197 (1.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 198 (1.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 198 (1.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 199 (2.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 199 (2.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 200 (2.50,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 200 (2.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 201 (3.00,1.00,1.00):
-		Incl   54, Excl   54
-	Test point 201 (3.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 202 (3.50,1.00,1.00):
-		Incl   53, Excl   53
-	Test point 202 (3.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 203 (4.00,1.00,1.00):
-		Incl   32, Excl   32
-	Test point 203 (4.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 204 (4.50,1.00,1.00):
-		Incl   33, Excl   33
-	Test point 204 (4.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 205 (5.00,1.00,1.00):
-		Incl   34, Excl   34
-	Test point 205 (5.10,1.10,1.10):
-		Incl   54, Excl   54
-	Node 206 (5.50,1.00,1.00):
-		Incl   35, Excl   35
-	Test point 206 (5.60,1.10,1.10):
-		Incl   54, Excl   54
-	Node 207 (6.00,1.00,1.00):
-		Incl   35, Excl   35
-	Test point 207 (6.10,1.10,1.10):
-		Incl   54, Excl   54
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedHexaEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedHexaEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,139 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	Dictionary*		dictionary;
-	Geometry*		geometry;
-	ElementLayout*		eLayout;
-	Topology*		nTopology;
-	NodeLayout*		nLayout;
-	HexaMD*			meshDecomp;
-	Index			i;
-	Processor_Index		procToWatch;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 13 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromUnsignedInt( 6 ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "isPeriodicI", Dictionary_Entry_Value_FromBool( True ) );
-
-	
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	meshDecomp = HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	
-	ElementLayout_Build( eLayout, meshDecomp );
-	
-	if (rank == procToWatch) {
-		printf( "Element with point:\n" );
-	}
-	geometry = eLayout->geometry;
-	for( i = 0; i < geometry->pointCount; i++ ) {
-		Coord point;
-		int excEl, incEl;
-		
-		geometry->pointAt( geometry, i, point );
-
-		if (rank == procToWatch) {
-			printf( "\tNode %u (%0.2f,%0.2f,%0.2f):\n", i, point[0], point[1], point[2] );
-			excEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			incEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   INCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			printf( "\t\tIncl %4u, Excl %4u\n", incEl, excEl );		
-		}
-
-		point[0] += 0.1;
-		point[1] += 0.1;
-		point[2] += 0.1;
-		
-		if (rank == procToWatch) {
-			printf( "\tTest point %u (%0.2f,%0.2f,%0.2f):\n", i, point[0], point[1], point[2] );
-			excEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			incEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   INCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			printf( "\t\tIncl %4u, Excl %4u\n", incEl, excEl );		
-		}
-	}
-	if (rank == procToWatch) {
-		printf( "\n" );
-	}	
-	
-	Stg_Class_Delete( dictionary );
-	Stg_Class_Delete( meshDecomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( eLayout );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,210 +0,0 @@
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl    0, Excl    0
-	Test Point 0 (0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00):
-		Incl    1, Excl    1
-	Test Point 1 (0.60,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00):
-		Incl    2, Excl    2
-	Test Point 2 (1.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00):
-		Incl    3, Excl    3
-	Test Point 3 (1.60,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00):
-		Incl    4, Excl    4
-	Test Point 4 (2.10,0.10):
-		Incl    4, Excl    4
-	Node 5 (2.50,0.00):
-		Incl    5, Excl    5
-	Test Point 5 (2.60,0.10):
-		Incl    5, Excl    5
-	Node 6 (3.00,0.00):
-		Incl    6, Excl    6
-	Test Point 6 (3.10,0.10):
-		Incl    6, Excl    6
-	Node 7 (3.50,0.00):
-		Incl    7, Excl    7
-	Test Point 7 (3.60,0.10):
-		Incl    7, Excl    7
-	Node 8 (4.00,0.00):
-		Incl    8, Excl    8
-	Test Point 8 (4.10,0.10):
-		Incl    8, Excl    8
-	Node 9 (4.50,0.00):
-		Incl    9, Excl    9
-	Test Point 9 (4.60,0.10):
-		Incl    9, Excl    9
-	Node 10 (5.00,0.00):
-		Incl   10, Excl   10
-	Test Point 10 (5.10,0.10):
-		Incl   10, Excl   10
-	Node 11 (5.50,0.00):
-		Incl   11, Excl   11
-	Test Point 11 (5.60,0.10):
-		Incl   11, Excl   11
-	Node 12 (6.00,0.00):
-		Incl   11, Excl   11
-	Test Point 12 (6.10,0.10):
-		Incl   36, Excl   36
-	Node 13 (0.00,0.33):
-		Incl   12, Excl   12
-	Test Point 13 (0.10,0.43):
-		Incl   12, Excl   12
-	Node 14 (0.50,0.33):
-		Incl   13, Excl   13
-	Test Point 14 (0.60,0.43):
-		Incl   13, Excl   13
-	Node 15 (1.00,0.33):
-		Incl   14, Excl   14
-	Test Point 15 (1.10,0.43):
-		Incl   14, Excl   14
-	Node 16 (1.50,0.33):
-		Incl   15, Excl   15
-	Test Point 16 (1.60,0.43):
-		Incl   15, Excl   15
-	Node 17 (2.00,0.33):
-		Incl   16, Excl   16
-	Test Point 17 (2.10,0.43):
-		Incl   16, Excl   16
-	Node 18 (2.50,0.33):
-		Incl   17, Excl   17
-	Test Point 18 (2.60,0.43):
-		Incl   17, Excl   17
-	Node 19 (3.00,0.33):
-		Incl   18, Excl   18
-	Test Point 19 (3.10,0.43):
-		Incl   18, Excl   18
-	Node 20 (3.50,0.33):
-		Incl   19, Excl   19
-	Test Point 20 (3.60,0.43):
-		Incl   19, Excl   19
-	Node 21 (4.00,0.33):
-		Incl   20, Excl   20
-	Test Point 21 (4.10,0.43):
-		Incl   20, Excl   20
-	Node 22 (4.50,0.33):
-		Incl   21, Excl   21
-	Test Point 22 (4.60,0.43):
-		Incl   21, Excl   21
-	Node 23 (5.00,0.33):
-		Incl   22, Excl   22
-	Test Point 23 (5.10,0.43):
-		Incl   22, Excl   22
-	Node 24 (5.50,0.33):
-		Incl   23, Excl   23
-	Test Point 24 (5.60,0.43):
-		Incl   23, Excl   23
-	Node 25 (6.00,0.33):
-		Incl   23, Excl   23
-	Test Point 25 (6.10,0.43):
-		Incl   36, Excl   36
-	Node 26 (0.00,0.67):
-		Incl   24, Excl   24
-	Test Point 26 (0.10,0.77):
-		Incl   24, Excl   24
-	Node 27 (0.50,0.67):
-		Incl   25, Excl   25
-	Test Point 27 (0.60,0.77):
-		Incl   25, Excl   25
-	Node 28 (1.00,0.67):
-		Incl   26, Excl   26
-	Test Point 28 (1.10,0.77):
-		Incl   26, Excl   26
-	Node 29 (1.50,0.67):
-		Incl   27, Excl   27
-	Test Point 29 (1.60,0.77):
-		Incl   27, Excl   27
-	Node 30 (2.00,0.67):
-		Incl   28, Excl   28
-	Test Point 30 (2.10,0.77):
-		Incl   28, Excl   28
-	Node 31 (2.50,0.67):
-		Incl   29, Excl   29
-	Test Point 31 (2.60,0.77):
-		Incl   29, Excl   29
-	Node 32 (3.00,0.67):
-		Incl   30, Excl   30
-	Test Point 32 (3.10,0.77):
-		Incl   30, Excl   30
-	Node 33 (3.50,0.67):
-		Incl   31, Excl   31
-	Test Point 33 (3.60,0.77):
-		Incl   31, Excl   31
-	Node 34 (4.00,0.67):
-		Incl   32, Excl   32
-	Test Point 34 (4.10,0.77):
-		Incl   32, Excl   32
-	Node 35 (4.50,0.67):
-		Incl   33, Excl   33
-	Test Point 35 (4.60,0.77):
-		Incl   33, Excl   33
-	Node 36 (5.00,0.67):
-		Incl   34, Excl   34
-	Test Point 36 (5.10,0.77):
-		Incl   34, Excl   34
-	Node 37 (5.50,0.67):
-		Incl   35, Excl   35
-	Test Point 37 (5.60,0.77):
-		Incl   35, Excl   35
-	Node 38 (6.00,0.67):
-		Incl   35, Excl   35
-	Test Point 38 (6.10,0.77):
-		Incl   36, Excl   36
-	Node 39 (0.00,1.00):
-		Incl   24, Excl   24
-	Test Point 39 (0.10,1.10):
-		Incl   36, Excl   36
-	Node 40 (0.50,1.00):
-		Incl   25, Excl   25
-	Test Point 40 (0.60,1.10):
-		Incl   36, Excl   36
-	Node 41 (1.00,1.00):
-		Incl   26, Excl   26
-	Test Point 41 (1.10,1.10):
-		Incl   36, Excl   36
-	Node 42 (1.50,1.00):
-		Incl   27, Excl   27
-	Test Point 42 (1.60,1.10):
-		Incl   36, Excl   36
-	Node 43 (2.00,1.00):
-		Incl   28, Excl   28
-	Test Point 43 (2.10,1.10):
-		Incl   36, Excl   36
-	Node 44 (2.50,1.00):
-		Incl   29, Excl   29
-	Test Point 44 (2.60,1.10):
-		Incl   36, Excl   36
-	Node 45 (3.00,1.00):
-		Incl   30, Excl   30
-	Test Point 45 (3.10,1.10):
-		Incl   36, Excl   36
-	Node 46 (3.50,1.00):
-		Incl   31, Excl   31
-	Test Point 46 (3.60,1.10):
-		Incl   36, Excl   36
-	Node 47 (4.00,1.00):
-		Incl   32, Excl   32
-	Test Point 47 (4.10,1.10):
-		Incl   36, Excl   36
-	Node 48 (4.50,1.00):
-		Incl   33, Excl   33
-	Test Point 48 (4.60,1.10):
-		Incl   36, Excl   36
-	Node 49 (5.00,1.00):
-		Incl   34, Excl   34
-	Test Point 49 (5.10,1.10):
-		Incl   36, Excl   36
-	Node 50 (5.50,1.00):
-		Incl   35, Excl   35
-	Test Point 50 (5.60,1.10):
-		Incl   36, Excl   36
-	Node 51 (6.00,1.00):
-		Incl   35, Excl   35
-	Test Point 51 (6.10,1.10):
-		Incl   36, Excl   36
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,211 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl    0, Excl    0
-	Test Point 0 (0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00):
-		Incl    1, Excl    1
-	Test Point 1 (0.60,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00):
-		Incl    2, Excl    2
-	Test Point 2 (1.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00):
-		Incl    3, Excl    3
-	Test Point 3 (1.60,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00):
-		Incl    4, Excl    4
-	Test Point 4 (2.10,0.10):
-		Incl    4, Excl    4
-	Node 5 (2.50,0.00):
-		Incl    5, Excl    5
-	Test Point 5 (2.60,0.10):
-		Incl    5, Excl    5
-	Node 6 (3.00,0.00):
-		Incl    5, Excl   18
-	Test Point 6 (3.10,0.10):
-		Incl   18, Excl   18
-	Node 7 (3.50,0.00):
-		Incl   18, Excl   24
-	Test Point 7 (3.60,0.10):
-		Incl   24, Excl   24
-	Node 8 (4.00,0.00):
-		Incl   24, Excl   24
-	Test Point 8 (4.10,0.10):
-		Incl   24, Excl   24
-	Node 9 (4.50,0.00):
-		Incl   24, Excl   24
-	Test Point 9 (4.60,0.10):
-		Incl   24, Excl   24
-	Node 10 (5.00,0.00):
-		Incl   24, Excl   24
-	Test Point 10 (5.10,0.10):
-		Incl   24, Excl   24
-	Node 11 (5.50,0.00):
-		Incl   19, Excl   19
-	Test Point 11 (5.60,0.10):
-		Incl   19, Excl   19
-	Node 12 (6.00,0.00):
-		Incl   19, Excl   19
-	Test Point 12 (6.10,0.10):
-		Incl   24, Excl   24
-	Node 13 (0.00,0.33):
-		Incl    6, Excl    6
-	Test Point 13 (0.10,0.43):
-		Incl    6, Excl    6
-	Node 14 (0.50,0.33):
-		Incl    7, Excl    7
-	Test Point 14 (0.60,0.43):
-		Incl    7, Excl    7
-	Node 15 (1.00,0.33):
-		Incl    8, Excl    8
-	Test Point 15 (1.10,0.43):
-		Incl    8, Excl    8
-	Node 16 (1.50,0.33):
-		Incl    9, Excl    9
-	Test Point 16 (1.60,0.43):
-		Incl    9, Excl    9
-	Node 17 (2.00,0.33):
-		Incl   10, Excl   10
-	Test Point 17 (2.10,0.43):
-		Incl   10, Excl   10
-	Node 18 (2.50,0.33):
-		Incl   11, Excl   11
-	Test Point 18 (2.60,0.43):
-		Incl   11, Excl   11
-	Node 19 (3.00,0.33):
-		Incl   11, Excl   20
-	Test Point 19 (3.10,0.43):
-		Incl   20, Excl   20
-	Node 20 (3.50,0.33):
-		Incl   20, Excl   24
-	Test Point 20 (3.60,0.43):
-		Incl   24, Excl   24
-	Node 21 (4.00,0.33):
-		Incl   24, Excl   24
-	Test Point 21 (4.10,0.43):
-		Incl   24, Excl   24
-	Node 22 (4.50,0.33):
-		Incl   24, Excl   24
-	Test Point 22 (4.60,0.43):
-		Incl   24, Excl   24
-	Node 23 (5.00,0.33):
-		Incl   24, Excl   24
-	Test Point 23 (5.10,0.43):
-		Incl   24, Excl   24
-	Node 24 (5.50,0.33):
-		Incl   21, Excl   21
-	Test Point 24 (5.60,0.43):
-		Incl   21, Excl   21
-	Node 25 (6.00,0.33):
-		Incl   21, Excl   21
-	Test Point 25 (6.10,0.43):
-		Incl   24, Excl   24
-	Node 26 (0.00,0.67):
-		Incl   12, Excl   12
-	Test Point 26 (0.10,0.77):
-		Incl   12, Excl   12
-	Node 27 (0.50,0.67):
-		Incl   13, Excl   13
-	Test Point 27 (0.60,0.77):
-		Incl   13, Excl   13
-	Node 28 (1.00,0.67):
-		Incl   14, Excl   14
-	Test Point 28 (1.10,0.77):
-		Incl   14, Excl   14
-	Node 29 (1.50,0.67):
-		Incl   15, Excl   15
-	Test Point 29 (1.60,0.77):
-		Incl   15, Excl   15
-	Node 30 (2.00,0.67):
-		Incl   16, Excl   16
-	Test Point 30 (2.10,0.77):
-		Incl   16, Excl   16
-	Node 31 (2.50,0.67):
-		Incl   17, Excl   17
-	Test Point 31 (2.60,0.77):
-		Incl   17, Excl   17
-	Node 32 (3.00,0.67):
-		Incl   17, Excl   22
-	Test Point 32 (3.10,0.77):
-		Incl   22, Excl   22
-	Node 33 (3.50,0.67):
-		Incl   22, Excl   24
-	Test Point 33 (3.60,0.77):
-		Incl   24, Excl   24
-	Node 34 (4.00,0.67):
-		Incl   24, Excl   24
-	Test Point 34 (4.10,0.77):
-		Incl   24, Excl   24
-	Node 35 (4.50,0.67):
-		Incl   24, Excl   24
-	Test Point 35 (4.60,0.77):
-		Incl   24, Excl   24
-	Node 36 (5.00,0.67):
-		Incl   24, Excl   24
-	Test Point 36 (5.10,0.77):
-		Incl   24, Excl   24
-	Node 37 (5.50,0.67):
-		Incl   23, Excl   23
-	Test Point 37 (5.60,0.77):
-		Incl   23, Excl   23
-	Node 38 (6.00,0.67):
-		Incl   23, Excl   23
-	Test Point 38 (6.10,0.77):
-		Incl   24, Excl   24
-	Node 39 (0.00,1.00):
-		Incl   12, Excl   12
-	Test Point 39 (0.10,1.10):
-		Incl   24, Excl   24
-	Node 40 (0.50,1.00):
-		Incl   13, Excl   13
-	Test Point 40 (0.60,1.10):
-		Incl   24, Excl   24
-	Node 41 (1.00,1.00):
-		Incl   14, Excl   14
-	Test Point 41 (1.10,1.10):
-		Incl   24, Excl   24
-	Node 42 (1.50,1.00):
-		Incl   15, Excl   15
-	Test Point 42 (1.60,1.10):
-		Incl   24, Excl   24
-	Node 43 (2.00,1.00):
-		Incl   16, Excl   16
-	Test Point 43 (2.10,1.10):
-		Incl   24, Excl   24
-	Node 44 (2.50,1.00):
-		Incl   17, Excl   17
-	Test Point 44 (2.60,1.10):
-		Incl   24, Excl   24
-	Node 45 (3.00,1.00):
-		Incl   17, Excl   22
-	Test Point 45 (3.10,1.10):
-		Incl   24, Excl   24
-	Node 46 (3.50,1.00):
-		Incl   22, Excl   24
-	Test Point 46 (3.60,1.10):
-		Incl   24, Excl   24
-	Node 47 (4.00,1.00):
-		Incl   24, Excl   24
-	Test Point 47 (4.10,1.10):
-		Incl   24, Excl   24
-	Node 48 (4.50,1.00):
-		Incl   24, Excl   24
-	Test Point 48 (4.60,1.10):
-		Incl   24, Excl   24
-	Node 49 (5.00,1.00):
-		Incl   24, Excl   24
-	Test Point 49 (5.10,1.10):
-		Incl   24, Excl   24
-	Node 50 (5.50,1.00):
-		Incl   23, Excl   23
-	Test Point 50 (5.60,1.10):
-		Incl   24, Excl   24
-	Node 51 (6.00,1.00):
-		Incl   23, Excl   23
-	Test Point 51 (6.10,1.10):
-		Incl   24, Excl   24
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,211 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl    0, Excl    0
-	Test Point 0 (0.10,0.10):
-		Incl    0, Excl    0
-	Node 1 (0.50,0.00):
-		Incl    1, Excl    1
-	Test Point 1 (0.60,0.10):
-		Incl    1, Excl    1
-	Node 2 (1.00,0.00):
-		Incl    2, Excl    2
-	Test Point 2 (1.10,0.10):
-		Incl    2, Excl    2
-	Node 3 (1.50,0.00):
-		Incl    3, Excl    3
-	Test Point 3 (1.60,0.10):
-		Incl    3, Excl    3
-	Node 4 (2.00,0.00):
-		Incl    3, Excl   12
-	Test Point 4 (2.10,0.10):
-		Incl   12, Excl   12
-	Node 5 (2.50,0.00):
-		Incl   12, Excl   18
-	Test Point 5 (2.60,0.10):
-		Incl   18, Excl   18
-	Node 6 (3.00,0.00):
-		Incl   18, Excl   18
-	Test Point 6 (3.10,0.10):
-		Incl   18, Excl   18
-	Node 7 (3.50,0.00):
-		Incl   18, Excl   18
-	Test Point 7 (3.60,0.10):
-		Incl   18, Excl   18
-	Node 8 (4.00,0.00):
-		Incl   18, Excl   18
-	Test Point 8 (4.10,0.10):
-		Incl   18, Excl   18
-	Node 9 (4.50,0.00):
-		Incl   18, Excl   18
-	Test Point 9 (4.60,0.10):
-		Incl   18, Excl   18
-	Node 10 (5.00,0.00):
-		Incl   18, Excl   18
-	Test Point 10 (5.10,0.10):
-		Incl   18, Excl   18
-	Node 11 (5.50,0.00):
-		Incl   13, Excl   13
-	Test Point 11 (5.60,0.10):
-		Incl   13, Excl   13
-	Node 12 (6.00,0.00):
-		Incl   13, Excl   13
-	Test Point 12 (6.10,0.10):
-		Incl   18, Excl   18
-	Node 13 (0.00,0.33):
-		Incl    4, Excl    4
-	Test Point 13 (0.10,0.43):
-		Incl    4, Excl    4
-	Node 14 (0.50,0.33):
-		Incl    5, Excl    5
-	Test Point 14 (0.60,0.43):
-		Incl    5, Excl    5
-	Node 15 (1.00,0.33):
-		Incl    6, Excl    6
-	Test Point 15 (1.10,0.43):
-		Incl    6, Excl    6
-	Node 16 (1.50,0.33):
-		Incl    7, Excl    7
-	Test Point 16 (1.60,0.43):
-		Incl    7, Excl    7
-	Node 17 (2.00,0.33):
-		Incl    7, Excl   14
-	Test Point 17 (2.10,0.43):
-		Incl   14, Excl   14
-	Node 18 (2.50,0.33):
-		Incl   14, Excl   18
-	Test Point 18 (2.60,0.43):
-		Incl   18, Excl   18
-	Node 19 (3.00,0.33):
-		Incl   18, Excl   18
-	Test Point 19 (3.10,0.43):
-		Incl   18, Excl   18
-	Node 20 (3.50,0.33):
-		Incl   18, Excl   18
-	Test Point 20 (3.60,0.43):
-		Incl   18, Excl   18
-	Node 21 (4.00,0.33):
-		Incl   18, Excl   18
-	Test Point 21 (4.10,0.43):
-		Incl   18, Excl   18
-	Node 22 (4.50,0.33):
-		Incl   18, Excl   18
-	Test Point 22 (4.60,0.43):
-		Incl   18, Excl   18
-	Node 23 (5.00,0.33):
-		Incl   18, Excl   18
-	Test Point 23 (5.10,0.43):
-		Incl   18, Excl   18
-	Node 24 (5.50,0.33):
-		Incl   15, Excl   15
-	Test Point 24 (5.60,0.43):
-		Incl   15, Excl   15
-	Node 25 (6.00,0.33):
-		Incl   15, Excl   15
-	Test Point 25 (6.10,0.43):
-		Incl   18, Excl   18
-	Node 26 (0.00,0.67):
-		Incl    8, Excl    8
-	Test Point 26 (0.10,0.77):
-		Incl    8, Excl    8
-	Node 27 (0.50,0.67):
-		Incl    9, Excl    9
-	Test Point 27 (0.60,0.77):
-		Incl    9, Excl    9
-	Node 28 (1.00,0.67):
-		Incl   10, Excl   10
-	Test Point 28 (1.10,0.77):
-		Incl   10, Excl   10
-	Node 29 (1.50,0.67):
-		Incl   11, Excl   11
-	Test Point 29 (1.60,0.77):
-		Incl   11, Excl   11
-	Node 30 (2.00,0.67):
-		Incl   11, Excl   16
-	Test Point 30 (2.10,0.77):
-		Incl   16, Excl   16
-	Node 31 (2.50,0.67):
-		Incl   16, Excl   18
-	Test Point 31 (2.60,0.77):
-		Incl   18, Excl   18
-	Node 32 (3.00,0.67):
-		Incl   18, Excl   18
-	Test Point 32 (3.10,0.77):
-		Incl   18, Excl   18
-	Node 33 (3.50,0.67):
-		Incl   18, Excl   18
-	Test Point 33 (3.60,0.77):
-		Incl   18, Excl   18
-	Node 34 (4.00,0.67):
-		Incl   18, Excl   18
-	Test Point 34 (4.10,0.77):
-		Incl   18, Excl   18
-	Node 35 (4.50,0.67):
-		Incl   18, Excl   18
-	Test Point 35 (4.60,0.77):
-		Incl   18, Excl   18
-	Node 36 (5.00,0.67):
-		Incl   18, Excl   18
-	Test Point 36 (5.10,0.77):
-		Incl   18, Excl   18
-	Node 37 (5.50,0.67):
-		Incl   17, Excl   17
-	Test Point 37 (5.60,0.77):
-		Incl   17, Excl   17
-	Node 38 (6.00,0.67):
-		Incl   17, Excl   17
-	Test Point 38 (6.10,0.77):
-		Incl   18, Excl   18
-	Node 39 (0.00,1.00):
-		Incl    8, Excl    8
-	Test Point 39 (0.10,1.10):
-		Incl   18, Excl   18
-	Node 40 (0.50,1.00):
-		Incl    9, Excl    9
-	Test Point 40 (0.60,1.10):
-		Incl   18, Excl   18
-	Node 41 (1.00,1.00):
-		Incl   10, Excl   10
-	Test Point 41 (1.10,1.10):
-		Incl   18, Excl   18
-	Node 42 (1.50,1.00):
-		Incl   11, Excl   11
-	Test Point 42 (1.60,1.10):
-		Incl   18, Excl   18
-	Node 43 (2.00,1.00):
-		Incl   11, Excl   16
-	Test Point 43 (2.10,1.10):
-		Incl   18, Excl   18
-	Node 44 (2.50,1.00):
-		Incl   16, Excl   18
-	Test Point 44 (2.60,1.10):
-		Incl   18, Excl   18
-	Node 45 (3.00,1.00):
-		Incl   18, Excl   18
-	Test Point 45 (3.10,1.10):
-		Incl   18, Excl   18
-	Node 46 (3.50,1.00):
-		Incl   18, Excl   18
-	Test Point 46 (3.60,1.10):
-		Incl   18, Excl   18
-	Node 47 (4.00,1.00):
-		Incl   18, Excl   18
-	Test Point 47 (4.10,1.10):
-		Incl   18, Excl   18
-	Node 48 (4.50,1.00):
-		Incl   18, Excl   18
-	Test Point 48 (4.60,1.10):
-		Incl   18, Excl   18
-	Node 49 (5.00,1.00):
-		Incl   18, Excl   18
-	Test Point 49 (5.10,1.10):
-		Incl   18, Excl   18
-	Node 50 (5.50,1.00):
-		Incl   17, Excl   17
-	Test Point 50 (5.60,1.10):
-		Incl   18, Excl   18
-	Node 51 (6.00,1.00):
-		Incl   17, Excl   17
-	Test Point 51 (6.10,1.10):
-		Incl   18, Excl   18
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.0of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,211 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl   18, Excl   18
-	Test Point 0 (0.10,0.10):
-		Incl   18, Excl   18
-	Node 1 (0.50,0.00):
-		Incl   18, Excl   24
-	Test Point 1 (0.60,0.10):
-		Incl   24, Excl   24
-	Node 2 (1.00,0.00):
-		Incl   24, Excl   24
-	Test Point 2 (1.10,0.10):
-		Incl   24, Excl   24
-	Node 3 (1.50,0.00):
-		Incl   24, Excl   24
-	Test Point 3 (1.60,0.10):
-		Incl   24, Excl   24
-	Node 4 (2.00,0.00):
-		Incl   24, Excl   24
-	Test Point 4 (2.10,0.10):
-		Incl   24, Excl   24
-	Node 5 (2.50,0.00):
-		Incl   19, Excl   19
-	Test Point 5 (2.60,0.10):
-		Incl   19, Excl   19
-	Node 6 (3.00,0.00):
-		Incl    0, Excl    0
-	Test Point 6 (3.10,0.10):
-		Incl    0, Excl    0
-	Node 7 (3.50,0.00):
-		Incl    1, Excl    1
-	Test Point 7 (3.60,0.10):
-		Incl    1, Excl    1
-	Node 8 (4.00,0.00):
-		Incl    2, Excl    2
-	Test Point 8 (4.10,0.10):
-		Incl    2, Excl    2
-	Node 9 (4.50,0.00):
-		Incl    3, Excl    3
-	Test Point 9 (4.60,0.10):
-		Incl    3, Excl    3
-	Node 10 (5.00,0.00):
-		Incl    4, Excl    4
-	Test Point 10 (5.10,0.10):
-		Incl    4, Excl    4
-	Node 11 (5.50,0.00):
-		Incl    5, Excl    5
-	Test Point 11 (5.60,0.10):
-		Incl    5, Excl    5
-	Node 12 (6.00,0.00):
-		Incl    5, Excl    5
-	Test Point 12 (6.10,0.10):
-		Incl   24, Excl   24
-	Node 13 (0.00,0.33):
-		Incl   20, Excl   20
-	Test Point 13 (0.10,0.43):
-		Incl   20, Excl   20
-	Node 14 (0.50,0.33):
-		Incl   20, Excl   24
-	Test Point 14 (0.60,0.43):
-		Incl   24, Excl   24
-	Node 15 (1.00,0.33):
-		Incl   24, Excl   24
-	Test Point 15 (1.10,0.43):
-		Incl   24, Excl   24
-	Node 16 (1.50,0.33):
-		Incl   24, Excl   24
-	Test Point 16 (1.60,0.43):
-		Incl   24, Excl   24
-	Node 17 (2.00,0.33):
-		Incl   24, Excl   24
-	Test Point 17 (2.10,0.43):
-		Incl   24, Excl   24
-	Node 18 (2.50,0.33):
-		Incl   21, Excl   21
-	Test Point 18 (2.60,0.43):
-		Incl   21, Excl   21
-	Node 19 (3.00,0.33):
-		Incl    6, Excl    6
-	Test Point 19 (3.10,0.43):
-		Incl    6, Excl    6
-	Node 20 (3.50,0.33):
-		Incl    7, Excl    7
-	Test Point 20 (3.60,0.43):
-		Incl    7, Excl    7
-	Node 21 (4.00,0.33):
-		Incl    8, Excl    8
-	Test Point 21 (4.10,0.43):
-		Incl    8, Excl    8
-	Node 22 (4.50,0.33):
-		Incl    9, Excl    9
-	Test Point 22 (4.60,0.43):
-		Incl    9, Excl    9
-	Node 23 (5.00,0.33):
-		Incl   10, Excl   10
-	Test Point 23 (5.10,0.43):
-		Incl   10, Excl   10
-	Node 24 (5.50,0.33):
-		Incl   11, Excl   11
-	Test Point 24 (5.60,0.43):
-		Incl   11, Excl   11
-	Node 25 (6.00,0.33):
-		Incl   11, Excl   11
-	Test Point 25 (6.10,0.43):
-		Incl   24, Excl   24
-	Node 26 (0.00,0.67):
-		Incl   22, Excl   22
-	Test Point 26 (0.10,0.77):
-		Incl   22, Excl   22
-	Node 27 (0.50,0.67):
-		Incl   22, Excl   24
-	Test Point 27 (0.60,0.77):
-		Incl   24, Excl   24
-	Node 28 (1.00,0.67):
-		Incl   24, Excl   24
-	Test Point 28 (1.10,0.77):
-		Incl   24, Excl   24
-	Node 29 (1.50,0.67):
-		Incl   24, Excl   24
-	Test Point 29 (1.60,0.77):
-		Incl   24, Excl   24
-	Node 30 (2.00,0.67):
-		Incl   24, Excl   24
-	Test Point 30 (2.10,0.77):
-		Incl   24, Excl   24
-	Node 31 (2.50,0.67):
-		Incl   23, Excl   23
-	Test Point 31 (2.60,0.77):
-		Incl   23, Excl   23
-	Node 32 (3.00,0.67):
-		Incl   12, Excl   12
-	Test Point 32 (3.10,0.77):
-		Incl   12, Excl   12
-	Node 33 (3.50,0.67):
-		Incl   13, Excl   13
-	Test Point 33 (3.60,0.77):
-		Incl   13, Excl   13
-	Node 34 (4.00,0.67):
-		Incl   14, Excl   14
-	Test Point 34 (4.10,0.77):
-		Incl   14, Excl   14
-	Node 35 (4.50,0.67):
-		Incl   15, Excl   15
-	Test Point 35 (4.60,0.77):
-		Incl   15, Excl   15
-	Node 36 (5.00,0.67):
-		Incl   16, Excl   16
-	Test Point 36 (5.10,0.77):
-		Incl   16, Excl   16
-	Node 37 (5.50,0.67):
-		Incl   17, Excl   17
-	Test Point 37 (5.60,0.77):
-		Incl   17, Excl   17
-	Node 38 (6.00,0.67):
-		Incl   17, Excl   17
-	Test Point 38 (6.10,0.77):
-		Incl   24, Excl   24
-	Node 39 (0.00,1.00):
-		Incl   22, Excl   22
-	Test Point 39 (0.10,1.10):
-		Incl   24, Excl   24
-	Node 40 (0.50,1.00):
-		Incl   22, Excl   24
-	Test Point 40 (0.60,1.10):
-		Incl   24, Excl   24
-	Node 41 (1.00,1.00):
-		Incl   24, Excl   24
-	Test Point 41 (1.10,1.10):
-		Incl   24, Excl   24
-	Node 42 (1.50,1.00):
-		Incl   24, Excl   24
-	Test Point 42 (1.60,1.10):
-		Incl   24, Excl   24
-	Node 43 (2.00,1.00):
-		Incl   24, Excl   24
-	Test Point 43 (2.10,1.10):
-		Incl   24, Excl   24
-	Node 44 (2.50,1.00):
-		Incl   23, Excl   23
-	Test Point 44 (2.60,1.10):
-		Incl   24, Excl   24
-	Node 45 (3.00,1.00):
-		Incl   12, Excl   12
-	Test Point 45 (3.10,1.10):
-		Incl   24, Excl   24
-	Node 46 (3.50,1.00):
-		Incl   13, Excl   13
-	Test Point 46 (3.60,1.10):
-		Incl   24, Excl   24
-	Node 47 (4.00,1.00):
-		Incl   14, Excl   14
-	Test Point 47 (4.10,1.10):
-		Incl   24, Excl   24
-	Node 48 (4.50,1.00):
-		Incl   15, Excl   15
-	Test Point 48 (4.60,1.10):
-		Incl   24, Excl   24
-	Node 49 (5.00,1.00):
-		Incl   16, Excl   16
-	Test Point 49 (5.10,1.10):
-		Incl   24, Excl   24
-	Node 50 (5.50,1.00):
-		Incl   17, Excl   17
-	Test Point 50 (5.60,1.10):
-		Incl   24, Excl   24
-	Node 51 (6.00,1.00):
-		Incl   17, Excl   17
-	Test Point 51 (6.10,1.10):
-		Incl   24, Excl   24
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,211 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl   18, Excl   18
-	Test Point 0 (0.10,0.10):
-		Incl   18, Excl   18
-	Node 1 (0.50,0.00):
-		Incl   18, Excl   18
-	Test Point 1 (0.60,0.10):
-		Incl   18, Excl   18
-	Node 2 (1.00,0.00):
-		Incl   18, Excl   18
-	Test Point 2 (1.10,0.10):
-		Incl   18, Excl   18
-	Node 3 (1.50,0.00):
-		Incl   12, Excl   12
-	Test Point 3 (1.60,0.10):
-		Incl   12, Excl   12
-	Node 4 (2.00,0.00):
-		Incl    0, Excl    0
-	Test Point 4 (2.10,0.10):
-		Incl    0, Excl    0
-	Node 5 (2.50,0.00):
-		Incl    1, Excl    1
-	Test Point 5 (2.60,0.10):
-		Incl    1, Excl    1
-	Node 6 (3.00,0.00):
-		Incl    2, Excl    2
-	Test Point 6 (3.10,0.10):
-		Incl    2, Excl    2
-	Node 7 (3.50,0.00):
-		Incl    3, Excl    3
-	Test Point 7 (3.60,0.10):
-		Incl    3, Excl    3
-	Node 8 (4.00,0.00):
-		Incl    3, Excl   13
-	Test Point 8 (4.10,0.10):
-		Incl   13, Excl   13
-	Node 9 (4.50,0.00):
-		Incl   13, Excl   18
-	Test Point 9 (4.60,0.10):
-		Incl   18, Excl   18
-	Node 10 (5.00,0.00):
-		Incl   18, Excl   18
-	Test Point 10 (5.10,0.10):
-		Incl   18, Excl   18
-	Node 11 (5.50,0.00):
-		Incl   18, Excl   18
-	Test Point 11 (5.60,0.10):
-		Incl   18, Excl   18
-	Node 12 (6.00,0.00):
-		Incl   18, Excl   18
-	Test Point 12 (6.10,0.10):
-		Incl   18, Excl   18
-	Node 13 (0.00,0.33):
-		Incl   18, Excl   18
-	Test Point 13 (0.10,0.43):
-		Incl   18, Excl   18
-	Node 14 (0.50,0.33):
-		Incl   18, Excl   18
-	Test Point 14 (0.60,0.43):
-		Incl   18, Excl   18
-	Node 15 (1.00,0.33):
-		Incl   18, Excl   18
-	Test Point 15 (1.10,0.43):
-		Incl   18, Excl   18
-	Node 16 (1.50,0.33):
-		Incl   14, Excl   14
-	Test Point 16 (1.60,0.43):
-		Incl   14, Excl   14
-	Node 17 (2.00,0.33):
-		Incl    4, Excl    4
-	Test Point 17 (2.10,0.43):
-		Incl    4, Excl    4
-	Node 18 (2.50,0.33):
-		Incl    5, Excl    5
-	Test Point 18 (2.60,0.43):
-		Incl    5, Excl    5
-	Node 19 (3.00,0.33):
-		Incl    6, Excl    6
-	Test Point 19 (3.10,0.43):
-		Incl    6, Excl    6
-	Node 20 (3.50,0.33):
-		Incl    7, Excl    7
-	Test Point 20 (3.60,0.43):
-		Incl    7, Excl    7
-	Node 21 (4.00,0.33):
-		Incl    7, Excl   15
-	Test Point 21 (4.10,0.43):
-		Incl   15, Excl   15
-	Node 22 (4.50,0.33):
-		Incl   15, Excl   18
-	Test Point 22 (4.60,0.43):
-		Incl   18, Excl   18
-	Node 23 (5.00,0.33):
-		Incl   18, Excl   18
-	Test Point 23 (5.10,0.43):
-		Incl   18, Excl   18
-	Node 24 (5.50,0.33):
-		Incl   18, Excl   18
-	Test Point 24 (5.60,0.43):
-		Incl   18, Excl   18
-	Node 25 (6.00,0.33):
-		Incl   18, Excl   18
-	Test Point 25 (6.10,0.43):
-		Incl   18, Excl   18
-	Node 26 (0.00,0.67):
-		Incl   18, Excl   18
-	Test Point 26 (0.10,0.77):
-		Incl   18, Excl   18
-	Node 27 (0.50,0.67):
-		Incl   18, Excl   18
-	Test Point 27 (0.60,0.77):
-		Incl   18, Excl   18
-	Node 28 (1.00,0.67):
-		Incl   18, Excl   18
-	Test Point 28 (1.10,0.77):
-		Incl   18, Excl   18
-	Node 29 (1.50,0.67):
-		Incl   16, Excl   16
-	Test Point 29 (1.60,0.77):
-		Incl   16, Excl   16
-	Node 30 (2.00,0.67):
-		Incl    8, Excl    8
-	Test Point 30 (2.10,0.77):
-		Incl    8, Excl    8
-	Node 31 (2.50,0.67):
-		Incl    9, Excl    9
-	Test Point 31 (2.60,0.77):
-		Incl    9, Excl    9
-	Node 32 (3.00,0.67):
-		Incl   10, Excl   10
-	Test Point 32 (3.10,0.77):
-		Incl   10, Excl   10
-	Node 33 (3.50,0.67):
-		Incl   11, Excl   11
-	Test Point 33 (3.60,0.77):
-		Incl   11, Excl   11
-	Node 34 (4.00,0.67):
-		Incl   11, Excl   17
-	Test Point 34 (4.10,0.77):
-		Incl   17, Excl   17
-	Node 35 (4.50,0.67):
-		Incl   17, Excl   18
-	Test Point 35 (4.60,0.77):
-		Incl   18, Excl   18
-	Node 36 (5.00,0.67):
-		Incl   18, Excl   18
-	Test Point 36 (5.10,0.77):
-		Incl   18, Excl   18
-	Node 37 (5.50,0.67):
-		Incl   18, Excl   18
-	Test Point 37 (5.60,0.77):
-		Incl   18, Excl   18
-	Node 38 (6.00,0.67):
-		Incl   18, Excl   18
-	Test Point 38 (6.10,0.77):
-		Incl   18, Excl   18
-	Node 39 (0.00,1.00):
-		Incl   18, Excl   18
-	Test Point 39 (0.10,1.10):
-		Incl   18, Excl   18
-	Node 40 (0.50,1.00):
-		Incl   18, Excl   18
-	Test Point 40 (0.60,1.10):
-		Incl   18, Excl   18
-	Node 41 (1.00,1.00):
-		Incl   18, Excl   18
-	Test Point 41 (1.10,1.10):
-		Incl   18, Excl   18
-	Node 42 (1.50,1.00):
-		Incl   16, Excl   16
-	Test Point 42 (1.60,1.10):
-		Incl   18, Excl   18
-	Node 43 (2.00,1.00):
-		Incl    8, Excl    8
-	Test Point 43 (2.10,1.10):
-		Incl   18, Excl   18
-	Node 44 (2.50,1.00):
-		Incl    9, Excl    9
-	Test Point 44 (2.60,1.10):
-		Incl   18, Excl   18
-	Node 45 (3.00,1.00):
-		Incl   10, Excl   10
-	Test Point 45 (3.10,1.10):
-		Incl   18, Excl   18
-	Node 46 (3.50,1.00):
-		Incl   11, Excl   11
-	Test Point 46 (3.60,1.10):
-		Incl   18, Excl   18
-	Node 47 (4.00,1.00):
-		Incl   11, Excl   17
-	Test Point 47 (4.10,1.10):
-		Incl   18, Excl   18
-	Node 48 (4.50,1.00):
-		Incl   17, Excl   18
-	Test Point 48 (4.60,1.10):
-		Incl   18, Excl   18
-	Node 49 (5.00,1.00):
-		Incl   18, Excl   18
-	Test Point 49 (5.10,1.10):
-		Incl   18, Excl   18
-	Node 50 (5.50,1.00):
-		Incl   18, Excl   18
-	Test Point 50 (5.60,1.10):
-		Incl   18, Excl   18
-	Node 51 (6.00,1.00):
-		Incl   18, Excl   18
-	Test Point 51 (6.10,1.10):
-		Incl   18, Excl   18
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.1of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,211 +0,0 @@
-StGermain Framework revision 3473. Copyright (C) 2003-2005 VPAC.
-Element with point:
-	Node 0 (0.00,0.00):
-		Incl   12, Excl   12
-	Test Point 0 (0.10,0.10):
-		Incl   12, Excl   12
-	Node 1 (0.50,0.00):
-		Incl   12, Excl   18
-	Test Point 1 (0.60,0.10):
-		Incl   18, Excl   18
-	Node 2 (1.00,0.00):
-		Incl   18, Excl   18
-	Test Point 2 (1.10,0.10):
-		Incl   18, Excl   18
-	Node 3 (1.50,0.00):
-		Incl   18, Excl   18
-	Test Point 3 (1.60,0.10):
-		Incl   18, Excl   18
-	Node 4 (2.00,0.00):
-		Incl   18, Excl   18
-	Test Point 4 (2.10,0.10):
-		Incl   18, Excl   18
-	Node 5 (2.50,0.00):
-		Incl   18, Excl   18
-	Test Point 5 (2.60,0.10):
-		Incl   18, Excl   18
-	Node 6 (3.00,0.00):
-		Incl   18, Excl   18
-	Test Point 6 (3.10,0.10):
-		Incl   18, Excl   18
-	Node 7 (3.50,0.00):
-		Incl   13, Excl   13
-	Test Point 7 (3.60,0.10):
-		Incl   13, Excl   13
-	Node 8 (4.00,0.00):
-		Incl    0, Excl    0
-	Test Point 8 (4.10,0.10):
-		Incl    0, Excl    0
-	Node 9 (4.50,0.00):
-		Incl    1, Excl    1
-	Test Point 9 (4.60,0.10):
-		Incl    1, Excl    1
-	Node 10 (5.00,0.00):
-		Incl    2, Excl    2
-	Test Point 10 (5.10,0.10):
-		Incl    2, Excl    2
-	Node 11 (5.50,0.00):
-		Incl    3, Excl    3
-	Test Point 11 (5.60,0.10):
-		Incl    3, Excl    3
-	Node 12 (6.00,0.00):
-		Incl    3, Excl    3
-	Test Point 12 (6.10,0.10):
-		Incl   18, Excl   18
-	Node 13 (0.00,0.33):
-		Incl   14, Excl   14
-	Test Point 13 (0.10,0.43):
-		Incl   14, Excl   14
-	Node 14 (0.50,0.33):
-		Incl   14, Excl   18
-	Test Point 14 (0.60,0.43):
-		Incl   18, Excl   18
-	Node 15 (1.00,0.33):
-		Incl   18, Excl   18
-	Test Point 15 (1.10,0.43):
-		Incl   18, Excl   18
-	Node 16 (1.50,0.33):
-		Incl   18, Excl   18
-	Test Point 16 (1.60,0.43):
-		Incl   18, Excl   18
-	Node 17 (2.00,0.33):
-		Incl   18, Excl   18
-	Test Point 17 (2.10,0.43):
-		Incl   18, Excl   18
-	Node 18 (2.50,0.33):
-		Incl   18, Excl   18
-	Test Point 18 (2.60,0.43):
-		Incl   18, Excl   18
-	Node 19 (3.00,0.33):
-		Incl   18, Excl   18
-	Test Point 19 (3.10,0.43):
-		Incl   18, Excl   18
-	Node 20 (3.50,0.33):
-		Incl   15, Excl   15
-	Test Point 20 (3.60,0.43):
-		Incl   15, Excl   15
-	Node 21 (4.00,0.33):
-		Incl    4, Excl    4
-	Test Point 21 (4.10,0.43):
-		Incl    4, Excl    4
-	Node 22 (4.50,0.33):
-		Incl    5, Excl    5
-	Test Point 22 (4.60,0.43):
-		Incl    5, Excl    5
-	Node 23 (5.00,0.33):
-		Incl    6, Excl    6
-	Test Point 23 (5.10,0.43):
-		Incl    6, Excl    6
-	Node 24 (5.50,0.33):
-		Incl    7, Excl    7
-	Test Point 24 (5.60,0.43):
-		Incl    7, Excl    7
-	Node 25 (6.00,0.33):
-		Incl    7, Excl    7
-	Test Point 25 (6.10,0.43):
-		Incl   18, Excl   18
-	Node 26 (0.00,0.67):
-		Incl   16, Excl   16
-	Test Point 26 (0.10,0.77):
-		Incl   16, Excl   16
-	Node 27 (0.50,0.67):
-		Incl   16, Excl   18
-	Test Point 27 (0.60,0.77):
-		Incl   18, Excl   18
-	Node 28 (1.00,0.67):
-		Incl   18, Excl   18
-	Test Point 28 (1.10,0.77):
-		Incl   18, Excl   18
-	Node 29 (1.50,0.67):
-		Incl   18, Excl   18
-	Test Point 29 (1.60,0.77):
-		Incl   18, Excl   18
-	Node 30 (2.00,0.67):
-		Incl   18, Excl   18
-	Test Point 30 (2.10,0.77):
-		Incl   18, Excl   18
-	Node 31 (2.50,0.67):
-		Incl   18, Excl   18
-	Test Point 31 (2.60,0.77):
-		Incl   18, Excl   18
-	Node 32 (3.00,0.67):
-		Incl   18, Excl   18
-	Test Point 32 (3.10,0.77):
-		Incl   18, Excl   18
-	Node 33 (3.50,0.67):
-		Incl   17, Excl   17
-	Test Point 33 (3.60,0.77):
-		Incl   17, Excl   17
-	Node 34 (4.00,0.67):
-		Incl    8, Excl    8
-	Test Point 34 (4.10,0.77):
-		Incl    8, Excl    8
-	Node 35 (4.50,0.67):
-		Incl    9, Excl    9
-	Test Point 35 (4.60,0.77):
-		Incl    9, Excl    9
-	Node 36 (5.00,0.67):
-		Incl   10, Excl   10
-	Test Point 36 (5.10,0.77):
-		Incl   10, Excl   10
-	Node 37 (5.50,0.67):
-		Incl   11, Excl   11
-	Test Point 37 (5.60,0.77):
-		Incl   11, Excl   11
-	Node 38 (6.00,0.67):
-		Incl   11, Excl   11
-	Test Point 38 (6.10,0.77):
-		Incl   18, Excl   18
-	Node 39 (0.00,1.00):
-		Incl   16, Excl   16
-	Test Point 39 (0.10,1.10):
-		Incl   18, Excl   18
-	Node 40 (0.50,1.00):
-		Incl   16, Excl   18
-	Test Point 40 (0.60,1.10):
-		Incl   18, Excl   18
-	Node 41 (1.00,1.00):
-		Incl   18, Excl   18
-	Test Point 41 (1.10,1.10):
-		Incl   18, Excl   18
-	Node 42 (1.50,1.00):
-		Incl   18, Excl   18
-	Test Point 42 (1.60,1.10):
-		Incl   18, Excl   18
-	Node 43 (2.00,1.00):
-		Incl   18, Excl   18
-	Test Point 43 (2.10,1.10):
-		Incl   18, Excl   18
-	Node 44 (2.50,1.00):
-		Incl   18, Excl   18
-	Test Point 44 (2.60,1.10):
-		Incl   18, Excl   18
-	Node 45 (3.00,1.00):
-		Incl   18, Excl   18
-	Test Point 45 (3.10,1.10):
-		Incl   18, Excl   18
-	Node 46 (3.50,1.00):
-		Incl   17, Excl   17
-	Test Point 46 (3.60,1.10):
-		Incl   18, Excl   18
-	Node 47 (4.00,1.00):
-		Incl    8, Excl    8
-	Test Point 47 (4.10,1.10):
-		Incl   18, Excl   18
-	Node 48 (4.50,1.00):
-		Incl    9, Excl    9
-	Test Point 48 (4.60,1.10):
-		Incl   18, Excl   18
-	Node 49 (5.00,1.00):
-		Incl   10, Excl   10
-	Test Point 49 (5.10,1.10):
-		Incl   18, Excl   18
-	Node 50 (5.50,1.00):
-		Incl   11, Excl   11
-	Test Point 50 (5.60,1.10):
-		Incl   18, Excl   18
-	Node 51 (6.00,1.00):
-		Incl   11, Excl   11
-	Test Point 51 (6.10,1.10):
-		Incl   18, Excl   18
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.2of3.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testParallelPipedQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testParallelPipedQuadEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,138 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
-	Geometry*		geometry;
-	ElementLayout*		eLayout;
-	Topology*		nTopology;
-	NodeLayout*		nLayout;
-	MeshDecomp*		meshDecomp;	
-	Index			i;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 13 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromUnsignedInt( 6 ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "isPeriodicI", Dictionary_Entry_Value_FromBool( True ) );
-	
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPQuadEL", 2, dictionary );
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	meshDecomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-
-	ElementLayout_Build( eLayout, meshDecomp );
-
-	if (rank == procToWatch) {
-		printf( "Element with point:\n" );
-	}
-	geometry = eLayout->geometry;
-	for( i = 0; i < geometry->pointCount; i++ ) {
-		Coord point;
-		Index excEl, incEl;
-		
-		geometry->pointAt( geometry, i, point );
-
-		if (rank == procToWatch) {
-			printf( "\tNode %u (%0.2f,%0.2f):\n", i, point[0], point[1] );
-			excEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			incEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   INCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			printf( "\t\tIncl %4u, Excl %4u\n", incEl, excEl );
-		}
-
-		point[0] += 0.1;
-		point[1] += 0.1;
-		point[2] += 0.1;
-		
-		if (rank == procToWatch) {
-			printf( "\tTest Point %u (%0.2f,%0.2f):\n", i, point[0], point[1] );
-			excEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			incEl = eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-							   INCLUSIVE_UPPER_BOUNDARY, 0, NULL );
-			printf( "\t\tIncl %4u, Excl %4u\n", incEl, excEl );
-		}
-	}
-	if (rank == procToWatch) {
-		printf( "\n" );
-	}	
-	
-	Stg_Class_Delete( dictionary );
-	Stg_Class_Delete( meshDecomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( eLayout );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,47 +0,0 @@
-Element corner indices:
-	Element 0 : { 0, 1, 5, 4 }
-	Element 1 : { 1, 2, 6, 5 }
-	Element 2 : { 2, 3, 7, 6 }
-	Element 3 : { 4, 5, 9, 8 }
-	Element 4 : { 5, 6, 10, 9 }
-	Element 5 : { 6, 7, 11, 10 }
-	Element 6 : { 8, 9, 13, 12 }
-	Element 7 : { 9, 10, 14, 13 }
-	Element 8 : { 10, 11, 15, 14 }
-
-Corner element indices:
-	Corner 0 : { 9, 9, 9, 0 }
-	Corner 1 : { 9, 9, 0, 1 }
-	Corner 2 : { 9, 9, 1, 2 }
-	Corner 3 : { 9, 9, 2, 9 }
-	Corner 4 : { 9, 0, 9, 3 }
-	Corner 5 : { 0, 1, 3, 4 }
-	Corner 6 : { 1, 2, 4, 5 }
-	Corner 7 : { 2, 9, 5, 9 }
-	Corner 8 : { 9, 3, 9, 6 }
-	Corner 9 : { 3, 4, 6, 7 }
-	Corner 10 : { 4, 5, 7, 8 }
-	Corner 11 : { 5, 9, 8, 9 }
-	Corner 12 : { 9, 6, 9, 9 }
-	Corner 13 : { 6, 7, 9, 9 }
-	Corner 14 : { 7, 8, 9, 9 }
-	Corner 15 : { 8, 9, 9, 9 }
-
-Element with point:
-	Point 0 : 0
-	Point 1 : 1
-	Point 2 : 2
-	Point 3 : 9
-	Point 4 : 3
-	Point 5 : 4
-	Point 6 : 5
-	Point 7 : 9
-	Point 8 : 6
-	Point 9 : 7
-	Point 10 : 8
-	Point 11 : 9
-	Point 12 : 9
-	Point 13 : 9
-	Point 14 : 9
-	Point 15 : 9
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testQuadEL " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testQuadEL.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,140 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-
-int main( int argc, char* argv[] ) {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	Dictionary*		dictionary;
-	Geometry*		geometry;
-	ElementLayout*		eLayout;
-	Topology*		nTopology;
-	NodeLayout*		nLayout;
-	HexaMD*			meshDecomp;
-	Element_GlobalIndex	e_I;
-	Index			i;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size(CommWorld, &procCount);
-	MPI_Comm_rank(CommWorld, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	geometry = (Geometry*)BlockGeometry_New( "blockGeometry", dictionary );
-	eLayout = (ElementLayout*)HexaEL_New( "QuadEL", 2, dictionary, geometry );
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	meshDecomp = HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-
-	ElementLayout_Build( eLayout, meshDecomp );
-	
-	printf( "Element corner indices:\n" );
-	for( e_I = 0; e_I < eLayout->elementCount; e_I++ ) {
-		Index* corners = Memory_Alloc_Array( Index, eLayout->elementCornerCount, "corners" );
-		
-		eLayout->buildCornerIndices( eLayout, e_I, corners );
-		
-		printf( "\tElement %u : { %u", e_I, corners[0] );
-		for( i = 1; i < eLayout->elementCornerCount; i++ )
-			printf( ", %u", corners[i] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	printf( "Corner element indices:\n" );
-	for( i = 0; i < eLayout->cornerCount; i++ ) {
-		Element_GlobalIndex	elementCnt = eLayout->cornerElementCount( eLayout, i );
-		Element_GlobalIndex*	elements = Memory_Alloc_Array( Element_GlobalIndex, elementCnt, "elements" );
-		
-		eLayout->buildCornerElements( eLayout, i, elements );
-		
-		printf( "\tCorner %u : { %u", i, elements[0] );
-		for( e_I = 1; e_I < elementCnt; e_I++ )
-			printf( ", %u", elements[e_I] );
-		printf( " }\n" );
-	}
-	printf( "\n" );
-	
-	printf( "Element with point:\n" );
-	for( i = 0; i < geometry->pointCount; i++ ) {
-		Coord point;
-		
-		geometry->pointAt( geometry, i, point );
-		point[0] += 0.1;
-		point[1] += 0.1;
-		point[2] += 0.1;
-		
-		printf( "\tPoint %u : %u\n", i, eLayout->elementWithPoint( eLayout, meshDecomp, point, NULL, 
-									   EXCLUSIVE_UPPER_BOUNDARY, 0, NULL ) );
-	}
-	printf( "\n" );
-	
-	Stg_Class_Delete( dictionary );
-	Stg_Class_Delete( meshDecomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( nTopology );
-
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( geometry );
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0;
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,414 +0,0 @@
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 0
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.000000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.000000, 0.000000}
-Node 1 : {0.750000, 0.000000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.500000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.500000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.500000, 0.000000}
-Node 1 : {0.750000, 0.500000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.250000, 0.000000}
-Node 1 : {0.000000, 0.750000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.250000, 0.000000}
-Node 1 : {0.500000, 0.750000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.250000, 0.000000}
-Node 1 : {0.750000, 0.250000, 0.000000}
-Node 2 : {0.250000, 0.750000, 0.000000}
-Node 3 : {0.750000, 0.750000, 0.000000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.000000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.000000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.000000, 0.500000}
-Node 1 : {0.750000, 0.000000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.500000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 1
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.500000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.500000, 0.500000}
-Node 1 : {0.750000, 0.500000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.250000, 0.500000}
-Node 1 : {0.000000, 0.750000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.250000, 0.500000}
-Node 1 : {0.500000, 0.750000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.250000, 0.500000}
-Node 1 : {0.750000, 0.250000, 0.500000}
-Node 2 : {0.250000, 0.750000, 0.500000}
-Node 3 : {0.750000, 0.750000, 0.500000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.000000, 0.250000}
-Node 1 : {0.000000, 0.000000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.000000, 0.250000}
-Node 1 : {0.500000, 0.000000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.000000, 0.250000}
-Node 1 : {0.750000, 0.000000, 0.250000}
-Node 2 : {0.250000, 0.000000, 0.750000}
-Node 3 : {0.750000, 0.000000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.500000, 0.250000}
-Node 1 : {0.000000, 0.500000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 2
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.500000, 0.250000}
-Node 1 : {0.500000, 0.500000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.500000, 0.250000}
-Node 1 : {0.750000, 0.500000, 0.250000}
-Node 2 : {0.250000, 0.500000, 0.750000}
-Node 3 : {0.750000, 0.500000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.000000, 0.250000, 0.250000}
-Node 1 : {0.000000, 0.750000, 0.250000}
-Node 2 : {0.000000, 0.250000, 0.750000}
-Node 3 : {0.000000, 0.750000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 4
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.500000, 0.250000, 0.250000}
-Node 1 : {0.500000, 0.750000, 0.250000}
-Node 2 : {0.500000, 0.250000, 0.750000}
-Node 3 : {0.500000, 0.750000, 0.750000}
-
-SingleCellMeshGeometry (ptr): 0x80c48f8
-	layout (ptr): 0x80c48d0
-MeshGeometry (ptr): 0x80c48f8
-	buildNodes (func ptr): 0x804f514
-	nodeAt (func ptr): 0x804f56e
-	nodeCount: 8
-Class (ptr): 0x80c48f8
-	sizeOfSelf: 36
-	_deleteSelf: True
-	type: SingleCellMeshGeometry
-	_delete (func ptr): 0x804f46c
-	_print (func ptr): 0x804f498
-Node 0 : {0.250000, 0.250000, 0.250000}
-Node 1 : {0.750000, 0.250000, 0.250000}
-Node 2 : {0.250000, 0.750000, 0.250000}
-Node 3 : {0.750000, 0.750000, 0.250000}
-Node 4 : {0.250000, 0.250000, 0.750000}
-Node 5 : {0.750000, 0.250000, 0.750000}
-Node 6 : {0.250000, 0.750000, 0.750000}
-Node 7 : {0.750000, 0.750000, 0.750000}
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testSingleCellMeshGeometry " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testSingleCellMeshGeometry.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,124 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-
-int main( int argc, char *argv[] ) {
-	int		rank;
-	int		procCount;
-	int		procToWatch;
-	
-	Dictionary	*dictionary;
-	MeshTopology	*pmt;
-	MeshGeometry	*mg, *pmg;
-	MeshDecomp	*pmd;
-	MeshLayout	*pml;
-	Coord		coord;
-	Node_Index	sizeI, sizeJ, sizeK;
-	Index		i;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init(&argc, &argv);
-	MPI_Comm_size(MPI_COMM_WORLD, &procCount);
-	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
-
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-
-	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
-	
-	/* Read input */
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	for (sizeK = 1; sizeK < 4; sizeK++) {
-		for (sizeJ = 1; sizeJ < 4; sizeJ++) {
-			for (sizeI = 1; sizeI < 4; sizeI++) {
-				Dictionary_Set( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( sizeI ) );
-				Dictionary_Set( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( sizeJ ) );
-				Dictionary_Set( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( sizeK ) );
-				
-				pmt = (MeshTopology*)HexaMeshTopology_New(dictionary);
-				pmg = (MeshGeometry*)HexaMeshGeometry_New(dictionary);
-				pmd = (MeshDecomp*)RegularMeshDecomp_New(dictionary, MPI_COMM_WORLD, pmt);
-				pml = (MeshLayout*)MeshLayout_New(pmt, pmg, pmd);
-				
-				mg = (MeshGeometry *)SingleCellMeshGeometry_New(pml);
-				
-				Print(mg);
-	
-				for (i = 0; i < mg->nodeCount; i++)
-				{
-					printf("Node %u : ", i);
-					mg->nodeAt(mg, i, coord);
-					printf("{%lf, %lf, %lf}\n", coord[0], coord[1], coord[2]);
-				}
-				printf("\n");
-				
-				Stg_Class_Delete(mg);
-				Stg_Class_Delete(pml);
-				Stg_Class_Delete(pmd);
-				Stg_Class_Delete(pmg);
-				Stg_Class_Delete(pmt);
-			}
-		}
-	}
-	
-	/* Destroy stuff */
-	Stg_Class_Delete(dictionary);
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,66 +0,0 @@
-TriSurfGeometry (ptr): 0x8066de8
-	dictionary (ptr): 0x8054b98
-	listKey (ptr): 0x8051259
-		listKey: imNodes
-	nodeTbl (ptr): 0x8057038
-		nodeTbl[0]: {0.2, 0.9, 0.1}
-		nodeTbl[1]: {0.1, 0.7, 0}
-		nodeTbl[2]: {0.2, 0.5, 0.08}
-		nodeTbl[3]: {0.3, 0.3, 0.1}
-		nodeTbl[4]: {0.2, 0.1, 0.1}
-		nodeTbl[5]: {0.3, 0.9, 0.3}
-		nodeTbl[6]: {0.2, 0.7, 0.2}
-		nodeTbl[7]: {0.3, 0.5, 0.28}
-		nodeTbl[8]: {0.4, 0.3, 0.3}
-		nodeTbl[9]: {0.3, 0.1, 0.3}
-		nodeTbl[10]: {0.5, 0.9, 0.5}
-		nodeTbl[11]: {0.4, 0.7, 0.4}
-		nodeTbl[12]: {0.5, 0.5, 0.48}
-		nodeTbl[13]: {0.6, 0.3, 0.4}
-		nodeTbl[14]: {0.5, 0.1, 0.4}
-		nodeTbl[15]: {0.7, 0.9, 0.7}
-		nodeTbl[16]: {0.6, 0.7, 0.6}
-		nodeTbl[17]: {0.7, 0.5, 0.68}
-		nodeTbl[18]: {0.8, 0.3, 0.7}
-		nodeTbl[19]: {0.7, 0.1, 0.7}
-		nodeTbl[20]: {0.8, 0.9, 0.9}
-		nodeTbl[21]: {0.7, 0.7, 0.8}
-		nodeTbl[22]: {0.8, 0.5, 0.88}
-		nodeTbl[23]: {0.9, 0.3, 0.9}
-		nodeTbl[24]: {0.8, 0.1, 0.9}
-MeshGeometry (ptr): 0x8066de8
-	buildNodes (func ptr): 0x804a3e3
-	nodeAt (func ptr): 0x804a430
-	nodeCount: 25
-Class (ptr): 0x8066de8
-	sizeOfSelf: 44
-	_deleteSelf: True
-	type: TriSurfGeometry
-	_delete (func ptr): 0x804a236
-	_print (func ptr): 0x804a27c
-Node 0 : {0.200000, 0.900000, 0.100000}
-Node 1 : {0.100000, 0.700000, 0.000000}
-Node 2 : {0.200000, 0.500000, 0.080000}
-Node 3 : {0.300000, 0.300000, 0.100000}
-Node 4 : {0.200000, 0.100000, 0.100000}
-Node 5 : {0.300000, 0.900000, 0.300000}
-Node 6 : {0.200000, 0.700000, 0.200000}
-Node 7 : {0.300000, 0.500000, 0.280000}
-Node 8 : {0.400000, 0.300000, 0.300000}
-Node 9 : {0.300000, 0.100000, 0.300000}
-Node 10 : {0.500000, 0.900000, 0.500000}
-Node 11 : {0.400000, 0.700000, 0.400000}
-Node 12 : {0.500000, 0.500000, 0.480000}
-Node 13 : {0.600000, 0.300000, 0.400000}
-Node 14 : {0.500000, 0.100000, 0.400000}
-Node 15 : {0.700000, 0.900000, 0.700000}
-Node 16 : {0.600000, 0.700000, 0.600000}
-Node 17 : {0.700000, 0.500000, 0.680000}
-Node 18 : {0.800000, 0.300000, 0.700000}
-Node 19 : {0.700000, 0.100000, 0.700000}
-Node 20 : {0.800000, 0.900000, 0.900000}
-Node 21 : {0.700000, 0.700000, 0.800000}
-Node 22 : {0.800000, 0.500000, 0.880000}
-Node 23 : {0.900000, 0.300000, 0.900000}
-Node 24 : {0.800000, 0.100000, 0.900000}
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testTriSurfGeometry " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfGeometry.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,106 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-int main( int argc, char *argv[] ) {
-	MPI_Comm CommWorld;
-	int rank;
-	int numProcessors;
-	int procToWatch;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init( &argc, &argv );
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size( CommWorld, &numProcessors );
-	MPI_Comm_rank( CommWorld, &rank );
-	
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	if( argc >= 2 ) {
-		procToWatch = atoi( argv[1] );
-	}
-	else {
-		procToWatch = 0;
-	}
-	if( rank == procToWatch ) {
-		Dictionary*	dictionary;
-		MeshGeometry*	mg;
-		Coord		coord;
-		Index		i;
-		XML_IO_Handler*	io_handler = XML_IO_Handler_New();
-
-		/* Read input */
-		dictionary = Dictionary_New();
-		IO_Handler_ReadAllFromFile(io_handler, "data/surface.xml", dictionary);
-
-		mg = (MeshGeometry*)TriSurfGeometry_New(dictionary, "imNodes");
-		Print(mg);
-
-		for (i = 0; i < mg->nodeCount; i++)
-		{
-			printf("Node %u : ", i);
-			mg->nodeAt(mg, i, coord);
-			printf("{%lf, %lf, %lf}\n", coord[0], coord[1], coord[2]);
-		}
-		printf("\n");
-
-		Stg_Class_Delete(mg);
-
-		/* Destroy stuff */
-		Stg_Class_Delete(dictionary);
-	}
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,289 +0,0 @@
-TriSurfTopology (ptr): (0x8068648)
-	dictionary (ptr): 0x80563f8
-	listKey (ptr): (0x8052731)
-		listKey: imElements
-	elementTbl (ptr): 0x8058898
-		elementTbl[0]: {0, 1, 5}
-		elementTbl[1]: {1, 2, 6}
-		elementTbl[2]: {2, 3, 7}
-		elementTbl[3]: {3, 4, 8}
-		elementTbl[4]: {1, 6, 5}
-		elementTbl[5]: {2, 7, 6}
-		elementTbl[6]: {3, 8, 7}
-		elementTbl[7]: {4, 9, 8}
-		elementTbl[8]: {5, 6, 10}
-		elementTbl[9]: {6, 7, 11}
-		elementTbl[10]: {7, 8, 12}
-		elementTbl[11]: {8, 9, 13}
-		elementTbl[12]: {6, 11, 10}
-		elementTbl[13]: {7, 12, 11}
-		elementTbl[14]: {8, 13, 12}
-		elementTbl[15]: {9, 14, 13}
-		elementTbl[16]: {10, 11, 15}
-		elementTbl[17]: {11, 12, 16}
-		elementTbl[18]: {12, 13, 17}
-		elementTbl[19]: {13, 14, 18}
-		elementTbl[20]: {11, 16, 15}
-		elementTbl[21]: {12, 17, 16}
-		elementTbl[22]: {13, 18, 17}
-		elementTbl[23]: {14, 19, 18}
-		elementTbl[24]: {15, 16, 20}
-		elementTbl[25]: {16, 17, 21}
-		elementTbl[26]: {17, 18, 22}
-		elementTbl[27]: {18, 19, 23}
-		elementTbl[28]: {16, 21, 20}
-		elementTbl[29]: {17, 22, 21}
-		elementTbl[30]: {18, 23, 22}
-		elementTbl[31]: {19, 24, 23}
-	edgeCount: 56
-	edgeTbl (ptr): 0x80564b0
-		edgeTbl[0]: {0, 1}
-		edgeTbl[1]: {1, 5}
-		edgeTbl[2]: {5, 0}
-		edgeTbl[3]: {1, 2}
-		edgeTbl[4]: {2, 6}
-		edgeTbl[5]: {6, 1}
-		edgeTbl[6]: {2, 3}
-		edgeTbl[7]: {3, 7}
-		edgeTbl[8]: {7, 2}
-		edgeTbl[9]: {3, 4}
-		edgeTbl[10]: {4, 8}
-		edgeTbl[11]: {8, 3}
-		edgeTbl[12]: {6, 5}
-		edgeTbl[13]: {7, 6}
-		edgeTbl[14]: {8, 7}
-		edgeTbl[15]: {4, 9}
-		edgeTbl[16]: {9, 8}
-		edgeTbl[17]: {6, 10}
-		edgeTbl[18]: {10, 5}
-		edgeTbl[19]: {7, 11}
-		edgeTbl[20]: {11, 6}
-		edgeTbl[21]: {8, 12}
-		edgeTbl[22]: {12, 7}
-		edgeTbl[23]: {9, 13}
-		edgeTbl[24]: {13, 8}
-		edgeTbl[25]: {11, 10}
-		edgeTbl[26]: {12, 11}
-		edgeTbl[27]: {13, 12}
-		edgeTbl[28]: {9, 14}
-		edgeTbl[29]: {14, 13}
-		edgeTbl[30]: {11, 15}
-		edgeTbl[31]: {15, 10}
-		edgeTbl[32]: {12, 16}
-		edgeTbl[33]: {16, 11}
-		edgeTbl[34]: {13, 17}
-		edgeTbl[35]: {17, 12}
-		edgeTbl[36]: {14, 18}
-		edgeTbl[37]: {18, 13}
-		edgeTbl[38]: {16, 15}
-		edgeTbl[39]: {17, 16}
-		edgeTbl[40]: {18, 17}
-		edgeTbl[41]: {14, 19}
-		edgeTbl[42]: {19, 18}
-		edgeTbl[43]: {16, 20}
-		edgeTbl[44]: {20, 15}
-		edgeTbl[45]: {17, 21}
-		edgeTbl[46]: {21, 16}
-		edgeTbl[47]: {18, 22}
-		edgeTbl[48]: {22, 17}
-		edgeTbl[49]: {19, 23}
-		edgeTbl[50]: {23, 18}
-		edgeTbl[51]: {21, 20}
-		edgeTbl[52]: {22, 21}
-		edgeTbl[53]: {23, 22}
-		edgeTbl[54]: {19, 24}
-		edgeTbl[55]: {24, 23}
-	edgeElementsTbl (ptr): 0x8068758
-		edgeElementsTbl[0]: {0, 32}
-		edgeElementsTbl[1]: {0, 4}
-		edgeElementsTbl[2]: {0, 32}
-		edgeElementsTbl[3]: {1, 32}
-		edgeElementsTbl[4]: {1, 5}
-		edgeElementsTbl[5]: {1, 4}
-		edgeElementsTbl[6]: {2, 32}
-		edgeElementsTbl[7]: {2, 6}
-		edgeElementsTbl[8]: {2, 5}
-		edgeElementsTbl[9]: {3, 32}
-		edgeElementsTbl[10]: {3, 7}
-		edgeElementsTbl[11]: {3, 6}
-		edgeElementsTbl[12]: {4, 8}
-		edgeElementsTbl[13]: {5, 9}
-		edgeElementsTbl[14]: {6, 10}
-		edgeElementsTbl[15]: {7, 32}
-		edgeElementsTbl[16]: {7, 11}
-		edgeElementsTbl[17]: {8, 12}
-		edgeElementsTbl[18]: {8, 32}
-		edgeElementsTbl[19]: {9, 13}
-		edgeElementsTbl[20]: {9, 12}
-		edgeElementsTbl[21]: {10, 14}
-		edgeElementsTbl[22]: {10, 13}
-		edgeElementsTbl[23]: {11, 15}
-		edgeElementsTbl[24]: {11, 14}
-		edgeElementsTbl[25]: {12, 16}
-		edgeElementsTbl[26]: {13, 17}
-		edgeElementsTbl[27]: {14, 18}
-		edgeElementsTbl[28]: {15, 32}
-		edgeElementsTbl[29]: {15, 19}
-		edgeElementsTbl[30]: {16, 20}
-		edgeElementsTbl[31]: {16, 32}
-		edgeElementsTbl[32]: {17, 21}
-		edgeElementsTbl[33]: {17, 20}
-		edgeElementsTbl[34]: {18, 22}
-		edgeElementsTbl[35]: {18, 21}
-		edgeElementsTbl[36]: {19, 23}
-		edgeElementsTbl[37]: {19, 22}
-		edgeElementsTbl[38]: {20, 24}
-		edgeElementsTbl[39]: {21, 25}
-		edgeElementsTbl[40]: {22, 26}
-		edgeElementsTbl[41]: {23, 32}
-		edgeElementsTbl[42]: {23, 27}
-		edgeElementsTbl[43]: {24, 28}
-		edgeElementsTbl[44]: {24, 32}
-		edgeElementsTbl[45]: {25, 29}
-		edgeElementsTbl[46]: {25, 28}
-		edgeElementsTbl[47]: {26, 30}
-		edgeElementsTbl[48]: {26, 29}
-		edgeElementsTbl[49]: {27, 31}
-		edgeElementsTbl[50]: {27, 30}
-		edgeElementsTbl[51]: {28, 32}
-		edgeElementsTbl[52]: {29, 32}
-		edgeElementsTbl[53]: {30, 32}
-		edgeElementsTbl[54]: {31, 32}
-		edgeElementsTbl[55]: {31, 32}
-MeshTopology (ptr): 0x8068648
-	nodeNeighbourCount (func ptr): 0x804ae6f
-	nodeBuildNeighbours (func ptr): 0x804aed7
-	nodeElementCount (func ptr): 0x804af92
-	nodeBuildElements (func ptr): 0x804b022
-	elementNeighbourCount (func ptr): 0x804b0c5
-	elementBuildNeighbours (func ptr): 0x804b302
-	elementNodeCount (func ptr): 0x804b54f
-	elementBuildNodes (func ptr): 0x804b57b
-	nodeCount: 25
-	elementCount: 32
-	boundaryNodeCount: 0
-	boundaryNodeTbl (ptr): (nil)
-Class (ptr): 0x8068648
-	sizeOfSelf: 92
-	_deleteSelf: True
-	type: TriSurfTopology
-	_delete (func ptr): 0x804ab8b
-	_print (func ptr): 0x804ac05
-Node global: 0, Neighbours: 2, {1, 5}
-Node global: 1, Neighbours: 4, {0, 5, 2, 6}
-Node global: 2, Neighbours: 4, {1, 6, 3, 7}
-Node global: 3, Neighbours: 4, {2, 7, 4, 8}
-Node global: 4, Neighbours: 3, {3, 8, 9}
-Node global: 5, Neighbours: 4, {1, 0, 6, 10}
-Node global: 6, Neighbours: 6, {2, 1, 5, 7, 10, 11}
-Node global: 7, Neighbours: 6, {3, 2, 6, 8, 11, 12}
-Node global: 8, Neighbours: 6, {4, 3, 7, 9, 12, 13}
-Node global: 9, Neighbours: 4, {4, 8, 13, 14}
-Node global: 10, Neighbours: 4, {6, 5, 11, 15}
-Node global: 11, Neighbours: 6, {7, 6, 10, 12, 15, 16}
-Node global: 12, Neighbours: 6, {8, 7, 11, 13, 16, 17}
-Node global: 13, Neighbours: 6, {9, 8, 12, 14, 17, 18}
-Node global: 14, Neighbours: 4, {9, 13, 18, 19}
-Node global: 15, Neighbours: 4, {11, 10, 16, 20}
-Node global: 16, Neighbours: 6, {12, 11, 15, 17, 20, 21}
-Node global: 17, Neighbours: 6, {13, 12, 16, 18, 21, 22}
-Node global: 18, Neighbours: 6, {14, 13, 17, 19, 22, 23}
-Node global: 19, Neighbours: 4, {14, 18, 23, 24}
-Node global: 20, Neighbours: 3, {16, 15, 21}
-Node global: 21, Neighbours: 4, {17, 16, 20, 22}
-Node global: 22, Neighbours: 4, {18, 17, 21, 23}
-Node global: 23, Neighbours: 4, {19, 18, 22, 24}
-Node global: 24, Neighbours: 2, {19, 23}
-
-Node global: 0, Elements: 1, {0}
-Node global: 1, Elements: 3, {0, 1, 4}
-Node global: 2, Elements: 3, {1, 2, 5}
-Node global: 3, Elements: 3, {2, 3, 6}
-Node global: 4, Elements: 2, {3, 7}
-Node global: 5, Elements: 3, {0, 4, 8}
-Node global: 6, Elements: 6, {1, 4, 5, 8, 9, 12}
-Node global: 7, Elements: 6, {2, 5, 6, 9, 10, 13}
-Node global: 8, Elements: 6, {3, 6, 7, 10, 11, 14}
-Node global: 9, Elements: 3, {7, 11, 15}
-Node global: 10, Elements: 3, {8, 12, 16}
-Node global: 11, Elements: 6, {9, 12, 13, 16, 17, 20}
-Node global: 12, Elements: 6, {10, 13, 14, 17, 18, 21}
-Node global: 13, Elements: 6, {11, 14, 15, 18, 19, 22}
-Node global: 14, Elements: 3, {15, 19, 23}
-Node global: 15, Elements: 3, {16, 20, 24}
-Node global: 16, Elements: 6, {17, 20, 21, 24, 25, 28}
-Node global: 17, Elements: 6, {18, 21, 22, 25, 26, 29}
-Node global: 18, Elements: 6, {19, 22, 23, 26, 27, 30}
-Node global: 19, Elements: 3, {23, 27, 31}
-Node global: 20, Elements: 2, {24, 28}
-Node global: 21, Elements: 3, {25, 28, 29}
-Node global: 22, Elements: 3, {26, 29, 30}
-Node global: 23, Elements: 3, {27, 30, 31}
-Node global: 24, Elements: 1, {31}
-
-Element global: 0, Neighbours: 3, {1, 4, 8}
-Element global: 1, Neighbours: 7, {0, 2, 4, 5, 8, 9, 12}
-Element global: 2, Neighbours: 7, {1, 3, 5, 6, 9, 10, 13}
-Element global: 3, Neighbours: 6, {2, 6, 7, 10, 11, 14}
-Element global: 4, Neighbours: 6, {0, 1, 5, 8, 9, 12}
-Element global: 5, Neighbours: 9, {1, 2, 4, 6, 8, 9, 10, 12, 13}
-Element global: 6, Neighbours: 9, {2, 3, 5, 7, 9, 10, 11, 13, 14}
-Element global: 7, Neighbours: 6, {3, 6, 10, 11, 14, 15}
-Element global: 8, Neighbours: 7, {0, 1, 4, 5, 9, 12, 16}
-Element global: 9, Neighbours: 12, {1, 2, 4, 5, 6, 8, 10, 12, 13, 16, 17, 20}
-Element global: 10, Neighbours: 12, {2, 3, 5, 6, 7, 9, 11, 13, 14, 17, 18, 21}
-Element global: 11, Neighbours: 9, {3, 6, 7, 10, 14, 15, 18, 19, 22}
-Element global: 12, Neighbours: 9, {1, 4, 5, 8, 9, 13, 16, 17, 20}
-Element global: 13, Neighbours: 12, {2, 5, 6, 9, 10, 12, 14, 16, 17, 18, 20, 21}
-Element global: 14, Neighbours: 12, {3, 6, 7, 10, 11, 13, 15, 17, 18, 19, 21, 22}
-Element global: 15, Neighbours: 7, {7, 11, 14, 18, 19, 22, 23}
-Element global: 16, Neighbours: 7, {8, 9, 12, 13, 17, 20, 24}
-Element global: 17, Neighbours: 12, {9, 10, 12, 13, 14, 16, 18, 20, 21, 24, 25, 28}
-Element global: 18, Neighbours: 12, {10, 11, 13, 14, 15, 17, 19, 21, 22, 25, 26, 29}
-Element global: 19, Neighbours: 9, {11, 14, 15, 18, 22, 23, 26, 27, 30}
-Element global: 20, Neighbours: 9, {9, 12, 13, 16, 17, 21, 24, 25, 28}
-Element global: 21, Neighbours: 12, {10, 13, 14, 17, 18, 20, 22, 24, 25, 26, 28, 29}
-Element global: 22, Neighbours: 12, {11, 14, 15, 18, 19, 21, 23, 25, 26, 27, 29, 30}
-Element global: 23, Neighbours: 7, {15, 19, 22, 26, 27, 30, 31}
-Element global: 24, Neighbours: 6, {16, 17, 20, 21, 25, 28}
-Element global: 25, Neighbours: 9, {17, 18, 20, 21, 22, 24, 26, 28, 29}
-Element global: 26, Neighbours: 9, {18, 19, 21, 22, 23, 25, 27, 29, 30}
-Element global: 27, Neighbours: 6, {19, 22, 23, 26, 30, 31}
-Element global: 28, Neighbours: 6, {17, 20, 21, 24, 25, 29}
-Element global: 29, Neighbours: 7, {18, 21, 22, 25, 26, 28, 30}
-Element global: 30, Neighbours: 7, {19, 22, 23, 26, 27, 29, 31}
-Element global: 31, Neighbours: 3, {23, 27, 30}
-
-Element global: 0, Nodes: 3, {0, 1, 5}
-Element global: 1, Nodes: 3, {1, 2, 6}
-Element global: 2, Nodes: 3, {2, 3, 7}
-Element global: 3, Nodes: 3, {3, 4, 8}
-Element global: 4, Nodes: 3, {1, 6, 5}
-Element global: 5, Nodes: 3, {2, 7, 6}
-Element global: 6, Nodes: 3, {3, 8, 7}
-Element global: 7, Nodes: 3, {4, 9, 8}
-Element global: 8, Nodes: 3, {5, 6, 10}
-Element global: 9, Nodes: 3, {6, 7, 11}
-Element global: 10, Nodes: 3, {7, 8, 12}
-Element global: 11, Nodes: 3, {8, 9, 13}
-Element global: 12, Nodes: 3, {6, 11, 10}
-Element global: 13, Nodes: 3, {7, 12, 11}
-Element global: 14, Nodes: 3, {8, 13, 12}
-Element global: 15, Nodes: 3, {9, 14, 13}
-Element global: 16, Nodes: 3, {10, 11, 15}
-Element global: 17, Nodes: 3, {11, 12, 16}
-Element global: 18, Nodes: 3, {12, 13, 17}
-Element global: 19, Nodes: 3, {13, 14, 18}
-Element global: 20, Nodes: 3, {11, 16, 15}
-Element global: 21, Nodes: 3, {12, 17, 16}
-Element global: 22, Nodes: 3, {13, 18, 17}
-Element global: 23, Nodes: 3, {14, 19, 18}
-Element global: 24, Nodes: 3, {15, 16, 20}
-Element global: 25, Nodes: 3, {16, 17, 21}
-Element global: 26, Nodes: 3, {17, 18, 22}
-Element global: 27, Nodes: 3, {18, 19, 23}
-Element global: 28, Nodes: 3, {16, 21, 20}
-Element global: 29, Nodes: 3, {17, 22, 21}
-Element global: 30, Nodes: 3, {18, 23, 22}
-Element global: 31, Nodes: 3, {19, 24, 23}
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testTriSurfTopology " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/tests/testTriSurfTopology.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,204 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpi.h>
-
-int main( int argc, char *argv[] ) {
-	MPI_Comm CommWorld;
-	int rank;
-	int numProcessors;
-	int procToWatch;
-	
-	/* Initialise MPI, get world info */
-	MPI_Init( &argc, &argv );
-	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
-	MPI_Comm_size( CommWorld, &numProcessors );
-	MPI_Comm_rank( CommWorld, &rank );
-	
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	MPI_Barrier( CommWorld ); /* Ensures copyright info always come first in output */
-	
-	if( argc >= 2 ) {
-		procToWatch = atoi( argv[1] );
-	}
-	else {
-		procToWatch = 0;
-	}
-	if( rank == procToWatch ) {
-		TriSurfTopology*	mt;
-		Dictionary*		dictionary;
-		XML_IO_Handler*		io_handler = XML_IO_Handler_New();
-
-		Node_GlobalIndex	nodeCnt;
-		Node_NeighbourIndex	nodeNbrCnt;
-		Node_Neighbours		nodeNbr;
-		Node_ElementIndex	nodeEltCnt;
-		Node_Elements		nodeElt;
-		Element_GlobalIndex	eltCnt;
-		Element_NeighbourIndex	elementNbrCnt;
-		Element_Neighbours	elementNbr;
-		Element_NodeIndex	elementNodeCnt;
-		Element_Nodes		elementNode;
-		Index			i, j;
-
-		dictionary = Dictionary_New();
-		IO_Handler_ReadAllFromFile(io_handler, "data/surface.xml", dictionary);
-
-		mt = TriSurfTopology_New(dictionary, "imElements");
-		Print(mt);
-
-		nodeCnt = mt->nodeCount;
-		eltCnt = mt->elementCount;
-
-		for (i = 0; i < nodeCnt; i++)
-		{
-			nodeNbrCnt = mt->nodeNeighbourCount(mt, i);
-			printf("Node global: %u, Neighbours: %u", i, nodeNbrCnt);
-			if (nodeNbrCnt)
-			{
-				nodeNbr = Memory_Alloc_Array( Node_GlobalIndex, nodeNbrCnt, "nodeNbr" );
-				mt->nodeBuildNeighbours(mt, i, nodeNbr);
-				if (nodeNbr[0] < nodeCnt)
-					printf(", {%u", nodeNbr[0]);
-				else
-					printf(", {X");
-				for (j = 1; j < nodeNbrCnt; j++)
-					if (nodeNbr[j] < nodeCnt)
-						printf(", %u", nodeNbr[j]);
-					else
-						printf(", X");
-				printf("}");
-				Memory_Free(nodeNbr);
-			}
-			printf("\n");
-		}
-		printf("\n");
-
-		for (i = 0; i < nodeCnt; i++)
-		{
-			nodeEltCnt = mt->nodeElementCount(mt, i);
-			printf("Node global: %u, Elements: %u", i, nodeEltCnt);
-			if (nodeEltCnt)
-			{
-				nodeElt = Memory_Alloc_Array( Element_DomainIndex, nodeEltCnt, "nodeElt" );
-				mt->nodeBuildElements(mt, i, nodeElt);
-				if (nodeElt[0] < eltCnt)
-					printf(", {%u", nodeElt[0]);
-				else
-					printf(", {X");
-				for (j = 1; j < nodeEltCnt; j++)
-					if (nodeElt[j] < eltCnt)
-						printf(", %u", nodeElt[j]);
-					else
-						printf(", X");
-				printf("}");
-				Memory_Free(nodeElt);
-			}
-			printf("\n");
-		}
-		printf("\n");
-
-		for (i = 0; i < eltCnt; i++)
-		{
-			elementNbrCnt = mt->elementNeighbourCount(mt, i);
-			printf("Element global: %u, Neighbours: %u", i, elementNbrCnt);
-			if (elementNbrCnt)
-			{
-				elementNbr = Memory_Alloc_Array( Node_GlobalIndex, elementNbrCnt, "elementNbr" );
-				mt->elementBuildNeighbours(mt, i, elementNbr);
-				if (elementNbr[0] < eltCnt)
-					printf(", {%u", elementNbr[0]);
-				else
-					printf(", {X");
-				for (j = 1; j < elementNbrCnt; j++)
-					if (elementNbr[j] < eltCnt)
-						printf(", %u", elementNbr[j]);
-					else
-						printf(", X");
-				printf("}");
-				Memory_Free(elementNbr);
-			}
-			printf("\n");
-		}
-		printf("\n");
-
-		for (i = 0; i < eltCnt; i++)
-		{
-			elementNodeCnt = mt->elementNodeCount(mt, i);
-			printf("Element global: %u, Nodes: %u", i, elementNodeCnt);
-			if (elementNodeCnt)
-			{
-				elementNode = Memory_Alloc_Array( Element_DomainIndex, elementNodeCnt, "elementNode" );
-				mt->elementBuildNodes(mt, i, elementNode);
-				if (elementNode[0] < nodeCnt)
-					printf(", {%u", elementNode[0]);
-				else
-					printf(", {X");
-				for (j = 1; j < elementNodeCnt; j++)
-					if (elementNode[j] < nodeCnt)
-						printf(", %u", elementNode[j]);
-					else
-						printf(", X");
-				printf("}");
-				Memory_Free(elementNode);
-			}
-			printf("\n");
-		}
-		printf("\n");
-
-		Stg_Class_Delete(mt);
-		Stg_Class_Delete(dictionary);
-	}
-	
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return 0; /* success */
-}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ConvexHull.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ConvexHull.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ConvexHull.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -166,7 +166,7 @@
 			StGermain_VectorSubtraction( tmpVector2, vertexList[ vertex_I % 4 ], vertexList[ (vertex_I+3) % 4 ], dimensions);
 
 			if( StGermain_VectorDotProduct(tmpVector3, tmpVector2, dimensions) < 0 ) 
-				{ Vector_Div( tmpVector3, tmpVector3, -1.0 ); }
+				{ Vec_Div3D( tmpVector3, tmpVector3, -1.0 ); }
 			printf("vector normal = (%g, %g, %g)\n", tmpVector3[0], tmpVector3[1],  tmpVector3[2] ); 
 			memcpy( self->facesList[ vertex_I ], tmpVector3, sizeof(XYZ) );
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ShapeClass.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ShapeClass.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Shape/src/ShapeClass.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -274,7 +274,7 @@
 void Stg_Shape_TranslateCoord( void* shape, Coord coord, Coord translatedCoord ) {
 	Stg_Shape* self              = (Stg_Shape*)shape;
 
-	Vector_Sub( translatedCoord, coord, self->centre );
+	Vec_Sub3D( translatedCoord, coord, self->centre );
 }
 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -189,7 +189,7 @@
 }
 
 
-Cell_Index CellLayout_MapElementIdToCellId( void* cellLayout, Element_DomainIndex element_dI ) {
+Cell_Index CellLayout_MapElementIdToCellId( void* cellLayout, unsigned element_dI ) {
 	CellLayout* self = (CellLayout*)cellLayout;
 	
 	return self->_mapElementIdToCellId( self, element_dI );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/CellLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -42,15 +42,14 @@
 #ifndef __Discretisation_Swarm_CellLayout_h__
 #define __Discretisation_Swarm_CellLayout_h__
 	
-
 	/* Child classes must define these abstract functions */
 	typedef Cell_Index	(CellLayout_CellCountFunction)		( void* cellLayout );
 	typedef Cell_PointIndex	(CellLayout_PointCountFunction)		( void* cellLayout, Cell_Index cell_I );
 	typedef void		(CellLayout_InitialisePointsFunction)	( void* cellLayout, 
 										Cell_Index cell_I, 
 										Cell_PointIndex pointCount, 
-										Cell_Points points );
-	typedef Cell_Index	(CellLayout_MapElementIdToCellIdFunction)	( void* cellLayout, Element_DomainIndex element_dI ); 
+										double*** points );
+	typedef Cell_Index	(CellLayout_MapElementIdToCellIdFunction)	( void* cellLayout, unsigned element_dI ); 
 	typedef Bool		(CellLayout_IsInCellFunction)		( void* cellLayout, Cell_Index cell_I, void* particle );
 	typedef Cell_Index	(CellLayout_CellOfFunction)		( void* cellLayout, void* particle );
 	typedef ShadowInfo*	(CellLayout_GetShadowInfoFunction)	( void* cellLayout );
@@ -136,7 +135,7 @@
 
 	/** Get the Cell ID corresponding to a mesh element (only makes sense when the cell layout is used with a mesh
 	 * in the same app */
-	Cell_Index CellLayout_MapElementIdToCellId( void* cellLayout, Element_DomainIndex element_dI ); 
+	Cell_Index CellLayout_MapElementIdToCellId( void* cellLayout, unsigned element_dI ); 
 
 	/* Specify whether a particle is in a given cell */
 	Bool CellLayout_IsInCell( void* cellLayout, Cell_Index cellIndex, void* particle );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -36,6 +36,7 @@
 
 #include "types.h"
 #include "shortcuts.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 
@@ -191,12 +192,6 @@
 	/* ElementCellInfo info */
 	self->mesh = (Mesh*)mesh;
 	self->isConstructed = True;
-	if (False == self->mesh->buildElementNodeTbl ) {
-		Stream* elementCellLayoutStream = Journal_Register( ErrorStream_Type, self->type );
-		Journal_Printf( elementCellLayoutStream, "Warning: Mesh not configured to build element node table. "
-			"Activating it now.\n" );
-		Mesh_ActivateElementNodeTbl( self->mesh );
-	}
 }
 
 
@@ -264,7 +259,18 @@
 }
 	
 void _ElementCellLayout_Build( void *elementCellLayout, void *data ){
-	
+	ElementCellLayout*	self = (ElementCellLayout*)elementCellLayout;
+
+	Build( self->mesh, NULL, False );
+
+	if( !Mesh_HasIncidence( self->mesh, Mesh_GetDimSize( self->mesh ), MT_VERTEX ) ) {
+		Stream* elementCellLayoutStream = Journal_Register( ErrorStream_Type, self->type );
+		Journal_Printf( elementCellLayoutStream, "Warning: Mesh not configured to build element node table. "
+			"Activating it now.\n" );
+		abort();
+	}
+
+	ElementCellLayout_BuildShadowInfo( self );
 }
 	
 void _ElementCellLayout_Initialise( void *elementCellLayout, void *data ){
@@ -281,41 +287,51 @@
 
 Cell_Index _ElementCellLayout_CellLocalCount( void* elementCellLayout ) {
 	ElementCellLayout* self = (ElementCellLayout*)elementCellLayout;
-	return self->mesh->elementLocalCount;
+	return Mesh_GetLocalSize( self->mesh, Mesh_GetDimSize( self->mesh ) );
 }
 
 Cell_Index _ElementCellLayout_CellShadowCount( void* elementCellLayout ) {
 	ElementCellLayout* self = (ElementCellLayout*)elementCellLayout;
-	return self->mesh->elementShadowCount;
+	return Mesh_GetRemoteSize( self->mesh, Mesh_GetDimSize( self->mesh ) );
 }
 
 Cell_PointIndex _ElementCellLayout_PointCount( void* elementCellLayout, Cell_Index cellIndex ) {
 	ElementCellLayout* self = (ElementCellLayout*)elementCellLayout;
-	return self->mesh->elementNodeCountTbl[cellIndex];
+	unsigned		nInc;
+	unsigned*		inc;
+
+	Mesh_GetIncidence( self->mesh, Mesh_GetDimSize( self->mesh ), cellIndex, MT_VERTEX, 
+			   &nInc, &inc );
+	return nInc;
 }
 
 void _ElementCellLayout_InitialisePoints( void* elementCellLayout, Cell_Index cellIndex, Cell_PointIndex pointCount, 
-		Cell_Points points ) 
+					  double*** points )
 {
 	ElementCellLayout* self = (ElementCellLayout*)elementCellLayout;
 	Cell_PointIndex point_I;
 	
 	/* point to the mesh's node's coordinates */
 	for( point_I = 0; point_I < pointCount; point_I++ ) {
-		points[point_I] = &self->mesh->nodeCoord[self->mesh->elementNodeTbl[cellIndex][point_I]];
+		unsigned	nInc;
+		unsigned*	inc;
+
+	   	Mesh_GetIncidence( self->mesh, Mesh_GetDimSize( self->mesh ), cellIndex, MT_VERTEX, 
+				   &nInc, &inc );
+		points[point_I] = &self->mesh->verts[inc[point_I]];
 	}
 }
 
 
-Cell_Index _ElementCellLayout_MapElementIdToCellId( void* elementCellLayout, Element_DomainIndex element_dI ) {
+Cell_Index _ElementCellLayout_MapElementIdToCellId( void* elementCellLayout, unsigned element_dI ) {
 	
 	#ifdef CAUTIOUS
 	{
 		ElementCellLayout*      self = (ElementCellLayout*)elementCellLayout;
 		Stream* errorStr = Journal_Register( Error_Type, self->type );
-		Journal_Firewall( element_dI < self->mesh->elementDomainCount, errorStr, "Error - in %s(): User asked "
+		Journal_Firewall( element_dI < Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) ), errorStr, "Error - in %s(): User asked "
 			"for cell corresponding to element %d, but the mesh that this cell layout is based on only "
-			"has %d elements.\n", __func__, element_dI, self->mesh->elementDomainCount );
+			"has %d elements.\n", __func__, element_dI, Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) ) );
 	}	
 	#endif
 	
@@ -325,95 +341,122 @@
 
 Bool _ElementCellLayout_IsInCell( void* elementCellLayout, Cell_Index cellIndex, void* _particle ) {
 	ElementCellLayout*      self     = (ElementCellLayout*)elementCellLayout;
-	ElementLayout*		eLayout  = self->mesh->layout->elementLayout;
 	GlobalParticle*	        particle = (GlobalParticle*)_particle;
-	Index                   element_I = 0;
 
-	/* If we already have an owning cell, use that as a hint as to where the particle may now be. */
-	if( particle->owningCell < self->mesh->layout->decomp->elementDomainCount ) {
-		Mesh*		mesh = self->mesh;
-		unsigned	elInd = particle->owningCell;
+	unsigned		elDim, elInd;
 
-		/* Check current cell. */
-		element_I = eLayout->elementWithPoint( eLayout, self->mesh->layout->decomp, particle->coord, self->mesh, 
-						       EXCLUSIVE_UPPER_BOUNDARY, 
-						       1, &elInd );
-
-		if( element_I >= mesh->layout->decomp->elementDomainCount ) {
-			/* Check neighbours. */
-			if( mesh->elementNeighbourCountTbl && mesh->elementNeighbourTbl ) {
-				element_I = eLayout->elementWithPoint( eLayout, self->mesh->layout->decomp, particle->coord, 
-								       self->mesh, 
-								       EXCLUSIVE_UPPER_BOUNDARY, 
-								       mesh->elementNeighbourCountTbl[elInd], 
-								       mesh->elementNeighbourTbl[elInd] );
-			}
-
-			if( element_I >= mesh->layout->decomp->elementDomainCount ) {
-				/* Check the lot. */
-				/* Use exclusive upper boundaries, since we want a unique answer across the processors as to
-				   which proc owns a certain particle in its local space */
-				element_I = Mesh_ElementWithPoint( self->mesh, particle->coord, EXCLUSIVE_UPPER_BOUNDARY );
-			}
-		}
+	if( Mesh_ElementHasPoint( self->mesh, cellIndex, particle->coord, &elDim, &elInd ) ) {
+		if( elInd < Mesh_GetLocalSize( self->mesh, elDim ) )
+			return True;
 	}
-	else {
-		/* Check the lot. */
-		/* Use exclusive upper boundaries, since we want a unique answer across the processors as to
-		   which proc owns a certain particle in its local space */
-		element_I = Mesh_ElementWithPoint( self->mesh, particle->coord, EXCLUSIVE_UPPER_BOUNDARY );
-	}
 
-	return element_I == cellIndex ? True : False;
+	return False;
 }
 
 Cell_Index _ElementCellLayout_CellOf( void* elementCellLayout, void* _particle ) {
 	ElementCellLayout*      self     = (ElementCellLayout*)elementCellLayout;
-	ElementLayout*		eLayout  = self->mesh->layout->elementLayout;
 	GlobalParticle*	        particle = (GlobalParticle*)_particle;
-	unsigned		element_I;
+	unsigned		elDim, elInd;
 
-	/* If we already have an owning cell, use that as a hint as to where the particle may now be. */
-	if( particle->owningCell < self->mesh->layout->decomp->elementDomainCount ) {
-		Mesh*		mesh = self->mesh;
-		unsigned	elInd = particle->owningCell;
+	if( Mesh_Search( self->mesh, particle->coord, &elDim, &elInd ) ) {
+		if( elInd >= Mesh_GetLocalSize( self->mesh, elDim ) )
+			elInd = Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) );
+		else if( elDim != Mesh_GetDimSize( self->mesh ) ) {
+			unsigned	nInc;
+			unsigned*	inc;
+			unsigned	inc_i;
 
-		/* Check current cell. */
-		element_I = eLayout->elementWithPoint( eLayout, self->mesh->layout->decomp, particle->coord, self->mesh, 
-						       EXCLUSIVE_UPPER_BOUNDARY, 
-						       1, &elInd );
-
-		if( element_I >= mesh->layout->decomp->elementDomainCount ) {
-			/* Check neighbours. */
-			if( mesh->elementNeighbourCountTbl && mesh->elementNeighbourTbl ) {
-				element_I = eLayout->elementWithPoint( eLayout, self->mesh->layout->decomp, particle->coord,
-								       self->mesh, 
-								       EXCLUSIVE_UPPER_BOUNDARY, 
-								       mesh->elementNeighbourCountTbl[elInd], 
-								       mesh->elementNeighbourTbl[elInd] );
+			Mesh_GetIncidence( self->mesh, elDim, elInd, Mesh_GetDimSize( self->mesh ), 
+					   &nInc, &inc );
+			for( inc_i = 0; inc_i < nInc; inc_i++ ) {
+				if( inc[inc_i] < Mesh_GetLocalSize( self->mesh, elDim ) ) {
+					elInd = inc[0];
+					break;
+				}
+				if( inc_i == nInc )
+					elInd = Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) );
 			}
-
-			if( element_I >= mesh->layout->decomp->elementDomainCount ) {
-				/* Check the lot. */
-				/* Use exclusive upper boundaries, since we want a unique answer across the processors as to
-				   which proc owns a certain particle in its local space */
-				element_I = Mesh_ElementWithPoint( self->mesh, particle->coord, EXCLUSIVE_UPPER_BOUNDARY );
-			}
 		}
 	}
-	else {
-		/* Check the lot. */
-		/* Use exclusive upper boundaries, since we want a unique answer across the processors as to
-		   which proc owns a certain particle in its local space */
-		element_I = Mesh_ElementWithPoint( self->mesh, particle->coord, EXCLUSIVE_UPPER_BOUNDARY );
-	}
+	else
+		elInd = Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) );
 
-	return element_I;
+	return elInd;
 }
 
 
 ShadowInfo* _ElementCellLayout_GetShadowInfo( void* elementCellLayout ) {
 	ElementCellLayout*      self = (ElementCellLayout*)elementCellLayout;
 
-	return self->mesh->elementShadowInfo;
+	return &self->cellShadowInfo;
 }
+
+
+void ElementCellLayout_BuildShadowInfo( ElementCellLayout* self ) {
+	unsigned	nDims;
+	CommTopology*	commTopo;
+	unsigned	nIncProcs;
+	unsigned*	incProcs;
+	unsigned	n_i;
+
+	nDims = Mesh_GetDimSize( self->mesh );
+	commTopo = Mesh_GetCommTopology( self->mesh, nDims );
+	CommTopology_GetIncidence( commTopo, &nIncProcs, &incProcs );
+
+	/* Extract neighbouring proc information. */
+	self->cellShadowInfo.procNbrInfo = Memory_Alloc_Unnamed( ProcNbrInfo );
+	self->cellShadowInfo.procNbrInfo->procNbrCnt = nIncProcs;
+	self->cellShadowInfo.procNbrInfo->procNbrTbl = Memory_Alloc_Array_Unnamed( unsigned, nIncProcs );
+	memcpy( self->cellShadowInfo.procNbrInfo->procNbrTbl, incProcs, nIncProcs * sizeof(unsigned) );
+
+	/* Count shadow info. */
+	self->cellShadowInfo.procShadowedCnt = Memory_Alloc_Array_Unnamed( unsigned, nIncProcs );
+	self->cellShadowInfo.procShadowCnt = Memory_Alloc_Array_Unnamed( unsigned, nIncProcs );
+	for( n_i = 0; n_i < Mesh_GetSharedSize( self->mesh, nDims ); n_i++ ) {
+		unsigned	nSharers;
+		unsigned*	sharers;
+		unsigned	s_i;
+
+		Mesh_GetSharers( self->mesh, nDims, n_i, 
+				 &nSharers, &sharers );
+		for( s_i = 0; s_i < nSharers; s_i++ )
+			self->cellShadowInfo.procShadowedCnt[sharers[s_i]]++;
+	}
+	for( n_i = 0; n_i < Mesh_GetRemoteSize( self->mesh, nDims ); n_i++ ) {
+		unsigned	owner;
+
+		owner = Mesh_GetOwner( self->mesh, nDims, n_i );
+		self->cellShadowInfo.procShadowCnt[owner]++;
+	}
+
+	/* Build shadow info indices. */
+	self->cellShadowInfo.procShadowedTbl = Memory_Alloc_2DComplex_Unnamed( unsigned, nIncProcs, self->cellShadowInfo.procShadowedCnt );
+	self->cellShadowInfo.procShadowTbl = Memory_Alloc_2DComplex_Unnamed( unsigned, nIncProcs, self->cellShadowInfo.procShadowCnt );
+	memset( self->cellShadowInfo.procShadowedCnt, 0, nIncProcs * sizeof(unsigned) );
+	memset( self->cellShadowInfo.procShadowCnt, 0, nIncProcs * sizeof(unsigned) );
+	for( n_i = 0; n_i < Mesh_GetSharedSize( self->mesh, nDims ); n_i++ ) {
+		unsigned	local;
+		unsigned	curInd;
+		unsigned	nSharers;
+		unsigned*	sharers;
+		unsigned	s_i;
+
+		local = Mesh_SharedToLocal( self->mesh, nDims, n_i );
+		Mesh_GetSharers( self->mesh, nDims, n_i, 
+				 &nSharers, &sharers );
+		for( s_i = 0; s_i < nSharers; s_i++ ) {
+			curInd = self->cellShadowInfo.procShadowedCnt[sharers[s_i]]++;
+			self->cellShadowInfo.procShadowedTbl[sharers[s_i]][curInd] = local;
+		}
+	}
+	for( n_i = 0; n_i < Mesh_GetRemoteSize( self->mesh, nDims ); n_i++ ) {
+		unsigned	domain;
+		unsigned	curInd;
+		unsigned	owner;
+
+		domain = Mesh_GetLocalSize( self->mesh, nDims ) + n_i;
+		owner = Mesh_GetOwner( self->mesh, nDims, n_i );
+		curInd = self->cellShadowInfo.procShadowCnt[owner]++;
+		self->cellShadowInfo.procShadowTbl[owner][curInd] = domain;
+	}
+}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ElementCellLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -56,7 +56,8 @@
 		/* Virtual info */ \
 		\
 		/* ElementCellLayout info */ \
-		Mesh*					mesh;
+		Mesh*					mesh; \
+		ShadowInfo				cellShadowInfo;
 
 	struct ElementCellLayout { __ElementCellLayout };
 	
@@ -137,10 +138,10 @@
 	
 	/* Returns the cell point array... this is the mesh's element node array */
 	void _ElementCellLayout_InitialisePoints( void* elementCellLayout, Cell_Index cellIndex, Cell_PointIndex pointCount, 
-		Cell_Points points );
+		double*** points );
 	
 	/** Implements CellLayout_MapElementIdToCellId(): just returns a cell number, after checking size */
-	Cell_Index _ElementCellLayout_MapElementIdToCellId( void* cellLayout, Element_DomainIndex element_dI ); 
+	Cell_Index _ElementCellLayout_MapElementIdToCellId( void* cellLayout, unsigned element_dI ); 
 	
 	/* Specify whether a particle is in a given cell enough */
 	Bool _ElementCellLayout_IsInCell( void* elementCellLayout, Cell_Index cellIndex, void* particle );
@@ -150,5 +151,7 @@
 
 	/* Get the shadow info: uses the mesh's element one */
 	ShadowInfo* _ElementCellLayout_GetShadowInfo( void* elementCellLayout );
+
+	void ElementCellLayout_BuildShadowInfo( ElementCellLayout* self );
 	
 #endif /* __Discretisation_Swarm_ElementCellLayout_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/FileParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,6 +44,7 @@
 
 #include "SwarmClass.h"
 #include "StandardParticle.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Init.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Init.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,53 +28,23 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
 #include <mpi.h>
-#include "Base/Base.h"
 
+#include "Base/Base.h"
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
 #include "Discretisation/Mesh/Mesh.h"
 #include "Discretisation/Utils/Utils.h"
-
-#include "types.h"
-#include "shortcuts.h"
-#include "Init.h"
-
-#include "ParticleLayout.h"
-#include "PerCellParticleLayout.h"
-#include "GaussParticleLayout.h"
-#include "TriGaussParticleLayout.h"
-#include "RandomParticleLayout.h"
-#include "GlobalParticleLayout.h"
-#include "SpaceFillerParticleLayout.h"
-#include "WithinShapeParticleLayout.h"
-#include "ManualParticleLayout.h"
-#include "LineParticleLayout.h"
-#include "PlaneParticleLayout.h"
-#include "FileParticleLayout.h"
-#include "CellLayout.h"
-#include "SingleCellLayout.h"
-#include "ElementCellLayout.h"
 #include "Swarm.h"
-#include "Swarm_Register.h"
-#include "SwarmVariable_Register.h"
-#include "SwarmVariable.h"
-#include "OperatorSwarmVariable.h"
-#include "SwarmOutput.h"
-#include "SwarmDump.h"
 
-#include "StandardParticle.h"
-#include "IntegrationPoint.h"
 
-#include "Swarm.h"
-
-#include <stdio.h>
-
 Stream* Swarm_VerboseConfig = NULL;
 Stream* Swarm_Debug = NULL;
 Stream* Swarm_Warning = NULL;
 Stream* Swarm_Error = NULL;
 
+
 Bool DiscretisationSwarm_Init( int* argc, char** argv[] ) {
 	Swarm_VerboseConfig = Journal_Register( Info_Type, "Swarm_VerboseConfig" );
 	Swarm_Debug = Journal_Register( Debug_Type, "Swarm" );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/LineParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/LineParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/LineParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,6 +44,7 @@
 
 #include "SwarmClass.h"
 #include "StandardParticle.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ManualParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ManualParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ManualParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,6 +44,7 @@
 
 #include "SwarmClass.h"
 #include "StandardParticle.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/MeshParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/MeshParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/MeshParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -242,8 +242,8 @@
 	Coord               	max = {1.0, 1.0, 1.0};
 	Coord			localCoord;
 	double			basis[8];
-	unsigned		nDims = self->mesh->nSpaceDims;
-	Coord*			nodeCoords = self->mesh->nodeCoord;
+	unsigned		nDims = Mesh_GetDimSize( self->mesh );
+	double**		nodeCoords = self->mesh->verts;
 	unsigned		nNodes, *incNodes;
 	Particle_InCellIndex	particlesThisCell = swarm->cellParticleCountTbl[cell_I];
 	Particle_InCellIndex	cParticle_I = 0;
@@ -252,8 +252,8 @@
 
 	assert( nDims == 2 || nDims == 3 );
 
-	nNodes = self->mesh->elementNodeCountTbl[cell_I];
-	incNodes = self->mesh->elementNodeTbl[cell_I];
+	Mesh_GetIncidence( self->mesh, nDims, cell_I, MT_VERTEX, 
+			   &nNodes, &incNodes );
 
 	for ( cParticle_I = 0; cParticle_I < particlesThisCell; cParticle_I++ ) {	
 		particle = (GlobalParticle*)Swarm_ParticleInCellAt( swarm, cell_I, cParticle_I );
@@ -267,18 +267,18 @@
 		if( nDims == 2 ) {
 			basis[0] = 0.25 * (1.0 - localCoord[0]) * (1.0 - localCoord[1]);
 			basis[1] = 0.25 * (1.0 + localCoord[0]) * (1.0 - localCoord[1]);
-			basis[3] = 0.25 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]);
-			basis[2] = 0.25 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]);
+			basis[2] = 0.25 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]);
+			basis[3] = 0.25 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]);
 		}
 		else {
 			basis[0] = 0.125 * (1.0 - localCoord[0]) * (1.0 - localCoord[1]) * (1.0 - localCoord[2]);
 			basis[1] = 0.125 * (1.0 + localCoord[0]) * (1.0 - localCoord[1]) * (1.0 - localCoord[2]);
-			basis[3] = 0.125 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]) * (1.0 - localCoord[2]);
-			basis[2] = 0.125 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]) * (1.0 - localCoord[2]);
+			basis[2] = 0.125 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]) * (1.0 - localCoord[2]);
+			basis[3] = 0.125 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]) * (1.0 - localCoord[2]);
 			basis[4] = 0.125 * (1.0 - localCoord[0]) * (1.0 - localCoord[1]) * (1.0 + localCoord[2]);
 			basis[5] = 0.125 * (1.0 + localCoord[0]) * (1.0 - localCoord[1]) * (1.0 + localCoord[2]);
-			basis[7] = 0.125 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]) * (1.0 + localCoord[2]);
-			basis[6] = 0.125 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]) * (1.0 + localCoord[2]);
+			basis[6] = 0.125 * (1.0 - localCoord[0]) * (1.0 + localCoord[1]) * (1.0 + localCoord[2]);
+			basis[7] = 0.125 * (1.0 + localCoord[0]) * (1.0 + localCoord[1]) * (1.0 + localCoord[2]);
 		}
 
 		memset( particle->coord, 0, sizeof(double) * nDims );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ParticleCommHandler.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,6 +41,7 @@
 #include "ParticleCommHandler.h"
 
 #include "SwarmClass.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 #include "StandardParticle.h"
@@ -593,7 +594,7 @@
 				maxProcTime = procTimes[proc_I];
 			}
 		}
-		// TODO: print some stats on max particles sent/recvd and total sent/recvd
+		/* TODO: print some stats on max particles sent/recvd and total sent/recvd */
 		Journal_Printf( info, "...Max Communication time by any proc was %.2f (secs)\n", maxProcTime );
 	}
 	Memory_Free( procTimes );
@@ -1046,7 +1047,7 @@
 		particlesLeavingMyDomain = Memory_Alloc_Bytes( particlesLeavingDomainSizeBytes, "Particle",
 			"particlesLeavingMyDomain" );
 
-		// TODO: investigate doing this with an MPI_Indexed datatype instead...
+		/* TODO: investigate doing this with an MPI_Indexed datatype instead... */
 		Journal_DPrintfL( self->debug, 2, "Copying particles leaving my domain to temp. transfer array\n" );
 		Stream_IndentBranch( Swarm_Debug );
 
@@ -1054,7 +1055,7 @@
 		MPI_Type_indexed( 
 			self->particlesOutsideDomainTotalCount,
 			blocklens,
-			self->particlesOutsideDomainIndices,//change to contiguous indices?
+			self->particlesOutsideDomainIndices,/*change to contiguous indices?*/
 			MPI_BYTE,
 			ParticlesLeavingDomainTransferIndexed
 			);

Added: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ShadowInfo.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ShadowInfo.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/ShadowInfo.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -0,0 +1,73 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+**
+** Authors:
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  This library is free software; you can redistribute it and/or
+**  modify it under the terms of the GNU Lesser General Public
+**  License as published by the Free Software Foundation; either
+**  version 2.1 of the License, or (at your option) any later version.
+**
+**  This library is distributed in the hope that it will be useful,
+**  but WITHOUT ANY WARRANTY; without even the implied warranty of
+**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+**  Lesser General Public License for more details.
+**
+**  You should have received a copy of the GNU Lesser General Public
+**  License along with this library; if not, write to the Free Software
+**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+**
+*/
+/** \file
+**  Role:
+**	Stores the information necessary to share shadow values between
+**	processors.
+**
+** Assumptions:
+**
+** Comments:
+**	May want to turn this into a full-fledged class eventually that
+**	actually transfers the information for you...
+**
+** $Id: ShadowInfo.h 3462 2006-02-19 06:53:24Z WalterLandry $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __Discretisaton_Mesh_ShadowInfo_h__
+#define __Discretisaton_Mesh_ShadowInfo_h__
+
+struct ProcNbrInfo {
+	/** Count of neighbouring processors */
+	PartitionIndex	procNbrCnt;
+	/** The rank of each neighbour processor */
+	PartitionIndex*	procNbrTbl;
+};
+
+/** Stores the information necessary to transfer shadowed values between
+processors. */
+struct ShadowInfo {
+	/** Info on neigbouring processor indices */
+	ProcNbrInfo*	procNbrInfo;
+	/** For each nbr processor, count of how many of its shadow nodes
+	live on the current processor */
+	Index*		procShadowedCnt;
+	/** For each nbr processor, for each of its shadow nodes
+	that live on the current processor, gives the local index of that
+	node */
+	LocalIndex**	procShadowedTbl;
+	/** For each nbr processor, count of how many of my shadow nodes
+	live on that processor */
+	Index*		procShadowCnt;
+	/** For each nbr processor, for each of my shadow nodes that
+	live on that processor, gives its domain index on my proc. */
+	DomainIndex**	procShadowTbl;
+};
+
+#endif /* __Discretisaton_Mesh_ShadowInfo_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -225,8 +225,12 @@
 	
 	if( deep ) {
 		if( (newSingleCellLayout->cellPointCoords = PtrMap_Find( map, self->cellPointCoords )) == NULL && self->cellPointCoords ) {
-			newSingleCellLayout->cellPointCoords = Memory_Alloc_Array( Coord, newSingleCellLayout->pointCount, "SingleCellLayout->cellPoints" );
-			memcpy( newSingleCellLayout->cellPointCoords, self->cellPointCoords, sizeof(Coord) * newSingleCellLayout->pointCount );
+			unsigned	p_i;
+
+			newSingleCellLayout->cellPointCoords = Memory_Alloc_2DArray( double, newSingleCellLayout->pointCount, 3, "SingleCellLayout->cellPoints" );
+			for( p_i = 0; p_i < newSingleCellLayout->pointCount; p_i++ )
+				memcpy( newSingleCellLayout->cellPointCoords[p_i], self->cellPointCoords[p_i], 
+					sizeof(double) * 3 * newSingleCellLayout->pointCount );
 			PtrMap_Append( map, self->cellPointCoords, newSingleCellLayout->cellPointCoords );
 		}
 	}
@@ -351,7 +355,7 @@
 	tempCoord[1] = self->min[J_AXIS];
 	tempCoord[2] = self->min[K_AXIS];
 	 
-	self->cellPointCoords = Memory_Alloc_Array( Coord, self->pointCount, "SingleCellLayout->cellPoints" );
+	self->cellPointCoords = Memory_Alloc_2DArray( double, self->pointCount, 3, "SingleCellLayout->cellPoints" );
 	
 	/* Now generate the coordinates */
 	for ( k=0; k <= self->dimExists[K_AXIS]; k++ ) {
@@ -397,7 +401,7 @@
 
 Bool _SingleCellLayout_IsInCell( void* singleCellLayout, Cell_Index cellIndex, void* particle ) {
 	SingleCellLayout* self = (SingleCellLayout*)singleCellLayout;
-	Coord* coord = (Coord*)particle;
+	double** coord = (double**)particle;
 	Index dim_I = 0;
 	
 	for (dim_I=0; dim_I < 3; dim_I++ ) {

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SingleCellLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -57,7 +57,7 @@
 		Bool            dimExists[3];    /** Defines whether each dimension exists in current sim*/\
 		XYZ             min;             /** Max top-right-back corner of cell */\
 		XYZ             max;             /** Min bottom-left-front corner of cell */ \
-		Coord*          cellPointCoords; /** Generated cell points in single cell */\
+		double**        cellPointCoords; /** Generated cell points in single cell */\
 		Cell_PointIndex pointCount;	     /** Count of points in single cell */\
 
 	struct SingleCellLayout { __SingleCellLayout };
@@ -127,7 +127,7 @@
 		Cell_Points points );
 	
 	/** Implements CellLayout_MapElementIdToCellId(): always return 0, since all elements correspond to the same cell */
-	Cell_Index _SingleCellLayout_MapElementIdToCellId( void* cellLayout, Element_DomainIndex element_dI );
+	Cell_Index _SingleCellLayout_MapElementIdToCellId( void* cellLayout, unsigned element_dI );
 	
 	/* Specify whether a particle is in a given cell */
 	Bool _SingleCellLayout_IsInCell( void* singleCellLayout, Cell_Index cellIndex, void* particle );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -44,6 +44,7 @@
 
 #include "SwarmClass.h"
 #include "StandardParticle.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 
@@ -261,8 +262,8 @@
 {
 	SpaceFillerParticleLayout*  self     = (SpaceFillerParticleLayout*)spaceFillerParticleLayout;
 	Swarm*                      swarm    = (Swarm*)_swarm;
-	Coord                       min;
-	Coord                       max;
+	double				minCrd[3];
+	double				maxCrd[3];
 	Dimension_Index             dim_I;
 	double*                     coord;
 	GlobalParticle*             particle = (GlobalParticle*)_particle;
@@ -271,18 +272,15 @@
 	should be available as part of all cell layouts */
 	Mesh*			    mesh = ((ElementCellLayout*)swarm->cellLayout)->mesh;
 
-	for ( dim_I=0; dim_I < self->dim; dim_I++ ) {
-		min[dim_I] = ((BlockGeometry*) mesh->layout->elementLayout->geometry)->min[dim_I];
-		max[dim_I] = ((BlockGeometry*) mesh->layout->elementLayout->geometry)->max[dim_I];
-	}	
-	
+	Mesh_GetGlobalCoordRange( mesh, minCrd, maxCrd );
+
 	coord = particle->coord;
 	memset( coord, 0, sizeof(Coord) );
 	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
 		coord[ dim_I ] = SobolGenerator_GetNextNumber_WithMinMax(
 					self->sobolGenerator[ dim_I ], 
-					min[ dim_I ], 
-					max[ dim_I ]);
+					minCrd[ dim_I ], 
+					maxCrd[ dim_I ]);
 	}
 }
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Swarm.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Swarm.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/Swarm.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -45,6 +45,7 @@
 	#include "types.h"
 	#include "shortcuts.h"
 
+	#include "ShadowInfo.h"
 	#include "StandardParticle.h"
 	#include "IntegrationPoint.h"
 	#include "CellLayout.h"

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,6 +41,7 @@
 #include "SwarmClass.h"
 
 #include "StandardParticle.h"
+#include "ShadowInfo.h"
 #include "CellLayout.h"
 #include "ElementCellLayout.h"
 #include "ParticleLayout.h"
@@ -358,10 +359,10 @@
 		for( cParticle_I = 0; cParticle_I < self->cellParticleCountTbl[cell_I]; cParticle_I++ ) {
 			dParticle_I = self->cellParticleTbl[cell_I][cParticle_I];
 			Journal_Printf( swarmStream, "\t\t\t(part. index) %d\n", dParticle_I );
-			// TODO: should probably handle this by having a particle print E.P.
-			// which the swarm holds, which can be extended to print the 
-			// particles correctly.
-			// Check how the mesh handles this for elements and nodes...
+			/* TODO: should probably handle this by having a particle print E.P.
+			   which the swarm holds, which can be extended to print the 
+			   particles correctly.
+			   Check how the mesh handles this for elements and nodes... */
 			#if 0
 			Journal_Printf( swarmStream, "\t\t\t(ptr) %p\n", Swarm_ParticleAt( self, dParticle_I ) );
 			Journal_Printf( swarmStream, "\t\t\t%g %g %g\n", 
@@ -888,7 +889,6 @@
 	GlobalParticle       testParticle;
 	double               minDistance;
 	double               distanceToParticle;
-	Topology*            topology;
 	NeighbourIndex       neighbourCount;
 	NeighbourIndex       neighbour_I;
 	NeighbourIndex*      neighbourList;
@@ -912,16 +912,12 @@
 	closestParticle_I = swarm->cellParticleTbl[ lCell_I ][ cParticle_I ];
 
 	/* Find neighbours to this cell - TODO This Assumes ElementCellLayout */
-	topology = ((ElementCellLayout*)swarm->cellLayout)->mesh->layout->elementLayout->topology;
-	neighbourCount = Topology_NeighbourCount( topology, lCell_I );
-	neighbourList  = Memory_Alloc_Array( NeighbourIndex, neighbourCount, "ElementNeighbours" );
-	Topology_BuildNeighbours( topology, lCell_I, neighbourList );
+	Mesh_GetIncidence( ((ElementCellLayout*)swarm->cellLayout)->mesh, dim, lCell_I, dim, 
+			   &neighbourCount, &neighbourList );
 
 	/* Loop over neighbours */
 	for ( neighbour_I = 0 ; neighbour_I < neighbourCount ; neighbour_I++ ) {
 		lCell_I = neighbourList[ neighbour_I ];
-		if ( lCell_I == Topology_Invalid( topology ) )
-			continue;
 
 		/* TODO - Be more clever than checking every particle in this cell */
 		cParticle_I = Swarm_FindClosestParticleInCell( swarm, lCell_I, dim, coord, &distanceToParticle );
@@ -932,7 +928,6 @@
 			closestParticle_I = swarm->cellParticleTbl[ lCell_I ][ cParticle_I ];
 		}
 	}
-	Memory_Free( neighbourList );
 
 	/* Return Distance to this particle */
 	if (distance != NULL)

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SwarmClass.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -64,8 +64,8 @@
 		Dimension_Index                 dim;             \
 		ExtensionManager_Register*      extension_Register; \
 		Stream*                         debug; \
-		Partition_Index                 myRank; \
-		Partition_Index                 nProc; \
+		unsigned	                 myRank; \
+		unsigned        	         nProc; \
 		MPI_Comm                        comm; \
 		/** Used to tell the Swarm_UpdateParticleOwners function whether or not
 		 * parallel comms is necessary. */ \

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -287,9 +287,9 @@
 		case 1:
 			assert( 0 );
 		case 2:
-			points[0] = Memory_Alloc( Coord, "points[0]" );
-			points[1] = Memory_Alloc( Coord, "points[1]" );
-			points[2] = Memory_Alloc( Coord, "points[2]" );
+			*points[0] = Memory_Alloc_Array( double, self->dim, "points[0]" );
+			*points[1] = Memory_Alloc_Array( double, self->dim, "points[1]" );
+			*points[2] = Memory_Alloc_Array( double, self->dim, "points[2]" );
 			
 			(*points[0])[0] = 0.0f;
 			(*points[0])[1] = 0.0f;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/TriSingleCellLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -140,7 +140,7 @@
 		Cell_Points		points );
 	
 	/** Implements CellLayout_MapElementIdToCellId(): always return 0, since all elements correspond to the same cell */
-	Cell_Index _TriSingleCellLayout_MapElementIdToCellId( void* cellLayout, Element_DomainIndex element_dI );		
+	Cell_Index _TriSingleCellLayout_MapElementIdToCellId( void* cellLayout, unsigned element_dI );		
 
 	/* Specify whether a particle is in a given cell */
 	Bool _TriSingleCellLayout_IsInCell( void* triSingleCellLayout, Cell_Index cellIndex, void* particle );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/types.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/types.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -42,6 +42,9 @@
 	/* Types user needs to define */
 	typedef struct _Particle			Particle;
 
+	typedef struct ProcNbrInfo	ProcNbrInfo;
+	typedef struct ShadowInfo	ShadowInfo;
+
 	/** Types of coordinate system a particle/swarm is using */
 	typedef enum {
 		LocalCoordSystem = 0,
@@ -54,7 +57,7 @@
 	typedef Index					Cell_DomainIndex;
 	typedef Index					Cell_ShadowIndex;
 	typedef Index					Cell_ShadowTransferIndex;
-	typedef Coord*					Cell_Point;
+	typedef double**				Cell_Point;
 	typedef Cell_Point*				Cell_Points;
 	typedef Cell_Points*				Cell_PointsList;
 	typedef Index					Cell_PointIndex;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testElementCellLayout0.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testElementCellLayout0.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testElementCellLayout0.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -49,9 +49,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#define ConvertNode(node) \
-	(node == 2 ? 3 : node == 3 ? 2 : node == 6 ? 7 : node == 7 ? 6 : node)
+#define ConvertNode(node) node
 
+
 struct _Node {
 	double temp;
 };
@@ -60,21 +60,43 @@
 	double temp;
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {1, 0, 1};
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm			CommWorld;
 	int				rank;
 	int				numProcessors;
 	int				procToWatch;
-	Dictionary*			dictionary;
-	Topology*			nTopology;
-	ElementLayout*			eLayout;
-	NodeLayout*			nLayout;
-	MeshDecomp*			decomp;
-	MeshLayout*			layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {2, 3, 2};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {300.0, 12.0, 300.0};
 	ExtensionManager_Register*		extensionMgr_Register;
 	Mesh*				mesh;
 	ElementCellLayout*		elementCellLayout;
-	
+
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
 	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
@@ -98,32 +120,9 @@
 	}
 	if( rank == procToWatch ) printf( "Watching rank: %i\n", rank );
 	
-	/* Read input */
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "buildElementNodeTbl", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 300.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 12.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 300.0f ) );
-	
-	/* Run the mesher */
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -137,10 +136,10 @@
 		Element_DomainIndex	element;
 		GlobalParticle          testParticle;
 		
-		for( element = 0; element < mesh->elementLocalCount; element++ ) {
+		for( element = 0; element < Mesh_GetLocalSize( mesh, nDims ); element++ ) {
 			Cell_PointIndex			point;
 			Cell_PointIndex			count;
-			Coord**				cellPoints;
+			double***			cellPoints;
 			Bool				result;
 
 			cell = CellLayout_MapElementIdToCellId( elementCellLayout, element );
@@ -153,7 +152,7 @@
 
 			count = elementCellLayout->_pointCount( elementCellLayout, cell );
 			printf( "cellPointTbl  [%2u][0-%u]:\n", cell, count );
-			cellPoints = Memory_Alloc_Array( Coord*, count, "cellPoints" );
+			cellPoints = Memory_Alloc_Array( double**, count, "cellPoints" );
 			elementCellLayout->_initialisePoints( elementCellLayout, cell, count, cellPoints );
 			for( point = 0; point < count; point++ ) {
 				printf( "\t{%.3g %.3g %.3g}\n", (*cellPoints[ConvertNode(point)])[0], (*cellPoints[ConvertNode(point)])[1], 
@@ -162,16 +161,16 @@
 			printf( "\n" );
 
 			testParticle.coord[0] = ( (*cellPoints[0])[0] + (*cellPoints[1])[0] ) / 2;
-			testParticle.coord[1] = ( (*cellPoints[0])[1] + (*cellPoints[3])[1] ) / 2;
+			testParticle.coord[1] = ( (*cellPoints[0])[1] + (*cellPoints[2])[1] ) / 2;
 			testParticle.coord[2] = ( (*cellPoints[0])[2] + (*cellPoints[4])[2] ) / 2;
 			printf( "Testing if test particle at (%f,%f,%f) is in the cell: ",
 				testParticle.coord[0], testParticle.coord[1], testParticle.coord[2] );
 			result = CellLayout_IsInCell( elementCellLayout, cell, &testParticle );
 			printf( "%d\n\n", result );
 
-			testParticle.coord[0] = (*cellPoints[count-1])[0] + 1;
-			testParticle.coord[1] = (*cellPoints[count-1])[1] + 1;
-			testParticle.coord[2] = (*cellPoints[count-1])[2] + 1;
+			testParticle.coord[0] = (*cellPoints[count-2])[0] + 1;
+			testParticle.coord[1] = (*cellPoints[count-2])[1] + 1;
+			testParticle.coord[2] = (*cellPoints[count-2])[2] + 1;
 			printf( "Testing if test particle at (%f,%f,%f) is in the cell: ",
 				testParticle.coord[0], testParticle.coord[1], testParticle.coord[2] );
 			result = CellLayout_IsInCell( elementCellLayout, cell, &testParticle );
@@ -185,12 +184,6 @@
 	Stg_Class_Delete( elementCellLayout );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();
 	DiscretisationUtils_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testGaussLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testGaussLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testGaussLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -61,17 +61,40 @@
 	__IntegrationPoint
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {1, 0, 1};
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm			CommWorld;
 	int				rank;
 	int				numProcessors;
 	int				procToWatch;
-	Dictionary*			dictionary;
-	Topology*			nTopology;
-	ElementLayout*			eLayout;
-	NodeLayout*			nLayout;
-	MeshDecomp*			decomp;
-	MeshLayout*			layout;
+	Dictionary*	dictionary;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {2, 3, 2};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {300.0, 12.0, 300.0};
 	ExtensionManager_Register*		extensionMgr_Register;
 	Mesh*				mesh;
 	GaussParticleLayout*		gaussParticleLayout;
@@ -117,31 +140,14 @@
 	dictionary = Dictionary_New();
 	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
 	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 300.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 12.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 300.0f ) );
 	Dictionary_Add( dictionary, "gaussParticlesX", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
 	Dictionary_Add( dictionary, "gaussParticlesY", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
 	Dictionary_Add( dictionary, "gaussParticlesZ", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
 	Dictionary_Add( dictionary, "dim", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
 	
-	
-	/* Run the mesher */
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -195,11 +201,6 @@
 	Stg_Class_Delete( swarm );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testManualParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testManualParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testManualParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -61,17 +61,39 @@
 	__IntegrationPoint
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm                    CommWorld;
 	int                         rank;
 	int                         numProcessors;
 	int                         procToWatch;
 	Dictionary*                 dictionary;
-	Topology*                   nTopology;
-	ElementLayout*              eLayout;
-	NodeLayout*                 nLayout;
-	MeshDecomp*                 decomp;
-	MeshLayout*                 layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {4, 2, 1};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	ExtensionManager_Register*  extensionMgr_Register;
 	Mesh*                       mesh;
 	ManualParticleLayout*       particleLayout;
@@ -109,18 +131,6 @@
 	
 	/* Read input */
 	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "dim", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
 	particlePositionsList = Dictionary_Entry_Value_NewList();
 	Dictionary_Add( dictionary, "manualParticlePositions", particlePositionsList );
 	particlePositionEntry = Dictionary_Entry_Value_NewStruct();
@@ -144,18 +154,9 @@
 	Dictionary_Entry_Value_AddMember( particlePositionEntry, "y", Dictionary_Entry_Value_FromDouble( 0.4 ) );
 	Dictionary_Entry_Value_AddMember( particlePositionEntry, "z", Dictionary_Entry_Value_FromDouble( 0.1 ) );
 	
-	/* Run the mesher */
-	dim       = Dictionary_GetUnsignedInt( dictionary, "dim" );
-
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout   = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout   = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp    = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout    = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -188,11 +189,6 @@
 	Stg_Class_Delete( swarm );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testParticleCoords.xml
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testParticleCoords.xml	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testParticleCoords.xml	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,53 +1,28 @@
 <?xml version="1.0"?>
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	<struct name="components">
-		<struct name="cornerNodeTopology">
-			<param name="Type">IJK6Topology</param>
-			<param name="sizeI">elementResI</param>
-			<param name="sizeJ">elementResJ</param>
-			<param name="sizeK">elementResK</param>
-			<param name="sizeShift">1</param>
-		</struct>
-		<struct name="cornerNodeLayout">
-			<param name="Type">CornerNL</param>
-			<param name="ElementLayout">elementLayout</param>
-			<param name="Topology">cornerNodeTopology</param>
-		</struct>
-		<struct name="decomp-linear">
-			<param name="Type">HexaMD</param>
-			<param name="ElementLayout">elementLayout</param>
-			<param name="NodeLayout">cornerNodeLayout</param>
-		</struct>
-		<struct name="meshLayout-linear">
-			<param name="Type">MeshLayout</param>
-			<param name="ElementLayout">elementLayout</param>
-			<param name="NodeLayout">cornerNodeLayout</param>
-			<param name="MeshDecomp">decomp-linear</param>
-		</struct>
 		<struct name="mesh-linear">
 			<param name="Type">Mesh</param>
-			<param name="MeshLayout">meshLayout-linear</param>
 			<param name="ElementSize">8</param>
 			<param name="NodeSize">0</param>
 		</struct>
-		<struct name="geometry">
-			<param name="Type">BlockGeometry</param>
-			<param name="sizeI">elementResI</param>
-			<param name="sizeJ">elementResJ</param>
-			<param name="sizeK">elementResK</param>
-			<param name="sizeShift">+1</param>
+		<struct name="cartesianGenerator">
+			<param name="Type"> CartesianGenerator </param>
+			<param name="mesh"> mesh-linear </param>
+			<param name="dim"> dim </param>
+			<list name="size">
+				<param> 10 </param>
+				<param> 10 </param>
+			</list>
+			<list name="minCoord">
+				<param> 0 </param>
+				<param> 0 </param>
+			</list>
+			<list name="maxCoord">
+				<param> 100 </param>
+				<param> 100 </param>
+			</list>
 		</struct>
-			<struct name="elementTopology">
-			<param name="Type">IJK26Topology</param>
-			<param name="sizeI">elementResI</param>
-			<param name="sizeJ">elementResJ</param>
-			<param name="sizeK">elementResK</param>
-		</struct>
-		<struct name="elementLayout">
-			<param name="Type">ParallelPipedHexaEL</param>
-			<param name="Topology">elementTopology</param>
-			<param name="Geometry">geometry</param>
-		</struct>
  
 		<struct name="elementCellLayout"> 
 			<param name="Type">ElementCellLayout</param>
@@ -67,17 +42,5 @@
 
 	<param name="outputPath">./output</param> 
 	<param name="dim">2</param>
-	<param name="elementResI">10</param>
-	<param name="elementResJ">10</param> 
-	<param name="elementResK">1</param> 
-	<param name="shadowDepth">1</param>
-	<param name="minX">0.0</param> 
-	<param name="minY">0.0</param> 
-	<param name="minZ">0.0</param>
-	<param name="maxX">100.0</param> 
-	<param name="maxY">100.0</param>
-	<param name="maxZ">100.0</param>
-	<param name="allowUnbalancing">True</param> 
-	<param name="buildElementNodeTbl">True</param> 
-	
+
 </StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSingleCellLayout0.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSingleCellLayout0.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSingleCellLayout0.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -111,8 +111,13 @@
 	
 	if( rank == procToWatch ) {
 		Cell_Index cell;
-		Coord**				cellPoints = NULL;
-		Coord testCoord = { 0, 0, 0 };
+		double***				cellPoints = NULL;
+		double					*testCoord;
+
+		testCoord = Memory_Alloc_Array_Unnamed( double, 3 );
+		testCoord[0] = 0;
+		testCoord[1] = 0;
+		testCoord[2] = 0;
 		
 		for( cell = 0; cell < singleCellLayout->_cellLocalCount( singleCellLayout ); cell++ ) {
 			Cell_PointIndex			point;
@@ -120,7 +125,7 @@
 			
 			count = singleCellLayout->_pointCount( singleCellLayout, cell );
 			printf( "cellPointTbl  [%2u][0-%u]:\n", cell, count );
-			cellPoints = Memory_Alloc_Array( Coord*, count, "cellsPoints" );
+			cellPoints = Memory_Alloc_Array( double**, count, "cellsPoints" );
 			singleCellLayout->_initialisePoints( singleCellLayout, cell, count, cellPoints );
 			for( point = 0; point < count; point++ ) {
 				printf( "\t{%.3g %.3g %.3g}\n", (*cellPoints[point])[I_AXIS], (*cellPoints[point])[J_AXIS], 
@@ -150,6 +155,8 @@
 		printf( "For particle {2,1,1}: %u\n",
 			CellLayout_IsInCell( singleCellLayout, 0, &testCoord ) );
 		Memory_Free( cellPoints );
+
+		Memory_Free( testCoord );
 	}
 	
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSpaceFillerParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSpaceFillerParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSpaceFillerParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -61,25 +61,46 @@
 	__IntegrationPoint
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm                    CommWorld;
 	int                         rank;
 	int                         numProcessors;
 	int                         procToWatch;
 	Dictionary*                 dictionary;
-	Topology*                   nTopology;
-	ElementLayout*              eLayout;
-	NodeLayout*                 nLayout;
-	MeshDecomp*                 decomp;
-	MeshLayout*                 layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {4, 2, 1};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {400.0, 200.0, 100.0};
 	ExtensionManager_Register*  extensionMgr_Register;
 	Mesh*                       mesh;
 	SpaceFillerParticleLayout*        particleLayout;
 	ElementCellLayout*          elementCellLayout;
 	Swarm*                      swarm;
 	Stream*                     stream;
-	Dimension_Index             dim;
-	
+
 	/* Initialise MPI, get world info */
 	MPI_Init( &argc, &argv );
 	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
@@ -108,32 +129,10 @@
 	
 	/* Read input */
 	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 400.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 200.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 100.0f ) );
-	Dictionary_Add( dictionary, "dim", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
 	
-	
-	/* Run the mesher */
-	dim       = Dictionary_GetUnsignedInt( dictionary, "dim" );
-
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout   = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout   = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp    = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout    = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -142,10 +141,10 @@
 	Build( mesh, 0, False );
 	Initialise( mesh, 0, False );
 	
-	particleLayout = SpaceFillerParticleLayout_New( "spaceFillerParticleLayout", dim, SpaceFillerParticleLayout_Invalid, 20 );
+	particleLayout = SpaceFillerParticleLayout_New( "spaceFillerParticleLayout", nDims, SpaceFillerParticleLayout_Invalid, 20 );
 	
 	/* Configure the swarm */
-	swarm = Swarm_New(  "testSwarm", elementCellLayout, particleLayout, dim, sizeof(Particle),
+	swarm = Swarm_New(  "testSwarm", elementCellLayout, particleLayout, nDims, sizeof(Particle),
 		extensionMgr_Register, NULL, CommWorld );
 	
 	/* Build the swarm */
@@ -165,11 +164,6 @@
 	Stg_Class_Delete( swarm );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,22 +1,23 @@
+StGermain Framework revision 3900. Copyright (C) 2003-2005 VPAC.
 Watching rank: 0
-Swarm (ptr): 0x80682d0
-Stg_Component (ptr): 0x80682d0
-Stg_Object (ptr): 0x80682d0
-	Stg_Class (ptr): 0x80682d0
+Swarm (ptr): 0x132a378
+Stg_Component (ptr): 0x132a378
+Stg_Object (ptr): 0x132a378
+	Stg_Class (ptr): 0x132a378
 		sizeOfSelf: 220
 		_deleteSelf: Yes
 		type: Swarm
-		_delete (func ptr): 0x4002cbb0
-		_print (func ptr): 0x4002ccc4
-		_copy (func ptr): 0x4002d2d9
+		_delete (func ptr): 0x215b1c
+		_print (func ptr): 0x215c58
+		_copy (func ptr): 0x2162b4
 	name: testSwarm
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x4002dbd4
-	_construct (func ptr): 0x4002dcb7
-	_build (func ptr): 0x4002def7
-	_initialise (func ptr): 0x4002e21e
-	_execute (func ptr): 0x4002e2f7
-	_destroy (func ptr): 0x4002e2fc
+	_defaultConstructor (func ptr): 0x216c00
+	_construct (func ptr): 0x216d04
+	_build (func ptr): 0x217010
+	_initialise (func ptr): 0x217100
+	_execute (func ptr): 0x21719c
+	_destroy (func ptr): 0x2171bc
 	isConstructed: True
 	isBuilt: True
 	isInitialised: True
@@ -27,25 +28,25 @@
 	initialise function name: testSwarm-Initialise
 	execute function name: testSwarm-Execute
 	destroy function name: testSwarm-Destroy
-ElementCellLayout (ptr): 0x8067860
-CellLayout (ptr): 0x8067860
-Stg_Component (ptr): 0x8067860
-Stg_Object (ptr): 0x8067860
-	Stg_Class (ptr): 0x8067860
-		sizeOfSelf: 132
+ElementCellLayout (ptr): 0x131d878
+CellLayout (ptr): 0x131d878
+Stg_Component (ptr): 0x131d878
+Stg_Object (ptr): 0x131d878
+	Stg_Class (ptr): 0x131d878
+		sizeOfSelf: 152
 		_deleteSelf: Yes
 		type: ElementCellLayout
-		_delete (func ptr): 0x400214dc
-		_print (func ptr): 0x40021505
-		_copy (func ptr): 0x40021579
+		_delete (func ptr): 0x207224
+		_print (func ptr): 0x207260
+		_copy (func ptr): 0x2072e4
 	name: elementCellLayout
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x40021010
-	_construct (func ptr): 0x40021651
-	_build (func ptr): 0x400216c5
-	_initialise (func ptr): 0x400216ca
-	_execute (func ptr): 0x400216cf
-	_destroy (func ptr): 0x400216d4
+	_defaultConstructor (func ptr): 0x206cfc
+	_construct (func ptr): 0x2073e4
+	_build (func ptr): 0x20748c
+	_initialise (func ptr): 0x207560
+	_execute (func ptr): 0x207580
+	_destroy (func ptr): 0x2075a0
 	isConstructed: True
 	isBuilt: False
 	isInitialised: False
@@ -56,59 +57,59 @@
 	initialise function name: elementCellLayout-Initialise
 	execute function name: elementCellLayout-Execute
 	destroy function name: elementCellLayout-Destroy
-	_cellLocalCount (func ptr): 0x400216d9
-	_cellShadowCount (func ptr): 0x400216f6
-	_pointCount (func ptr): 0x40021713
-	_initialisePoints (func ptr): 0x4002173d
-	_mapElementIdToCellId (func ptr): 0x400217c7
-	_isInCell (func ptr): 0x4002185a
-	_cellOf (func ptr): 0x40021a5d
-	_getShadowInfo (func ptr): 0x40021c50
-	mesh (ptr): 0x8066280
-RandomParticleLayout (ptr): 0x8067c78:
-PerCellParticleLayout (ptr): 0x8067c78
-ParticleLayout (ptr): 0x8067c78
-Stg_Class (ptr): 0x8067c78
+	_cellLocalCount (func ptr): 0x2075c0
+	_cellShadowCount (func ptr): 0x207624
+	_pointCount (func ptr): 0x207688
+	_initialisePoints (func ptr): 0x207708
+	_mapElementIdToCellId (func ptr): 0x2077f4
+	_isInCell (func ptr): 0x20781c
+	_cellOf (func ptr): 0x2078e0
+	_getShadowInfo (func ptr): 0x207b0c
+	mesh (ptr): 0x131dcc8
+RandomParticleLayout (ptr): 0x132a038:
+PerCellParticleLayout (ptr): 0x132a038
+ParticleLayout (ptr): 0x132a038
+Stg_Class (ptr): 0x132a038
 	sizeOfSelf: 132
 	_deleteSelf: Yes
 	type: RandomParticleLayout
-	_delete (func ptr): 0x4002aed3
-	_print (func ptr): 0x4002aefc
-	_copy (func ptr): 0x4002af8f
-	_setInitialCounts (func ptr): 0x4002a335
-	_initialiseParticles (func ptr): 0x4002a4d2
+	_delete (func ptr): 0x21338c
+	_print (func ptr): 0x2133c8
+	_copy (func ptr): 0x213468
+	_setInitialCounts (func ptr): 0x212390
+	_initialiseParticles (func ptr): 0x21256c
 	coordSystem: GlobalCoordSystem
 	weightsInitialisedAtStartup : False
-	_initialCount (func ptr): 0x4002b168
-	_initialiseParticlesOfCell (func ptr): 0x4002b17c
+	_initialCount (func ptr): 0x213710
+	_initialiseParticlesOfCell (func ptr): 0x213748
 	cellParticleCount: 4
 	seed: 13
 	cellLocalCount: 12
 	cellDomainCount: 12
 	cellShadowCount: 0
-	cellPointCountTbl (ptr): 0x8069710
+	cellPointCountTbl (ptr): 0x132afa8
 	cellPointCountTbl[0-12]: 008 008 008 008 008 008 008 008 008 008 008 008 
-	cellPointTbl (ptr): 0x8069750
+	cellPointTbl (ptr): 0x132b788
 	cellPointTbl[0-12]: {
-	cellPointTbl[0][0-8]: {0 0 0} {150 0 0} {150 4 0} {0 4 0} {0 0 150} {150 0 150} {150 4 150} {0 4 150} 
-	cellPointTbl[1][0-8]: {150 0 0} {300 0 0} {300 4 0} {150 4 0} {150 0 150} {300 0 150} {300 4 150} {150 4 150} 
-	cellPointTbl[2][0-8]: {0 4 0} {150 4 0} {150 8 0} {0 8 0} {0 4 150} {150 4 150} {150 8 150} {0 8 150} 
-	cellPointTbl[3][0-8]: {150 4 0} {300 4 0} {300 8 0} {150 8 0} {150 4 150} {300 4 150} {300 8 150} {150 8 150} 
-	cellPointTbl[4][0-8]: {0 8 0} {150 8 0} {150 12 0} {0 12 0} {0 8 150} {150 8 150} {150 12 150} {0 12 150} 
-	cellPointTbl[5][0-8]: {150 8 0} {300 8 0} {300 12 0} {150 12 0} {150 8 150} {300 8 150} {300 12 150} {150 12 150} 
-	cellPointTbl[6][0-8]: {0 0 150} {150 0 150} {150 4 150} {0 4 150} {0 0 300} {150 0 300} {150 4 300} {0 4 300} 
-	cellPointTbl[7][0-8]: {150 0 150} {300 0 150} {300 4 150} {150 4 150} {150 0 300} {300 0 300} {300 4 300} {150 4 300} 
-	cellPointTbl[8][0-8]: {0 4 150} {150 4 150} {150 8 150} {0 8 150} {0 4 300} {150 4 300} {150 8 300} {0 8 300} 
-	cellPointTbl[9][0-8]: {150 4 150} {300 4 150} {300 8 150} {150 8 150} {150 4 300} {300 4 300} {300 8 300} {150 8 300} 
-	cellPointTbl[10][0-8]: {0 8 150} {150 8 150} {150 12 150} {0 12 150} {0 8 300} {150 8 300} {150 12 300} {0 12 300} 
-	cellPointTbl[11][0-8]: {150 8 150} {300 8 150} {300 12 150} {150 12 150} {150 8 300} {300 8 300} {300 12 300} {150 12 300} 
+	cellPointTbl[0][0-8]: {0 0 0} {150 0 0} {0 4 0} {150 4 0} {0 0 150} {150 0 150} {0 4 150} {150 4 150} 
+	cellPointTbl[1][0-8]: {150 0 0} {300 0 0} {150 4 0} {300 4 0} {150 0 150} {300 0 150} {150 4 150} {300 4 150} 
+	cellPointTbl[2][0-8]: {0 4 0} {150 4 0} {0 8 0} {150 8 0} {0 4 150} {150 4 150} {0 8 150} {150 8 150} 
+	cellPointTbl[3][0-8]: {150 4 0} {300 4 0} {150 8 0} {300 8 0} {150 4 150} {300 4 150} {150 8 150} {300 8 150} 
+	cellPointTbl[4][0-8]: {0 8 0} {150 8 0} {0 12 0} {150 12 0} {0 8 150} {150 8 150} {0 12 150} {150 12 150} 
+	cellPointTbl[5][0-8]: {150 8 0} {300 8 0} {150 12 0} {300 12 0} {150 8 150} {300 8 150} {150 12 150} {300 12 150} 
+	cellPointTbl[6][0-8]: {0 0 150} {150 0 150} {0 4 150} {150 4 150} {0 0 300} {150 0 300} {0 4 300} {150 4 300} 
+	cellPointTbl[7][0-8]: {150 0 150} {300 0 150} {150 4 150} {300 4 150} {150 0 300} {300 0 300} {150 4 300} {300 4 300} 
+	cellPointTbl[8][0-8]: {0 4 150} {150 4 150} {0 8 150} {150 8 150} {0 4 300} {150 4 300} {0 8 300} {150 8 300} 
+	cellPointTbl[9][0-8]: {150 4 150} {300 4 150} {150 8 150} {300 8 150} {150 4 300} {300 4 300} {150 8 300} {300 8 300} 
+	cellPointTbl[10][0-8]: {0 8 150} {150 8 150} {0 12 150} {150 12 150} {0 8 300} {150 8 300} {0 12 300} {150 12 300} 
+	cellPointTbl[11][0-8]: {150 8 150} {300 8 150} {150 12 150} {300 12 150} {150 8 300} {300 8 300} {150 12 300} {300 12 300} 
 }
 
-	cellParticleCountTbl (ptr): 0x8069910
+	cellParticleCountTbl (ptr): 0x132b948
 	cellParticleCountTbl[0-12]: 004 004 004 004 004 004 004 004 004 004 004 004 
-	cellParticleSizeTbl (ptr): 0x8069950
+	cellParticleSizeTbl (ptr): 0x132b988
 	cellParticleSizeTbl[0-12]: 004 004 004 004 004 004 004 004 004 004 004 004 
-	cellParticleTbl (ptr): 0x8069990
+	cellParticleTbl (ptr): 0x132b9c8
 	cellParticleTbl [0-12]: {
 		cellParticleTbl[0][0-4]:
 			(part. index) 0

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,23 +1,23 @@
-StGermain Framework revision 3623. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3900. Copyright (C) 2003-2005 VPAC.
 Watching rank: 0
-Swarm (ptr): 0x80683c0
-Stg_Component (ptr): 0x80683c0
-Stg_Object (ptr): 0x80683c0
-	Stg_Class (ptr): 0x80683c0
+Swarm (ptr): 0x132e598
+Stg_Component (ptr): 0x132e598
+Stg_Object (ptr): 0x132e598
+	Stg_Class (ptr): 0x132e598
 		sizeOfSelf: 220
 		_deleteSelf: Yes
 		type: Swarm
-		_delete (func ptr): 0x4002cbb0
-		_print (func ptr): 0x4002ccc4
-		_copy (func ptr): 0x4002d2d9
+		_delete (func ptr): 0x215b1c
+		_print (func ptr): 0x215c58
+		_copy (func ptr): 0x2162b4
 	name: testSwarm
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x4002dbd4
-	_construct (func ptr): 0x4002dcb7
-	_build (func ptr): 0x4002def7
-	_initialise (func ptr): 0x4002e21e
-	_execute (func ptr): 0x4002e2f7
-	_destroy (func ptr): 0x4002e2fc
+	_defaultConstructor (func ptr): 0x216c00
+	_construct (func ptr): 0x216d04
+	_build (func ptr): 0x217010
+	_initialise (func ptr): 0x217100
+	_execute (func ptr): 0x21719c
+	_destroy (func ptr): 0x2171bc
 	isConstructed: True
 	isBuilt: True
 	isInitialised: True
@@ -28,25 +28,25 @@
 	initialise function name: testSwarm-Initialise
 	execute function name: testSwarm-Execute
 	destroy function name: testSwarm-Destroy
-ElementCellLayout (ptr): 0x80679b8
-CellLayout (ptr): 0x80679b8
-Stg_Component (ptr): 0x80679b8
-Stg_Object (ptr): 0x80679b8
-	Stg_Class (ptr): 0x80679b8
-		sizeOfSelf: 132
+ElementCellLayout (ptr): 0x131ed38
+CellLayout (ptr): 0x131ed38
+Stg_Component (ptr): 0x131ed38
+Stg_Object (ptr): 0x131ed38
+	Stg_Class (ptr): 0x131ed38
+		sizeOfSelf: 152
 		_deleteSelf: Yes
 		type: ElementCellLayout
-		_delete (func ptr): 0x400214dc
-		_print (func ptr): 0x40021505
-		_copy (func ptr): 0x40021579
+		_delete (func ptr): 0x207224
+		_print (func ptr): 0x207260
+		_copy (func ptr): 0x2072e4
 	name: elementCellLayout
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x40021010
-	_construct (func ptr): 0x40021651
-	_build (func ptr): 0x400216c5
-	_initialise (func ptr): 0x400216ca
-	_execute (func ptr): 0x400216cf
-	_destroy (func ptr): 0x400216d4
+	_defaultConstructor (func ptr): 0x206cfc
+	_construct (func ptr): 0x2073e4
+	_build (func ptr): 0x20748c
+	_initialise (func ptr): 0x207560
+	_execute (func ptr): 0x207580
+	_destroy (func ptr): 0x2075a0
 	isConstructed: True
 	isBuilt: False
 	isInitialised: False
@@ -57,56 +57,60 @@
 	initialise function name: elementCellLayout-Initialise
 	execute function name: elementCellLayout-Execute
 	destroy function name: elementCellLayout-Destroy
-	_cellLocalCount (func ptr): 0x400216d9
-	_cellShadowCount (func ptr): 0x400216f6
-	_pointCount (func ptr): 0x40021713
-	_initialisePoints (func ptr): 0x4002173d
-	_mapElementIdToCellId (func ptr): 0x400217c7
-	_isInCell (func ptr): 0x4002185a
-	_cellOf (func ptr): 0x40021a5d
-	_getShadowInfo (func ptr): 0x40021c50
-	mesh (ptr): 0x8066688
-RandomParticleLayout (ptr): 0x8067df0:
-PerCellParticleLayout (ptr): 0x8067df0
-ParticleLayout (ptr): 0x8067df0
-Stg_Class (ptr): 0x8067df0
+	_cellLocalCount (func ptr): 0x2075c0
+	_cellShadowCount (func ptr): 0x207624
+	_pointCount (func ptr): 0x207688
+	_initialisePoints (func ptr): 0x207708
+	_mapElementIdToCellId (func ptr): 0x2077f4
+	_isInCell (func ptr): 0x20781c
+	_cellOf (func ptr): 0x2078e0
+	_getShadowInfo (func ptr): 0x207b0c
+	mesh (ptr): 0x131f1a8
+RandomParticleLayout (ptr): 0x132e228:
+PerCellParticleLayout (ptr): 0x132e228
+ParticleLayout (ptr): 0x132e228
+Stg_Class (ptr): 0x132e228
 	sizeOfSelf: 132
 	_deleteSelf: Yes
 	type: RandomParticleLayout
-	_delete (func ptr): 0x4002aed3
-	_print (func ptr): 0x4002aefc
-	_copy (func ptr): 0x4002af8f
-	_setInitialCounts (func ptr): 0x4002a335
-	_initialiseParticles (func ptr): 0x4002a4d2
+	_delete (func ptr): 0x21338c
+	_print (func ptr): 0x2133c8
+	_copy (func ptr): 0x213468
+	_setInitialCounts (func ptr): 0x212390
+	_initialiseParticles (func ptr): 0x21256c
 	coordSystem: GlobalCoordSystem
 	weightsInitialisedAtStartup : False
-	_initialCount (func ptr): 0x4002b168
-	_initialiseParticlesOfCell (func ptr): 0x4002b17c
+	_initialCount (func ptr): 0x213710
+	_initialiseParticlesOfCell (func ptr): 0x213748
 	cellParticleCount: 4
 	seed: 13
 	cellLocalCount: 8
-	cellDomainCount: 8
-	cellShadowCount: 0
-	cellPointCountTbl (ptr): 0x8069078
-	cellPointCountTbl[0-8]: 008 008 008 008 008 008 008 008 
-	cellPointTbl (ptr): 0x80698a0
-	cellPointTbl[0-8]: {
-	cellPointTbl[0][0-8]: {0 0 0} {150 0 0} {150 4 0} {0 4 0} {0 0 150} {150 0 150} {150 4 150} {0 4 150} 
-	cellPointTbl[1][0-8]: {150 0 0} {300 0 0} {300 4 0} {150 4 0} {150 0 150} {300 0 150} {300 4 150} {150 4 150} 
-	cellPointTbl[2][0-8]: {0 4 0} {150 4 0} {150 8 0} {0 8 0} {0 4 150} {150 4 150} {150 8 150} {0 8 150} 
-	cellPointTbl[3][0-8]: {150 4 0} {300 4 0} {300 8 0} {150 8 0} {150 4 150} {300 4 150} {300 8 150} {150 8 150} 
-	cellPointTbl[4][0-8]: {0 0 150} {150 0 150} {150 4 150} {0 4 150} {0 0 300} {150 0 300} {150 4 300} {0 4 300} 
-	cellPointTbl[5][0-8]: {150 0 150} {300 0 150} {300 4 150} {150 4 150} {150 0 300} {300 0 300} {300 4 300} {150 4 300} 
-	cellPointTbl[6][0-8]: {0 4 150} {150 4 150} {150 8 150} {0 8 150} {0 4 300} {150 4 300} {150 8 300} {0 8 300} 
-	cellPointTbl[7][0-8]: {150 4 150} {300 4 150} {300 8 150} {150 8 150} {150 4 300} {300 4 300} {300 8 300} {150 8 300} 
+	cellDomainCount: 12
+	cellShadowCount: 4
+	cellPointCountTbl (ptr): 0x132f238
+	cellPointCountTbl[0-12]: 008 008 008 008 008 008 008 008 008 008 008 008 
+	cellPointTbl (ptr): 0x132fa78
+	cellPointTbl[0-12]: {
+	cellPointTbl[0][0-8]: {0 0 0} {150 0 0} {0 4 0} {150 4 0} {0 0 150} {150 0 150} {0 4 150} {150 4 150} 
+	cellPointTbl[1][0-8]: {150 0 0} {300 0 0} {150 4 0} {300 4 0} {150 0 150} {300 0 150} {150 4 150} {300 4 150} 
+	cellPointTbl[2][0-8]: {0 4 0} {150 4 0} {0 8 0} {150 8 0} {0 4 150} {150 4 150} {0 8 150} {150 8 150} 
+	cellPointTbl[3][0-8]: {150 4 0} {300 4 0} {150 8 0} {300 8 0} {150 4 150} {300 4 150} {150 8 150} {300 8 150} 
+	cellPointTbl[4][0-8]: {0 0 150} {150 0 150} {0 4 150} {150 4 150} {0 0 300} {150 0 300} {0 4 300} {150 4 300} 
+	cellPointTbl[5][0-8]: {150 0 150} {300 0 150} {150 4 150} {300 4 150} {150 0 300} {300 0 300} {150 4 300} {300 4 300} 
+	cellPointTbl[6][0-8]: {0 4 150} {150 4 150} {0 8 150} {150 8 150} {0 4 300} {150 4 300} {0 8 300} {150 8 300} 
+	cellPointTbl[7][0-8]: {150 4 150} {300 4 150} {150 8 150} {300 8 150} {150 4 300} {300 4 300} {150 8 300} {300 8 300} 
+	cellPointTbl[8][0-8]: {0 8 0} {150 8 0} {0 12 0} {150 12 0} {0 8 150} {150 8 150} {0 12 150} {150 12 150} 
+	cellPointTbl[9][0-8]: {150 8 0} {300 8 0} {150 12 0} {300 12 0} {150 8 150} {300 8 150} {150 12 150} {300 12 150} 
+	cellPointTbl[10][0-8]: {0 8 150} {150 8 150} {0 12 150} {150 12 150} {0 8 300} {150 8 300} {0 12 300} {150 12 300} 
+	cellPointTbl[11][0-8]: {150 8 150} {300 8 150} {150 12 150} {300 12 150} {150 8 300} {300 8 300} {150 12 300} {300 12 300} 
 }
 
-	cellParticleCountTbl (ptr): 0x80699d0
-	cellParticleCountTbl[0-8]: 004 004 004 004 004 004 004 004 
-	cellParticleSizeTbl (ptr): 0x8069a00
-	cellParticleSizeTbl[0-8]: 004 004 004 004 004 004 004 004 
-	cellParticleTbl (ptr): 0x8069a30
-	cellParticleTbl [0-8]: {
+	cellParticleCountTbl (ptr): 0x132fc38
+	cellParticleCountTbl[0-12]: 004 004 004 004 004 004 004 004 000 000 000 000 
+	cellParticleSizeTbl (ptr): 0x132fc78
+	cellParticleSizeTbl[0-12]: 004 004 004 004 004 004 004 004 000 000 000 000 
+	cellParticleTbl (ptr): 0x132fcb8
+	cellParticleTbl [0-12]: {
 		cellParticleTbl[0][0-4]:
 			(part. index) 0
 			(part. index) 1
@@ -155,6 +159,14 @@
 			(part. index) 30
 			(part. index) 31
 
+		cellParticleTbl[8][0-0]:
+
+		cellParticleTbl[9][0-0]:
+
+		cellParticleTbl[10][0-0]:
+
+		cellParticleTbl[11][0-0]:
+
 	}
 	particlesArraySize: 33
 	particlesArrayDelta: 1

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,23 +1,23 @@
-StGermain Framework revision 3623. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3900. Copyright (C) 2003-2005 VPAC.
 Watching rank: 1
-Swarm (ptr): 0x80673d0
-Stg_Component (ptr): 0x80673d0
-Stg_Object (ptr): 0x80673d0
-	Stg_Class (ptr): 0x80673d0
+Swarm (ptr): 0x132b268
+Stg_Component (ptr): 0x132b268
+Stg_Object (ptr): 0x132b268
+	Stg_Class (ptr): 0x132b268
 		sizeOfSelf: 220
 		_deleteSelf: Yes
 		type: Swarm
-		_delete (func ptr): 0x4002cbb0
-		_print (func ptr): 0x4002ccc4
-		_copy (func ptr): 0x4002d2d9
+		_delete (func ptr): 0x215b1c
+		_print (func ptr): 0x215c58
+		_copy (func ptr): 0x2162b4
 	name: testSwarm
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x4002dbd4
-	_construct (func ptr): 0x4002dcb7
-	_build (func ptr): 0x4002def7
-	_initialise (func ptr): 0x4002e21e
-	_execute (func ptr): 0x4002e2f7
-	_destroy (func ptr): 0x4002e2fc
+	_defaultConstructor (func ptr): 0x216c00
+	_construct (func ptr): 0x216d04
+	_build (func ptr): 0x217010
+	_initialise (func ptr): 0x217100
+	_execute (func ptr): 0x21719c
+	_destroy (func ptr): 0x2171bc
 	isConstructed: True
 	isBuilt: True
 	isInitialised: True
@@ -28,25 +28,25 @@
 	initialise function name: testSwarm-Initialise
 	execute function name: testSwarm-Execute
 	destroy function name: testSwarm-Destroy
-ElementCellLayout (ptr): 0x8066a28
-CellLayout (ptr): 0x8066a28
-Stg_Component (ptr): 0x8066a28
-Stg_Object (ptr): 0x8066a28
-	Stg_Class (ptr): 0x8066a28
-		sizeOfSelf: 132
+ElementCellLayout (ptr): 0x131ed38
+CellLayout (ptr): 0x131ed38
+Stg_Component (ptr): 0x131ed38
+Stg_Object (ptr): 0x131ed38
+	Stg_Class (ptr): 0x131ed38
+		sizeOfSelf: 152
 		_deleteSelf: Yes
 		type: ElementCellLayout
-		_delete (func ptr): 0x400214dc
-		_print (func ptr): 0x40021505
-		_copy (func ptr): 0x40021579
+		_delete (func ptr): 0x207224
+		_print (func ptr): 0x207260
+		_copy (func ptr): 0x2072e4
 	name: elementCellLayout
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0x40021010
-	_construct (func ptr): 0x40021651
-	_build (func ptr): 0x400216c5
-	_initialise (func ptr): 0x400216ca
-	_execute (func ptr): 0x400216cf
-	_destroy (func ptr): 0x400216d4
+	_defaultConstructor (func ptr): 0x206cfc
+	_construct (func ptr): 0x2073e4
+	_build (func ptr): 0x20748c
+	_initialise (func ptr): 0x207560
+	_execute (func ptr): 0x207580
+	_destroy (func ptr): 0x2075a0
 	isConstructed: True
 	isBuilt: False
 	isInitialised: False
@@ -57,52 +57,56 @@
 	initialise function name: elementCellLayout-Initialise
 	execute function name: elementCellLayout-Execute
 	destroy function name: elementCellLayout-Destroy
-	_cellLocalCount (func ptr): 0x400216d9
-	_cellShadowCount (func ptr): 0x400216f6
-	_pointCount (func ptr): 0x40021713
-	_initialisePoints (func ptr): 0x4002173d
-	_mapElementIdToCellId (func ptr): 0x400217c7
-	_isInCell (func ptr): 0x4002185a
-	_cellOf (func ptr): 0x40021a5d
-	_getShadowInfo (func ptr): 0x40021c50
-	mesh (ptr): 0x8065908
-RandomParticleLayout (ptr): 0x8066ee8:
-PerCellParticleLayout (ptr): 0x8066ee8
-ParticleLayout (ptr): 0x8066ee8
-Stg_Class (ptr): 0x8066ee8
+	_cellLocalCount (func ptr): 0x2075c0
+	_cellShadowCount (func ptr): 0x207624
+	_pointCount (func ptr): 0x207688
+	_initialisePoints (func ptr): 0x207708
+	_mapElementIdToCellId (func ptr): 0x2077f4
+	_isInCell (func ptr): 0x20781c
+	_cellOf (func ptr): 0x2078e0
+	_getShadowInfo (func ptr): 0x207b0c
+	mesh (ptr): 0x131f1a8
+RandomParticleLayout (ptr): 0x132aef8:
+PerCellParticleLayout (ptr): 0x132aef8
+ParticleLayout (ptr): 0x132aef8
+Stg_Class (ptr): 0x132aef8
 	sizeOfSelf: 132
 	_deleteSelf: Yes
 	type: RandomParticleLayout
-	_delete (func ptr): 0x4002aed3
-	_print (func ptr): 0x4002aefc
-	_copy (func ptr): 0x4002af8f
-	_setInitialCounts (func ptr): 0x4002a335
-	_initialiseParticles (func ptr): 0x4002a4d2
+	_delete (func ptr): 0x21338c
+	_print (func ptr): 0x2133c8
+	_copy (func ptr): 0x213468
+	_setInitialCounts (func ptr): 0x212390
+	_initialiseParticles (func ptr): 0x21256c
 	coordSystem: GlobalCoordSystem
 	weightsInitialisedAtStartup : False
-	_initialCount (func ptr): 0x4002b168
-	_initialiseParticlesOfCell (func ptr): 0x4002b17c
+	_initialCount (func ptr): 0x213710
+	_initialiseParticlesOfCell (func ptr): 0x213748
 	cellParticleCount: 4
 	seed: 13
 	cellLocalCount: 4
-	cellDomainCount: 4
-	cellShadowCount: 0
-	cellPointCountTbl (ptr): 0x8068058
-	cellPointCountTbl[0-4]: 008 008 008 008 
-	cellPointTbl (ptr): 0x8068880
-	cellPointTbl[0-4]: {
-	cellPointTbl[0][0-8]: {0 8 0} {150 8 0} {150 12 0} {0 12 0} {0 8 150} {150 8 150} {150 12 150} {0 12 150} 
-	cellPointTbl[1][0-8]: {150 8 0} {300 8 0} {300 12 0} {150 12 0} {150 8 150} {300 8 150} {300 12 150} {150 12 150} 
-	cellPointTbl[2][0-8]: {0 8 150} {150 8 150} {150 12 150} {0 12 150} {0 8 300} {150 8 300} {150 12 300} {0 12 300} 
-	cellPointTbl[3][0-8]: {150 8 150} {300 8 150} {300 12 150} {150 12 150} {150 8 300} {300 8 300} {300 12 300} {150 12 300} 
+	cellDomainCount: 8
+	cellShadowCount: 4
+	cellPointCountTbl (ptr): 0x132bf18
+	cellPointCountTbl[0-8]: 008 008 008 008 008 008 008 008 
+	cellPointTbl (ptr): 0x132c758
+	cellPointTbl[0-8]: {
+	cellPointTbl[0][0-8]: {0 8 0} {150 8 0} {0 12 0} {150 12 0} {0 8 150} {150 8 150} {0 12 150} {150 12 150} 
+	cellPointTbl[1][0-8]: {150 8 0} {300 8 0} {150 12 0} {300 12 0} {150 8 150} {300 8 150} {150 12 150} {300 12 150} 
+	cellPointTbl[2][0-8]: {0 8 150} {150 8 150} {0 12 150} {150 12 150} {0 8 300} {150 8 300} {0 12 300} {150 12 300} 
+	cellPointTbl[3][0-8]: {150 8 150} {300 8 150} {150 12 150} {300 12 150} {150 8 300} {300 8 300} {150 12 300} {300 12 300} 
+	cellPointTbl[4][0-8]: {0 4 0} {150 4 0} {0 8 0} {150 8 0} {0 4 150} {150 4 150} {0 8 150} {150 8 150} 
+	cellPointTbl[5][0-8]: {150 4 0} {300 4 0} {150 8 0} {300 8 0} {150 4 150} {300 4 150} {150 8 150} {300 8 150} 
+	cellPointTbl[6][0-8]: {0 4 150} {150 4 150} {0 8 150} {150 8 150} {0 4 300} {150 4 300} {0 8 300} {150 8 300} 
+	cellPointTbl[7][0-8]: {150 4 150} {300 4 150} {150 8 150} {300 8 150} {150 4 300} {300 4 300} {150 8 300} {300 8 300} 
 }
 
-	cellParticleCountTbl (ptr): 0x8068920
-	cellParticleCountTbl[0-4]: 004 004 004 004 
-	cellParticleSizeTbl (ptr): 0x8068940
-	cellParticleSizeTbl[0-4]: 004 004 004 004 
-	cellParticleTbl (ptr): 0x8068960
-	cellParticleTbl [0-4]: {
+	cellParticleCountTbl (ptr): 0x132bf48
+	cellParticleCountTbl[0-8]: 004 004 004 004 000 000 000 000 
+	cellParticleSizeTbl (ptr): 0x132c888
+	cellParticleSizeTbl[0-8]: 004 004 004 004 000 000 000 000 
+	cellParticleTbl (ptr): 0x132c8b8
+	cellParticleTbl [0-8]: {
 		cellParticleTbl[0][0-4]:
 			(part. index) 0
 			(part. index) 1
@@ -127,6 +131,14 @@
 			(part. index) 14
 			(part. index) 15
 
+		cellParticleTbl[4][0-0]:
+
+		cellParticleTbl[5][0-0]:
+
+		cellParticleTbl[6][0-0]:
+
+		cellParticleTbl[7][0-0]:
+
 	}
 	particlesArraySize: 116
 	particlesArrayDelta: 100

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarm.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -62,6 +62,29 @@
 	__GlobalParticle
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 void TestParticleSearchFunc( Swarm* swarm, Coord coord, Stream* stream ) {
 	double              distance;
 	Particle_Index      closestParticle_I;
@@ -98,11 +121,10 @@
 	int				numProcessors;
 	int				procToWatch;
 	Dictionary*			dictionary;
-	Topology*			nTopology;
-	ElementLayout*			eLayout;
-	NodeLayout*			nLayout;
-	MeshDecomp*			decomp;
-	MeshLayout*			layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {2, 3, 2};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {300.0, 12.0, 300.0};
 	ExtensionManager_Register*		extensionMgr_Register;
 	Mesh*				mesh;
 	ElementCellLayout*		elementCellLayout;
@@ -139,29 +161,10 @@
 	
 	/* Read input */
 	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 300.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 12.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 300.0f ) );
 	
-	/* Run the mesher */
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Build the mesh */
 	Build( mesh, 0, False );
@@ -206,11 +209,6 @@
 	Stg_Class_Delete( elementCellLayout );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmDumpAndLoad.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmDumpAndLoad.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testSwarmDumpAndLoad.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -66,6 +66,29 @@
 	unsigned int        testValue;
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 void UpdateParticlePositionsTowardsAttractor( 
 		Swarm* swarm,
 		Coord attractorPoint,
@@ -78,11 +101,10 @@
 	int				numProcessors;
 	int				procToWatch;
 	Dictionary*			dictionary;
-	Topology*			nTopology;
-	ElementLayout*			eLayout;
-	NodeLayout*			nLayout;
-	MeshDecomp*			decomp;
-	MeshLayout*			layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {33, 33, 33};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	ExtensionManager_Register*	extensionMgr_Register;
 	Mesh*				mesh;
 	ElementCellLayout*		elementCellLayout;
@@ -90,7 +112,6 @@
 	Swarm*				swarm;
 	Stream*				stream;
 	Index				timeStep;
-	BlockGeometry*			blockGeom;
 	Coord				attractorPoint;
 	Index				dim_I;
 	AbstractContext*                context = NULL;
@@ -140,33 +161,13 @@
 	
 	/* Read input */
 	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "dim", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 33 ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 1.0f ) );
 	Dictionary_Add( dictionary, "particlesPerCell", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
 	Dictionary_Add( dictionary, "seed", Dictionary_Entry_Value_FromUnsignedInt( 13 ) );
 	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
 	
-	/* Run the mesher */
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, CommWorld, eLayout, nLayout );
-	layout = MeshLayout_New( "Meshlayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -190,9 +191,8 @@
 	Initialise( mesh, 0, False );
 	Initialise( swarm, 0, False );
 	
-	blockGeom = (BlockGeometry*)eLayout->geometry;
 	for ( dim_I=0; dim_I < 3; dim_I++ ) {
-		attractorPoint[dim_I] = ( blockGeom->max[dim_I] - blockGeom->min[dim_I] ) / 3;
+		attractorPoint[dim_I] = ( maxCrds[dim_I] - minCrds[dim_I] ) / 3;
 	}
 	if( rank == procToWatch ) {
 		printf("Calculated attractor point is at (%f,%f,%f):\n", attractorPoint[0], attractorPoint[1], attractorPoint[2] );
@@ -294,11 +294,6 @@
 	Stg_Class_Delete( elementCellLayout );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();
@@ -329,7 +324,7 @@
 
 	for ( lCell_I=0; lCell_I < swarm->cellLocalCount; lCell_I++ ) {
 		if( rank == procToWatch ) {
-			//printf("\tUpdating Particles positions in local cell %d:\n", lCell_I );
+			/*printf("\tUpdating Particles positions in local cell %d:\n", lCell_I );*/
 		}	
 		for ( cParticle_I=0; cParticle_I < swarm->cellParticleCountTbl[lCell_I]; cParticle_I++ ) {
 			Coord movementVector = {0,0,0};
@@ -339,7 +334,7 @@
 			currParticle = (Particle*)Swarm_ParticleInCellAt( swarm, lCell_I, cParticle_I );
 			oldCoord = &currParticle->coord;
 			if( rank == procToWatch ) {
-				//printf("\t\tUpdating particleInCell %d:\n", cParticle_I );
+				/*printf("\t\tUpdating particleInCell %d:\n", cParticle_I );*/
 			}	
 
 			for ( dim_I=0; dim_I < 3; dim_I++ ) {

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testWithinShapeParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testWithinShapeParticleLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/tests/testWithinShapeParticleLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -61,24 +61,45 @@
 	__GlobalParticle
 };
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm                    CommWorld;
 	int                         rank;
 	int                         numProcessors;
 	int                         procToWatch;
 	Dictionary*                 dictionary;
-	Topology*                   nTopology;
-	ElementLayout*              eLayout;
-	NodeLayout*                 nLayout;
-	MeshDecomp*                 decomp;
-	MeshLayout*                 layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {5, 3, 2};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	ExtensionManager_Register*  extensionMgr_Register;
 	Mesh*                       mesh;
 	WithinShapeParticleLayout*        particleLayout;
 	ElementCellLayout*          elementCellLayout;
 	Swarm*                      swarm;
 	Stream*                     stream;
-	Dimension_Index             dim;
 	Stg_Shape*                  shape;
 	XYZ                         centre;
 	
@@ -110,33 +131,13 @@
 	
 	/* Read input */
 	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( numProcessors ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 2 ) );
-	Dictionary_Add( dictionary, "minX", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minY", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "minZ", Dictionary_Entry_Value_FromDouble( 0.0f ) );
-	Dictionary_Add( dictionary, "maxX", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxY", Dictionary_Entry_Value_FromDouble( 1.0f ) );
-	Dictionary_Add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 1.0f ) );
 	Dictionary_Add( dictionary, "dim", Dictionary_Entry_Value_FromUnsignedInt( 3 ) );
 	Dictionary_Add( dictionary, "averageInitialParticlesPerCell", Dictionary_Entry_Value_FromUnsignedInt( 20 ) );
 	
 	
-	/* Run the mesher */
-	dim       = Dictionary_GetUnsignedInt( dictionary, "dim" );
-
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout   = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout   = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp    = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout    = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	/* Init mesh */
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", layout, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
 	/* Configure the element-cell-layout */
 	elementCellLayout = ElementCellLayout_New( "elementCellLayout", mesh );
@@ -146,13 +147,13 @@
 	Initialise( mesh, 0, False );
 	
 	centre[I_AXIS] = centre[J_AXIS] = centre[K_AXIS] = 0.5;
-	shape = (Stg_Shape*)Sphere_New( "testSphere", dim, centre, 0, 0, 0, 0.05 );
+	shape = (Stg_Shape*)Sphere_New( "testSphere", nDims, centre, 0, 0, 0, 0.05 );
 	
 	/* Configure the gauss-particle-layout */
-	particleLayout = WithinShapeParticleLayout_New( "withinShapeParticleLayout", dim, 10, shape );
+	particleLayout = WithinShapeParticleLayout_New( "withinShapeParticleLayout", nDims, 10, shape );
 	
 	/* Configure the swarm */
-	swarm = Swarm_New(  "testSwarm", elementCellLayout, particleLayout, dim, sizeof(Particle),
+	swarm = Swarm_New(  "testSwarm", elementCellLayout, particleLayout, nDims, sizeof(Particle),
 		extensionMgr_Register, NULL, CommWorld );
 	
 	/* Build the swarm */
@@ -171,11 +172,6 @@
 	Stg_Class_Delete( swarm );
 	Stg_Class_Delete( mesh );
 	Stg_Class_Delete( extensionMgr_Register );
-	Stg_Class_Delete( layout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	DiscretisationSwarm_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllElementsVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllElementsVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllElementsVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -536,8 +536,9 @@
 
 IndexSet* _AllElementsVC_GetSet( void* variableCondition ) {
 	AllElementsVC*				self = (AllElementsVC*)variableCondition;
-	IndexSet*				set = IndexSet_New( self->mesh->layout->decomp->elementDomainCount );
-	
+	IndexSet*				set;
+
+	set = IndexSet_New( Mesh_GetDomainSize( self->mesh, Mesh_GetDimSize( self->mesh ) ) );
 	IndexSet_AddAll( set );
 	
 	return set;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllNodesVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllNodesVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/AllNodesVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -537,8 +537,9 @@
 
 IndexSet* _AllNodesVC_GetSet( void* variableCondition ) {
 	AllNodesVC*		self = (AllNodesVC*)variableCondition;
-	IndexSet*		set = IndexSet_New(self->mesh->layout->decomp->nodeDomainCount);
-	
+	IndexSet*		set;
+
+	set = IndexSet_New( Mesh_GetDomainSize( self->mesh, MT_VERTEX ) );
 	IndexSet_AddAll( set );
 	
 	return set;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CellRemesher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CellRemesher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CellRemesher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -186,8 +186,6 @@
 
 	/* Get the number of dimensions. */
 	dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
-	self->nDims = Dictionary_GetUnsignedInt( dict, "dims" );
-	assert( self->nDims > 0 );
 
 	/* Extract cell mesh. */
 	cmName = Dictionary_GetString( dict, "cellMesh" );
@@ -212,6 +210,7 @@
 
 	/* Build the cell mesh. */
 	Build( self->cellMesh, data, False );
+	self->nDims = Mesh_GetDimSize( self->cellMesh );
 }
 
 
@@ -230,32 +229,38 @@
 
 void _CellRemesher_Execute( void* cellRemesher, void* data ) {
 	CellRemesher*	self = (CellRemesher*)cellRemesher;
-	Coord*		meshCrds;
-	Coord*		cellCrds;
+	double**	meshCrds;
+	double**	cellCrds;
 	unsigned	e_i;
 
 	assert( self );
 	assert( self->mesh );
+	assert( self->mesh->generator );
+	assert( self->cellMesh );
+	assert( self->cellMesh->generator );
 	/* TODO: remaining asserts */
 
-	meshCrds = self->mesh->nodeCoord;
-	cellCrds = self->cellMesh->nodeCoord;
+	meshCrds = self->mesh->verts;
+	cellCrds = self->cellMesh->verts;
 
 	/* Center the cell mesh's node coordinates in the cell mesh's elements. We assume identical
 	   ordering. */
-	for( e_i = 0; e_i < self->cellMesh->elementLocalCount; e_i++ ) {
-		unsigned	nElNodes = self->cellMesh->elementNodeCountTbl[e_i];
-		unsigned*	elNodes = self->cellMesh->elementNodeTbl[e_i];
-		double		fac = 1.0 / (double)nElNodes;
+	for( e_i = 0; e_i < Mesh_GetLocalSize( self->cellMesh, self->nDims ); e_i++ ) {
+		unsigned	nElNodes;
+		unsigned*	elNodes;
+		double		fac;
 		unsigned	d_i;
 
-		memset( meshCrds[e_i], 0, sizeof(Coord) );
+		Mesh_GetIncidence( self->cellMesh, self->nDims, e_i, MT_VERTEX, 
+				   &nElNodes, &elNodes );
+		fac = 1.0 / (double)nElNodes;
+
+		memset( meshCrds[e_i], 0, self->nDims * sizeof(double) );
 		for( d_i = 0; d_i < self->nDims; d_i++ ) {
 			unsigned	en_i;
 
-			for( en_i = 0; en_i < nElNodes; en_i++ ) {
+			for( en_i = 0; en_i < nElNodes; en_i++ )
 				meshCrds[e_i][d_i] += cellCrds[elNodes[en_i]][d_i];
-			}
 			meshCrds[e_i][d_i] *= fac;
 		}
 	}

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CornerVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CornerVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/CornerVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -48,14 +48,14 @@
 const Name defaultCornerVCName = "defaultCornerVCName";
 /* List of corner names */
 const char* CornerVC_CornerEnumToStr[CornerVC_Corner_Size] = {
-	"bottomLeftFront",
-	"bottomRightFront",
-	"topLeftFront",
-	"topRightFront",
-	"bottomLeftBack",
-	"bottomRightBack",
-	"topLeftBack",
-	"topRightBack" };
+   "bottomLeftFront",
+   "bottomRightFront",
+   "topLeftFront",
+   "topRightFront",
+   "bottomLeftBack",
+   "bottomRightBack",
+   "topLeftBack",
+   "topRightBack" };
 
 
 /*--------------------------------------------------------------------------------------------------------------------------
@@ -63,12 +63,12 @@
 */
 
 VariableCondition* CornerVC_Factory(
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						data )
+   Variable_Register*				variable_Register, 
+   ConditionFunction_Register*			conFunc_Register, 
+   Dictionary*					dictionary,
+   void*						data )
 {
-	return (VariableCondition*)CornerVC_New( defaultCornerVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
+   return (VariableCondition*)CornerVC_New( defaultCornerVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
 }
 
 
@@ -105,12 +105,12 @@
 }
 
 CornerVC*	CornerVC_New(
-		Name                                name,
-		Name                                _dictionaryEntryName, 
-		Variable_Register*                  variable_Register, 
-		ConditionFunction_Register*         conFunc_Register, 
-		Dictionary*                         dictionary,
-		void*                               _mesh )
+   Name                                name,
+   Name                                _dictionaryEntryName, 
+   Variable_Register*                  variable_Register, 
+   ConditionFunction_Register*         conFunc_Register, 
+   Dictionary*                         dictionary,
+   void*                               _mesh )
 {
 	return _CornerVC_New(
 		sizeof(CornerVC), 
@@ -144,18 +144,18 @@
 
 
 void CornerVC_Init(
-		CornerVC*                           self,
-		Name                                name,
-		Name                                _dictionaryEntryName, 
-		Variable_Register*                  variable_Register, 
-		ConditionFunction_Register*         conFunc_Register, 
-		Dictionary*                         dictionary,
-		void*                               _mesh )
+   CornerVC*                           self,
+   Name                                name,
+   Name                                _dictionaryEntryName, 
+   Variable_Register*                  variable_Register, 
+   ConditionFunction_Register*         conFunc_Register, 
+   Dictionary*                         dictionary,
+   void*                               _mesh )
 {
-	/* General info */
-	self->type = CornerVC_Type;
-	self->_sizeOfSelf = sizeof(CornerVC);
-	self->_deleteSelf = False;
+   /* General info */
+   self->type = CornerVC_Type;
+   self->_sizeOfSelf = sizeof(CornerVC);
+   self->_deleteSelf = False;
 	
 	/* Virtual info */
 	self->_delete =              _CornerVC_Delete;
@@ -177,100 +177,100 @@
 	self->_getValueCount =       _CornerVC_GetValueCount;
 	self->_getValue =            _CornerVC_GetValue;
 	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	_VariableCondition_Init( (VariableCondition*)self, variable_Register, conFunc_Register, dictionary );
+   _Stg_Class_Init( (Stg_Class*)self );
+   _Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
+   _Stg_Component_Init( (Stg_Component*)self );
+   _VariableCondition_Init( (VariableCondition*)self, variable_Register, conFunc_Register, dictionary );
 	
-	/* Stg_Class info */
-	_CornerVC_Init( self, _dictionaryEntryName, _mesh );
+   /* Stg_Class info */
+   _CornerVC_Init( self, _dictionaryEntryName, _mesh );
 }
 
 
 CornerVC* _CornerVC_New( 
-		SizeT                                       _sizeOfSelf, 
-		Type                                        type,
-		Stg_Class_DeleteFunction*                   _delete,
-		Stg_Class_PrintFunction*                    _print,
-		Stg_Class_CopyFunction*                     _copy, 
-		Stg_Component_DefaultConstructorFunction*   _defaultConstructor,
-		Stg_Component_ConstructFunction*            _construct,
-		Stg_Component_BuildFunction*                _build,
-		Stg_Component_InitialiseFunction*           _initialise,
-		Stg_Component_ExecuteFunction*              _execute,
-		Stg_Component_DestroyFunction*              _destroy,
-		Name                                        name, 
-		Bool                                        initFlag,
-		VariableCondition_BuildSelfFunc*            _buildSelf, 
-		VariableCondition_PrintConciseFunc*         _printConcise,
-		VariableCondition_ReadDictionaryFunc*       _readDictionary,
-		VariableCondition_GetSetFunc*               _getSet,
-		VariableCondition_GetVariableCountFunc*     _getVariableCount,
-		VariableCondition_GetVariableIndexFunc*     _getVariableIndex,
-		VariableCondition_GetValueIndexFunc*        _getValueIndex,
-		VariableCondition_GetValueCountFunc*        _getValueCount,
-		VariableCondition_GetValueFunc*             _getValue,
-		Name                                        _dictionaryEntryName, 
-		Variable_Register*                          variable_Register, 
-		ConditionFunction_Register*                 conFunc_Register, 
-		Dictionary*                                 dictionary,
-		void*                                       _mesh)
+   SizeT                                       _sizeOfSelf, 
+   Type                                        type,
+   Stg_Class_DeleteFunction*                   _delete,
+   Stg_Class_PrintFunction*                    _print,
+   Stg_Class_CopyFunction*                     _copy, 
+   Stg_Component_DefaultConstructorFunction*   _defaultConstructor,
+   Stg_Component_ConstructFunction*            _construct,
+   Stg_Component_BuildFunction*                _build,
+   Stg_Component_InitialiseFunction*           _initialise,
+   Stg_Component_ExecuteFunction*              _execute,
+   Stg_Component_DestroyFunction*              _destroy,
+   Name                                        name, 
+   Bool                                        initFlag,
+   VariableCondition_BuildSelfFunc*            _buildSelf, 
+   VariableCondition_PrintConciseFunc*         _printConcise,
+   VariableCondition_ReadDictionaryFunc*       _readDictionary,
+   VariableCondition_GetSetFunc*               _getSet,
+   VariableCondition_GetVariableCountFunc*     _getVariableCount,
+   VariableCondition_GetVariableIndexFunc*     _getVariableIndex,
+   VariableCondition_GetValueIndexFunc*        _getValueIndex,
+   VariableCondition_GetValueCountFunc*        _getValueCount,
+   VariableCondition_GetValueFunc*             _getValue,
+   Name                                        _dictionaryEntryName, 
+   Variable_Register*                          variable_Register, 
+   ConditionFunction_Register*                 conFunc_Register, 
+   Dictionary*                                 dictionary,
+   void*                                       _mesh)
 {
-	CornerVC*	self;
+   CornerVC*	self;
 	
-	/* Allocate memory/General info */
-	assert(_sizeOfSelf >= sizeof(CornerVC));
-	self = (CornerVC*)_VariableCondition_New(
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print,
-		_copy,
-		_defaultConstructor,
-		_construct,	
-		_build,
-		_initialise,
-		_execute,
-		_destroy,
-		name,
-		initFlag,
-		_buildSelf, 
-		_printConcise,	
-		_readDictionary,
-		_getSet, 
-		_getVariableCount, 
-		_getVariableIndex, 
-		_getValueIndex, 
-		_getValueCount, 
-		_getValue, 
-		variable_Register, 
-		conFunc_Register,
-		dictionary );
+   /* Allocate memory/General info */
+   assert(_sizeOfSelf >= sizeof(CornerVC));
+   self = (CornerVC*)_VariableCondition_New(
+      _sizeOfSelf, 
+      type, 
+      _delete, 
+      _print,
+      _copy,
+      _defaultConstructor,
+      _construct,	
+      _build,
+      _initialise,
+      _execute,
+      _destroy,
+      name,
+      initFlag,
+      _buildSelf, 
+      _printConcise,	
+      _readDictionary,
+      _getSet, 
+      _getVariableCount, 
+      _getVariableIndex, 
+      _getValueIndex, 
+      _getValueCount, 
+      _getValue, 
+      variable_Register, 
+      conFunc_Register,
+      dictionary );
 	
-	/* Virtual info */
+   /* Virtual info */
 	
-	/* Stg_Class info */
-	if( initFlag ){
-		_CornerVC_Init( self, _dictionaryEntryName, _mesh );
-	}
+   /* Stg_Class info */
+   if( initFlag ){
+      _CornerVC_Init( self, _dictionaryEntryName, _mesh );
+   }
 	
-	return self;
+   return self;
 }
 
 
 void _CornerVC_Init(
-		void*						cornerVC, 
-		Name						_dictionaryEntryName, 
-		void*						_mesh )
+   void*						cornerVC, 
+   Name						_dictionaryEntryName, 
+   void*						_mesh )
 {
-	CornerVC*		self = (CornerVC*)cornerVC;
+   CornerVC*		self = (CornerVC*)cornerVC;
 
-	self->isConstructed =         True;
-	self->_dictionaryEntryName =  _dictionaryEntryName;
-	self->_mesh =                 (Mesh*)_mesh;
-	self->_corner =               CornerVC_Corner_Size;
-	self->_entryTbl =             0;
-	self->_entryCount =           0;
+   self->isConstructed =         True;
+   self->_dictionaryEntryName =  _dictionaryEntryName;
+   self->_mesh =                 (Mesh*)_mesh;
+   self->_corner =               CornerVC_Corner_Size;
+   self->_entryTbl =             0;
+   self->_entryCount =           0;
 }
 
 
@@ -279,291 +279,291 @@
 */
 
 void _CornerVC_ReadDictionary( void* variableCondition, void* dictionary ) {
-	CornerVC*                 self = (CornerVC*)variableCondition;
-	Dictionary_Entry_Value*   vcDictVal;
-	Dictionary_Entry_Value    _vcDictVal;
-	Dictionary_Entry_Value*   varsVal;
-	CornerVC_Entry_Index      entry_I;
+   CornerVC*                 self = (CornerVC*)variableCondition;
+   Dictionary_Entry_Value*   vcDictVal;
+   Dictionary_Entry_Value    _vcDictVal;
+   Dictionary_Entry_Value*   varsVal;
+   CornerVC_Entry_Index      entry_I;
 	
-	/* Find dictionary entry */
-	if (self->_dictionaryEntryName) {
-		vcDictVal = Dictionary_Get(dictionary, self->_dictionaryEntryName);
-	}
-	else
-	{
-		vcDictVal = &_vcDictVal;
-		Dictionary_Entry_Value_InitFromStruct(vcDictVal, dictionary);
-	}
+   /* Find dictionary entry */
+   if (self->_dictionaryEntryName) {
+      vcDictVal = Dictionary_Get(dictionary, self->_dictionaryEntryName);
+   }
+   else
+   {
+      vcDictVal = &_vcDictVal;
+      Dictionary_Entry_Value_InitFromStruct(vcDictVal, dictionary);
+   }
 
-	if (vcDictVal)
-	{
-		char*	cornerStr;
+   if (vcDictVal)
+   {
+      char*	cornerStr;
 	
-		/* Obtain which corner */
-		cornerStr = Dictionary_Entry_Value_AsString(Dictionary_Entry_Value_GetMember(vcDictVal, "corner" ));
+      /* Obtain which corner */
+      cornerStr = Dictionary_Entry_Value_AsString(Dictionary_Entry_Value_GetMember(vcDictVal, "corner" ));
 
-		if (!strcasecmp(cornerStr, "bottomLeftFront")){
-			self->_corner = CornerVC_Corner_BottomLeftFront;
-		}
-		else if (!strcasecmp(cornerStr, "bottomRightFront"))
-			self->_corner = CornerVC_Corner_BottomRightFront;
-		else if (!strcasecmp(cornerStr, "topLeftFront"))
-			self->_corner = CornerVC_Corner_TopLeftFront;
-		else if (!strcasecmp(cornerStr, "topRightFront"))
-			self->_corner = CornerVC_Corner_TopRightFront;
-		else if (!strcasecmp(cornerStr, "bottomLeftBack"))
-			self->_corner = CornerVC_Corner_BottomLeftBack;
-		else if (!strcasecmp(cornerStr, "bottomRightBack"))
-			self->_corner = CornerVC_Corner_BottomRightBack;
-		else if (!strcasecmp(cornerStr, "topLeftBack"))
-			self->_corner = CornerVC_Corner_TopLeftBack;
-		else if (!strcasecmp(cornerStr, "topRightBack"))
-			self->_corner = CornerVC_Corner_TopRightBack;
-		else {
-			assert( 0 );
-			self->_corner = CornerVC_Corner_Size; /* invalid entry */
-		}
+      if (!strcasecmp(cornerStr, "bottomLeftFront")){
+	 self->_corner = CornerVC_Corner_BottomLeftFront;
+      }
+      else if (!strcasecmp(cornerStr, "bottomRightFront"))
+	 self->_corner = CornerVC_Corner_BottomRightFront;
+      else if (!strcasecmp(cornerStr, "topLeftFront"))
+	 self->_corner = CornerVC_Corner_TopLeftFront;
+      else if (!strcasecmp(cornerStr, "topRightFront"))
+	 self->_corner = CornerVC_Corner_TopRightFront;
+      else if (!strcasecmp(cornerStr, "bottomLeftBack"))
+	 self->_corner = CornerVC_Corner_BottomLeftBack;
+      else if (!strcasecmp(cornerStr, "bottomRightBack"))
+	 self->_corner = CornerVC_Corner_BottomRightBack;
+      else if (!strcasecmp(cornerStr, "topLeftBack"))
+	 self->_corner = CornerVC_Corner_TopLeftBack;
+      else if (!strcasecmp(cornerStr, "topRightBack"))
+	 self->_corner = CornerVC_Corner_TopRightBack;
+      else {
+	 assert( 0 );
+	 self->_corner = CornerVC_Corner_Size; /* invalid entry */
+      }
 		
-		/* Obtain the variable entries */
-		self->_entryCount = Dictionary_Entry_Value_GetCount(Dictionary_Entry_Value_GetMember(vcDictVal, "variables"));
-		self->_entryTbl = Memory_Alloc_Array( CornerVC_Entry, self->_entryCount, "CornerVC->_entryTbl" );
-		varsVal = Dictionary_Entry_Value_GetMember(vcDictVal, "variables");
+      /* Obtain the variable entries */
+      self->_entryCount = Dictionary_Entry_Value_GetCount(Dictionary_Entry_Value_GetMember(vcDictVal, "variables"));
+      self->_entryTbl = Memory_Alloc_Array( CornerVC_Entry, self->_entryCount, "CornerVC->_entryTbl" );
+      varsVal = Dictionary_Entry_Value_GetMember(vcDictVal, "variables");
 		
-		for (entry_I = 0; entry_I < self->_entryCount; entry_I++)
-		{
-			char*			valType;
-			Dictionary_Entry_Value*	valueEntry;
-			Dictionary_Entry_Value*	varDictListVal;
+      for (entry_I = 0; entry_I < self->_entryCount; entry_I++)
+      {
+	 char*			valType;
+	 Dictionary_Entry_Value*	valueEntry;
+	 Dictionary_Entry_Value*	varDictListVal;
 			
-			varDictListVal = Dictionary_Entry_Value_GetElement(varsVal, entry_I);
-			valueEntry = Dictionary_Entry_Value_GetMember(varDictListVal, "value");
+	 varDictListVal = Dictionary_Entry_Value_GetElement(varsVal, entry_I);
+	 valueEntry = Dictionary_Entry_Value_GetMember(varDictListVal, "value");
 			
-			self->_entryTbl[entry_I].varName = Dictionary_Entry_Value_AsString(
-				Dictionary_Entry_Value_GetMember(varDictListVal, "name"));
+	 self->_entryTbl[entry_I].varName = Dictionary_Entry_Value_AsString(
+	    Dictionary_Entry_Value_GetMember(varDictListVal, "name"));
 				
-			valType = Dictionary_Entry_Value_AsString(Dictionary_Entry_Value_GetMember(varDictListVal, "type"));
-			if (0 == strcasecmp(valType, "func"))
-			{
-				char*	funcName = Dictionary_Entry_Value_AsString(valueEntry);
-				Index	cfIndex;
+	 valType = Dictionary_Entry_Value_AsString(Dictionary_Entry_Value_GetMember(varDictListVal, "type"));
+	 if (0 == strcasecmp(valType, "func"))
+	 {
+	    char*	funcName = Dictionary_Entry_Value_AsString(valueEntry);
+	    Index	cfIndex;
 				
-				self->_entryTbl[entry_I].value.type = VC_ValueType_CFIndex;
-				cfIndex = ConditionFunction_Register_GetIndex( self->conFunc_Register, funcName);
-				if ( cfIndex == (unsigned)-1 ) {	
-					Stream*	errorStr = Journal_Register( Error_Type, self->type );
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_CFIndex;
+	    cfIndex = ConditionFunction_Register_GetIndex( self->conFunc_Register, funcName);
+	    if ( cfIndex == (unsigned)-1 ) {	
+	       Stream*	errorStr = Journal_Register( Error_Type, self->type );
 
-					Journal_Printf( errorStr, "Error- in %s: While parsing "
-						"definition of cornerVC \"%s\" (applies to corner \"%s\"), the cond. func. applied to "
-						"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
-						__func__, self->_dictionaryEntryName, CornerVC_CornerEnumToStr[self->_corner],
-						self->_entryTbl[entry_I].varName, funcName );
-					Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
-					ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
-					Journal_Printf( errorStr, ")\n");	
-					assert(0);
-				}	
-				self->_entryTbl[entry_I].value.as.typeCFIndex = cfIndex;
-			}
-			else if (0 == strcasecmp(valType, "array"))
-			{
-				Dictionary_Entry_Value*	valueElement;
-				Index			i;
+	       Journal_Printf( errorStr, "Error- in %s: While parsing "
+			       "definition of cornerVC \"%s\" (applies to corner \"%s\"), the cond. func. applied to "
+			       "variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
+			       __func__, self->_dictionaryEntryName, CornerVC_CornerEnumToStr[self->_corner],
+			       self->_entryTbl[entry_I].varName, funcName );
+	       Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
+	       ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
+	       Journal_Printf( errorStr, ")\n");	
+	       assert(0);
+	    }	
+	    self->_entryTbl[entry_I].value.as.typeCFIndex = cfIndex;
+	 }
+	 else if (0 == strcasecmp(valType, "array"))
+	 {
+	    Dictionary_Entry_Value*	valueElement;
+	    Index			i;
 
-				self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
-				self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
-				self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
-					self->_entryTbl[entry_I].value.as.typeArray.size, "CornerVC->_entryTbl[].value.as.typeArray.array" );
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
+	    self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
+	    self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
+										    self->_entryTbl[entry_I].value.as.typeArray.size, "CornerVC->_entryTbl[].value.as.typeArray.array" );
 					
-				for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-				{
-					valueElement = Dictionary_Entry_Value_GetElement(valueEntry, i);
-					self->_entryTbl[entry_I].value.as.typeArray.array[i] = 
-						Dictionary_Entry_Value_AsDouble(valueElement);
-				}
-			}
-			else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
-				0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
-			{
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
-				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
-			}
-			else if( 0 == strcasecmp( valType, "integer" ) || 0 == strcasecmp( valType, "int" ) || 0 == strcasecmp( valType, "i" ) ) {
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Int;
-				self->_entryTbl[entry_I].value.as.typeInt = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
-			}
-			else if( 0 == strcasecmp( valType, "short" ) || 0 == strcasecmp( valType, "s" ) ) {
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Short;
-				self->_entryTbl[entry_I].value.as.typeShort = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
-			}
-			else if( 0 == strcasecmp( valType, "char" ) || 0 == strcasecmp( valType, "c" ) ) {
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Char;
-				self->_entryTbl[entry_I].value.as.typeChar = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
-			}
-			else if( 0 == strcasecmp( valType, "pointer" ) || 0 == strcasecmp( valType, "ptr" ) || 0 == strcasecmp( valType, "p" ) ) {
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Ptr;
-				self->_entryTbl[entry_I].value.as.typePtr = (void*) ( (ArithPointer)Dictionary_Entry_Value_AsUnsignedInt( valueEntry ));
-			}
-			else {
-				/* Assume double */
-				Journal_DPrintf( 
-					Journal_Register( InfoStream_Type, "myStream" ), 
-					"Type to variable on variable condition not given, assuming double\n" );
-				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
-				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
-			}
-		}
-	}
-	else
-	{
-		self->_corner =     CornerVC_Corner_Size;
-		self->_entryCount = 0;
-		self->_entryTbl =   NULL;
-	}
+	    for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+	    {
+	       valueElement = Dictionary_Entry_Value_GetElement(valueEntry, i);
+	       self->_entryTbl[entry_I].value.as.typeArray.array[i] = 
+		  Dictionary_Entry_Value_AsDouble(valueElement);
+	    }
+	 }
+	 else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
+		  0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
+	 {
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
+	    self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
+	 }
+	 else if( 0 == strcasecmp( valType, "integer" ) || 0 == strcasecmp( valType, "int" ) || 0 == strcasecmp( valType, "i" ) ) {
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Int;
+	    self->_entryTbl[entry_I].value.as.typeInt = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
+	 }
+	 else if( 0 == strcasecmp( valType, "short" ) || 0 == strcasecmp( valType, "s" ) ) {
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Short;
+	    self->_entryTbl[entry_I].value.as.typeShort = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
+	 }
+	 else if( 0 == strcasecmp( valType, "char" ) || 0 == strcasecmp( valType, "c" ) ) {
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Char;
+	    self->_entryTbl[entry_I].value.as.typeChar = Dictionary_Entry_Value_AsUnsignedInt( valueEntry );
+	 }
+	 else if( 0 == strcasecmp( valType, "pointer" ) || 0 == strcasecmp( valType, "ptr" ) || 0 == strcasecmp( valType, "p" ) ) {
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Ptr;
+	    self->_entryTbl[entry_I].value.as.typePtr = (void*) ( (ArithPointer)Dictionary_Entry_Value_AsUnsignedInt( valueEntry ));
+	 }
+	 else {
+	    /* Assume double */
+	    Journal_DPrintf( 
+	       Journal_Register( InfoStream_Type, "myStream" ), 
+	       "Type to variable on variable condition not given, assuming double\n" );
+	    self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
+	    self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
+	 }
+      }
+   }
+   else
+   {
+      self->_corner =     CornerVC_Corner_Size;
+      self->_entryCount = 0;
+      self->_entryTbl =   NULL;
+   }
 }
 
 
 void _CornerVC_Delete(void* cornerVC)
 {
-	CornerVC*	self = (CornerVC*)cornerVC;
+   CornerVC*	self = (CornerVC*)cornerVC;
 	
-	if (self->_entryTbl) Memory_Free(self->_entryTbl);
+   if (self->_entryTbl) Memory_Free(self->_entryTbl);
 	
-	/* Stg_Class_Delete parent */
-	_VariableCondition_Delete(self);
+   /* Stg_Class_Delete parent */
+   _VariableCondition_Delete(self);
 }
 
 
 void _CornerVC_Print(void* cornerVC, Stream* stream)
 {
-	CornerVC*                   self = (CornerVC*)cornerVC;
-	CornerVC_Entry_Index        entry_I;
-	Index                       i;
+   CornerVC*                   self = (CornerVC*)cornerVC;
+   CornerVC_Entry_Index        entry_I;
+   Index                       i;
 	
-	/* Set the Journal for printing informations */
-	Stream* info = stream;
+   /* Set the Journal for printing informations */
+   Stream* info = stream;
 	
-	/* General info */
-	Journal_Printf( info, "CornerVC (ptr): %p\n", self);
+   /* General info */
+   Journal_Printf( info, "CornerVC (ptr): %p\n", self);
 	
-	/* Virtual info */
+   /* Virtual info */
 	
-	/* Stg_Class info */
-	Journal_Printf( info, "\tdictionary (ptr): %p\n", self->dictionary);
-	Journal_Printf( info, "\t_dictionaryEntryName (ptr): %p\n", self->_dictionaryEntryName);
-	if (self->_dictionaryEntryName)
-		Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
+   /* Stg_Class info */
+   Journal_Printf( info, "\tdictionary (ptr): %p\n", self->dictionary);
+   Journal_Printf( info, "\t_dictionaryEntryName (ptr): %p\n", self->_dictionaryEntryName);
+   if (self->_dictionaryEntryName)
+      Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
 	
-	Journal_Printf( info, "\t_corner: %s\n", self->_corner == CornerVC_Corner_BottomLeftFront ? "BottomLeftFront" :
-		self->_corner == CornerVC_Corner_BottomRightFront ? "BottomRightFront" : self->_corner == CornerVC_Corner_TopLeftFront ? "TopLeftFront" :
-		self->_corner == CornerVC_Corner_TopRightFront ? "TopRightFront" : self->_corner == CornerVC_Corner_BottomLeftBack ? "BottomLeftBack" :
-		self->_corner == CornerVC_Corner_BottomRightBack ? "BottomRightBack" : self->_corner == CornerVC_Corner_TopLeftBack ? "TopLeftBack" :
-		self->_corner == CornerVC_Corner_TopRightBack ? "TopRightBack" : "None");
-	Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
-	Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
-	if (self->_entryTbl)
-		for (entry_I = 0; entry_I < self->_entryCount; entry_I++)
-		{
-			Journal_Printf( info, "\t\t_entryTbl[%u]:\n", entry_I);
-			Journal_Printf( info, "\t\t\tvarName (ptr): %p\n", self->_entryTbl[entry_I].varName);
-			if (self->_entryTbl[entry_I].varName)
-				Journal_Printf( info, "\t\t\t\tvarName: %s\n", self->_entryTbl[entry_I].varName);
-			Journal_Printf( info, "\t\t\tvalue:\n");
-			switch (self->_entryTbl[entry_I].value.type)
-			{
-				case VC_ValueType_Double:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
-					Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
-					break;
+   Journal_Printf( info, "\t_corner: %s\n", self->_corner == CornerVC_Corner_BottomLeftFront ? "BottomLeftFront" :
+		   self->_corner == CornerVC_Corner_BottomRightFront ? "BottomRightFront" : self->_corner == CornerVC_Corner_TopLeftFront ? "TopLeftFront" :
+		   self->_corner == CornerVC_Corner_TopRightFront ? "TopRightFront" : self->_corner == CornerVC_Corner_BottomLeftBack ? "BottomLeftBack" :
+		   self->_corner == CornerVC_Corner_BottomRightBack ? "BottomRightBack" : self->_corner == CornerVC_Corner_TopLeftBack ? "TopLeftBack" :
+		   self->_corner == CornerVC_Corner_TopRightBack ? "TopRightBack" : "None");
+   Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
+   Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
+   if (self->_entryTbl)
+      for (entry_I = 0; entry_I < self->_entryCount; entry_I++)
+      {
+	 Journal_Printf( info, "\t\t_entryTbl[%u]:\n", entry_I);
+	 Journal_Printf( info, "\t\t\tvarName (ptr): %p\n", self->_entryTbl[entry_I].varName);
+	 if (self->_entryTbl[entry_I].varName)
+	    Journal_Printf( info, "\t\t\t\tvarName: %s\n", self->_entryTbl[entry_I].varName);
+	 Journal_Printf( info, "\t\t\tvalue:\n");
+	 switch (self->_entryTbl[entry_I].value.type)
+	 {
+	    case VC_ValueType_Double:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
+	       Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
+	       break;
 					
-				case VC_ValueType_Int:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
-					Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
-					break;
+	    case VC_ValueType_Int:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
+	       Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
+	       break;
 					
-				case VC_ValueType_Short:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
-					Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
-					break;
+	    case VC_ValueType_Short:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
+	       Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
+	       break;
 					
-				case VC_ValueType_Char:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
-					Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
-					break;
+	    case VC_ValueType_Char:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
+	       Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
+	       break;
 					
-				case VC_ValueType_Ptr:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
-					Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
-					break;
+	    case VC_ValueType_Ptr:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
+	       Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
+	       break;
 					
-				case VC_ValueType_DoubleArray:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
-					Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
-					Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
-						self->_entryTbl[entry_I].value.as.typeArray.array);
-					if (self->_entryTbl[entry_I].value.as.typeArray.array)
-						for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-							Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
-								self->_entryTbl[entry_I].value.as.typeArray.array[i]);
-					break;
+	    case VC_ValueType_DoubleArray:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
+	       Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
+	       Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
+			       self->_entryTbl[entry_I].value.as.typeArray.array);
+	       if (self->_entryTbl[entry_I].value.as.typeArray.array)
+		  for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+		     Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
+				     self->_entryTbl[entry_I].value.as.typeArray.array[i]);
+	       break;
 					
-				case VC_ValueType_CFIndex:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
-					Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
-					break;
-			}
-		}
-	Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
+	    case VC_ValueType_CFIndex:
+	       Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
+	       Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
+	       break;
+	 }
+      }
+   Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
 	
-	/* Print parent */
-	_VariableCondition_Print(self);
+   /* Print parent */
+   _VariableCondition_Print(self);
 }
 
 
 void* _CornerVC_Copy( void* cornerVC, void* dest, Bool deep, Name nameExt, struct PtrMap* ptrMap ) {
-	CornerVC*       self = (CornerVC*)cornerVC;
-	CornerVC*       newCornerVC;
-	PtrMap*         map = ptrMap;
-	Bool            ownMap = False;
+   CornerVC*       self = (CornerVC*)cornerVC;
+   CornerVC*       newCornerVC;
+   PtrMap*         map = ptrMap;
+   Bool            ownMap = False;
 	
-	if( !map ) {
-		map = PtrMap_New( 10 );
-		ownMap = True;
-	}
+   if( !map ) {
+      map = PtrMap_New( 10 );
+      ownMap = True;
+   }
 	
-	newCornerVC = (CornerVC*)_VariableCondition_Copy( self, dest, deep, nameExt, map );
+   newCornerVC = (CornerVC*)_VariableCondition_Copy( self, dest, deep, nameExt, map );
 	
-	newCornerVC->_dictionaryEntryName = self->_dictionaryEntryName;
-	newCornerVC->_corner = self->_corner;
-	newCornerVC->_entryCount = self->_entryCount;
+   newCornerVC->_dictionaryEntryName = self->_dictionaryEntryName;
+   newCornerVC->_corner = self->_corner;
+   newCornerVC->_entryCount = self->_entryCount;
 	
-	if( deep ) {
-		newCornerVC->_mesh = (Mesh*)Stg_Class_Copy( self->_mesh, NULL, deep, nameExt, map );
+   if( deep ) {
+      newCornerVC->_mesh = (Mesh*)Stg_Class_Copy( self->_mesh, NULL, deep, nameExt, map );
 		
-		if( (newCornerVC->_entryTbl = PtrMap_Find( map, self->_entryTbl )) == NULL && self->_entryTbl ) {
-			newCornerVC->_entryTbl = Memory_Alloc_Array( CornerVC_Entry, newCornerVC->_entryCount, "CornerVC->_entryTbl");
-			memcpy( newCornerVC->_entryTbl, self->_entryTbl, sizeof(CornerVC_Entry) * newCornerVC->_entryCount );
-			PtrMap_Append( map, newCornerVC->_entryTbl, self->_entryTbl );
-		}
-	}
-	else {
-		newCornerVC->_mesh = self->_mesh;
-		newCornerVC->_entryTbl = self->_entryTbl;
-	}
+      if( (newCornerVC->_entryTbl = PtrMap_Find( map, self->_entryTbl )) == NULL && self->_entryTbl ) {
+	 newCornerVC->_entryTbl = Memory_Alloc_Array( CornerVC_Entry, newCornerVC->_entryCount, "CornerVC->_entryTbl");
+	 memcpy( newCornerVC->_entryTbl, self->_entryTbl, sizeof(CornerVC_Entry) * newCornerVC->_entryCount );
+	 PtrMap_Append( map, newCornerVC->_entryTbl, self->_entryTbl );
+      }
+   }
+   else {
+      newCornerVC->_mesh = self->_mesh;
+      newCornerVC->_entryTbl = self->_entryTbl;
+   }
 	
-	if( ownMap ) {
-		Stg_Class_Delete( map );
-	}
+   if( ownMap ) {
+      Stg_Class_Delete( map );
+   }
 	
-	return (void*)newCornerVC;
+   return (void*)newCornerVC;
 }
 
 
 void _CornerVC_Build(  void* cornerVC, void* data ) {
-	CornerVC*         self = (CornerVC*)cornerVC;
+   CornerVC*         self = (CornerVC*)cornerVC;
 	
-	_CornerVC_BuildSelf( self, data );
+   _CornerVC_BuildSelf( self, data );
 	
-	_VariableCondition_Build( self, data );
+   _VariableCondition_Build( self, data );
 }
 	
 
@@ -582,213 +582,218 @@
 }
 
 void _CornerVC_BuildSelf(  void* cornerVC, void* data ) {
-	CornerVC*        self = (CornerVC*)cornerVC;
+   CornerVC*        self = (CornerVC*)cornerVC;
 	
-	if( self->_mesh ) {
-		Build( self->_mesh, data, False );
-	}
+   if( self->_mesh ) {
+      Build( self->_mesh, data, False );
+   }
 }
 
 IndexSet* _CornerVC_GetSet(void* variableCondition)
 {
-	CornerVC*   self = (CornerVC*)variableCondition;
-	IndexSet    *set = NULL;
-	HexaMD*     hexaMD = (HexaMD*)self->_mesh->layout->decomp;
-	Stream*     warningStr = Journal_Register( Error_Type, self->type );
-	
+   CornerVC*   self = (CornerVC*)variableCondition;
+   IndexSet    *set = NULL;
+   Stream*     warningStr = Journal_Register( Error_Type, self->type );
+   unsigned	nDims;
+   Grid*	vertGrid;
 
-	switch (self->_corner) {
-		case CornerVC_Corner_BottomLeftFront:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomLeftFrontSet(self->_mesh);
-			}
-			break;
+   nDims = Mesh_GetDimSize( self->_mesh );
+	vertGrid = *(Grid**)ExtensionManager_Get( self->_mesh->info, self->_mesh, 
+						  ExtensionManager_GetHandle( self->_mesh->info, 
+									      "vertexGrid" ) );
+
+   switch (self->_corner) {
+      case CornerVC_Corner_BottomLeftFront:
+	 if ( nDims < 3 || !vertGrid->sizes[2] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "K" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalBottomLeftFrontSet(self->_mesh);
+	 }
+	 break;
 			
-		case CornerVC_Corner_BottomRightFront:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomRightFrontSet(self->_mesh);
-			}	
-			break;
+      case CornerVC_Corner_BottomRightFront:
+	 if ( !vertGrid->sizes[0] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "I" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else if ( nDims < 3 || !vertGrid->sizes[2] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "K" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalBottomRightFrontSet(self->_mesh);
+	 }	
+	 break;
 			
-		case CornerVC_Corner_TopLeftFront:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopLeftFrontSet(self->_mesh);
-			}	
-			break;
+      case CornerVC_Corner_TopLeftFront:
+	 if ( nDims < 2 || !vertGrid->sizes[1] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "J" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+	 }
+	 else if ( nDims < 3 || !vertGrid->sizes[2] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "K" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalTopLeftFrontSet(self->_mesh);
+	 }	
+	 break;
 			
-		case CornerVC_Corner_TopRightFront:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopRightFrontSet(self->_mesh);
-			}	
-			break;
+      case CornerVC_Corner_TopRightFront:
+	 if ( nDims < 2 || !vertGrid->sizes[1] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "J" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else if ( nDims < 3 || !vertGrid->sizes[2] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "K" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else if ( !vertGrid->sizes[0] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "I" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalTopRightFrontSet(self->_mesh);
+	 }	
+	 break;
 			
-		case CornerVC_Corner_BottomLeftBack:
-			set = RegularMeshUtils_CreateGlobalBottomLeftBackSet(self->_mesh);
-			break;
+      case CornerVC_Corner_BottomLeftBack:
+	 set = RegularMeshUtils_CreateGlobalBottomLeftBackSet(self->_mesh);
+	 break;
 			
-		case CornerVC_Corner_BottomRightBack:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomRightBackSet(self->_mesh);
-			}
-			break;
+      case CornerVC_Corner_BottomRightBack:
+	 if ( !vertGrid->sizes[0] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "I" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalBottomRightBackSet(self->_mesh);
+	 }
+	 break;
 			
-		case CornerVC_Corner_TopLeftBack:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopLeftBackSet(self->_mesh);
-			}	
-			break;
+      case CornerVC_Corner_TopLeftBack:
+	 if ( nDims < 2 || !vertGrid->sizes[1] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "J" );
+	    set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalTopLeftBackSet(self->_mesh);
+	 }	
+	 break;
 			
-		case CornerVC_Corner_TopRightBack:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
-					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
-					CornerVC_CornerEnumToStr[self->_corner], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopRightBackSet(self->_mesh);
-			}
-			break;
+      case CornerVC_Corner_TopRightBack:
+	 if ( !vertGrid->sizes[0] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "I" );
+	    set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );	
+	 }
+	 else if ( nDims < 2 || !vertGrid->sizes[1] ) {
+	    Journal_Printf( warningStr, "Warning - in %s: Can't build a %s corner VC "
+			    "when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
+			    CornerVC_CornerEnumToStr[self->_corner], "J" );
+	    set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));
+	 }
+	 else {
+	    set = RegularMeshUtils_CreateGlobalTopRightBackSet(self->_mesh);
+	 }
+	 break;
 		
-		case CornerVC_Corner_Size:
-		default:
-			assert(0);
-			break;
-	}
-	
-	return set;
+      case CornerVC_Corner_Size:
+      default:
+	 assert(0);
+	 break;
+   }
+
+   return set;
 }
 
 
 VariableCondition_VariableIndex _CornerVC_GetVariableCount(void* variableCondition, Index globalIndex)
 {
-	CornerVC*   self = (CornerVC*)variableCondition;
+   CornerVC*   self = (CornerVC*)variableCondition;
 	
-	return self->_entryCount;
+   return self->_entryCount;
 }
 
 
 Variable_Index _CornerVC_GetVariableIndex(void* variableCondition, Index globalIndex, VariableCondition_VariableIndex varIndex)
 {
-	CornerVC*       self = (CornerVC*)variableCondition;
-	Variable_Index  searchedIndex = 0;
-	Stream*         errorStr = Journal_Register( Error_Type, self->type );
-	Name            varName;
+   CornerVC*       self = (CornerVC*)variableCondition;
+   Variable_Index  searchedIndex = 0;
+   Stream*         errorStr = Journal_Register( Error_Type, self->type );
+   Name            varName;
 	
-	varName = self->_entryTbl[varIndex].varName;
-	searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
+   varName = self->_entryTbl[varIndex].varName;
+   searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
 	
-	Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
-		"varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
-		"count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
+   Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
+		     "varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
+		     "count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
 
-	return searchedIndex; 
+   return searchedIndex; 
 }
 
 
 VariableCondition_ValueIndex _CornerVC_GetValueIndex(
-		void*				variableCondition, 
-		Index				globalIndex, 
-		VariableCondition_VariableIndex	varIndex)
+   void*				variableCondition, 
+   Index				globalIndex, 
+   VariableCondition_VariableIndex	varIndex)
 {
-	return varIndex;
+   return varIndex;
 }
 
 
 VariableCondition_ValueIndex _CornerVC_GetValueCount(void* variableCondition)
 {
-	CornerVC*	self = (CornerVC*)variableCondition;
+   CornerVC*	self = (CornerVC*)variableCondition;
 	
-	return self->_entryCount;
+   return self->_entryCount;
 }
 
 
 VariableCondition_Value _CornerVC_GetValue(void* variableCondition, VariableCondition_ValueIndex valIndex)
 {
-	CornerVC*	self = (CornerVC*)variableCondition;
+   CornerVC*	self = (CornerVC*)variableCondition;
 
-	return self->_entryTbl[valIndex].value;
+   return self->_entryTbl[valIndex].value;
 }
 
 void _CornerVC_PrintConcise( void* variableCondition, Stream* stream ) {
-	CornerVC*	self = (CornerVC*)variableCondition;
+   CornerVC*	self = (CornerVC*)variableCondition;
 	
-	Journal_Printf( stream, "\ttype: %s, set: ", self->type );
-	Journal_Printf( stream, "%s\n", 
-		self->_corner == CornerVC_Corner_BottomLeftFront ? "BottomLeftFront" :
-		self->_corner == CornerVC_Corner_BottomRightFront ? "BottomRightFront" : 
-		self->_corner == CornerVC_Corner_TopLeftFront ? "TopLeftFront" :
-		self->_corner == CornerVC_Corner_TopRightFront ? "TopRightFront" : 
-		self->_corner == CornerVC_Corner_BottomLeftBack ? "BottomLeftBack" :
-		self->_corner == CornerVC_Corner_BottomRightBack ? "BottomRightBack" : 
-		self->_corner == CornerVC_Corner_TopLeftBack ? "TopLeftBack" :
-		self->_corner == CornerVC_Corner_TopRightBack ? "TopRightBack" : "None" );
+   Journal_Printf( stream, "\ttype: %s, set: ", self->type );
+   Journal_Printf( stream, "%s\n", 
+		   self->_corner == CornerVC_Corner_BottomLeftFront ? "BottomLeftFront" :
+		   self->_corner == CornerVC_Corner_BottomRightFront ? "BottomRightFront" : 
+		   self->_corner == CornerVC_Corner_TopLeftFront ? "TopLeftFront" :
+		   self->_corner == CornerVC_Corner_TopRightFront ? "TopRightFront" : 
+		   self->_corner == CornerVC_Corner_BottomLeftBack ? "BottomLeftBack" :
+		   self->_corner == CornerVC_Corner_BottomRightBack ? "BottomRightBack" : 
+		   self->_corner == CornerVC_Corner_TopLeftBack ? "TopLeftBack" :
+		   self->_corner == CornerVC_Corner_TopRightBack ? "TopRightBack" : "None" );
 }
 
 /*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -79,10 +79,11 @@
 			name,
 			False,
 			NULL, 
-			0);
+			0, 
+			NULL );
 }
 
-DofLayout* DofLayout_New( Name name, Variable_Register* variableRegister, Index numItemsInLayout )
+DofLayout* DofLayout_New( Name name, Variable_Register* variableRegister, Index numItemsInLayout, void* mesh )
 {
 	return _DofLayout_New(
 			sizeof(DofLayout), 
@@ -99,11 +100,12 @@
 			name, 
 			True,
 			variableRegister, 
-			numItemsInLayout);
+			numItemsInLayout, 
+			mesh );
 }
 
 
-void DofLayout_Init(DofLayout* self, Name name, Variable_Register* variableRegister, Index numItemsInLayout )
+void DofLayout_Init(DofLayout* self, Name name, Variable_Register* variableRegister, Index numItemsInLayout, void* mesh )
 {
 	/* General info */
 	self->type = Variable_Type;
@@ -123,7 +125,7 @@
 	_Stg_Class_Init((Stg_Class*)self);
 	
 	/* Stg_Class info */
-	_DofLayout_Init(self, variableRegister, numItemsInLayout, 0, NULL);
+	_DofLayout_Init(self, variableRegister, numItemsInLayout, 0, NULL, mesh);
 }
 
 DofLayout* _DofLayout_New( 
@@ -141,7 +143,8 @@
 		Name						name,
 		Bool						initFlag,
 		Variable_Register*				variableRegister,
-		Index						numItemsInLayout )
+		Index						numItemsInLayout, 
+		void*						mesh )
 {
 	DofLayout*	self;
 	
@@ -156,20 +159,22 @@
 	
 	/* Stg_Class info */
 	if( initFlag ){
-		_DofLayout_Init(self, variableRegister, numItemsInLayout, 0, NULL );
+		_DofLayout_Init(self, variableRegister, numItemsInLayout, 0, NULL, mesh );
 	}
 	
 	return self;
 }
 
 
-void _DofLayout_Init(void* dofLayout, Variable_Register* variableRegister, Index numItemsInLayout, Variable_Index baseVariableCount, Variable** baseVariableArray )
+void _DofLayout_Init(void* dofLayout, Variable_Register* variableRegister, 
+		     Index numItemsInLayout, Variable_Index baseVariableCount, Variable** baseVariableArray, void* _mesh )
 {
 	DofLayout*	self = (DofLayout*)dofLayout;
+	Mesh*		mesh = (Mesh*)_mesh;
 	
 	self->isConstructed = True;
 	self->_variableRegister = variableRegister;
-	
+
 	self->_numItemsInLayout = numItemsInLayout;
 	self->_variableEnabledSets = NULL;
 	self->_totalVarCount = 0;
@@ -177,8 +182,9 @@
 	
 	self->dofCounts = NULL;
 
-	/* Adds each variable in this list as a base degree of freedom to each item in DofLayout */
-	DofLayout_AddAllFromVariableArray( self, baseVariableCount, baseVariableArray );
+	self->mesh = mesh;
+	self->nBaseVariables = baseVariableCount;
+	self->baseVariables = baseVariableArray;
 }
 
 
@@ -282,26 +288,20 @@
 {
 	DofLayout *             self              = (DofLayout*)dofLayout;
 	Dictionary*             thisComponentDict = NULL;
-	Name                    countName         = NULL;
 	void*                   variableRegister  = NULL;
-	void*                   pointerRegister   = NULL;
-	int*                    count             = NULL;
 	Dictionary_Entry_Value* list;
 	Variable_Index          baseVariableCount = 0;
 	Variable**              baseVariableList  = NULL;
+	Mesh*			mesh;
 
-	// Get component's dictionary setup //
+	/* Get component's dictionary setup */
 	assert( cf->componentDict );
 	thisComponentDict = Dictionary_GetDictionary( cf->componentDict, self->name );
 	assert( thisComponentDict );
-	
-	countName = Stg_ComponentFactory_GetString( cf, self->name, "Count", "");
-	pointerRegister = (Stg_ObjectList*)Stg_ObjectList_Get( cf->registerRegister, "Pointer_Register" );
-	assert( pointerRegister );
 
-	count = Stg_ObjectList_Get( pointerRegister, countName );
-	assert( count );
-	
+	/* Get the mesh. */
+	mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "mesh", Mesh, True, data );
+
 	variableRegister = (void*)Stg_ObjectList_Get( cf->registerRegister, "Variable_Register" );
 	assert( variableRegister );
 
@@ -328,10 +328,7 @@
 		}
 	}
 	
-	_DofLayout_Init( self, variableRegister, *count, baseVariableCount, baseVariableList );
-
-	if (baseVariableList)
-		Memory_Free( baseVariableList );
+	_DofLayout_Init( self, variableRegister, 0, baseVariableCount, baseVariableList, mesh );
 }
 
 void _DofLayout_Build( void* dofLayout, void* data ) {
@@ -339,7 +336,18 @@
 	Index		indexCount;
 	Index*		indices;
 	Index		set_I, i, pos;
-	
+
+	assert( self );
+
+	/* Build mesh and extract domain size, if required. */
+	if( self->mesh ) {
+		Build( self->mesh, data, False );
+		self->_numItemsInLayout = Mesh_GetDomainSize( self->mesh, MT_VERTEX );
+	}
+
+	/* Adds each variable in this list as a base degree of freedom to each item in DofLayout */
+	DofLayout_AddAllFromVariableArray( self, self->nBaseVariables, self->baseVariables );
+
 	/* ensure variables are built */
 	for( i = 0; i < self->_totalVarCount; i++ )
 		Build( Variable_Register_GetByIndex( self->_variableRegister, self->_varIndicesMapping[i] ), data, False );
@@ -449,7 +457,6 @@
 ** Public functions
 */
 
-
 void DofLayout_AddDof_ByVarIndex(void* dofLayout, Variable_Index varIndex, Index index) {
 	DofLayout*	self = (DofLayout*)dofLayout;
 	
@@ -607,7 +614,7 @@
 }
 
 
-void DofLayout_SaveAllVariablesToFiles( void* dofLayout, char* prefixString, Processor_Index rank ) {
+void DofLayout_SaveAllVariablesToFiles( void* dofLayout, char* prefixString, unsigned rank ) {
 	DofLayout*  self = (DofLayout*) dofLayout;
 	Index       ownedVar_I, var_I;
 	Variable*   variable = NULL;
@@ -639,7 +646,7 @@
 }
 
 
-void DofLayout_LoadAllVariablesFromFiles( void* dofLayout, char* prefixString, Processor_Index rank ) {
+void DofLayout_LoadAllVariablesFromFiles( void* dofLayout, char* prefixString, unsigned rank ) {
 	DofLayout*  self = (DofLayout*) dofLayout;
 	Index       ownedVar_I, var_I;
 	Variable*   variable = NULL;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DofLayout.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -76,7 +76,12 @@
 		/** 2D Array: for each index (e.g. each node), stores an array (of size dofCounts[i]) containing
 		the indexes into the DofLayout::_variableRegister of the Variable s at that index. */ \
 		Variable_Index**	varIndices; \
+						    \
+		Mesh*			mesh;	\
+		unsigned		nBaseVariables; \
+		Variable**		baseVariables;
 
+
 	/** Allows the user to lay out which Variables exist at each index in a structure (eg nodes of a mesh) - see
 	 DofLayout.h for details. */
 	struct _DofLayout { __DofLayout };
@@ -88,9 +93,9 @@
 	
 	DofLayout*	DofLayout_DefaultNew( Name name );
 	
-	DofLayout*	DofLayout_New( Name name, Variable_Register* variableRegister, Index numItemsInLayout );
+	DofLayout*	DofLayout_New( Name name, Variable_Register* variableRegister, Index numItemsInLayout, void* mesh );
 	
-	void		DofLayout_Init(DofLayout* self, Name name, Variable_Register* variableRegister, Index numItemsInLayout );
+	void		DofLayout_Init(DofLayout* self, Name name, Variable_Register* variableRegister, Index numItemsInLayout, void* mesh );
 	
 	DofLayout*	_DofLayout_New( 
 				SizeT						_sizeOfSelf, 
@@ -107,9 +112,10 @@
 				Name							name,
 				Bool							initFlag,
 				Variable_Register*				variableRegister,
-				Index						numItemsInLayout);
+				Index						numItemsInLayout, 
+				void*						mesh );
 	
-	void _DofLayout_Init(void* dofLayout, Variable_Register* variableRegister, Index numItemsInLayout, Variable_Index baseVariableCount, Variable** baseVariableArray );
+	void _DofLayout_Init(void* dofLayout, Variable_Register* variableRegister, Index numItemsInLayout, Variable_Index baseVariableCount, Variable** baseVariableArray, void* mesh );
 	
 	
 	/*--------------------------------------------------------------------------------------------------------------------------
@@ -195,9 +201,9 @@
 	void DofLayout_AddAllFromVariableArray( void* dofLayout, Variable_Index variableCount, Variable** variableArray ) ;
 
 	/** Saves all variables used by this dofLayout to files */
-	void DofLayout_SaveAllVariablesToFiles( void* dofLayout, char* prefixString, Processor_Index rank );
+	void DofLayout_SaveAllVariablesToFiles( void* dofLayout, char* prefixString, unsigned rank );
 
 	/** Saves all variables used by this dofLayout to files */
-	void DofLayout_LoadAllVariablesFromFiles( void* dofLayout, char* prefixString, Processor_Index rank );
+	void DofLayout_LoadAllVariablesFromFiles( void* dofLayout, char* prefixString, unsigned rank );
 
 #endif /* __Discretisation_Utils_DofLayout_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FrictionVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FrictionVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FrictionVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -54,10 +54,10 @@
 */
 
 VariableCondition* FrictionVC_Factory(
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						data )
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						data )
 {
 	return (VariableCondition*)FrictionVC_New( defaultFrictionVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
 }
@@ -96,12 +96,12 @@
 }
 
 FrictionVC*	FrictionVC_New(
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	return _FrictionVC_New(
 		sizeof(FrictionVC), 
@@ -135,13 +135,13 @@
 
 
 void FrictionVC_Init(
-		FrictionVC*						self,
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	FrictionVC*						self,
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	/* General info */
 	self->type = FrictionVC_Type;
@@ -179,33 +179,33 @@
 
 
 FrictionVC* _FrictionVC_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name								name, 
-		Bool								initFlag,
-		VariableCondition_BuildSelfFunc*		_buildSelf, 
-		VariableCondition_PrintConciseFunc*		_printConcise,
-		VariableCondition_ReadDictionaryFunc*		_readDictionary,
-		VariableCondition_GetSetFunc*			_getSet,
-		VariableCondition_GetVariableCountFunc*		_getVariableCount,
-		VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
-		VariableCondition_GetValueIndexFunc*		_getValueIndex,
-		VariableCondition_GetValueCountFunc*		_getValueCount,
-		VariableCondition_GetValueFunc*			_getValue,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh)
+	SizeT						_sizeOfSelf, 
+	Type						type,
+	Stg_Class_DeleteFunction*				_delete,
+	Stg_Class_PrintFunction*				_print,
+	Stg_Class_CopyFunction*				_copy, 
+	Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
+	Stg_Component_ConstructFunction*			_construct,
+	Stg_Component_BuildFunction*			_build,
+	Stg_Component_InitialiseFunction*			_initialise,
+	Stg_Component_ExecuteFunction*			_execute,
+	Stg_Component_DestroyFunction*			_destroy,
+	Name								name, 
+	Bool								initFlag,
+	VariableCondition_BuildSelfFunc*		_buildSelf, 
+	VariableCondition_PrintConciseFunc*		_printConcise,
+	VariableCondition_ReadDictionaryFunc*		_readDictionary,
+	VariableCondition_GetSetFunc*			_getSet,
+	VariableCondition_GetVariableCountFunc*		_getVariableCount,
+	VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
+	VariableCondition_GetValueIndexFunc*		_getValueIndex,
+	VariableCondition_GetValueCountFunc*		_getValueCount,
+	VariableCondition_GetValueFunc*			_getValue,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh)
 {
 	FrictionVC*	self;
 	
@@ -250,9 +250,9 @@
 
 
 void _FrictionVC_Init(
-		void*						wallVC, 
-		Name						_dictionaryEntryName, 
-		void*						_mesh )
+	void*						wallVC, 
+	Name						_dictionaryEntryName, 
+	void*						_mesh )
 {
 	FrictionVC*			self = (FrictionVC*)wallVC;
 
@@ -338,10 +338,10 @@
 					Stream*	errorStr = Journal_Register( Error_Type, self->type );
 
 					Journal_Printf( errorStr, "Error- in %s: While parsing "
-						"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
-						"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
-						__func__, self->_dictionaryEntryName, FrictionVC_WallEnumToStr[self->_wall],
-						self->_entryTbl[entry_I].varName, funcName );
+							"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
+							"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
+							__func__, self->_dictionaryEntryName, FrictionVC_WallEnumToStr[self->_wall],
+							self->_entryTbl[entry_I].varName, funcName );
 					Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
 					ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
 					Journal_Printf( errorStr, ")\n");	
@@ -357,7 +357,7 @@
 				self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
 				self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
 				self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
-					self->_entryTbl[entry_I].value.as.typeArray.size, "FrictionVC->_entryTbl[].value.as.typeArray.array" );
+													self->_entryTbl[entry_I].value.as.typeArray.size, "FrictionVC->_entryTbl[].value.as.typeArray.array" );
 					
 				for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
 				{
@@ -367,7 +367,7 @@
 				}
 			}
 			else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
-				0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
+				 0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
 			{
 				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
 				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
@@ -438,9 +438,9 @@
 	if (self->_dictionaryEntryName)
 		Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
 	Journal_Printf( info, "\t_wall: %s\n", self->_wall == FrictionVC_Wall_Front ? "Front" :
-		self->_wall == FrictionVC_Wall_Back ? "Back" : self->_wall == FrictionVC_Wall_Left ? "Left" :
-		self->_wall == FrictionVC_Wall_Right ? "Right" : self->_wall == FrictionVC_Wall_Top ? "Top" :
-		self->_wall == FrictionVC_Wall_Bottom ? "Bottom" : "None");
+			self->_wall == FrictionVC_Wall_Back ? "Back" : self->_wall == FrictionVC_Wall_Left ? "Left" :
+			self->_wall == FrictionVC_Wall_Right ? "Right" : self->_wall == FrictionVC_Wall_Top ? "Top" :
+			self->_wall == FrictionVC_Wall_Bottom ? "Bottom" : "None");
 	Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
 	Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
 	if (self->_entryTbl)
@@ -453,46 +453,46 @@
 			Journal_Printf( info, "\t\t\tvalue:\n");
 			switch (self->_entryTbl[entry_I].value.type)
 			{
-				case VC_ValueType_Double:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
-					Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
-					break;
+			case VC_ValueType_Double:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
+				Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
+				break;
 					
-				case VC_ValueType_Int:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
-					Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
-					break;
+			case VC_ValueType_Int:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
+				Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
+				break;
 					
-				case VC_ValueType_Short:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
-					Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
-					break;
+			case VC_ValueType_Short:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
+				Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
+				break;
 					
-				case VC_ValueType_Char:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
-					Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
-					break;
+			case VC_ValueType_Char:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
+				Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
+				break;
 					
-				case VC_ValueType_Ptr:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
-					Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
-					break;
+			case VC_ValueType_Ptr:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
+				Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
+				break;
 					
-				case VC_ValueType_DoubleArray:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
-					Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
-					Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
+			case VC_ValueType_DoubleArray:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
+				Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
+				Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
 						self->_entryTbl[entry_I].value.as.typeArray.array);
-					if (self->_entryTbl[entry_I].value.as.typeArray.array)
-						for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-							Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
+				if (self->_entryTbl[entry_I].value.as.typeArray.array)
+					for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+						Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
 								self->_entryTbl[entry_I].value.as.typeArray.array[i]);
-					break;
+				break;
 					
-				case VC_ValueType_CFIndex:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
-					Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
-					break;
+			case VC_ValueType_CFIndex:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
+				Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
+				break;
 			}
 		}
 	Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
@@ -577,87 +577,92 @@
 {
 	FrictionVC*		self = (FrictionVC*)variableCondition;
 	IndexSet	*set = NULL;
-	HexaMD*		hexaMD = (HexaMD*)self->_mesh->layout->decomp;
-	Stream*		warningStr = Journal_Register( Error_Type, self->type );
+	Stream*     warningStr = Journal_Register( Error_Type, self->type );
+	unsigned	nDims;
+	unsigned*	gSize;
 
+	nDims = Mesh_GetDimSize( self->_mesh );
+	gSize = (unsigned*)ExtensionManager_Get( self->_mesh->info, self->_mesh, 
+						 ExtensionManager_GetHandle( self->_mesh->info, 
+									     "cartesianGlobalSize" ) );
 	
 	switch (self->_wall) {
-		case FrictionVC_Wall_Front:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Front:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalFrontSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalFrontSet(self->_mesh);
+		}
+		break;
 			
-		case FrictionVC_Wall_Back:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Back:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBackSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBackSet(self->_mesh);
+		}	
+		break;
 			
-		case FrictionVC_Wall_Top:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Top:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
+		}	
+		break;
 			
-		case FrictionVC_Wall_Bottom:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Bottom:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
+		}	
+		break;
 			
-		case FrictionVC_Wall_Left:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Left:
+		if ( !gSize[0] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
+		}	
+		break;
 			
-		case FrictionVC_Wall_Right:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case FrictionVC_Wall_Right:
+		if ( !gSize[0] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					FrictionVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
+		}
+		break;
 			
-		case FrictionVC_Wall_Size:
-		default:
-			assert(0);
-			break;
+	case FrictionVC_Wall_Size:
+	default:
+		assert(0);
+		break;
 	}
 	
 	return set;
@@ -683,17 +688,17 @@
 	searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
 	
 	Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
-		"varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
-		"count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
+			  "varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
+			  "count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
 
 	return searchedIndex; 
 }
 
 
 VariableCondition_ValueIndex _FrictionVC_GetValueIndex(
-		void*				variableCondition, 
-		Index				globalIndex, 
-		VariableCondition_VariableIndex	varIndex)
+	void*				variableCondition, 
+	Index				globalIndex, 
+	VariableCondition_VariableIndex	varIndex)
 {
 	return varIndex;
 }
@@ -719,12 +724,12 @@
 	
 	Journal_Printf( stream, "\ttype: %s, set: ", self->type );
 	Journal_Printf( stream, "%s\n", 
-		self->_wall == FrictionVC_Wall_Front ? "Front" :
-		self->_wall == FrictionVC_Wall_Back ? "Back" : 
-		self->_wall == FrictionVC_Wall_Left ? "Left" :
-		self->_wall == FrictionVC_Wall_Right ? "Right" : 
-		self->_wall == FrictionVC_Wall_Top ? "Top" :
-		self->_wall == FrictionVC_Wall_Bottom ? "Bottom" : "None" );
+			self->_wall == FrictionVC_Wall_Front ? "Front" :
+			self->_wall == FrictionVC_Wall_Back ? "Back" : 
+			self->_wall == FrictionVC_Wall_Left ? "Left" :
+			self->_wall == FrictionVC_Wall_Right ? "Right" : 
+			self->_wall == FrictionVC_Wall_Top ? "Top" :
+			self->_wall == FrictionVC_Wall_Bottom ? "Bottom" : "None" );
 }
 
 /*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Init.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Init.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,40 +28,16 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
 #include <mpi.h>
-#include "Base/Base.h"
 
+#include "Base/Base.h"
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
 #include "Discretisation/Mesh/Mesh.h"
 
-#include "types.h"
-#include "Init.h"
-#include "AllElementsVC.h"
-#include "AllNodesVC.h"
-#include "DiscretisationContext.h"
-#include "MeshCoarsener_Hexa.h"
-#include "WallVC.h"
-#include "CornerVC.h"
-#include "InnerWallVC.h"
-#include "ShapeVC.h"
-#include "FrictionVC.h"
-#include "SplitFrictionWallVC.h"
-#include "Sync.h"
-#include "DofLayout.h"
-#include "Operator.h"
-#include "FieldVariable.h"
-#include "FieldVariable_Register.h"
-#include "LinearRegression.h"
-#include "OperatorFieldVariable.h"
-#include "TimeIntegrator.h"
-#include "TimeIntegratee.h"
-#include "ShapeAdvector.h"
-#include "Remesher.h"
-#include "StripRemesher.h"
-#include "CellRemesher.h"
+#include "Utils.h"
 
-#include <stdio.h>
 
 Bool DiscretisationUtils_Init( int* argc, char** argv[] ) {
 	Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */
@@ -75,24 +51,41 @@
 	VariableCondition_Register_Add( variableCondition_Register, FrictionVC_Type, FrictionVC_Factory );
 	VariableCondition_Register_Add( variableCondition_Register, SplitFrictionWallVC_Type, SplitFrictionWallVC_Factory );
 	
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), AllElementsVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)AllElementsVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), AllNodesVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)AllNodesVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), DofLayout_Type, "0", (Stg_Component_DefaultConstructorFunction*)DofLayout_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), FieldVariable_Type, "0", (Stg_Component_DefaultConstructorFunction*)FieldVariable_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), OperatorFieldVariable_Type, "0", (Stg_Component_DefaultConstructorFunction*)OperatorFieldVariable_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), WallVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)WallVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), CornerVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)CornerVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), InnerWallVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)InnerWallVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ShapeVC_Type, "0", _ShapeVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), FrictionVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)FrictionVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), SplitFrictionWallVC_Type, "0", (Stg_Component_DefaultConstructorFunction*)SplitFrictionWallVC_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), Remesher_Type, "0", (Stg_Component_DefaultConstructorFunction*)_Remesher_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), StripRemesher_Type, "0", (Stg_Component_DefaultConstructorFunction*)_StripRemesher_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), CellRemesher_Type, "0", (Stg_Component_DefaultConstructorFunction*)_CellRemesher_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), AllElementsVC_Type, 
+				   "0", (void* (*)(Name))AllElementsVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), AllNodesVC_Type, 
+				   "0", (void* (*)(Name))AllNodesVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), DofLayout_Type, 
+				   "0", (void* (*)(Name))DofLayout_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), FieldVariable_Type, "0", 
+				   (void* (*)(Name))FieldVariable_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), OperatorFieldVariable_Type, 
+				   "0", (void* (*)(Name))OperatorFieldVariable_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), WallVC_Type, 
+				   "0", (void* (*)(Name))WallVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), CornerVC_Type, 
+				   "0", (void* (*)(Name))CornerVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), InnerWallVC_Type, 
+				   "0", (void* (*)(Name))InnerWallVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ShapeVC_Type, 
+				   "0", (void*  (*)(Name))_ShapeVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), FrictionVC_Type, 
+				   "0", (void* (*)(Name))FrictionVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), SplitFrictionWallVC_Type, 
+				   "0", (void* (*)(Name))SplitFrictionWallVC_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), Remesher_Type, 
+				   "0", (void* (*)(Name))_Remesher_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), StripRemesher_Type, 
+				   "0", (void* (*)(Name))_StripRemesher_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), CellRemesher_Type, 
+				   "0", (void* (*)(Name))_CellRemesher_DefaultNew );
 
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), TimeIntegrator_Type,"0", _TimeIntegrator_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), TimeIntegratee_Type,"0", _TimeIntegratee_DefaultNew );
-	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ShapeAdvector_Type,"0", _ShapeAdvector_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), TimeIntegrator_Type, 
+				   "0", (void*  (*)(Name))_TimeIntegrator_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), TimeIntegratee_Type, 
+				   "0", (void*  (*)(Name))_TimeIntegratee_DefaultNew );
+	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), ShapeAdvector_Type, 
+				   "0", (void*  (*)(Name))_ShapeAdvector_DefaultNew );
 
 	RegisterParent( DiscretisationContext_Type,    AbstractContext_Type );
 
@@ -106,8 +99,6 @@
 	RegisterParent( FrictionVC_Type,               VariableCondition_Type );
 	RegisterParent( SplitFrictionWallVC_Type,      VariableCondition_Type );
 	RegisterParent( DofLayout_Type,                Stg_Component_Type );
-	RegisterParent( MeshCoarsener_Hexa_Type,       Stg_Component_Type );
-	RegisterParent( Sync_Type,                     Stg_Component_Type );
 	RegisterParent( Remesher_Type,                 Stg_Component_Type );
 	RegisterParent( StripRemesher_Type,            Remesher_Type );
 	RegisterParent( CellRemesher_Type,            Remesher_Type );

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/InnerWallVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/InnerWallVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/InnerWallVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -60,10 +60,10 @@
 */
 
 VariableCondition* InnerWallVC_Factory(
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						data )
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						data )
 {
 	return (VariableCondition*)InnerWallVC_New( defaultInnerWallVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
 }
@@ -102,12 +102,12 @@
 }
 
 InnerWallVC*	InnerWallVC_New(
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	return _InnerWallVC_New(
 		sizeof(InnerWallVC), 
@@ -141,13 +141,13 @@
 
 
 void InnerWallVC_Init(
-		InnerWallVC*						self,
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	InnerWallVC*						self,
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	/* General info */
 	self->type = InnerWallVC_Type;
@@ -185,33 +185,33 @@
 
 
 InnerWallVC* _InnerWallVC_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name								name, 
-		Bool								initFlag,
-		VariableCondition_BuildSelfFunc*		_buildSelf, 
-		VariableCondition_PrintConciseFunc*		_printConcise,
-		VariableCondition_ReadDictionaryFunc*		_readDictionary,
-		VariableCondition_GetSetFunc*			_getSet,
-		VariableCondition_GetVariableCountFunc*		_getVariableCount,
-		VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
-		VariableCondition_GetValueIndexFunc*		_getValueIndex,
-		VariableCondition_GetValueCountFunc*		_getValueCount,
-		VariableCondition_GetValueFunc*			_getValue,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh)
+	SizeT						_sizeOfSelf, 
+	Type						type,
+	Stg_Class_DeleteFunction*				_delete,
+	Stg_Class_PrintFunction*				_print,
+	Stg_Class_CopyFunction*				_copy, 
+	Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
+	Stg_Component_ConstructFunction*			_construct,
+	Stg_Component_BuildFunction*			_build,
+	Stg_Component_InitialiseFunction*			_initialise,
+	Stg_Component_ExecuteFunction*			_execute,
+	Stg_Component_DestroyFunction*			_destroy,
+	Name								name, 
+	Bool								initFlag,
+	VariableCondition_BuildSelfFunc*		_buildSelf, 
+	VariableCondition_PrintConciseFunc*		_printConcise,
+	VariableCondition_ReadDictionaryFunc*		_readDictionary,
+	VariableCondition_GetSetFunc*			_getSet,
+	VariableCondition_GetVariableCountFunc*		_getVariableCount,
+	VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
+	VariableCondition_GetValueIndexFunc*		_getValueIndex,
+	VariableCondition_GetValueCountFunc*		_getValueCount,
+	VariableCondition_GetValueFunc*			_getValue,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh)
 {
 	InnerWallVC*	self;
 	
@@ -256,9 +256,9 @@
 
 
 void _InnerWallVC_Init(
-		void*						innerWallVC, 
-		Name						_dictionaryEntryName, 
-		void*						_mesh )
+	void*						innerWallVC, 
+	Name						_dictionaryEntryName, 
+	void*						_mesh )
 {
 	InnerWallVC*			self = (InnerWallVC*)innerWallVC;
 
@@ -343,10 +343,10 @@
 					Stream*	errorStr = Journal_Register( Error_Type, self->type );
 
 					Journal_Printf( errorStr, "Error- in %s: While parsing "
-						"definition of innerWallVC \"%s\" (applies to innerWall \"%s\"), the cond. func. applied to "
-						"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
-						__func__, self->_dictionaryEntryName, InnerWallVC_InnerWallEnumToStr[self->_innerWall],
-						self->_entryTbl[entry_I].varName, funcName );
+							"definition of innerWallVC \"%s\" (applies to innerWall \"%s\"), the cond. func. applied to "
+							"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
+							__func__, self->_dictionaryEntryName, InnerWallVC_InnerWallEnumToStr[self->_innerWall],
+							self->_entryTbl[entry_I].varName, funcName );
 					Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
 					ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
 					Journal_Printf( errorStr, ")\n");	
@@ -362,7 +362,7 @@
 				self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
 				self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
 				self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
-					self->_entryTbl[entry_I].value.as.typeArray.size, "InnerWallVC->_entryTbl[].value.as.typeArray.array" );
+													self->_entryTbl[entry_I].value.as.typeArray.size, "InnerWallVC->_entryTbl[].value.as.typeArray.array" );
 					
 				for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
 				{
@@ -372,7 +372,7 @@
 				}
 			}
 			else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
-				0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
+				 0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
 			{
 				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
 				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
@@ -443,9 +443,9 @@
 	if (self->_dictionaryEntryName)
 		Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
 	Journal_Printf( info, "\t_innerWall: %s\n", self->_innerWall == InnerWallVC_InnerWall_Front ? "Front" :
-		self->_innerWall == InnerWallVC_InnerWall_Back ? "Back" : self->_innerWall == InnerWallVC_InnerWall_Left ? "Left" :
-		self->_innerWall == InnerWallVC_InnerWall_Right ? "Right" : self->_innerWall == InnerWallVC_InnerWall_Top ? "Top" :
-		self->_innerWall == InnerWallVC_InnerWall_Bottom ? "Bottom" : "None");
+			self->_innerWall == InnerWallVC_InnerWall_Back ? "Back" : self->_innerWall == InnerWallVC_InnerWall_Left ? "Left" :
+			self->_innerWall == InnerWallVC_InnerWall_Right ? "Right" : self->_innerWall == InnerWallVC_InnerWall_Top ? "Top" :
+			self->_innerWall == InnerWallVC_InnerWall_Bottom ? "Bottom" : "None");
 	Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
 	Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
 	if (self->_entryTbl)
@@ -458,46 +458,46 @@
 			Journal_Printf( info, "\t\t\tvalue:\n");
 			switch (self->_entryTbl[entry_I].value.type)
 			{
-				case VC_ValueType_Double:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
-					Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
-					break;
+			case VC_ValueType_Double:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
+				Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
+				break;
 					
-				case VC_ValueType_Int:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
-					Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
-					break;
+			case VC_ValueType_Int:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
+				Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
+				break;
 					
-				case VC_ValueType_Short:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
-					Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
-					break;
+			case VC_ValueType_Short:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
+				Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
+				break;
 					
-				case VC_ValueType_Char:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
-					Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
-					break;
+			case VC_ValueType_Char:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
+				Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
+				break;
 					
-				case VC_ValueType_Ptr:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
-					Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
-					break;
+			case VC_ValueType_Ptr:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
+				Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
+				break;
 					
-				case VC_ValueType_DoubleArray:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
-					Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
-					Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
+			case VC_ValueType_DoubleArray:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
+				Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
+				Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
 						self->_entryTbl[entry_I].value.as.typeArray.array);
-					if (self->_entryTbl[entry_I].value.as.typeArray.array)
-						for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-							Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
+				if (self->_entryTbl[entry_I].value.as.typeArray.array)
+					for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+						Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
 								self->_entryTbl[entry_I].value.as.typeArray.array[i]);
-					break;
+				break;
 					
-				case VC_ValueType_CFIndex:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
-					Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
-					break;
+			case VC_ValueType_CFIndex:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
+				Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
+				break;
 			}
 		}
 	Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
@@ -582,87 +582,92 @@
 {
 	InnerWallVC*		self = (InnerWallVC*)variableCondition;
 	IndexSet	*set = NULL;
-	HexaMD*		hexaMD = (HexaMD*)self->_mesh->layout->decomp;
 	Stream*		warningStr = Journal_Register( Error_Type, self->type );
+	unsigned	nDims;
+	unsigned*	gSize;
 
+	nDims = Mesh_GetDimSize( self->_mesh );
+	gSize = (unsigned*)ExtensionManager_Get( self->_mesh->info, self->_mesh, 
+						 ExtensionManager_GetHandle( self->_mesh->info, 
+									     "cartesianGlobalSize" ) );
 	
 	switch (self->_innerWall) {
-		case InnerWallVC_InnerWall_Front:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Front:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerFrontSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerFrontSet( self->_mesh );
+		}
+		break;
 			
-		case InnerWallVC_InnerWall_Back:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Back:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerBackSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerBackSet( self->_mesh );
+		}	
+		break;
 			
-		case InnerWallVC_InnerWall_Top:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Top:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerTopSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerTopSet(self->_mesh);
+		}	
+		break;
 			
-		case InnerWallVC_InnerWall_Bottom:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Bottom:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerBottomSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerBottomSet(self->_mesh);
+		}	
+		break;
 			
-		case InnerWallVC_InnerWall_Left:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Left:
+		if ( nDims < 1 ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerLeftSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerLeftSet(self->_mesh);
+		}	
+		break;
 			
-		case InnerWallVC_InnerWall_Right:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s innerWall VC "
+	case InnerWallVC_InnerWall_Right:
+		if( nDims < 1 ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					InnerWallVC_InnerWallEnumToStr[self->_innerWall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalInnerRightSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalInnerRightSet(self->_mesh);
+		}
+		break;
 			
-		case InnerWallVC_InnerWall_Size:
-		default:
-			assert(0);
-			break;
+	case InnerWallVC_InnerWall_Size:
+	default:
+		assert(0);
+		break;
 	}
 	
 	return set;
@@ -688,17 +693,17 @@
 	searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
 	
 	Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
-		"varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
-		"count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
+			  "varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
+			  "count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
 
 	return searchedIndex; 
 }
 
 
 VariableCondition_ValueIndex _InnerWallVC_GetValueIndex(
-		void*				variableCondition, 
-		Index				globalIndex, 
-		VariableCondition_VariableIndex	varIndex)
+	void*				variableCondition, 
+	Index				globalIndex, 
+	VariableCondition_VariableIndex	varIndex)
 {
 	return varIndex;
 }
@@ -724,12 +729,12 @@
 	
 	Journal_Printf( stream, "\ttype: %s, set: ", self->type );
 	Journal_Printf( stream, "%s\n", 
-		self->_innerWall == InnerWallVC_InnerWall_Front ? "Front" :
-		self->_innerWall == InnerWallVC_InnerWall_Back ? "Back" : 
-		self->_innerWall == InnerWallVC_InnerWall_Left ? "Left" :
-		self->_innerWall == InnerWallVC_InnerWall_Right ? "Right" : 
-		self->_innerWall == InnerWallVC_InnerWall_Top ? "Top" :
-		self->_innerWall == InnerWallVC_InnerWall_Bottom ? "Bottom" : "None" );
+			self->_innerWall == InnerWallVC_InnerWall_Front ? "Front" :
+			self->_innerWall == InnerWallVC_InnerWall_Back ? "Back" : 
+			self->_innerWall == InnerWallVC_InnerWall_Left ? "Left" :
+			self->_innerWall == InnerWallVC_InnerWall_Right ? "Right" : 
+			self->_innerWall == InnerWallVC_InnerWall_Top ? "Top" :
+			self->_innerWall == InnerWallVC_InnerWall_Bottom ? "Bottom" : "None" );
 }
 
 /*--------------------------------------------------------------------------------------------------------------------------

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,449 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: MeshCoarsener_Hexa.c 2453 2004-12-21 04:49:34Z LukeHodkinson $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include "types.h"
-#include "MeshCoarsener_Hexa.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type MeshCoarsener_Hexa_Type = "MeshCoarsener_Hexa";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-MeshCoarsener_Hexa* MeshCoarsener_Hexa_DefaultNew( Name name )
-{
-	return _MeshCoarsener_Hexa_New(
-		sizeof(MeshCoarsener_Hexa), 
-		MeshCoarsener_Hexa_Type, 
-		_MeshCoarsener_Hexa_Delete, 
-		_MeshCoarsener_Hexa_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)MeshCoarsener_Hexa_DefaultNew,
-		_MeshCoarsener_Hexa_Construct,
-		_MeshCoarsener_Hexa_Build,
-		_MeshCoarsener_Hexa_Initialise,
-		_MeshCoarsener_Hexa_Execute,
-		_MeshCoarsener_Hexa_Destroy,
-		name,
-		False,
-		NULL );
-}
-
-MeshCoarsener_Hexa* MeshCoarsener_Hexa_New_Param(
-		Name						name,
-		Dictionary*					dictionary )
-{
-	return _MeshCoarsener_Hexa_New( 
-		sizeof(MeshCoarsener_Hexa), 
-		MeshCoarsener_Hexa_Type, 
-		_MeshCoarsener_Hexa_Delete, 
-		_MeshCoarsener_Hexa_Print,
-		NULL,
-		(Stg_Component_DefaultConstructorFunction*)MeshCoarsener_Hexa_DefaultNew,
-		_MeshCoarsener_Hexa_Construct,
-		_MeshCoarsener_Hexa_Build,
-		_MeshCoarsener_Hexa_Initialise,
-		_MeshCoarsener_Hexa_Execute,
-		_MeshCoarsener_Hexa_Destroy,
-		name,
-		True,
-		dictionary );
-}
-
-
-void MeshCoarsener_Hexa_Init(
-		MeshCoarsener_Hexa*				self,
-		Name						name,
-		Dictionary*					dictionary )
-{
-	/* General info */
-	self->type = MeshCoarsener_Hexa_Type;
-	self->_sizeOfSelf = sizeof(MeshCoarsener_Hexa);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _MeshCoarsener_Hexa_Delete;
-	self->_print = _MeshCoarsener_Hexa_Print;
-	self->_copy = NULL;
-	self->_defaultConstructor = (Stg_Component_DefaultConstructorFunction*) MeshCoarsener_Hexa_DefaultNew;
-	self->_construct = _MeshCoarsener_Hexa_Construct;
-	self->_build = _MeshCoarsener_Hexa_Build;
-	self->_initialise = _MeshCoarsener_Hexa_Initialise;
-	self->_execute = _MeshCoarsener_Hexa_Execute;
-	self->_destroy = _MeshCoarsener_Hexa_Destroy;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	
-	/* MeshCoarsener_Hexa info */
-	_MeshCoarsener_Hexa_Init( self );
-}
-
-
-MeshCoarsener_Hexa* _MeshCoarsener_Hexa_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*		_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*		_execute,
-		Stg_Component_DestroyFunction*		_destroy,
-		Name							name,
-		Bool						initFlag,
-		Dictionary*					dictionary )
-{
-	MeshCoarsener_Hexa* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(MeshCoarsener_Hexa) );
-	self = (MeshCoarsener_Hexa*)_Stg_Component_New( _sizeOfSelf, type, _delete, _print, _copy, _defaultConstructor, _construct, _build, 
-			_initialise, _execute, _destroy, name, NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	
-	/* MeshCoarsener_Hexa info */
-	if( initFlag ){
-		_MeshCoarsener_Hexa_Init( self );
-	}
-	
-	return self;
-}
-
-void _MeshCoarsener_Hexa_Init(
-		MeshCoarsener_Hexa*				self )
-{
-	/* General and Virtual info should already be set */
-	self->isConstructed = True;
-	/* MeshCoarsener_Hexa info */
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _MeshCoarsener_Hexa_Delete( void* meshCoarsener ) {
-	MeshCoarsener_Hexa* self = (MeshCoarsener_Hexa*)meshCoarsener;
-	
-	/* Stg_Class_Delete parent */
-	_Stg_Class_Delete( self );
-}
-
-
-void _MeshCoarsener_Hexa_Print( void* meshCoarsener, Stream* stream ) {
-	MeshCoarsener_Hexa* self = (MeshCoarsener_Hexa*)meshCoarsener;
-	
-	/* Set the Journal for printing informations */
-	Stream* meshCoarsenerStream;
-	meshCoarsenerStream = Journal_Register( InfoStream_Type, "MeshCoarsener_HexaStream" );
-
-	/* Print parent */
-	_Stg_Class_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "MeshCoarsener_Hexa (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* MeshCoarsener_Hexa info */
-}
-
-void _MeshCoarsener_Hexa_Construct( void* meshCoarsener, Stg_ComponentFactory *cf, void* data ){
-	
-}
-	
-void _MeshCoarsener_Hexa_Build( void* meshCoarsener, void *data ){
-	
-}
-	
-void _MeshCoarsener_Hexa_Initialise( void* meshCoarsener, void *data ){
-	
-}
-	
-void _MeshCoarsener_Hexa_Execute( void* meshCoarsener, void *data ){
-	
-}
-
-void _MeshCoarsener_Hexa_Destroy( void* meshCoarsener, void *data ){
-
-}
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void MeshCoarsener_Hexa_Coarsen( void* meshCoarsener, 
-				 void* hexaMesh, 
-				 unsigned level, 
-				 IndexMap** nodeFineToCoarse, 
-				 IndexMap** nodeCoarseToFine )
-{
-	MeshCoarsener_Hexa*	self = (MeshCoarsener_Hexa*)meshCoarsener;
-	Mesh*			mesh = (Mesh*)hexaMesh;
-	HexaMD*			decomp = (HexaMD*)mesh->layout->decomp; /* TODO: assumption; need to rectify */
-	Partition_Index		proc_I;
-	Index			idx_I;
-	Element_LocalIJK	eBase;
-	unsigned		levelMax[3];
-	Element_GlobalIJK	oldElement3DCounts;
-	Node_GlobalIJK		nodeGlobal3DCounts;
-	IJK26Topology*		elementTopology;
-	BlockGeometry*		elementGeometry;
-	HexaEL*			elementLayout;
-	IJK6Topology*		nodeTopology;
-	NodeLayout*		nodeLayout;
-	
-	/*
-	** There are a bunch of requirements for this version, here they are...
-	*/
-	
-	/* Because of potentially deforming geometry we must do this before the build phase */
-	assert( !mesh->isBuilt );
-	
-	/* If the mesh is decomposed, we must make sure each local mesh is the same size */
-	for( proc_I = 1; proc_I < decomp->procsInUse; proc_I++ ) {
-		for( idx_I = 0; idx_I < 3; idx_I++ ) {
-			assert( decomp->nodeLocal3DCounts[proc_I][idx_I] == decomp->nodeLocal3DCounts[0][idx_I] );
-		}
-	}
-	
-	/* Ensure the level is below the level maximum (maximum is where the mesh currently is) */
-	for( idx_I = 0; idx_I < 3; idx_I++ ) {
-		_MeshCoarsener_Hexa_CalcElementBaseAndLevel( self, 
-							     decomp->elementLocal3DCounts[0][idx_I], 
-							     &levelMax[idx_I], 
-							     &eBase[idx_I] );
-		assert( level <= levelMax[idx_I] );
-	}
-	
-	/* If we want level 0, just return without altering the mesh */
-	if( level == 0 ) {
-		return;
-	}
-	
-	
-	/*
-	** Perform the resize, note that this is a bad way of doing it, will change later
-	*/
-	
-	/* Calculate the new element sizes */
-	for( idx_I = 0; idx_I < 3; idx_I++ ) {
-		nodeGlobal3DCounts[idx_I] = (Node_LocalIndex)pow( 2.0, (double)(levelMax[idx_I] - level) ) * eBase[idx_I];
-		
-		if( decomp->partitionedAxis[idx_I] ) {
-			nodeGlobal3DCounts[idx_I] *= decomp->partition3DCounts[idx_I];
-		}
-		
-		nodeGlobal3DCounts[idx_I]++;
-	}
-	
-	/* Store old elements sizes for later use */
-	oldElement3DCounts[0] = decomp->elementLocal3DCounts[decomp->rank][0];
-	oldElement3DCounts[1] = decomp->elementLocal3DCounts[decomp->rank][1];
-	oldElement3DCounts[2] = decomp->elementLocal3DCounts[decomp->rank][2];
-	
-	/* Go in and change what's needed (gotta fix this crap) */
-	elementTopology = (IJK26Topology*)mesh->layout->elementLayout->topology;
-	elementTopology->size[0] = nodeGlobal3DCounts[0] - 1;
-	elementTopology->size[1] = nodeGlobal3DCounts[1] - 1;
-	elementTopology->size[2] = nodeGlobal3DCounts[2] - 1;
-	
-	elementGeometry = (BlockGeometry*)mesh->layout->elementLayout->geometry;
-	elementGeometry->size[0] = nodeGlobal3DCounts[0];
-	elementGeometry->size[1] = nodeGlobal3DCounts[1];
-	elementGeometry->size[2] = nodeGlobal3DCounts[2];
-	
-	elementLayout = (HexaEL*)mesh->layout->elementLayout;
-	elementLayout->pointSize[0] = nodeGlobal3DCounts[0];
-	elementLayout->pointSize[1] = nodeGlobal3DCounts[1];
-	elementLayout->pointSize[2] = nodeGlobal3DCounts[2];
-	elementLayout->elementSize[0] = nodeGlobal3DCounts[0] - 1;
-	elementLayout->elementSize[1] = nodeGlobal3DCounts[1] - 1;
-	elementLayout->elementSize[2] = nodeGlobal3DCounts[2] - 1;
-	elementLayout->elementCount = (nodeGlobal3DCounts[0] - 1) * (nodeGlobal3DCounts[1] - 1) * (nodeGlobal3DCounts[2] - 1);
-	
-	nodeTopology = (IJK6Topology*)mesh->layout->nodeLayout->topology;
-	nodeTopology->size[0] = nodeGlobal3DCounts[0];
-	nodeTopology->size[1] = nodeGlobal3DCounts[1];
-	nodeTopology->size[2] = nodeGlobal3DCounts[2];
-	
-	nodeLayout = mesh->layout->nodeLayout;
-	nodeLayout->nodeCount = nodeGlobal3DCounts[0] * nodeGlobal3DCounts[1] * nodeGlobal3DCounts[2];
-
-	_HexaMD_Destroy( decomp, NULL );
-	HexaMD_Init( decomp, "HexaMD",
-		     decomp->dictionary, 
-		     decomp->communicator, 
-		     (ElementLayout*)elementLayout, 
-		     nodeLayout, 
-		     decomp->numPartitionedDims );
-	
-	/* Build maps if necessary, note that the current algorithm is quite inefficient */
-	if( nodeFineToCoarse ) {
-		IndexMap*		map;
-		unsigned		factor[3];
-		Index			lNode_I, lNode_J, lNode_K;
-		Index			mappedNode_I, mappedNode_J, mappedNode_K;
-		
-		factor[0] = oldElement3DCounts[0] / decomp->elementLocal3DCounts[decomp->rank][0];
-		factor[1] = oldElement3DCounts[1] / decomp->elementLocal3DCounts[decomp->rank][1];
-		factor[2] = oldElement3DCounts[2] / decomp->elementLocal3DCounts[decomp->rank][2];
-		
-		map = IndexMap_New();
-		
-		mappedNode_K = 0;
-		for( lNode_K = 0; lNode_K < oldElement3DCounts[2] + 1; lNode_K++ ) {
-			mappedNode_J = 0;
-			for( lNode_J = 0; lNode_J < oldElement3DCounts[1] + 1; lNode_J++ ) {
-				mappedNode_I = 0;
-				for( lNode_I = 0; lNode_I < oldElement3DCounts[0] + 1; lNode_I++ ) {
-					Index	nodeIdx = lNode_K * (oldElement3DCounts[0] + 1) * (oldElement3DCounts[1] + 1) +
-							lNode_J * (oldElement3DCounts[0] + 1) +
-							lNode_I;
-					
-					if( lNode_K % factor[2] == 0 && lNode_J % factor[1] == 0 && lNode_I % factor[0] == 0 ) {
-						Index	mappedNodeIdx = mappedNode_K * (decomp->elementLocal3DCounts[decomp->rank][0] + 1) * (decomp->elementLocal3DCounts[decomp->rank][1] + 1) +
-								mappedNode_J * (decomp->elementLocal3DCounts[decomp->rank][0] + 1) +
-								mappedNode_I;
-						
-						IndexMap_Append( map, nodeIdx, mappedNodeIdx );
-						
-						mappedNode_I++;
-					}
-					else {
-						IndexMap_Append( map, nodeIdx, decomp->nodeGlobalCount );
-					}
-				}
-				
-				if( lNode_J % factor[1] == 0 ) {
-					mappedNode_J++;
-				}
-			}
-			
-			if( lNode_K % factor[2] == 0 ) {
-				mappedNode_K++;
-			}
-		}
-		
-		*nodeFineToCoarse = map;
-	}
-	
-	if( nodeCoarseToFine ) {
-		IndexMap*		map;
-		unsigned		factor[3];
-		Index			lNode_I, lNode_J, lNode_K;
-		Index			mappedNode_I, mappedNode_J, mappedNode_K;
-		
-		factor[0] = oldElement3DCounts[0] / decomp->elementLocal3DCounts[decomp->rank][0];
-		factor[1] = oldElement3DCounts[1] / decomp->elementLocal3DCounts[decomp->rank][1];
-		factor[2] = oldElement3DCounts[2] / decomp->elementLocal3DCounts[decomp->rank][2];
-		
-		map = IndexMap_New();
-		
-		mappedNode_K = 0;
-		for( lNode_K = 0; lNode_K < oldElement3DCounts[2] + 1; lNode_K++ ) {
-			mappedNode_J = 0;
-			for( lNode_J = 0; lNode_J < oldElement3DCounts[1] + 1; lNode_J++ ) {
-				mappedNode_I = 0;
-				for( lNode_I = 0; lNode_I < oldElement3DCounts[0] + 1; lNode_I++ ) {
-					Index	nodeIdx = lNode_K * (oldElement3DCounts[0] + 1) * (oldElement3DCounts[1] + 1) +
-							lNode_J * (oldElement3DCounts[0] + 1) +
-							lNode_I;
-					
-					if( lNode_K % factor[2] == 0 && lNode_J % factor[1] == 0 && lNode_I % factor[0] == 0 ) {
-						Index	mappedNodeIdx = mappedNode_K * (decomp->elementLocal3DCounts[decomp->rank][0] + 1) * (decomp->elementLocal3DCounts[decomp->rank][1] + 1) +
-								mappedNode_J * (decomp->elementLocal3DCounts[decomp->rank][0] + 1) +
-								mappedNode_I;
-						
-						IndexMap_Append( map, mappedNodeIdx, nodeIdx );
-						
-						mappedNode_I++;
-					}
-				}
-				
-				if( lNode_J % factor[1] == 0 ) {
-					mappedNode_J++;
-				}
-			}
-			
-			if( lNode_K % factor[2] == 0 ) {
-				mappedNode_K++;
-			}
-		}
-		
-		*nodeCoarseToFine = map;
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-void _MeshCoarsener_Hexa_CalcElementBaseAndLevel( void* meshCoarsener, Element_Index size, unsigned* level, Element_Index* base ) {
-	/*MeshCoarsener_Hexa*	self = (MeshCoarsener_Hexa*)meshCoarsener;*/
-	
-	/* Calculate the level and the base */
-	*level = 0;
-	*base = size;
-	do {
-		if( ((*base) % 2) > 0 ) {
-			break;
-		}
-		else {
-			(*base) /= 2;
-		}
-		
-		(*level)++;
-	} while( 1 );
-}
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,147 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id: MeshCoarsener_Hexa.h 2453 2004-12-21 04:49:34Z LukeHodkinson $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Mesh_MeshCoarsener_Hexa_h__
-#define __Discretisaton_Mesh_MeshCoarsener_Hexa_h__
-
-
-	/* Virtual function types */
-	
-	/* Textual name of this class */
-	extern const Type MeshCoarsener_Hexa_Type;
-
-	/* MeshCoarsener_Hexa information */
-	#define __MeshCoarsener_Hexa \
-		/* General info */ \
-		__Stg_Component \
-		Dictionary*				dictionary; \
-		\
-		/* Virtual info */ \
-		\
-		/* MeshCoarsener_Hexa info ... */ \
-		Mesh*					mesh;
-	struct _MeshCoarsener_Hexa { __MeshCoarsener_Hexa };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a MeshCoarsener_Hexa */
-	
-	MeshCoarsener_Hexa* MeshCoarsener_Hexa_DefaultNew( Name name );
-	
-	#define MeshCoarsener_Hexa_New( name ) \
-		MeshCoarsener_Hexa_New_Param( name, NULL)
-	
-	/* Create a MeshCoarsener_Hexa with all additional parameters */
-	MeshCoarsener_Hexa* MeshCoarsener_Hexa_New_Param(
-		Name						name,
-		Dictionary*					dictionary );
-	
-	/* Initialise a MeshCoarsener_Hexa */
-	void MeshCoarsener_Hexa_Init(
-		MeshCoarsener_Hexa*				self,
-		Name						name,
-		Dictionary*					dictionary );
-	
-	/* Creation implementation */
-	MeshCoarsener_Hexa* _MeshCoarsener_Hexa_New(
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*		_build,
-		Stg_Component_InitialiseFunction*		_initialise,
-		Stg_Component_ExecuteFunction*		_execute,
-		Stg_Component_DestroyFunction*		_destroy,
-		Name							name,
-		Bool						initFlag,
-		Dictionary*					dictionary );
-	
-	/* Initialisation implementation functions */
-	void _MeshCoarsener_Hexa_Init(
-		MeshCoarsener_Hexa*				self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete meshCoarsener implementation */
-	void _MeshCoarsener_Hexa_Delete( void* meshCoarsener );
-	
-	/* Print meshCoarsener implementation */
-	void _MeshCoarsener_Hexa_Print( void* meshCoarsener, Stream* stream );
-	
-	void _MeshCoarsener_Hexa_Construct( void* meshCoarsener, Stg_ComponentFactory *cf, void* data );
-	
-	void _MeshCoarsener_Hexa_Build( void* meshCoarsener, void *data );
-	
-	void _MeshCoarsener_Hexa_Initialise( void* meshCoarsener, void *data );
-	
-	void _MeshCoarsener_Hexa_Execute( void* meshCoarsener, void *data );
-
-	void _MeshCoarsener_Hexa_Destroy( void* meshCoarsener, void *data );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	void MeshCoarsener_Hexa_Coarsen( void* meshCoarsener, 
-					 void* hexaMesh, 
-					 unsigned level, 
-					 IndexMap** nodeFineToCoarse,
-					 IndexMap** nodeCoarseToFine );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	void _MeshCoarsener_Hexa_CalcElementBaseAndLevel( void*			meshCoarsener, 
-							  Element_Index		size, 
-							  unsigned*		level, 
-							  Element_Index*	base );
-	
-	
-#endif /* __Discretisaton_Mesh_MeshCoarsener_Hexa_h__ */

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/MeshCoarsener_Hexa.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">MeshCoarsener_Hexa</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Utils/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -28,9 +28,13 @@
 **
 **~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
 #include <mpi.h>
-#include "Base/Base.h"
 
+#include "Base/Base.h"
 #include "Discretisation/Geometry/Geometry.h"
 #include "Discretisation/Shape/Shape.h"
 #include "Discretisation/Mesh/Mesh.h"
@@ -38,12 +42,7 @@
 #include "types.h"
 #include "RegularMeshUtils.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
 
-
 Index RegularMeshUtils_ascendingIJK_ToHughesNodeNumberMap[8] = { 0, 1, 3, 2, 4, 5, 7, 6 };
 
 
@@ -51,839 +50,819 @@
 ** Mapping functions
 */
 
-Node_LocalIndex RegularMeshUtils_Node_Global3DToLocal1D( HexaMD* hexaMD, Index i, Index j, Index k ) {		
-	Dimension_Index        dim_I;
-	IJK                    ijk = { i, j, k };
+void RegularMeshUtils_Node_1DTo3D( void* _mesh, unsigned global, unsigned* inds ) {
+	Mesh*	mesh = (Mesh*)_mesh;
+	Grid**	grid;
 
-	for ( dim_I = 0; dim_I < 3; dim_I++ ) {
-		if ( ijk[dim_I] < (hexaMD)->_nodeOffsets[(hexaMD)->rank][dim_I] ||
-			ijk[dim_I]  >= ((hexaMD)->_nodeOffsets[(hexaMD)->rank][dim_I]
-				+ (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][dim_I] ) )
-		{
-			return MD_N_Invalid( hexaMD );
-		}
-	}
-	
-	return RegularMeshUtils_Node_Local3DTo1D( hexaMD,
-		i - (hexaMD)->_nodeOffsets[(hexaMD)->rank][I_AXIS],
-		j - (hexaMD)->_nodeOffsets[(hexaMD)->rank][J_AXIS],
-		k - (hexaMD)->_nodeOffsets[(hexaMD)->rank][K_AXIS] );
-}			
+	assert( mesh );
+	assert( global < Mesh_GetGlobalSize( mesh, MT_VERTEX ) );
+	assert( inds );
 
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+	Grid_Lift( *grid, global, inds );
+}
+
+unsigned RegularMeshUtils_Node_3DTo1D( void* _mesh, unsigned* inds ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid**		grid;
+
+	assert( mesh );
+	assert( inds );
+
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	return Grid_Project( *grid, inds );
+}
+
+void RegularMeshUtils_Element_1DTo3D( void* _mesh, unsigned global, unsigned* inds ) {
+	Mesh*	mesh = (Mesh*)_mesh;
+	Grid**	grid;
+
+	assert( mesh );
+	assert( global < Mesh_GetGlobalSize( mesh, MT_VERTEX ) );
+	assert( inds );
+
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "elementGrid" ) );
+	Grid_Lift( *grid, global, inds );
+}
+
+unsigned RegularMeshUtils_Element_3DTo1D( void* _mesh, unsigned* inds ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid**		grid;
+
+	assert( mesh );
+	assert( inds );
+
+	grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, "elementGrid" ) );
+
+	return Grid_Project( *grid, inds );
+}
+
+
 /*----------------------------------------------------------------------------------------------------------------------------------
 ** Set functions
 */
 
-/* TODO: There are more efficient ways to do the below, given me know the number of nodes in each direction */
-
 IndexSet* RegularMeshUtils_CreateGlobalTopSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ),
-			&ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == grid->sizes[1] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalBottomSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ),
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[1] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalLeftSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[0] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalRightSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 3 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[2] == grid->sizes[2] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 3 );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[2] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
+IndexSet* RegularMeshUtils_CreateGlobalInnerTopSet( void* _mesh ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
 
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
 
-IndexSet* RegularMeshUtils_CreateGlobalInnerTopSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ),
-			&ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 ) 
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] -1 ) || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[0] != 0 || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] -1 ) || ijk[2] != 0 )
-			&& ( ijk[0] != 0 || ijk[2] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == grid->sizes[1] - 1 && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[0] != 0 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[2] != 0 ) && 
+		    (ijk[0] != 0 || ijk[2] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalInnerBottomSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ),
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[1] == 0 
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[0] != 0 || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[2] != 0 )
-			&& ( ijk[0] != 0 || ijk[2] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == 0 && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[0] != 0 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[2] != 0 ) && 
+		    (ijk[0] != 0 || ijk[2] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalInnerLeftSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[0] == 0 
-			&& ( ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[1] != 0 || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) || ijk[2] != 0 )
-			&& ( ijk[1] != 0 || ijk[2] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    (ijk[1] != grid->sizes[1] - 1 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[1] != 0 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[1] != grid->sizes[1] - 1 || ijk[2] != 0 ) && 
+		    (ijk[1] != 0 || ijk[2] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalInnerRightSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 ) 
-			&& ( ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[1] != 0 || ijk[2] != ( decomp->nodeGlobal3DCounts[2] - 1 ) )
-			&& ( ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) || ijk[2] != 0 )
-			&& ( ijk[1] != 0 || ijk[2] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 && 
+		    (ijk[1] != grid->sizes[1] - 1 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[1] != 0 || ijk[2] != grid->sizes[2] - 1 ) && 
+		    (ijk[1] != grid->sizes[1] - 1 || ijk[2] != 0 ) && 
+		    (ijk[1] != 0 || ijk[2] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalInnerFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) 
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) )
-			&& ( ijk[0] != 0 || ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) )
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[1] != 0 )
-			&& ( ijk[0] != 0 || ijk[1] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[2] - 1 && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[1] != grid->sizes[1] - 1 ) && 
+		    (ijk[0] != 0 || ijk[1] != grid->sizes[1] - 1 ) && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[1] != 0 ) && 
+		    (ijk[0] != 0 || ijk[1] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateGlobalInnerBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == 0 
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) )
-			&& ( ijk[0] != 0 || ijk[1] != ( decomp->nodeGlobal3DCounts[1] - 1 ) )
-			&& ( ijk[0] != ( decomp->nodeGlobal3DCounts[0] - 1 ) || ijk[1] != 0 )
-			&& ( ijk[0] != 0 || ijk[1] != 0 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[1] != grid->sizes[1] - 1 ) && 
+		    (ijk[0] != 0 || ijk[1] != grid->sizes[1] - 1 ) && 
+		    (ijk[0] != grid->sizes[0] - 1 || ijk[1] != 0 ) && 
+		    (ijk[0] != 0 || ijk[1] != 0 ) )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
 
-
 IndexSet* RegularMeshUtils_CreateGlobalBottomLeftFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == 0 
-			&& ijk[1] == 0
-			&& ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    ijk[1] == 0 && 
+		    ijk[2] == grid->sizes[2] - 1 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
-}	
+
+	return set;
+}
+
 IndexSet* RegularMeshUtils_CreateGlobalBottomRightFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 )
-			&& ijk[1] == 0
-			&& ijk[2] == (decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 && 
+		    ijk[1] == 0 && 
+		    ijk[2] == grid->sizes[2] - 1 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalTopLeftFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == 0 
-			&& ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 )
-			&& ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    ijk[1] == grid->sizes[1] - 1 && 
+		    ijk[2] == grid->sizes[2] - 1 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalTopRightFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 )
-			&& ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 )
-			&& ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 && 
+		    ijk[1] == grid->sizes[1] - 1 && 
+		    ijk[2] == grid->sizes[2] - 1 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalBottomLeftBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == 0 
-			&& ijk[1] == 0
-			&& ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    ijk[1] == 0 && 
+		    ijk[2] == 0 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalBottomRightBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 )
-			&& ijk[1] == 0
-			&& ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 && 
+		    ijk[1] == 0 && 
+		    ijk[2] == 0 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalTopLeftBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == 0
-			&& ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 )
-			&& ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 && 
+		    ijk[1] == grid->sizes[1] - 1 && 
+		    ijk[2] == 0 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
+
+	return set;
 }
+
 IndexSet* RegularMeshUtils_CreateGlobalTopRightBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_DomainIndex	node_I;
-	Node_DomainIndex	nodeDomainCount;
-	IndexSet*		is;
-	
-	nodeDomainCount = decomp->nodeDomainCount;
-	is = IndexSet_New( nodeDomainCount );
-	for( node_I = 0; node_I < nodeDomainCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_1DTo3D( decomp, Mesh_NodeMapDomainToGlobal( mesh, node_I ), 
-			&ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 )
-			&& ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 )
-			&& ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
-}
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
 
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
 
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
 
-IndexSet* RegularMeshUtils_CreateLocalTopSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[1] == ( decomp->nodeLocal3DCounts[decomp->rank][1] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
-}
+	nNodes = Mesh_GetDomainSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
 
-IndexSet* RegularMeshUtils_CreateLocalBottomSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[1] == 0 ) {
-			IndexSet_Add( is, node_I );
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 && 
+		    ijk[1] == grid->sizes[1] - 1 && 
+		    ijk[2] == 0 )
+		{
+			IndexSet_Add( set, n_i );
 		}
 	}
-	
-	return is;
-}
 
-IndexSet* RegularMeshUtils_CreateLocalLeftSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
+	return set;
 }
 
-IndexSet* RegularMeshUtils_CreateLocalRightSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD*)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[0] == ( decomp->nodeLocal3DCounts[decomp->rank][0] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
-}
+IndexSet* RegularMeshUtils_CreateLocalInGlobalTopSet( void* _mesh ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
 
-IndexSet* RegularMeshUtils_CreateLocalFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == ( decomp->nodeLocal3DCounts[decomp->rank][2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
-}
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
 
-IndexSet* RegularMeshUtils_CreateLocalBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		
-		RegularMeshUtils_Node_Local1DTo3D( decomp, node_I, &ijk[0], &ijk[1], &ijk[2] );      
-		if( ijk[2] == 0 ) {
-			IndexSet_Add( is, node_I );
-		}
-	}
-	
-	return is;
-}
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
 
-/* These fellas do the same as the 'Local' set creation, but isntead of
-   using the local walls, it maps the local index to global walls.  This
-   is useful for the exchanger. */
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
 
-IndexSet* RegularMeshUtils_CreateLocalInGlobalTopSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[1] == ( decomp->nodeGlobal3DCounts[1] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == grid->sizes[1] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateLocalInGlobalBottomSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[1] == ( 0 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 2 );
+
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[1] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
-IndexSet* RegularMeshUtils_CreateLocalInGlobalRightSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[0] == ( decomp->nodeGlobal3DCounts[0] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+IndexSet* RegularMeshUtils_CreateLocalInGlobalLeftSet( void* _mesh ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
-IndexSet* RegularMeshUtils_CreateLocalInGlobalLeftSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[0] == ( 0 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+IndexSet* RegularMeshUtils_CreateLocalInGlobalRightSet( void* _mesh ) {
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[0] == grid->sizes[0] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateLocalInGlobalFrontSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[2] == ( decomp->nodeGlobal3DCounts[2] - 1 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	Grid*		grid;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 3 );
+
+	grid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+					      ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
+
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[2] == grid->sizes[2] - 1 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
 IndexSet* RegularMeshUtils_CreateLocalInGlobalBackSet( void* _mesh ) {
-	Mesh*			mesh = (Mesh*)_mesh;
-	MeshLayout*		meshLayout = mesh->layout;
-	HexaMD*			decomp = (HexaMD *)meshLayout->decomp;
-	Node_LocalIndex		node_I;
-	Node_LocalIndex		nodeLocalCount;
-	IndexSet*		is;
-	
-	nodeLocalCount = decomp->nodeLocalCount;
-	is = IndexSet_New( nodeLocalCount );
-	for( node_I = 0; node_I < nodeLocalCount; node_I++ ) {
-		IJK			ijk;
-		Node_GlobalIndex	node_gI;
-		
-		node_gI = decomp->nodeMapLocalToGlobal( decomp, node_I );
-		RegularMeshUtils_Node_1DTo3D( decomp, node_gI, &ijk[0], &ijk[1], &ijk[2] );
-		if( ijk[2] == ( 0 ) ) {
-			IndexSet_Add( is, node_I );
-		}
+	Mesh*		mesh = (Mesh*)_mesh;
+	unsigned	nNodes;
+	IndexSet*	set;
+	IJK		ijk;
+	unsigned	n_i;
+
+	assert( mesh );
+	assert( Mesh_GetDimSize( mesh ) >= 3 );
+
+	nNodes = Mesh_GetLocalSize( mesh, MT_VERTEX );
+	set = IndexSet_New( nNodes );
+
+	for( n_i = 0; n_i < nNodes; n_i++ ) {
+		RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal( mesh, MT_VERTEX, n_i ), ijk );
+		if( ijk[2] == 0 )
+			IndexSet_Add( set, n_i );
 	}
-	
-	return is;
+
+	return set;
 }
 
-Node_DomainIndex RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex( void* _mesh, Element_DomainIndex refElement_dI, Node_DomainIndex refNode_dI ) {
+Node_DomainIndex RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex( void* _mesh, 
+									 Element_DomainIndex refElement_dI, 
+									 Node_DomainIndex refNode_dI )
+{
 	Mesh*              mesh = (Mesh*)_mesh;
-	const Node_Index   oppositeNodesMap2D[] = { 2, 3, 0, 1 };
-	Node_Index         oppositeNodesMap3D[] = { 6, 7, 4, 5, 2, 3, 0, 1 };
+	const Node_Index   oppositeNodesMap2D[] = { 3, 2, 1, 0 };
+	Node_Index         oppositeNodesMap3D[] = { 7, 6, 5, 4, 3, 2, 1, 0 };
 	Node_DomainIndex*  currElementNodes = NULL;
 	Node_Index         currElementNodeCount = 0;
 	Node_Index         refNode_eI = 0;
 	Node_DomainIndex   oppositeNode_dI = 0;
 	Node_Index         oppositeNode_eI = 0;
-	Stream*            errorStr = Journal_Register( Error_Type, "RegularMeshUtils" );
+	Stream*            errorStrm = Journal_Register( Error_Type, "RegularMeshUtils" );
 
+	Journal_Firewall( Mesh_GetElementType( mesh, refElement_dI )->type == Mesh_HexType_Type, errorStrm, 
+			  "Error (%s:%s:%d):\n\tIncorrect element type (%s); require %s.\n", 
+			  __func__, __FILE__, __LINE__, Mesh_GetElementType( mesh, refElement_dI )->type, 
+			  Mesh_HexType_Type );
+
+#if 0
 	Journal_Firewall( CornerNL_Type == mesh->layout->nodeLayout->type , errorStr,
 		"Error- in %s: Given mesh has node layout of type \"%s\", different to "
 		"required type \"%s\".\n", __func__, mesh->layout->nodeLayout->type, CornerNL_Type );
+#endif
 
-	currElementNodes = mesh->elementNodeTbl[refElement_dI];
-	currElementNodeCount = mesh->elementNodeCountTbl[refElement_dI];
+	Mesh_GetIncidence( mesh, Mesh_GetDimSize( mesh ), refElement_dI, MT_VERTEX, 
+			   &currElementNodeCount, &currElementNodes );
 
 	/* Find index of reference node within reference element */
 	for( refNode_eI = 0; refNode_eI < currElementNodeCount; refNode_eI++ ) {
 		if ( refNode_dI == currElementNodes[refNode_eI] )
 			break;
 	}
-	Journal_Firewall( refNode_eI < currElementNodeCount, errorStr,
+	Journal_Firewall( refNode_eI < currElementNodeCount, errorStrm,
 		"Error - in %s(): Reference node %d (domain) not found within reference element %d (domain).\n",
 		__func__, refNode_dI, refElement_dI );
 
 	/* Use mapping table to get diagonally opposite node, then convert back to domain index */
 	
-	if ( ((HexaEL*)mesh->layout->elementLayout)->dim == 2 ) {	
+	if ( Mesh_GetDimSize( mesh ) == 2 ) {
 		oppositeNode_eI = oppositeNodesMap2D[refNode_eI];
 	}
 	else {
@@ -893,4 +872,3 @@
 	oppositeNode_dI = currElementNodes[oppositeNode_eI];
 	return oppositeNode_dI;
 }
-

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/RegularMeshUtils.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -43,47 +43,19 @@
 	extern Index RegularMeshUtils_ascendingIJK_ToHughesNodeNumberMap[8];
 
 	/*--------------------------------------------------------------------------------------------------------------------------
-	** Set functions
+	** Mapping functions
 	*/
-	
-	#define RegularMeshUtils_Node_1DTo3D( hexaMD, index, iPtr, jPtr, kPtr ) \
-		*(iPtr) = (index) % (hexaMD)->nodeGlobal3DCounts[0]; \
-		*(jPtr) = ((index) / (hexaMD)->nodeGlobal3DCounts[0]) % (hexaMD)->nodeGlobal3DCounts[1]; \
-		*(kPtr) = (index) / ((hexaMD)->nodeGlobal3DCounts[0] * (hexaMD)->nodeGlobal3DCounts[1])
-	
-	#define RegularMeshUtils_Node_Local1DTo3D( hexaMD, index, iPtr, jPtr, kPtr ) \
-		*(iPtr) = (index) % (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][0]; \
-		*(jPtr) = ((index) / (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][0]) % (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][1]; \
-		*(kPtr) = (index) / ((hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][0] * (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][1])
-	
-	#define RegularMeshUtils_Node_Global3DToGlobal1D( hexaMD, i, j, k ) \
-		((k) * (hexaMD)->nodeGlobal3DCounts[0] * (hexaMD)->nodeGlobal3DCounts[1] + \
-		(j) * (hexaMD)->nodeGlobal3DCounts[0] + (i))
 
-	/** This one needs to be a macro so we can do some decent error checking */
-	Node_LocalIndex RegularMeshUtils_Node_Global3DToLocal1D( HexaMD* hexaMD, Index i, Index j, Index k );
+	void RegularMeshUtils_Node_1DTo3D( void* mesh, unsigned global, unsigned* inds );
+	unsigned RegularMeshUtils_Node_3DTo1D( void* mesh, unsigned* inds );
 
-	#define RegularMeshUtils_Node_Local3DTo1D( hexaMD, i, j, k ) \
-		((k) * (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][0] * (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][1] + \
-		(j) * (hexaMD)->nodeLocal3DCounts[(hexaMD)->rank][0] + (i))
+	void RegularMeshUtils_Element_1DTo3D( void* mesh, unsigned global, unsigned* inds );
+	unsigned RegularMeshUtils_Element_3DTo1D( void* mesh, unsigned* inds );
 
-	#define RegularMeshUtils_Element_1DTo3D( hexaMD, index, iPtr, jPtr, kPtr ) \
-		*(iPtr) = (hexaMD)->elementGlobal3DCounts[0] ? (index) % (hexaMD)->elementGlobal3DCounts[0] : 0; \
-		*(jPtr) = (hexaMD)->elementGlobal3DCounts[1] ? ((index) / ((hexaMD)->elementGlobal3DCounts[0] ? (hexaMD)->elementGlobal3DCounts[0] : 1)) % (hexaMD)->elementGlobal3DCounts[1] : 0; \
-		*(kPtr) = (hexaMD)->elementGlobal3DCounts[2] ? (index) / (((hexaMD)->elementGlobal3DCounts[0] ? (hexaMD)->elementGlobal3DCounts[0] : 1) * ((hexaMD)->elementGlobal3DCounts[1] ? (hexaMD)->elementGlobal3DCounts[1] : 1)) : 0
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Set functions
+	*/
 	
-	#define RegularMeshUtils_Element_3DTo1D( hexaMD, i, j, k ) \
-		((k) * ((hexaMD)->elementGlobal3DCounts[0] ? (hexaMD)->elementGlobal3DCounts[0] : 1) * ((hexaMD)->elementGlobal3DCounts[1] ? (hexaMD)->elementGlobal3DCounts[1] : 1) + \
-		(j) * ((hexaMD)->elementGlobal3DCounts[0] ? (hexaMD)->elementGlobal3DCounts[0] : 1) + (i))
-	
-	#define RegularMeshUtils_Element_Local3DTo1D( hexaMD, i, j, k ) \
-		((k) * \
-		((hexaMD)->elementLocal3DCounts[(hexaMD)->rank][0] ? (hexaMD)->elementLocal3DCounts[(hexaMD)->rank][0] : 0) * \
-		((hexaMD)->elementLocal3DCounts[(hexaMD)->rank][1] ? (hexaMD)->elementLocal3DCounts[(hexaMD)->rank][1] : 0) + \
-		(j) * \
-		((hexaMD)->elementLocal3DCounts[(hexaMD)->rank][0] ? (hexaMD)->elementLocal3DCounts[(hexaMD)->rank][0] : 0) + \
-		(i))
-	
 	/** Create a new set, based on node indices, of nodes on the top of the global regular mesh */
 	IndexSet* RegularMeshUtils_CreateGlobalTopSet( void* _mesh );
 	
@@ -146,27 +118,8 @@
 	/** Create a new set, based on node indices, of the node on the top back righthand corner */
 	IndexSet* RegularMeshUtils_CreateGlobalTopRightBackSet( void* _mesh );
 
-	
+
 	/** Create a new set, based on node indices, of nodes on the top of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalTopSet( void* _mesh );
-	
-	/** Create a new set, based on node indices, of nodes on the bottom of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalBottomSet( void* _mesh );
-	
-	/** Create a new set, based on node indices, of nodes on the left of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalLeftSet( void* _mesh );
-	
-	/** Create a new set, based on node indices, of nodes on the right of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalRightSet( void* _mesh );
-	
-	/** Create a new set, based on node indices, of nodes on the front of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalFrontSet( void* _mesh );
-	
-	/** Create a new set, based on node indices, of nodes on the back of the local regular mesh */
-	IndexSet* RegularMeshUtils_CreateLocalBackSet( void* _mesh );
-	
-	
-	/** Create a new set, based on node indices, of nodes on the top of the local regular mesh */
 	IndexSet* RegularMeshUtils_CreateLocalInGlobalTopSet( void* _mesh );
 	
 	/** Create a new set, based on node indices, of nodes on the bottom of the local regular mesh */
@@ -183,9 +136,9 @@
 	
 	/** Create a new set, based on node indices, of nodes on the back of the local regular mesh */
 	IndexSet* RegularMeshUtils_CreateLocalInGlobalBackSet( void* _mesh );
-	
-	/** Calculates the node domain ID of the node diagonally opposite a reference node in a given element */ 
-	Node_DomainIndex RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex( 
-		void* _mesh, Element_DomainIndex element_dI, Node_DomainIndex refNode_dI );
 
+	Node_DomainIndex RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex( void* _mesh, 
+										 Element_DomainIndex refElement_dI, 
+										 Node_DomainIndex refNode_dI );
+
 #endif /* __Discretisation_Utils_RegularMeshUtils_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -33,7 +33,6 @@
 #include <string.h>
 #include <math.h>
 #include <assert.h>
-
 #include <mpi.h>
 
 #include "Base/Base.h"
@@ -42,7 +41,6 @@
 #include "Discretisation/Mesh/Mesh.h"
 
 #include "types.h"
-#include "Sync.h"
 #include "SemiRegDeform.h"
 
 
@@ -70,7 +68,6 @@
 		name );
 }
 
-
 SemiRegDeform* SemiRegDeform_New( Name name ) {
 	return _SemiRegDeform_New( 
 		sizeof(SemiRegDeform), 
@@ -87,7 +84,6 @@
 		name );
 }
 
-
 SemiRegDeform* _SemiRegDeform_New( SizeT					_sizeOfSelf, 
 				   Type						type,
 				   Stg_Class_DeleteFunction*			_delete,
@@ -129,7 +125,6 @@
 	return self;
 }
 
-
 void SemiRegDeform_Init( SemiRegDeform* self, Name name ) {
 	/* General info */
 	self->type = SemiRegDeform_Type;
@@ -154,19 +149,11 @@
 	_SemiRegDeform_Init( self );
 }
 
-
 void _SemiRegDeform_Init( SemiRegDeform* self ) {
-	/* General and Virtual info should already be set */
-	
-	/* SemiRegDeform info */
-	self->grm.mesh = NULL;
 	self->nStrips = 0;
 	self->beginInds = NULL;
 	self->endInds = NULL;
 	self->conDims = NULL;
-	self->sync = NULL;
-	self->nRemotes = 0;
-	self->remotes = NULL;
 }
 
 
@@ -178,13 +165,12 @@
 	SemiRegDeform*	self = (SemiRegDeform*)srd;
 	
 	/* Delete the class itself */
-	_SemiRegDeform_FreeInternal( self );
+	SemiRegDeform_Destruct( self );
 	
 	/* Delete parent */
 	_Stg_Class_Delete( self );
 }
 
-
 void _SemiRegDeform_Print( void* srd, Stream* stream ) {
 	SemiRegDeform*	self = (SemiRegDeform*)srd;
 	Stream*	myStream;
@@ -203,15 +189,12 @@
 	/* SemiRegDeform info */
 }
 
-
 void _SemiRegDeform_Construct( void* srd, Stg_ComponentFactory* cf, void* data ) {
 }
 
-
 void _SemiRegDeform_Build( void* srd, void* data ) {
 }
 
-
 void _SemiRegDeform_Initialise( void* srd, void* data ) {
 	SemiRegDeform*	self = (SemiRegDeform*)srd;
 
@@ -230,14 +213,12 @@
 	** Initialise the synchronisation.
 	*/
 
-	_SemiRegDeform_SyncInit( self );
+	SemiRegDeform_InitSync( self );
 }
 
-	
 void _SemiRegDeform_Execute( void* srd, void* data ) {
 }
 
-
 void _SemiRegDeform_Destroy( void* srd, void* data ) {
 }
 
@@ -251,31 +232,36 @@
 
 	assert( !self->isInitialised );
 
-	_SemiRegDeform_FreeInternal( self );
-	RegMesh_Generalise( mesh, &self->grm );
+	SemiRegDeform_Destruct( self );
+	self->mesh = mesh;
 }
 
-
 void SemiRegDeform_AddStrip( void* srd, unsigned begin, unsigned end ) {
 	SemiRegDeform*	self = (SemiRegDeform*)srd;
+	Grid*		vertGrid;
 	unsigned short	conDim;
 	IJK		inds[2];
 	Bool		store;
 	unsigned	s_i;
 
-	assert( self->grm.mesh );
+	assert( self->mesh );
 	assert( !self->isInitialised );
 
+	/* Get the vertex grid. */
+	vertGrid = *(Grid**)ExtensionManager_Get( self->mesh->info, self->mesh, 
+						  ExtensionManager_GetHandle( self->mesh->info, "vertexGrid" ) );
 
 	/*
 	** Ensure the specified strip has not already been added.
 	*/
 
+#ifndef NDEBUG
 	for( s_i = 0; s_i < self->nStrips; s_i++ ) {
 		if( self->beginInds[s_i] == begin && self->endInds[s_i] == end ) {
 			assert( 0 );
 		}
 	}
+#endif
 
 
 	/*
@@ -286,12 +272,12 @@
 		Bool		found;
 		unsigned	d_i;
 
-		GRM_Lift( &self->grm, begin, inds[0] );
-		GRM_Lift( &self->grm, end, inds[1] );
+		Grid_Lift( vertGrid, begin, inds[0] );
+		Grid_Lift( vertGrid, end, inds[1] );
 
 		/* Find the one dimension that is not in-line. */
 		found = False;
-		for( d_i = 0; d_i < self->grm.nDims; d_i++ ) {
+		for( d_i = 0; d_i < Mesh_GetDimSize( self->mesh ); d_i++ ) {
 			if( inds[0][d_i] != inds[1][d_i] ) {
 				/* Check if we have found multiple connected dimensions. */
 				assert( found == False );
@@ -315,10 +301,12 @@
 		store = False;
 		memcpy( cur, inds[0], sizeof(IJK) );
 		for( n_i = 0; n_i < len; n_i++ ) {
-			unsigned	gInd;
+			unsigned	gInd, dInd;
 
-			GRM_Project( &self->grm, cur, &gInd );
-			if( Mesh_NodeMapGlobalToLocal( self->grm.mesh, gInd ) < self->grm.mesh->nodeLocalCount ) {
+			gInd = Grid_Project( vertGrid, cur );
+			if( Mesh_GlobalToDomain( self->mesh, MT_VERTEX, gInd, &dInd ) && 
+			    dInd < Mesh_GetLocalSize( self->mesh, MT_VERTEX ) )
+			{
 				store = True;
 				break;
 			}
@@ -326,11 +314,9 @@
 		}
 	}
 
-	if( !store ) {
+	if( !store )
 		return;
-	}
 
-
 	/*
 	** Store.
 	*/
@@ -344,118 +330,58 @@
 	self->nStrips++;
 }
 
+#define GET_VAL( ind )							\
+	(((ind) < Mesh_GetLocalSize( self->mesh, MT_VERTEX )) ? self->mesh->verts[ind] : \
+	 self->remVerts[ind - Mesh_GetLocalSize( self->mesh, MT_VERTEX )])
 
-void _SemiRegDeform_SyncInit( void* srd ) {
-	SemiRegDeform*	self = (SemiRegDeform*)srd;
-	unsigned	nGlobals;
-	unsigned	nLocals;
-	unsigned*	locals;
-	unsigned	nRequired;
-	unsigned*	required;
-	unsigned	loc_i, strip_i;
-
-	assert( self );
-
-
-	/*
-	** Setup the synchronisation component.
-	*/
-
-	self->sync = Sync_New( "SemiRegDeform" );
-
-	/* How many globals do we have? */
-	nGlobals = self->grm.mesh->nodeGlobalCount;
-
-	/* Build the set of local nodes. */
-	nLocals = self->grm.mesh->nodeLocalCount;
-	locals = Memory_Alloc_Array( unsigned, nLocals, "SemiRegDeform" );
-	for( loc_i = 0; loc_i < nLocals; loc_i++ ) {
-		locals[loc_i] = Mesh_NodeMapLocalToGlobal( self->grm.mesh, loc_i );
-	}
-
-	/* Build required indices. */
-	nRequired = 0;
-	required = Memory_Alloc_Array( unsigned, self->nStrips * 2, "SemiRegDeform" );
-	for( strip_i = 0; strip_i < self->nStrips; strip_i++ ) {
-		if( Mesh_NodeMapGlobalToLocal( self->grm.mesh, self->beginInds[strip_i] ) >= 
-		    self->grm.mesh->nodeLocalCount )
-		{
-			required[nRequired++] = self->beginInds[strip_i];
-		}
-
-		if( Mesh_NodeMapGlobalToLocal( self->grm.mesh, self->endInds[strip_i] ) >= 
-		    self->grm.mesh->nodeLocalCount )
-		{
-			required[nRequired++] = self->endInds[strip_i];
-		}
-	}
-	required = Memory_Realloc_Array( required, unsigned, nRequired );
-
-	/* Negotiate sources. */
-	Sync_Negotiate( self->sync, 
-			nGlobals, 
-			locals, nLocals, 
-			NULL, 0, 
-			required, nRequired, 
-			self->grm.mesh->layout->decomp->communicator );
-
-	/* Free arrays. */
-	FreeArray( locals );
-	FreeArray( required );
-
-	/* Allocate for sources. */
-	self->nRemotes = self->sync->netSource;
-	self->remotes = Memory_Alloc_Array( Coord, self->nRemotes, "SemiRegDeform" );
-
-	/* Initialise transfer. */
-	Sync_SetSplitArrays( self->sync, 
-			     sizeof(Coord), 
-			     sizeof(Coord), self->grm.mesh->nodeCoord, 
-			     sizeof(Coord), self->remotes );
-}
-
-
-#define GET_VAL( ind )						\
-	(((ind) < self->grm.mesh->nodeLocalCount) ? self->grm.mesh->nodeCoord[ind] : \
-	 self->remotes[ind - self->grm.mesh->nodeLocalCount])
-
-
 void SemiRegDeform_Deform( void* srd ) {
 	SemiRegDeform*	self = (SemiRegDeform*)srd;
+	Grid*		vertGrid;
 
 	assert( self );
 
+	/* Get the vertex grid. */
+	vertGrid = *(Grid**)ExtensionManager_Get( self->mesh->info, self->mesh, 
+						  ExtensionManager_GetHandle( self->mesh->info, "vertexGrid" ) );
 
 	/*
 	** Actually deform the specified strips.
 	*/
 
 	/* Import remote values. */
-	Sync_SendRecv( self->sync );
+	Decomp_Sync_SyncArray( self->sync, self->syncArray );
 
 	/* Interpolate each strip. */
 	{
+		unsigned	nDims;
 		unsigned*	begin;
 		unsigned*	end;
 		unsigned	strip_i;
 
+		/* Get dimensionality. */
+		nDims = Mesh_GetDimSize( self->mesh );
+
 		/* Allocate for the dimensions. */
-		begin = Memory_Alloc_Array( unsigned, self->grm.nDims, "SemiRegDeform" );
-		end = Memory_Alloc_Array( unsigned, self->grm.nDims, "SemiRegDeform" );
+		begin = Memory_Alloc_Array( unsigned, nDims, "SemiRegDeform" );
+		end = Memory_Alloc_Array( unsigned, nDims, "SemiRegDeform" );
 
 		for( strip_i = 0; strip_i < self->nStrips; strip_i++ ) {
 			unsigned	len;
 			unsigned	conDim;
 			double		first, step;
+			unsigned	dInd;
 			unsigned	node_i;
 
 			/* Extract the basics. */
-			GRM_Lift( &self->grm, self->beginInds[strip_i], begin );
-			GRM_Lift( &self->grm, self->endInds[strip_i], end );
+			Grid_Lift( vertGrid, self->beginInds[strip_i], begin );
+			Grid_Lift( vertGrid, self->endInds[strip_i], end );
 			conDim = self->conDims[strip_i];
 			assert( (len = end[conDim] - begin[conDim] + 1) > 1 );
-			first = GET_VAL( Sync_MapGlobal( self->sync, self->beginInds[strip_i] ) )[conDim];
-			step = GET_VAL( Sync_MapGlobal( self->sync, self->endInds[strip_i] ) )[conDim];
+
+			insist( Decomp_Sync_GlobalToDomain( self->sync, self->beginInds[strip_i], &dInd ) );
+			first = GET_VAL( dInd )[conDim];
+			insist( Decomp_Sync_GlobalToDomain( self->sync, self->endInds[strip_i], &dInd ) );
+			step = GET_VAL( dInd )[conDim];
 			step = (step - first) / (len - 1);
 
 			/* Loop and interpolate. */
@@ -463,10 +389,9 @@
 				unsigned	ind;
 
 				begin[conDim]++;
-				GRM_Project( &self->grm, begin, &ind );
-				if( Sync_MapGlobal( self->sync, ind ) != (unsigned)-1 ) {
-					GET_VAL( Sync_MapGlobal( self->sync, ind ) )[conDim] = 
-						first + (double)node_i * step;
+				ind = Grid_Project( vertGrid, begin );
+				if( Decomp_Sync_GlobalToDomain( self->sync, ind, &dInd ) ) {
+					GET_VAL( dInd )[conDim] = first + (double)node_i * step;
 				}
 			}
 		}
@@ -476,107 +401,71 @@
 }
 
 
-void RegMesh_Generalise( Mesh* mesh, GRM* grm ) {
-	HexaMD*		decomp;
-	unsigned	d_i;
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
 
-	assert( mesh );
-	assert( mesh->layout );
-	assert( mesh->layout->decomp );
 
-	decomp = (HexaMD*)mesh->layout->decomp;
+void SemiRegDeform_InitSync( SemiRegDeform* self ) {
+	unsigned	nRequired;
+	unsigned*	required;
+	unsigned	nDims;
+	unsigned	strip_i;
 
-	assert( decomp->type == HexaMD_Type );
-	assert( grm );
+	assert( self );
 
-
 	/*
-	** Remove any dependance on dimension, storing necessary maps and information in the GRM
-	** (Generalised Regular Mesh) structure.
+	** Setup the synchronisation component.
 	*/
 
-	/* Calculate the number of topological dimensions and their mapping. */
-	for( grm->nDims = 0, d_i = 0; d_i < 3; d_i++ ) {
-		if( decomp->nodeGlobal3DCounts[d_i] > 1 ) {
-			grm->nNodes[grm->nDims] = decomp->nodeGlobal3DCounts[d_i];
-			grm->nDims++;
+	/* Build required indices. */
+	nRequired = 0;
+	required = Memory_Alloc_Array( unsigned, self->nStrips * 2, "SemiRegDeform" );
+	for( strip_i = 0; strip_i < self->nStrips; strip_i++ ) {
+		unsigned	dInd;
+
+		if( !Mesh_GlobalToDomain( self->mesh, MT_VERTEX, self->beginInds[strip_i], &dInd ) || 
+		    dInd >= Mesh_GetLocalSize( self->mesh, MT_VERTEX ) )
+		{
+			required[nRequired++] = self->beginInds[strip_i];
 		}
+		if( !Mesh_GlobalToDomain( self->mesh, MT_VERTEX, self->endInds[strip_i], &dInd ) || 
+		    dInd >= Mesh_GetLocalSize( self->mesh, MT_VERTEX ) )
+		{
+			required[nRequired++] = self->endInds[strip_i];
+		}
 	}
+	required = Memory_Realloc_Array( required, unsigned, nRequired );
 
-	/* Calculate the basis. */
-	grm->basis[0] = 1;
-	for( d_i = 1; d_i < grm->nDims; d_i++ ) {
-		grm->basis[d_i] = grm->basis[d_i - 1] * grm->nNodes[d_i - 1];
-	}
+	self->sync = Decomp_Sync_New( "" );
+	Decomp_Sync_SetDecomp( self->sync, self->mesh->topo->domains[MT_VERTEX]->decomp );
+	Decomp_Sync_SetRequired( self->sync, nRequired, required );
 
-	/* Store the mesh. */
-	grm->mesh = mesh;
-}
+	/* Free arrays. */
+	FreeArray( required );
 
+	/* Allocate for sources. */
+	nDims = Mesh_GetDimSize( self->mesh );
+	self->remVerts = AllocNamedArray2D( double, Decomp_Sync_GetRemoteSize( self->sync ), nDims, 
+					    "SemiRegDeform::remVerts" );
 
-void GRM_Lift( GRM* grm, unsigned ind, unsigned* dimInds ) {
-	unsigned	rem;
-	unsigned	d_i;
-
-	assert( grm );
-	assert( grm->nDims <= 3 );
-	assert( dimInds );
-
-
-	/*
-	** Take a one dimensional array index and lift it into a regular mesh topological
-	** space.
-	*/
-
-	rem = ind;
-	for( d_i = grm->nDims; d_i > 0; d_i-- ) {
-		unsigned short	dimInd = d_i - 1;
-		div_t		divRes;
-
-		divRes = div( rem, grm->basis[dimInd] );
-		dimInds[dimInd] = divRes.quot;
-		rem = divRes.rem;
-
-		/* Ensure this is a valid lifting. */
-		assert( dimInds[dimInd] < grm->nNodes[dimInd] );
-	}
+	/* Initialise array. */
+	self->syncArray = Decomp_Sync_Array_New();
+	Decomp_Sync_Array_SetSync( self->syncArray, self->sync );
+	Decomp_Sync_Array_SetMemory( self->syncArray, 
+				     self->mesh->verts[0], self->remVerts ? self->remVerts[0] : NULL, 
+				     sizeof(double) * nDims, sizeof(double) * nDims, 
+				     sizeof(double) * nDims );
 }
 
+void SemiRegDeform_Destruct( SemiRegDeform* self ) {
+	assert( self );
 
-void GRM_Project( GRM* grm, unsigned* dimInds, unsigned* ind ) {
-	unsigned short	d_i;
+	self->mesh = NULL;
+	KillObject( self->syncArray );
+	KillObject( self->sync );
 
-	assert( grm );
-	assert( grm->nDims > 0 && grm->nDims <= 3 );
-	assert( dimInds );
-	assert( ind );
-
-
-	/*
-	** Project an n-dimensional set of topological indices into a one-dimensional, unique space.
-	*/
-
-	*ind = 0;
-	for( d_i = 0; d_i < grm->nDims; d_i++ ) {
-		assert( dimInds[d_i] < grm->nNodes[d_i] );
-		*ind += dimInds[d_i] * grm->basis[d_i];
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-void _SemiRegDeform_FreeInternal( void* srd ) {
-	SemiRegDeform*	self = (SemiRegDeform*)srd;
-
 	KillArray( self->beginInds );
 	KillArray( self->endInds );
 	KillArray( self->conDims );
-	KillArray( self->remotes );
-	if( self->sync ) {
-		Stg_Class_Delete( self->sync );
-		self->sync = NULL;
-	}
 }

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SemiRegDeform.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -41,51 +41,36 @@
 #ifndef __Discretisation_Utils_SemiRegDeform_h__
 #define __Discretisation_Utils_SemiRegDeform_h__
 	
-
-	/* A support structure for this class. */
-	typedef struct {
-	      Mesh*		mesh;
-	      unsigned short	nDims;
-	      unsigned		nNodes[3];
-	      unsigned		basis[3];
-	} GRM;
-
 	/* Textual name of this class */
 	extern const Type SemiRegDeform_Type;
 
 	/* Virtual function types */
 	
 	/* Class contents */
-	#define __SemiRegDeform \
-		/* General info */ \
-		__Stg_Component \
-		\
-		/* Virtual info */ \
-		\
-		/* SemiRegDeform info ... */ \
-		GRM					grm; \
-		unsigned				nStrips; \
-		unsigned*				beginInds; \
-		unsigned*				endInds; \
-		unsigned*				conDims; \
-		\
-		Sync*					sync; \
-		unsigned				nRemotes; \
-		Coord*					remotes;
+	#define __SemiRegDeform						\
+		/* General info */					\
+		__Stg_Component						\
+									\
+		/* Virtual info */					\
+									\
+		/* SemiRegDeform info ... */				\
+		Mesh*					mesh;		\
+		Decomp_Sync*				sync;		\
+		Decomp_Sync_Array*			syncArray;	\
+									\
+		double**				remVerts;	\
+		unsigned				nStrips;	\
+		unsigned*				beginInds;	\
+		unsigned*				endInds;	\
+		unsigned*				conDims;
 
 	struct SemiRegDeform { __SemiRegDeform };
 	
-	
 	/*-----------------------------------------------------------------------------------------------------------------------------
 	** Constructors
 	*/
 	
-	/* Create a SemiRegDeform */
-	SemiRegDeform* SemiRegDeform_DefaultNew( Name name );
-	
 	SemiRegDeform* SemiRegDeform_New( Name name );
-	
-	/* Creation implementation */
 	SemiRegDeform* _SemiRegDeform_New(SizeT						_sizeOfSelf, 
 					  Type						type,
 					  Stg_Class_DeleteFunction*			_delete,
@@ -98,65 +83,32 @@
 					  Stg_Component_ExecuteFunction*		_execute,
 					  Stg_Component_DestroyFunction*		_destroy, 
 					  Name						name );
-	
-	
-	/* Initialise a SemiRegDeform */
-	void SemiRegDeform_Init( SemiRegDeform* self, Name name );
-	
-	/* Initialisation implementation functions */
 	void _SemiRegDeform_Init( SemiRegDeform* self );
 	
-	
 	/*-----------------------------------------------------------------------------------------------------------------------------
 	** Virtual functions
 	*/
 	
-	/* Stg_Class_Delete implementation */
 	void _SemiRegDeform_Delete( void* srd );
-	
-	/* Print implementation */
 	void _SemiRegDeform_Print( void* srd, Stream* stream );
-	
-	/* Construct implementation */
 	void _SemiRegDeform_Construct( void* srd, Stg_ComponentFactory* cf, void* data );
-	
-	/* Build implementation */
 	void _SemiRegDeform_Build( void* srd, void* data );
-	
-	/* Component implementation */
 	void _SemiRegDeform_Initialise( void* srd, void* data );
-	
-	/* Execute implementation */
 	void _SemiRegDeform_Execute( void* srd, void* data );
-	
-	/* Destroy implementation */
 	void _SemiRegDeform_Destroy( void* srd, void* data );
 	
-	
 	/*-----------------------------------------------------------------------------------------------------------------------------
 	** Public functions
 	*/
 
 	void SemiRegDeform_SetMesh( void* srd, Mesh* mesh );
-
 	void SemiRegDeform_AddStrip( void* srd, unsigned begin, unsigned end );
-
 	void SemiRegDeform_Deform( void* srd );
 	
-	
 	/*-----------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions
 	*/
-
-	void _SemiRegDeform_SyncInit( void* srd );
-
-	void _SemiRegDeform_FreeInternal( void* srd );
-
-	void RegMesh_Generalise( Mesh* mesh, GRM* grm );
-
-	void GRM_Lift( GRM* grm, unsigned ind, unsigned* dimInds );
-
-	void GRM_Project( GRM* grm, unsigned* dimInds, unsigned* ind );
+	void SemiRegDeform_InitSync( SemiRegDeform* self );
+	void SemiRegDeform_Destruct( SemiRegDeform* self );
 	
-	
 #endif /* __Discretisation_Utils_SemiRegDeform_h__ */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/ShapeVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/ShapeVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/ShapeVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -458,16 +458,26 @@
 }
 
 IndexSet* _ShapeVC_GetSet(void* variableCondition) {
-	ShapeVC*		self = (ShapeVC*)variableCondition;
+	ShapeVC*	self = (ShapeVC*)variableCondition;
+	Mesh*		mesh = self->_mesh;
+	IndexSet*	set;
+	unsigned	v_i;
 
-	Stg_Component_Initialise( self->_mesh, NULL, False );
+	Stg_Component_Initialise( mesh, NULL, False );
 
-	return Mesh_CreateIndexSetFromShape( self->_mesh, self->_shape );
+	set = IndexSet_New( Mesh_GetDomainSize( mesh, MT_VERTEX ) );
+
+	for( v_i = 0; v_i < Mesh_GetDomainSize( mesh, MT_VERTEX ); v_i++ ) {
+		if( Stg_Shape_IsCoordInside( self->_shape, Mesh_GetVertex( mesh, v_i ) ) )
+			IndexSet_Add( set, v_i );
+	}
+
+	return set;
 }
 
 VariableCondition_VariableIndex _ShapeVC_GetVariableCount(void* variableCondition, Index globalIndex) {
 	ShapeVC*	self = (ShapeVC*)variableCondition;
-	
+
 	return self->_entryCount;
 }
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -54,10 +54,10 @@
 */
 
 VariableCondition* SplitFrictionWallVC_Factory(
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						data )
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						data )
 {
 	return (VariableCondition*)SplitFrictionWallVC_New( defaultSplitFrictionWallVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
 }
@@ -96,12 +96,12 @@
 }
 
 SplitFrictionWallVC*	SplitFrictionWallVC_New(
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	return _SplitFrictionWallVC_New(
 		sizeof(SplitFrictionWallVC), 
@@ -135,13 +135,13 @@
 
 
 void SplitFrictionWallVC_Init(
-		SplitFrictionWallVC*						self,
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	SplitFrictionWallVC*						self,
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	/* General info */
 	self->type = SplitFrictionWallVC_Type;
@@ -179,33 +179,33 @@
 
 
 SplitFrictionWallVC* _SplitFrictionWallVC_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name								name, 
-		Bool								initFlag,
-		VariableCondition_BuildSelfFunc*		_buildSelf, 
-		VariableCondition_PrintConciseFunc*		_printConcise,
-		VariableCondition_ReadDictionaryFunc*		_readDictionary,
-		VariableCondition_GetSetFunc*			_getSet,
-		VariableCondition_GetVariableCountFunc*		_getVariableCount,
-		VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
-		VariableCondition_GetValueIndexFunc*		_getValueIndex,
-		VariableCondition_GetValueCountFunc*		_getValueCount,
-		VariableCondition_GetValueFunc*			_getValue,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh)
+	SizeT						_sizeOfSelf, 
+	Type						type,
+	Stg_Class_DeleteFunction*				_delete,
+	Stg_Class_PrintFunction*				_print,
+	Stg_Class_CopyFunction*				_copy, 
+	Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
+	Stg_Component_ConstructFunction*			_construct,
+	Stg_Component_BuildFunction*			_build,
+	Stg_Component_InitialiseFunction*			_initialise,
+	Stg_Component_ExecuteFunction*			_execute,
+	Stg_Component_DestroyFunction*			_destroy,
+	Name								name, 
+	Bool								initFlag,
+	VariableCondition_BuildSelfFunc*		_buildSelf, 
+	VariableCondition_PrintConciseFunc*		_printConcise,
+	VariableCondition_ReadDictionaryFunc*		_readDictionary,
+	VariableCondition_GetSetFunc*			_getSet,
+	VariableCondition_GetVariableCountFunc*		_getVariableCount,
+	VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
+	VariableCondition_GetValueIndexFunc*		_getValueIndex,
+	VariableCondition_GetValueCountFunc*		_getValueCount,
+	VariableCondition_GetValueFunc*			_getValue,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh)
 {
 	SplitFrictionWallVC*	self;
 	
@@ -250,9 +250,9 @@
 
 
 void _SplitFrictionWallVC_Init(
-		void*						wallVC, 
-		Name						_dictionaryEntryName, 
-		void*						_mesh )
+	void*						wallVC, 
+	Name						_dictionaryEntryName, 
+	void*						_mesh )
 {
 	SplitFrictionWallVC*			self = (SplitFrictionWallVC*)wallVC;
 
@@ -338,10 +338,10 @@
 					Stream*	errorStr = Journal_Register( Error_Type, self->type );
 
 					Journal_Printf( errorStr, "Error- in %s: While parsing "
-						"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
-						"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
-						__func__, self->_dictionaryEntryName, SplitFrictionWallVC_WallEnumToStr[self->_wall],
-						self->_entryTbl[entry_I].varName, funcName );
+							"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
+							"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
+							__func__, self->_dictionaryEntryName, SplitFrictionWallVC_WallEnumToStr[self->_wall],
+							self->_entryTbl[entry_I].varName, funcName );
 					Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
 					ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
 					Journal_Printf( errorStr, ")\n");	
@@ -357,7 +357,7 @@
 				self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
 				self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
 				self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
-					self->_entryTbl[entry_I].value.as.typeArray.size, "SplitFrictionWallVC->_entryTbl[].value.as.typeArray.array" );
+													self->_entryTbl[entry_I].value.as.typeArray.size, "SplitFrictionWallVC->_entryTbl[].value.as.typeArray.array" );
 					
 				for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
 				{
@@ -367,7 +367,7 @@
 				}
 			}
 			else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
-				0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
+				 0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
 			{
 				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
 				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
@@ -438,9 +438,9 @@
 	if (self->_dictionaryEntryName)
 		Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
 	Journal_Printf( info, "\t_wall: %s\n", self->_wall == SplitFrictionWallVC_Wall_Front ? "Front" :
-		self->_wall == SplitFrictionWallVC_Wall_Back ? "Back" : self->_wall == SplitFrictionWallVC_Wall_Left ? "Left" :
-		self->_wall == SplitFrictionWallVC_Wall_Right ? "Right" : self->_wall == SplitFrictionWallVC_Wall_Top ? "Top" :
-		self->_wall == SplitFrictionWallVC_Wall_Bottom ? "Bottom" : "None");
+			self->_wall == SplitFrictionWallVC_Wall_Back ? "Back" : self->_wall == SplitFrictionWallVC_Wall_Left ? "Left" :
+			self->_wall == SplitFrictionWallVC_Wall_Right ? "Right" : self->_wall == SplitFrictionWallVC_Wall_Top ? "Top" :
+			self->_wall == SplitFrictionWallVC_Wall_Bottom ? "Bottom" : "None");
 	Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
 	Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
 	if (self->_entryTbl)
@@ -453,46 +453,46 @@
 			Journal_Printf( info, "\t\t\tvalue:\n");
 			switch (self->_entryTbl[entry_I].value.type)
 			{
-				case VC_ValueType_Double:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
-					Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
-					break;
+			case VC_ValueType_Double:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
+				Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
+				break;
 					
-				case VC_ValueType_Int:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
-					Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
-					break;
+			case VC_ValueType_Int:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
+				Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
+				break;
 					
-				case VC_ValueType_Short:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
-					Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
-					break;
+			case VC_ValueType_Short:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
+				Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
+				break;
 					
-				case VC_ValueType_Char:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
-					Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
-					break;
+			case VC_ValueType_Char:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
+				Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
+				break;
 					
-				case VC_ValueType_Ptr:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
-					Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
-					break;
+			case VC_ValueType_Ptr:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
+				Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
+				break;
 					
-				case VC_ValueType_DoubleArray:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
-					Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
-					Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
+			case VC_ValueType_DoubleArray:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
+				Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
+				Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
 						self->_entryTbl[entry_I].value.as.typeArray.array);
-					if (self->_entryTbl[entry_I].value.as.typeArray.array)
-						for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-							Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
+				if (self->_entryTbl[entry_I].value.as.typeArray.array)
+					for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+						Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
 								self->_entryTbl[entry_I].value.as.typeArray.array[i]);
-					break;
+				break;
 					
-				case VC_ValueType_CFIndex:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
-					Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
-					break;
+			case VC_ValueType_CFIndex:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
+				Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
+				break;
 			}
 		}
 	Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
@@ -577,87 +577,91 @@
 {
 	SplitFrictionWallVC*		self = (SplitFrictionWallVC*)variableCondition;
 	IndexSet	*set = NULL;
-	HexaMD*		hexaMD = (HexaMD*)self->_mesh->layout->decomp;
-	Stream*		warningStr = Journal_Register( Error_Type, self->type );
+	Stream*     warningStr = Journal_Register( Error_Type, self->type );
+	unsigned	nDims;
+	unsigned*	gSize;
 
-	
+	nDims = Mesh_GetDimSize( self->_mesh );
+	gSize = (unsigned*)ExtensionManager_Get( self->_mesh->info, self->_mesh, 
+						 ExtensionManager_GetHandle( self->_mesh->info, 
+									     "cartesianGlobalSize" ) );
 	switch (self->_wall) {
-		case SplitFrictionWallVC_Wall_Front:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Front:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalFrontSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalFrontSet(self->_mesh);
+		}
+		break;
 			
-		case SplitFrictionWallVC_Wall_Back:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Back:
+		if ( nDims < 3 || !gSize[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBackSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBackSet(self->_mesh);
+		}	
+		break;
 			
-		case SplitFrictionWallVC_Wall_Top:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Top:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
+		}	
+		break;
 			
-		case SplitFrictionWallVC_Wall_Bottom:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Bottom:
+		if ( nDims < 2 || !gSize[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
+		}	
+		break;
 			
-		case SplitFrictionWallVC_Wall_Left:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Left:
+		if ( !gSize[0] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
+		}	
+		break;
 			
-		case SplitFrictionWallVC_Wall_Right:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case SplitFrictionWallVC_Wall_Right:
+		if ( !gSize[0] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					SplitFrictionWallVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New(Mesh_GetDomainSize( self->_mesh, MT_VERTEX ));	
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
+		}
+		break;
 			
-		case SplitFrictionWallVC_Wall_Size:
-		default:
-			assert(0);
-			break;
+	case SplitFrictionWallVC_Wall_Size:
+	default:
+		assert(0);
+		break;
 	}
 	
 	return set;
@@ -683,17 +687,17 @@
 	searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
 	
 	Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
-		"varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
-		"count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
+			  "varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
+			  "count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
 
 	return searchedIndex; 
 }
 
 
 VariableCondition_ValueIndex _SplitFrictionWallVC_GetValueIndex(
-		void*				variableCondition, 
-		Index				globalIndex, 
-		VariableCondition_VariableIndex	varIndex)
+	void*				variableCondition, 
+	Index				globalIndex, 
+	VariableCondition_VariableIndex	varIndex)
 {
 	return varIndex;
 }
@@ -719,12 +723,12 @@
 	
 	Journal_Printf( stream, "\ttype: %s, set: ", self->type );
 	Journal_Printf( stream, "%s\n", 
-		self->_wall == SplitFrictionWallVC_Wall_Front ? "Front" :
-		self->_wall == SplitFrictionWallVC_Wall_Back ? "Back" : 
-		self->_wall == SplitFrictionWallVC_Wall_Left ? "Left" :
-		self->_wall == SplitFrictionWallVC_Wall_Right ? "Right" : 
-		self->_wall == SplitFrictionWallVC_Wall_Top ? "Top" :
-		self->_wall == SplitFrictionWallVC_Wall_Bottom ? "Bottom" : "None" );
+			self->_wall == SplitFrictionWallVC_Wall_Front ? "Front" :
+			self->_wall == SplitFrictionWallVC_Wall_Back ? "Back" : 
+			self->_wall == SplitFrictionWallVC_Wall_Left ? "Left" :
+			self->_wall == SplitFrictionWallVC_Wall_Right ? "Right" : 
+			self->_wall == SplitFrictionWallVC_Wall_Top ? "Top" :
+			self->_wall == SplitFrictionWallVC_Wall_Bottom ? "Bottom" : "None" );
 }
 
 /*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/SplitFrictionWallVC.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -58,7 +58,7 @@
 		SplitFrictionWallVC_Entry*			_entryTbl; \
 		Mesh*				_mesh;
 
-	struct _SplitFrictionWallVC { __SplitFrictionWallVC };
+	struct SplitFrictionWallVC { __SplitFrictionWallVC };
 	
 	
 	/*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/StripRemesher.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/StripRemesher.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/StripRemesher.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -279,7 +279,7 @@
 	self->srd = SemiRegDeform_New( "" );
 	SemiRegDeform_SetMesh( self->srd, self->mesh );
 
-	for( d_i = 0; d_i < self->srd->grm.nDims; d_i++ ) {
+	for( d_i = 0; d_i < Mesh_GetDimSize( self->srd->mesh ); d_i++ ) {
 		IJK	ijkLow;
 		IJK	ijkUpp;
 
@@ -315,10 +315,14 @@
 				 IJK ijkLow, IJK ijkUpp )
 {
 	unsigned	n_i;
+	Grid*		vertGrid;
 
-	if( dim < srd->grm.nDims ) {
+	vertGrid = *(Grid**)ExtensionManager_Get( srd->mesh->info, srd->mesh, 
+						  ExtensionManager_GetHandle( srd->mesh->info, "vertexGrid" ) );
+
+	if( dim < Mesh_GetDimSize( srd->mesh ) ) {
 		if( dim != deformDim ) {
-			for( n_i = 0; n_i < srd->grm.nNodes[dim]; n_i++ ) {
+			for( n_i = 0; n_i < vertGrid->sizes[dim]; n_i++ ) {
 				ijkLow[dim] = n_i;
 				ijkUpp[dim] = n_i;
 				_StripRemesher_BuildStrips( srd, dim + 1, deformDim, 
@@ -327,7 +331,7 @@
 		}
 		else {
 			ijkLow[dim] = 0;
-			ijkUpp[dim] = srd->grm.nNodes[dim] - 1;
+			ijkUpp[dim] = vertGrid->sizes[dim] - 1;
 			_StripRemesher_BuildStrips( srd, dim + 1, deformDim, 
 						    ijkLow, ijkUpp );
 		}
@@ -335,8 +339,8 @@
 	else {
 		unsigned	low, upp;
 
-		GRM_Project( &srd->grm, ijkLow, &low );
-		GRM_Project( &srd->grm, ijkUpp, &upp );
+		low = Grid_Project( vertGrid, ijkLow );
+		upp = Grid_Project( vertGrid, ijkUpp );
 		SemiRegDeform_AddStrip( srd, low, upp );
 	}
 }

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1374 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-
-#include "types.h"
-#include "Sync.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-
-/* Textual name of this class */
-const Type Sync_Type = "Sync";
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-void* Sync_DefaultNew( Name name ) {
-	return _Sync_New( sizeof(Sync), 
-			  Sync_Type, 
-			  _Sync_Delete, 
-			  _Sync_Print,
-			  NULL,
-			  Sync_DefaultNew,
-			  _Sync_Construct,
-			  _Sync_Build,
-			  _Sync_Initialise,
-			  _Sync_Execute,
-			  _Sync_Destroy,
-			  name,
-			  False,
-			  NULL );
-}
-
-
-Sync* Sync_New_Param( Dictionary* dictionary, Name name ) {
-	return _Sync_New( sizeof(Sync), 
-			  Sync_Type, 
-			  _Sync_Delete, 
-			  _Sync_Print,
-			  NULL,
-			  Sync_DefaultNew,
-			  _Sync_Construct,
-			  _Sync_Build,
-			  _Sync_Initialise,
-			  _Sync_Execute,
-			  _Sync_Destroy,
-			  name,
-			  True,
-			  dictionary );
-}
-
-
-void Sync_Init( Sync* self,
-		Dictionary* dictionary, Name name )
-{
-	/* General info */
-	self->type = Sync_Type;
-	self->_sizeOfSelf = sizeof(Sync);
-	self->_deleteSelf = False;
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	self->_delete = _Sync_Delete;
-	self->_print = _Sync_Print;
-	self->_copy = NULL;
-	self->_defaultConstructor = Sync_DefaultNew;
-	self->_construct = _Sync_Construct;
-	self->_build = _Sync_Build;
-	self->_initialise = _Sync_Initialise;
-	self->_execute = _Sync_Execute;
-	self->_destroy = _Sync_Destroy;
-	
-	_Stg_Class_Init( (Stg_Class*)self );
-	_Stg_Object_Init( (Stg_Object*)self, name, NON_GLOBAL );
-	_Stg_Component_Init( (Stg_Component*)self );
-	
-	/* Sync info */
-	_Sync_Init( self );
-}
-
-
-Sync* _Sync_New( SizeT						_sizeOfSelf, 
-		 Type						type,
-		 Stg_Class_DeleteFunction*			_delete,
-		 Stg_Class_PrintFunction*			_print,
-		 Stg_Class_CopyFunction*			_copy, 
-		 Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		 Stg_Component_ConstructFunction*		_construct,
-		 Stg_Component_BuildFunction*			_build,
-		 Stg_Component_InitialiseFunction*		_initialise,
-		 Stg_Component_ExecuteFunction*			_execute,
-		 Stg_Component_DestroyFunction*			_destroy,
-		 Name						name,
-		 Bool						initFlag,
-		 Dictionary*					dictionary )
-{
-	Sync* self;
-	
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(Sync) );
-	self = (Sync*)_Stg_Component_New( 
-		_sizeOfSelf, 
-		type, 
-		_delete, 
-		_print, 
-		_copy, 
-		_defaultConstructor, 
-		_construct, 
-		_build, 
-		_initialise, 
-		_execute, 
-		_destroy, 
-		name, 
-		NON_GLOBAL );
-	
-	/* General info */
-	self->dictionary = dictionary;
-	
-	/* Virtual info */
-	
-	/* Sync info */
-	if( initFlag ){
-		_Sync_Init( self );
-	}
-	
-	return self;
-}
-
-
-void _Sync_Init( Sync* self ) {
-	/* General and Virtual info should already be set */
-	self->isConstructed = True;
-	/* Sync info */
-	
-	self->comm = MPI_COMM_WORLD;
-	self->nProcs = 0;
-	self->rank = 0;
-	
-	self->select = _Sync_Select_MinimizeComms;
-
-	self->nGlobal = 0;
-	self->nLocal = 0;
-	self->local = NULL;
-	self->nShared = 0;
-	self->shared = NULL;
-	self->nShadow = 0;
-	self->shadow = NULL;
-	self->nDomain = 0;
-	self->domain = NULL;
-
-	self->globalMap = NULL;
-	
-	self->netSource = 0;
-	self->nSource = NULL;
-	self->source = NULL;
-	
-	self->netSink = 0;
-	self->nSink = NULL;
-	self->sink = NULL;
-	
-	self->sourceDisps = NULL;
-	self->sourceSizes = NULL;
-	self->sourceOffs = NULL;
-	self->sourceArray = NULL;
-	self->sinkDisps = NULL;
-	self->sinkSizes = NULL;
-	self->sinkOffs = NULL;
-	self->sinkArray = NULL;
-
-	self->itemSize = 0;
-	self->arrayType = Sync_ArrayType_None;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _Sync_Delete( void* sync ) {
-	Sync* self = (Sync*)sync;
-
-	_Sync_Free( self );
-
-	/* Stg_Class_Delete parent */
-	_Stg_Class_Delete( self );
-}
-
-
-void _Sync_Print( void* sync, Stream* stream ) {
-	Sync* self = (Sync*)sync;
-	
-	/* Print parent */
-	_Stg_Class_Print( self, stream );
-	
-	/* General info */
-	Journal_Printf( stream, "Sync (ptr): (%p)\n", self );
-	
-	/* Virtual info */
-	
-	/* Sync info */
-}
-
-
-void _Sync_Construct( void* sync, Stg_ComponentFactory *cf, void* data ){
-}
-
-	
-void _Sync_Build( void* sync, void *data ){
-}
-
-	
-void _Sync_Initialise( void* sync, void *data ) {
-}
-
-	
-void _Sync_Execute( void* sync, void *data ){
-}
-
-
-void _Sync_Destroy( void* sync, void *data ){
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void Sync_Negotiate( void* sync, 
-		     unsigned nGlobal, 
-		     unsigned* local, unsigned nLocal, 
-		     unsigned* shared, unsigned nShared, 
-		     unsigned* shadow, unsigned nShadow, 
-		     MPI_Comm comm )
-{
-	Sync*		self = (Sync*)sync;
-	unsigned*	remNFound;
-	unsigned**	remFound;
-	unsigned	proc_i;
-
-	assert( sync );
-	assert( nGlobal );
-	assert( !nLocal || local );
-	assert( !nShared || shared );
-	assert( !nShadow || shadow );
-
-
-	/*
-	** Check for existing allocated arrays and free them.
-	*/
-
-	_Sync_Free( self );
-
-
-	/*
-	** Before anything else, store the parameters and build the global map.
-	*/
-
-	self->nGlobal = nGlobal;
-	self->nLocal = nLocal;
-	self->nShared = nShared;
-	self->nShadow = nShadow;
-	self->nDomain = nLocal + nShadow;
-	if( self->nDomain ) {
-		self->domain = Memory_Alloc_Array( unsigned, self->nDomain, "Sync" );
-	}
-	if( nLocal ) {
-		self->local = self->domain;
-		memcpy( self->local, local, sizeof(unsigned) * nLocal );
-	}
-	if( nShadow ) {
-		self->shadow = self->domain + nLocal;
-		memcpy( self->shadow, shadow, sizeof(unsigned) * nShadow );
-	}
-	if( nShared ) {
-		self->shared = Memory_Alloc_Array( unsigned, nShared, "Sync" );
-		memcpy( self->shared, shared, sizeof(unsigned) * nShared );
-	}
-
-	/* And build the global map. */
-	_Sync_BuildGlobalMap( self );
-
-
-	/*
-	** Collect basic MPI information.
-	*/
-
-	self->comm = comm;
-	CHK_MPI( MPI_Comm_rank( comm, &self->rank ) );
-	CHK_MPI( MPI_Comm_size( comm, &self->nProcs ) );
-
-	if( self->nProcs == 1 ) {
-		self->nSource = Memory_Alloc_Array( unsigned, 1, "Sync" );
-		self->nSink = Memory_Alloc_Array( unsigned, 1, "Sync" );
-		self->nSource[0] = 0;
-		self->nSink[0] = 0;
-		return;
-	}
-
-
-	/*
-	** For each other proc build a set of local that correspond to remotes they will send here.  There will
-	** probably be mainly empty sets.  Send back to respective procs.
-	*/
-
-	{
-		unsigned*	remNReq;
-		unsigned**	remReq;
-		unsigned*	nFound;
-		unsigned**	found;
-		IndexSet*	globalSet;
-
-		/* Send our required to all others and receive from all others. */
-		MPI_ArrayAllgather( nShadow, sizeof(unsigned), shadow, &remNReq, (void***)&remReq, comm );
-
-		/* Prepare to locate remote requireds. */
-		nFound = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		found = Memory_Alloc_Array( unsigned*, self->nProcs, "Sync" );
-		globalSet = IndexSet_New( nGlobal );
-
-		/* Begin searching... */
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	remReq_i;
-
-			if( proc_i == self->rank ) {
-				nFound[proc_i] = 0;
-				found[proc_i] = NULL;
-				continue;
-			}
-
-			IndexSet_RemoveAll( globalSet );
-
-			for( remReq_i = 0; remReq_i < remNReq[proc_i]; remReq_i++ ) {
-				unsigned	loc_i;
-
-				for( loc_i = 0; loc_i < nLocal; loc_i++ ) {
-					if( local[loc_i] == remReq[proc_i][remReq_i] ) {
-						IndexSet_Add( globalSet, remReq[proc_i][remReq_i] );
-						break;
-					}
-				}
-			}
-
-			IndexSet_GetMembers( globalSet, &nFound[proc_i], &found[proc_i] );
-		}
-
-		/* Release some memory. */
-		FreeArray( remNReq );
-		FreeArray( remReq );
-		Stg_Class_Delete( globalSet );
-
-		/* Send back all the ones we found and receive from all others all our requireds they found. */
-		MPI_Array2DAlltoall( nFound, sizeof(unsigned), (void**)found, &remNFound, (void***)&remFound, comm );
-
-		/* Release some memory. */
-		FreeArray( nFound );
-		FreeArray2D( self->nProcs, found );
-	}
-
-
-	/*
-	** Execute an algorithm (potentially user supplied) to determine where the requested nodes will
-	** come from.
-	*/
-
-	self->select( self, remNFound, remFound );
-
-	/* We can now free up some more memory. */
-	FreeArray( remNFound );
-	FreeArray( remFound );
-
-
-	/*
-	** Communicate back to all procs our selection.  Note that even though most procs will not need to send
-	** anything here, we still need to let them know that.
-	*/
-
-	/* Allocate for the sinks. */
-	self->nSink = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-	
-	CHK_MPI( MPI_Alltoall( self->nSource, 1, MPI_UNSIGNED, 
-			       self->nSink, 1, MPI_UNSIGNED, comm ) );
-	MPI_Array2DAlltoall( self->nSource, sizeof(unsigned), (void**)self->source, 
-			     &self->nSink, (void***)&self->sink, comm );
-
-
-	/*
-	** Calculate net values for source and sink.
-	*/
-
-	self->netSource = 0;
-	self->netSink = 0;
-	for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-		self->netSource += self->nSource[proc_i];
-		self->netSink += self->nSink[proc_i];
-	}
-
-
-	/*
-	** Complete the mappings, ie. map sink and source arrays from global indices to domain indices.
-	*/
-
-	{
-		unsigned	snk_i, src_i;
-
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			for( snk_i = 0; snk_i < self->nSink[proc_i]; snk_i++ ) {
-				self->sink[proc_i][snk_i] = self->globalMap[self->sink[proc_i][snk_i]];
-			}
-			for( src_i = 0; src_i < self->nSource[proc_i]; src_i++ ) {
-				self->source[proc_i][src_i] = self->globalMap[self->source[proc_i][src_i]];
-			}
-		}
-	}
-}
-
-
-unsigned Sync_GetNGlobal( void* sync ) {
-	assert( sync );
-	return ((Sync*)sync)->nGlobal;
-}
-
-
-unsigned Sync_GetNLocal( void* sync ) {
-	assert( sync );
-	return ((Sync*)sync)->nLocal;
-}
-
-
-unsigned Sync_GetNShadow( void* sync ) {
-	assert( sync );
-	return ((Sync*)sync)->nShadow;
-}
-
-
-unsigned Sync_GetNDomain( void* sync ) {
-	assert( sync );
-	return ((Sync*)sync)->nDomain;
-}
-
-
-unsigned Sync_MapLocal( void* sync, unsigned lInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( !self->nLocal || self->local );
-	assert( lInd < self->nLocal );
-
-	return self->local[lInd];
-}
-
-
-unsigned Sync_MapShadow( void* sync, unsigned sInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( !self->nShadow || self->shadow );
-	assert( sInd < self->nShadow );
-
-	return self->shadow[sInd];
-}
-
-
-unsigned Sync_MapDomain( void* sync, unsigned dInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( !self->nDomain || self->domain );
-	assert( dInd < self->nDomain );
-
-	return self->domain[dInd];
-}
-
-
-unsigned Sync_MapGlobal( void* sync, unsigned gInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( self->globalMap );
-	assert( gInd < self->nGlobal );
-
-	return self->globalMap[gInd];
-}
-
-
-Bool Sync_IsLocal( void* sync, unsigned gInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( self->globalMap );
-	assert( gInd < self->nGlobal );
-
-	return (self->globalMap[gInd] < self->nLocal) ? True : False;
-}
-
-
-Bool Sync_IsShadow( void* sync, unsigned gInd ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-	assert( self->globalMap );
-	assert( gInd < self->nGlobal );
-
-	return (self->globalMap[gInd] >= self->nLocal && 
-		self->globalMap[gInd] < self->nDomain) ? True : False;
-}
-
-
-void Sync_SetDomainArray( void* sync, 
-			  size_t itemSize, size_t stride, void* array )
-{
-	Sync*		self = (Sync*)sync;
-	unsigned	proc_i;
-
-	assert( self );
-	assert( itemSize );
-	assert( stride );
-	assert( array );
-
-
-	/* If needed, empty the current array content. */
-	KillArray( self->sourceOffs );
-	KillArray( self->sourceDisps );
-	KillArray( self->sourceSizes );
-	KillArray( self->sinkOffs );
-	KillArray( self->sinkDisps );
-	KillArray( self->sinkSizes );
-	KillArray( self->sourceArray );
-	KillArray( self->sinkArray );
-
-
-	/*
-	** Build a displacement list from the local array we will get when sending such that we can pack values into
-	** a contiguous array.  While we're at it, construct an array of sizes, proc wise.
-	*/
-
-	if( self->netSource > 0 ) {
-		unsigned*	srcOffs;
-		unsigned*	srcSizes;
-		unsigned*	srcDisps;
-		unsigned	srcInd;
-
-		/* Alloc memory. */
-		srcDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		srcSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		srcOffs = Memory_Alloc_Array( unsigned, self->netSource, "Sync" );
-
-		srcInd = 0;
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	src_i;
-
-			srcSizes[proc_i] = 0;
-			for( src_i = 0; src_i < self->nSource[proc_i]; src_i++ ) {
-				/* Calc the diplacement. */
-				srcOffs[srcInd] = self->source[proc_i][src_i] * stride;
-
-				/* Add to the size. */
-				srcSizes[proc_i] += itemSize;
-
-				srcInd++;
-			}
-		}
-
-		/* Calc the displacements. */
-		srcDisps[0] = 0;
-		for( proc_i = 1; proc_i < self->nProcs; proc_i++ ) {
-			srcDisps[proc_i] = srcDisps[proc_i - 1] + srcSizes[proc_i - 1];
-		}
-
-		/* Store arrays. */
-		self->sourceOffs = srcOffs;
-		self->sourceDisps = srcDisps;
-		self->sourceSizes = srcSizes;
-	}
-	else {
-		self->sourceOffs = NULL;
-		self->sourceDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		self->sourceSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		memset( self->sourceDisps, 0, sizeof(unsigned) * self->nProcs );
-		memset( self->sourceSizes, 0, sizeof(unsigned) * self->nProcs );
-	}
-
-
-	/*
-	** Do the same for the sink items.
-	*/
-
-	if( self->netSink > 0 ) {
-		unsigned*	snkOffs;
-		unsigned*	snkSizes;
-		unsigned*	snkDisps;
-		unsigned	snkInd;
-
-		/* Alloc memory. */
-		snkDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		snkSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		snkOffs = Memory_Alloc_Array( unsigned, self->netSink, "Sync" );
-
-		snkInd = 0;
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	snk_i;
-
-			snkSizes[proc_i] = 0;
-			for( snk_i = 0; snk_i < self->nSink[proc_i]; snk_i++ ) {
-				/* Calc the diplacement. */
-				snkOffs[snkInd] = self->sink[proc_i][snk_i] * stride;
-
-				/* Set the size. */
-				snkSizes[proc_i] += itemSize;
-
-				snkInd++;
-			}
-		}
-
-		/* Calc the displacements. */
-		snkDisps[0] = 0;
-		for( proc_i = 1; proc_i < self->nProcs; proc_i++ ) {
-			snkDisps[proc_i] = snkDisps[proc_i - 1] + snkSizes[proc_i - 1];
-		}
-
-		/* Store arrays. */
-		self->sinkOffs = snkOffs;
-		self->sinkDisps = snkDisps;
-		self->sinkSizes = snkSizes;
-	}
-	else {
-		self->sinkOffs = NULL;
-		self->sinkDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		self->sinkSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		memset( self->sinkSizes, 0, sizeof(unsigned) * self->nProcs );
-		memset( self->sinkDisps, 0, sizeof(unsigned) * self->nProcs );
-	}
-
-
-	/*
-	** Allocate source and sink arrays so we can compile values into contiguous chunks.
-	*/
-
-	self->sourceArray = self->netSource ? Memory_Alloc_Array( unsigned char, self->netSource * itemSize, "Sync" ) : NULL;
-	self->sinkArray = self->netSink ? Memory_Alloc_Array( unsigned char, self->netSink * itemSize, "Sync" ) : NULL;
-
-
-	/*
-	** Fill in any remaing values.
-	*/
-
-	self->itemSize = itemSize;
-	self->arrayType = Sync_ArrayType_Domain;
-	self->arrayInfo.array = array;
-}
-
-
-void Sync_SetSplitArrays( void* sync, 
-			  size_t itemSize, 
-			  size_t srcStride, void* srcArray, 
-			  size_t snkStride, void* snkArray )
-{
-	Sync*		self = (Sync*)sync;
-	unsigned	proc_i;
-
-	assert( self );
-	assert( itemSize );
-	assert( srcStride );
-	assert( srcArray );
-	assert( snkStride );
-	assert( snkArray );
-
-	/* If needed, empty the current array content. */
-	KillArray( self->sourceOffs );
-	KillArray( self->sourceDisps );
-	KillArray( self->sourceSizes );
-	KillArray( self->sinkOffs );
-	KillArray( self->sinkDisps );
-	KillArray( self->sinkSizes );
-	KillArray( self->sourceArray );
-	KillArray( self->sinkArray );
-
-
-	/*
-	** Build a displacement list from the local array we will get when sending such that we can pack values into
-	** a contiguous array.  While we're at it, construct an array of sizes, proc wise.
-	*/
-
-	if( self->netSource > 0 ) {
-		unsigned*	srcOffs;
-		unsigned*	srcSizes;
-		unsigned*	srcDisps;
-		unsigned	srcInd;
-
-		/* Alloc memory. */
-		srcDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		srcSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		srcOffs = Memory_Alloc_Array( unsigned, self->netSource, "Sync" );
-
-		srcInd = 0;
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	src_i;
-
-			srcSizes[proc_i] = 0;
-			for( src_i = 0; src_i < self->nSource[proc_i]; src_i++ ) {
-				/* Calc the diplacement. */
-				srcOffs[srcInd] = self->source[proc_i][src_i] * srcStride;
-
-				/* Add to the size. */
-				srcSizes[proc_i] += itemSize;
-
-				srcInd++;
-			}
-		}
-
-		/* Calc the displacements. */
-		srcDisps[0] = 0;
-		for( proc_i = 1; proc_i < self->nProcs; proc_i++ ) {
-			srcDisps[proc_i] = srcDisps[proc_i - 1] + srcSizes[proc_i - 1];
-		}
-
-		/* Store arrays. */
-		self->sourceOffs = srcOffs;
-		self->sourceDisps = srcDisps;
-		self->sourceSizes = srcSizes;
-	}
-	else {
-		self->sourceOffs = NULL;
-		self->sourceDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		self->sourceSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		memset( self->sourceDisps, 0, sizeof(unsigned) * self->nProcs );
-		memset( self->sourceSizes, 0, sizeof(unsigned) * self->nProcs );
-	}
-
-
-	/*
-	** Do the same for the sink items.
-	*/
-
-	if( self->netSink > 0 ) {
-		unsigned*	snkOffs;
-		unsigned*	snkSizes;
-		unsigned*	snkDisps;
-		unsigned	snkInd;
-
-		/* Alloc memory. */
-		snkDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		snkSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		snkOffs = Memory_Alloc_Array( unsigned, self->netSink, "Sync" );
-
-		snkInd = 0;
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	snk_i;
-
-			snkSizes[proc_i] = 0;
-			for( snk_i = 0; snk_i < self->nSink[proc_i]; snk_i++ ) {
-				/* Calc the diplacement. */
-				snkOffs[snkInd] = self->sink[proc_i][snk_i] * snkStride;
-
-				/* Set the size. */
-				snkSizes[proc_i] += itemSize;
-
-				snkInd++;
-			}
-		}
-
-		/* Calc the displacements. */
-		snkDisps[0] = 0;
-		for( proc_i = 1; proc_i < self->nProcs; proc_i++ ) {
-			snkDisps[proc_i] = snkDisps[proc_i - 1] + snkSizes[proc_i - 1];
-		}
-
-		/* Store arrays. */
-		self->sinkOffs = snkOffs;
-		self->sinkDisps = snkDisps;
-		self->sinkSizes = snkSizes;
-	}
-	else {
-		self->sinkOffs = NULL;
-		self->sinkDisps = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		self->sinkSizes = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-		memset( self->sinkSizes, 0, sizeof(unsigned) * self->nProcs );
-		memset( self->sinkDisps, 0, sizeof(unsigned) * self->nProcs );
-	}
-
-
-	/*
-	** Allocate source and sink arrays so we can compile values into contiguous chunks.
-	*/
-
-	self->sourceArray = self->netSource ? Memory_Alloc_Array( unsigned char, self->netSource * itemSize, "Sync" ) : NULL;
-	self->sinkArray = self->netSink ? Memory_Alloc_Array( unsigned char, self->netSink * itemSize, "Sync" ) : NULL;
-
-
-	/*
-	** Fill in any remaing values.
-	*/
-
-	self->itemSize = itemSize;
-	self->arrayType = Sync_ArrayType_Split;
-	self->arrayInfo.splitArray.srcArray = srcArray;
-	self->arrayInfo.splitArray.snkArray = snkArray;
-}
-
-
-void Sync_SendRecv( void* sync ) {
-	Sync*		self = (Sync*)sync;
-	unsigned	snk_i, src_i;
-
-	assert( self );
-	assert( self->arrayType != Sync_ArrayType_None );
-
-	/*
-	** Pack from the local array into a contiguous array.
-	*/
-
-	if( self->netSink > 0 ) {
-		void*	array;
-
-		/* Select the array to use. */
-		array = (self->arrayType == Sync_ArrayType_Domain) ? self->arrayInfo.array : self->arrayInfo.splitArray.srcArray;
-		assert( array );
-		
-		/* Pack the values. */
-		for( snk_i = 0; snk_i < self->netSink; snk_i++ ) {
-			memcpy( 
-				(void*)((ArithPointer)self->sinkArray + (ArithPointer)(snk_i * self->itemSize)), 
-				(void*)((ArithPointer)array + (ArithPointer)self->sinkOffs[snk_i]), 
-				self->itemSize );
-		}
-	}
-
-
-	/*
-	** Execute the sync system.
-	*/
-
-	MPI_Alltoallv( self->sinkArray, (int*)self->sinkSizes, (int*)self->sinkDisps, MPI_BYTE, 
-		       self->sourceArray, (int*)self->sourceSizes, (int*)self->sourceDisps, MPI_BYTE, 
-		       self->comm );
-
-
-	/*
-	** Unpack the received values.
-	*/
-
-	{
-		unsigned	offs;
-		void*		array;
-
-		/* Select an array and offset accordingly. */
-		if( self->arrayType == Sync_ArrayType_Domain ) {
-			array = self->arrayInfo.array;
-			offs = 0;
-		}
-		else {
-			array = self->arrayInfo.splitArray.snkArray;
-			offs = self->nLocal * self->itemSize;
-		}
-
-		for( src_i = 0; src_i < self->netSource; src_i++ ) {
-			memcpy( 
-				(void*)((ArithPointer)array + (ArithPointer)self->sourceOffs[src_i] - (ArithPointer)offs), 
-				(void*)((ArithPointer)self->sourceArray + (ArithPointer)(src_i * self->itemSize)),
-				self->itemSize );
-		}
-	}
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-void _Sync_Free( void* sync ) {
-	Sync*	self = (Sync*)sync;
-
-	assert( self );
-
-	/*
-	** Kill any arrays that were allocated by Sync functions.
-	*/
-
-	KillArray( self->domain );
-	self->local = NULL;
-	self->shadow = NULL;
-
-	KillArray( self->globalMap );
-
-	KillArray( self->nSource );
-	KillArray2D( self->nProcs, self->source );
-
-	KillArray( self->nSink );
-	KillArray( self->sink );
-
-	KillArray( self->sourceDisps );
-	KillArray( self->sourceSizes );
-	KillArray( self->sourceOffs );
-	KillArray( self->sourceArray );
-	KillArray( self->sinkDisps );
-	KillArray( self->sinkSizes );
-	KillArray( self->sinkOffs );
-	KillArray( self->sinkArray );
-}
-
-
-void _Sync_Select_MinimizeComms( void* sync, 
-				 unsigned* nFound, unsigned** found )
-{
-	Sync*		self = (Sync*)sync;
-	unsigned*	nUniques;
-	unsigned**	uniques;
-	IndexSet*	globalSet;
-	unsigned	mostUniques;
-	unsigned	proc_i;
-
-	Bool _Sync_IsUnique( Sync* self, unsigned found );
-
-	assert( self );
-	assert( nFound );
-	assert( found );
-
-
-	/*
-	** Set up the source arrays.
-	*/
-	
-	self->nSource = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-	self->source = Memory_Alloc_Array( unsigned*, self->nProcs, "Sync" );
-	for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-		self->nSource[proc_i] = 0;
-		self->source[proc_i] = NULL;
-	}
-	
-	
-	/*
-	** Select source procs from which to retrieve required nodes such that communications are minimized.
-	*/
-	
-	nUniques = Memory_Alloc_Array( unsigned, self->nProcs, "Sync" );
-	uniques = Memory_Alloc_Array( unsigned*, self->nProcs, "Sync" );
-	for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-		uniques[proc_i] = NULL;
-	}
-	
-	globalSet = IndexSet_New( self->nGlobal );
-	
-	do {
-		/* Loop over procs and find unique nodes per proc. ie. the most nodes not already covered by
-		   an existing source. */
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-			unsigned	fnd_i;
-			
-			/* If there are no founds for this proc or we've already sourced it, then skip. */
-			if( nFound[proc_i] == 0 || self->nSource[proc_i] > 0 ) {
-				nUniques[proc_i] = 0;
-				continue;
-			}
-			
-			IndexSet_RemoveAll( globalSet );
-			
-			for( fnd_i = 0; fnd_i < nFound[proc_i]; fnd_i++ ) {
-				if( _Sync_IsUnique( sync, found[proc_i][fnd_i] ) ) {
-					IndexSet_Add( globalSet, found[proc_i][fnd_i] );
-				}
-			}
-			
-			IndexSet_GetMembers( globalSet, &nUniques[proc_i], &uniques[proc_i] );
-		}
-
-		/* Determine which proc has the most uniques and store. */
-		{
-			unsigned	mostProc = 0;
-			
-			mostUniques = 0;
-			for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-				if( nUniques[proc_i] > mostUniques ) {
-					mostUniques = nUniques[proc_i];
-					mostProc = proc_i;
-				}
-			}
-			
-			/* Store result. */
-			if( mostUniques ) {
-				self->nSource[mostProc] = mostUniques;
-				self->source[mostProc] = uniques[mostProc];
-				uniques[mostProc] = NULL;
-			}
-		}
-		
-		/* Clobber the allocated 'uniques' arrays. */
-		for( proc_i = 0; proc_i < self->nProcs; proc_i++ )
-			FreeArray( uniques[proc_i] );
-	}
-	while( mostUniques );
-
-	/* Get rid of all the resources. */
-	FreeArray( nUniques );
-	FreeArray( uniques );
-	Stg_Class_Delete( globalSet );
-}
-
-
-Bool _Sync_IsUnique( Sync* self, unsigned found ) {
-	unsigned	proc_i;
-	
-	for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-		unsigned	src_i;
-		
-		for( src_i = 0; src_i < self->nSource[proc_i]; src_i++ ) {
-			if( self->source[proc_i][src_i] == found ) {
-				return False;
-			}
-		}
-	}
-	
-	return True;
-}
-
-
-void _Sync_BuildGlobalMap( void* sync ) {
-	Sync*		self = (Sync*)sync;
-	unsigned	glo_i, dom_i;
-
-	assert( self );
-	assert( !self->globalMap );
-	assert( self->nGlobal );
-
-
-	/*
-	** Construct a map from global space to domain space.
-	*/
-
-	self->globalMap = Memory_Alloc_Array( unsigned, self->nGlobal, "Sync" );
-	for( glo_i = 0; glo_i < self->nGlobal; glo_i++ ) {
-		self->globalMap[glo_i] = (unsigned)-1;
-	}
-
-	for( dom_i = 0; dom_i < self->nDomain; dom_i++ ) {
-		self->globalMap[self->domain[dom_i]] = dom_i;
-	}
-}
-
-
-void _Sync_MapAll( void* sync ) {
-	Sync*		self = (Sync*)sync;
-	unsigned	proc_i, snk_i, src_i;
-
-	assert( self );
-	assert( self->globalMap );
-	assert( !self->nLocal || self->local );
-
-
-	/*
-	** Map the global indices stored in the sink array to local indices.
-	*/
-
-	/* Ensure the global map is built. */
-	for( proc_i = 0; proc_i < self->nProcs; proc_i++ ) {
-		for( snk_i = 0; snk_i < self->nSink[proc_i]; snk_i++ ) {
-			self->sink[proc_i][snk_i] = self->globalMap[self->sink[proc_i][snk_i]];
-		}
-		for( src_i = 0; src_i < self->nSource[proc_i]; src_i++ ) {
-			self->source[proc_i][src_i] = self->globalMap[self->source[proc_i][src_i]];
-		}
-	}
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** MPI Helper Functions.
-*/
-
-void MPI_ArrayGather1D( unsigned size, size_t itemSize, void* array, 
-			unsigned** dstSizes, void** dstArray, 
-			unsigned root, MPI_Comm comm )
-{
-   	int	nProcs;
-	int	rank;
-	
-
-	/* Get basic MPI info. */
-	CHK_MPI( MPI_Comm_size( comm, &nProcs ) );
-	CHK_MPI( MPI_Comm_rank( comm, &rank ) );
-	
-	
-	/*
-	** Send a 1D array of arbitrary length to root process in supplied communicator.  This means we also
-	** need to receive arrays of arbitrary length from all others.  As the array from this proc is already stored
-	** elsewhere we will remove it from the received array, setting its length to zero.
-	*/
-	
-	{
-		unsigned*	tmpSizes = NULL;
-		void*		tmpArray1D = NULL;
-		unsigned*	disps = NULL;
-		unsigned	proc_i;
-		
-		/* Receive size/s. */
-		*dstSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		CHK_MPI( MPI_Gather( &size, 1, MPI_UNSIGNED, *dstSizes, 1, MPI_UNSIGNED, root, comm ) );
-		
-		/* Factor in 'itemSize'. */
-		tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		for( proc_i = 0; proc_i < nProcs; proc_i++ ) {
-			tmpSizes[proc_i] = (*dstSizes)[proc_i] * itemSize;
-		}
-		
-		/* Allocate space for the coming arrays and build a displacement list. */
-		{
-			unsigned	netSize;
-		
-			disps = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		
-			disps[0] = 0;
-			netSize = tmpSizes[0];
-			for( proc_i = 1; proc_i < nProcs; proc_i++ ) {
-				disps[proc_i] = disps[proc_i - 1] + tmpSizes[proc_i - 1];
-				netSize += tmpSizes[proc_i];
-			}
-		
-			if( netSize ) {
-				tmpArray1D = Memory_Alloc_Array_Bytes_Unnamed( sizeof(byte_t), netSize, "unknown" );
-			}
-			else {
-				tmpArray1D = NULL;
-			}
-		}
-
-		/* Send/receive array/s. */
-		CHK_MPI( MPI_Gatherv( array, size * itemSize, MPI_BYTE, 
-				      tmpArray1D, (int*)tmpSizes, (int*)disps, MPI_BYTE, 
-				      root, comm ) );
-		
-		/* Free the displacements and temp-sizes. */
-		Memory_Free( disps );
-		Memory_Free( tmpSizes );
-		
-		/* Store the 1D array. */
-		*dstArray = tmpArray1D;
-	}
-}
-
-
-void MPI_ArrayAllgather( unsigned		size, 
-					size_t		itemSize, 
-					void*		array, 
-					unsigned**	dstSizes, 
-					void***		dstArray, 
-					MPI_Comm		comm )
-{
-	int	nProcs;
-	int	rank;
-	
-	
-/*
-	Journal_Firewall( itemSize > 0 && comm, "Corrupt arguments to MPI_ArrayAllgather.\n" );
-*/
-	
-	
-	/* Get basic MPI info. */
-	CHK_MPI( MPI_Comm_size( comm, &nProcs ) );
-	CHK_MPI( MPI_Comm_rank( comm, &rank ) );
-	
-	
-	/*
-	** Send a 1D array of arbitrary length to all other processes in the supplied communicator.  This means we also
-	** need to receive arrays of arbitrary length from all others.  As the array from this proc is already stored
-	** elsewhere we will remove it from the received array, setting its length to zero.
-	*/
-	
-	{
-		unsigned*	tmpSizes;
-		void*	tmpArray1D;
-		unsigned*	disps;
-		unsigned	proc_i;
-		
-		/* Send/receive size/s. */
-		*dstSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		CHK_MPI( MPI_Allgather( &size, 1, MPI_UNSIGNED, *dstSizes, 1, MPI_UNSIGNED, comm ) );
-		
-		/* Factor in 'itemSize'. */
-		tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		for( proc_i = 0; proc_i < nProcs; proc_i++ ) {
-			tmpSizes[proc_i] = (*dstSizes)[proc_i] * itemSize;
-		}
-		
-		/* Allocate space for the coming arrays and build a displacement list. */
-		{
-			unsigned	netSize;
-			
-			disps = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-			
-			disps[0] = 0;
-			netSize = tmpSizes[0];
-			for( proc_i = 1; proc_i < nProcs; proc_i++ ) {
-				disps[proc_i] = disps[proc_i - 1] + tmpSizes[proc_i - 1];
-				netSize += tmpSizes[proc_i];
-			}
-			
-			if( netSize ) {
-				tmpArray1D = Memory_Alloc_Array_Bytes_Unnamed( sizeof(byte_t), netSize, "unknown" );
-			}
-			else {
-				tmpArray1D = NULL;
-			}
-		}
-		
-		/* Send/receive array/s. */
-		CHK_MPI( MPI_Allgatherv( array, 
-							size * itemSize, 
-							MPI_BYTE, 
-							tmpArray1D, 
-							(int*)tmpSizes, 
-							(int*)disps, 
-							MPI_BYTE, 
-							comm ) );
-		
-		/* Free the displacements and temp-sizes. */
-		Memory_Free( disps );
-		Memory_Free( tmpSizes );
-		
-		/* Unpack the 1D array into the 2D destination. */
-		Array_1DTo2D( nProcs, *dstSizes, tmpArray1D, dstArray, sizeof(unsigned) );
-		
-		/* Free resources. */
-		if( tmpArray1D ) {
-			Memory_Free( tmpArray1D );
-		}
-	}
-}
-
-
-void MPI_Array2DAlltoall( unsigned*	sizes, 
-					 size_t		itemSize, 
-					 void**		array, 
-					 unsigned**	dstSizes, 
-					 void***		dstArray, 
-					 MPI_Comm		comm )
-{
-	int	nProcs;
-	int	rank;
-	
-	
-/*
-	Journal_Firewall( itemSize > 0 && comm, "Corrupt arguments to MPI_ArrayAllgather.\n" );
-*/
-	
-	
-	/* Get basic MPI info. */
-	CHK_MPI( MPI_Comm_size( comm, &nProcs ) );
-	CHK_MPI( MPI_Comm_rank( comm, &rank ) );
-	
-	
-	/*
-	** Blah, blah, sick of comments.
-	*/
-	
-	{
-		unsigned*	tmpDstSizes;
-		unsigned*	tmpDstArray1D;
-		unsigned*	dstDisps;
-		unsigned	proc_i;
-		
-		/* Send/receive sizes. */
-		*dstSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		CHK_MPI( MPI_Alltoall( sizes, 1, MPI_UNSIGNED, *dstSizes, 1, MPI_UNSIGNED, comm ) );
-
-		/* Copy sizes into a new array and modify to include 'itemSize'. */
-		tmpDstSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-		
-		for( proc_i = 0; proc_i < nProcs; proc_i++ ) {
-			tmpDstSizes[proc_i] = (*dstSizes)[proc_i] * itemSize;
-		}
-		
-		/* Allocate space for the coming arrays and build a displacement list. */
-		{
-			unsigned	netSize;
-			
-			dstDisps = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-			
-			dstDisps[0] = 0;
-			netSize = tmpDstSizes[0];
-			for( proc_i = 1; proc_i < nProcs; proc_i++ ) {
-				dstDisps[proc_i] = dstDisps[proc_i - 1] + tmpDstSizes[proc_i - 1];
-				netSize += tmpDstSizes[proc_i];
-			}
-			
-			if( netSize ) {
-				tmpDstArray1D = Memory_Alloc_Array_Bytes_Unnamed( sizeof(byte_t), netSize, "unknown" );
-			}
-			else {
-				tmpDstArray1D = NULL;
-			}
-		}
-		
-		/* Pack the supplied 2D array into a 1D array and send/receive. */
-		{
-			unsigned*	tmpSizes;
-			void*	tmpSrcArray1D;
-			unsigned*	disps;
-			
-			Array_2DTo1D( nProcs, sizes, array, &tmpSrcArray1D, sizeof(unsigned), &disps );
-			
-			/* Generate a temporary set of sizes to include 'itemSize'. Modify 'dists' while we're at it. */
-			tmpSizes = Memory_Alloc_Array_Unnamed( unsigned, nProcs );
-			for( proc_i = 0; proc_i < nProcs; proc_i++ ) {
-				disps[proc_i] *= itemSize;
-				tmpSizes[proc_i] = sizes[proc_i] * itemSize;
-			}
-			
-			/* Send/recv. */
-			CHK_MPI( MPI_Alltoallv( 
-				tmpSrcArray1D, 
-				(int*)tmpSizes, 
-				(int*)disps, 
-				MPI_BYTE, 
-				tmpDstArray1D, 
-				(int*)tmpDstSizes, 
-				(int*)dstDisps, 
-				MPI_BYTE, 
-				comm ) );
-			
-			/* Free memory. */
-			Memory_Free( tmpSizes );
-			Memory_Free( disps );
-			Memory_Free( dstDisps );
-			Memory_Free( tmpDstSizes );
-			
-			if( tmpSrcArray1D ) {
-				Memory_Free( tmpSrcArray1D );
-			}
-		}
-		
-		/* Unpack the 1D array into the 2D destination. */
-		Array_1DTo2D( nProcs, *dstSizes, tmpDstArray1D, dstArray, sizeof(unsigned) );
-		
-		/* Free resources. */
-		if( tmpDstArray1D ) {
-			Memory_Free( tmpDstArray1D );
-		}
-	}
-}

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,253 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Comments:
-**
-** $Id$
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __Discretisaton_Utils_Sync_h__
-#define __Discretisaton_Utils_Sync_h__
-
-
-	/* Useful typedefs. */
-	typedef unsigned char	byte_t;
-	typedef enum {
-		Sync_ArrayType_Domain, 
-		Sync_ArrayType_Split, 
-		Sync_ArrayType_None
-	} Sync_ArrayType;
-
-	extern const Type Sync_Type;
-
-	/* Virtual function types */
-	typedef void (Sync_Select)( void* sync, 
-				    unsigned* nFound, unsigned** found );
-	
-	/* Textual name of this class */
-
-	/* Sync information */
-	#define __Sync \
-		/* General info */ \
-		__Stg_Component \
-		Dictionary*				dictionary; \
-		\
-		/* Virtual info */ \
-		\
-		/* Sync info ... */ \
-		MPI_Comm				comm; \
-		int					nProcs; \
-		int					rank; \
-		\
-		Sync_Select*				select; \
-		\
-		unsigned				nGlobal; \
-		unsigned				nLocal; \
-		unsigned*				local; \
-		unsigned				nShared; \
-		unsigned*				shared; \
-		unsigned				nShadow; \
-		unsigned*				shadow; \
-		unsigned				nDomain; \
-		unsigned*				domain; \
-		\
-		unsigned*		    		globalMap; \
-		\
-		unsigned				netSource; \
-		unsigned*				nSource; \
-		unsigned**				source; \
-		unsigned				netSink; \
-		unsigned*				nSink; \
-		unsigned**				sink; \
-		\
-		unsigned*				sourceDisps; \
-		unsigned*				sourceSizes; \
-		unsigned*				sourceOffs; \
-		void*					sourceArray; \
-		unsigned*				sinkDisps; \
-		unsigned*				sinkSizes; \
-		unsigned*				sinkOffs; \
-		void*					sinkArray; \
-		\
-		size_t					itemSize; \
-		Sync_ArrayType				arrayType; \
-		union { \
-		      void*				array; \
-		      struct { \
-			    void*			srcArray; \
-			    void*			snkArray; \
-		      } splitArray; \
-		} arrayInfo; 
-
-	struct Sync { __Sync };
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-	
-	/* Create a Sync */
-	
-	void* Sync_DefaultNew( Name name );
-	
-	#define Sync_New( name ) \
-		Sync_New_Param( NULL, name )
-	
-	/* Create a Sync with all additional parameters */
-	Sync* Sync_New_Param(
-		Dictionary*	dictionary,
-		Name		name );
-	
-	/* Initialise a Sync */
-	void Sync_Init(	Sync*		self, 
-			Dictionary*	dictionary, 
-			Name		name );
-	
-	/* Creation implementation */
-	Sync* _Sync_New( SizeT						_sizeOfSelf, 
-			 Type						type,
-			 Stg_Class_DeleteFunction*			_delete,
-			 Stg_Class_PrintFunction*			_print,
-			 Stg_Class_CopyFunction*			_copy, 
-			 Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-			 Stg_Component_ConstructFunction*		_construct,
-			 Stg_Component_BuildFunction*			_build,
-			 Stg_Component_InitialiseFunction*		_initialise,
-			 Stg_Component_ExecuteFunction*			_execute,
-			 Stg_Component_DestroyFunction*			_destroy,
-			 Name						name,
-			 Bool						initFlag,
-			 Dictionary*					dictionary );
-	
-	/* Initialisation implementation functions */
-	void _Sync_Init( Sync* self );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-	
-	/* Stg_Class_Delete sync implementation */
-	void _Sync_Delete( void* sync );
-	
-	/* Print sync implementation */
-	void _Sync_Print( void* sync, Stream* stream );
-	
-	void _Sync_Construct( void* sync, Stg_ComponentFactory *cf, void* data );
-	
-	void _Sync_Build( void* sync, void *data );
-	
-	void _Sync_Initialise( void* sync, void *data );
-	
-	void _Sync_Execute( void* sync, void *data );
-
-	void _Sync_Destroy( void* sync, void *data );
-	
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public member functions
-	*/
-	
-	void Sync_Negotiate( void* sync, 
-			     unsigned nGlobal, 
-			     unsigned* local, unsigned nLocal, 
-			     unsigned* shared, unsigned nShared, 
-			     unsigned* shadow, unsigned nShadow, 
-			     MPI_Comm comm );
-
-	void Sync_SetDomainArray( void* sync, 
-				  size_t itemSize, size_t stride, void* array );
-
-	void Sync_SetSplitArrays( void* sync, 
-				  size_t itemSize, 
-				  size_t srcStride, void* srcArray, 
-				  size_t snkStride, void* snkArray );
-
-	unsigned Sync_GetNGlobal( void* sync );
-
-	unsigned Sync_GetNLocal( void* sync );
-
-	unsigned Sync_GetNShadow( void* sync );
-
-	unsigned Sync_GetNDomain( void* sync );
-
-	unsigned Sync_MapLocal( void* sync, unsigned lInd );
-
-	unsigned Sync_MapRemote( void* sync, unsigned rInd );
-
-	unsigned Sync_MapDomain( void* sync, unsigned dInd );
-
-	unsigned Sync_MapGlobal( void* sync, unsigned gInd );
-
-	Bool Sync_IsLocal( void* sync, unsigned gInd );
-
-	Bool Sync_IsRemote( void* sync, unsigned gInd );
-
-	void Sync_SendRecv( void* sync );
-
-	
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-	
-	void _Sync_Free( void* sync );
-	
-	void _Sync_Select_MinimizeComms( void* sync, unsigned* nFound, unsigned** found );
-
-	void _Sync_MapAll( void* sync );
-
-	void _Sync_BuildGlobalMap( void* sync );
-
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** MPI Helper Functions.
-	*/
-
-	#define CHK_MPI( mpiFunc ) \
-		if( mpiFunc != MPI_SUCCESS ) \
-			fprintf( stderr, "Warning: MPI function returned failure...\n" )
-
-	void MPI_ArrayGather1D( unsigned size, size_t itemSize, void* array, 
-				unsigned** dstSizes, void** dstArray, 
-				unsigned root, MPI_Comm comm );
-
-	void MPI_ArrayAllgather( unsigned size, size_t itemSize, void* array, 
-				 unsigned** dstSizes, void*** dstArray, 
-				 MPI_Comm comm );
-
-	void MPI_Array2DAlltoall( unsigned* sizes, size_t itemSize, void** array, 
-				  unsigned** dstSizes, void*** dstArray, 
-				  MPI_Comm comm );
-	
-#endif /* __Discretisaton_Utils_Sync_h__ */
-

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.meta
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.meta	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Sync.meta	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">Sync</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StGermain</param>
-<param name="Location">./StGermain/Discretisation/Utils/src/</param>
-<param name="Project Web">https://csd.vpac.org/twiki/bin/view/Stgermain/WebHome</param>
-<param name="Copyright">StGermain Framework. Copyright (C) 2003-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License http://www.gnu.org/licenses/lgpl.html</param>
-<param name="Parent">Stg_Component</param>
-<param name="Description">...</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">...</param>
-
-</StGermainData>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Utils.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Utils.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/Utils.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -57,18 +57,17 @@
 	#include "FieldVariable_Register.h"
 	#include "FieldVariable.h"
 	#include "OperatorFieldVariable.h"
-	#include "MeshCoarsener_Hexa.h"
 	#include "DiscretisationContext.h"
 	#include "LinearRegression.h"
 	#include "SobolGenerator.h"
 	#include "Remesher.h"
 	#include "StripRemesher.h"
+	#include "CellRemesher.h"
 	
 	#include "TimeIntegratee.h"
 	#include "TimeIntegrator.h"
 	#include "ShapeAdvector.h"
 
-	#include "Sync.h"
 	#include "SemiRegDeform.h"
 	#include "Init.h"
 	#include "Finalise.h"

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/WallVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/WallVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/WallVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -60,10 +60,10 @@
 */
 
 VariableCondition* WallVC_Factory(
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						data )
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						data )
 {
 	return (VariableCondition*)WallVC_New( defaultWallVCName, NULL, variable_Register, conFunc_Register, dictionary, (Mesh*)data );
 }
@@ -102,12 +102,12 @@
 }
 
 WallVC*	WallVC_New(
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	return _WallVC_New(
 		sizeof(WallVC), 
@@ -141,13 +141,13 @@
 
 
 void WallVC_Init(
-		WallVC*						self,
-		Name						name,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh )
+	WallVC*						self,
+	Name						name,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh )
 {
 	/* General info */
 	self->type = WallVC_Type;
@@ -185,33 +185,33 @@
 
 
 WallVC* _WallVC_New( 
-		SizeT						_sizeOfSelf, 
-		Type						type,
-		Stg_Class_DeleteFunction*				_delete,
-		Stg_Class_PrintFunction*				_print,
-		Stg_Class_CopyFunction*				_copy, 
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
-		Stg_Component_ConstructFunction*			_construct,
-		Stg_Component_BuildFunction*			_build,
-		Stg_Component_InitialiseFunction*			_initialise,
-		Stg_Component_ExecuteFunction*			_execute,
-		Stg_Component_DestroyFunction*			_destroy,
-		Name								name, 
-		Bool								initFlag,
-		VariableCondition_BuildSelfFunc*		_buildSelf, 
-		VariableCondition_PrintConciseFunc*		_printConcise,
-		VariableCondition_ReadDictionaryFunc*		_readDictionary,
-		VariableCondition_GetSetFunc*			_getSet,
-		VariableCondition_GetVariableCountFunc*		_getVariableCount,
-		VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
-		VariableCondition_GetValueIndexFunc*		_getValueIndex,
-		VariableCondition_GetValueCountFunc*		_getValueCount,
-		VariableCondition_GetValueFunc*			_getValue,
-		Name						_dictionaryEntryName, 
-		Variable_Register*				variable_Register, 
-		ConditionFunction_Register*			conFunc_Register, 
-		Dictionary*					dictionary,
-		void*						_mesh)
+	SizeT						_sizeOfSelf, 
+	Type						type,
+	Stg_Class_DeleteFunction*				_delete,
+	Stg_Class_PrintFunction*				_print,
+	Stg_Class_CopyFunction*				_copy, 
+	Stg_Component_DefaultConstructorFunction*	_defaultConstructor,
+	Stg_Component_ConstructFunction*			_construct,
+	Stg_Component_BuildFunction*			_build,
+	Stg_Component_InitialiseFunction*			_initialise,
+	Stg_Component_ExecuteFunction*			_execute,
+	Stg_Component_DestroyFunction*			_destroy,
+	Name								name, 
+	Bool								initFlag,
+	VariableCondition_BuildSelfFunc*		_buildSelf, 
+	VariableCondition_PrintConciseFunc*		_printConcise,
+	VariableCondition_ReadDictionaryFunc*		_readDictionary,
+	VariableCondition_GetSetFunc*			_getSet,
+	VariableCondition_GetVariableCountFunc*		_getVariableCount,
+	VariableCondition_GetVariableIndexFunc*		_getVariableIndex,
+	VariableCondition_GetValueIndexFunc*		_getValueIndex,
+	VariableCondition_GetValueCountFunc*		_getValueCount,
+	VariableCondition_GetValueFunc*			_getValue,
+	Name						_dictionaryEntryName, 
+	Variable_Register*				variable_Register, 
+	ConditionFunction_Register*			conFunc_Register, 
+	Dictionary*					dictionary,
+	void*						_mesh)
 {
 	WallVC*	self;
 	
@@ -256,9 +256,9 @@
 
 
 void _WallVC_Init(
-		void*						wallVC, 
-		Name						_dictionaryEntryName, 
-		void*						_mesh )
+	void*						wallVC, 
+	Name						_dictionaryEntryName, 
+	void*						_mesh )
 {
 	WallVC*			self = (WallVC*)wallVC;
 
@@ -343,10 +343,10 @@
 					Stream*	errorStr = Journal_Register( Error_Type, self->type );
 
 					Journal_Printf( errorStr, "Error- in %s: While parsing "
-						"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
-						"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
-						__func__, self->_dictionaryEntryName, WallVC_WallEnumToStr[self->_wall],
-						self->_entryTbl[entry_I].varName, funcName );
+							"definition of wallVC \"%s\" (applies to wall \"%s\"), the cond. func. applied to "
+							"variable \"%s\" - \"%s\" - wasn't found in the c.f. register.\n",
+							__func__, self->_dictionaryEntryName, WallVC_WallEnumToStr[self->_wall],
+							self->_entryTbl[entry_I].varName, funcName );
 					Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
 					ConditionFunction_Register_PrintNameOfEachFunc( self->conFunc_Register, errorStr );
 					Journal_Printf( errorStr, ")\n");	
@@ -362,7 +362,7 @@
 				self->_entryTbl[entry_I].value.type = VC_ValueType_DoubleArray;
 				self->_entryTbl[entry_I].value.as.typeArray.size = Dictionary_Entry_Value_GetCount(valueEntry);
 				self->_entryTbl[entry_I].value.as.typeArray.array = Memory_Alloc_Array( double,
-					self->_entryTbl[entry_I].value.as.typeArray.size, "WallVC->_entryTbl[].value.as.typeArray.array" );
+													self->_entryTbl[entry_I].value.as.typeArray.size, "WallVC->_entryTbl[].value.as.typeArray.array" );
 					
 				for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
 				{
@@ -372,7 +372,7 @@
 				}
 			}
 			else if( 0 == strcasecmp( valType, "double" ) || 0 == strcasecmp( valType, "d" ) ||
-				0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
+				 0 == strcasecmp( valType, "float" ) || 0 == strcasecmp( valType, "f" ) )
 			{
 				self->_entryTbl[entry_I].value.type = VC_ValueType_Double;
 				self->_entryTbl[entry_I].value.as.typeDouble = Dictionary_Entry_Value_AsDouble( valueEntry );
@@ -443,9 +443,9 @@
 	if (self->_dictionaryEntryName)
 		Journal_Printf( info, "\t\t_dictionaryEntryName: %s\n", self->_dictionaryEntryName);
 	Journal_Printf( info, "\t_wall: %s\n", self->_wall == WallVC_Wall_Front ? "Front" :
-		self->_wall == WallVC_Wall_Back ? "Back" : self->_wall == WallVC_Wall_Left ? "Left" :
-		self->_wall == WallVC_Wall_Right ? "Right" : self->_wall == WallVC_Wall_Top ? "Top" :
-		self->_wall == WallVC_Wall_Bottom ? "Bottom" : "None");
+			self->_wall == WallVC_Wall_Back ? "Back" : self->_wall == WallVC_Wall_Left ? "Left" :
+			self->_wall == WallVC_Wall_Right ? "Right" : self->_wall == WallVC_Wall_Top ? "Top" :
+			self->_wall == WallVC_Wall_Bottom ? "Bottom" : "None");
 	Journal_Printf( info, "\t_entryCount: %u\n", self->_entryCount);
 	Journal_Printf( info, "\t_entryTbl (ptr): %p\n", self->_entryTbl);
 	if (self->_entryTbl)
@@ -458,46 +458,46 @@
 			Journal_Printf( info, "\t\t\tvalue:\n");
 			switch (self->_entryTbl[entry_I].value.type)
 			{
-				case VC_ValueType_Double:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
-					Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
-					break;
+			case VC_ValueType_Double:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Double\n" );
+				Journal_Printf( info, "\t\t\t\tasDouble: %g\n", self->_entryTbl[entry_I].value.as.typeDouble );
+				break;
 					
-				case VC_ValueType_Int:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
-					Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
-					break;
+			case VC_ValueType_Int:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Int\n" );
+				Journal_Printf( info, "\t\t\t\tasInt: %i\n", self->_entryTbl[entry_I].value.as.typeInt );
+				break;
 					
-				case VC_ValueType_Short:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
-					Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
-					break;
+			case VC_ValueType_Short:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Short\n" );
+				Journal_Printf( info, "\t\t\t\tasShort: %i\n", self->_entryTbl[entry_I].value.as.typeShort );
+				break;
 					
-				case VC_ValueType_Char:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
-					Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
-					break;
+			case VC_ValueType_Char:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Char\n");
+				Journal_Printf( info, "\t\t\t\tasChar: %c\n", self->_entryTbl[entry_I].value.as.typeChar );
+				break;
 					
-				case VC_ValueType_Ptr:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
-					Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
-					break;
+			case VC_ValueType_Ptr:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_Ptr\n");
+				Journal_Printf( info, "\t\t\t\tasPtr: %g\n", self->_entryTbl[entry_I].value.as.typePtr );
+				break;
 					
-				case VC_ValueType_DoubleArray:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
-					Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
-					Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
+			case VC_ValueType_DoubleArray:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_DoubleArray\n");
+				Journal_Printf( info, "\t\t\t\tarraySize: %u\n", self->_entryTbl[entry_I].value.as.typeArray.size);
+				Journal_Printf( info, "\t\t\t\tasDoubleArray (ptr): %p\n", 
 						self->_entryTbl[entry_I].value.as.typeArray.array);
-					if (self->_entryTbl[entry_I].value.as.typeArray.array)
-						for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
-							Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
+				if (self->_entryTbl[entry_I].value.as.typeArray.array)
+					for (i = 0; i < self->_entryTbl[entry_I].value.as.typeArray.size; i++)
+						Journal_Printf( info, "\t\t\t\tasDoubleArray[%u]: %g\n", i,
 								self->_entryTbl[entry_I].value.as.typeArray.array[i]);
-					break;
+				break;
 					
-				case VC_ValueType_CFIndex:
-					Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
-					Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
-					break;
+			case VC_ValueType_CFIndex:
+				Journal_Printf( info, "\t\t\t\ttype: VC_ValueType_CFIndex\n");
+				Journal_Printf( info, "\t\t\t\tasCFIndex: %u\n", self->_entryTbl[entry_I].value.as.typeCFIndex);
+				break;
 			}
 		}
 	Journal_Printf( info, "\t_mesh (ptr): %p\n", self->_mesh);
@@ -581,88 +581,93 @@
 IndexSet* _WallVC_GetSet(void* variableCondition)
 {
 	WallVC*		self = (WallVC*)variableCondition;
-	IndexSet	*set = NULL;
-	HexaMD*		hexaMD = (HexaMD*)self->_mesh->layout->decomp;
+	IndexSet*	set = NULL;
 	Stream*		warningStr = Journal_Register( Error_Type, self->type );
+	unsigned	nDims;
+	Grid*		vertGrid;
 
+	nDims = Mesh_GetDimSize( self->_mesh );
+	vertGrid = *(Grid**)ExtensionManager_Get( self->_mesh->info, self->_mesh, 
+						  ExtensionManager_GetHandle( self->_mesh->info, 
+									      "vertexGrid" ) );
 	
 	switch (self->_wall) {
-		case WallVC_Wall_Front:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Front:
+		if ( nDims < 3 || !vertGrid->sizes[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalFrontSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalFrontSet( self->_mesh );
+		}
+		break;
 			
-		case WallVC_Wall_Back:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[K_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Back:
+		if ( nDims < 3 || !vertGrid->sizes[2] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "K" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBackSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBackSet( self->_mesh );
+		}	
+		break;
 			
-		case WallVC_Wall_Top:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Top:
+		if ( nDims < 2 || !vertGrid->sizes[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalTopSet(self->_mesh);
+		}	
+		break;
 			
-		case WallVC_Wall_Bottom:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[J_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Bottom:
+		if ( nDims < 2 || !vertGrid->sizes[1] ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "J" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalBottomSet(self->_mesh);
+		}	
+		break;
 			
-		case WallVC_Wall_Left:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Left:
+		if ( nDims < 1 ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
-			}	
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalLeftSet(self->_mesh);
+		}	
+		break;
 			
-		case WallVC_Wall_Right:
-			if ( 1 == hexaMD->nodeGlobal3DCounts[I_AXIS] ) {
-				Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
+	case WallVC_Wall_Right:
+		if( nDims < 1 ) {
+			Journal_Printf( warningStr, "Warning - in %s: Can't build a %s wall VC "
 					"when mesh has no elements in the %s axis. Returning an empty set.\n", __func__,
 					WallVC_WallEnumToStr[self->_wall], "I" );
-				set = IndexSet_New(hexaMD->nodeDomainCount);	
-			}
-			else {
-				set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
-			}
-			break;
+			set = IndexSet_New( Mesh_GetDomainSize( self->_mesh, MT_VERTEX ) );
+		}
+		else {
+			set = RegularMeshUtils_CreateGlobalRightSet(self->_mesh);
+		}
+		break;
 			
-		case WallVC_Wall_Size:
-		default:
-			assert(0);
-			break;
+	case WallVC_Wall_Size:
+	default:
+		assert(0);
+		break;
 	}
 	
 	return set;
@@ -688,17 +693,17 @@
 	searchedIndex = Variable_Register_GetIndex(self->variable_Register, varName );
 	
 	Journal_Firewall( ( searchedIndex < self->variable_Register->count ), errorStr, "Error- in %s: searching for index of "
-		"varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
-		"count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
+			  "varIndex %u (\"%s\") at global node number %u failed - register returned index %u, greater than "
+			  "count %u.\n", __func__, varIndex, varName, globalIndex, searchedIndex, self->variable_Register->count );
 
 	return searchedIndex; 
 }
 
 
 VariableCondition_ValueIndex _WallVC_GetValueIndex(
-		void*				variableCondition, 
-		Index				globalIndex, 
-		VariableCondition_VariableIndex	varIndex)
+	void*				variableCondition, 
+	Index				globalIndex, 
+	VariableCondition_VariableIndex	varIndex)
 {
 	return varIndex;
 }
@@ -724,12 +729,12 @@
 	
 	Journal_Printf( stream, "\ttype: %s, set: ", self->type );
 	Journal_Printf( stream, "%s\n", 
-		self->_wall == WallVC_Wall_Front ? "Front" :
-		self->_wall == WallVC_Wall_Back ? "Back" : 
-		self->_wall == WallVC_Wall_Left ? "Left" :
-		self->_wall == WallVC_Wall_Right ? "Right" : 
-		self->_wall == WallVC_Wall_Top ? "Top" :
-		self->_wall == WallVC_Wall_Bottom ? "Bottom" : "None" );
+			self->_wall == WallVC_Wall_Front ? "Front" :
+			self->_wall == WallVC_Wall_Back ? "Back" : 
+			self->_wall == WallVC_Wall_Left ? "Left" :
+			self->_wall == WallVC_Wall_Right ? "Right" : 
+			self->_wall == WallVC_Wall_Top ? "Top" :
+			self->_wall == WallVC_Wall_Bottom ? "Bottom" : "None" );
 }
 
 /*--------------------------------------------------------------------------------------------------------------------------

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/types.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/types.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -50,7 +50,7 @@
 	typedef struct _CornerVC			CornerVC;
 	typedef struct ShapeVC				ShapeVC;
 	typedef struct _FrictionVC			FrictionVC;
-	typedef struct _SplitFrictionWallVC		SplitFrictionWallVC;
+	typedef struct SplitFrictionWallVC		SplitFrictionWallVC;
 	typedef struct _DofLayout			DofLayout;
 	typedef struct _EmbeddedSurface			EmbeddedSurface;
 	typedef struct Operator      		Operator;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testAllNodesVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -47,22 +47,46 @@
 }
 
 
-int main(int argc, char *argv[])
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
 {
-	MPI_Comm		CommWorld;
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	gen->shadowDepth = 0;
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
+int main( int argc, char* argv[] )
+{
+	MPI_Comm	CommWorld;
 	int		rank;
 	int		procCount;
 	int		procToWatch;
 	Stream*		stream;
-	
+
 	Dictionary*		dictionary;
 	XML_IO_Handler*		io_handler;
-	
-	Topology*       nTopology;
-	ElementLayout*	eLayout;
-	NodeLayout*	nLayout;
-	MeshDecomp*	decomp;
-	MeshLayout*	layout;
+
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {3, 3, 3};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	Mesh*		mesh;
 	
 	Variable*			var[7];
@@ -75,9 +99,9 @@
 	double*		array[7];
 	char*		vcKey = "AllNodesVC";
 	char*		varName[] = {"x", "y", "z", "vx", "vy", "vz", "temp"};
-	
+	unsigned	nDomains;
 	Index	i, j, k;
-	
+
 	/* Initialise MPI, get world info */
 	MPI_Init(&argc, &argv);
 	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
@@ -102,21 +126,12 @@
 	IO_Handler_ReadAllFromFile(io_handler, "data/allVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);
-	Dictionary_Add(dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt(rank));
-	Dictionary_Add(dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt(procCount));
-	Dictionary_Add(dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool(True));
-	
+
 	extensionMgr_Register = ExtensionManager_Register_New();
 	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	mesh = Mesh_New( "Mesh", layout, 0, 0, extensionMgr_Register, dictionary );
+	/* Create a mesh. */
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	nDomains = Mesh_GetDomainSize( mesh, MT_VERTEX );
 	
 	/* Create CF stuff */
 	quadCF = ConditionFunction_New(quadratic, "quadratic");
@@ -128,12 +143,12 @@
 	
 	/* Create variables */
 	for (i = 0; i < 6; i++) {
-		array[i] = Memory_Alloc_Array( double, decomp->nodeLocalCount, "array[i]" );
-		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &decomp->nodeLocalCount, (void**)&array[i], 0 ); 
+		array[i] = Memory_Alloc_Array( double, nDomains, "array[i]" );
+		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &nDomains, (void**)&array[i], 0 ); 
 		Variable_Register_Add(variable_Register, var[i]);
 	}
-	array[6] = Memory_Alloc_Array( double, decomp->nodeLocalCount*5, "array[6]" );
-	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &decomp->nodeLocalCount, (void**)&array[6], 0 );
+	array[6] = Memory_Alloc_Array( double, nDomains*5, "array[6]" );
+	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &nDomains, (void**)&array[6], 0 );
 	Variable_Register_Add(variable_Register, var[6]);
 	Variable_Register_BuildAll(variable_Register);
 	
@@ -142,8 +157,8 @@
 	Build( vc, 0, False );
 		
 	for (j = 0; j < 6; j++)
-		memset(array[j], 0, sizeof(double)*decomp->nodeLocalCount);
-	memset(array[6], 0, sizeof(double)*decomp->nodeLocalCount*5);
+		memset(array[j], 0, sizeof(double)*nDomains);
+	memset(array[6], 0, sizeof(double)*nDomains*5);
 	VariableCondition_Apply(vc, NULL);
 	
 	if (rank == procToWatch)
@@ -154,17 +169,17 @@
 		for (j = 0; j < 6; j++)
 		{
 			printf("\nvar[%u]: %.2lf", j, array[j][0]);
-			for (k = 1; k < decomp->nodeLocalCount; k++)
+			for (k = 1; k < nDomains; k++)
 				printf(", %.2lf", array[j][k]);
 		}
 		printf("\nvar[6]: %.2lf", array[6][0]);
-		for (j = 1; j < decomp->nodeLocalCount*5; j++)
+		for (j = 1; j < nDomains*5; j++)
 			printf(", %.2lf", array[6][j]);
 		printf("\n\n");
 			
 		for (j = 0; j < 7; j++)
 		{
-			for (k = 0; k < decomp->nodeLocalCount; k++)
+			for (k = 0; k < nDomains; k++)
 				printf("%s ", VariableCondition_IsCondition(vc, k, j) ? "True " : "False");
 			printf("\n");
 		}
@@ -172,7 +187,7 @@
 			
 		for (j = 0; j < 7; j++)
 		{
-			for (k = 0; k < decomp->nodeLocalCount; k++)
+			for (k = 0; k < nDomains; k++)
 			{
 				VariableCondition_ValueIndex	valIndex;
 			
@@ -196,13 +211,8 @@
 		if (array[i]) Memory_Free(array[i]);
 	}
 	Stg_Class_Delete(conFunc_Register);
-	Stg_Class_Delete(quadCF);
-	Stg_Class_Delete(layout);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete(dictionary);
+	FreeObject( mesh );
 	
 	DiscretisationUtils_Finalise();
 	DiscretisationMesh_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC-dictionary.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,6 +53,32 @@
 }
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {0, 1, 1};
+
+	gen = CartesianGenerator_New( "" );
+	gen->shadowDepth = 0;
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
 int main(int argc, char *argv[])
 {
 	MPI_Comm		CommWorld;
@@ -64,14 +90,12 @@
 	Dictionary*		dictionary;
 	XML_IO_Handler*		io_handler;
 	
-	Topology*       nTopology;
-	ElementLayout*	eLayout;
-	NodeLayout*	nLayout;
-	MeshDecomp*	decomp;
-	MeshLayout*	layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {2, 2, 2};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	Mesh*		mesh;
 	
-	
 	Variable*			var[7];
 	Variable_Register*		variable_Register;
 	CompositeVC*			cvc;
@@ -82,6 +106,8 @@
 	
 	double*		array[7];
 	char*		varName[] = {"x", "y", "z", "vx", "vy", "vz", "temp"};
+
+	unsigned	nDomains;
 	
 	Index	i, j, k;
 	
@@ -107,20 +133,12 @@
 	
 	dictionary = Dictionary_New();
 	IO_Handler_ReadAllFromFile(io_handler, "data/compositeVC.xml", dictionary);
-	Dictionary_Add(dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt(rank));
-	Dictionary_Add(dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt(procCount));
-	Dictionary_Add(dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt(3));
-	Dictionary_Add(dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt(3));
-	Dictionary_Add(dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt(3));
 	
 	extensionMgr_Register = ExtensionManager_Register_New();
 	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	mesh = Mesh_New( "Mesh", layout, 0, 0, extensionMgr_Register, dictionary );
+	/* Create a mesh. */
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	nDomains = Mesh_GetDomainSize( mesh, MT_VERTEX );
 	
 	/* Create CF stuff */
 	quadCF = ConditionFunction_New(quadratic, "quadratic");
@@ -135,11 +153,11 @@
 	/* Create variables */
 	for (i = 0; i < 6; i++) {
 		array[i] = Memory_Alloc_Array( double, 3*3*3, "array[i]" );
-		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &decomp->nodeLocalCount, (void**)&array[i], 0 ); 
+		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &nDomains, (void**)&array[i], 0 ); 
 		Variable_Register_Add(variable_Register, var[i]);
 	}
 	array[6] = Memory_Alloc_Array( double, 3*3*3*5, "array[6]" );
-	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &decomp->nodeLocalCount, (void**)&array[6], 0 );
+	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &nDomains, (void**)&array[6], 0 );
 	Variable_Register_Add(variable_Register, var[6]);
 	Variable_Register_BuildAll(variable_Register);
 	
@@ -202,12 +220,8 @@
 	Stg_Class_Delete(conFunc_Register);
 	Stg_Class_Delete(quadCF);
 	Stg_Class_Delete(expCF);
-	Stg_Class_Delete(layout);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete(nTopology);
 	Stg_Class_Delete(dictionary);
+	FreeObject( mesh );
 	
 	DiscretisationUtils_Finalise();
 	DiscretisationMesh_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,15 +1,15 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-CompositeVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
+CompositeVC (ptr): 0x112bf88
+	dictionary (ptr): 0x111df68
 	itemCount: 6
-	itemTbl (ptr): 0x806de98
-		itemTbl[0] (ptr): 0x806b9d8
-		itemTbl[1] (ptr): 0x806c508
-		itemTbl[2] (ptr): 0x806c998
-		itemTbl[3] (ptr): 0x806ccf8
-		itemTbl[4] (ptr): 0x806d278
-		itemTbl[5] (ptr): 0x80634b0
-	iOwnTbl (ptr): 0x8060748
+	itemTbl (ptr): 0x112c298
+		itemTbl[0] (ptr): 0x112c2f8
+		itemTbl[1] (ptr): 0x112cda8
+		itemTbl[2] (ptr): 0x112d228
+		itemTbl[3] (ptr): 0x112d618
+		itemTbl[4] (ptr): 0x112dc78
+		itemTbl[5] (ptr): 0x112e108
+	iOwnTbl (ptr): 0x112c2c8
 		iOwnTbl[0]: True
 		iOwnTbl[1]: True
 		iOwnTbl[2]: True
@@ -18,24 +18,24 @@
 		iOwnTbl[5]: True
 	_size: 8
 	_delta: 8
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+VariableCondition (ptr): 0x112bf88
+Stg_Component (ptr): 0x112bf88
+Stg_Object (ptr): 0x112bf88
+	Stg_Class (ptr): 0x112bf88
 		sizeOfSelf: 204
 		_deleteSelf: Yes
 		type: CompositeVC
-		_delete (func ptr): 0xb7ebef88
-		_print (func ptr): 0xb7ebf057
-		_copy (func ptr): 0xb7ebf244
+		_delete (func ptr): 0x571970
+		_print (func ptr): 0x571a78
+		_copy (func ptr): 0x571c80
 	name: CompositeVC
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7ebe81d
-	_construct (func ptr): 0xb7ebede9
-	_build (func ptr): 0xb7ebf615
-	_initialise (func ptr): 0xb7ebcde2
-	_execute (func ptr): 0xb7ebcea6
-	_destroy (func ptr): 0xb7ebced6
+	_defaultConstructor (func ptr): 0x571088
+	_construct (func ptr): 0x571778
+	_build (func ptr): 0x572090
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -46,17 +46,17 @@
 	initialise function name: CompositeVC-Initialise
 	execute function name: CompositeVC-Execute
 	destroy function name: CompositeVC-Destroy
-	_getSet (func ptr): 0xb7ebf783
-	_getVariableCount (func ptr): 0xb7ebf88a
-	_getVariableIndex (func ptr): 0xb7ebfa1e
-	_getValueIndex (func ptr): 0xb7ebfbda
-	_getValueCount (func ptr): 0xb7ebfde4
-	_getValue (func ptr): 0xb7ebfe58
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x8063960
+	_getSet (func ptr): 0x572250
+	_getVariableCount (func ptr): 0x5723ac
+	_getVariableIndex (func ptr): 0x5725d4
+	_getValueIndex (func ptr): 0x572838
+	_getValueCount (func ptr): 0x572b2c
+	_getValue (func ptr): 0x572bf0
+	variable_Register (ptr): 0x111ec28
+	conFunc_Register (ptr): 0x111ed18
+	_set (ptr): 0x112e6b8
 	indexCount: 28
-	indexTbl (ptr): 0x8063b40
+	indexTbl (ptr): 0x112e898
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
@@ -67,54 +67,54 @@
 		indexTbl[7]: 7
 		indexTbl[8]: 8
 		indexTbl[9]: 9
-		indexTbl[10]: 11
-		indexTbl[11]: 13
-		indexTbl[12]: 14
-		indexTbl[13]: 15
-		indexTbl[14]: 16
-		indexTbl[15]: 17
-		indexTbl[16]: 19
-		indexTbl[17]: 21
-		indexTbl[18]: 22
-		indexTbl[19]: 23
-		indexTbl[20]: 24
-		indexTbl[21]: 25
-		indexTbl[22]: 26
+		indexTbl[10]: 10
+		indexTbl[11]: 11
+		indexTbl[12]: 12
+		indexTbl[13]: 13
+		indexTbl[14]: 14
+		indexTbl[15]: 15
+		indexTbl[16]: 16
+		indexTbl[17]: 17
+		indexTbl[18]: 18
+		indexTbl[19]: 19
+		indexTbl[20]: 20
+		indexTbl[21]: 23
+		indexTbl[22]: 24
 		indexTbl[23]: 27
 		indexTbl[24]: 28
 		indexTbl[25]: 29
 		indexTbl[26]: 30
 		indexTbl[27]: 31
-	vcVarCountTbl (ptr): 0x8063bc0
+	vcVarCountTbl (ptr): 0x112e918
 		vcVarCountTbl[0]: 4
 		vcVarCountTbl[1]: 4
-		vcVarCountTbl[2]: 1
+		vcVarCountTbl[2]: 4
 		vcVarCountTbl[3]: 4
-		vcVarCountTbl[4]: 1
-		vcVarCountTbl[5]: 4
-		vcVarCountTbl[6]: 1
+		vcVarCountTbl[4]: 3
+		vcVarCountTbl[5]: 3
+		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 4
 		vcVarCountTbl[8]: 3
 		vcVarCountTbl[9]: 3
 		vcVarCountTbl[10]: 3
-		vcVarCountTbl[11]: 3
-		vcVarCountTbl[12]: 1
-		vcVarCountTbl[13]: 4
+		vcVarCountTbl[11]: 4
+		vcVarCountTbl[12]: 3
+		vcVarCountTbl[13]: 3
 		vcVarCountTbl[14]: 3
-		vcVarCountTbl[15]: 3
-		vcVarCountTbl[16]: 3
-		vcVarCountTbl[17]: 3
+		vcVarCountTbl[15]: 4
+		vcVarCountTbl[16]: 4
+		vcVarCountTbl[17]: 1
 		vcVarCountTbl[18]: 1
-		vcVarCountTbl[19]: 4
+		vcVarCountTbl[19]: 1
 		vcVarCountTbl[20]: 3
-		vcVarCountTbl[21]: 3
+		vcVarCountTbl[21]: 1
 		vcVarCountTbl[22]: 3
-		vcVarCountTbl[23]: 3
+		vcVarCountTbl[23]: 1
 		vcVarCountTbl[24]: 3
 		vcVarCountTbl[25]: 3
-		vcVarCountTbl[26]: 4
+		vcVarCountTbl[26]: 3
 		vcVarCountTbl[27]: 4
-	vcTbl (ptr): 0x8063c40
+	vcTbl (ptr): 0x3016608
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 3
@@ -132,19 +132,28 @@
 			valIndex: 3
 		vcTbl[1][1]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[1][2]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[1][3]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[2][0]:
 			varIndex: 6
 			valIndex: 3
+		vcTbl[2][1]:
+			varIndex: 3
+			valIndex: 7
+		vcTbl[2][2]:
+			varIndex: 4
+			valIndex: 8
+		vcTbl[2][3]:
+			varIndex: 5
+			valIndex: 9
 		vcTbl[3][0]:
 			varIndex: 6
-			valIndex: 3
+			valIndex: 10
 		vcTbl[3][1]:
 			varIndex: 3
 			valIndex: 7
@@ -155,35 +164,44 @@
 			varIndex: 5
 			valIndex: 9
 		vcTbl[4][0]:
-			varIndex: 6
-			valIndex: 3
+			varIndex: 3
+			valIndex: 11
+		vcTbl[4][1]:
+			varIndex: 4
+			valIndex: 12
+		vcTbl[4][2]:
+			varIndex: 5
+			valIndex: 13
 		vcTbl[5][0]:
-			varIndex: 6
-			valIndex: 3
+			varIndex: 3
+			valIndex: 7
 		vcTbl[5][1]:
+			varIndex: 4
+			valIndex: 8
+		vcTbl[5][2]:
+			varIndex: 5
+			valIndex: 9
+		vcTbl[6][0]:
 			varIndex: 3
 			valIndex: 7
-		vcTbl[5][2]:
+		vcTbl[6][1]:
 			varIndex: 4
 			valIndex: 8
-		vcTbl[5][3]:
+		vcTbl[6][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[6][0]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[7][0]:
-			varIndex: 6
-			valIndex: 10
-		vcTbl[7][1]:
 			varIndex: 3
 			valIndex: 7
-		vcTbl[7][2]:
+		vcTbl[7][1]:
 			varIndex: 4
 			valIndex: 8
-		vcTbl[7][3]:
+		vcTbl[7][2]:
 			varIndex: 5
 			valIndex: 9
+		vcTbl[7][3]:
+			varIndex: 6
+			valIndex: 10
 		vcTbl[8][0]:
 			varIndex: 3
 			valIndex: 11
@@ -195,13 +213,13 @@
 			valIndex: 13
 		vcTbl[9][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[9][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[9][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[10][0]:
 			varIndex: 3
 			valIndex: 7
@@ -220,9 +238,18 @@
 		vcTbl[11][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[12][0]:
+		vcTbl[11][3]:
 			varIndex: 6
 			valIndex: 10
+		vcTbl[12][0]:
+			varIndex: 3
+			valIndex: 11
+		vcTbl[12][1]:
+			varIndex: 4
+			valIndex: 12
+		vcTbl[12][2]:
+			varIndex: 5
+			valIndex: 13
 		vcTbl[13][0]:
 			varIndex: 3
 			valIndex: 7
@@ -232,58 +259,46 @@
 		vcTbl[13][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[13][3]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[14][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[14][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[14][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[15][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[15][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[15][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
+		vcTbl[15][3]:
+			varIndex: 6
+			valIndex: 10
 		vcTbl[16][0]:
+			varIndex: 6
+			valIndex: 3
+		vcTbl[16][1]:
 			varIndex: 3
-			valIndex: 7
-		vcTbl[16][1]:
+			valIndex: 11
+		vcTbl[16][2]:
 			varIndex: 4
-			valIndex: 8
-		vcTbl[16][2]:
+			valIndex: 12
+		vcTbl[16][3]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 13
 		vcTbl[17][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[17][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[17][2]:
-			varIndex: 5
-			valIndex: 9
+			varIndex: 6
+			valIndex: 3
 		vcTbl[18][0]:
 			varIndex: 6
-			valIndex: 10
+			valIndex: 3
 		vcTbl[19][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[19][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[19][2]:
-			varIndex: 5
-			valIndex: 9
-		vcTbl[19][3]:
 			varIndex: 6
 			valIndex: 10
 		vcTbl[20][0]:
@@ -296,50 +311,38 @@
 			varIndex: 5
 			valIndex: 13
 		vcTbl[21][0]:
+			varIndex: 6
+			valIndex: 10
+		vcTbl[22][0]:
 			varIndex: 3
 			valIndex: 11
-		vcTbl[21][1]:
+		vcTbl[22][1]:
 			varIndex: 4
 			valIndex: 12
-		vcTbl[21][2]:
+		vcTbl[22][2]:
 			varIndex: 5
 			valIndex: 13
-		vcTbl[22][0]:
-			varIndex: 3
-			valIndex: 0
-		vcTbl[22][1]:
-			varIndex: 4
-			valIndex: 1
-		vcTbl[22][2]:
-			varIndex: 5
-			valIndex: 2
 		vcTbl[23][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[23][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[23][2]:
-			varIndex: 5
-			valIndex: 9
+			varIndex: 6
+			valIndex: 10
 		vcTbl[24][0]:
 			varIndex: 3
-			valIndex: 0
+			valIndex: 11
 		vcTbl[24][1]:
 			varIndex: 4
-			valIndex: 1
+			valIndex: 12
 		vcTbl[24][2]:
 			varIndex: 5
-			valIndex: 2
+			valIndex: 13
 		vcTbl[25][0]:
 			varIndex: 3
-			valIndex: 7
+			valIndex: 0
 		vcTbl[25][1]:
 			varIndex: 4
-			valIndex: 8
+			valIndex: 1
 		vcTbl[25][2]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 2
 		vcTbl[26][0]:
 			varIndex: 3
 			valIndex: 0
@@ -349,23 +352,20 @@
 		vcTbl[26][2]:
 			varIndex: 5
 			valIndex: 2
-		vcTbl[26][3]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[27][0]:
 			varIndex: 3
-			valIndex: 7
+			valIndex: 0
 		vcTbl[27][1]:
 			varIndex: 4
-			valIndex: 8
+			valIndex: 1
 		vcTbl[27][2]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 2
 		vcTbl[27][3]:
 			varIndex: 6
 			valIndex: 10
 	valueCount: 14
-	valueTbl (ptr): 0x8063f58
+	valueTbl (ptr): 0x112e9d8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -378,7 +378,7 @@
 		valueTbl[3]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806c868
+			asDoubleArray (ptr): 0x112d0c8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -405,7 +405,7 @@
 		valueTbl[10]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806e018
+			asDoubleArray (ptr): 0x112dfb8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -425,24 +425,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 2.00, 30.00, 2.00, 30.00, 2.00, 30.00
-var[4]: 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 3.00, 30.00, 3.00, 30.00, 3.00, 30.00
-var[5]: 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 1.00, 30.00, 1.00, 30.00, 1.00, 30.00
-var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[3]: 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
+var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  True  True  True  True  True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-011 011 XXX 007 XXX 007 XXX 007 011 011 XXX 007 XXX 007 XXX 007 011 011 XXX 007 XXX 007 XXX 007 011 011 000 007 000 007 000 007 
-012 012 XXX 008 XXX 008 XXX 008 012 012 XXX 008 XXX 008 XXX 008 012 012 XXX 008 XXX 008 XXX 008 012 012 001 008 001 008 001 008 
-013 013 XXX 009 XXX 009 XXX 009 013 013 XXX 009 XXX 009 XXX 009 013 013 XXX 009 XXX 009 XXX 009 013 013 002 009 002 009 002 009 
-003 003 003 003 003 003 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 
+011 007 007 007 011 007 007 007 011 007 007 007 011 007 007 007 011 XXX XXX XXX 011 XXX XXX XXX 011 XXX XXX XXX 011 000 000 000 
+012 008 008 008 012 008 008 008 012 008 008 008 012 008 008 008 012 XXX XXX XXX 012 XXX XXX XXX 012 XXX XXX XXX 012 001 001 001 
+013 009 009 009 013 009 009 009 013 009 009 009 013 009 009 009 013 XXX XXX XXX 013 XXX XXX XXX 013 XXX XXX XXX 013 002 002 002 
+003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,15 +1,15 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-CompositeVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
+CompositeVC (ptr): 0x112ddb8
+	dictionary (ptr): 0x111e978
 	itemCount: 6
-	itemTbl (ptr): 0x806de98
-		itemTbl[0] (ptr): 0x806b9d8
-		itemTbl[1] (ptr): 0x806c550
-		itemTbl[2] (ptr): 0x806c990
-		itemTbl[3] (ptr): 0x806ccf0
-		itemTbl[4] (ptr): 0x806d050
-		itemTbl[5] (ptr): 0x806d4c0
-	iOwnTbl (ptr): 0x806dd10
+	itemTbl (ptr): 0x112e0c8
+		itemTbl[0] (ptr): 0x112e128
+		itemTbl[1] (ptr): 0x112ebd8
+		itemTbl[2] (ptr): 0x112f058
+		itemTbl[3] (ptr): 0x112f448
+		itemTbl[4] (ptr): 0x112f828
+		itemTbl[5] (ptr): 0x112fcc8
+	iOwnTbl (ptr): 0x112e0f8
 		iOwnTbl[0]: True
 		iOwnTbl[1]: True
 		iOwnTbl[2]: True
@@ -18,24 +18,24 @@
 		iOwnTbl[5]: True
 	_size: 8
 	_delta: 8
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+VariableCondition (ptr): 0x112ddb8
+Stg_Component (ptr): 0x112ddb8
+Stg_Object (ptr): 0x112ddb8
+	Stg_Class (ptr): 0x112ddb8
 		sizeOfSelf: 204
 		_deleteSelf: Yes
 		type: CompositeVC
-		_delete (func ptr): 0xb7e3bf88
-		_print (func ptr): 0xb7e3c057
-		_copy (func ptr): 0xb7e3c244
+		_delete (func ptr): 0x571970
+		_print (func ptr): 0x571a78
+		_copy (func ptr): 0x571c80
 	name: CompositeVC
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7e3b81d
-	_construct (func ptr): 0xb7e3bde9
-	_build (func ptr): 0xb7e3c615
-	_initialise (func ptr): 0xb7e39de2
-	_execute (func ptr): 0xb7e39ea6
-	_destroy (func ptr): 0xb7e39ed6
+	_defaultConstructor (func ptr): 0x571088
+	_construct (func ptr): 0x571778
+	_build (func ptr): 0x572090
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -46,67 +46,67 @@
 	initialise function name: CompositeVC-Initialise
 	execute function name: CompositeVC-Execute
 	destroy function name: CompositeVC-Destroy
-	_getSet (func ptr): 0xb7e3c783
-	_getVariableCount (func ptr): 0xb7e3c88a
-	_getVariableIndex (func ptr): 0xb7e3ca1e
-	_getValueIndex (func ptr): 0xb7e3cbda
-	_getValueCount (func ptr): 0xb7e3cde4
-	_getValue (func ptr): 0xb7e3ce58
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806da00
+	_getSet (func ptr): 0x572250
+	_getVariableCount (func ptr): 0x5723ac
+	_getVariableIndex (func ptr): 0x5725d4
+	_getValueIndex (func ptr): 0x572838
+	_getValueCount (func ptr): 0x572b2c
+	_getValue (func ptr): 0x572bf0
+	variable_Register (ptr): 0x111f638
+	conFunc_Register (ptr): 0x111f728
+	_set (ptr): 0x1130278
 	indexCount: 24
-	indexTbl (ptr): 0x8063970
+	indexTbl (ptr): 0x1130458
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
 		indexTbl[3]: 3
 		indexTbl[4]: 4
-		indexTbl[5]: 5
-		indexTbl[6]: 6
-		indexTbl[7]: 7
-		indexTbl[8]: 8
-		indexTbl[9]: 9
+		indexTbl[5]: 7
+		indexTbl[6]: 8
+		indexTbl[7]: 11
+		indexTbl[8]: 12
+		indexTbl[9]: 13
 		indexTbl[10]: 14
 		indexTbl[11]: 15
 		indexTbl[12]: 16
 		indexTbl[13]: 17
-		indexTbl[14]: 22
-		indexTbl[15]: 23
-		indexTbl[16]: 24
-		indexTbl[17]: 25
-		indexTbl[18]: 26
+		indexTbl[14]: 18
+		indexTbl[15]: 19
+		indexTbl[16]: 20
+		indexTbl[17]: 23
+		indexTbl[18]: 24
 		indexTbl[19]: 27
 		indexTbl[20]: 28
 		indexTbl[21]: 29
 		indexTbl[22]: 30
 		indexTbl[23]: 31
-	vcVarCountTbl (ptr): 0x80639e0
+	vcVarCountTbl (ptr): 0x11304c8
 		vcVarCountTbl[0]: 4
-		vcVarCountTbl[1]: 4
+		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
 		vcVarCountTbl[3]: 1
-		vcVarCountTbl[4]: 1
+		vcVarCountTbl[4]: 3
 		vcVarCountTbl[5]: 1
-		vcVarCountTbl[6]: 1
+		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 1
 		vcVarCountTbl[8]: 3
 		vcVarCountTbl[9]: 3
-		vcVarCountTbl[10]: 1
-		vcVarCountTbl[11]: 1
-		vcVarCountTbl[12]: 3
-		vcVarCountTbl[13]: 3
+		vcVarCountTbl[10]: 3
+		vcVarCountTbl[11]: 4
+		vcVarCountTbl[12]: 4
+		vcVarCountTbl[13]: 1
 		vcVarCountTbl[14]: 1
 		vcVarCountTbl[15]: 1
 		vcVarCountTbl[16]: 3
-		vcVarCountTbl[17]: 3
+		vcVarCountTbl[17]: 1
 		vcVarCountTbl[18]: 3
-		vcVarCountTbl[19]: 3
+		vcVarCountTbl[19]: 1
 		vcVarCountTbl[20]: 3
 		vcVarCountTbl[21]: 3
-		vcVarCountTbl[22]: 4
+		vcVarCountTbl[22]: 3
 		vcVarCountTbl[23]: 4
-	vcTbl (ptr): 0x8063a50
+	vcTbl (ptr): 0x301ac08
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 3
@@ -122,30 +122,33 @@
 		vcTbl[1][0]:
 			varIndex: 6
 			valIndex: 3
-		vcTbl[1][1]:
+		vcTbl[2][0]:
+			varIndex: 6
+			valIndex: 3
+		vcTbl[3][0]:
+			varIndex: 6
+			valIndex: 10
+		vcTbl[4][0]:
 			varIndex: 3
 			valIndex: 11
-		vcTbl[1][2]:
+		vcTbl[4][1]:
 			varIndex: 4
 			valIndex: 12
-		vcTbl[1][3]:
+		vcTbl[4][2]:
 			varIndex: 5
 			valIndex: 13
-		vcTbl[2][0]:
-			varIndex: 6
-			valIndex: 3
-		vcTbl[3][0]:
-			varIndex: 6
-			valIndex: 3
-		vcTbl[4][0]:
-			varIndex: 6
-			valIndex: 3
 		vcTbl[5][0]:
 			varIndex: 6
-			valIndex: 3
+			valIndex: 10
 		vcTbl[6][0]:
-			varIndex: 6
-			valIndex: 10
+			varIndex: 3
+			valIndex: 11
+		vcTbl[6][1]:
+			varIndex: 4
+			valIndex: 12
+		vcTbl[6][2]:
+			varIndex: 5
+			valIndex: 13
 		vcTbl[7][0]:
 			varIndex: 6
 			valIndex: 10
@@ -160,40 +163,52 @@
 			valIndex: 13
 		vcTbl[9][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 0
 		vcTbl[9][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 1
 		vcTbl[9][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 2
 		vcTbl[10][0]:
-			varIndex: 6
-			valIndex: 10
+			varIndex: 3
+			valIndex: 0
+		vcTbl[10][1]:
+			varIndex: 4
+			valIndex: 1
+		vcTbl[10][2]:
+			varIndex: 5
+			valIndex: 2
 		vcTbl[11][0]:
+			varIndex: 3
+			valIndex: 0
+		vcTbl[11][1]:
+			varIndex: 4
+			valIndex: 1
+		vcTbl[11][2]:
+			varIndex: 5
+			valIndex: 2
+		vcTbl[11][3]:
 			varIndex: 6
 			valIndex: 10
 		vcTbl[12][0]:
+			varIndex: 6
+			valIndex: 3
+		vcTbl[12][1]:
 			varIndex: 3
 			valIndex: 11
-		vcTbl[12][1]:
+		vcTbl[12][2]:
 			varIndex: 4
 			valIndex: 12
-		vcTbl[12][2]:
+		vcTbl[12][3]:
 			varIndex: 5
 			valIndex: 13
 		vcTbl[13][0]:
-			varIndex: 3
-			valIndex: 11
-		vcTbl[13][1]:
-			varIndex: 4
-			valIndex: 12
-		vcTbl[13][2]:
-			varIndex: 5
-			valIndex: 13
+			varIndex: 6
+			valIndex: 3
 		vcTbl[14][0]:
 			varIndex: 6
-			valIndex: 10
+			valIndex: 3
 		vcTbl[15][0]:
 			varIndex: 6
 			valIndex: 10
@@ -207,41 +222,29 @@
 			varIndex: 5
 			valIndex: 13
 		vcTbl[17][0]:
+			varIndex: 6
+			valIndex: 10
+		vcTbl[18][0]:
 			varIndex: 3
 			valIndex: 11
-		vcTbl[17][1]:
+		vcTbl[18][1]:
 			varIndex: 4
 			valIndex: 12
-		vcTbl[17][2]:
+		vcTbl[18][2]:
 			varIndex: 5
 			valIndex: 13
-		vcTbl[18][0]:
-			varIndex: 3
-			valIndex: 0
-		vcTbl[18][1]:
-			varIndex: 4
-			valIndex: 1
-		vcTbl[18][2]:
-			varIndex: 5
-			valIndex: 2
 		vcTbl[19][0]:
-			varIndex: 3
-			valIndex: 0
-		vcTbl[19][1]:
-			varIndex: 4
-			valIndex: 1
-		vcTbl[19][2]:
-			varIndex: 5
-			valIndex: 2
+			varIndex: 6
+			valIndex: 10
 		vcTbl[20][0]:
 			varIndex: 3
-			valIndex: 0
+			valIndex: 11
 		vcTbl[20][1]:
 			varIndex: 4
-			valIndex: 1
+			valIndex: 12
 		vcTbl[20][2]:
 			varIndex: 5
-			valIndex: 2
+			valIndex: 13
 		vcTbl[21][0]:
 			varIndex: 3
 			valIndex: 0
@@ -260,9 +263,6 @@
 		vcTbl[22][2]:
 			varIndex: 5
 			valIndex: 2
-		vcTbl[22][3]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[23][0]:
 			varIndex: 3
 			valIndex: 0
@@ -276,7 +276,7 @@
 			varIndex: 6
 			valIndex: 10
 	valueCount: 14
-	valueTbl (ptr): 0x8063c80
+	valueTbl (ptr): 0x1130578
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -289,7 +289,7 @@
 		valueTbl[3]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806de00
+			asDoubleArray (ptr): 0x112eef8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -316,7 +316,7 @@
 		valueTbl[10]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806d390
+			asDoubleArray (ptr): 0x112fb68
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -336,24 +336,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00
-var[4]: 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00
-var[5]: 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00
-var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
+var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  True  True  True  True  True  True  
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  True  True  True  True  True  True  
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  True  True  True  True  True  True  
-True  True  True  True  True  True  True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-011 011 XXX XXX XXX XXX XXX XXX 011 011 XXX XXX XXX XXX XXX XXX 011 011 XXX XXX XXX XXX XXX XXX 011 011 000 000 000 000 000 000 
-012 012 XXX XXX XXX XXX XXX XXX 012 012 XXX XXX XXX XXX XXX XXX 012 012 XXX XXX XXX XXX XXX XXX 012 012 001 001 001 001 001 001 
-013 013 XXX XXX XXX XXX XXX XXX 013 013 XXX XXX XXX XXX XXX XXX 013 013 XXX XXX XXX XXX XXX XXX 013 013 002 002 002 002 002 002 
-003 003 003 003 003 003 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 
+011 XXX XXX XXX 011 XXX XXX XXX 011 XXX XXX XXX 011 000 000 000 011 XXX XXX XXX 011 XXX XXX XXX 011 XXX XXX XXX 011 000 000 000 
+012 XXX XXX XXX 012 XXX XXX XXX 012 XXX XXX XXX 012 001 001 001 012 XXX XXX XXX 012 XXX XXX XXX 012 XXX XXX XXX 012 001 001 001 
+013 XXX XXX XXX 013 XXX XXX XXX 013 XXX XXX XXX 013 002 002 002 013 XXX XXX XXX 013 XXX XXX XXX 013 XXX XXX XXX 013 002 002 002 
+003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,15 +1,15 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
-CompositeVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
+CompositeVC (ptr): 0x112ced8
+	dictionary (ptr): 0x111e978
 	itemCount: 6
-	itemTbl (ptr): 0x806de98
-		itemTbl[0] (ptr): 0x806b9d8
-		itemTbl[1] (ptr): 0x806c508
-		itemTbl[2] (ptr): 0x806c998
-		itemTbl[3] (ptr): 0x806ccf8
-		itemTbl[4] (ptr): 0x806d278
-		itemTbl[5] (ptr): 0x8063490
-	iOwnTbl (ptr): 0x806e378
+	itemTbl (ptr): 0x112d1e8
+		itemTbl[0] (ptr): 0x112d248
+		itemTbl[1] (ptr): 0x112dcf8
+		itemTbl[2] (ptr): 0x112e178
+		itemTbl[3] (ptr): 0x112e568
+		itemTbl[4] (ptr): 0x112ebc8
+		itemTbl[5] (ptr): 0x112f058
+	iOwnTbl (ptr): 0x112d218
 		iOwnTbl[0]: True
 		iOwnTbl[1]: True
 		iOwnTbl[2]: True
@@ -18,24 +18,24 @@
 		iOwnTbl[5]: True
 	_size: 8
 	_delta: 8
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+VariableCondition (ptr): 0x112ced8
+Stg_Component (ptr): 0x112ced8
+Stg_Object (ptr): 0x112ced8
+	Stg_Class (ptr): 0x112ced8
 		sizeOfSelf: 204
 		_deleteSelf: Yes
 		type: CompositeVC
-		_delete (func ptr): 0xb7e72f88
-		_print (func ptr): 0xb7e73057
-		_copy (func ptr): 0xb7e73244
+		_delete (func ptr): 0x571970
+		_print (func ptr): 0x571a78
+		_copy (func ptr): 0x571c80
 	name: CompositeVC
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7e7281d
-	_construct (func ptr): 0xb7e72de9
-	_build (func ptr): 0xb7e73615
-	_initialise (func ptr): 0xb7e70de2
-	_execute (func ptr): 0xb7e70ea6
-	_destroy (func ptr): 0xb7e70ed6
+	_defaultConstructor (func ptr): 0x571088
+	_construct (func ptr): 0x571778
+	_build (func ptr): 0x572090
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -46,17 +46,17 @@
 	initialise function name: CompositeVC-Initialise
 	execute function name: CompositeVC-Execute
 	destroy function name: CompositeVC-Destroy
-	_getSet (func ptr): 0xb7e73783
-	_getVariableCount (func ptr): 0xb7e7388a
-	_getVariableIndex (func ptr): 0xb7e73a1e
-	_getValueIndex (func ptr): 0xb7e73bda
-	_getValueCount (func ptr): 0xb7e73de4
-	_getValue (func ptr): 0xb7e73e58
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x8063980
+	_getSet (func ptr): 0x572250
+	_getVariableCount (func ptr): 0x5723ac
+	_getVariableIndex (func ptr): 0x5725d4
+	_getValueIndex (func ptr): 0x572838
+	_getValueCount (func ptr): 0x572b2c
+	_getValue (func ptr): 0x572bf0
+	variable_Register (ptr): 0x111f638
+	conFunc_Register (ptr): 0x111f728
+	_set (ptr): 0x112f608
 	indexCount: 28
-	indexTbl (ptr): 0x8063b60
+	indexTbl (ptr): 0x112f7e8
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
@@ -67,54 +67,54 @@
 		indexTbl[7]: 7
 		indexTbl[8]: 8
 		indexTbl[9]: 9
-		indexTbl[10]: 11
-		indexTbl[11]: 13
-		indexTbl[12]: 14
-		indexTbl[13]: 15
-		indexTbl[14]: 16
-		indexTbl[15]: 17
-		indexTbl[16]: 19
-		indexTbl[17]: 21
-		indexTbl[18]: 22
-		indexTbl[19]: 23
-		indexTbl[20]: 24
-		indexTbl[21]: 25
-		indexTbl[22]: 26
+		indexTbl[10]: 10
+		indexTbl[11]: 11
+		indexTbl[12]: 12
+		indexTbl[13]: 13
+		indexTbl[14]: 14
+		indexTbl[15]: 15
+		indexTbl[16]: 16
+		indexTbl[17]: 17
+		indexTbl[18]: 18
+		indexTbl[19]: 19
+		indexTbl[20]: 20
+		indexTbl[21]: 23
+		indexTbl[22]: 24
 		indexTbl[23]: 27
 		indexTbl[24]: 28
 		indexTbl[25]: 29
 		indexTbl[26]: 30
 		indexTbl[27]: 31
-	vcVarCountTbl (ptr): 0x8063be0
+	vcVarCountTbl (ptr): 0x112f868
 		vcVarCountTbl[0]: 4
 		vcVarCountTbl[1]: 4
-		vcVarCountTbl[2]: 1
+		vcVarCountTbl[2]: 4
 		vcVarCountTbl[3]: 4
-		vcVarCountTbl[4]: 1
-		vcVarCountTbl[5]: 4
-		vcVarCountTbl[6]: 1
+		vcVarCountTbl[4]: 3
+		vcVarCountTbl[5]: 3
+		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 4
 		vcVarCountTbl[8]: 3
 		vcVarCountTbl[9]: 3
 		vcVarCountTbl[10]: 3
-		vcVarCountTbl[11]: 3
-		vcVarCountTbl[12]: 1
-		vcVarCountTbl[13]: 4
+		vcVarCountTbl[11]: 4
+		vcVarCountTbl[12]: 3
+		vcVarCountTbl[13]: 3
 		vcVarCountTbl[14]: 3
-		vcVarCountTbl[15]: 3
-		vcVarCountTbl[16]: 3
-		vcVarCountTbl[17]: 3
+		vcVarCountTbl[15]: 4
+		vcVarCountTbl[16]: 4
+		vcVarCountTbl[17]: 1
 		vcVarCountTbl[18]: 1
-		vcVarCountTbl[19]: 4
+		vcVarCountTbl[19]: 1
 		vcVarCountTbl[20]: 3
-		vcVarCountTbl[21]: 3
+		vcVarCountTbl[21]: 1
 		vcVarCountTbl[22]: 3
-		vcVarCountTbl[23]: 3
+		vcVarCountTbl[23]: 1
 		vcVarCountTbl[24]: 3
 		vcVarCountTbl[25]: 3
-		vcVarCountTbl[26]: 4
+		vcVarCountTbl[26]: 3
 		vcVarCountTbl[27]: 4
-	vcTbl (ptr): 0x8063c60
+	vcTbl (ptr): 0x301ac08
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 3
@@ -132,19 +132,28 @@
 			valIndex: 3
 		vcTbl[1][1]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[1][2]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[1][3]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[2][0]:
 			varIndex: 6
 			valIndex: 3
+		vcTbl[2][1]:
+			varIndex: 3
+			valIndex: 7
+		vcTbl[2][2]:
+			varIndex: 4
+			valIndex: 8
+		vcTbl[2][3]:
+			varIndex: 5
+			valIndex: 9
 		vcTbl[3][0]:
 			varIndex: 6
-			valIndex: 3
+			valIndex: 10
 		vcTbl[3][1]:
 			varIndex: 3
 			valIndex: 7
@@ -155,35 +164,44 @@
 			varIndex: 5
 			valIndex: 9
 		vcTbl[4][0]:
-			varIndex: 6
-			valIndex: 3
+			varIndex: 3
+			valIndex: 11
+		vcTbl[4][1]:
+			varIndex: 4
+			valIndex: 12
+		vcTbl[4][2]:
+			varIndex: 5
+			valIndex: 13
 		vcTbl[5][0]:
-			varIndex: 6
-			valIndex: 3
+			varIndex: 3
+			valIndex: 7
 		vcTbl[5][1]:
+			varIndex: 4
+			valIndex: 8
+		vcTbl[5][2]:
+			varIndex: 5
+			valIndex: 9
+		vcTbl[6][0]:
 			varIndex: 3
 			valIndex: 7
-		vcTbl[5][2]:
+		vcTbl[6][1]:
 			varIndex: 4
 			valIndex: 8
-		vcTbl[5][3]:
+		vcTbl[6][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[6][0]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[7][0]:
-			varIndex: 6
-			valIndex: 10
-		vcTbl[7][1]:
 			varIndex: 3
 			valIndex: 7
-		vcTbl[7][2]:
+		vcTbl[7][1]:
 			varIndex: 4
 			valIndex: 8
-		vcTbl[7][3]:
+		vcTbl[7][2]:
 			varIndex: 5
 			valIndex: 9
+		vcTbl[7][3]:
+			varIndex: 6
+			valIndex: 10
 		vcTbl[8][0]:
 			varIndex: 3
 			valIndex: 11
@@ -195,13 +213,13 @@
 			valIndex: 13
 		vcTbl[9][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[9][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[9][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[10][0]:
 			varIndex: 3
 			valIndex: 7
@@ -220,9 +238,18 @@
 		vcTbl[11][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[12][0]:
+		vcTbl[11][3]:
 			varIndex: 6
 			valIndex: 10
+		vcTbl[12][0]:
+			varIndex: 3
+			valIndex: 11
+		vcTbl[12][1]:
+			varIndex: 4
+			valIndex: 12
+		vcTbl[12][2]:
+			varIndex: 5
+			valIndex: 13
 		vcTbl[13][0]:
 			varIndex: 3
 			valIndex: 7
@@ -232,58 +259,46 @@
 		vcTbl[13][2]:
 			varIndex: 5
 			valIndex: 9
-		vcTbl[13][3]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[14][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[14][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[14][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
 		vcTbl[15][0]:
 			varIndex: 3
-			valIndex: 11
+			valIndex: 7
 		vcTbl[15][1]:
 			varIndex: 4
-			valIndex: 12
+			valIndex: 8
 		vcTbl[15][2]:
 			varIndex: 5
-			valIndex: 13
+			valIndex: 9
+		vcTbl[15][3]:
+			varIndex: 6
+			valIndex: 10
 		vcTbl[16][0]:
+			varIndex: 6
+			valIndex: 3
+		vcTbl[16][1]:
 			varIndex: 3
-			valIndex: 7
-		vcTbl[16][1]:
+			valIndex: 11
+		vcTbl[16][2]:
 			varIndex: 4
-			valIndex: 8
-		vcTbl[16][2]:
+			valIndex: 12
+		vcTbl[16][3]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 13
 		vcTbl[17][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[17][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[17][2]:
-			varIndex: 5
-			valIndex: 9
+			varIndex: 6
+			valIndex: 3
 		vcTbl[18][0]:
 			varIndex: 6
-			valIndex: 10
+			valIndex: 3
 		vcTbl[19][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[19][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[19][2]:
-			varIndex: 5
-			valIndex: 9
-		vcTbl[19][3]:
 			varIndex: 6
 			valIndex: 10
 		vcTbl[20][0]:
@@ -296,50 +311,38 @@
 			varIndex: 5
 			valIndex: 13
 		vcTbl[21][0]:
+			varIndex: 6
+			valIndex: 10
+		vcTbl[22][0]:
 			varIndex: 3
 			valIndex: 11
-		vcTbl[21][1]:
+		vcTbl[22][1]:
 			varIndex: 4
 			valIndex: 12
-		vcTbl[21][2]:
+		vcTbl[22][2]:
 			varIndex: 5
 			valIndex: 13
-		vcTbl[22][0]:
-			varIndex: 3
-			valIndex: 0
-		vcTbl[22][1]:
-			varIndex: 4
-			valIndex: 1
-		vcTbl[22][2]:
-			varIndex: 5
-			valIndex: 2
 		vcTbl[23][0]:
-			varIndex: 3
-			valIndex: 7
-		vcTbl[23][1]:
-			varIndex: 4
-			valIndex: 8
-		vcTbl[23][2]:
-			varIndex: 5
-			valIndex: 9
+			varIndex: 6
+			valIndex: 10
 		vcTbl[24][0]:
 			varIndex: 3
-			valIndex: 0
+			valIndex: 11
 		vcTbl[24][1]:
 			varIndex: 4
-			valIndex: 1
+			valIndex: 12
 		vcTbl[24][2]:
 			varIndex: 5
-			valIndex: 2
+			valIndex: 13
 		vcTbl[25][0]:
 			varIndex: 3
-			valIndex: 7
+			valIndex: 0
 		vcTbl[25][1]:
 			varIndex: 4
-			valIndex: 8
+			valIndex: 1
 		vcTbl[25][2]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 2
 		vcTbl[26][0]:
 			varIndex: 3
 			valIndex: 0
@@ -349,23 +352,20 @@
 		vcTbl[26][2]:
 			varIndex: 5
 			valIndex: 2
-		vcTbl[26][3]:
-			varIndex: 6
-			valIndex: 10
 		vcTbl[27][0]:
 			varIndex: 3
-			valIndex: 7
+			valIndex: 0
 		vcTbl[27][1]:
 			varIndex: 4
-			valIndex: 8
+			valIndex: 1
 		vcTbl[27][2]:
 			varIndex: 5
-			valIndex: 9
+			valIndex: 2
 		vcTbl[27][3]:
 			varIndex: 6
 			valIndex: 10
 	valueCount: 14
-	valueTbl (ptr): 0x8063f78
+	valueTbl (ptr): 0x112f928
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -378,7 +378,7 @@
 		valueTbl[3]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806c868
+			asDoubleArray (ptr): 0x112e018
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -405,7 +405,7 @@
 		valueTbl[10]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806e068
+			asDoubleArray (ptr): 0x112ef08
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -425,24 +425,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 2.00, 2.00, 2.00, 30.00, 2.00, 30.00, 2.00, 30.00
-var[4]: 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 3.00, 3.00, 3.00, 30.00, 3.00, 30.00, 3.00, 30.00
-var[5]: 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 1.00, 1.00, 1.00, 30.00, 1.00, 30.00, 1.00, 30.00
-var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[3]: 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 30.00, 30.00, 30.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 30.00, 30.00, 30.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 30.00, 30.00, 30.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
+var[7]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  False True  False True  False True  True  True  True  True  True  True  True  True  
-True  True  True  True  True  True  True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False True  False False False True  False False False True  True  True  True  
+True  True  True  True  False False False True  False False False True  False False False True  True  True  True  True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-011 011 XXX 007 XXX 007 XXX 007 011 011 XXX 007 XXX 007 XXX 007 011 011 XXX 007 XXX 007 XXX 007 011 011 000 007 000 007 000 007 
-012 012 XXX 008 XXX 008 XXX 008 012 012 XXX 008 XXX 008 XXX 008 012 012 XXX 008 XXX 008 XXX 008 012 012 001 008 001 008 001 008 
-013 013 XXX 009 XXX 009 XXX 009 013 013 XXX 009 XXX 009 XXX 009 013 013 XXX 009 XXX 009 XXX 009 013 013 002 009 002 009 002 009 
-003 003 003 003 003 003 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 XXX XXX XXX XXX XXX XXX 010 010 
+011 007 007 007 011 007 007 007 011 007 007 007 011 007 007 007 011 XXX XXX XXX 011 XXX XXX XXX 011 XXX XXX XXX 011 000 000 000 
+012 008 008 008 012 008 008 008 012 008 008 008 012 008 008 008 012 XXX XXX XXX 012 XXX XXX XXX 012 XXX XXX XXX 012 001 001 001 
+013 009 009 009 013 009 009 009 013 009 009 009 013 009 009 009 013 XXX XXX XXX 013 XXX XXX XXX 013 XXX XXX XXX 013 002 002 002 
+003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 003 003 003 010 XXX XXX XXX 010 XXX XXX XXX 010 XXX XXX XXX 010 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCompositeVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,6 +53,32 @@
 }
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {0, 1, 1};
+
+	gen = CartesianGenerator_New( "" );
+	gen->shadowDepth = 0;
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
 int main(int argc, char *argv[])
 {
 	MPI_Comm		CommWorld;
@@ -64,11 +90,10 @@
 	Dictionary*		dictionary;
 	XML_IO_Handler*		io_handler;
 	
-	Topology*       nTopology;
-	ElementLayout*	eLayout;
-	NodeLayout*	nLayout;
-	MeshDecomp*	decomp;
-	MeshLayout*	layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {3, 3, 3};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	Mesh*		mesh;
 	
 	Variable*			var[7];
@@ -86,6 +111,8 @@
 	char*		vcKeyName[] = {"WallVC_FrontName", "WallVC_BackName", "WallVC_LeftName", "WallVC_RightName",
 				"WallVC_TopName", "WallVC_BottomName"};
 	char*		varName[] = {"x", "y", "z", "vx", "vy", "vz", "temp"};
+
+	unsigned	nDomains;
 	
 	Index	i, j, k;
 	
@@ -111,21 +138,12 @@
 	
 	dictionary = Dictionary_New();
 	IO_Handler_ReadAllFromFile(io_handler, "data/wallVC.xml", dictionary);
-	Dictionary_Add(dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt(rank));
-	Dictionary_Add(dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt(procCount));
-	Dictionary_Add(dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool(True));
 
 	extensionMgr_Register = ExtensionManager_Register_New();
 	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	mesh = Mesh_New( "Mesh", layout, 0, 0, extensionMgr_Register, dictionary );
+	/* Create a mesh. */
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	nDomains = Mesh_GetDomainSize( mesh, MT_VERTEX );
 	
 	/* Create CF stuff */
 	quadCF = ConditionFunction_New(quadratic, "quadratic");
@@ -139,12 +157,12 @@
 	
 	/* Create variables */
 	for (i = 0; i < 6; i++) {
-		array[i] = Memory_Alloc_Array( double, decomp->nodeLocalCount, "array[i]" );
-		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &decomp->nodeLocalCount, (void**)&array[i], 0 ); 
+		array[i] = Memory_Alloc_Array( double, nDomains, "array[i]" );
+		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &nDomains, (void**)&array[i], 0 ); 
 		Variable_Register_Add(variable_Register, var[i]);
 	}
-	array[6] = Memory_Alloc_Array( double, decomp->nodeLocalCount*5, "array[6]" );
-	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &decomp->nodeLocalCount, (void**)&array[6], 0 );
+	array[6] = Memory_Alloc_Array( double, nDomains*5, "array[6]" );
+	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &nDomains, (void**)&array[6], 0 );
 	Variable_Register_Add(variable_Register, var[6]);
 	Variable_Register_BuildAll(variable_Register);
 	
@@ -161,8 +179,8 @@
 	Build( cvc, 0, False );
 	
 	for (j = 0; j < 6; j++)
-		memset(array[j], 0, sizeof(double)*decomp->nodeLocalCount);
-	memset(array[6], 0, sizeof(double)*decomp->nodeLocalCount*5);
+		memset(array[j], 0, sizeof(double)*nDomains);
+	memset(array[6], 0, sizeof(double)*nDomains*5);
 	VariableCondition_Apply(cvc, NULL);
 	
 	if (rank == procToWatch)
@@ -172,17 +190,17 @@
 		for (j = 0; j < 6; j++)
 		{
 			printf("\nvar[%u]: %.2lf", j, array[j][0]);
-			for (k = 1; k < decomp->nodeLocalCount; k++)
+			for (k = 1; k < nDomains; k++)
 				printf(", %.2lf", array[j][k]);
 		}
 		printf("\nvar[7]: %.2lf", array[6][0]);
-		for (j = 1; j < decomp->nodeLocalCount*5; j++)
+		for (j = 1; j < nDomains*5; j++)
 			printf(", %.2lf", array[6][j]);
 		printf("\n\n");
 			
 		for (j = 0; j < 7; j++)
 		{
-			for (k = 0; k < decomp->nodeLocalCount; k++)
+			for (k = 0; k < nDomains; k++)
 				printf("%s ", VariableCondition_IsCondition(cvc, k, j) ? "True " : "False");
 			printf("\n");
 		}
@@ -190,7 +208,7 @@
 			
 		for (j = 0; j < 7; j++)
 		{
-			for (k = 0; k < decomp->nodeLocalCount; k++)
+			for (k = 0; k < nDomains; k++)
 			{
 				VariableCondition_ValueIndex	valIndex;
 				
@@ -215,12 +233,8 @@
 	Stg_Class_Delete(conFunc_Register);
 	Stg_Class_Delete(quadCF);
 	Stg_Class_Delete(expCF);
-	Stg_Class_Delete(layout);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete(dictionary);
+	FreeObject( mesh );
 	
 	DiscretisationUtils_Finalise();
 	DiscretisationMesh_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,49 +1,49 @@
-StGermain Framework revision 3819. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Testing for CornerVC_BottomLeftFront
-CornerVC (ptr): 0x8065288
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d18
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e1c
 		_dictionaryEntryName: CornerVC_BottomLeftFront
 	_corner: BottomLeftFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x112d638
 		_entryTbl[0]:
-			varName (ptr): 0x8068618
+			varName (ptr): 0x1127878
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068648
+			varName (ptr): 0x1127a28
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x80687d0
+			varName (ptr): 0x1127bd8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x8065288
-Stg_Component (ptr): 0x8065288
-Stg_Object (ptr): 0x8065288
-	Stg_Class (ptr): 0x8065288
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_BottomLeftFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -54,21 +54,21 @@
 	initialise function name: CornerVC_BottomLeftFrontName-Initialise
 	execute function name: CornerVC_BottomLeftFrontName-Execute
 	destroy function name: CornerVC_BottomLeftFrontName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070eb8
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112d678
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x80704d8
+	valueTbl (ptr): 0x112d848
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -103,50 +103,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomRightFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d31
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e38
 		_dictionaryEntryName: CornerVC_BottomRightFront
 	_corner: BottomRightFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x112d388
 		_entryTbl[0]:
-			varName (ptr): 0x8068558
+			varName (ptr): 0x111e978
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805f198
+			varName (ptr): 0x11272c8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805f1a8
+			varName (ptr): 0x1127478
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_BottomRightFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -157,21 +157,21 @@
 	initialise function name: CornerVC_BottomRightFrontName-Initialise
 	execute function name: CornerVC_BottomRightFrontName-Execute
 	destroy function name: CornerVC_BottomRightFrontName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070fa0
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112dc48
 	indexCount: 1
-	indexTbl (ptr): 0x8068370
-		indexTbl[0]: 25
-	vcVarCountTbl (ptr): 0x8066ee0
+	indexTbl (ptr): 0x112d428
+		indexTbl[0]: 12
+	vcVarCountTbl (ptr): 0x112d3c8
 		vcVarCountTbl[0]: 3
-	vcTbl (ptr): 0x806c4b0
+	vcTbl (ptr): 0x112dc88
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -182,7 +182,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x80704d8
+	valueTbl (ptr): 0x112dcb8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -197,70 +197,70 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopLeftFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d4b
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e54
 		_dictionaryEntryName: CornerVC_TopLeftFront
 	_corner: TopLeftFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x112d848
 		_entryTbl[0]:
-			varName (ptr): 0x8066380
+			varName (ptr): 0x1128708
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8066770
+			varName (ptr): 0x11288b8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8066930
+			varName (ptr): 0x1128a68
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_TopLeftFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -271,21 +271,21 @@
 	initialise function name: CornerVC_TopLeftFrontName-Initialise
 	execute function name: CornerVC_TopLeftFrontName-Execute
 	destroy function name: CornerVC_TopLeftFrontName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x80709d8
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112d388
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x8068c00
+	valueTbl (ptr): 0x112dce8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -320,50 +320,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopRightFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d61
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e6c
 		_dictionaryEntryName: CornerVC_TopRightFront
 	_corner: TopRightFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x112d388
 		_entryTbl[0]:
-			varName (ptr): 0x805f418
+			varName (ptr): 0x1127fb8
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805f808
+			varName (ptr): 0x1128168
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805f9c8
+			varName (ptr): 0x1128318
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_TopRightFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -374,21 +374,21 @@
 	initialise function name: CornerVC_TopRightFrontName-Initialise
 	execute function name: CornerVC_TopRightFrontName-Execute
 	destroy function name: CornerVC_TopRightFrontName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112dd18
 	indexCount: 1
-	indexTbl (ptr): 0x8068370
-		indexTbl[0]: 31
-	vcVarCountTbl (ptr): 0x80683a0
+	indexTbl (ptr): 0x112d428
+		indexTbl[0]: 15
+	vcVarCountTbl (ptr): 0x112d3c8
 		vcVarCountTbl[0]: 3
-	vcTbl (ptr): 0x80708f0
+	vcTbl (ptr): 0x112dd58
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -399,7 +399,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x8068c00
+	valueTbl (ptr): 0x112dd88
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -414,58 +414,58 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomLeftBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d78
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e84
 		_dictionaryEntryName: CornerVC_BottomLeftBack
 	_corner: BottomLeftBack
 	_entryCount: 1
-	_entryTbl (ptr): 0x80705e8
+	_entryTbl (ptr): 0x111ed48
 		_entryTbl[0]:
-			varName (ptr): 0x8067598
+			varName (ptr): 0x1128e58
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_BottomLeftBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -476,21 +476,21 @@
 	initialise function name: CornerVC_BottomLeftBackName-Initialise
 	execute function name: CornerVC_BottomLeftBackName-Execute
 	destroy function name: CornerVC_BottomLeftBackName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112d388
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 1
-	valueTbl (ptr): 0x8063a50
+	valueTbl (ptr): 0x112d848
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 3
@@ -519,56 +519,56 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomRightBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d90
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3e9c
 		_dictionaryEntryName: CornerVC_BottomRightBack
 	_corner: BottomRightBack
 	_entryCount: 4
-	_entryTbl (ptr): 0x806c500
+	_entryTbl (ptr): 0x112d388
 		_entryTbl[0]:
-			varName (ptr): 0x80670a0
+			varName (ptr): 0x1129268
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068548
+			varName (ptr): 0x1129418
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8066af0
+			varName (ptr): 0x11295c8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
 		_entryTbl[3]:
-			varName (ptr): 0x8067ed0
+			varName (ptr): 0x1129778
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_BottomRightBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -579,21 +579,21 @@
 	initialise function name: CornerVC_BottomRightBackName-Initialise
 	execute function name: CornerVC_BottomRightBackName-Execute
 	destroy function name: CornerVC_BottomRightBackName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112dcf8
 	indexCount: 1
-	indexTbl (ptr): 0x8068370
-		indexTbl[0]: 1
-	vcVarCountTbl (ptr): 0x8066ee0
+	indexTbl (ptr): 0x112d6a8
+		indexTbl[0]: 0
+	vcVarCountTbl (ptr): 0x112d428
 		vcVarCountTbl[0]: 4
-	vcTbl (ptr): 0x80704d8
+	vcTbl (ptr): 0x112ddb8
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -607,7 +607,7 @@
 			varIndex: 6
 			valIndex: 3
 	valueCount: 4
-	valueTbl (ptr): 0x8071088
+	valueTbl (ptr): 0x112dde8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -625,76 +625,76 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopLeftBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049da9
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3eb8
 		_dictionaryEntryName: CornerVC_TopLeftBack
 	_corner: TopLeftBack
 	_entryCount: 4
-	_entryTbl (ptr): 0x806b308
+	_entryTbl (ptr): 0x112d388
 		_entryTbl[0]:
-			varName (ptr): 0x8067260
+			varName (ptr): 0x1129f48
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8067a48
+			varName (ptr): 0x112a0f8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8067c08
+			varName (ptr): 0x112a2a8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
 		_entryTbl[3]:
-			varName (ptr): 0x8060490
+			varName (ptr): 0x112a458
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 6
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_TopLeftBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -705,21 +705,21 @@
 	initialise function name: CornerVC_TopLeftBackName-Initialise
 	execute function name: CornerVC_TopLeftBackName-Execute
 	destroy function name: CornerVC_TopLeftBackName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8071088
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112dde8
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 4
-	valueTbl (ptr): 0x8070c98
+	valueTbl (ptr): 0x112de28
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -757,38 +757,38 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopRightBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049dbe
+CornerVC (ptr): 0x112d0b8
+	dictionary (ptr): 0x111df48
+	_dictionaryEntryName (ptr): 0x3ed0
 		_dictionaryEntryName: CornerVC_TopRightBack
 	_corner: TopRightBack
 	_entryCount: 1
-	_entryTbl (ptr): 0x8070dc8
+	_entryTbl (ptr): 0x112d388
 		_entryTbl[0]:
-			varName (ptr): 0x80682c8
+			varName (ptr): 0x1129b58
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062718
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x111eeb8
+VariableCondition (ptr): 0x112d0b8
+Stg_Component (ptr): 0x112d0b8
+Stg_Object (ptr): 0x112d0b8
+	Stg_Class (ptr): 0x112d0b8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7f0bbed
-		_print (func ptr): 0xb7f0bc33
-		_copy (func ptr): 0xb7f0c228
+		_delete (func ptr): 0x20ec58
+		_print (func ptr): 0x20ecb4
+		_copy (func ptr): 0x20f330
 	name: CornerVC_TopRightBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f0ae38
-	_construct (func ptr): 0xb7f0c43d
-	_build (func ptr): 0xb7f0c3fb
-	_initialise (func ptr): 0xb7e0a502
-	_execute (func ptr): 0xb7e0a5c9
-	_destroy (func ptr): 0xb7e0a5f9
+	_defaultConstructor (func ptr): 0x20dc84
+	_construct (func ptr): 0x20f574
+	_build (func ptr): 0x20f524
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -799,26 +799,26 @@
 	initialise function name: CornerVC_TopRightBackName-Initialise
 	execute function name: CornerVC_TopRightBackName-Execute
 	destroy function name: CornerVC_TopRightBackName-Destroy
-	_getSet (func ptr): 0xb7f0c48c
-	_getVariableCount (func ptr): 0xb7f0caaf
-	_getVariableIndex (func ptr): 0xb7f0cac6
-	_getValueIndex (func ptr): 0xb7f0cba1
-	_getValueCount (func ptr): 0xb7f0cba9
-	_getValue (func ptr): 0xb7f0cbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20f5f4
+	_getVariableCount (func ptr): 0x210220
+	_getVariableIndex (func ptr): 0x210254
+	_getValueIndex (func ptr): 0x210360
+	_getValueCount (func ptr): 0x21038c
+	_getValue (func ptr): 0x2103bc
+	variable_Register (ptr): 0x111ec48
+	conFunc_Register (ptr): 0x111dfa8
+	_set (ptr): 0x112d2d8
 	indexCount: 1
-	indexTbl (ptr): 0x8068370
-		indexTbl[0]: 7
-	vcVarCountTbl (ptr): 0x80683a0
+	indexTbl (ptr): 0x112d6a8
+		indexTbl[0]: 3
+	vcVarCountTbl (ptr): 0x112dd48
 		vcVarCountTbl[0]: 1
-	vcTbl (ptr): 0x8063a50
+	vcTbl (ptr): 0x112d3a8
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x8068f40
+	valueTbl (ptr): 0x112d3c8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 3
@@ -830,7 +830,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,49 +1,49 @@
-StGermain Framework revision 3819. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3900. Copyright (C) 2003-2005 VPAC.
 Testing for CornerVC_BottomLeftFront
-CornerVC (ptr): 0x80652b0
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d18
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3e3c
 		_dictionaryEntryName: CornerVC_BottomLeftFront
 	_corner: BottomLeftFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x12303b8
 		_entryTbl[0]:
-			varName (ptr): 0x8068618
+			varName (ptr): 0x12280f8
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068648
+			varName (ptr): 0x12282a8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x80687d0
+			varName (ptr): 0x1228458
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x80652b0
-Stg_Component (ptr): 0x80652b0
-Stg_Object (ptr): 0x80652b0
-	Stg_Class (ptr): 0x80652b0
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_BottomLeftFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -54,21 +54,21 @@
 	initialise function name: CornerVC_BottomLeftFrontName-Initialise
 	execute function name: CornerVC_BottomLeftFrontName-Execute
 	destroy function name: CornerVC_BottomLeftFrontName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070eb8
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x12303f8
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x80704d8
+	valueTbl (ptr): 0x12305c8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -103,50 +103,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomRightFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d31
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3e58
 		_dictionaryEntryName: CornerVC_BottomRightFront
 	_corner: BottomRightFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x1230108
 		_entryTbl[0]:
-			varName (ptr): 0x8068558
+			varName (ptr): 0x121f1f8
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805f198
+			varName (ptr): 0x1227b48
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805f1a8
+			varName (ptr): 0x1227cf8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_BottomRightFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -157,21 +157,21 @@
 	initialise function name: CornerVC_BottomRightFrontName-Initialise
 	execute function name: CornerVC_BottomRightFrontName-Execute
 	destroy function name: CornerVC_BottomRightFrontName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070fa0
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x12309c8
 	indexCount: 1
-	indexTbl (ptr): 0x80683a0
-		indexTbl[0]: 25
-	vcVarCountTbl (ptr): 0x8068370
+	indexTbl (ptr): 0x12301a8
+		indexTbl[0]: 12
+	vcVarCountTbl (ptr): 0x1230148
 		vcVarCountTbl[0]: 3
-	vcTbl (ptr): 0x806c4b0
+	vcTbl (ptr): 0x1230a08
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -182,7 +182,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x80704d8
+	valueTbl (ptr): 0x1230a38
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -197,70 +197,70 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False True  False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopLeftFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d4b
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3e74
 		_dictionaryEntryName: CornerVC_TopLeftFront
 	_corner: TopLeftFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x12305c8
 		_entryTbl[0]:
-			varName (ptr): 0x8066380
+			varName (ptr): 0x1228f88
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8066770
+			varName (ptr): 0x1229138
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8066930
+			varName (ptr): 0x12292e8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_TopLeftFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -271,21 +271,21 @@
 	initialise function name: CornerVC_TopLeftFrontName-Initialise
 	execute function name: CornerVC_TopLeftFrontName-Execute
 	destroy function name: CornerVC_TopLeftFrontName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x80709d8
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230108
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x8068c00
+	valueTbl (ptr): 0x1230a68
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -320,50 +320,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopRightFront
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d61
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3e8c
 		_dictionaryEntryName: CornerVC_TopRightFront
 	_corner: TopRightFront
 	_entryCount: 3
-	_entryTbl (ptr): 0x8071088
+	_entryTbl (ptr): 0x1230108
 		_entryTbl[0]:
-			varName (ptr): 0x805f418
+			varName (ptr): 0x1228838
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805f808
+			varName (ptr): 0x12289e8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805f9c8
+			varName (ptr): 0x1228b98
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_TopRightFrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -374,21 +374,21 @@
 	initialise function name: CornerVC_TopRightFrontName-Initialise
 	execute function name: CornerVC_TopRightFrontName-Execute
 	destroy function name: CornerVC_TopRightFrontName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230a98
 	indexCount: 1
-	indexTbl (ptr): 0x80683a0
-		indexTbl[0]: 31
-	vcVarCountTbl (ptr): 0x8068a60
+	indexTbl (ptr): 0x12301a8
+		indexTbl[0]: 15
+	vcVarCountTbl (ptr): 0x1230148
 		vcVarCountTbl[0]: 3
-	vcTbl (ptr): 0x80708f0
+	vcTbl (ptr): 0x1230ad8
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -399,7 +399,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x8068c00
+	valueTbl (ptr): 0x1230b08
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -414,58 +414,58 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
-False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False True  
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
+False False False False False False False False False False False False False False False True  False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomLeftBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d78
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3ea4
 		_dictionaryEntryName: CornerVC_BottomLeftBack
 	_corner: BottomLeftBack
 	_entryCount: 1
-	_entryTbl (ptr): 0x80705e8
+	_entryTbl (ptr): 0x121ee98
 		_entryTbl[0]:
-			varName (ptr): 0x8067598
+			varName (ptr): 0x12296d8
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_BottomLeftBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -476,21 +476,21 @@
 	initialise function name: CornerVC_BottomLeftBackName-Initialise
 	execute function name: CornerVC_BottomLeftBackName-Execute
 	destroy function name: CornerVC_BottomLeftBackName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230108
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 1
-	valueTbl (ptr): 0x8063a78
+	valueTbl (ptr): 0x12305c8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 3
@@ -519,56 +519,56 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_BottomRightBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049d90
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3ebc
 		_dictionaryEntryName: CornerVC_BottomRightBack
 	_corner: BottomRightBack
 	_entryCount: 4
-	_entryTbl (ptr): 0x806c500
+	_entryTbl (ptr): 0x1230108
 		_entryTbl[0]:
-			varName (ptr): 0x80670a0
+			varName (ptr): 0x1229ae8
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068548
+			varName (ptr): 0x1229c98
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8066af0
+			varName (ptr): 0x1229e48
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
 		_entryTbl[3]:
-			varName (ptr): 0x8067ed0
+			varName (ptr): 0x1229ff8
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_BottomRightBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -579,21 +579,21 @@
 	initialise function name: CornerVC_BottomRightBackName-Initialise
 	execute function name: CornerVC_BottomRightBackName-Execute
 	destroy function name: CornerVC_BottomRightBackName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230a78
 	indexCount: 1
-	indexTbl (ptr): 0x80683a0
-		indexTbl[0]: 1
-	vcVarCountTbl (ptr): 0x8068370
+	indexTbl (ptr): 0x1230428
+		indexTbl[0]: 0
+	vcVarCountTbl (ptr): 0x12301a8
 		vcVarCountTbl[0]: 4
-	vcTbl (ptr): 0x80704d8
+	vcTbl (ptr): 0x1230b38
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -607,7 +607,7 @@
 			varIndex: 6
 			valIndex: 3
 	valueCount: 4
-	valueTbl (ptr): 0x8071088
+	valueTbl (ptr): 0x1230b68
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -625,76 +625,76 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 0.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
+True  False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopLeftBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049da9
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3ed8
 		_dictionaryEntryName: CornerVC_TopLeftBack
 	_corner: TopLeftBack
 	_entryCount: 4
-	_entryTbl (ptr): 0x806b308
+	_entryTbl (ptr): 0x1230108
 		_entryTbl[0]:
-			varName (ptr): 0x8067260
+			varName (ptr): 0x122a7c8
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8067a48
+			varName (ptr): 0x122a978
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8067c08
+			varName (ptr): 0x122ab28
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
 		_entryTbl[3]:
-			varName (ptr): 0x8060490
+			varName (ptr): 0x122acd8
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 6
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_TopLeftBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -705,21 +705,21 @@
 	initialise function name: CornerVC_TopLeftBackName-Initialise
 	execute function name: CornerVC_TopLeftBackName-Execute
 	destroy function name: CornerVC_TopLeftBackName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8071088
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230b68
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 4
-	valueTbl (ptr): 0x8070c98
+	valueTbl (ptr): 0x1230ba8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -757,38 +757,38 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for CornerVC_TopRightBack
-CornerVC (ptr): 0x806b1c8
-	dictionary (ptr): 0x805e990
-	_dictionaryEntryName (ptr): 0x8049dbe
+CornerVC (ptr): 0x122fe38
+	dictionary (ptr): 0x121e928
+	_dictionaryEntryName (ptr): 0x3ef0
 		_dictionaryEntryName: CornerVC_TopRightBack
 	_corner: TopRightBack
 	_entryCount: 1
-	_entryTbl (ptr): 0x8070dc8
+	_entryTbl (ptr): 0x1230108
 		_entryTbl[0]:
-			varName (ptr): 0x80682c8
+			varName (ptr): 0x122a3d8
 				varName: temp
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
-	_mesh (ptr): 0x8062710
-VariableCondition (ptr): 0x806b1c8
-Stg_Component (ptr): 0x806b1c8
-Stg_Object (ptr): 0x806b1c8
-	Stg_Class (ptr): 0x806b1c8
+	_mesh (ptr): 0x121f778
+VariableCondition (ptr): 0x122fe38
+Stg_Component (ptr): 0x122fe38
+Stg_Object (ptr): 0x122fe38
+	Stg_Class (ptr): 0x122fe38
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: CornerVC
-		_delete (func ptr): 0xb7eebbed
-		_print (func ptr): 0xb7eebc33
-		_copy (func ptr): 0xb7eec228
+		_delete (func ptr): 0x20e1f4
+		_print (func ptr): 0x20e250
+		_copy (func ptr): 0x20e8cc
 	name: CornerVC_TopRightBackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7eeae38
-	_construct (func ptr): 0xb7eec43d
-	_build (func ptr): 0xb7eec3fb
-	_initialise (func ptr): 0xb7dea502
-	_execute (func ptr): 0xb7dea5c9
-	_destroy (func ptr): 0xb7dea5f9
+	_defaultConstructor (func ptr): 0x20d250
+	_construct (func ptr): 0x20eb10
+	_build (func ptr): 0x20eac0
+	_initialise (func ptr): 0x58aa10
+	_execute (func ptr): 0x58ab04
+	_destroy (func ptr): 0x58ab48
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -799,26 +799,26 @@
 	initialise function name: CornerVC_TopRightBackName-Initialise
 	execute function name: CornerVC_TopRightBackName-Execute
 	destroy function name: CornerVC_TopRightBackName-Destroy
-	_getSet (func ptr): 0xb7eec48c
-	_getVariableCount (func ptr): 0xb7eecaaf
-	_getVariableIndex (func ptr): 0xb7eecac6
-	_getValueIndex (func ptr): 0xb7eecba1
-	_getValueCount (func ptr): 0xb7eecba9
-	_getValue (func ptr): 0xb7eecbc0
-	variable_Register (ptr): 0x8071040
-	conFunc_Register (ptr): 0x805b658
-	_set (ptr): 0x8070c98
+	_getSet (func ptr): 0x20eb94
+	_getVariableCount (func ptr): 0x20f7c0
+	_getVariableIndex (func ptr): 0x20f7f4
+	_getValueIndex (func ptr): 0x20f900
+	_getValueCount (func ptr): 0x20f92c
+	_getValue (func ptr): 0x20f95c
+	variable_Register (ptr): 0x122e228
+	conFunc_Register (ptr): 0x121f5a8
+	_set (ptr): 0x1230058
 	indexCount: 1
-	indexTbl (ptr): 0x80683a0
-		indexTbl[0]: 7
-	vcVarCountTbl (ptr): 0x8068a60
+	indexTbl (ptr): 0x1230428
+		indexTbl[0]: 3
+	vcVarCountTbl (ptr): 0x1230ac8
 		vcVarCountTbl[0]: 1
-	vcTbl (ptr): 0x8063a78
+	vcTbl (ptr): 0x1230128
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x8068f40
+	valueTbl (ptr): 0x1230148
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 3
@@ -830,7 +830,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testCornerVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,6 +53,32 @@
 }
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		 double* minCrds, double* maxCrds, 
+		 ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {0, 1, 1};
+
+	gen = CartesianGenerator_New( "" );
+	gen->shadowDepth = 0;
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
 int main(int argc, char *argv[])
 {
 	MPI_Comm                    CommWorld;
@@ -64,12 +90,12 @@
 	Dictionary*                 dictionary;
 	XML_IO_Handler*             io_handler;
 	
-	Topology*                   nTopology;
-	ElementLayout*              eLayout;
-	NodeLayout*                 nLayout;
-	MeshDecomp*                 decomp;
-	MeshLayout*                 layout;
-	Mesh*                       mesh;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {3, 3, 3};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
+	Mesh*           mesh;
+	unsigned	nDomains;
 	
 	Variable*                   var[9];
 	Variable_Register*          variable_Register;
@@ -80,21 +106,21 @@
 
 	double*                     array[7];
 	char*                       vcKey[] = {	"CornerVC_BottomLeftFront",
-											"CornerVC_BottomRightFront",
-											"CornerVC_TopLeftFront",
-											"CornerVC_TopRightFront",
-											"CornerVC_BottomLeftBack",
-											"CornerVC_BottomRightBack",
-											"CornerVC_TopLeftBack",
-											"CornerVC_TopRightBack" };
+						"CornerVC_BottomRightFront",
+						"CornerVC_TopLeftFront",
+						"CornerVC_TopRightFront",
+						"CornerVC_BottomLeftBack",
+						"CornerVC_BottomRightBack",
+						"CornerVC_TopLeftBack",
+						"CornerVC_TopRightBack" };
 	char*                       vcKeyName[] = {	"CornerVC_BottomLeftFrontName",
-											"CornerVC_BottomRightFrontName",
-											"CornerVC_TopLeftFrontName",
-											"CornerVC_TopRightFrontName",
-											"CornerVC_BottomLeftBackName",
-											"CornerVC_BottomRightBackName",
-											"CornerVC_TopLeftBackName",
-											"CornerVC_TopRightBackName" };
+							"CornerVC_BottomRightFrontName",
+							"CornerVC_TopLeftFrontName",
+							"CornerVC_TopRightFrontName",
+							"CornerVC_BottomLeftBackName",
+							"CornerVC_BottomRightBackName",
+							"CornerVC_TopLeftBackName",
+							"CornerVC_TopRightBackName" };
 	char*                       varName[] = {"x", "y", "z", "vx", "vy", "vz", "temp"};
 	
 	Index                       i;
@@ -124,21 +150,12 @@
 	IO_Handler_ReadAllFromFile(io_handler, "data/cornerVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);
-	Dictionary_Add(dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt(rank));
-	Dictionary_Add(dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt(procCount));
-	Dictionary_Add(dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool(True));
 
 	extensionMgr_Register = ExtensionManager_Register_New();	
 	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	mesh = Mesh_New( "Mesh", layout, 0, 0, extensionMgr_Register, dictionary );
+	/* Create a mesh. */
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	nDomains = Mesh_GetDomainSize( mesh, MT_VERTEX );
 	
 	/* Create CF stuff */
 	conFunc_Register = ConditionFunction_Register_New();
@@ -148,14 +165,14 @@
 	/* Create variables */
 	for (i = 0; i < 7; i++) {
 		array[i] = Memory_Alloc_Array(  double, 
-										decomp->nodeLocalCount, 
-										"array[i]" );
+						nDomains, 
+						"array[i]" );
 		
 		var[i] =   Variable_NewScalar(  varName[i], 
-										Variable_DataType_Double, 
-										&decomp->nodeLocalCount, 
-										(void**)&array[i], 
-										0 ); 
+						Variable_DataType_Double, 
+						&nDomains, 
+						(void**)&array[i], 
+						0 ); 
 		Variable_Register_Add(variable_Register, var[i]);
 	}
 	
@@ -169,7 +186,7 @@
 		_CornerVC_ReadDictionary(vc, dictionary);
 		Build( vc, 0, False );
 		for (j = 0; j < 7; j++) {
-			memset(array[j], 0, sizeof(double)* decomp->nodeLocalCount );
+			memset(array[j], 0, sizeof(double)* nDomains );
 		}
 		VariableCondition_Apply(vc, NULL);
 		
@@ -181,7 +198,7 @@
 			for (j = 0; j < 7; j++)
 			{
 				printf("\nvar[%u]: %.2lf", j, array[j][0]);
-				for (k = 1; k < decomp->nodeLocalCount; k++)
+				for (k = 1; k < nDomains; k++)
 					printf(", %.2lf", array[j][k]);
 			}
 
@@ -189,7 +206,7 @@
 			
 			for (j = 0; j < 6; j++)
 			{
-				for (k = 0; k < decomp->nodeLocalCount; k++)
+				for (k = 0; k < nDomains; k++)
 					printf("%s ", VariableCondition_IsCondition(vc, k, j) ? "True " : "False");
 				printf("\n");
 			}
@@ -197,7 +214,7 @@
 			
 			for (j = 0; j < 6; j++)
 			{
-				for (k = 0; k < decomp->nodeLocalCount; k++)
+				for (k = 0; k < nDomains; k++)
 				{
 					VariableCondition_ValueIndex	valIndex;
 					
@@ -222,12 +239,8 @@
 		if (array[i]) Memory_Free(array[i]);
 	}
 	Stg_Class_Delete(conFunc_Register);
-	Stg_Class_Delete(layout);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete(nTopology);
 	Stg_Class_Delete(dictionary);
+	FreeObject( mesh );
 	
 	DiscretisationUtils_Finalise();
 	DiscretisationMesh_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-remap.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-remap.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-remap.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -88,7 +88,7 @@
 		}
 
 		/* Simple test */
-		dof = DofLayout_New( "dofLayout", variableRegister, 27 );
+		dof = DofLayout_New( "dofLayout", variableRegister, 27, NULL );
 		for (i = 0; i < 6; i++) {
 			for (j = 0; j < 27; j++) {
 				DofLayout_AddDof_ByVarName(dof, varName[i], j);

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-saveAndLoad.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-saveAndLoad.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout-saveAndLoad.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -95,7 +95,7 @@
 		}	
 
 		/* Simple test */
-		dof = DofLayout_New( "dofLayout", variableRegister, arraySize );
+		dof = DofLayout_New( "dofLayout", variableRegister, arraySize, NULL );
 		for (ii = 0; ii < arraySize; ii++) {
 			for (var_I = 0; var_I < 6; var_I++) {
 				DofLayout_AddDof_ByVarName(dof, varName[var_I], ii);

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testDofLayout.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -96,7 +96,7 @@
 		}	
 
 		/* Simple test */
-		dof = DofLayout_New( "dofLayout", variableRegister, arraySize );
+		dof = DofLayout_New( "dofLayout", variableRegister, arraySize, NULL );
 		for (ii = 0; ii < arraySize; ii++)
 			for (var_I = 0; var_I < 6; var_I++)
 				DofLayout_AddDof_ByVarName(dof, varName[var_I], ii);
@@ -110,7 +110,7 @@
 		Stg_Class_Delete(dof);
 
 		/* Advanced test */
-		dof = DofLayout_New( "dofLayout1", variableRegister, arraySize );
+		dof = DofLayout_New( "dofLayout1", variableRegister, arraySize, NULL );
 		for (ii = 0; ii < 12; ii++)
 			for (var_I = 0; var_I < 2; var_I++)
 				DofLayout_AddDof_ByVarName(dof, varName[var_I], ii);
@@ -129,8 +129,8 @@
 
 		/* Copy test */
 
-		dof = DofLayout_New( "dofLayout2", variableRegister, arraySize );
-		destDof = DofLayout_New( "dofLayout3", variableRegister, arraySize );
+		dof = DofLayout_New( "dofLayout2", variableRegister, arraySize, NULL );
+		destDof = DofLayout_New( "dofLayout3", variableRegister, arraySize, NULL );
 		for (ii = 0; ii < arraySize; ii++) {
 			for (var_I = 0; var_I < 3; var_I++) {
 				DofLayout_AddDof_ByVarName(dof, varName[var_I], ii);

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of1.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of1.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshCoarsener_Hexa " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.0of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshCoarsener_Hexa " "$0" "$@"

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.1of2.sh
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.1of2.sh	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testMeshCoarsener_Hexa.1of2.sh	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-TEST_SCRIPT=./VMake/executableTester.sh
-until test -r ${TEST_SCRIPT} ; do
-        TEST_SCRIPT=../${TEST_SCRIPT}
-done
-. ${TEST_SCRIPT}
-
-runAndHandleSystemTest "testMeshCoarsener_Hexa " "$0" "$@"

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of1.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of1.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1728 +1,1729 @@
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Element #: 0, Current Node #: 0, Diagonal Node #: 57, (57) 
 Element #: 0, Current Node #: 1, Diagonal Node #: 56, (56) 
+Element #: 0, Current Node #: 7, Diagonal Node #: 50, (50) 
 Element #: 0, Current Node #: 8, Diagonal Node #: 49, (49) 
-Element #: 0, Current Node #: 7, Diagonal Node #: 50, (50) 
 Element #: 0, Current Node #: 49, Diagonal Node #: 8, (8) 
 Element #: 0, Current Node #: 50, Diagonal Node #: 7, (7) 
+Element #: 0, Current Node #: 56, Diagonal Node #: 1, (1) 
 Element #: 0, Current Node #: 57, Diagonal Node #: 0, (0) 
-Element #: 0, Current Node #: 56, Diagonal Node #: 1, (1) 
 Element #: 1, Current Node #: 1, Diagonal Node #: 58, (58) 
 Element #: 1, Current Node #: 2, Diagonal Node #: 57, (57) 
+Element #: 1, Current Node #: 8, Diagonal Node #: 51, (51) 
 Element #: 1, Current Node #: 9, Diagonal Node #: 50, (50) 
-Element #: 1, Current Node #: 8, Diagonal Node #: 51, (51) 
 Element #: 1, Current Node #: 50, Diagonal Node #: 9, (9) 
 Element #: 1, Current Node #: 51, Diagonal Node #: 8, (8) 
+Element #: 1, Current Node #: 57, Diagonal Node #: 2, (2) 
 Element #: 1, Current Node #: 58, Diagonal Node #: 1, (1) 
-Element #: 1, Current Node #: 57, Diagonal Node #: 2, (2) 
 Element #: 2, Current Node #: 2, Diagonal Node #: 59, (59) 
 Element #: 2, Current Node #: 3, Diagonal Node #: 58, (58) 
+Element #: 2, Current Node #: 9, Diagonal Node #: 52, (52) 
 Element #: 2, Current Node #: 10, Diagonal Node #: 51, (51) 
-Element #: 2, Current Node #: 9, Diagonal Node #: 52, (52) 
 Element #: 2, Current Node #: 51, Diagonal Node #: 10, (10) 
 Element #: 2, Current Node #: 52, Diagonal Node #: 9, (9) 
+Element #: 2, Current Node #: 58, Diagonal Node #: 3, (3) 
 Element #: 2, Current Node #: 59, Diagonal Node #: 2, (2) 
-Element #: 2, Current Node #: 58, Diagonal Node #: 3, (3) 
 Element #: 3, Current Node #: 3, Diagonal Node #: 60, (60) 
 Element #: 3, Current Node #: 4, Diagonal Node #: 59, (59) 
+Element #: 3, Current Node #: 10, Diagonal Node #: 53, (53) 
 Element #: 3, Current Node #: 11, Diagonal Node #: 52, (52) 
-Element #: 3, Current Node #: 10, Diagonal Node #: 53, (53) 
 Element #: 3, Current Node #: 52, Diagonal Node #: 11, (11) 
 Element #: 3, Current Node #: 53, Diagonal Node #: 10, (10) 
+Element #: 3, Current Node #: 59, Diagonal Node #: 4, (4) 
 Element #: 3, Current Node #: 60, Diagonal Node #: 3, (3) 
-Element #: 3, Current Node #: 59, Diagonal Node #: 4, (4) 
 Element #: 4, Current Node #: 4, Diagonal Node #: 61, (61) 
 Element #: 4, Current Node #: 5, Diagonal Node #: 60, (60) 
+Element #: 4, Current Node #: 11, Diagonal Node #: 54, (54) 
 Element #: 4, Current Node #: 12, Diagonal Node #: 53, (53) 
-Element #: 4, Current Node #: 11, Diagonal Node #: 54, (54) 
 Element #: 4, Current Node #: 53, Diagonal Node #: 12, (12) 
 Element #: 4, Current Node #: 54, Diagonal Node #: 11, (11) 
+Element #: 4, Current Node #: 60, Diagonal Node #: 5, (5) 
 Element #: 4, Current Node #: 61, Diagonal Node #: 4, (4) 
-Element #: 4, Current Node #: 60, Diagonal Node #: 5, (5) 
 Element #: 5, Current Node #: 5, Diagonal Node #: 62, (62) 
 Element #: 5, Current Node #: 6, Diagonal Node #: 61, (61) 
+Element #: 5, Current Node #: 12, Diagonal Node #: 55, (55) 
 Element #: 5, Current Node #: 13, Diagonal Node #: 54, (54) 
-Element #: 5, Current Node #: 12, Diagonal Node #: 55, (55) 
 Element #: 5, Current Node #: 54, Diagonal Node #: 13, (13) 
 Element #: 5, Current Node #: 55, Diagonal Node #: 12, (12) 
+Element #: 5, Current Node #: 61, Diagonal Node #: 6, (6) 
 Element #: 5, Current Node #: 62, Diagonal Node #: 5, (5) 
-Element #: 5, Current Node #: 61, Diagonal Node #: 6, (6) 
 Element #: 6, Current Node #: 7, Diagonal Node #: 64, (64) 
 Element #: 6, Current Node #: 8, Diagonal Node #: 63, (63) 
+Element #: 6, Current Node #: 14, Diagonal Node #: 57, (57) 
 Element #: 6, Current Node #: 15, Diagonal Node #: 56, (56) 
-Element #: 6, Current Node #: 14, Diagonal Node #: 57, (57) 
 Element #: 6, Current Node #: 56, Diagonal Node #: 15, (15) 
 Element #: 6, Current Node #: 57, Diagonal Node #: 14, (14) 
+Element #: 6, Current Node #: 63, Diagonal Node #: 8, (8) 
 Element #: 6, Current Node #: 64, Diagonal Node #: 7, (7) 
-Element #: 6, Current Node #: 63, Diagonal Node #: 8, (8) 
 Element #: 7, Current Node #: 8, Diagonal Node #: 65, (65) 
 Element #: 7, Current Node #: 9, Diagonal Node #: 64, (64) 
+Element #: 7, Current Node #: 15, Diagonal Node #: 58, (58) 
 Element #: 7, Current Node #: 16, Diagonal Node #: 57, (57) 
-Element #: 7, Current Node #: 15, Diagonal Node #: 58, (58) 
 Element #: 7, Current Node #: 57, Diagonal Node #: 16, (16) 
 Element #: 7, Current Node #: 58, Diagonal Node #: 15, (15) 
+Element #: 7, Current Node #: 64, Diagonal Node #: 9, (9) 
 Element #: 7, Current Node #: 65, Diagonal Node #: 8, (8) 
-Element #: 7, Current Node #: 64, Diagonal Node #: 9, (9) 
 Element #: 8, Current Node #: 9, Diagonal Node #: 66, (66) 
 Element #: 8, Current Node #: 10, Diagonal Node #: 65, (65) 
+Element #: 8, Current Node #: 16, Diagonal Node #: 59, (59) 
 Element #: 8, Current Node #: 17, Diagonal Node #: 58, (58) 
-Element #: 8, Current Node #: 16, Diagonal Node #: 59, (59) 
 Element #: 8, Current Node #: 58, Diagonal Node #: 17, (17) 
 Element #: 8, Current Node #: 59, Diagonal Node #: 16, (16) 
+Element #: 8, Current Node #: 65, Diagonal Node #: 10, (10) 
 Element #: 8, Current Node #: 66, Diagonal Node #: 9, (9) 
-Element #: 8, Current Node #: 65, Diagonal Node #: 10, (10) 
 Element #: 9, Current Node #: 10, Diagonal Node #: 67, (67) 
 Element #: 9, Current Node #: 11, Diagonal Node #: 66, (66) 
+Element #: 9, Current Node #: 17, Diagonal Node #: 60, (60) 
 Element #: 9, Current Node #: 18, Diagonal Node #: 59, (59) 
-Element #: 9, Current Node #: 17, Diagonal Node #: 60, (60) 
 Element #: 9, Current Node #: 59, Diagonal Node #: 18, (18) 
 Element #: 9, Current Node #: 60, Diagonal Node #: 17, (17) 
+Element #: 9, Current Node #: 66, Diagonal Node #: 11, (11) 
 Element #: 9, Current Node #: 67, Diagonal Node #: 10, (10) 
-Element #: 9, Current Node #: 66, Diagonal Node #: 11, (11) 
 Element #: 10, Current Node #: 11, Diagonal Node #: 68, (68) 
 Element #: 10, Current Node #: 12, Diagonal Node #: 67, (67) 
+Element #: 10, Current Node #: 18, Diagonal Node #: 61, (61) 
 Element #: 10, Current Node #: 19, Diagonal Node #: 60, (60) 
-Element #: 10, Current Node #: 18, Diagonal Node #: 61, (61) 
 Element #: 10, Current Node #: 60, Diagonal Node #: 19, (19) 
 Element #: 10, Current Node #: 61, Diagonal Node #: 18, (18) 
+Element #: 10, Current Node #: 67, Diagonal Node #: 12, (12) 
 Element #: 10, Current Node #: 68, Diagonal Node #: 11, (11) 
-Element #: 10, Current Node #: 67, Diagonal Node #: 12, (12) 
 Element #: 11, Current Node #: 12, Diagonal Node #: 69, (69) 
 Element #: 11, Current Node #: 13, Diagonal Node #: 68, (68) 
+Element #: 11, Current Node #: 19, Diagonal Node #: 62, (62) 
 Element #: 11, Current Node #: 20, Diagonal Node #: 61, (61) 
-Element #: 11, Current Node #: 19, Diagonal Node #: 62, (62) 
 Element #: 11, Current Node #: 61, Diagonal Node #: 20, (20) 
 Element #: 11, Current Node #: 62, Diagonal Node #: 19, (19) 
+Element #: 11, Current Node #: 68, Diagonal Node #: 13, (13) 
 Element #: 11, Current Node #: 69, Diagonal Node #: 12, (12) 
-Element #: 11, Current Node #: 68, Diagonal Node #: 13, (13) 
 Element #: 12, Current Node #: 14, Diagonal Node #: 71, (71) 
 Element #: 12, Current Node #: 15, Diagonal Node #: 70, (70) 
+Element #: 12, Current Node #: 21, Diagonal Node #: 64, (64) 
 Element #: 12, Current Node #: 22, Diagonal Node #: 63, (63) 
-Element #: 12, Current Node #: 21, Diagonal Node #: 64, (64) 
 Element #: 12, Current Node #: 63, Diagonal Node #: 22, (22) 
 Element #: 12, Current Node #: 64, Diagonal Node #: 21, (21) 
+Element #: 12, Current Node #: 70, Diagonal Node #: 15, (15) 
 Element #: 12, Current Node #: 71, Diagonal Node #: 14, (14) 
-Element #: 12, Current Node #: 70, Diagonal Node #: 15, (15) 
 Element #: 13, Current Node #: 15, Diagonal Node #: 72, (72) 
 Element #: 13, Current Node #: 16, Diagonal Node #: 71, (71) 
+Element #: 13, Current Node #: 22, Diagonal Node #: 65, (65) 
 Element #: 13, Current Node #: 23, Diagonal Node #: 64, (64) 
-Element #: 13, Current Node #: 22, Diagonal Node #: 65, (65) 
 Element #: 13, Current Node #: 64, Diagonal Node #: 23, (23) 
 Element #: 13, Current Node #: 65, Diagonal Node #: 22, (22) 
+Element #: 13, Current Node #: 71, Diagonal Node #: 16, (16) 
 Element #: 13, Current Node #: 72, Diagonal Node #: 15, (15) 
-Element #: 13, Current Node #: 71, Diagonal Node #: 16, (16) 
 Element #: 14, Current Node #: 16, Diagonal Node #: 73, (73) 
 Element #: 14, Current Node #: 17, Diagonal Node #: 72, (72) 
+Element #: 14, Current Node #: 23, Diagonal Node #: 66, (66) 
 Element #: 14, Current Node #: 24, Diagonal Node #: 65, (65) 
-Element #: 14, Current Node #: 23, Diagonal Node #: 66, (66) 
 Element #: 14, Current Node #: 65, Diagonal Node #: 24, (24) 
 Element #: 14, Current Node #: 66, Diagonal Node #: 23, (23) 
+Element #: 14, Current Node #: 72, Diagonal Node #: 17, (17) 
 Element #: 14, Current Node #: 73, Diagonal Node #: 16, (16) 
-Element #: 14, Current Node #: 72, Diagonal Node #: 17, (17) 
 Element #: 15, Current Node #: 17, Diagonal Node #: 74, (74) 
 Element #: 15, Current Node #: 18, Diagonal Node #: 73, (73) 
+Element #: 15, Current Node #: 24, Diagonal Node #: 67, (67) 
 Element #: 15, Current Node #: 25, Diagonal Node #: 66, (66) 
-Element #: 15, Current Node #: 24, Diagonal Node #: 67, (67) 
 Element #: 15, Current Node #: 66, Diagonal Node #: 25, (25) 
 Element #: 15, Current Node #: 67, Diagonal Node #: 24, (24) 
+Element #: 15, Current Node #: 73, Diagonal Node #: 18, (18) 
 Element #: 15, Current Node #: 74, Diagonal Node #: 17, (17) 
-Element #: 15, Current Node #: 73, Diagonal Node #: 18, (18) 
 Element #: 16, Current Node #: 18, Diagonal Node #: 75, (75) 
 Element #: 16, Current Node #: 19, Diagonal Node #: 74, (74) 
+Element #: 16, Current Node #: 25, Diagonal Node #: 68, (68) 
 Element #: 16, Current Node #: 26, Diagonal Node #: 67, (67) 
-Element #: 16, Current Node #: 25, Diagonal Node #: 68, (68) 
 Element #: 16, Current Node #: 67, Diagonal Node #: 26, (26) 
 Element #: 16, Current Node #: 68, Diagonal Node #: 25, (25) 
+Element #: 16, Current Node #: 74, Diagonal Node #: 19, (19) 
 Element #: 16, Current Node #: 75, Diagonal Node #: 18, (18) 
-Element #: 16, Current Node #: 74, Diagonal Node #: 19, (19) 
 Element #: 17, Current Node #: 19, Diagonal Node #: 76, (76) 
 Element #: 17, Current Node #: 20, Diagonal Node #: 75, (75) 
+Element #: 17, Current Node #: 26, Diagonal Node #: 69, (69) 
 Element #: 17, Current Node #: 27, Diagonal Node #: 68, (68) 
-Element #: 17, Current Node #: 26, Diagonal Node #: 69, (69) 
 Element #: 17, Current Node #: 68, Diagonal Node #: 27, (27) 
 Element #: 17, Current Node #: 69, Diagonal Node #: 26, (26) 
+Element #: 17, Current Node #: 75, Diagonal Node #: 20, (20) 
 Element #: 17, Current Node #: 76, Diagonal Node #: 19, (19) 
-Element #: 17, Current Node #: 75, Diagonal Node #: 20, (20) 
 Element #: 18, Current Node #: 21, Diagonal Node #: 78, (78) 
 Element #: 18, Current Node #: 22, Diagonal Node #: 77, (77) 
+Element #: 18, Current Node #: 28, Diagonal Node #: 71, (71) 
 Element #: 18, Current Node #: 29, Diagonal Node #: 70, (70) 
-Element #: 18, Current Node #: 28, Diagonal Node #: 71, (71) 
 Element #: 18, Current Node #: 70, Diagonal Node #: 29, (29) 
 Element #: 18, Current Node #: 71, Diagonal Node #: 28, (28) 
+Element #: 18, Current Node #: 77, Diagonal Node #: 22, (22) 
 Element #: 18, Current Node #: 78, Diagonal Node #: 21, (21) 
-Element #: 18, Current Node #: 77, Diagonal Node #: 22, (22) 
 Element #: 19, Current Node #: 22, Diagonal Node #: 79, (79) 
 Element #: 19, Current Node #: 23, Diagonal Node #: 78, (78) 
+Element #: 19, Current Node #: 29, Diagonal Node #: 72, (72) 
 Element #: 19, Current Node #: 30, Diagonal Node #: 71, (71) 
-Element #: 19, Current Node #: 29, Diagonal Node #: 72, (72) 
 Element #: 19, Current Node #: 71, Diagonal Node #: 30, (30) 
 Element #: 19, Current Node #: 72, Diagonal Node #: 29, (29) 
+Element #: 19, Current Node #: 78, Diagonal Node #: 23, (23) 
 Element #: 19, Current Node #: 79, Diagonal Node #: 22, (22) 
-Element #: 19, Current Node #: 78, Diagonal Node #: 23, (23) 
 Element #: 20, Current Node #: 23, Diagonal Node #: 80, (80) 
 Element #: 20, Current Node #: 24, Diagonal Node #: 79, (79) 
+Element #: 20, Current Node #: 30, Diagonal Node #: 73, (73) 
 Element #: 20, Current Node #: 31, Diagonal Node #: 72, (72) 
-Element #: 20, Current Node #: 30, Diagonal Node #: 73, (73) 
 Element #: 20, Current Node #: 72, Diagonal Node #: 31, (31) 
 Element #: 20, Current Node #: 73, Diagonal Node #: 30, (30) 
+Element #: 20, Current Node #: 79, Diagonal Node #: 24, (24) 
 Element #: 20, Current Node #: 80, Diagonal Node #: 23, (23) 
-Element #: 20, Current Node #: 79, Diagonal Node #: 24, (24) 
 Element #: 21, Current Node #: 24, Diagonal Node #: 81, (81) 
 Element #: 21, Current Node #: 25, Diagonal Node #: 80, (80) 
+Element #: 21, Current Node #: 31, Diagonal Node #: 74, (74) 
 Element #: 21, Current Node #: 32, Diagonal Node #: 73, (73) 
-Element #: 21, Current Node #: 31, Diagonal Node #: 74, (74) 
 Element #: 21, Current Node #: 73, Diagonal Node #: 32, (32) 
 Element #: 21, Current Node #: 74, Diagonal Node #: 31, (31) 
+Element #: 21, Current Node #: 80, Diagonal Node #: 25, (25) 
 Element #: 21, Current Node #: 81, Diagonal Node #: 24, (24) 
-Element #: 21, Current Node #: 80, Diagonal Node #: 25, (25) 
 Element #: 22, Current Node #: 25, Diagonal Node #: 82, (82) 
 Element #: 22, Current Node #: 26, Diagonal Node #: 81, (81) 
+Element #: 22, Current Node #: 32, Diagonal Node #: 75, (75) 
 Element #: 22, Current Node #: 33, Diagonal Node #: 74, (74) 
-Element #: 22, Current Node #: 32, Diagonal Node #: 75, (75) 
 Element #: 22, Current Node #: 74, Diagonal Node #: 33, (33) 
 Element #: 22, Current Node #: 75, Diagonal Node #: 32, (32) 
+Element #: 22, Current Node #: 81, Diagonal Node #: 26, (26) 
 Element #: 22, Current Node #: 82, Diagonal Node #: 25, (25) 
-Element #: 22, Current Node #: 81, Diagonal Node #: 26, (26) 
 Element #: 23, Current Node #: 26, Diagonal Node #: 83, (83) 
 Element #: 23, Current Node #: 27, Diagonal Node #: 82, (82) 
+Element #: 23, Current Node #: 33, Diagonal Node #: 76, (76) 
 Element #: 23, Current Node #: 34, Diagonal Node #: 75, (75) 
-Element #: 23, Current Node #: 33, Diagonal Node #: 76, (76) 
 Element #: 23, Current Node #: 75, Diagonal Node #: 34, (34) 
 Element #: 23, Current Node #: 76, Diagonal Node #: 33, (33) 
+Element #: 23, Current Node #: 82, Diagonal Node #: 27, (27) 
 Element #: 23, Current Node #: 83, Diagonal Node #: 26, (26) 
-Element #: 23, Current Node #: 82, Diagonal Node #: 27, (27) 
 Element #: 24, Current Node #: 28, Diagonal Node #: 85, (85) 
 Element #: 24, Current Node #: 29, Diagonal Node #: 84, (84) 
+Element #: 24, Current Node #: 35, Diagonal Node #: 78, (78) 
 Element #: 24, Current Node #: 36, Diagonal Node #: 77, (77) 
-Element #: 24, Current Node #: 35, Diagonal Node #: 78, (78) 
 Element #: 24, Current Node #: 77, Diagonal Node #: 36, (36) 
 Element #: 24, Current Node #: 78, Diagonal Node #: 35, (35) 
+Element #: 24, Current Node #: 84, Diagonal Node #: 29, (29) 
 Element #: 24, Current Node #: 85, Diagonal Node #: 28, (28) 
-Element #: 24, Current Node #: 84, Diagonal Node #: 29, (29) 
 Element #: 25, Current Node #: 29, Diagonal Node #: 86, (86) 
 Element #: 25, Current Node #: 30, Diagonal Node #: 85, (85) 
+Element #: 25, Current Node #: 36, Diagonal Node #: 79, (79) 
 Element #: 25, Current Node #: 37, Diagonal Node #: 78, (78) 
-Element #: 25, Current Node #: 36, Diagonal Node #: 79, (79) 
 Element #: 25, Current Node #: 78, Diagonal Node #: 37, (37) 
 Element #: 25, Current Node #: 79, Diagonal Node #: 36, (36) 
+Element #: 25, Current Node #: 85, Diagonal Node #: 30, (30) 
 Element #: 25, Current Node #: 86, Diagonal Node #: 29, (29) 
-Element #: 25, Current Node #: 85, Diagonal Node #: 30, (30) 
 Element #: 26, Current Node #: 30, Diagonal Node #: 87, (87) 
 Element #: 26, Current Node #: 31, Diagonal Node #: 86, (86) 
+Element #: 26, Current Node #: 37, Diagonal Node #: 80, (80) 
 Element #: 26, Current Node #: 38, Diagonal Node #: 79, (79) 
-Element #: 26, Current Node #: 37, Diagonal Node #: 80, (80) 
 Element #: 26, Current Node #: 79, Diagonal Node #: 38, (38) 
 Element #: 26, Current Node #: 80, Diagonal Node #: 37, (37) 
+Element #: 26, Current Node #: 86, Diagonal Node #: 31, (31) 
 Element #: 26, Current Node #: 87, Diagonal Node #: 30, (30) 
-Element #: 26, Current Node #: 86, Diagonal Node #: 31, (31) 
 Element #: 27, Current Node #: 31, Diagonal Node #: 88, (88) 
 Element #: 27, Current Node #: 32, Diagonal Node #: 87, (87) 
+Element #: 27, Current Node #: 38, Diagonal Node #: 81, (81) 
 Element #: 27, Current Node #: 39, Diagonal Node #: 80, (80) 
-Element #: 27, Current Node #: 38, Diagonal Node #: 81, (81) 
 Element #: 27, Current Node #: 80, Diagonal Node #: 39, (39) 
 Element #: 27, Current Node #: 81, Diagonal Node #: 38, (38) 
+Element #: 27, Current Node #: 87, Diagonal Node #: 32, (32) 
 Element #: 27, Current Node #: 88, Diagonal Node #: 31, (31) 
-Element #: 27, Current Node #: 87, Diagonal Node #: 32, (32) 
 Element #: 28, Current Node #: 32, Diagonal Node #: 89, (89) 
 Element #: 28, Current Node #: 33, Diagonal Node #: 88, (88) 
+Element #: 28, Current Node #: 39, Diagonal Node #: 82, (82) 
 Element #: 28, Current Node #: 40, Diagonal Node #: 81, (81) 
-Element #: 28, Current Node #: 39, Diagonal Node #: 82, (82) 
 Element #: 28, Current Node #: 81, Diagonal Node #: 40, (40) 
 Element #: 28, Current Node #: 82, Diagonal Node #: 39, (39) 
+Element #: 28, Current Node #: 88, Diagonal Node #: 33, (33) 
 Element #: 28, Current Node #: 89, Diagonal Node #: 32, (32) 
-Element #: 28, Current Node #: 88, Diagonal Node #: 33, (33) 
 Element #: 29, Current Node #: 33, Diagonal Node #: 90, (90) 
 Element #: 29, Current Node #: 34, Diagonal Node #: 89, (89) 
+Element #: 29, Current Node #: 40, Diagonal Node #: 83, (83) 
 Element #: 29, Current Node #: 41, Diagonal Node #: 82, (82) 
-Element #: 29, Current Node #: 40, Diagonal Node #: 83, (83) 
 Element #: 29, Current Node #: 82, Diagonal Node #: 41, (41) 
 Element #: 29, Current Node #: 83, Diagonal Node #: 40, (40) 
+Element #: 29, Current Node #: 89, Diagonal Node #: 34, (34) 
 Element #: 29, Current Node #: 90, Diagonal Node #: 33, (33) 
-Element #: 29, Current Node #: 89, Diagonal Node #: 34, (34) 
 Element #: 30, Current Node #: 35, Diagonal Node #: 92, (92) 
 Element #: 30, Current Node #: 36, Diagonal Node #: 91, (91) 
+Element #: 30, Current Node #: 42, Diagonal Node #: 85, (85) 
 Element #: 30, Current Node #: 43, Diagonal Node #: 84, (84) 
-Element #: 30, Current Node #: 42, Diagonal Node #: 85, (85) 
 Element #: 30, Current Node #: 84, Diagonal Node #: 43, (43) 
 Element #: 30, Current Node #: 85, Diagonal Node #: 42, (42) 
+Element #: 30, Current Node #: 91, Diagonal Node #: 36, (36) 
 Element #: 30, Current Node #: 92, Diagonal Node #: 35, (35) 
-Element #: 30, Current Node #: 91, Diagonal Node #: 36, (36) 
 Element #: 31, Current Node #: 36, Diagonal Node #: 93, (93) 
 Element #: 31, Current Node #: 37, Diagonal Node #: 92, (92) 
+Element #: 31, Current Node #: 43, Diagonal Node #: 86, (86) 
 Element #: 31, Current Node #: 44, Diagonal Node #: 85, (85) 
-Element #: 31, Current Node #: 43, Diagonal Node #: 86, (86) 
 Element #: 31, Current Node #: 85, Diagonal Node #: 44, (44) 
 Element #: 31, Current Node #: 86, Diagonal Node #: 43, (43) 
+Element #: 31, Current Node #: 92, Diagonal Node #: 37, (37) 
 Element #: 31, Current Node #: 93, Diagonal Node #: 36, (36) 
-Element #: 31, Current Node #: 92, Diagonal Node #: 37, (37) 
 Element #: 32, Current Node #: 37, Diagonal Node #: 94, (94) 
 Element #: 32, Current Node #: 38, Diagonal Node #: 93, (93) 
+Element #: 32, Current Node #: 44, Diagonal Node #: 87, (87) 
 Element #: 32, Current Node #: 45, Diagonal Node #: 86, (86) 
-Element #: 32, Current Node #: 44, Diagonal Node #: 87, (87) 
 Element #: 32, Current Node #: 86, Diagonal Node #: 45, (45) 
 Element #: 32, Current Node #: 87, Diagonal Node #: 44, (44) 
+Element #: 32, Current Node #: 93, Diagonal Node #: 38, (38) 
 Element #: 32, Current Node #: 94, Diagonal Node #: 37, (37) 
-Element #: 32, Current Node #: 93, Diagonal Node #: 38, (38) 
 Element #: 33, Current Node #: 38, Diagonal Node #: 95, (95) 
 Element #: 33, Current Node #: 39, Diagonal Node #: 94, (94) 
+Element #: 33, Current Node #: 45, Diagonal Node #: 88, (88) 
 Element #: 33, Current Node #: 46, Diagonal Node #: 87, (87) 
-Element #: 33, Current Node #: 45, Diagonal Node #: 88, (88) 
 Element #: 33, Current Node #: 87, Diagonal Node #: 46, (46) 
 Element #: 33, Current Node #: 88, Diagonal Node #: 45, (45) 
+Element #: 33, Current Node #: 94, Diagonal Node #: 39, (39) 
 Element #: 33, Current Node #: 95, Diagonal Node #: 38, (38) 
-Element #: 33, Current Node #: 94, Diagonal Node #: 39, (39) 
 Element #: 34, Current Node #: 39, Diagonal Node #: 96, (96) 
 Element #: 34, Current Node #: 40, Diagonal Node #: 95, (95) 
+Element #: 34, Current Node #: 46, Diagonal Node #: 89, (89) 
 Element #: 34, Current Node #: 47, Diagonal Node #: 88, (88) 
-Element #: 34, Current Node #: 46, Diagonal Node #: 89, (89) 
 Element #: 34, Current Node #: 88, Diagonal Node #: 47, (47) 
 Element #: 34, Current Node #: 89, Diagonal Node #: 46, (46) 
+Element #: 34, Current Node #: 95, Diagonal Node #: 40, (40) 
 Element #: 34, Current Node #: 96, Diagonal Node #: 39, (39) 
-Element #: 34, Current Node #: 95, Diagonal Node #: 40, (40) 
 Element #: 35, Current Node #: 40, Diagonal Node #: 97, (97) 
 Element #: 35, Current Node #: 41, Diagonal Node #: 96, (96) 
+Element #: 35, Current Node #: 47, Diagonal Node #: 90, (90) 
 Element #: 35, Current Node #: 48, Diagonal Node #: 89, (89) 
-Element #: 35, Current Node #: 47, Diagonal Node #: 90, (90) 
 Element #: 35, Current Node #: 89, Diagonal Node #: 48, (48) 
 Element #: 35, Current Node #: 90, Diagonal Node #: 47, (47) 
+Element #: 35, Current Node #: 96, Diagonal Node #: 41, (41) 
 Element #: 35, Current Node #: 97, Diagonal Node #: 40, (40) 
-Element #: 35, Current Node #: 96, Diagonal Node #: 41, (41) 
 Element #: 36, Current Node #: 49, Diagonal Node #: 106, (106) 
 Element #: 36, Current Node #: 50, Diagonal Node #: 105, (105) 
+Element #: 36, Current Node #: 56, Diagonal Node #: 99, (99) 
 Element #: 36, Current Node #: 57, Diagonal Node #: 98, (98) 
-Element #: 36, Current Node #: 56, Diagonal Node #: 99, (99) 
 Element #: 36, Current Node #: 98, Diagonal Node #: 57, (57) 
 Element #: 36, Current Node #: 99, Diagonal Node #: 56, (56) 
+Element #: 36, Current Node #: 105, Diagonal Node #: 50, (50) 
 Element #: 36, Current Node #: 106, Diagonal Node #: 49, (49) 
-Element #: 36, Current Node #: 105, Diagonal Node #: 50, (50) 
 Element #: 37, Current Node #: 50, Diagonal Node #: 107, (107) 
 Element #: 37, Current Node #: 51, Diagonal Node #: 106, (106) 
+Element #: 37, Current Node #: 57, Diagonal Node #: 100, (100) 
 Element #: 37, Current Node #: 58, Diagonal Node #: 99, (99) 
-Element #: 37, Current Node #: 57, Diagonal Node #: 100, (100) 
 Element #: 37, Current Node #: 99, Diagonal Node #: 58, (58) 
 Element #: 37, Current Node #: 100, Diagonal Node #: 57, (57) 
+Element #: 37, Current Node #: 106, Diagonal Node #: 51, (51) 
 Element #: 37, Current Node #: 107, Diagonal Node #: 50, (50) 
-Element #: 37, Current Node #: 106, Diagonal Node #: 51, (51) 
 Element #: 38, Current Node #: 51, Diagonal Node #: 108, (108) 
 Element #: 38, Current Node #: 52, Diagonal Node #: 107, (107) 
+Element #: 38, Current Node #: 58, Diagonal Node #: 101, (101) 
 Element #: 38, Current Node #: 59, Diagonal Node #: 100, (100) 
-Element #: 38, Current Node #: 58, Diagonal Node #: 101, (101) 
 Element #: 38, Current Node #: 100, Diagonal Node #: 59, (59) 
 Element #: 38, Current Node #: 101, Diagonal Node #: 58, (58) 
+Element #: 38, Current Node #: 107, Diagonal Node #: 52, (52) 
 Element #: 38, Current Node #: 108, Diagonal Node #: 51, (51) 
-Element #: 38, Current Node #: 107, Diagonal Node #: 52, (52) 
 Element #: 39, Current Node #: 52, Diagonal Node #: 109, (109) 
 Element #: 39, Current Node #: 53, Diagonal Node #: 108, (108) 
+Element #: 39, Current Node #: 59, Diagonal Node #: 102, (102) 
 Element #: 39, Current Node #: 60, Diagonal Node #: 101, (101) 
-Element #: 39, Current Node #: 59, Diagonal Node #: 102, (102) 
 Element #: 39, Current Node #: 101, Diagonal Node #: 60, (60) 
 Element #: 39, Current Node #: 102, Diagonal Node #: 59, (59) 
+Element #: 39, Current Node #: 108, Diagonal Node #: 53, (53) 
 Element #: 39, Current Node #: 109, Diagonal Node #: 52, (52) 
-Element #: 39, Current Node #: 108, Diagonal Node #: 53, (53) 
 Element #: 40, Current Node #: 53, Diagonal Node #: 110, (110) 
 Element #: 40, Current Node #: 54, Diagonal Node #: 109, (109) 
+Element #: 40, Current Node #: 60, Diagonal Node #: 103, (103) 
 Element #: 40, Current Node #: 61, Diagonal Node #: 102, (102) 
-Element #: 40, Current Node #: 60, Diagonal Node #: 103, (103) 
 Element #: 40, Current Node #: 102, Diagonal Node #: 61, (61) 
 Element #: 40, Current Node #: 103, Diagonal Node #: 60, (60) 
+Element #: 40, Current Node #: 109, Diagonal Node #: 54, (54) 
 Element #: 40, Current Node #: 110, Diagonal Node #: 53, (53) 
-Element #: 40, Current Node #: 109, Diagonal Node #: 54, (54) 
 Element #: 41, Current Node #: 54, Diagonal Node #: 111, (111) 
 Element #: 41, Current Node #: 55, Diagonal Node #: 110, (110) 
+Element #: 41, Current Node #: 61, Diagonal Node #: 104, (104) 
 Element #: 41, Current Node #: 62, Diagonal Node #: 103, (103) 
-Element #: 41, Current Node #: 61, Diagonal Node #: 104, (104) 
 Element #: 41, Current Node #: 103, Diagonal Node #: 62, (62) 
 Element #: 41, Current Node #: 104, Diagonal Node #: 61, (61) 
+Element #: 41, Current Node #: 110, Diagonal Node #: 55, (55) 
 Element #: 41, Current Node #: 111, Diagonal Node #: 54, (54) 
-Element #: 41, Current Node #: 110, Diagonal Node #: 55, (55) 
 Element #: 42, Current Node #: 56, Diagonal Node #: 113, (113) 
 Element #: 42, Current Node #: 57, Diagonal Node #: 112, (112) 
+Element #: 42, Current Node #: 63, Diagonal Node #: 106, (106) 
 Element #: 42, Current Node #: 64, Diagonal Node #: 105, (105) 
-Element #: 42, Current Node #: 63, Diagonal Node #: 106, (106) 
 Element #: 42, Current Node #: 105, Diagonal Node #: 64, (64) 
 Element #: 42, Current Node #: 106, Diagonal Node #: 63, (63) 
+Element #: 42, Current Node #: 112, Diagonal Node #: 57, (57) 
 Element #: 42, Current Node #: 113, Diagonal Node #: 56, (56) 
-Element #: 42, Current Node #: 112, Diagonal Node #: 57, (57) 
 Element #: 43, Current Node #: 57, Diagonal Node #: 114, (114) 
 Element #: 43, Current Node #: 58, Diagonal Node #: 113, (113) 
+Element #: 43, Current Node #: 64, Diagonal Node #: 107, (107) 
 Element #: 43, Current Node #: 65, Diagonal Node #: 106, (106) 
-Element #: 43, Current Node #: 64, Diagonal Node #: 107, (107) 
 Element #: 43, Current Node #: 106, Diagonal Node #: 65, (65) 
 Element #: 43, Current Node #: 107, Diagonal Node #: 64, (64) 
+Element #: 43, Current Node #: 113, Diagonal Node #: 58, (58) 
 Element #: 43, Current Node #: 114, Diagonal Node #: 57, (57) 
-Element #: 43, Current Node #: 113, Diagonal Node #: 58, (58) 
 Element #: 44, Current Node #: 58, Diagonal Node #: 115, (115) 
 Element #: 44, Current Node #: 59, Diagonal Node #: 114, (114) 
+Element #: 44, Current Node #: 65, Diagonal Node #: 108, (108) 
 Element #: 44, Current Node #: 66, Diagonal Node #: 107, (107) 
-Element #: 44, Current Node #: 65, Diagonal Node #: 108, (108) 
 Element #: 44, Current Node #: 107, Diagonal Node #: 66, (66) 
 Element #: 44, Current Node #: 108, Diagonal Node #: 65, (65) 
+Element #: 44, Current Node #: 114, Diagonal Node #: 59, (59) 
 Element #: 44, Current Node #: 115, Diagonal Node #: 58, (58) 
-Element #: 44, Current Node #: 114, Diagonal Node #: 59, (59) 
 Element #: 45, Current Node #: 59, Diagonal Node #: 116, (116) 
 Element #: 45, Current Node #: 60, Diagonal Node #: 115, (115) 
+Element #: 45, Current Node #: 66, Diagonal Node #: 109, (109) 
 Element #: 45, Current Node #: 67, Diagonal Node #: 108, (108) 
-Element #: 45, Current Node #: 66, Diagonal Node #: 109, (109) 
 Element #: 45, Current Node #: 108, Diagonal Node #: 67, (67) 
 Element #: 45, Current Node #: 109, Diagonal Node #: 66, (66) 
+Element #: 45, Current Node #: 115, Diagonal Node #: 60, (60) 
 Element #: 45, Current Node #: 116, Diagonal Node #: 59, (59) 
-Element #: 45, Current Node #: 115, Diagonal Node #: 60, (60) 
 Element #: 46, Current Node #: 60, Diagonal Node #: 117, (117) 
 Element #: 46, Current Node #: 61, Diagonal Node #: 116, (116) 
+Element #: 46, Current Node #: 67, Diagonal Node #: 110, (110) 
 Element #: 46, Current Node #: 68, Diagonal Node #: 109, (109) 
-Element #: 46, Current Node #: 67, Diagonal Node #: 110, (110) 
 Element #: 46, Current Node #: 109, Diagonal Node #: 68, (68) 
 Element #: 46, Current Node #: 110, Diagonal Node #: 67, (67) 
+Element #: 46, Current Node #: 116, Diagonal Node #: 61, (61) 
 Element #: 46, Current Node #: 117, Diagonal Node #: 60, (60) 
-Element #: 46, Current Node #: 116, Diagonal Node #: 61, (61) 
 Element #: 47, Current Node #: 61, Diagonal Node #: 118, (118) 
 Element #: 47, Current Node #: 62, Diagonal Node #: 117, (117) 
+Element #: 47, Current Node #: 68, Diagonal Node #: 111, (111) 
 Element #: 47, Current Node #: 69, Diagonal Node #: 110, (110) 
-Element #: 47, Current Node #: 68, Diagonal Node #: 111, (111) 
 Element #: 47, Current Node #: 110, Diagonal Node #: 69, (69) 
 Element #: 47, Current Node #: 111, Diagonal Node #: 68, (68) 
+Element #: 47, Current Node #: 117, Diagonal Node #: 62, (62) 
 Element #: 47, Current Node #: 118, Diagonal Node #: 61, (61) 
-Element #: 47, Current Node #: 117, Diagonal Node #: 62, (62) 
 Element #: 48, Current Node #: 63, Diagonal Node #: 120, (120) 
 Element #: 48, Current Node #: 64, Diagonal Node #: 119, (119) 
+Element #: 48, Current Node #: 70, Diagonal Node #: 113, (113) 
 Element #: 48, Current Node #: 71, Diagonal Node #: 112, (112) 
-Element #: 48, Current Node #: 70, Diagonal Node #: 113, (113) 
 Element #: 48, Current Node #: 112, Diagonal Node #: 71, (71) 
 Element #: 48, Current Node #: 113, Diagonal Node #: 70, (70) 
+Element #: 48, Current Node #: 119, Diagonal Node #: 64, (64) 
 Element #: 48, Current Node #: 120, Diagonal Node #: 63, (63) 
-Element #: 48, Current Node #: 119, Diagonal Node #: 64, (64) 
 Element #: 49, Current Node #: 64, Diagonal Node #: 121, (121) 
 Element #: 49, Current Node #: 65, Diagonal Node #: 120, (120) 
+Element #: 49, Current Node #: 71, Diagonal Node #: 114, (114) 
 Element #: 49, Current Node #: 72, Diagonal Node #: 113, (113) 
-Element #: 49, Current Node #: 71, Diagonal Node #: 114, (114) 
 Element #: 49, Current Node #: 113, Diagonal Node #: 72, (72) 
 Element #: 49, Current Node #: 114, Diagonal Node #: 71, (71) 
+Element #: 49, Current Node #: 120, Diagonal Node #: 65, (65) 
 Element #: 49, Current Node #: 121, Diagonal Node #: 64, (64) 
-Element #: 49, Current Node #: 120, Diagonal Node #: 65, (65) 
 Element #: 50, Current Node #: 65, Diagonal Node #: 122, (122) 
 Element #: 50, Current Node #: 66, Diagonal Node #: 121, (121) 
+Element #: 50, Current Node #: 72, Diagonal Node #: 115, (115) 
 Element #: 50, Current Node #: 73, Diagonal Node #: 114, (114) 
-Element #: 50, Current Node #: 72, Diagonal Node #: 115, (115) 
 Element #: 50, Current Node #: 114, Diagonal Node #: 73, (73) 
 Element #: 50, Current Node #: 115, Diagonal Node #: 72, (72) 
+Element #: 50, Current Node #: 121, Diagonal Node #: 66, (66) 
 Element #: 50, Current Node #: 122, Diagonal Node #: 65, (65) 
-Element #: 50, Current Node #: 121, Diagonal Node #: 66, (66) 
 Element #: 51, Current Node #: 66, Diagonal Node #: 123, (123) 
 Element #: 51, Current Node #: 67, Diagonal Node #: 122, (122) 
+Element #: 51, Current Node #: 73, Diagonal Node #: 116, (116) 
 Element #: 51, Current Node #: 74, Diagonal Node #: 115, (115) 
-Element #: 51, Current Node #: 73, Diagonal Node #: 116, (116) 
 Element #: 51, Current Node #: 115, Diagonal Node #: 74, (74) 
 Element #: 51, Current Node #: 116, Diagonal Node #: 73, (73) 
+Element #: 51, Current Node #: 122, Diagonal Node #: 67, (67) 
 Element #: 51, Current Node #: 123, Diagonal Node #: 66, (66) 
-Element #: 51, Current Node #: 122, Diagonal Node #: 67, (67) 
 Element #: 52, Current Node #: 67, Diagonal Node #: 124, (124) 
 Element #: 52, Current Node #: 68, Diagonal Node #: 123, (123) 
+Element #: 52, Current Node #: 74, Diagonal Node #: 117, (117) 
 Element #: 52, Current Node #: 75, Diagonal Node #: 116, (116) 
-Element #: 52, Current Node #: 74, Diagonal Node #: 117, (117) 
 Element #: 52, Current Node #: 116, Diagonal Node #: 75, (75) 
 Element #: 52, Current Node #: 117, Diagonal Node #: 74, (74) 
+Element #: 52, Current Node #: 123, Diagonal Node #: 68, (68) 
 Element #: 52, Current Node #: 124, Diagonal Node #: 67, (67) 
-Element #: 52, Current Node #: 123, Diagonal Node #: 68, (68) 
 Element #: 53, Current Node #: 68, Diagonal Node #: 125, (125) 
 Element #: 53, Current Node #: 69, Diagonal Node #: 124, (124) 
+Element #: 53, Current Node #: 75, Diagonal Node #: 118, (118) 
 Element #: 53, Current Node #: 76, Diagonal Node #: 117, (117) 
-Element #: 53, Current Node #: 75, Diagonal Node #: 118, (118) 
 Element #: 53, Current Node #: 117, Diagonal Node #: 76, (76) 
 Element #: 53, Current Node #: 118, Diagonal Node #: 75, (75) 
+Element #: 53, Current Node #: 124, Diagonal Node #: 69, (69) 
 Element #: 53, Current Node #: 125, Diagonal Node #: 68, (68) 
-Element #: 53, Current Node #: 124, Diagonal Node #: 69, (69) 
 Element #: 54, Current Node #: 70, Diagonal Node #: 127, (127) 
 Element #: 54, Current Node #: 71, Diagonal Node #: 126, (126) 
+Element #: 54, Current Node #: 77, Diagonal Node #: 120, (120) 
 Element #: 54, Current Node #: 78, Diagonal Node #: 119, (119) 
-Element #: 54, Current Node #: 77, Diagonal Node #: 120, (120) 
 Element #: 54, Current Node #: 119, Diagonal Node #: 78, (78) 
 Element #: 54, Current Node #: 120, Diagonal Node #: 77, (77) 
+Element #: 54, Current Node #: 126, Diagonal Node #: 71, (71) 
 Element #: 54, Current Node #: 127, Diagonal Node #: 70, (70) 
-Element #: 54, Current Node #: 126, Diagonal Node #: 71, (71) 
 Element #: 55, Current Node #: 71, Diagonal Node #: 128, (128) 
 Element #: 55, Current Node #: 72, Diagonal Node #: 127, (127) 
+Element #: 55, Current Node #: 78, Diagonal Node #: 121, (121) 
 Element #: 55, Current Node #: 79, Diagonal Node #: 120, (120) 
-Element #: 55, Current Node #: 78, Diagonal Node #: 121, (121) 
 Element #: 55, Current Node #: 120, Diagonal Node #: 79, (79) 
 Element #: 55, Current Node #: 121, Diagonal Node #: 78, (78) 
+Element #: 55, Current Node #: 127, Diagonal Node #: 72, (72) 
 Element #: 55, Current Node #: 128, Diagonal Node #: 71, (71) 
-Element #: 55, Current Node #: 127, Diagonal Node #: 72, (72) 
 Element #: 56, Current Node #: 72, Diagonal Node #: 129, (129) 
 Element #: 56, Current Node #: 73, Diagonal Node #: 128, (128) 
+Element #: 56, Current Node #: 79, Diagonal Node #: 122, (122) 
 Element #: 56, Current Node #: 80, Diagonal Node #: 121, (121) 
-Element #: 56, Current Node #: 79, Diagonal Node #: 122, (122) 
 Element #: 56, Current Node #: 121, Diagonal Node #: 80, (80) 
 Element #: 56, Current Node #: 122, Diagonal Node #: 79, (79) 
+Element #: 56, Current Node #: 128, Diagonal Node #: 73, (73) 
 Element #: 56, Current Node #: 129, Diagonal Node #: 72, (72) 
-Element #: 56, Current Node #: 128, Diagonal Node #: 73, (73) 
 Element #: 57, Current Node #: 73, Diagonal Node #: 130, (130) 
 Element #: 57, Current Node #: 74, Diagonal Node #: 129, (129) 
+Element #: 57, Current Node #: 80, Diagonal Node #: 123, (123) 
 Element #: 57, Current Node #: 81, Diagonal Node #: 122, (122) 
-Element #: 57, Current Node #: 80, Diagonal Node #: 123, (123) 
 Element #: 57, Current Node #: 122, Diagonal Node #: 81, (81) 
 Element #: 57, Current Node #: 123, Diagonal Node #: 80, (80) 
+Element #: 57, Current Node #: 129, Diagonal Node #: 74, (74) 
 Element #: 57, Current Node #: 130, Diagonal Node #: 73, (73) 
-Element #: 57, Current Node #: 129, Diagonal Node #: 74, (74) 
 Element #: 58, Current Node #: 74, Diagonal Node #: 131, (131) 
 Element #: 58, Current Node #: 75, Diagonal Node #: 130, (130) 
+Element #: 58, Current Node #: 81, Diagonal Node #: 124, (124) 
 Element #: 58, Current Node #: 82, Diagonal Node #: 123, (123) 
-Element #: 58, Current Node #: 81, Diagonal Node #: 124, (124) 
 Element #: 58, Current Node #: 123, Diagonal Node #: 82, (82) 
 Element #: 58, Current Node #: 124, Diagonal Node #: 81, (81) 
+Element #: 58, Current Node #: 130, Diagonal Node #: 75, (75) 
 Element #: 58, Current Node #: 131, Diagonal Node #: 74, (74) 
-Element #: 58, Current Node #: 130, Diagonal Node #: 75, (75) 
 Element #: 59, Current Node #: 75, Diagonal Node #: 132, (132) 
 Element #: 59, Current Node #: 76, Diagonal Node #: 131, (131) 
+Element #: 59, Current Node #: 82, Diagonal Node #: 125, (125) 
 Element #: 59, Current Node #: 83, Diagonal Node #: 124, (124) 
-Element #: 59, Current Node #: 82, Diagonal Node #: 125, (125) 
 Element #: 59, Current Node #: 124, Diagonal Node #: 83, (83) 
 Element #: 59, Current Node #: 125, Diagonal Node #: 82, (82) 
+Element #: 59, Current Node #: 131, Diagonal Node #: 76, (76) 
 Element #: 59, Current Node #: 132, Diagonal Node #: 75, (75) 
-Element #: 59, Current Node #: 131, Diagonal Node #: 76, (76) 
 Element #: 60, Current Node #: 77, Diagonal Node #: 134, (134) 
 Element #: 60, Current Node #: 78, Diagonal Node #: 133, (133) 
+Element #: 60, Current Node #: 84, Diagonal Node #: 127, (127) 
 Element #: 60, Current Node #: 85, Diagonal Node #: 126, (126) 
-Element #: 60, Current Node #: 84, Diagonal Node #: 127, (127) 
 Element #: 60, Current Node #: 126, Diagonal Node #: 85, (85) 
 Element #: 60, Current Node #: 127, Diagonal Node #: 84, (84) 
+Element #: 60, Current Node #: 133, Diagonal Node #: 78, (78) 
 Element #: 60, Current Node #: 134, Diagonal Node #: 77, (77) 
-Element #: 60, Current Node #: 133, Diagonal Node #: 78, (78) 
 Element #: 61, Current Node #: 78, Diagonal Node #: 135, (135) 
 Element #: 61, Current Node #: 79, Diagonal Node #: 134, (134) 
+Element #: 61, Current Node #: 85, Diagonal Node #: 128, (128) 
 Element #: 61, Current Node #: 86, Diagonal Node #: 127, (127) 
-Element #: 61, Current Node #: 85, Diagonal Node #: 128, (128) 
 Element #: 61, Current Node #: 127, Diagonal Node #: 86, (86) 
 Element #: 61, Current Node #: 128, Diagonal Node #: 85, (85) 
+Element #: 61, Current Node #: 134, Diagonal Node #: 79, (79) 
 Element #: 61, Current Node #: 135, Diagonal Node #: 78, (78) 
-Element #: 61, Current Node #: 134, Diagonal Node #: 79, (79) 
 Element #: 62, Current Node #: 79, Diagonal Node #: 136, (136) 
 Element #: 62, Current Node #: 80, Diagonal Node #: 135, (135) 
+Element #: 62, Current Node #: 86, Diagonal Node #: 129, (129) 
 Element #: 62, Current Node #: 87, Diagonal Node #: 128, (128) 
-Element #: 62, Current Node #: 86, Diagonal Node #: 129, (129) 
 Element #: 62, Current Node #: 128, Diagonal Node #: 87, (87) 
 Element #: 62, Current Node #: 129, Diagonal Node #: 86, (86) 
+Element #: 62, Current Node #: 135, Diagonal Node #: 80, (80) 
 Element #: 62, Current Node #: 136, Diagonal Node #: 79, (79) 
-Element #: 62, Current Node #: 135, Diagonal Node #: 80, (80) 
 Element #: 63, Current Node #: 80, Diagonal Node #: 137, (137) 
 Element #: 63, Current Node #: 81, Diagonal Node #: 136, (136) 
+Element #: 63, Current Node #: 87, Diagonal Node #: 130, (130) 
 Element #: 63, Current Node #: 88, Diagonal Node #: 129, (129) 
-Element #: 63, Current Node #: 87, Diagonal Node #: 130, (130) 
 Element #: 63, Current Node #: 129, Diagonal Node #: 88, (88) 
 Element #: 63, Current Node #: 130, Diagonal Node #: 87, (87) 
+Element #: 63, Current Node #: 136, Diagonal Node #: 81, (81) 
 Element #: 63, Current Node #: 137, Diagonal Node #: 80, (80) 
-Element #: 63, Current Node #: 136, Diagonal Node #: 81, (81) 
 Element #: 64, Current Node #: 81, Diagonal Node #: 138, (138) 
 Element #: 64, Current Node #: 82, Diagonal Node #: 137, (137) 
+Element #: 64, Current Node #: 88, Diagonal Node #: 131, (131) 
 Element #: 64, Current Node #: 89, Diagonal Node #: 130, (130) 
-Element #: 64, Current Node #: 88, Diagonal Node #: 131, (131) 
 Element #: 64, Current Node #: 130, Diagonal Node #: 89, (89) 
 Element #: 64, Current Node #: 131, Diagonal Node #: 88, (88) 
+Element #: 64, Current Node #: 137, Diagonal Node #: 82, (82) 
 Element #: 64, Current Node #: 138, Diagonal Node #: 81, (81) 
-Element #: 64, Current Node #: 137, Diagonal Node #: 82, (82) 
 Element #: 65, Current Node #: 82, Diagonal Node #: 139, (139) 
 Element #: 65, Current Node #: 83, Diagonal Node #: 138, (138) 
+Element #: 65, Current Node #: 89, Diagonal Node #: 132, (132) 
 Element #: 65, Current Node #: 90, Diagonal Node #: 131, (131) 
-Element #: 65, Current Node #: 89, Diagonal Node #: 132, (132) 
 Element #: 65, Current Node #: 131, Diagonal Node #: 90, (90) 
 Element #: 65, Current Node #: 132, Diagonal Node #: 89, (89) 
+Element #: 65, Current Node #: 138, Diagonal Node #: 83, (83) 
 Element #: 65, Current Node #: 139, Diagonal Node #: 82, (82) 
-Element #: 65, Current Node #: 138, Diagonal Node #: 83, (83) 
 Element #: 66, Current Node #: 84, Diagonal Node #: 141, (141) 
 Element #: 66, Current Node #: 85, Diagonal Node #: 140, (140) 
+Element #: 66, Current Node #: 91, Diagonal Node #: 134, (134) 
 Element #: 66, Current Node #: 92, Diagonal Node #: 133, (133) 
-Element #: 66, Current Node #: 91, Diagonal Node #: 134, (134) 
 Element #: 66, Current Node #: 133, Diagonal Node #: 92, (92) 
 Element #: 66, Current Node #: 134, Diagonal Node #: 91, (91) 
+Element #: 66, Current Node #: 140, Diagonal Node #: 85, (85) 
 Element #: 66, Current Node #: 141, Diagonal Node #: 84, (84) 
-Element #: 66, Current Node #: 140, Diagonal Node #: 85, (85) 
 Element #: 67, Current Node #: 85, Diagonal Node #: 142, (142) 
 Element #: 67, Current Node #: 86, Diagonal Node #: 141, (141) 
+Element #: 67, Current Node #: 92, Diagonal Node #: 135, (135) 
 Element #: 67, Current Node #: 93, Diagonal Node #: 134, (134) 
-Element #: 67, Current Node #: 92, Diagonal Node #: 135, (135) 
 Element #: 67, Current Node #: 134, Diagonal Node #: 93, (93) 
 Element #: 67, Current Node #: 135, Diagonal Node #: 92, (92) 
+Element #: 67, Current Node #: 141, Diagonal Node #: 86, (86) 
 Element #: 67, Current Node #: 142, Diagonal Node #: 85, (85) 
-Element #: 67, Current Node #: 141, Diagonal Node #: 86, (86) 
 Element #: 68, Current Node #: 86, Diagonal Node #: 143, (143) 
 Element #: 68, Current Node #: 87, Diagonal Node #: 142, (142) 
+Element #: 68, Current Node #: 93, Diagonal Node #: 136, (136) 
 Element #: 68, Current Node #: 94, Diagonal Node #: 135, (135) 
-Element #: 68, Current Node #: 93, Diagonal Node #: 136, (136) 
 Element #: 68, Current Node #: 135, Diagonal Node #: 94, (94) 
 Element #: 68, Current Node #: 136, Diagonal Node #: 93, (93) 
+Element #: 68, Current Node #: 142, Diagonal Node #: 87, (87) 
 Element #: 68, Current Node #: 143, Diagonal Node #: 86, (86) 
-Element #: 68, Current Node #: 142, Diagonal Node #: 87, (87) 
 Element #: 69, Current Node #: 87, Diagonal Node #: 144, (144) 
 Element #: 69, Current Node #: 88, Diagonal Node #: 143, (143) 
+Element #: 69, Current Node #: 94, Diagonal Node #: 137, (137) 
 Element #: 69, Current Node #: 95, Diagonal Node #: 136, (136) 
-Element #: 69, Current Node #: 94, Diagonal Node #: 137, (137) 
 Element #: 69, Current Node #: 136, Diagonal Node #: 95, (95) 
 Element #: 69, Current Node #: 137, Diagonal Node #: 94, (94) 
+Element #: 69, Current Node #: 143, Diagonal Node #: 88, (88) 
 Element #: 69, Current Node #: 144, Diagonal Node #: 87, (87) 
-Element #: 69, Current Node #: 143, Diagonal Node #: 88, (88) 
 Element #: 70, Current Node #: 88, Diagonal Node #: 145, (145) 
 Element #: 70, Current Node #: 89, Diagonal Node #: 144, (144) 
+Element #: 70, Current Node #: 95, Diagonal Node #: 138, (138) 
 Element #: 70, Current Node #: 96, Diagonal Node #: 137, (137) 
-Element #: 70, Current Node #: 95, Diagonal Node #: 138, (138) 
 Element #: 70, Current Node #: 137, Diagonal Node #: 96, (96) 
 Element #: 70, Current Node #: 138, Diagonal Node #: 95, (95) 
+Element #: 70, Current Node #: 144, Diagonal Node #: 89, (89) 
 Element #: 70, Current Node #: 145, Diagonal Node #: 88, (88) 
-Element #: 70, Current Node #: 144, Diagonal Node #: 89, (89) 
 Element #: 71, Current Node #: 89, Diagonal Node #: 146, (146) 
 Element #: 71, Current Node #: 90, Diagonal Node #: 145, (145) 
+Element #: 71, Current Node #: 96, Diagonal Node #: 139, (139) 
 Element #: 71, Current Node #: 97, Diagonal Node #: 138, (138) 
-Element #: 71, Current Node #: 96, Diagonal Node #: 139, (139) 
 Element #: 71, Current Node #: 138, Diagonal Node #: 97, (97) 
 Element #: 71, Current Node #: 139, Diagonal Node #: 96, (96) 
+Element #: 71, Current Node #: 145, Diagonal Node #: 90, (90) 
 Element #: 71, Current Node #: 146, Diagonal Node #: 89, (89) 
-Element #: 71, Current Node #: 145, Diagonal Node #: 90, (90) 
 Element #: 72, Current Node #: 98, Diagonal Node #: 155, (155) 
 Element #: 72, Current Node #: 99, Diagonal Node #: 154, (154) 
+Element #: 72, Current Node #: 105, Diagonal Node #: 148, (148) 
 Element #: 72, Current Node #: 106, Diagonal Node #: 147, (147) 
-Element #: 72, Current Node #: 105, Diagonal Node #: 148, (148) 
 Element #: 72, Current Node #: 147, Diagonal Node #: 106, (106) 
 Element #: 72, Current Node #: 148, Diagonal Node #: 105, (105) 
+Element #: 72, Current Node #: 154, Diagonal Node #: 99, (99) 
 Element #: 72, Current Node #: 155, Diagonal Node #: 98, (98) 
-Element #: 72, Current Node #: 154, Diagonal Node #: 99, (99) 
 Element #: 73, Current Node #: 99, Diagonal Node #: 156, (156) 
 Element #: 73, Current Node #: 100, Diagonal Node #: 155, (155) 
+Element #: 73, Current Node #: 106, Diagonal Node #: 149, (149) 
 Element #: 73, Current Node #: 107, Diagonal Node #: 148, (148) 
-Element #: 73, Current Node #: 106, Diagonal Node #: 149, (149) 
 Element #: 73, Current Node #: 148, Diagonal Node #: 107, (107) 
 Element #: 73, Current Node #: 149, Diagonal Node #: 106, (106) 
+Element #: 73, Current Node #: 155, Diagonal Node #: 100, (100) 
 Element #: 73, Current Node #: 156, Diagonal Node #: 99, (99) 
-Element #: 73, Current Node #: 155, Diagonal Node #: 100, (100) 
 Element #: 74, Current Node #: 100, Diagonal Node #: 157, (157) 
 Element #: 74, Current Node #: 101, Diagonal Node #: 156, (156) 
+Element #: 74, Current Node #: 107, Diagonal Node #: 150, (150) 
 Element #: 74, Current Node #: 108, Diagonal Node #: 149, (149) 
-Element #: 74, Current Node #: 107, Diagonal Node #: 150, (150) 
 Element #: 74, Current Node #: 149, Diagonal Node #: 108, (108) 
 Element #: 74, Current Node #: 150, Diagonal Node #: 107, (107) 
+Element #: 74, Current Node #: 156, Diagonal Node #: 101, (101) 
 Element #: 74, Current Node #: 157, Diagonal Node #: 100, (100) 
-Element #: 74, Current Node #: 156, Diagonal Node #: 101, (101) 
 Element #: 75, Current Node #: 101, Diagonal Node #: 158, (158) 
 Element #: 75, Current Node #: 102, Diagonal Node #: 157, (157) 
+Element #: 75, Current Node #: 108, Diagonal Node #: 151, (151) 
 Element #: 75, Current Node #: 109, Diagonal Node #: 150, (150) 
-Element #: 75, Current Node #: 108, Diagonal Node #: 151, (151) 
 Element #: 75, Current Node #: 150, Diagonal Node #: 109, (109) 
 Element #: 75, Current Node #: 151, Diagonal Node #: 108, (108) 
+Element #: 75, Current Node #: 157, Diagonal Node #: 102, (102) 
 Element #: 75, Current Node #: 158, Diagonal Node #: 101, (101) 
-Element #: 75, Current Node #: 157, Diagonal Node #: 102, (102) 
 Element #: 76, Current Node #: 102, Diagonal Node #: 159, (159) 
 Element #: 76, Current Node #: 103, Diagonal Node #: 158, (158) 
+Element #: 76, Current Node #: 109, Diagonal Node #: 152, (152) 
 Element #: 76, Current Node #: 110, Diagonal Node #: 151, (151) 
-Element #: 76, Current Node #: 109, Diagonal Node #: 152, (152) 
 Element #: 76, Current Node #: 151, Diagonal Node #: 110, (110) 
 Element #: 76, Current Node #: 152, Diagonal Node #: 109, (109) 
+Element #: 76, Current Node #: 158, Diagonal Node #: 103, (103) 
 Element #: 76, Current Node #: 159, Diagonal Node #: 102, (102) 
-Element #: 76, Current Node #: 158, Diagonal Node #: 103, (103) 
 Element #: 77, Current Node #: 103, Diagonal Node #: 160, (160) 
 Element #: 77, Current Node #: 104, Diagonal Node #: 159, (159) 
+Element #: 77, Current Node #: 110, Diagonal Node #: 153, (153) 
 Element #: 77, Current Node #: 111, Diagonal Node #: 152, (152) 
-Element #: 77, Current Node #: 110, Diagonal Node #: 153, (153) 
 Element #: 77, Current Node #: 152, Diagonal Node #: 111, (111) 
 Element #: 77, Current Node #: 153, Diagonal Node #: 110, (110) 
+Element #: 77, Current Node #: 159, Diagonal Node #: 104, (104) 
 Element #: 77, Current Node #: 160, Diagonal Node #: 103, (103) 
-Element #: 77, Current Node #: 159, Diagonal Node #: 104, (104) 
 Element #: 78, Current Node #: 105, Diagonal Node #: 162, (162) 
 Element #: 78, Current Node #: 106, Diagonal Node #: 161, (161) 
+Element #: 78, Current Node #: 112, Diagonal Node #: 155, (155) 
 Element #: 78, Current Node #: 113, Diagonal Node #: 154, (154) 
-Element #: 78, Current Node #: 112, Diagonal Node #: 155, (155) 
 Element #: 78, Current Node #: 154, Diagonal Node #: 113, (113) 
 Element #: 78, Current Node #: 155, Diagonal Node #: 112, (112) 
+Element #: 78, Current Node #: 161, Diagonal Node #: 106, (106) 
 Element #: 78, Current Node #: 162, Diagonal Node #: 105, (105) 
-Element #: 78, Current Node #: 161, Diagonal Node #: 106, (106) 
 Element #: 79, Current Node #: 106, Diagonal Node #: 163, (163) 
 Element #: 79, Current Node #: 107, Diagonal Node #: 162, (162) 
+Element #: 79, Current Node #: 113, Diagonal Node #: 156, (156) 
 Element #: 79, Current Node #: 114, Diagonal Node #: 155, (155) 
-Element #: 79, Current Node #: 113, Diagonal Node #: 156, (156) 
 Element #: 79, Current Node #: 155, Diagonal Node #: 114, (114) 
 Element #: 79, Current Node #: 156, Diagonal Node #: 113, (113) 
+Element #: 79, Current Node #: 162, Diagonal Node #: 107, (107) 
 Element #: 79, Current Node #: 163, Diagonal Node #: 106, (106) 
-Element #: 79, Current Node #: 162, Diagonal Node #: 107, (107) 
 Element #: 80, Current Node #: 107, Diagonal Node #: 164, (164) 
 Element #: 80, Current Node #: 108, Diagonal Node #: 163, (163) 
+Element #: 80, Current Node #: 114, Diagonal Node #: 157, (157) 
 Element #: 80, Current Node #: 115, Diagonal Node #: 156, (156) 
-Element #: 80, Current Node #: 114, Diagonal Node #: 157, (157) 
 Element #: 80, Current Node #: 156, Diagonal Node #: 115, (115) 
 Element #: 80, Current Node #: 157, Diagonal Node #: 114, (114) 
+Element #: 80, Current Node #: 163, Diagonal Node #: 108, (108) 
 Element #: 80, Current Node #: 164, Diagonal Node #: 107, (107) 
-Element #: 80, Current Node #: 163, Diagonal Node #: 108, (108) 
 Element #: 81, Current Node #: 108, Diagonal Node #: 165, (165) 
 Element #: 81, Current Node #: 109, Diagonal Node #: 164, (164) 
+Element #: 81, Current Node #: 115, Diagonal Node #: 158, (158) 
 Element #: 81, Current Node #: 116, Diagonal Node #: 157, (157) 
-Element #: 81, Current Node #: 115, Diagonal Node #: 158, (158) 
 Element #: 81, Current Node #: 157, Diagonal Node #: 116, (116) 
 Element #: 81, Current Node #: 158, Diagonal Node #: 115, (115) 
+Element #: 81, Current Node #: 164, Diagonal Node #: 109, (109) 
 Element #: 81, Current Node #: 165, Diagonal Node #: 108, (108) 
-Element #: 81, Current Node #: 164, Diagonal Node #: 109, (109) 
 Element #: 82, Current Node #: 109, Diagonal Node #: 166, (166) 
 Element #: 82, Current Node #: 110, Diagonal Node #: 165, (165) 
+Element #: 82, Current Node #: 116, Diagonal Node #: 159, (159) 
 Element #: 82, Current Node #: 117, Diagonal Node #: 158, (158) 
-Element #: 82, Current Node #: 116, Diagonal Node #: 159, (159) 
 Element #: 82, Current Node #: 158, Diagonal Node #: 117, (117) 
 Element #: 82, Current Node #: 159, Diagonal Node #: 116, (116) 
+Element #: 82, Current Node #: 165, Diagonal Node #: 110, (110) 
 Element #: 82, Current Node #: 166, Diagonal Node #: 109, (109) 
-Element #: 82, Current Node #: 165, Diagonal Node #: 110, (110) 
 Element #: 83, Current Node #: 110, Diagonal Node #: 167, (167) 
 Element #: 83, Current Node #: 111, Diagonal Node #: 166, (166) 
+Element #: 83, Current Node #: 117, Diagonal Node #: 160, (160) 
 Element #: 83, Current Node #: 118, Diagonal Node #: 159, (159) 
-Element #: 83, Current Node #: 117, Diagonal Node #: 160, (160) 
 Element #: 83, Current Node #: 159, Diagonal Node #: 118, (118) 
 Element #: 83, Current Node #: 160, Diagonal Node #: 117, (117) 
+Element #: 83, Current Node #: 166, Diagonal Node #: 111, (111) 
 Element #: 83, Current Node #: 167, Diagonal Node #: 110, (110) 
-Element #: 83, Current Node #: 166, Diagonal Node #: 111, (111) 
 Element #: 84, Current Node #: 112, Diagonal Node #: 169, (169) 
 Element #: 84, Current Node #: 113, Diagonal Node #: 168, (168) 
+Element #: 84, Current Node #: 119, Diagonal Node #: 162, (162) 
 Element #: 84, Current Node #: 120, Diagonal Node #: 161, (161) 
-Element #: 84, Current Node #: 119, Diagonal Node #: 162, (162) 
 Element #: 84, Current Node #: 161, Diagonal Node #: 120, (120) 
 Element #: 84, Current Node #: 162, Diagonal Node #: 119, (119) 
+Element #: 84, Current Node #: 168, Diagonal Node #: 113, (113) 
 Element #: 84, Current Node #: 169, Diagonal Node #: 112, (112) 
-Element #: 84, Current Node #: 168, Diagonal Node #: 113, (113) 
 Element #: 85, Current Node #: 113, Diagonal Node #: 170, (170) 
 Element #: 85, Current Node #: 114, Diagonal Node #: 169, (169) 
+Element #: 85, Current Node #: 120, Diagonal Node #: 163, (163) 
 Element #: 85, Current Node #: 121, Diagonal Node #: 162, (162) 
-Element #: 85, Current Node #: 120, Diagonal Node #: 163, (163) 
 Element #: 85, Current Node #: 162, Diagonal Node #: 121, (121) 
 Element #: 85, Current Node #: 163, Diagonal Node #: 120, (120) 
+Element #: 85, Current Node #: 169, Diagonal Node #: 114, (114) 
 Element #: 85, Current Node #: 170, Diagonal Node #: 113, (113) 
-Element #: 85, Current Node #: 169, Diagonal Node #: 114, (114) 
 Element #: 86, Current Node #: 114, Diagonal Node #: 171, (171) 
 Element #: 86, Current Node #: 115, Diagonal Node #: 170, (170) 
+Element #: 86, Current Node #: 121, Diagonal Node #: 164, (164) 
 Element #: 86, Current Node #: 122, Diagonal Node #: 163, (163) 
-Element #: 86, Current Node #: 121, Diagonal Node #: 164, (164) 
 Element #: 86, Current Node #: 163, Diagonal Node #: 122, (122) 
 Element #: 86, Current Node #: 164, Diagonal Node #: 121, (121) 
+Element #: 86, Current Node #: 170, Diagonal Node #: 115, (115) 
 Element #: 86, Current Node #: 171, Diagonal Node #: 114, (114) 
-Element #: 86, Current Node #: 170, Diagonal Node #: 115, (115) 
 Element #: 87, Current Node #: 115, Diagonal Node #: 172, (172) 
 Element #: 87, Current Node #: 116, Diagonal Node #: 171, (171) 
+Element #: 87, Current Node #: 122, Diagonal Node #: 165, (165) 
 Element #: 87, Current Node #: 123, Diagonal Node #: 164, (164) 
-Element #: 87, Current Node #: 122, Diagonal Node #: 165, (165) 
 Element #: 87, Current Node #: 164, Diagonal Node #: 123, (123) 
 Element #: 87, Current Node #: 165, Diagonal Node #: 122, (122) 
+Element #: 87, Current Node #: 171, Diagonal Node #: 116, (116) 
 Element #: 87, Current Node #: 172, Diagonal Node #: 115, (115) 
-Element #: 87, Current Node #: 171, Diagonal Node #: 116, (116) 
 Element #: 88, Current Node #: 116, Diagonal Node #: 173, (173) 
 Element #: 88, Current Node #: 117, Diagonal Node #: 172, (172) 
+Element #: 88, Current Node #: 123, Diagonal Node #: 166, (166) 
 Element #: 88, Current Node #: 124, Diagonal Node #: 165, (165) 
-Element #: 88, Current Node #: 123, Diagonal Node #: 166, (166) 
 Element #: 88, Current Node #: 165, Diagonal Node #: 124, (124) 
 Element #: 88, Current Node #: 166, Diagonal Node #: 123, (123) 
+Element #: 88, Current Node #: 172, Diagonal Node #: 117, (117) 
 Element #: 88, Current Node #: 173, Diagonal Node #: 116, (116) 
-Element #: 88, Current Node #: 172, Diagonal Node #: 117, (117) 
 Element #: 89, Current Node #: 117, Diagonal Node #: 174, (174) 
 Element #: 89, Current Node #: 118, Diagonal Node #: 173, (173) 
+Element #: 89, Current Node #: 124, Diagonal Node #: 167, (167) 
 Element #: 89, Current Node #: 125, Diagonal Node #: 166, (166) 
-Element #: 89, Current Node #: 124, Diagonal Node #: 167, (167) 
 Element #: 89, Current Node #: 166, Diagonal Node #: 125, (125) 
 Element #: 89, Current Node #: 167, Diagonal Node #: 124, (124) 
+Element #: 89, Current Node #: 173, Diagonal Node #: 118, (118) 
 Element #: 89, Current Node #: 174, Diagonal Node #: 117, (117) 
-Element #: 89, Current Node #: 173, Diagonal Node #: 118, (118) 
 Element #: 90, Current Node #: 119, Diagonal Node #: 176, (176) 
 Element #: 90, Current Node #: 120, Diagonal Node #: 175, (175) 
+Element #: 90, Current Node #: 126, Diagonal Node #: 169, (169) 
 Element #: 90, Current Node #: 127, Diagonal Node #: 168, (168) 
-Element #: 90, Current Node #: 126, Diagonal Node #: 169, (169) 
 Element #: 90, Current Node #: 168, Diagonal Node #: 127, (127) 
 Element #: 90, Current Node #: 169, Diagonal Node #: 126, (126) 
+Element #: 90, Current Node #: 175, Diagonal Node #: 120, (120) 
 Element #: 90, Current Node #: 176, Diagonal Node #: 119, (119) 
-Element #: 90, Current Node #: 175, Diagonal Node #: 120, (120) 
 Element #: 91, Current Node #: 120, Diagonal Node #: 177, (177) 
 Element #: 91, Current Node #: 121, Diagonal Node #: 176, (176) 
+Element #: 91, Current Node #: 127, Diagonal Node #: 170, (170) 
 Element #: 91, Current Node #: 128, Diagonal Node #: 169, (169) 
-Element #: 91, Current Node #: 127, Diagonal Node #: 170, (170) 
 Element #: 91, Current Node #: 169, Diagonal Node #: 128, (128) 
 Element #: 91, Current Node #: 170, Diagonal Node #: 127, (127) 
+Element #: 91, Current Node #: 176, Diagonal Node #: 121, (121) 
 Element #: 91, Current Node #: 177, Diagonal Node #: 120, (120) 
-Element #: 91, Current Node #: 176, Diagonal Node #: 121, (121) 
 Element #: 92, Current Node #: 121, Diagonal Node #: 178, (178) 
 Element #: 92, Current Node #: 122, Diagonal Node #: 177, (177) 
+Element #: 92, Current Node #: 128, Diagonal Node #: 171, (171) 
 Element #: 92, Current Node #: 129, Diagonal Node #: 170, (170) 
-Element #: 92, Current Node #: 128, Diagonal Node #: 171, (171) 
 Element #: 92, Current Node #: 170, Diagonal Node #: 129, (129) 
 Element #: 92, Current Node #: 171, Diagonal Node #: 128, (128) 
+Element #: 92, Current Node #: 177, Diagonal Node #: 122, (122) 
 Element #: 92, Current Node #: 178, Diagonal Node #: 121, (121) 
-Element #: 92, Current Node #: 177, Diagonal Node #: 122, (122) 
 Element #: 93, Current Node #: 122, Diagonal Node #: 179, (179) 
 Element #: 93, Current Node #: 123, Diagonal Node #: 178, (178) 
+Element #: 93, Current Node #: 129, Diagonal Node #: 172, (172) 
 Element #: 93, Current Node #: 130, Diagonal Node #: 171, (171) 
-Element #: 93, Current Node #: 129, Diagonal Node #: 172, (172) 
 Element #: 93, Current Node #: 171, Diagonal Node #: 130, (130) 
 Element #: 93, Current Node #: 172, Diagonal Node #: 129, (129) 
+Element #: 93, Current Node #: 178, Diagonal Node #: 123, (123) 
 Element #: 93, Current Node #: 179, Diagonal Node #: 122, (122) 
-Element #: 93, Current Node #: 178, Diagonal Node #: 123, (123) 
 Element #: 94, Current Node #: 123, Diagonal Node #: 180, (180) 
 Element #: 94, Current Node #: 124, Diagonal Node #: 179, (179) 
+Element #: 94, Current Node #: 130, Diagonal Node #: 173, (173) 
 Element #: 94, Current Node #: 131, Diagonal Node #: 172, (172) 
-Element #: 94, Current Node #: 130, Diagonal Node #: 173, (173) 
 Element #: 94, Current Node #: 172, Diagonal Node #: 131, (131) 
 Element #: 94, Current Node #: 173, Diagonal Node #: 130, (130) 
+Element #: 94, Current Node #: 179, Diagonal Node #: 124, (124) 
 Element #: 94, Current Node #: 180, Diagonal Node #: 123, (123) 
-Element #: 94, Current Node #: 179, Diagonal Node #: 124, (124) 
 Element #: 95, Current Node #: 124, Diagonal Node #: 181, (181) 
 Element #: 95, Current Node #: 125, Diagonal Node #: 180, (180) 
+Element #: 95, Current Node #: 131, Diagonal Node #: 174, (174) 
 Element #: 95, Current Node #: 132, Diagonal Node #: 173, (173) 
-Element #: 95, Current Node #: 131, Diagonal Node #: 174, (174) 
 Element #: 95, Current Node #: 173, Diagonal Node #: 132, (132) 
 Element #: 95, Current Node #: 174, Diagonal Node #: 131, (131) 
+Element #: 95, Current Node #: 180, Diagonal Node #: 125, (125) 
 Element #: 95, Current Node #: 181, Diagonal Node #: 124, (124) 
-Element #: 95, Current Node #: 180, Diagonal Node #: 125, (125) 
 Element #: 96, Current Node #: 126, Diagonal Node #: 183, (183) 
 Element #: 96, Current Node #: 127, Diagonal Node #: 182, (182) 
+Element #: 96, Current Node #: 133, Diagonal Node #: 176, (176) 
 Element #: 96, Current Node #: 134, Diagonal Node #: 175, (175) 
-Element #: 96, Current Node #: 133, Diagonal Node #: 176, (176) 
 Element #: 96, Current Node #: 175, Diagonal Node #: 134, (134) 
 Element #: 96, Current Node #: 176, Diagonal Node #: 133, (133) 
+Element #: 96, Current Node #: 182, Diagonal Node #: 127, (127) 
 Element #: 96, Current Node #: 183, Diagonal Node #: 126, (126) 
-Element #: 96, Current Node #: 182, Diagonal Node #: 127, (127) 
 Element #: 97, Current Node #: 127, Diagonal Node #: 184, (184) 
 Element #: 97, Current Node #: 128, Diagonal Node #: 183, (183) 
+Element #: 97, Current Node #: 134, Diagonal Node #: 177, (177) 
 Element #: 97, Current Node #: 135, Diagonal Node #: 176, (176) 
-Element #: 97, Current Node #: 134, Diagonal Node #: 177, (177) 
 Element #: 97, Current Node #: 176, Diagonal Node #: 135, (135) 
 Element #: 97, Current Node #: 177, Diagonal Node #: 134, (134) 
+Element #: 97, Current Node #: 183, Diagonal Node #: 128, (128) 
 Element #: 97, Current Node #: 184, Diagonal Node #: 127, (127) 
-Element #: 97, Current Node #: 183, Diagonal Node #: 128, (128) 
 Element #: 98, Current Node #: 128, Diagonal Node #: 185, (185) 
 Element #: 98, Current Node #: 129, Diagonal Node #: 184, (184) 
+Element #: 98, Current Node #: 135, Diagonal Node #: 178, (178) 
 Element #: 98, Current Node #: 136, Diagonal Node #: 177, (177) 
-Element #: 98, Current Node #: 135, Diagonal Node #: 178, (178) 
 Element #: 98, Current Node #: 177, Diagonal Node #: 136, (136) 
 Element #: 98, Current Node #: 178, Diagonal Node #: 135, (135) 
+Element #: 98, Current Node #: 184, Diagonal Node #: 129, (129) 
 Element #: 98, Current Node #: 185, Diagonal Node #: 128, (128) 
-Element #: 98, Current Node #: 184, Diagonal Node #: 129, (129) 
 Element #: 99, Current Node #: 129, Diagonal Node #: 186, (186) 
 Element #: 99, Current Node #: 130, Diagonal Node #: 185, (185) 
+Element #: 99, Current Node #: 136, Diagonal Node #: 179, (179) 
 Element #: 99, Current Node #: 137, Diagonal Node #: 178, (178) 
-Element #: 99, Current Node #: 136, Diagonal Node #: 179, (179) 
 Element #: 99, Current Node #: 178, Diagonal Node #: 137, (137) 
 Element #: 99, Current Node #: 179, Diagonal Node #: 136, (136) 
+Element #: 99, Current Node #: 185, Diagonal Node #: 130, (130) 
 Element #: 99, Current Node #: 186, Diagonal Node #: 129, (129) 
-Element #: 99, Current Node #: 185, Diagonal Node #: 130, (130) 
 Element #: 100, Current Node #: 130, Diagonal Node #: 187, (187) 
 Element #: 100, Current Node #: 131, Diagonal Node #: 186, (186) 
+Element #: 100, Current Node #: 137, Diagonal Node #: 180, (180) 
 Element #: 100, Current Node #: 138, Diagonal Node #: 179, (179) 
-Element #: 100, Current Node #: 137, Diagonal Node #: 180, (180) 
 Element #: 100, Current Node #: 179, Diagonal Node #: 138, (138) 
 Element #: 100, Current Node #: 180, Diagonal Node #: 137, (137) 
+Element #: 100, Current Node #: 186, Diagonal Node #: 131, (131) 
 Element #: 100, Current Node #: 187, Diagonal Node #: 130, (130) 
-Element #: 100, Current Node #: 186, Diagonal Node #: 131, (131) 
 Element #: 101, Current Node #: 131, Diagonal Node #: 188, (188) 
 Element #: 101, Current Node #: 132, Diagonal Node #: 187, (187) 
+Element #: 101, Current Node #: 138, Diagonal Node #: 181, (181) 
 Element #: 101, Current Node #: 139, Diagonal Node #: 180, (180) 
-Element #: 101, Current Node #: 138, Diagonal Node #: 181, (181) 
 Element #: 101, Current Node #: 180, Diagonal Node #: 139, (139) 
 Element #: 101, Current Node #: 181, Diagonal Node #: 138, (138) 
+Element #: 101, Current Node #: 187, Diagonal Node #: 132, (132) 
 Element #: 101, Current Node #: 188, Diagonal Node #: 131, (131) 
-Element #: 101, Current Node #: 187, Diagonal Node #: 132, (132) 
 Element #: 102, Current Node #: 133, Diagonal Node #: 190, (190) 
 Element #: 102, Current Node #: 134, Diagonal Node #: 189, (189) 
+Element #: 102, Current Node #: 140, Diagonal Node #: 183, (183) 
 Element #: 102, Current Node #: 141, Diagonal Node #: 182, (182) 
-Element #: 102, Current Node #: 140, Diagonal Node #: 183, (183) 
 Element #: 102, Current Node #: 182, Diagonal Node #: 141, (141) 
 Element #: 102, Current Node #: 183, Diagonal Node #: 140, (140) 
+Element #: 102, Current Node #: 189, Diagonal Node #: 134, (134) 
 Element #: 102, Current Node #: 190, Diagonal Node #: 133, (133) 
-Element #: 102, Current Node #: 189, Diagonal Node #: 134, (134) 
 Element #: 103, Current Node #: 134, Diagonal Node #: 191, (191) 
 Element #: 103, Current Node #: 135, Diagonal Node #: 190, (190) 
+Element #: 103, Current Node #: 141, Diagonal Node #: 184, (184) 
 Element #: 103, Current Node #: 142, Diagonal Node #: 183, (183) 
-Element #: 103, Current Node #: 141, Diagonal Node #: 184, (184) 
 Element #: 103, Current Node #: 183, Diagonal Node #: 142, (142) 
 Element #: 103, Current Node #: 184, Diagonal Node #: 141, (141) 
+Element #: 103, Current Node #: 190, Diagonal Node #: 135, (135) 
 Element #: 103, Current Node #: 191, Diagonal Node #: 134, (134) 
-Element #: 103, Current Node #: 190, Diagonal Node #: 135, (135) 
 Element #: 104, Current Node #: 135, Diagonal Node #: 192, (192) 
 Element #: 104, Current Node #: 136, Diagonal Node #: 191, (191) 
+Element #: 104, Current Node #: 142, Diagonal Node #: 185, (185) 
 Element #: 104, Current Node #: 143, Diagonal Node #: 184, (184) 
-Element #: 104, Current Node #: 142, Diagonal Node #: 185, (185) 
 Element #: 104, Current Node #: 184, Diagonal Node #: 143, (143) 
 Element #: 104, Current Node #: 185, Diagonal Node #: 142, (142) 
+Element #: 104, Current Node #: 191, Diagonal Node #: 136, (136) 
 Element #: 104, Current Node #: 192, Diagonal Node #: 135, (135) 
-Element #: 104, Current Node #: 191, Diagonal Node #: 136, (136) 
 Element #: 105, Current Node #: 136, Diagonal Node #: 193, (193) 
 Element #: 105, Current Node #: 137, Diagonal Node #: 192, (192) 
+Element #: 105, Current Node #: 143, Diagonal Node #: 186, (186) 
 Element #: 105, Current Node #: 144, Diagonal Node #: 185, (185) 
-Element #: 105, Current Node #: 143, Diagonal Node #: 186, (186) 
 Element #: 105, Current Node #: 185, Diagonal Node #: 144, (144) 
 Element #: 105, Current Node #: 186, Diagonal Node #: 143, (143) 
+Element #: 105, Current Node #: 192, Diagonal Node #: 137, (137) 
 Element #: 105, Current Node #: 193, Diagonal Node #: 136, (136) 
-Element #: 105, Current Node #: 192, Diagonal Node #: 137, (137) 
 Element #: 106, Current Node #: 137, Diagonal Node #: 194, (194) 
 Element #: 106, Current Node #: 138, Diagonal Node #: 193, (193) 
+Element #: 106, Current Node #: 144, Diagonal Node #: 187, (187) 
 Element #: 106, Current Node #: 145, Diagonal Node #: 186, (186) 
-Element #: 106, Current Node #: 144, Diagonal Node #: 187, (187) 
 Element #: 106, Current Node #: 186, Diagonal Node #: 145, (145) 
 Element #: 106, Current Node #: 187, Diagonal Node #: 144, (144) 
+Element #: 106, Current Node #: 193, Diagonal Node #: 138, (138) 
 Element #: 106, Current Node #: 194, Diagonal Node #: 137, (137) 
-Element #: 106, Current Node #: 193, Diagonal Node #: 138, (138) 
 Element #: 107, Current Node #: 138, Diagonal Node #: 195, (195) 
 Element #: 107, Current Node #: 139, Diagonal Node #: 194, (194) 
+Element #: 107, Current Node #: 145, Diagonal Node #: 188, (188) 
 Element #: 107, Current Node #: 146, Diagonal Node #: 187, (187) 
-Element #: 107, Current Node #: 145, Diagonal Node #: 188, (188) 
 Element #: 107, Current Node #: 187, Diagonal Node #: 146, (146) 
 Element #: 107, Current Node #: 188, Diagonal Node #: 145, (145) 
+Element #: 107, Current Node #: 194, Diagonal Node #: 139, (139) 
 Element #: 107, Current Node #: 195, Diagonal Node #: 138, (138) 
-Element #: 107, Current Node #: 194, Diagonal Node #: 139, (139) 
 Element #: 108, Current Node #: 147, Diagonal Node #: 204, (204) 
 Element #: 108, Current Node #: 148, Diagonal Node #: 203, (203) 
+Element #: 108, Current Node #: 154, Diagonal Node #: 197, (197) 
 Element #: 108, Current Node #: 155, Diagonal Node #: 196, (196) 
-Element #: 108, Current Node #: 154, Diagonal Node #: 197, (197) 
 Element #: 108, Current Node #: 196, Diagonal Node #: 155, (155) 
 Element #: 108, Current Node #: 197, Diagonal Node #: 154, (154) 
+Element #: 108, Current Node #: 203, Diagonal Node #: 148, (148) 
 Element #: 108, Current Node #: 204, Diagonal Node #: 147, (147) 
-Element #: 108, Current Node #: 203, Diagonal Node #: 148, (148) 
 Element #: 109, Current Node #: 148, Diagonal Node #: 205, (205) 
 Element #: 109, Current Node #: 149, Diagonal Node #: 204, (204) 
+Element #: 109, Current Node #: 155, Diagonal Node #: 198, (198) 
 Element #: 109, Current Node #: 156, Diagonal Node #: 197, (197) 
-Element #: 109, Current Node #: 155, Diagonal Node #: 198, (198) 
 Element #: 109, Current Node #: 197, Diagonal Node #: 156, (156) 
 Element #: 109, Current Node #: 198, Diagonal Node #: 155, (155) 
+Element #: 109, Current Node #: 204, Diagonal Node #: 149, (149) 
 Element #: 109, Current Node #: 205, Diagonal Node #: 148, (148) 
-Element #: 109, Current Node #: 204, Diagonal Node #: 149, (149) 
 Element #: 110, Current Node #: 149, Diagonal Node #: 206, (206) 
 Element #: 110, Current Node #: 150, Diagonal Node #: 205, (205) 
+Element #: 110, Current Node #: 156, Diagonal Node #: 199, (199) 
 Element #: 110, Current Node #: 157, Diagonal Node #: 198, (198) 
-Element #: 110, Current Node #: 156, Diagonal Node #: 199, (199) 
 Element #: 110, Current Node #: 198, Diagonal Node #: 157, (157) 
 Element #: 110, Current Node #: 199, Diagonal Node #: 156, (156) 
+Element #: 110, Current Node #: 205, Diagonal Node #: 150, (150) 
 Element #: 110, Current Node #: 206, Diagonal Node #: 149, (149) 
-Element #: 110, Current Node #: 205, Diagonal Node #: 150, (150) 
 Element #: 111, Current Node #: 150, Diagonal Node #: 207, (207) 
 Element #: 111, Current Node #: 151, Diagonal Node #: 206, (206) 
+Element #: 111, Current Node #: 157, Diagonal Node #: 200, (200) 
 Element #: 111, Current Node #: 158, Diagonal Node #: 199, (199) 
-Element #: 111, Current Node #: 157, Diagonal Node #: 200, (200) 
 Element #: 111, Current Node #: 199, Diagonal Node #: 158, (158) 
 Element #: 111, Current Node #: 200, Diagonal Node #: 157, (157) 
+Element #: 111, Current Node #: 206, Diagonal Node #: 151, (151) 
 Element #: 111, Current Node #: 207, Diagonal Node #: 150, (150) 
-Element #: 111, Current Node #: 206, Diagonal Node #: 151, (151) 
 Element #: 112, Current Node #: 151, Diagonal Node #: 208, (208) 
 Element #: 112, Current Node #: 152, Diagonal Node #: 207, (207) 
+Element #: 112, Current Node #: 158, Diagonal Node #: 201, (201) 
 Element #: 112, Current Node #: 159, Diagonal Node #: 200, (200) 
-Element #: 112, Current Node #: 158, Diagonal Node #: 201, (201) 
 Element #: 112, Current Node #: 200, Diagonal Node #: 159, (159) 
 Element #: 112, Current Node #: 201, Diagonal Node #: 158, (158) 
+Element #: 112, Current Node #: 207, Diagonal Node #: 152, (152) 
 Element #: 112, Current Node #: 208, Diagonal Node #: 151, (151) 
-Element #: 112, Current Node #: 207, Diagonal Node #: 152, (152) 
 Element #: 113, Current Node #: 152, Diagonal Node #: 209, (209) 
 Element #: 113, Current Node #: 153, Diagonal Node #: 208, (208) 
+Element #: 113, Current Node #: 159, Diagonal Node #: 202, (202) 
 Element #: 113, Current Node #: 160, Diagonal Node #: 201, (201) 
-Element #: 113, Current Node #: 159, Diagonal Node #: 202, (202) 
 Element #: 113, Current Node #: 201, Diagonal Node #: 160, (160) 
 Element #: 113, Current Node #: 202, Diagonal Node #: 159, (159) 
+Element #: 113, Current Node #: 208, Diagonal Node #: 153, (153) 
 Element #: 113, Current Node #: 209, Diagonal Node #: 152, (152) 
-Element #: 113, Current Node #: 208, Diagonal Node #: 153, (153) 
 Element #: 114, Current Node #: 154, Diagonal Node #: 211, (211) 
 Element #: 114, Current Node #: 155, Diagonal Node #: 210, (210) 
+Element #: 114, Current Node #: 161, Diagonal Node #: 204, (204) 
 Element #: 114, Current Node #: 162, Diagonal Node #: 203, (203) 
-Element #: 114, Current Node #: 161, Diagonal Node #: 204, (204) 
 Element #: 114, Current Node #: 203, Diagonal Node #: 162, (162) 
 Element #: 114, Current Node #: 204, Diagonal Node #: 161, (161) 
+Element #: 114, Current Node #: 210, Diagonal Node #: 155, (155) 
 Element #: 114, Current Node #: 211, Diagonal Node #: 154, (154) 
-Element #: 114, Current Node #: 210, Diagonal Node #: 155, (155) 
 Element #: 115, Current Node #: 155, Diagonal Node #: 212, (212) 
 Element #: 115, Current Node #: 156, Diagonal Node #: 211, (211) 
+Element #: 115, Current Node #: 162, Diagonal Node #: 205, (205) 
 Element #: 115, Current Node #: 163, Diagonal Node #: 204, (204) 
-Element #: 115, Current Node #: 162, Diagonal Node #: 205, (205) 
 Element #: 115, Current Node #: 204, Diagonal Node #: 163, (163) 
 Element #: 115, Current Node #: 205, Diagonal Node #: 162, (162) 
+Element #: 115, Current Node #: 211, Diagonal Node #: 156, (156) 
 Element #: 115, Current Node #: 212, Diagonal Node #: 155, (155) 
-Element #: 115, Current Node #: 211, Diagonal Node #: 156, (156) 
 Element #: 116, Current Node #: 156, Diagonal Node #: 213, (213) 
 Element #: 116, Current Node #: 157, Diagonal Node #: 212, (212) 
+Element #: 116, Current Node #: 163, Diagonal Node #: 206, (206) 
 Element #: 116, Current Node #: 164, Diagonal Node #: 205, (205) 
-Element #: 116, Current Node #: 163, Diagonal Node #: 206, (206) 
 Element #: 116, Current Node #: 205, Diagonal Node #: 164, (164) 
 Element #: 116, Current Node #: 206, Diagonal Node #: 163, (163) 
+Element #: 116, Current Node #: 212, Diagonal Node #: 157, (157) 
 Element #: 116, Current Node #: 213, Diagonal Node #: 156, (156) 
-Element #: 116, Current Node #: 212, Diagonal Node #: 157, (157) 
 Element #: 117, Current Node #: 157, Diagonal Node #: 214, (214) 
 Element #: 117, Current Node #: 158, Diagonal Node #: 213, (213) 
+Element #: 117, Current Node #: 164, Diagonal Node #: 207, (207) 
 Element #: 117, Current Node #: 165, Diagonal Node #: 206, (206) 
-Element #: 117, Current Node #: 164, Diagonal Node #: 207, (207) 
 Element #: 117, Current Node #: 206, Diagonal Node #: 165, (165) 
 Element #: 117, Current Node #: 207, Diagonal Node #: 164, (164) 
+Element #: 117, Current Node #: 213, Diagonal Node #: 158, (158) 
 Element #: 117, Current Node #: 214, Diagonal Node #: 157, (157) 
-Element #: 117, Current Node #: 213, Diagonal Node #: 158, (158) 
 Element #: 118, Current Node #: 158, Diagonal Node #: 215, (215) 
 Element #: 118, Current Node #: 159, Diagonal Node #: 214, (214) 
+Element #: 118, Current Node #: 165, Diagonal Node #: 208, (208) 
 Element #: 118, Current Node #: 166, Diagonal Node #: 207, (207) 
-Element #: 118, Current Node #: 165, Diagonal Node #: 208, (208) 
 Element #: 118, Current Node #: 207, Diagonal Node #: 166, (166) 
 Element #: 118, Current Node #: 208, Diagonal Node #: 165, (165) 
+Element #: 118, Current Node #: 214, Diagonal Node #: 159, (159) 
 Element #: 118, Current Node #: 215, Diagonal Node #: 158, (158) 
-Element #: 118, Current Node #: 214, Diagonal Node #: 159, (159) 
 Element #: 119, Current Node #: 159, Diagonal Node #: 216, (216) 
 Element #: 119, Current Node #: 160, Diagonal Node #: 215, (215) 
+Element #: 119, Current Node #: 166, Diagonal Node #: 209, (209) 
 Element #: 119, Current Node #: 167, Diagonal Node #: 208, (208) 
-Element #: 119, Current Node #: 166, Diagonal Node #: 209, (209) 
 Element #: 119, Current Node #: 208, Diagonal Node #: 167, (167) 
 Element #: 119, Current Node #: 209, Diagonal Node #: 166, (166) 
+Element #: 119, Current Node #: 215, Diagonal Node #: 160, (160) 
 Element #: 119, Current Node #: 216, Diagonal Node #: 159, (159) 
-Element #: 119, Current Node #: 215, Diagonal Node #: 160, (160) 
 Element #: 120, Current Node #: 161, Diagonal Node #: 218, (218) 
 Element #: 120, Current Node #: 162, Diagonal Node #: 217, (217) 
+Element #: 120, Current Node #: 168, Diagonal Node #: 211, (211) 
 Element #: 120, Current Node #: 169, Diagonal Node #: 210, (210) 
-Element #: 120, Current Node #: 168, Diagonal Node #: 211, (211) 
 Element #: 120, Current Node #: 210, Diagonal Node #: 169, (169) 
 Element #: 120, Current Node #: 211, Diagonal Node #: 168, (168) 
+Element #: 120, Current Node #: 217, Diagonal Node #: 162, (162) 
 Element #: 120, Current Node #: 218, Diagonal Node #: 161, (161) 
-Element #: 120, Current Node #: 217, Diagonal Node #: 162, (162) 
 Element #: 121, Current Node #: 162, Diagonal Node #: 219, (219) 
 Element #: 121, Current Node #: 163, Diagonal Node #: 218, (218) 
+Element #: 121, Current Node #: 169, Diagonal Node #: 212, (212) 
 Element #: 121, Current Node #: 170, Diagonal Node #: 211, (211) 
-Element #: 121, Current Node #: 169, Diagonal Node #: 212, (212) 
 Element #: 121, Current Node #: 211, Diagonal Node #: 170, (170) 
 Element #: 121, Current Node #: 212, Diagonal Node #: 169, (169) 
+Element #: 121, Current Node #: 218, Diagonal Node #: 163, (163) 
 Element #: 121, Current Node #: 219, Diagonal Node #: 162, (162) 
-Element #: 121, Current Node #: 218, Diagonal Node #: 163, (163) 
 Element #: 122, Current Node #: 163, Diagonal Node #: 220, (220) 
 Element #: 122, Current Node #: 164, Diagonal Node #: 219, (219) 
+Element #: 122, Current Node #: 170, Diagonal Node #: 213, (213) 
 Element #: 122, Current Node #: 171, Diagonal Node #: 212, (212) 
-Element #: 122, Current Node #: 170, Diagonal Node #: 213, (213) 
 Element #: 122, Current Node #: 212, Diagonal Node #: 171, (171) 
 Element #: 122, Current Node #: 213, Diagonal Node #: 170, (170) 
+Element #: 122, Current Node #: 219, Diagonal Node #: 164, (164) 
 Element #: 122, Current Node #: 220, Diagonal Node #: 163, (163) 
-Element #: 122, Current Node #: 219, Diagonal Node #: 164, (164) 
 Element #: 123, Current Node #: 164, Diagonal Node #: 221, (221) 
 Element #: 123, Current Node #: 165, Diagonal Node #: 220, (220) 
+Element #: 123, Current Node #: 171, Diagonal Node #: 214, (214) 
 Element #: 123, Current Node #: 172, Diagonal Node #: 213, (213) 
-Element #: 123, Current Node #: 171, Diagonal Node #: 214, (214) 
 Element #: 123, Current Node #: 213, Diagonal Node #: 172, (172) 
 Element #: 123, Current Node #: 214, Diagonal Node #: 171, (171) 
+Element #: 123, Current Node #: 220, Diagonal Node #: 165, (165) 
 Element #: 123, Current Node #: 221, Diagonal Node #: 164, (164) 
-Element #: 123, Current Node #: 220, Diagonal Node #: 165, (165) 
 Element #: 124, Current Node #: 165, Diagonal Node #: 222, (222) 
 Element #: 124, Current Node #: 166, Diagonal Node #: 221, (221) 
+Element #: 124, Current Node #: 172, Diagonal Node #: 215, (215) 
 Element #: 124, Current Node #: 173, Diagonal Node #: 214, (214) 
-Element #: 124, Current Node #: 172, Diagonal Node #: 215, (215) 
 Element #: 124, Current Node #: 214, Diagonal Node #: 173, (173) 
 Element #: 124, Current Node #: 215, Diagonal Node #: 172, (172) 
+Element #: 124, Current Node #: 221, Diagonal Node #: 166, (166) 
 Element #: 124, Current Node #: 222, Diagonal Node #: 165, (165) 
-Element #: 124, Current Node #: 221, Diagonal Node #: 166, (166) 
 Element #: 125, Current Node #: 166, Diagonal Node #: 223, (223) 
 Element #: 125, Current Node #: 167, Diagonal Node #: 222, (222) 
+Element #: 125, Current Node #: 173, Diagonal Node #: 216, (216) 
 Element #: 125, Current Node #: 174, Diagonal Node #: 215, (215) 
-Element #: 125, Current Node #: 173, Diagonal Node #: 216, (216) 
 Element #: 125, Current Node #: 215, Diagonal Node #: 174, (174) 
 Element #: 125, Current Node #: 216, Diagonal Node #: 173, (173) 
+Element #: 125, Current Node #: 222, Diagonal Node #: 167, (167) 
 Element #: 125, Current Node #: 223, Diagonal Node #: 166, (166) 
-Element #: 125, Current Node #: 222, Diagonal Node #: 167, (167) 
 Element #: 126, Current Node #: 168, Diagonal Node #: 225, (225) 
 Element #: 126, Current Node #: 169, Diagonal Node #: 224, (224) 
+Element #: 126, Current Node #: 175, Diagonal Node #: 218, (218) 
 Element #: 126, Current Node #: 176, Diagonal Node #: 217, (217) 
-Element #: 126, Current Node #: 175, Diagonal Node #: 218, (218) 
 Element #: 126, Current Node #: 217, Diagonal Node #: 176, (176) 
 Element #: 126, Current Node #: 218, Diagonal Node #: 175, (175) 
+Element #: 126, Current Node #: 224, Diagonal Node #: 169, (169) 
 Element #: 126, Current Node #: 225, Diagonal Node #: 168, (168) 
-Element #: 126, Current Node #: 224, Diagonal Node #: 169, (169) 
 Element #: 127, Current Node #: 169, Diagonal Node #: 226, (226) 
 Element #: 127, Current Node #: 170, Diagonal Node #: 225, (225) 
+Element #: 127, Current Node #: 176, Diagonal Node #: 219, (219) 
 Element #: 127, Current Node #: 177, Diagonal Node #: 218, (218) 
-Element #: 127, Current Node #: 176, Diagonal Node #: 219, (219) 
 Element #: 127, Current Node #: 218, Diagonal Node #: 177, (177) 
 Element #: 127, Current Node #: 219, Diagonal Node #: 176, (176) 
+Element #: 127, Current Node #: 225, Diagonal Node #: 170, (170) 
 Element #: 127, Current Node #: 226, Diagonal Node #: 169, (169) 
-Element #: 127, Current Node #: 225, Diagonal Node #: 170, (170) 
 Element #: 128, Current Node #: 170, Diagonal Node #: 227, (227) 
 Element #: 128, Current Node #: 171, Diagonal Node #: 226, (226) 
+Element #: 128, Current Node #: 177, Diagonal Node #: 220, (220) 
 Element #: 128, Current Node #: 178, Diagonal Node #: 219, (219) 
-Element #: 128, Current Node #: 177, Diagonal Node #: 220, (220) 
 Element #: 128, Current Node #: 219, Diagonal Node #: 178, (178) 
 Element #: 128, Current Node #: 220, Diagonal Node #: 177, (177) 
+Element #: 128, Current Node #: 226, Diagonal Node #: 171, (171) 
 Element #: 128, Current Node #: 227, Diagonal Node #: 170, (170) 
-Element #: 128, Current Node #: 226, Diagonal Node #: 171, (171) 
 Element #: 129, Current Node #: 171, Diagonal Node #: 228, (228) 
 Element #: 129, Current Node #: 172, Diagonal Node #: 227, (227) 
+Element #: 129, Current Node #: 178, Diagonal Node #: 221, (221) 
 Element #: 129, Current Node #: 179, Diagonal Node #: 220, (220) 
-Element #: 129, Current Node #: 178, Diagonal Node #: 221, (221) 
 Element #: 129, Current Node #: 220, Diagonal Node #: 179, (179) 
 Element #: 129, Current Node #: 221, Diagonal Node #: 178, (178) 
+Element #: 129, Current Node #: 227, Diagonal Node #: 172, (172) 
 Element #: 129, Current Node #: 228, Diagonal Node #: 171, (171) 
-Element #: 129, Current Node #: 227, Diagonal Node #: 172, (172) 
 Element #: 130, Current Node #: 172, Diagonal Node #: 229, (229) 
 Element #: 130, Current Node #: 173, Diagonal Node #: 228, (228) 
+Element #: 130, Current Node #: 179, Diagonal Node #: 222, (222) 
 Element #: 130, Current Node #: 180, Diagonal Node #: 221, (221) 
-Element #: 130, Current Node #: 179, Diagonal Node #: 222, (222) 
 Element #: 130, Current Node #: 221, Diagonal Node #: 180, (180) 
 Element #: 130, Current Node #: 222, Diagonal Node #: 179, (179) 
+Element #: 130, Current Node #: 228, Diagonal Node #: 173, (173) 
 Element #: 130, Current Node #: 229, Diagonal Node #: 172, (172) 
-Element #: 130, Current Node #: 228, Diagonal Node #: 173, (173) 
 Element #: 131, Current Node #: 173, Diagonal Node #: 230, (230) 
 Element #: 131, Current Node #: 174, Diagonal Node #: 229, (229) 
+Element #: 131, Current Node #: 180, Diagonal Node #: 223, (223) 
 Element #: 131, Current Node #: 181, Diagonal Node #: 222, (222) 
-Element #: 131, Current Node #: 180, Diagonal Node #: 223, (223) 
 Element #: 131, Current Node #: 222, Diagonal Node #: 181, (181) 
 Element #: 131, Current Node #: 223, Diagonal Node #: 180, (180) 
+Element #: 131, Current Node #: 229, Diagonal Node #: 174, (174) 
 Element #: 131, Current Node #: 230, Diagonal Node #: 173, (173) 
-Element #: 131, Current Node #: 229, Diagonal Node #: 174, (174) 
 Element #: 132, Current Node #: 175, Diagonal Node #: 232, (232) 
 Element #: 132, Current Node #: 176, Diagonal Node #: 231, (231) 
+Element #: 132, Current Node #: 182, Diagonal Node #: 225, (225) 
 Element #: 132, Current Node #: 183, Diagonal Node #: 224, (224) 
-Element #: 132, Current Node #: 182, Diagonal Node #: 225, (225) 
 Element #: 132, Current Node #: 224, Diagonal Node #: 183, (183) 
 Element #: 132, Current Node #: 225, Diagonal Node #: 182, (182) 
+Element #: 132, Current Node #: 231, Diagonal Node #: 176, (176) 
 Element #: 132, Current Node #: 232, Diagonal Node #: 175, (175) 
-Element #: 132, Current Node #: 231, Diagonal Node #: 176, (176) 
 Element #: 133, Current Node #: 176, Diagonal Node #: 233, (233) 
 Element #: 133, Current Node #: 177, Diagonal Node #: 232, (232) 
+Element #: 133, Current Node #: 183, Diagonal Node #: 226, (226) 
 Element #: 133, Current Node #: 184, Diagonal Node #: 225, (225) 
-Element #: 133, Current Node #: 183, Diagonal Node #: 226, (226) 
 Element #: 133, Current Node #: 225, Diagonal Node #: 184, (184) 
 Element #: 133, Current Node #: 226, Diagonal Node #: 183, (183) 
+Element #: 133, Current Node #: 232, Diagonal Node #: 177, (177) 
 Element #: 133, Current Node #: 233, Diagonal Node #: 176, (176) 
-Element #: 133, Current Node #: 232, Diagonal Node #: 177, (177) 
 Element #: 134, Current Node #: 177, Diagonal Node #: 234, (234) 
 Element #: 134, Current Node #: 178, Diagonal Node #: 233, (233) 
+Element #: 134, Current Node #: 184, Diagonal Node #: 227, (227) 
 Element #: 134, Current Node #: 185, Diagonal Node #: 226, (226) 
-Element #: 134, Current Node #: 184, Diagonal Node #: 227, (227) 
 Element #: 134, Current Node #: 226, Diagonal Node #: 185, (185) 
 Element #: 134, Current Node #: 227, Diagonal Node #: 184, (184) 
+Element #: 134, Current Node #: 233, Diagonal Node #: 178, (178) 
 Element #: 134, Current Node #: 234, Diagonal Node #: 177, (177) 
-Element #: 134, Current Node #: 233, Diagonal Node #: 178, (178) 
 Element #: 135, Current Node #: 178, Diagonal Node #: 235, (235) 
 Element #: 135, Current Node #: 179, Diagonal Node #: 234, (234) 
+Element #: 135, Current Node #: 185, Diagonal Node #: 228, (228) 
 Element #: 135, Current Node #: 186, Diagonal Node #: 227, (227) 
-Element #: 135, Current Node #: 185, Diagonal Node #: 228, (228) 
 Element #: 135, Current Node #: 227, Diagonal Node #: 186, (186) 
 Element #: 135, Current Node #: 228, Diagonal Node #: 185, (185) 
+Element #: 135, Current Node #: 234, Diagonal Node #: 179, (179) 
 Element #: 135, Current Node #: 235, Diagonal Node #: 178, (178) 
-Element #: 135, Current Node #: 234, Diagonal Node #: 179, (179) 
 Element #: 136, Current Node #: 179, Diagonal Node #: 236, (236) 
 Element #: 136, Current Node #: 180, Diagonal Node #: 235, (235) 
+Element #: 136, Current Node #: 186, Diagonal Node #: 229, (229) 
 Element #: 136, Current Node #: 187, Diagonal Node #: 228, (228) 
-Element #: 136, Current Node #: 186, Diagonal Node #: 229, (229) 
 Element #: 136, Current Node #: 228, Diagonal Node #: 187, (187) 
 Element #: 136, Current Node #: 229, Diagonal Node #: 186, (186) 
+Element #: 136, Current Node #: 235, Diagonal Node #: 180, (180) 
 Element #: 136, Current Node #: 236, Diagonal Node #: 179, (179) 
-Element #: 136, Current Node #: 235, Diagonal Node #: 180, (180) 
 Element #: 137, Current Node #: 180, Diagonal Node #: 237, (237) 
 Element #: 137, Current Node #: 181, Diagonal Node #: 236, (236) 
+Element #: 137, Current Node #: 187, Diagonal Node #: 230, (230) 
 Element #: 137, Current Node #: 188, Diagonal Node #: 229, (229) 
-Element #: 137, Current Node #: 187, Diagonal Node #: 230, (230) 
 Element #: 137, Current Node #: 229, Diagonal Node #: 188, (188) 
 Element #: 137, Current Node #: 230, Diagonal Node #: 187, (187) 
+Element #: 137, Current Node #: 236, Diagonal Node #: 181, (181) 
 Element #: 137, Current Node #: 237, Diagonal Node #: 180, (180) 
-Element #: 137, Current Node #: 236, Diagonal Node #: 181, (181) 
 Element #: 138, Current Node #: 182, Diagonal Node #: 239, (239) 
 Element #: 138, Current Node #: 183, Diagonal Node #: 238, (238) 
+Element #: 138, Current Node #: 189, Diagonal Node #: 232, (232) 
 Element #: 138, Current Node #: 190, Diagonal Node #: 231, (231) 
-Element #: 138, Current Node #: 189, Diagonal Node #: 232, (232) 
 Element #: 138, Current Node #: 231, Diagonal Node #: 190, (190) 
 Element #: 138, Current Node #: 232, Diagonal Node #: 189, (189) 
+Element #: 138, Current Node #: 238, Diagonal Node #: 183, (183) 
 Element #: 138, Current Node #: 239, Diagonal Node #: 182, (182) 
-Element #: 138, Current Node #: 238, Diagonal Node #: 183, (183) 
 Element #: 139, Current Node #: 183, Diagonal Node #: 240, (240) 
 Element #: 139, Current Node #: 184, Diagonal Node #: 239, (239) 
+Element #: 139, Current Node #: 190, Diagonal Node #: 233, (233) 
 Element #: 139, Current Node #: 191, Diagonal Node #: 232, (232) 
-Element #: 139, Current Node #: 190, Diagonal Node #: 233, (233) 
 Element #: 139, Current Node #: 232, Diagonal Node #: 191, (191) 
 Element #: 139, Current Node #: 233, Diagonal Node #: 190, (190) 
+Element #: 139, Current Node #: 239, Diagonal Node #: 184, (184) 
 Element #: 139, Current Node #: 240, Diagonal Node #: 183, (183) 
-Element #: 139, Current Node #: 239, Diagonal Node #: 184, (184) 
 Element #: 140, Current Node #: 184, Diagonal Node #: 241, (241) 
 Element #: 140, Current Node #: 185, Diagonal Node #: 240, (240) 
+Element #: 140, Current Node #: 191, Diagonal Node #: 234, (234) 
 Element #: 140, Current Node #: 192, Diagonal Node #: 233, (233) 
-Element #: 140, Current Node #: 191, Diagonal Node #: 234, (234) 
 Element #: 140, Current Node #: 233, Diagonal Node #: 192, (192) 
 Element #: 140, Current Node #: 234, Diagonal Node #: 191, (191) 
+Element #: 140, Current Node #: 240, Diagonal Node #: 185, (185) 
 Element #: 140, Current Node #: 241, Diagonal Node #: 184, (184) 
-Element #: 140, Current Node #: 240, Diagonal Node #: 185, (185) 
 Element #: 141, Current Node #: 185, Diagonal Node #: 242, (242) 
 Element #: 141, Current Node #: 186, Diagonal Node #: 241, (241) 
+Element #: 141, Current Node #: 192, Diagonal Node #: 235, (235) 
 Element #: 141, Current Node #: 193, Diagonal Node #: 234, (234) 
-Element #: 141, Current Node #: 192, Diagonal Node #: 235, (235) 
 Element #: 141, Current Node #: 234, Diagonal Node #: 193, (193) 
 Element #: 141, Current Node #: 235, Diagonal Node #: 192, (192) 
+Element #: 141, Current Node #: 241, Diagonal Node #: 186, (186) 
 Element #: 141, Current Node #: 242, Diagonal Node #: 185, (185) 
-Element #: 141, Current Node #: 241, Diagonal Node #: 186, (186) 
 Element #: 142, Current Node #: 186, Diagonal Node #: 243, (243) 
 Element #: 142, Current Node #: 187, Diagonal Node #: 242, (242) 
+Element #: 142, Current Node #: 193, Diagonal Node #: 236, (236) 
 Element #: 142, Current Node #: 194, Diagonal Node #: 235, (235) 
-Element #: 142, Current Node #: 193, Diagonal Node #: 236, (236) 
 Element #: 142, Current Node #: 235, Diagonal Node #: 194, (194) 
 Element #: 142, Current Node #: 236, Diagonal Node #: 193, (193) 
+Element #: 142, Current Node #: 242, Diagonal Node #: 187, (187) 
 Element #: 142, Current Node #: 243, Diagonal Node #: 186, (186) 
-Element #: 142, Current Node #: 242, Diagonal Node #: 187, (187) 
 Element #: 143, Current Node #: 187, Diagonal Node #: 244, (244) 
 Element #: 143, Current Node #: 188, Diagonal Node #: 243, (243) 
+Element #: 143, Current Node #: 194, Diagonal Node #: 237, (237) 
 Element #: 143, Current Node #: 195, Diagonal Node #: 236, (236) 
-Element #: 143, Current Node #: 194, Diagonal Node #: 237, (237) 
 Element #: 143, Current Node #: 236, Diagonal Node #: 195, (195) 
 Element #: 143, Current Node #: 237, Diagonal Node #: 194, (194) 
+Element #: 143, Current Node #: 243, Diagonal Node #: 188, (188) 
 Element #: 143, Current Node #: 244, Diagonal Node #: 187, (187) 
-Element #: 143, Current Node #: 243, Diagonal Node #: 188, (188) 
 Element #: 144, Current Node #: 196, Diagonal Node #: 253, (253) 
 Element #: 144, Current Node #: 197, Diagonal Node #: 252, (252) 
+Element #: 144, Current Node #: 203, Diagonal Node #: 246, (246) 
 Element #: 144, Current Node #: 204, Diagonal Node #: 245, (245) 
-Element #: 144, Current Node #: 203, Diagonal Node #: 246, (246) 
 Element #: 144, Current Node #: 245, Diagonal Node #: 204, (204) 
 Element #: 144, Current Node #: 246, Diagonal Node #: 203, (203) 
+Element #: 144, Current Node #: 252, Diagonal Node #: 197, (197) 
 Element #: 144, Current Node #: 253, Diagonal Node #: 196, (196) 
-Element #: 144, Current Node #: 252, Diagonal Node #: 197, (197) 
 Element #: 145, Current Node #: 197, Diagonal Node #: 254, (254) 
 Element #: 145, Current Node #: 198, Diagonal Node #: 253, (253) 
+Element #: 145, Current Node #: 204, Diagonal Node #: 247, (247) 
 Element #: 145, Current Node #: 205, Diagonal Node #: 246, (246) 
-Element #: 145, Current Node #: 204, Diagonal Node #: 247, (247) 
 Element #: 145, Current Node #: 246, Diagonal Node #: 205, (205) 
 Element #: 145, Current Node #: 247, Diagonal Node #: 204, (204) 
+Element #: 145, Current Node #: 253, Diagonal Node #: 198, (198) 
 Element #: 145, Current Node #: 254, Diagonal Node #: 197, (197) 
-Element #: 145, Current Node #: 253, Diagonal Node #: 198, (198) 
 Element #: 146, Current Node #: 198, Diagonal Node #: 255, (255) 
 Element #: 146, Current Node #: 199, Diagonal Node #: 254, (254) 
+Element #: 146, Current Node #: 205, Diagonal Node #: 248, (248) 
 Element #: 146, Current Node #: 206, Diagonal Node #: 247, (247) 
-Element #: 146, Current Node #: 205, Diagonal Node #: 248, (248) 
 Element #: 146, Current Node #: 247, Diagonal Node #: 206, (206) 
 Element #: 146, Current Node #: 248, Diagonal Node #: 205, (205) 
+Element #: 146, Current Node #: 254, Diagonal Node #: 199, (199) 
 Element #: 146, Current Node #: 255, Diagonal Node #: 198, (198) 
-Element #: 146, Current Node #: 254, Diagonal Node #: 199, (199) 
 Element #: 147, Current Node #: 199, Diagonal Node #: 256, (256) 
 Element #: 147, Current Node #: 200, Diagonal Node #: 255, (255) 
+Element #: 147, Current Node #: 206, Diagonal Node #: 249, (249) 
 Element #: 147, Current Node #: 207, Diagonal Node #: 248, (248) 
-Element #: 147, Current Node #: 206, Diagonal Node #: 249, (249) 
 Element #: 147, Current Node #: 248, Diagonal Node #: 207, (207) 
 Element #: 147, Current Node #: 249, Diagonal Node #: 206, (206) 
+Element #: 147, Current Node #: 255, Diagonal Node #: 200, (200) 
 Element #: 147, Current Node #: 256, Diagonal Node #: 199, (199) 
-Element #: 147, Current Node #: 255, Diagonal Node #: 200, (200) 
 Element #: 148, Current Node #: 200, Diagonal Node #: 257, (257) 
 Element #: 148, Current Node #: 201, Diagonal Node #: 256, (256) 
+Element #: 148, Current Node #: 207, Diagonal Node #: 250, (250) 
 Element #: 148, Current Node #: 208, Diagonal Node #: 249, (249) 
-Element #: 148, Current Node #: 207, Diagonal Node #: 250, (250) 
 Element #: 148, Current Node #: 249, Diagonal Node #: 208, (208) 
 Element #: 148, Current Node #: 250, Diagonal Node #: 207, (207) 
+Element #: 148, Current Node #: 256, Diagonal Node #: 201, (201) 
 Element #: 148, Current Node #: 257, Diagonal Node #: 200, (200) 
-Element #: 148, Current Node #: 256, Diagonal Node #: 201, (201) 
 Element #: 149, Current Node #: 201, Diagonal Node #: 258, (258) 
 Element #: 149, Current Node #: 202, Diagonal Node #: 257, (257) 
+Element #: 149, Current Node #: 208, Diagonal Node #: 251, (251) 
 Element #: 149, Current Node #: 209, Diagonal Node #: 250, (250) 
-Element #: 149, Current Node #: 208, Diagonal Node #: 251, (251) 
 Element #: 149, Current Node #: 250, Diagonal Node #: 209, (209) 
 Element #: 149, Current Node #: 251, Diagonal Node #: 208, (208) 
+Element #: 149, Current Node #: 257, Diagonal Node #: 202, (202) 
 Element #: 149, Current Node #: 258, Diagonal Node #: 201, (201) 
-Element #: 149, Current Node #: 257, Diagonal Node #: 202, (202) 
 Element #: 150, Current Node #: 203, Diagonal Node #: 260, (260) 
 Element #: 150, Current Node #: 204, Diagonal Node #: 259, (259) 
+Element #: 150, Current Node #: 210, Diagonal Node #: 253, (253) 
 Element #: 150, Current Node #: 211, Diagonal Node #: 252, (252) 
-Element #: 150, Current Node #: 210, Diagonal Node #: 253, (253) 
 Element #: 150, Current Node #: 252, Diagonal Node #: 211, (211) 
 Element #: 150, Current Node #: 253, Diagonal Node #: 210, (210) 
+Element #: 150, Current Node #: 259, Diagonal Node #: 204, (204) 
 Element #: 150, Current Node #: 260, Diagonal Node #: 203, (203) 
-Element #: 150, Current Node #: 259, Diagonal Node #: 204, (204) 
 Element #: 151, Current Node #: 204, Diagonal Node #: 261, (261) 
 Element #: 151, Current Node #: 205, Diagonal Node #: 260, (260) 
+Element #: 151, Current Node #: 211, Diagonal Node #: 254, (254) 
 Element #: 151, Current Node #: 212, Diagonal Node #: 253, (253) 
-Element #: 151, Current Node #: 211, Diagonal Node #: 254, (254) 
 Element #: 151, Current Node #: 253, Diagonal Node #: 212, (212) 
 Element #: 151, Current Node #: 254, Diagonal Node #: 211, (211) 
+Element #: 151, Current Node #: 260, Diagonal Node #: 205, (205) 
 Element #: 151, Current Node #: 261, Diagonal Node #: 204, (204) 
-Element #: 151, Current Node #: 260, Diagonal Node #: 205, (205) 
 Element #: 152, Current Node #: 205, Diagonal Node #: 262, (262) 
 Element #: 152, Current Node #: 206, Diagonal Node #: 261, (261) 
+Element #: 152, Current Node #: 212, Diagonal Node #: 255, (255) 
 Element #: 152, Current Node #: 213, Diagonal Node #: 254, (254) 
-Element #: 152, Current Node #: 212, Diagonal Node #: 255, (255) 
 Element #: 152, Current Node #: 254, Diagonal Node #: 213, (213) 
 Element #: 152, Current Node #: 255, Diagonal Node #: 212, (212) 
+Element #: 152, Current Node #: 261, Diagonal Node #: 206, (206) 
 Element #: 152, Current Node #: 262, Diagonal Node #: 205, (205) 
-Element #: 152, Current Node #: 261, Diagonal Node #: 206, (206) 
 Element #: 153, Current Node #: 206, Diagonal Node #: 263, (263) 
 Element #: 153, Current Node #: 207, Diagonal Node #: 262, (262) 
+Element #: 153, Current Node #: 213, Diagonal Node #: 256, (256) 
 Element #: 153, Current Node #: 214, Diagonal Node #: 255, (255) 
-Element #: 153, Current Node #: 213, Diagonal Node #: 256, (256) 
 Element #: 153, Current Node #: 255, Diagonal Node #: 214, (214) 
 Element #: 153, Current Node #: 256, Diagonal Node #: 213, (213) 
+Element #: 153, Current Node #: 262, Diagonal Node #: 207, (207) 
 Element #: 153, Current Node #: 263, Diagonal Node #: 206, (206) 
-Element #: 153, Current Node #: 262, Diagonal Node #: 207, (207) 
 Element #: 154, Current Node #: 207, Diagonal Node #: 264, (264) 
 Element #: 154, Current Node #: 208, Diagonal Node #: 263, (263) 
+Element #: 154, Current Node #: 214, Diagonal Node #: 257, (257) 
 Element #: 154, Current Node #: 215, Diagonal Node #: 256, (256) 
-Element #: 154, Current Node #: 214, Diagonal Node #: 257, (257) 
 Element #: 154, Current Node #: 256, Diagonal Node #: 215, (215) 
 Element #: 154, Current Node #: 257, Diagonal Node #: 214, (214) 
+Element #: 154, Current Node #: 263, Diagonal Node #: 208, (208) 
 Element #: 154, Current Node #: 264, Diagonal Node #: 207, (207) 
-Element #: 154, Current Node #: 263, Diagonal Node #: 208, (208) 
 Element #: 155, Current Node #: 208, Diagonal Node #: 265, (265) 
 Element #: 155, Current Node #: 209, Diagonal Node #: 264, (264) 
+Element #: 155, Current Node #: 215, Diagonal Node #: 258, (258) 
 Element #: 155, Current Node #: 216, Diagonal Node #: 257, (257) 
-Element #: 155, Current Node #: 215, Diagonal Node #: 258, (258) 
 Element #: 155, Current Node #: 257, Diagonal Node #: 216, (216) 
 Element #: 155, Current Node #: 258, Diagonal Node #: 215, (215) 
+Element #: 155, Current Node #: 264, Diagonal Node #: 209, (209) 
 Element #: 155, Current Node #: 265, Diagonal Node #: 208, (208) 
-Element #: 155, Current Node #: 264, Diagonal Node #: 209, (209) 
 Element #: 156, Current Node #: 210, Diagonal Node #: 267, (267) 
 Element #: 156, Current Node #: 211, Diagonal Node #: 266, (266) 
+Element #: 156, Current Node #: 217, Diagonal Node #: 260, (260) 
 Element #: 156, Current Node #: 218, Diagonal Node #: 259, (259) 
-Element #: 156, Current Node #: 217, Diagonal Node #: 260, (260) 
 Element #: 156, Current Node #: 259, Diagonal Node #: 218, (218) 
 Element #: 156, Current Node #: 260, Diagonal Node #: 217, (217) 
+Element #: 156, Current Node #: 266, Diagonal Node #: 211, (211) 
 Element #: 156, Current Node #: 267, Diagonal Node #: 210, (210) 
-Element #: 156, Current Node #: 266, Diagonal Node #: 211, (211) 
 Element #: 157, Current Node #: 211, Diagonal Node #: 268, (268) 
 Element #: 157, Current Node #: 212, Diagonal Node #: 267, (267) 
+Element #: 157, Current Node #: 218, Diagonal Node #: 261, (261) 
 Element #: 157, Current Node #: 219, Diagonal Node #: 260, (260) 
-Element #: 157, Current Node #: 218, Diagonal Node #: 261, (261) 
 Element #: 157, Current Node #: 260, Diagonal Node #: 219, (219) 
 Element #: 157, Current Node #: 261, Diagonal Node #: 218, (218) 
+Element #: 157, Current Node #: 267, Diagonal Node #: 212, (212) 
 Element #: 157, Current Node #: 268, Diagonal Node #: 211, (211) 
-Element #: 157, Current Node #: 267, Diagonal Node #: 212, (212) 
 Element #: 158, Current Node #: 212, Diagonal Node #: 269, (269) 
 Element #: 158, Current Node #: 213, Diagonal Node #: 268, (268) 
+Element #: 158, Current Node #: 219, Diagonal Node #: 262, (262) 
 Element #: 158, Current Node #: 220, Diagonal Node #: 261, (261) 
-Element #: 158, Current Node #: 219, Diagonal Node #: 262, (262) 
 Element #: 158, Current Node #: 261, Diagonal Node #: 220, (220) 
 Element #: 158, Current Node #: 262, Diagonal Node #: 219, (219) 
+Element #: 158, Current Node #: 268, Diagonal Node #: 213, (213) 
 Element #: 158, Current Node #: 269, Diagonal Node #: 212, (212) 
-Element #: 158, Current Node #: 268, Diagonal Node #: 213, (213) 
 Element #: 159, Current Node #: 213, Diagonal Node #: 270, (270) 
 Element #: 159, Current Node #: 214, Diagonal Node #: 269, (269) 
+Element #: 159, Current Node #: 220, Diagonal Node #: 263, (263) 
 Element #: 159, Current Node #: 221, Diagonal Node #: 262, (262) 
-Element #: 159, Current Node #: 220, Diagonal Node #: 263, (263) 
 Element #: 159, Current Node #: 262, Diagonal Node #: 221, (221) 
 Element #: 159, Current Node #: 263, Diagonal Node #: 220, (220) 
+Element #: 159, Current Node #: 269, Diagonal Node #: 214, (214) 
 Element #: 159, Current Node #: 270, Diagonal Node #: 213, (213) 
-Element #: 159, Current Node #: 269, Diagonal Node #: 214, (214) 
 Element #: 160, Current Node #: 214, Diagonal Node #: 271, (271) 
 Element #: 160, Current Node #: 215, Diagonal Node #: 270, (270) 
+Element #: 160, Current Node #: 221, Diagonal Node #: 264, (264) 
 Element #: 160, Current Node #: 222, Diagonal Node #: 263, (263) 
-Element #: 160, Current Node #: 221, Diagonal Node #: 264, (264) 
 Element #: 160, Current Node #: 263, Diagonal Node #: 222, (222) 
 Element #: 160, Current Node #: 264, Diagonal Node #: 221, (221) 
+Element #: 160, Current Node #: 270, Diagonal Node #: 215, (215) 
 Element #: 160, Current Node #: 271, Diagonal Node #: 214, (214) 
-Element #: 160, Current Node #: 270, Diagonal Node #: 215, (215) 
 Element #: 161, Current Node #: 215, Diagonal Node #: 272, (272) 
 Element #: 161, Current Node #: 216, Diagonal Node #: 271, (271) 
+Element #: 161, Current Node #: 222, Diagonal Node #: 265, (265) 
 Element #: 161, Current Node #: 223, Diagonal Node #: 264, (264) 
-Element #: 161, Current Node #: 222, Diagonal Node #: 265, (265) 
 Element #: 161, Current Node #: 264, Diagonal Node #: 223, (223) 
 Element #: 161, Current Node #: 265, Diagonal Node #: 222, (222) 
+Element #: 161, Current Node #: 271, Diagonal Node #: 216, (216) 
 Element #: 161, Current Node #: 272, Diagonal Node #: 215, (215) 
-Element #: 161, Current Node #: 271, Diagonal Node #: 216, (216) 
 Element #: 162, Current Node #: 217, Diagonal Node #: 274, (274) 
 Element #: 162, Current Node #: 218, Diagonal Node #: 273, (273) 
+Element #: 162, Current Node #: 224, Diagonal Node #: 267, (267) 
 Element #: 162, Current Node #: 225, Diagonal Node #: 266, (266) 
-Element #: 162, Current Node #: 224, Diagonal Node #: 267, (267) 
 Element #: 162, Current Node #: 266, Diagonal Node #: 225, (225) 
 Element #: 162, Current Node #: 267, Diagonal Node #: 224, (224) 
+Element #: 162, Current Node #: 273, Diagonal Node #: 218, (218) 
 Element #: 162, Current Node #: 274, Diagonal Node #: 217, (217) 
-Element #: 162, Current Node #: 273, Diagonal Node #: 218, (218) 
 Element #: 163, Current Node #: 218, Diagonal Node #: 275, (275) 
 Element #: 163, Current Node #: 219, Diagonal Node #: 274, (274) 
+Element #: 163, Current Node #: 225, Diagonal Node #: 268, (268) 
 Element #: 163, Current Node #: 226, Diagonal Node #: 267, (267) 
-Element #: 163, Current Node #: 225, Diagonal Node #: 268, (268) 
 Element #: 163, Current Node #: 267, Diagonal Node #: 226, (226) 
 Element #: 163, Current Node #: 268, Diagonal Node #: 225, (225) 
+Element #: 163, Current Node #: 274, Diagonal Node #: 219, (219) 
 Element #: 163, Current Node #: 275, Diagonal Node #: 218, (218) 
-Element #: 163, Current Node #: 274, Diagonal Node #: 219, (219) 
 Element #: 164, Current Node #: 219, Diagonal Node #: 276, (276) 
 Element #: 164, Current Node #: 220, Diagonal Node #: 275, (275) 
+Element #: 164, Current Node #: 226, Diagonal Node #: 269, (269) 
 Element #: 164, Current Node #: 227, Diagonal Node #: 268, (268) 
-Element #: 164, Current Node #: 226, Diagonal Node #: 269, (269) 
 Element #: 164, Current Node #: 268, Diagonal Node #: 227, (227) 
 Element #: 164, Current Node #: 269, Diagonal Node #: 226, (226) 
+Element #: 164, Current Node #: 275, Diagonal Node #: 220, (220) 
 Element #: 164, Current Node #: 276, Diagonal Node #: 219, (219) 
-Element #: 164, Current Node #: 275, Diagonal Node #: 220, (220) 
 Element #: 165, Current Node #: 220, Diagonal Node #: 277, (277) 
 Element #: 165, Current Node #: 221, Diagonal Node #: 276, (276) 
+Element #: 165, Current Node #: 227, Diagonal Node #: 270, (270) 
 Element #: 165, Current Node #: 228, Diagonal Node #: 269, (269) 
-Element #: 165, Current Node #: 227, Diagonal Node #: 270, (270) 
 Element #: 165, Current Node #: 269, Diagonal Node #: 228, (228) 
 Element #: 165, Current Node #: 270, Diagonal Node #: 227, (227) 
+Element #: 165, Current Node #: 276, Diagonal Node #: 221, (221) 
 Element #: 165, Current Node #: 277, Diagonal Node #: 220, (220) 
-Element #: 165, Current Node #: 276, Diagonal Node #: 221, (221) 
 Element #: 166, Current Node #: 221, Diagonal Node #: 278, (278) 
 Element #: 166, Current Node #: 222, Diagonal Node #: 277, (277) 
+Element #: 166, Current Node #: 228, Diagonal Node #: 271, (271) 
 Element #: 166, Current Node #: 229, Diagonal Node #: 270, (270) 
-Element #: 166, Current Node #: 228, Diagonal Node #: 271, (271) 
 Element #: 166, Current Node #: 270, Diagonal Node #: 229, (229) 
 Element #: 166, Current Node #: 271, Diagonal Node #: 228, (228) 
+Element #: 166, Current Node #: 277, Diagonal Node #: 222, (222) 
 Element #: 166, Current Node #: 278, Diagonal Node #: 221, (221) 
-Element #: 166, Current Node #: 277, Diagonal Node #: 222, (222) 
 Element #: 167, Current Node #: 222, Diagonal Node #: 279, (279) 
 Element #: 167, Current Node #: 223, Diagonal Node #: 278, (278) 
+Element #: 167, Current Node #: 229, Diagonal Node #: 272, (272) 
 Element #: 167, Current Node #: 230, Diagonal Node #: 271, (271) 
-Element #: 167, Current Node #: 229, Diagonal Node #: 272, (272) 
 Element #: 167, Current Node #: 271, Diagonal Node #: 230, (230) 
 Element #: 167, Current Node #: 272, Diagonal Node #: 229, (229) 
+Element #: 167, Current Node #: 278, Diagonal Node #: 223, (223) 
 Element #: 167, Current Node #: 279, Diagonal Node #: 222, (222) 
-Element #: 167, Current Node #: 278, Diagonal Node #: 223, (223) 
 Element #: 168, Current Node #: 224, Diagonal Node #: 281, (281) 
 Element #: 168, Current Node #: 225, Diagonal Node #: 280, (280) 
+Element #: 168, Current Node #: 231, Diagonal Node #: 274, (274) 
 Element #: 168, Current Node #: 232, Diagonal Node #: 273, (273) 
-Element #: 168, Current Node #: 231, Diagonal Node #: 274, (274) 
 Element #: 168, Current Node #: 273, Diagonal Node #: 232, (232) 
 Element #: 168, Current Node #: 274, Diagonal Node #: 231, (231) 
+Element #: 168, Current Node #: 280, Diagonal Node #: 225, (225) 
 Element #: 168, Current Node #: 281, Diagonal Node #: 224, (224) 
-Element #: 168, Current Node #: 280, Diagonal Node #: 225, (225) 
 Element #: 169, Current Node #: 225, Diagonal Node #: 282, (282) 
 Element #: 169, Current Node #: 226, Diagonal Node #: 281, (281) 
+Element #: 169, Current Node #: 232, Diagonal Node #: 275, (275) 
 Element #: 169, Current Node #: 233, Diagonal Node #: 274, (274) 
-Element #: 169, Current Node #: 232, Diagonal Node #: 275, (275) 
 Element #: 169, Current Node #: 274, Diagonal Node #: 233, (233) 
 Element #: 169, Current Node #: 275, Diagonal Node #: 232, (232) 
+Element #: 169, Current Node #: 281, Diagonal Node #: 226, (226) 
 Element #: 169, Current Node #: 282, Diagonal Node #: 225, (225) 
-Element #: 169, Current Node #: 281, Diagonal Node #: 226, (226) 
 Element #: 170, Current Node #: 226, Diagonal Node #: 283, (283) 
 Element #: 170, Current Node #: 227, Diagonal Node #: 282, (282) 
+Element #: 170, Current Node #: 233, Diagonal Node #: 276, (276) 
 Element #: 170, Current Node #: 234, Diagonal Node #: 275, (275) 
-Element #: 170, Current Node #: 233, Diagonal Node #: 276, (276) 
 Element #: 170, Current Node #: 275, Diagonal Node #: 234, (234) 
 Element #: 170, Current Node #: 276, Diagonal Node #: 233, (233) 
+Element #: 170, Current Node #: 282, Diagonal Node #: 227, (227) 
 Element #: 170, Current Node #: 283, Diagonal Node #: 226, (226) 
-Element #: 170, Current Node #: 282, Diagonal Node #: 227, (227) 
 Element #: 171, Current Node #: 227, Diagonal Node #: 284, (284) 
 Element #: 171, Current Node #: 228, Diagonal Node #: 283, (283) 
+Element #: 171, Current Node #: 234, Diagonal Node #: 277, (277) 
 Element #: 171, Current Node #: 235, Diagonal Node #: 276, (276) 
-Element #: 171, Current Node #: 234, Diagonal Node #: 277, (277) 
 Element #: 171, Current Node #: 276, Diagonal Node #: 235, (235) 
 Element #: 171, Current Node #: 277, Diagonal Node #: 234, (234) 
+Element #: 171, Current Node #: 283, Diagonal Node #: 228, (228) 
 Element #: 171, Current Node #: 284, Diagonal Node #: 227, (227) 
-Element #: 171, Current Node #: 283, Diagonal Node #: 228, (228) 
 Element #: 172, Current Node #: 228, Diagonal Node #: 285, (285) 
 Element #: 172, Current Node #: 229, Diagonal Node #: 284, (284) 
+Element #: 172, Current Node #: 235, Diagonal Node #: 278, (278) 
 Element #: 172, Current Node #: 236, Diagonal Node #: 277, (277) 
-Element #: 172, Current Node #: 235, Diagonal Node #: 278, (278) 
 Element #: 172, Current Node #: 277, Diagonal Node #: 236, (236) 
 Element #: 172, Current Node #: 278, Diagonal Node #: 235, (235) 
+Element #: 172, Current Node #: 284, Diagonal Node #: 229, (229) 
 Element #: 172, Current Node #: 285, Diagonal Node #: 228, (228) 
-Element #: 172, Current Node #: 284, Diagonal Node #: 229, (229) 
 Element #: 173, Current Node #: 229, Diagonal Node #: 286, (286) 
 Element #: 173, Current Node #: 230, Diagonal Node #: 285, (285) 
+Element #: 173, Current Node #: 236, Diagonal Node #: 279, (279) 
 Element #: 173, Current Node #: 237, Diagonal Node #: 278, (278) 
-Element #: 173, Current Node #: 236, Diagonal Node #: 279, (279) 
 Element #: 173, Current Node #: 278, Diagonal Node #: 237, (237) 
 Element #: 173, Current Node #: 279, Diagonal Node #: 236, (236) 
+Element #: 173, Current Node #: 285, Diagonal Node #: 230, (230) 
 Element #: 173, Current Node #: 286, Diagonal Node #: 229, (229) 
-Element #: 173, Current Node #: 285, Diagonal Node #: 230, (230) 
 Element #: 174, Current Node #: 231, Diagonal Node #: 288, (288) 
 Element #: 174, Current Node #: 232, Diagonal Node #: 287, (287) 
+Element #: 174, Current Node #: 238, Diagonal Node #: 281, (281) 
 Element #: 174, Current Node #: 239, Diagonal Node #: 280, (280) 
-Element #: 174, Current Node #: 238, Diagonal Node #: 281, (281) 
 Element #: 174, Current Node #: 280, Diagonal Node #: 239, (239) 
 Element #: 174, Current Node #: 281, Diagonal Node #: 238, (238) 
+Element #: 174, Current Node #: 287, Diagonal Node #: 232, (232) 
 Element #: 174, Current Node #: 288, Diagonal Node #: 231, (231) 
-Element #: 174, Current Node #: 287, Diagonal Node #: 232, (232) 
 Element #: 175, Current Node #: 232, Diagonal Node #: 289, (289) 
 Element #: 175, Current Node #: 233, Diagonal Node #: 288, (288) 
+Element #: 175, Current Node #: 239, Diagonal Node #: 282, (282) 
 Element #: 175, Current Node #: 240, Diagonal Node #: 281, (281) 
-Element #: 175, Current Node #: 239, Diagonal Node #: 282, (282) 
 Element #: 175, Current Node #: 281, Diagonal Node #: 240, (240) 
 Element #: 175, Current Node #: 282, Diagonal Node #: 239, (239) 
+Element #: 175, Current Node #: 288, Diagonal Node #: 233, (233) 
 Element #: 175, Current Node #: 289, Diagonal Node #: 232, (232) 
-Element #: 175, Current Node #: 288, Diagonal Node #: 233, (233) 
 Element #: 176, Current Node #: 233, Diagonal Node #: 290, (290) 
 Element #: 176, Current Node #: 234, Diagonal Node #: 289, (289) 
+Element #: 176, Current Node #: 240, Diagonal Node #: 283, (283) 
 Element #: 176, Current Node #: 241, Diagonal Node #: 282, (282) 
-Element #: 176, Current Node #: 240, Diagonal Node #: 283, (283) 
 Element #: 176, Current Node #: 282, Diagonal Node #: 241, (241) 
 Element #: 176, Current Node #: 283, Diagonal Node #: 240, (240) 
+Element #: 176, Current Node #: 289, Diagonal Node #: 234, (234) 
 Element #: 176, Current Node #: 290, Diagonal Node #: 233, (233) 
-Element #: 176, Current Node #: 289, Diagonal Node #: 234, (234) 
 Element #: 177, Current Node #: 234, Diagonal Node #: 291, (291) 
 Element #: 177, Current Node #: 235, Diagonal Node #: 290, (290) 
+Element #: 177, Current Node #: 241, Diagonal Node #: 284, (284) 
 Element #: 177, Current Node #: 242, Diagonal Node #: 283, (283) 
-Element #: 177, Current Node #: 241, Diagonal Node #: 284, (284) 
 Element #: 177, Current Node #: 283, Diagonal Node #: 242, (242) 
 Element #: 177, Current Node #: 284, Diagonal Node #: 241, (241) 
+Element #: 177, Current Node #: 290, Diagonal Node #: 235, (235) 
 Element #: 177, Current Node #: 291, Diagonal Node #: 234, (234) 
-Element #: 177, Current Node #: 290, Diagonal Node #: 235, (235) 
 Element #: 178, Current Node #: 235, Diagonal Node #: 292, (292) 
 Element #: 178, Current Node #: 236, Diagonal Node #: 291, (291) 
+Element #: 178, Current Node #: 242, Diagonal Node #: 285, (285) 
 Element #: 178, Current Node #: 243, Diagonal Node #: 284, (284) 
-Element #: 178, Current Node #: 242, Diagonal Node #: 285, (285) 
 Element #: 178, Current Node #: 284, Diagonal Node #: 243, (243) 
 Element #: 178, Current Node #: 285, Diagonal Node #: 242, (242) 
+Element #: 178, Current Node #: 291, Diagonal Node #: 236, (236) 
 Element #: 178, Current Node #: 292, Diagonal Node #: 235, (235) 
-Element #: 178, Current Node #: 291, Diagonal Node #: 236, (236) 
 Element #: 179, Current Node #: 236, Diagonal Node #: 293, (293) 
 Element #: 179, Current Node #: 237, Diagonal Node #: 292, (292) 
+Element #: 179, Current Node #: 243, Diagonal Node #: 286, (286) 
 Element #: 179, Current Node #: 244, Diagonal Node #: 285, (285) 
-Element #: 179, Current Node #: 243, Diagonal Node #: 286, (286) 
 Element #: 179, Current Node #: 285, Diagonal Node #: 244, (244) 
 Element #: 179, Current Node #: 286, Diagonal Node #: 243, (243) 
+Element #: 179, Current Node #: 292, Diagonal Node #: 237, (237) 
 Element #: 179, Current Node #: 293, Diagonal Node #: 236, (236) 
-Element #: 179, Current Node #: 292, Diagonal Node #: 237, (237) 
 Element #: 180, Current Node #: 245, Diagonal Node #: 302, (302) 
 Element #: 180, Current Node #: 246, Diagonal Node #: 301, (301) 
+Element #: 180, Current Node #: 252, Diagonal Node #: 295, (295) 
 Element #: 180, Current Node #: 253, Diagonal Node #: 294, (294) 
-Element #: 180, Current Node #: 252, Diagonal Node #: 295, (295) 
 Element #: 180, Current Node #: 294, Diagonal Node #: 253, (253) 
 Element #: 180, Current Node #: 295, Diagonal Node #: 252, (252) 
+Element #: 180, Current Node #: 301, Diagonal Node #: 246, (246) 
 Element #: 180, Current Node #: 302, Diagonal Node #: 245, (245) 
-Element #: 180, Current Node #: 301, Diagonal Node #: 246, (246) 
 Element #: 181, Current Node #: 246, Diagonal Node #: 303, (303) 
 Element #: 181, Current Node #: 247, Diagonal Node #: 302, (302) 
+Element #: 181, Current Node #: 253, Diagonal Node #: 296, (296) 
 Element #: 181, Current Node #: 254, Diagonal Node #: 295, (295) 
-Element #: 181, Current Node #: 253, Diagonal Node #: 296, (296) 
 Element #: 181, Current Node #: 295, Diagonal Node #: 254, (254) 
 Element #: 181, Current Node #: 296, Diagonal Node #: 253, (253) 
+Element #: 181, Current Node #: 302, Diagonal Node #: 247, (247) 
 Element #: 181, Current Node #: 303, Diagonal Node #: 246, (246) 
-Element #: 181, Current Node #: 302, Diagonal Node #: 247, (247) 
 Element #: 182, Current Node #: 247, Diagonal Node #: 304, (304) 
 Element #: 182, Current Node #: 248, Diagonal Node #: 303, (303) 
+Element #: 182, Current Node #: 254, Diagonal Node #: 297, (297) 
 Element #: 182, Current Node #: 255, Diagonal Node #: 296, (296) 
-Element #: 182, Current Node #: 254, Diagonal Node #: 297, (297) 
 Element #: 182, Current Node #: 296, Diagonal Node #: 255, (255) 
 Element #: 182, Current Node #: 297, Diagonal Node #: 254, (254) 
+Element #: 182, Current Node #: 303, Diagonal Node #: 248, (248) 
 Element #: 182, Current Node #: 304, Diagonal Node #: 247, (247) 
-Element #: 182, Current Node #: 303, Diagonal Node #: 248, (248) 
 Element #: 183, Current Node #: 248, Diagonal Node #: 305, (305) 
 Element #: 183, Current Node #: 249, Diagonal Node #: 304, (304) 
+Element #: 183, Current Node #: 255, Diagonal Node #: 298, (298) 
 Element #: 183, Current Node #: 256, Diagonal Node #: 297, (297) 
-Element #: 183, Current Node #: 255, Diagonal Node #: 298, (298) 
 Element #: 183, Current Node #: 297, Diagonal Node #: 256, (256) 
 Element #: 183, Current Node #: 298, Diagonal Node #: 255, (255) 
+Element #: 183, Current Node #: 304, Diagonal Node #: 249, (249) 
 Element #: 183, Current Node #: 305, Diagonal Node #: 248, (248) 
-Element #: 183, Current Node #: 304, Diagonal Node #: 249, (249) 
 Element #: 184, Current Node #: 249, Diagonal Node #: 306, (306) 
 Element #: 184, Current Node #: 250, Diagonal Node #: 305, (305) 
+Element #: 184, Current Node #: 256, Diagonal Node #: 299, (299) 
 Element #: 184, Current Node #: 257, Diagonal Node #: 298, (298) 
-Element #: 184, Current Node #: 256, Diagonal Node #: 299, (299) 
 Element #: 184, Current Node #: 298, Diagonal Node #: 257, (257) 
 Element #: 184, Current Node #: 299, Diagonal Node #: 256, (256) 
+Element #: 184, Current Node #: 305, Diagonal Node #: 250, (250) 
 Element #: 184, Current Node #: 306, Diagonal Node #: 249, (249) 
-Element #: 184, Current Node #: 305, Diagonal Node #: 250, (250) 
 Element #: 185, Current Node #: 250, Diagonal Node #: 307, (307) 
 Element #: 185, Current Node #: 251, Diagonal Node #: 306, (306) 
+Element #: 185, Current Node #: 257, Diagonal Node #: 300, (300) 
 Element #: 185, Current Node #: 258, Diagonal Node #: 299, (299) 
-Element #: 185, Current Node #: 257, Diagonal Node #: 300, (300) 
 Element #: 185, Current Node #: 299, Diagonal Node #: 258, (258) 
 Element #: 185, Current Node #: 300, Diagonal Node #: 257, (257) 
+Element #: 185, Current Node #: 306, Diagonal Node #: 251, (251) 
 Element #: 185, Current Node #: 307, Diagonal Node #: 250, (250) 
-Element #: 185, Current Node #: 306, Diagonal Node #: 251, (251) 
 Element #: 186, Current Node #: 252, Diagonal Node #: 309, (309) 
 Element #: 186, Current Node #: 253, Diagonal Node #: 308, (308) 
+Element #: 186, Current Node #: 259, Diagonal Node #: 302, (302) 
 Element #: 186, Current Node #: 260, Diagonal Node #: 301, (301) 
-Element #: 186, Current Node #: 259, Diagonal Node #: 302, (302) 
 Element #: 186, Current Node #: 301, Diagonal Node #: 260, (260) 
 Element #: 186, Current Node #: 302, Diagonal Node #: 259, (259) 
+Element #: 186, Current Node #: 308, Diagonal Node #: 253, (253) 
 Element #: 186, Current Node #: 309, Diagonal Node #: 252, (252) 
-Element #: 186, Current Node #: 308, Diagonal Node #: 253, (253) 
 Element #: 187, Current Node #: 253, Diagonal Node #: 310, (310) 
 Element #: 187, Current Node #: 254, Diagonal Node #: 309, (309) 
+Element #: 187, Current Node #: 260, Diagonal Node #: 303, (303) 
 Element #: 187, Current Node #: 261, Diagonal Node #: 302, (302) 
-Element #: 187, Current Node #: 260, Diagonal Node #: 303, (303) 
 Element #: 187, Current Node #: 302, Diagonal Node #: 261, (261) 
 Element #: 187, Current Node #: 303, Diagonal Node #: 260, (260) 
+Element #: 187, Current Node #: 309, Diagonal Node #: 254, (254) 
 Element #: 187, Current Node #: 310, Diagonal Node #: 253, (253) 
-Element #: 187, Current Node #: 309, Diagonal Node #: 254, (254) 
 Element #: 188, Current Node #: 254, Diagonal Node #: 311, (311) 
 Element #: 188, Current Node #: 255, Diagonal Node #: 310, (310) 
+Element #: 188, Current Node #: 261, Diagonal Node #: 304, (304) 
 Element #: 188, Current Node #: 262, Diagonal Node #: 303, (303) 
-Element #: 188, Current Node #: 261, Diagonal Node #: 304, (304) 
 Element #: 188, Current Node #: 303, Diagonal Node #: 262, (262) 
 Element #: 188, Current Node #: 304, Diagonal Node #: 261, (261) 
+Element #: 188, Current Node #: 310, Diagonal Node #: 255, (255) 
 Element #: 188, Current Node #: 311, Diagonal Node #: 254, (254) 
-Element #: 188, Current Node #: 310, Diagonal Node #: 255, (255) 
 Element #: 189, Current Node #: 255, Diagonal Node #: 312, (312) 
 Element #: 189, Current Node #: 256, Diagonal Node #: 311, (311) 
+Element #: 189, Current Node #: 262, Diagonal Node #: 305, (305) 
 Element #: 189, Current Node #: 263, Diagonal Node #: 304, (304) 
-Element #: 189, Current Node #: 262, Diagonal Node #: 305, (305) 
 Element #: 189, Current Node #: 304, Diagonal Node #: 263, (263) 
 Element #: 189, Current Node #: 305, Diagonal Node #: 262, (262) 
+Element #: 189, Current Node #: 311, Diagonal Node #: 256, (256) 
 Element #: 189, Current Node #: 312, Diagonal Node #: 255, (255) 
-Element #: 189, Current Node #: 311, Diagonal Node #: 256, (256) 
 Element #: 190, Current Node #: 256, Diagonal Node #: 313, (313) 
 Element #: 190, Current Node #: 257, Diagonal Node #: 312, (312) 
+Element #: 190, Current Node #: 263, Diagonal Node #: 306, (306) 
 Element #: 190, Current Node #: 264, Diagonal Node #: 305, (305) 
-Element #: 190, Current Node #: 263, Diagonal Node #: 306, (306) 
 Element #: 190, Current Node #: 305, Diagonal Node #: 264, (264) 
 Element #: 190, Current Node #: 306, Diagonal Node #: 263, (263) 
+Element #: 190, Current Node #: 312, Diagonal Node #: 257, (257) 
 Element #: 190, Current Node #: 313, Diagonal Node #: 256, (256) 
-Element #: 190, Current Node #: 312, Diagonal Node #: 257, (257) 
 Element #: 191, Current Node #: 257, Diagonal Node #: 314, (314) 
 Element #: 191, Current Node #: 258, Diagonal Node #: 313, (313) 
+Element #: 191, Current Node #: 264, Diagonal Node #: 307, (307) 
 Element #: 191, Current Node #: 265, Diagonal Node #: 306, (306) 
-Element #: 191, Current Node #: 264, Diagonal Node #: 307, (307) 
 Element #: 191, Current Node #: 306, Diagonal Node #: 265, (265) 
 Element #: 191, Current Node #: 307, Diagonal Node #: 264, (264) 
+Element #: 191, Current Node #: 313, Diagonal Node #: 258, (258) 
 Element #: 191, Current Node #: 314, Diagonal Node #: 257, (257) 
-Element #: 191, Current Node #: 313, Diagonal Node #: 258, (258) 
 Element #: 192, Current Node #: 259, Diagonal Node #: 316, (316) 
 Element #: 192, Current Node #: 260, Diagonal Node #: 315, (315) 
+Element #: 192, Current Node #: 266, Diagonal Node #: 309, (309) 
 Element #: 192, Current Node #: 267, Diagonal Node #: 308, (308) 
-Element #: 192, Current Node #: 266, Diagonal Node #: 309, (309) 
 Element #: 192, Current Node #: 308, Diagonal Node #: 267, (267) 
 Element #: 192, Current Node #: 309, Diagonal Node #: 266, (266) 
+Element #: 192, Current Node #: 315, Diagonal Node #: 260, (260) 
 Element #: 192, Current Node #: 316, Diagonal Node #: 259, (259) 
-Element #: 192, Current Node #: 315, Diagonal Node #: 260, (260) 
 Element #: 193, Current Node #: 260, Diagonal Node #: 317, (317) 
 Element #: 193, Current Node #: 261, Diagonal Node #: 316, (316) 
+Element #: 193, Current Node #: 267, Diagonal Node #: 310, (310) 
 Element #: 193, Current Node #: 268, Diagonal Node #: 309, (309) 
-Element #: 193, Current Node #: 267, Diagonal Node #: 310, (310) 
 Element #: 193, Current Node #: 309, Diagonal Node #: 268, (268) 
 Element #: 193, Current Node #: 310, Diagonal Node #: 267, (267) 
+Element #: 193, Current Node #: 316, Diagonal Node #: 261, (261) 
 Element #: 193, Current Node #: 317, Diagonal Node #: 260, (260) 
-Element #: 193, Current Node #: 316, Diagonal Node #: 261, (261) 
 Element #: 194, Current Node #: 261, Diagonal Node #: 318, (318) 
 Element #: 194, Current Node #: 262, Diagonal Node #: 317, (317) 
+Element #: 194, Current Node #: 268, Diagonal Node #: 311, (311) 
 Element #: 194, Current Node #: 269, Diagonal Node #: 310, (310) 
-Element #: 194, Current Node #: 268, Diagonal Node #: 311, (311) 
 Element #: 194, Current Node #: 310, Diagonal Node #: 269, (269) 
 Element #: 194, Current Node #: 311, Diagonal Node #: 268, (268) 
+Element #: 194, Current Node #: 317, Diagonal Node #: 262, (262) 
 Element #: 194, Current Node #: 318, Diagonal Node #: 261, (261) 
-Element #: 194, Current Node #: 317, Diagonal Node #: 262, (262) 
 Element #: 195, Current Node #: 262, Diagonal Node #: 319, (319) 
 Element #: 195, Current Node #: 263, Diagonal Node #: 318, (318) 
+Element #: 195, Current Node #: 269, Diagonal Node #: 312, (312) 
 Element #: 195, Current Node #: 270, Diagonal Node #: 311, (311) 
-Element #: 195, Current Node #: 269, Diagonal Node #: 312, (312) 
 Element #: 195, Current Node #: 311, Diagonal Node #: 270, (270) 
 Element #: 195, Current Node #: 312, Diagonal Node #: 269, (269) 
+Element #: 195, Current Node #: 318, Diagonal Node #: 263, (263) 
 Element #: 195, Current Node #: 319, Diagonal Node #: 262, (262) 
-Element #: 195, Current Node #: 318, Diagonal Node #: 263, (263) 
 Element #: 196, Current Node #: 263, Diagonal Node #: 320, (320) 
 Element #: 196, Current Node #: 264, Diagonal Node #: 319, (319) 
+Element #: 196, Current Node #: 270, Diagonal Node #: 313, (313) 
 Element #: 196, Current Node #: 271, Diagonal Node #: 312, (312) 
-Element #: 196, Current Node #: 270, Diagonal Node #: 313, (313) 
 Element #: 196, Current Node #: 312, Diagonal Node #: 271, (271) 
 Element #: 196, Current Node #: 313, Diagonal Node #: 270, (270) 
+Element #: 196, Current Node #: 319, Diagonal Node #: 264, (264) 
 Element #: 196, Current Node #: 320, Diagonal Node #: 263, (263) 
-Element #: 196, Current Node #: 319, Diagonal Node #: 264, (264) 
 Element #: 197, Current Node #: 264, Diagonal Node #: 321, (321) 
 Element #: 197, Current Node #: 265, Diagonal Node #: 320, (320) 
+Element #: 197, Current Node #: 271, Diagonal Node #: 314, (314) 
 Element #: 197, Current Node #: 272, Diagonal Node #: 313, (313) 
-Element #: 197, Current Node #: 271, Diagonal Node #: 314, (314) 
 Element #: 197, Current Node #: 313, Diagonal Node #: 272, (272) 
 Element #: 197, Current Node #: 314, Diagonal Node #: 271, (271) 
+Element #: 197, Current Node #: 320, Diagonal Node #: 265, (265) 
 Element #: 197, Current Node #: 321, Diagonal Node #: 264, (264) 
-Element #: 197, Current Node #: 320, Diagonal Node #: 265, (265) 
 Element #: 198, Current Node #: 266, Diagonal Node #: 323, (323) 
 Element #: 198, Current Node #: 267, Diagonal Node #: 322, (322) 
+Element #: 198, Current Node #: 273, Diagonal Node #: 316, (316) 
 Element #: 198, Current Node #: 274, Diagonal Node #: 315, (315) 
-Element #: 198, Current Node #: 273, Diagonal Node #: 316, (316) 
 Element #: 198, Current Node #: 315, Diagonal Node #: 274, (274) 
 Element #: 198, Current Node #: 316, Diagonal Node #: 273, (273) 
+Element #: 198, Current Node #: 322, Diagonal Node #: 267, (267) 
 Element #: 198, Current Node #: 323, Diagonal Node #: 266, (266) 
-Element #: 198, Current Node #: 322, Diagonal Node #: 267, (267) 
 Element #: 199, Current Node #: 267, Diagonal Node #: 324, (324) 
 Element #: 199, Current Node #: 268, Diagonal Node #: 323, (323) 
+Element #: 199, Current Node #: 274, Diagonal Node #: 317, (317) 
 Element #: 199, Current Node #: 275, Diagonal Node #: 316, (316) 
-Element #: 199, Current Node #: 274, Diagonal Node #: 317, (317) 
 Element #: 199, Current Node #: 316, Diagonal Node #: 275, (275) 
 Element #: 199, Current Node #: 317, Diagonal Node #: 274, (274) 
+Element #: 199, Current Node #: 323, Diagonal Node #: 268, (268) 
 Element #: 199, Current Node #: 324, Diagonal Node #: 267, (267) 
-Element #: 199, Current Node #: 323, Diagonal Node #: 268, (268) 
 Element #: 200, Current Node #: 268, Diagonal Node #: 325, (325) 
 Element #: 200, Current Node #: 269, Diagonal Node #: 324, (324) 
+Element #: 200, Current Node #: 275, Diagonal Node #: 318, (318) 
 Element #: 200, Current Node #: 276, Diagonal Node #: 317, (317) 
-Element #: 200, Current Node #: 275, Diagonal Node #: 318, (318) 
 Element #: 200, Current Node #: 317, Diagonal Node #: 276, (276) 
 Element #: 200, Current Node #: 318, Diagonal Node #: 275, (275) 
+Element #: 200, Current Node #: 324, Diagonal Node #: 269, (269) 
 Element #: 200, Current Node #: 325, Diagonal Node #: 268, (268) 
-Element #: 200, Current Node #: 324, Diagonal Node #: 269, (269) 
 Element #: 201, Current Node #: 269, Diagonal Node #: 326, (326) 
 Element #: 201, Current Node #: 270, Diagonal Node #: 325, (325) 
+Element #: 201, Current Node #: 276, Diagonal Node #: 319, (319) 
 Element #: 201, Current Node #: 277, Diagonal Node #: 318, (318) 
-Element #: 201, Current Node #: 276, Diagonal Node #: 319, (319) 
 Element #: 201, Current Node #: 318, Diagonal Node #: 277, (277) 
 Element #: 201, Current Node #: 319, Diagonal Node #: 276, (276) 
+Element #: 201, Current Node #: 325, Diagonal Node #: 270, (270) 
 Element #: 201, Current Node #: 326, Diagonal Node #: 269, (269) 
-Element #: 201, Current Node #: 325, Diagonal Node #: 270, (270) 
 Element #: 202, Current Node #: 270, Diagonal Node #: 327, (327) 
 Element #: 202, Current Node #: 271, Diagonal Node #: 326, (326) 
+Element #: 202, Current Node #: 277, Diagonal Node #: 320, (320) 
 Element #: 202, Current Node #: 278, Diagonal Node #: 319, (319) 
-Element #: 202, Current Node #: 277, Diagonal Node #: 320, (320) 
 Element #: 202, Current Node #: 319, Diagonal Node #: 278, (278) 
 Element #: 202, Current Node #: 320, Diagonal Node #: 277, (277) 
+Element #: 202, Current Node #: 326, Diagonal Node #: 271, (271) 
 Element #: 202, Current Node #: 327, Diagonal Node #: 270, (270) 
-Element #: 202, Current Node #: 326, Diagonal Node #: 271, (271) 
 Element #: 203, Current Node #: 271, Diagonal Node #: 328, (328) 
 Element #: 203, Current Node #: 272, Diagonal Node #: 327, (327) 
+Element #: 203, Current Node #: 278, Diagonal Node #: 321, (321) 
 Element #: 203, Current Node #: 279, Diagonal Node #: 320, (320) 
-Element #: 203, Current Node #: 278, Diagonal Node #: 321, (321) 
 Element #: 203, Current Node #: 320, Diagonal Node #: 279, (279) 
 Element #: 203, Current Node #: 321, Diagonal Node #: 278, (278) 
+Element #: 203, Current Node #: 327, Diagonal Node #: 272, (272) 
 Element #: 203, Current Node #: 328, Diagonal Node #: 271, (271) 
-Element #: 203, Current Node #: 327, Diagonal Node #: 272, (272) 
 Element #: 204, Current Node #: 273, Diagonal Node #: 330, (330) 
 Element #: 204, Current Node #: 274, Diagonal Node #: 329, (329) 
+Element #: 204, Current Node #: 280, Diagonal Node #: 323, (323) 
 Element #: 204, Current Node #: 281, Diagonal Node #: 322, (322) 
-Element #: 204, Current Node #: 280, Diagonal Node #: 323, (323) 
 Element #: 204, Current Node #: 322, Diagonal Node #: 281, (281) 
 Element #: 204, Current Node #: 323, Diagonal Node #: 280, (280) 
+Element #: 204, Current Node #: 329, Diagonal Node #: 274, (274) 
 Element #: 204, Current Node #: 330, Diagonal Node #: 273, (273) 
-Element #: 204, Current Node #: 329, Diagonal Node #: 274, (274) 
 Element #: 205, Current Node #: 274, Diagonal Node #: 331, (331) 
 Element #: 205, Current Node #: 275, Diagonal Node #: 330, (330) 
+Element #: 205, Current Node #: 281, Diagonal Node #: 324, (324) 
 Element #: 205, Current Node #: 282, Diagonal Node #: 323, (323) 
-Element #: 205, Current Node #: 281, Diagonal Node #: 324, (324) 
 Element #: 205, Current Node #: 323, Diagonal Node #: 282, (282) 
 Element #: 205, Current Node #: 324, Diagonal Node #: 281, (281) 
+Element #: 205, Current Node #: 330, Diagonal Node #: 275, (275) 
 Element #: 205, Current Node #: 331, Diagonal Node #: 274, (274) 
-Element #: 205, Current Node #: 330, Diagonal Node #: 275, (275) 
 Element #: 206, Current Node #: 275, Diagonal Node #: 332, (332) 
 Element #: 206, Current Node #: 276, Diagonal Node #: 331, (331) 
+Element #: 206, Current Node #: 282, Diagonal Node #: 325, (325) 
 Element #: 206, Current Node #: 283, Diagonal Node #: 324, (324) 
-Element #: 206, Current Node #: 282, Diagonal Node #: 325, (325) 
 Element #: 206, Current Node #: 324, Diagonal Node #: 283, (283) 
 Element #: 206, Current Node #: 325, Diagonal Node #: 282, (282) 
+Element #: 206, Current Node #: 331, Diagonal Node #: 276, (276) 
 Element #: 206, Current Node #: 332, Diagonal Node #: 275, (275) 
-Element #: 206, Current Node #: 331, Diagonal Node #: 276, (276) 
 Element #: 207, Current Node #: 276, Diagonal Node #: 333, (333) 
 Element #: 207, Current Node #: 277, Diagonal Node #: 332, (332) 
+Element #: 207, Current Node #: 283, Diagonal Node #: 326, (326) 
 Element #: 207, Current Node #: 284, Diagonal Node #: 325, (325) 
-Element #: 207, Current Node #: 283, Diagonal Node #: 326, (326) 
 Element #: 207, Current Node #: 325, Diagonal Node #: 284, (284) 
 Element #: 207, Current Node #: 326, Diagonal Node #: 283, (283) 
+Element #: 207, Current Node #: 332, Diagonal Node #: 277, (277) 
 Element #: 207, Current Node #: 333, Diagonal Node #: 276, (276) 
-Element #: 207, Current Node #: 332, Diagonal Node #: 277, (277) 
 Element #: 208, Current Node #: 277, Diagonal Node #: 334, (334) 
 Element #: 208, Current Node #: 278, Diagonal Node #: 333, (333) 
+Element #: 208, Current Node #: 284, Diagonal Node #: 327, (327) 
 Element #: 208, Current Node #: 285, Diagonal Node #: 326, (326) 
-Element #: 208, Current Node #: 284, Diagonal Node #: 327, (327) 
 Element #: 208, Current Node #: 326, Diagonal Node #: 285, (285) 
 Element #: 208, Current Node #: 327, Diagonal Node #: 284, (284) 
+Element #: 208, Current Node #: 333, Diagonal Node #: 278, (278) 
 Element #: 208, Current Node #: 334, Diagonal Node #: 277, (277) 
-Element #: 208, Current Node #: 333, Diagonal Node #: 278, (278) 
 Element #: 209, Current Node #: 278, Diagonal Node #: 335, (335) 
 Element #: 209, Current Node #: 279, Diagonal Node #: 334, (334) 
+Element #: 209, Current Node #: 285, Diagonal Node #: 328, (328) 
 Element #: 209, Current Node #: 286, Diagonal Node #: 327, (327) 
-Element #: 209, Current Node #: 285, Diagonal Node #: 328, (328) 
 Element #: 209, Current Node #: 327, Diagonal Node #: 286, (286) 
 Element #: 209, Current Node #: 328, Diagonal Node #: 285, (285) 
+Element #: 209, Current Node #: 334, Diagonal Node #: 279, (279) 
 Element #: 209, Current Node #: 335, Diagonal Node #: 278, (278) 
-Element #: 209, Current Node #: 334, Diagonal Node #: 279, (279) 
 Element #: 210, Current Node #: 280, Diagonal Node #: 337, (337) 
 Element #: 210, Current Node #: 281, Diagonal Node #: 336, (336) 
+Element #: 210, Current Node #: 287, Diagonal Node #: 330, (330) 
 Element #: 210, Current Node #: 288, Diagonal Node #: 329, (329) 
-Element #: 210, Current Node #: 287, Diagonal Node #: 330, (330) 
 Element #: 210, Current Node #: 329, Diagonal Node #: 288, (288) 
 Element #: 210, Current Node #: 330, Diagonal Node #: 287, (287) 
+Element #: 210, Current Node #: 336, Diagonal Node #: 281, (281) 
 Element #: 210, Current Node #: 337, Diagonal Node #: 280, (280) 
-Element #: 210, Current Node #: 336, Diagonal Node #: 281, (281) 
 Element #: 211, Current Node #: 281, Diagonal Node #: 338, (338) 
 Element #: 211, Current Node #: 282, Diagonal Node #: 337, (337) 
+Element #: 211, Current Node #: 288, Diagonal Node #: 331, (331) 
 Element #: 211, Current Node #: 289, Diagonal Node #: 330, (330) 
-Element #: 211, Current Node #: 288, Diagonal Node #: 331, (331) 
 Element #: 211, Current Node #: 330, Diagonal Node #: 289, (289) 
 Element #: 211, Current Node #: 331, Diagonal Node #: 288, (288) 
+Element #: 211, Current Node #: 337, Diagonal Node #: 282, (282) 
 Element #: 211, Current Node #: 338, Diagonal Node #: 281, (281) 
-Element #: 211, Current Node #: 337, Diagonal Node #: 282, (282) 
 Element #: 212, Current Node #: 282, Diagonal Node #: 339, (339) 
 Element #: 212, Current Node #: 283, Diagonal Node #: 338, (338) 
+Element #: 212, Current Node #: 289, Diagonal Node #: 332, (332) 
 Element #: 212, Current Node #: 290, Diagonal Node #: 331, (331) 
-Element #: 212, Current Node #: 289, Diagonal Node #: 332, (332) 
 Element #: 212, Current Node #: 331, Diagonal Node #: 290, (290) 
 Element #: 212, Current Node #: 332, Diagonal Node #: 289, (289) 
+Element #: 212, Current Node #: 338, Diagonal Node #: 283, (283) 
 Element #: 212, Current Node #: 339, Diagonal Node #: 282, (282) 
-Element #: 212, Current Node #: 338, Diagonal Node #: 283, (283) 
 Element #: 213, Current Node #: 283, Diagonal Node #: 340, (340) 
 Element #: 213, Current Node #: 284, Diagonal Node #: 339, (339) 
+Element #: 213, Current Node #: 290, Diagonal Node #: 333, (333) 
 Element #: 213, Current Node #: 291, Diagonal Node #: 332, (332) 
-Element #: 213, Current Node #: 290, Diagonal Node #: 333, (333) 
 Element #: 213, Current Node #: 332, Diagonal Node #: 291, (291) 
 Element #: 213, Current Node #: 333, Diagonal Node #: 290, (290) 
+Element #: 213, Current Node #: 339, Diagonal Node #: 284, (284) 
 Element #: 213, Current Node #: 340, Diagonal Node #: 283, (283) 
-Element #: 213, Current Node #: 339, Diagonal Node #: 284, (284) 
 Element #: 214, Current Node #: 284, Diagonal Node #: 341, (341) 
 Element #: 214, Current Node #: 285, Diagonal Node #: 340, (340) 
+Element #: 214, Current Node #: 291, Diagonal Node #: 334, (334) 
 Element #: 214, Current Node #: 292, Diagonal Node #: 333, (333) 
-Element #: 214, Current Node #: 291, Diagonal Node #: 334, (334) 
 Element #: 214, Current Node #: 333, Diagonal Node #: 292, (292) 
 Element #: 214, Current Node #: 334, Diagonal Node #: 291, (291) 
+Element #: 214, Current Node #: 340, Diagonal Node #: 285, (285) 
 Element #: 214, Current Node #: 341, Diagonal Node #: 284, (284) 
-Element #: 214, Current Node #: 340, Diagonal Node #: 285, (285) 
 Element #: 215, Current Node #: 285, Diagonal Node #: 342, (342) 
 Element #: 215, Current Node #: 286, Diagonal Node #: 341, (341) 
+Element #: 215, Current Node #: 292, Diagonal Node #: 335, (335) 
 Element #: 215, Current Node #: 293, Diagonal Node #: 334, (334) 
-Element #: 215, Current Node #: 292, Diagonal Node #: 335, (335) 
 Element #: 215, Current Node #: 334, Diagonal Node #: 293, (293) 
 Element #: 215, Current Node #: 335, Diagonal Node #: 292, (292) 
+Element #: 215, Current Node #: 341, Diagonal Node #: 286, (286) 
 Element #: 215, Current Node #: 342, Diagonal Node #: 285, (285) 
-Element #: 215, Current Node #: 341, Diagonal Node #: 286, (286) 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.0of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1152 +1,1153 @@
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Element #: 0, Current Node #: 0, Diagonal Node #: 33, (57) 
 Element #: 0, Current Node #: 1, Diagonal Node #: 32, (56) 
+Element #: 0, Current Node #: 4, Diagonal Node #: 29, (50) 
 Element #: 0, Current Node #: 5, Diagonal Node #: 28, (49) 
-Element #: 0, Current Node #: 4, Diagonal Node #: 29, (50) 
 Element #: 0, Current Node #: 28, Diagonal Node #: 5, (8) 
 Element #: 0, Current Node #: 29, Diagonal Node #: 4, (7) 
+Element #: 0, Current Node #: 32, Diagonal Node #: 1, (1) 
 Element #: 0, Current Node #: 33, Diagonal Node #: 0, (0) 
-Element #: 0, Current Node #: 32, Diagonal Node #: 1, (1) 
 Element #: 1, Current Node #: 1, Diagonal Node #: 34, (58) 
 Element #: 1, Current Node #: 2, Diagonal Node #: 33, (57) 
+Element #: 1, Current Node #: 5, Diagonal Node #: 30, (51) 
 Element #: 1, Current Node #: 6, Diagonal Node #: 29, (50) 
-Element #: 1, Current Node #: 5, Diagonal Node #: 30, (51) 
 Element #: 1, Current Node #: 29, Diagonal Node #: 6, (9) 
 Element #: 1, Current Node #: 30, Diagonal Node #: 5, (8) 
+Element #: 1, Current Node #: 33, Diagonal Node #: 2, (2) 
 Element #: 1, Current Node #: 34, Diagonal Node #: 1, (1) 
-Element #: 1, Current Node #: 33, Diagonal Node #: 2, (2) 
 Element #: 2, Current Node #: 2, Diagonal Node #: 35, (59) 
 Element #: 2, Current Node #: 3, Diagonal Node #: 34, (58) 
+Element #: 2, Current Node #: 6, Diagonal Node #: 31, (52) 
 Element #: 2, Current Node #: 7, Diagonal Node #: 30, (51) 
-Element #: 2, Current Node #: 6, Diagonal Node #: 31, (52) 
 Element #: 2, Current Node #: 30, Diagonal Node #: 7, (10) 
 Element #: 2, Current Node #: 31, Diagonal Node #: 6, (9) 
+Element #: 2, Current Node #: 34, Diagonal Node #: 3, (3) 
 Element #: 2, Current Node #: 35, Diagonal Node #: 2, (2) 
-Element #: 2, Current Node #: 34, Diagonal Node #: 3, (3) 
 Element #: 3, Current Node #: 4, Diagonal Node #: 37, (64) 
 Element #: 3, Current Node #: 5, Diagonal Node #: 36, (63) 
+Element #: 3, Current Node #: 8, Diagonal Node #: 33, (57) 
 Element #: 3, Current Node #: 9, Diagonal Node #: 32, (56) 
-Element #: 3, Current Node #: 8, Diagonal Node #: 33, (57) 
 Element #: 3, Current Node #: 32, Diagonal Node #: 9, (15) 
 Element #: 3, Current Node #: 33, Diagonal Node #: 8, (14) 
+Element #: 3, Current Node #: 36, Diagonal Node #: 5, (8) 
 Element #: 3, Current Node #: 37, Diagonal Node #: 4, (7) 
-Element #: 3, Current Node #: 36, Diagonal Node #: 5, (8) 
 Element #: 4, Current Node #: 5, Diagonal Node #: 38, (65) 
 Element #: 4, Current Node #: 6, Diagonal Node #: 37, (64) 
+Element #: 4, Current Node #: 9, Diagonal Node #: 34, (58) 
 Element #: 4, Current Node #: 10, Diagonal Node #: 33, (57) 
-Element #: 4, Current Node #: 9, Diagonal Node #: 34, (58) 
 Element #: 4, Current Node #: 33, Diagonal Node #: 10, (16) 
 Element #: 4, Current Node #: 34, Diagonal Node #: 9, (15) 
+Element #: 4, Current Node #: 37, Diagonal Node #: 6, (9) 
 Element #: 4, Current Node #: 38, Diagonal Node #: 5, (8) 
-Element #: 4, Current Node #: 37, Diagonal Node #: 6, (9) 
 Element #: 5, Current Node #: 6, Diagonal Node #: 39, (66) 
 Element #: 5, Current Node #: 7, Diagonal Node #: 38, (65) 
+Element #: 5, Current Node #: 10, Diagonal Node #: 35, (59) 
 Element #: 5, Current Node #: 11, Diagonal Node #: 34, (58) 
-Element #: 5, Current Node #: 10, Diagonal Node #: 35, (59) 
 Element #: 5, Current Node #: 34, Diagonal Node #: 11, (17) 
 Element #: 5, Current Node #: 35, Diagonal Node #: 10, (16) 
+Element #: 5, Current Node #: 38, Diagonal Node #: 7, (10) 
 Element #: 5, Current Node #: 39, Diagonal Node #: 6, (9) 
-Element #: 5, Current Node #: 38, Diagonal Node #: 7, (10) 
 Element #: 6, Current Node #: 8, Diagonal Node #: 41, (71) 
 Element #: 6, Current Node #: 9, Diagonal Node #: 40, (70) 
+Element #: 6, Current Node #: 12, Diagonal Node #: 37, (64) 
 Element #: 6, Current Node #: 13, Diagonal Node #: 36, (63) 
-Element #: 6, Current Node #: 12, Diagonal Node #: 37, (64) 
 Element #: 6, Current Node #: 36, Diagonal Node #: 13, (22) 
 Element #: 6, Current Node #: 37, Diagonal Node #: 12, (21) 
+Element #: 6, Current Node #: 40, Diagonal Node #: 9, (15) 
 Element #: 6, Current Node #: 41, Diagonal Node #: 8, (14) 
-Element #: 6, Current Node #: 40, Diagonal Node #: 9, (15) 
 Element #: 7, Current Node #: 9, Diagonal Node #: 42, (72) 
 Element #: 7, Current Node #: 10, Diagonal Node #: 41, (71) 
+Element #: 7, Current Node #: 13, Diagonal Node #: 38, (65) 
 Element #: 7, Current Node #: 14, Diagonal Node #: 37, (64) 
-Element #: 7, Current Node #: 13, Diagonal Node #: 38, (65) 
 Element #: 7, Current Node #: 37, Diagonal Node #: 14, (23) 
 Element #: 7, Current Node #: 38, Diagonal Node #: 13, (22) 
+Element #: 7, Current Node #: 41, Diagonal Node #: 10, (16) 
 Element #: 7, Current Node #: 42, Diagonal Node #: 9, (15) 
-Element #: 7, Current Node #: 41, Diagonal Node #: 10, (16) 
 Element #: 8, Current Node #: 10, Diagonal Node #: 43, (73) 
 Element #: 8, Current Node #: 11, Diagonal Node #: 42, (72) 
+Element #: 8, Current Node #: 14, Diagonal Node #: 39, (66) 
 Element #: 8, Current Node #: 15, Diagonal Node #: 38, (65) 
-Element #: 8, Current Node #: 14, Diagonal Node #: 39, (66) 
 Element #: 8, Current Node #: 38, Diagonal Node #: 15, (24) 
 Element #: 8, Current Node #: 39, Diagonal Node #: 14, (23) 
+Element #: 8, Current Node #: 42, Diagonal Node #: 11, (17) 
 Element #: 8, Current Node #: 43, Diagonal Node #: 10, (16) 
-Element #: 8, Current Node #: 42, Diagonal Node #: 11, (17) 
 Element #: 9, Current Node #: 12, Diagonal Node #: 45, (78) 
 Element #: 9, Current Node #: 13, Diagonal Node #: 44, (77) 
+Element #: 9, Current Node #: 16, Diagonal Node #: 41, (71) 
 Element #: 9, Current Node #: 17, Diagonal Node #: 40, (70) 
-Element #: 9, Current Node #: 16, Diagonal Node #: 41, (71) 
 Element #: 9, Current Node #: 40, Diagonal Node #: 17, (29) 
 Element #: 9, Current Node #: 41, Diagonal Node #: 16, (28) 
+Element #: 9, Current Node #: 44, Diagonal Node #: 13, (22) 
 Element #: 9, Current Node #: 45, Diagonal Node #: 12, (21) 
-Element #: 9, Current Node #: 44, Diagonal Node #: 13, (22) 
 Element #: 10, Current Node #: 13, Diagonal Node #: 46, (79) 
 Element #: 10, Current Node #: 14, Diagonal Node #: 45, (78) 
+Element #: 10, Current Node #: 17, Diagonal Node #: 42, (72) 
 Element #: 10, Current Node #: 18, Diagonal Node #: 41, (71) 
-Element #: 10, Current Node #: 17, Diagonal Node #: 42, (72) 
 Element #: 10, Current Node #: 41, Diagonal Node #: 18, (30) 
 Element #: 10, Current Node #: 42, Diagonal Node #: 17, (29) 
+Element #: 10, Current Node #: 45, Diagonal Node #: 14, (23) 
 Element #: 10, Current Node #: 46, Diagonal Node #: 13, (22) 
-Element #: 10, Current Node #: 45, Diagonal Node #: 14, (23) 
 Element #: 11, Current Node #: 14, Diagonal Node #: 47, (80) 
 Element #: 11, Current Node #: 15, Diagonal Node #: 46, (79) 
+Element #: 11, Current Node #: 18, Diagonal Node #: 43, (73) 
 Element #: 11, Current Node #: 19, Diagonal Node #: 42, (72) 
-Element #: 11, Current Node #: 18, Diagonal Node #: 43, (73) 
 Element #: 11, Current Node #: 42, Diagonal Node #: 19, (31) 
 Element #: 11, Current Node #: 43, Diagonal Node #: 18, (30) 
+Element #: 11, Current Node #: 46, Diagonal Node #: 15, (24) 
 Element #: 11, Current Node #: 47, Diagonal Node #: 14, (23) 
-Element #: 11, Current Node #: 46, Diagonal Node #: 15, (24) 
 Element #: 12, Current Node #: 16, Diagonal Node #: 49, (85) 
 Element #: 12, Current Node #: 17, Diagonal Node #: 48, (84) 
+Element #: 12, Current Node #: 20, Diagonal Node #: 45, (78) 
 Element #: 12, Current Node #: 21, Diagonal Node #: 44, (77) 
-Element #: 12, Current Node #: 20, Diagonal Node #: 45, (78) 
 Element #: 12, Current Node #: 44, Diagonal Node #: 21, (36) 
 Element #: 12, Current Node #: 45, Diagonal Node #: 20, (35) 
+Element #: 12, Current Node #: 48, Diagonal Node #: 17, (29) 
 Element #: 12, Current Node #: 49, Diagonal Node #: 16, (28) 
-Element #: 12, Current Node #: 48, Diagonal Node #: 17, (29) 
 Element #: 13, Current Node #: 17, Diagonal Node #: 50, (86) 
 Element #: 13, Current Node #: 18, Diagonal Node #: 49, (85) 
+Element #: 13, Current Node #: 21, Diagonal Node #: 46, (79) 
 Element #: 13, Current Node #: 22, Diagonal Node #: 45, (78) 
-Element #: 13, Current Node #: 21, Diagonal Node #: 46, (79) 
 Element #: 13, Current Node #: 45, Diagonal Node #: 22, (37) 
 Element #: 13, Current Node #: 46, Diagonal Node #: 21, (36) 
+Element #: 13, Current Node #: 49, Diagonal Node #: 18, (30) 
 Element #: 13, Current Node #: 50, Diagonal Node #: 17, (29) 
-Element #: 13, Current Node #: 49, Diagonal Node #: 18, (30) 
 Element #: 14, Current Node #: 18, Diagonal Node #: 51, (87) 
 Element #: 14, Current Node #: 19, Diagonal Node #: 50, (86) 
+Element #: 14, Current Node #: 22, Diagonal Node #: 47, (80) 
 Element #: 14, Current Node #: 23, Diagonal Node #: 46, (79) 
-Element #: 14, Current Node #: 22, Diagonal Node #: 47, (80) 
 Element #: 14, Current Node #: 46, Diagonal Node #: 23, (38) 
 Element #: 14, Current Node #: 47, Diagonal Node #: 22, (37) 
+Element #: 14, Current Node #: 50, Diagonal Node #: 19, (31) 
 Element #: 14, Current Node #: 51, Diagonal Node #: 18, (30) 
-Element #: 14, Current Node #: 50, Diagonal Node #: 19, (31) 
 Element #: 15, Current Node #: 20, Diagonal Node #: 53, (92) 
 Element #: 15, Current Node #: 21, Diagonal Node #: 52, (91) 
+Element #: 15, Current Node #: 24, Diagonal Node #: 49, (85) 
 Element #: 15, Current Node #: 25, Diagonal Node #: 48, (84) 
-Element #: 15, Current Node #: 24, Diagonal Node #: 49, (85) 
 Element #: 15, Current Node #: 48, Diagonal Node #: 25, (43) 
 Element #: 15, Current Node #: 49, Diagonal Node #: 24, (42) 
+Element #: 15, Current Node #: 52, Diagonal Node #: 21, (36) 
 Element #: 15, Current Node #: 53, Diagonal Node #: 20, (35) 
-Element #: 15, Current Node #: 52, Diagonal Node #: 21, (36) 
 Element #: 16, Current Node #: 21, Diagonal Node #: 54, (93) 
 Element #: 16, Current Node #: 22, Diagonal Node #: 53, (92) 
+Element #: 16, Current Node #: 25, Diagonal Node #: 50, (86) 
 Element #: 16, Current Node #: 26, Diagonal Node #: 49, (85) 
-Element #: 16, Current Node #: 25, Diagonal Node #: 50, (86) 
 Element #: 16, Current Node #: 49, Diagonal Node #: 26, (44) 
 Element #: 16, Current Node #: 50, Diagonal Node #: 25, (43) 
+Element #: 16, Current Node #: 53, Diagonal Node #: 22, (37) 
 Element #: 16, Current Node #: 54, Diagonal Node #: 21, (36) 
-Element #: 16, Current Node #: 53, Diagonal Node #: 22, (37) 
 Element #: 17, Current Node #: 22, Diagonal Node #: 55, (94) 
 Element #: 17, Current Node #: 23, Diagonal Node #: 54, (93) 
+Element #: 17, Current Node #: 26, Diagonal Node #: 51, (87) 
 Element #: 17, Current Node #: 27, Diagonal Node #: 50, (86) 
-Element #: 17, Current Node #: 26, Diagonal Node #: 51, (87) 
 Element #: 17, Current Node #: 50, Diagonal Node #: 27, (45) 
 Element #: 17, Current Node #: 51, Diagonal Node #: 26, (44) 
+Element #: 17, Current Node #: 54, Diagonal Node #: 23, (38) 
 Element #: 17, Current Node #: 55, Diagonal Node #: 22, (37) 
-Element #: 17, Current Node #: 54, Diagonal Node #: 23, (38) 
 Element #: 18, Current Node #: 28, Diagonal Node #: 61, (106) 
 Element #: 18, Current Node #: 29, Diagonal Node #: 60, (105) 
+Element #: 18, Current Node #: 32, Diagonal Node #: 57, (99) 
 Element #: 18, Current Node #: 33, Diagonal Node #: 56, (98) 
-Element #: 18, Current Node #: 32, Diagonal Node #: 57, (99) 
 Element #: 18, Current Node #: 56, Diagonal Node #: 33, (57) 
 Element #: 18, Current Node #: 57, Diagonal Node #: 32, (56) 
+Element #: 18, Current Node #: 60, Diagonal Node #: 29, (50) 
 Element #: 18, Current Node #: 61, Diagonal Node #: 28, (49) 
-Element #: 18, Current Node #: 60, Diagonal Node #: 29, (50) 
 Element #: 19, Current Node #: 29, Diagonal Node #: 62, (107) 
 Element #: 19, Current Node #: 30, Diagonal Node #: 61, (106) 
+Element #: 19, Current Node #: 33, Diagonal Node #: 58, (100) 
 Element #: 19, Current Node #: 34, Diagonal Node #: 57, (99) 
-Element #: 19, Current Node #: 33, Diagonal Node #: 58, (100) 
 Element #: 19, Current Node #: 57, Diagonal Node #: 34, (58) 
 Element #: 19, Current Node #: 58, Diagonal Node #: 33, (57) 
+Element #: 19, Current Node #: 61, Diagonal Node #: 30, (51) 
 Element #: 19, Current Node #: 62, Diagonal Node #: 29, (50) 
-Element #: 19, Current Node #: 61, Diagonal Node #: 30, (51) 
 Element #: 20, Current Node #: 30, Diagonal Node #: 63, (108) 
 Element #: 20, Current Node #: 31, Diagonal Node #: 62, (107) 
+Element #: 20, Current Node #: 34, Diagonal Node #: 59, (101) 
 Element #: 20, Current Node #: 35, Diagonal Node #: 58, (100) 
-Element #: 20, Current Node #: 34, Diagonal Node #: 59, (101) 
 Element #: 20, Current Node #: 58, Diagonal Node #: 35, (59) 
 Element #: 20, Current Node #: 59, Diagonal Node #: 34, (58) 
+Element #: 20, Current Node #: 62, Diagonal Node #: 31, (52) 
 Element #: 20, Current Node #: 63, Diagonal Node #: 30, (51) 
-Element #: 20, Current Node #: 62, Diagonal Node #: 31, (52) 
 Element #: 21, Current Node #: 32, Diagonal Node #: 65, (113) 
 Element #: 21, Current Node #: 33, Diagonal Node #: 64, (112) 
+Element #: 21, Current Node #: 36, Diagonal Node #: 61, (106) 
 Element #: 21, Current Node #: 37, Diagonal Node #: 60, (105) 
-Element #: 21, Current Node #: 36, Diagonal Node #: 61, (106) 
 Element #: 21, Current Node #: 60, Diagonal Node #: 37, (64) 
 Element #: 21, Current Node #: 61, Diagonal Node #: 36, (63) 
+Element #: 21, Current Node #: 64, Diagonal Node #: 33, (57) 
 Element #: 21, Current Node #: 65, Diagonal Node #: 32, (56) 
-Element #: 21, Current Node #: 64, Diagonal Node #: 33, (57) 
 Element #: 22, Current Node #: 33, Diagonal Node #: 66, (114) 
 Element #: 22, Current Node #: 34, Diagonal Node #: 65, (113) 
+Element #: 22, Current Node #: 37, Diagonal Node #: 62, (107) 
 Element #: 22, Current Node #: 38, Diagonal Node #: 61, (106) 
-Element #: 22, Current Node #: 37, Diagonal Node #: 62, (107) 
 Element #: 22, Current Node #: 61, Diagonal Node #: 38, (65) 
 Element #: 22, Current Node #: 62, Diagonal Node #: 37, (64) 
+Element #: 22, Current Node #: 65, Diagonal Node #: 34, (58) 
 Element #: 22, Current Node #: 66, Diagonal Node #: 33, (57) 
-Element #: 22, Current Node #: 65, Diagonal Node #: 34, (58) 
 Element #: 23, Current Node #: 34, Diagonal Node #: 67, (115) 
 Element #: 23, Current Node #: 35, Diagonal Node #: 66, (114) 
+Element #: 23, Current Node #: 38, Diagonal Node #: 63, (108) 
 Element #: 23, Current Node #: 39, Diagonal Node #: 62, (107) 
-Element #: 23, Current Node #: 38, Diagonal Node #: 63, (108) 
 Element #: 23, Current Node #: 62, Diagonal Node #: 39, (66) 
 Element #: 23, Current Node #: 63, Diagonal Node #: 38, (65) 
+Element #: 23, Current Node #: 66, Diagonal Node #: 35, (59) 
 Element #: 23, Current Node #: 67, Diagonal Node #: 34, (58) 
-Element #: 23, Current Node #: 66, Diagonal Node #: 35, (59) 
 Element #: 24, Current Node #: 36, Diagonal Node #: 69, (120) 
 Element #: 24, Current Node #: 37, Diagonal Node #: 68, (119) 
+Element #: 24, Current Node #: 40, Diagonal Node #: 65, (113) 
 Element #: 24, Current Node #: 41, Diagonal Node #: 64, (112) 
-Element #: 24, Current Node #: 40, Diagonal Node #: 65, (113) 
 Element #: 24, Current Node #: 64, Diagonal Node #: 41, (71) 
 Element #: 24, Current Node #: 65, Diagonal Node #: 40, (70) 
+Element #: 24, Current Node #: 68, Diagonal Node #: 37, (64) 
 Element #: 24, Current Node #: 69, Diagonal Node #: 36, (63) 
-Element #: 24, Current Node #: 68, Diagonal Node #: 37, (64) 
 Element #: 25, Current Node #: 37, Diagonal Node #: 70, (121) 
 Element #: 25, Current Node #: 38, Diagonal Node #: 69, (120) 
+Element #: 25, Current Node #: 41, Diagonal Node #: 66, (114) 
 Element #: 25, Current Node #: 42, Diagonal Node #: 65, (113) 
-Element #: 25, Current Node #: 41, Diagonal Node #: 66, (114) 
 Element #: 25, Current Node #: 65, Diagonal Node #: 42, (72) 
 Element #: 25, Current Node #: 66, Diagonal Node #: 41, (71) 
+Element #: 25, Current Node #: 69, Diagonal Node #: 38, (65) 
 Element #: 25, Current Node #: 70, Diagonal Node #: 37, (64) 
-Element #: 25, Current Node #: 69, Diagonal Node #: 38, (65) 
 Element #: 26, Current Node #: 38, Diagonal Node #: 71, (122) 
 Element #: 26, Current Node #: 39, Diagonal Node #: 70, (121) 
+Element #: 26, Current Node #: 42, Diagonal Node #: 67, (115) 
 Element #: 26, Current Node #: 43, Diagonal Node #: 66, (114) 
-Element #: 26, Current Node #: 42, Diagonal Node #: 67, (115) 
 Element #: 26, Current Node #: 66, Diagonal Node #: 43, (73) 
 Element #: 26, Current Node #: 67, Diagonal Node #: 42, (72) 
+Element #: 26, Current Node #: 70, Diagonal Node #: 39, (66) 
 Element #: 26, Current Node #: 71, Diagonal Node #: 38, (65) 
-Element #: 26, Current Node #: 70, Diagonal Node #: 39, (66) 
 Element #: 27, Current Node #: 40, Diagonal Node #: 73, (127) 
 Element #: 27, Current Node #: 41, Diagonal Node #: 72, (126) 
+Element #: 27, Current Node #: 44, Diagonal Node #: 69, (120) 
 Element #: 27, Current Node #: 45, Diagonal Node #: 68, (119) 
-Element #: 27, Current Node #: 44, Diagonal Node #: 69, (120) 
 Element #: 27, Current Node #: 68, Diagonal Node #: 45, (78) 
 Element #: 27, Current Node #: 69, Diagonal Node #: 44, (77) 
+Element #: 27, Current Node #: 72, Diagonal Node #: 41, (71) 
 Element #: 27, Current Node #: 73, Diagonal Node #: 40, (70) 
-Element #: 27, Current Node #: 72, Diagonal Node #: 41, (71) 
 Element #: 28, Current Node #: 41, Diagonal Node #: 74, (128) 
 Element #: 28, Current Node #: 42, Diagonal Node #: 73, (127) 
+Element #: 28, Current Node #: 45, Diagonal Node #: 70, (121) 
 Element #: 28, Current Node #: 46, Diagonal Node #: 69, (120) 
-Element #: 28, Current Node #: 45, Diagonal Node #: 70, (121) 
 Element #: 28, Current Node #: 69, Diagonal Node #: 46, (79) 
 Element #: 28, Current Node #: 70, Diagonal Node #: 45, (78) 
+Element #: 28, Current Node #: 73, Diagonal Node #: 42, (72) 
 Element #: 28, Current Node #: 74, Diagonal Node #: 41, (71) 
-Element #: 28, Current Node #: 73, Diagonal Node #: 42, (72) 
 Element #: 29, Current Node #: 42, Diagonal Node #: 75, (129) 
 Element #: 29, Current Node #: 43, Diagonal Node #: 74, (128) 
+Element #: 29, Current Node #: 46, Diagonal Node #: 71, (122) 
 Element #: 29, Current Node #: 47, Diagonal Node #: 70, (121) 
-Element #: 29, Current Node #: 46, Diagonal Node #: 71, (122) 
 Element #: 29, Current Node #: 70, Diagonal Node #: 47, (80) 
 Element #: 29, Current Node #: 71, Diagonal Node #: 46, (79) 
+Element #: 29, Current Node #: 74, Diagonal Node #: 43, (73) 
 Element #: 29, Current Node #: 75, Diagonal Node #: 42, (72) 
-Element #: 29, Current Node #: 74, Diagonal Node #: 43, (73) 
 Element #: 30, Current Node #: 44, Diagonal Node #: 77, (134) 
 Element #: 30, Current Node #: 45, Diagonal Node #: 76, (133) 
+Element #: 30, Current Node #: 48, Diagonal Node #: 73, (127) 
 Element #: 30, Current Node #: 49, Diagonal Node #: 72, (126) 
-Element #: 30, Current Node #: 48, Diagonal Node #: 73, (127) 
 Element #: 30, Current Node #: 72, Diagonal Node #: 49, (85) 
 Element #: 30, Current Node #: 73, Diagonal Node #: 48, (84) 
+Element #: 30, Current Node #: 76, Diagonal Node #: 45, (78) 
 Element #: 30, Current Node #: 77, Diagonal Node #: 44, (77) 
-Element #: 30, Current Node #: 76, Diagonal Node #: 45, (78) 
 Element #: 31, Current Node #: 45, Diagonal Node #: 78, (135) 
 Element #: 31, Current Node #: 46, Diagonal Node #: 77, (134) 
+Element #: 31, Current Node #: 49, Diagonal Node #: 74, (128) 
 Element #: 31, Current Node #: 50, Diagonal Node #: 73, (127) 
-Element #: 31, Current Node #: 49, Diagonal Node #: 74, (128) 
 Element #: 31, Current Node #: 73, Diagonal Node #: 50, (86) 
 Element #: 31, Current Node #: 74, Diagonal Node #: 49, (85) 
+Element #: 31, Current Node #: 77, Diagonal Node #: 46, (79) 
 Element #: 31, Current Node #: 78, Diagonal Node #: 45, (78) 
-Element #: 31, Current Node #: 77, Diagonal Node #: 46, (79) 
 Element #: 32, Current Node #: 46, Diagonal Node #: 79, (136) 
 Element #: 32, Current Node #: 47, Diagonal Node #: 78, (135) 
+Element #: 32, Current Node #: 50, Diagonal Node #: 75, (129) 
 Element #: 32, Current Node #: 51, Diagonal Node #: 74, (128) 
-Element #: 32, Current Node #: 50, Diagonal Node #: 75, (129) 
 Element #: 32, Current Node #: 74, Diagonal Node #: 51, (87) 
 Element #: 32, Current Node #: 75, Diagonal Node #: 50, (86) 
+Element #: 32, Current Node #: 78, Diagonal Node #: 47, (80) 
 Element #: 32, Current Node #: 79, Diagonal Node #: 46, (79) 
-Element #: 32, Current Node #: 78, Diagonal Node #: 47, (80) 
 Element #: 33, Current Node #: 48, Diagonal Node #: 81, (141) 
 Element #: 33, Current Node #: 49, Diagonal Node #: 80, (140) 
+Element #: 33, Current Node #: 52, Diagonal Node #: 77, (134) 
 Element #: 33, Current Node #: 53, Diagonal Node #: 76, (133) 
-Element #: 33, Current Node #: 52, Diagonal Node #: 77, (134) 
 Element #: 33, Current Node #: 76, Diagonal Node #: 53, (92) 
 Element #: 33, Current Node #: 77, Diagonal Node #: 52, (91) 
+Element #: 33, Current Node #: 80, Diagonal Node #: 49, (85) 
 Element #: 33, Current Node #: 81, Diagonal Node #: 48, (84) 
-Element #: 33, Current Node #: 80, Diagonal Node #: 49, (85) 
 Element #: 34, Current Node #: 49, Diagonal Node #: 82, (142) 
 Element #: 34, Current Node #: 50, Diagonal Node #: 81, (141) 
+Element #: 34, Current Node #: 53, Diagonal Node #: 78, (135) 
 Element #: 34, Current Node #: 54, Diagonal Node #: 77, (134) 
-Element #: 34, Current Node #: 53, Diagonal Node #: 78, (135) 
 Element #: 34, Current Node #: 77, Diagonal Node #: 54, (93) 
 Element #: 34, Current Node #: 78, Diagonal Node #: 53, (92) 
+Element #: 34, Current Node #: 81, Diagonal Node #: 50, (86) 
 Element #: 34, Current Node #: 82, Diagonal Node #: 49, (85) 
-Element #: 34, Current Node #: 81, Diagonal Node #: 50, (86) 
 Element #: 35, Current Node #: 50, Diagonal Node #: 83, (143) 
 Element #: 35, Current Node #: 51, Diagonal Node #: 82, (142) 
+Element #: 35, Current Node #: 54, Diagonal Node #: 79, (136) 
 Element #: 35, Current Node #: 55, Diagonal Node #: 78, (135) 
-Element #: 35, Current Node #: 54, Diagonal Node #: 79, (136) 
 Element #: 35, Current Node #: 78, Diagonal Node #: 55, (94) 
 Element #: 35, Current Node #: 79, Diagonal Node #: 54, (93) 
+Element #: 35, Current Node #: 82, Diagonal Node #: 51, (87) 
 Element #: 35, Current Node #: 83, Diagonal Node #: 50, (86) 
-Element #: 35, Current Node #: 82, Diagonal Node #: 51, (87) 
 Element #: 36, Current Node #: 56, Diagonal Node #: 89, (155) 
 Element #: 36, Current Node #: 57, Diagonal Node #: 88, (154) 
+Element #: 36, Current Node #: 60, Diagonal Node #: 85, (148) 
 Element #: 36, Current Node #: 61, Diagonal Node #: 84, (147) 
-Element #: 36, Current Node #: 60, Diagonal Node #: 85, (148) 
 Element #: 36, Current Node #: 84, Diagonal Node #: 61, (106) 
 Element #: 36, Current Node #: 85, Diagonal Node #: 60, (105) 
+Element #: 36, Current Node #: 88, Diagonal Node #: 57, (99) 
 Element #: 36, Current Node #: 89, Diagonal Node #: 56, (98) 
-Element #: 36, Current Node #: 88, Diagonal Node #: 57, (99) 
 Element #: 37, Current Node #: 57, Diagonal Node #: 90, (156) 
 Element #: 37, Current Node #: 58, Diagonal Node #: 89, (155) 
+Element #: 37, Current Node #: 61, Diagonal Node #: 86, (149) 
 Element #: 37, Current Node #: 62, Diagonal Node #: 85, (148) 
-Element #: 37, Current Node #: 61, Diagonal Node #: 86, (149) 
 Element #: 37, Current Node #: 85, Diagonal Node #: 62, (107) 
 Element #: 37, Current Node #: 86, Diagonal Node #: 61, (106) 
+Element #: 37, Current Node #: 89, Diagonal Node #: 58, (100) 
 Element #: 37, Current Node #: 90, Diagonal Node #: 57, (99) 
-Element #: 37, Current Node #: 89, Diagonal Node #: 58, (100) 
 Element #: 38, Current Node #: 58, Diagonal Node #: 91, (157) 
 Element #: 38, Current Node #: 59, Diagonal Node #: 90, (156) 
+Element #: 38, Current Node #: 62, Diagonal Node #: 87, (150) 
 Element #: 38, Current Node #: 63, Diagonal Node #: 86, (149) 
-Element #: 38, Current Node #: 62, Diagonal Node #: 87, (150) 
 Element #: 38, Current Node #: 86, Diagonal Node #: 63, (108) 
 Element #: 38, Current Node #: 87, Diagonal Node #: 62, (107) 
+Element #: 38, Current Node #: 90, Diagonal Node #: 59, (101) 
 Element #: 38, Current Node #: 91, Diagonal Node #: 58, (100) 
-Element #: 38, Current Node #: 90, Diagonal Node #: 59, (101) 
 Element #: 39, Current Node #: 60, Diagonal Node #: 93, (162) 
 Element #: 39, Current Node #: 61, Diagonal Node #: 92, (161) 
+Element #: 39, Current Node #: 64, Diagonal Node #: 89, (155) 
 Element #: 39, Current Node #: 65, Diagonal Node #: 88, (154) 
-Element #: 39, Current Node #: 64, Diagonal Node #: 89, (155) 
 Element #: 39, Current Node #: 88, Diagonal Node #: 65, (113) 
 Element #: 39, Current Node #: 89, Diagonal Node #: 64, (112) 
+Element #: 39, Current Node #: 92, Diagonal Node #: 61, (106) 
 Element #: 39, Current Node #: 93, Diagonal Node #: 60, (105) 
-Element #: 39, Current Node #: 92, Diagonal Node #: 61, (106) 
 Element #: 40, Current Node #: 61, Diagonal Node #: 94, (163) 
 Element #: 40, Current Node #: 62, Diagonal Node #: 93, (162) 
+Element #: 40, Current Node #: 65, Diagonal Node #: 90, (156) 
 Element #: 40, Current Node #: 66, Diagonal Node #: 89, (155) 
-Element #: 40, Current Node #: 65, Diagonal Node #: 90, (156) 
 Element #: 40, Current Node #: 89, Diagonal Node #: 66, (114) 
 Element #: 40, Current Node #: 90, Diagonal Node #: 65, (113) 
+Element #: 40, Current Node #: 93, Diagonal Node #: 62, (107) 
 Element #: 40, Current Node #: 94, Diagonal Node #: 61, (106) 
-Element #: 40, Current Node #: 93, Diagonal Node #: 62, (107) 
 Element #: 41, Current Node #: 62, Diagonal Node #: 95, (164) 
 Element #: 41, Current Node #: 63, Diagonal Node #: 94, (163) 
+Element #: 41, Current Node #: 66, Diagonal Node #: 91, (157) 
 Element #: 41, Current Node #: 67, Diagonal Node #: 90, (156) 
-Element #: 41, Current Node #: 66, Diagonal Node #: 91, (157) 
 Element #: 41, Current Node #: 90, Diagonal Node #: 67, (115) 
 Element #: 41, Current Node #: 91, Diagonal Node #: 66, (114) 
+Element #: 41, Current Node #: 94, Diagonal Node #: 63, (108) 
 Element #: 41, Current Node #: 95, Diagonal Node #: 62, (107) 
-Element #: 41, Current Node #: 94, Diagonal Node #: 63, (108) 
 Element #: 42, Current Node #: 64, Diagonal Node #: 97, (169) 
 Element #: 42, Current Node #: 65, Diagonal Node #: 96, (168) 
+Element #: 42, Current Node #: 68, Diagonal Node #: 93, (162) 
 Element #: 42, Current Node #: 69, Diagonal Node #: 92, (161) 
-Element #: 42, Current Node #: 68, Diagonal Node #: 93, (162) 
 Element #: 42, Current Node #: 92, Diagonal Node #: 69, (120) 
 Element #: 42, Current Node #: 93, Diagonal Node #: 68, (119) 
+Element #: 42, Current Node #: 96, Diagonal Node #: 65, (113) 
 Element #: 42, Current Node #: 97, Diagonal Node #: 64, (112) 
-Element #: 42, Current Node #: 96, Diagonal Node #: 65, (113) 
 Element #: 43, Current Node #: 65, Diagonal Node #: 98, (170) 
 Element #: 43, Current Node #: 66, Diagonal Node #: 97, (169) 
+Element #: 43, Current Node #: 69, Diagonal Node #: 94, (163) 
 Element #: 43, Current Node #: 70, Diagonal Node #: 93, (162) 
-Element #: 43, Current Node #: 69, Diagonal Node #: 94, (163) 
 Element #: 43, Current Node #: 93, Diagonal Node #: 70, (121) 
 Element #: 43, Current Node #: 94, Diagonal Node #: 69, (120) 
+Element #: 43, Current Node #: 97, Diagonal Node #: 66, (114) 
 Element #: 43, Current Node #: 98, Diagonal Node #: 65, (113) 
-Element #: 43, Current Node #: 97, Diagonal Node #: 66, (114) 
 Element #: 44, Current Node #: 66, Diagonal Node #: 99, (171) 
 Element #: 44, Current Node #: 67, Diagonal Node #: 98, (170) 
+Element #: 44, Current Node #: 70, Diagonal Node #: 95, (164) 
 Element #: 44, Current Node #: 71, Diagonal Node #: 94, (163) 
-Element #: 44, Current Node #: 70, Diagonal Node #: 95, (164) 
 Element #: 44, Current Node #: 94, Diagonal Node #: 71, (122) 
 Element #: 44, Current Node #: 95, Diagonal Node #: 70, (121) 
+Element #: 44, Current Node #: 98, Diagonal Node #: 67, (115) 
 Element #: 44, Current Node #: 99, Diagonal Node #: 66, (114) 
-Element #: 44, Current Node #: 98, Diagonal Node #: 67, (115) 
 Element #: 45, Current Node #: 68, Diagonal Node #: 101, (176) 
 Element #: 45, Current Node #: 69, Diagonal Node #: 100, (175) 
+Element #: 45, Current Node #: 72, Diagonal Node #: 97, (169) 
 Element #: 45, Current Node #: 73, Diagonal Node #: 96, (168) 
-Element #: 45, Current Node #: 72, Diagonal Node #: 97, (169) 
 Element #: 45, Current Node #: 96, Diagonal Node #: 73, (127) 
 Element #: 45, Current Node #: 97, Diagonal Node #: 72, (126) 
+Element #: 45, Current Node #: 100, Diagonal Node #: 69, (120) 
 Element #: 45, Current Node #: 101, Diagonal Node #: 68, (119) 
-Element #: 45, Current Node #: 100, Diagonal Node #: 69, (120) 
 Element #: 46, Current Node #: 69, Diagonal Node #: 102, (177) 
 Element #: 46, Current Node #: 70, Diagonal Node #: 101, (176) 
+Element #: 46, Current Node #: 73, Diagonal Node #: 98, (170) 
 Element #: 46, Current Node #: 74, Diagonal Node #: 97, (169) 
-Element #: 46, Current Node #: 73, Diagonal Node #: 98, (170) 
 Element #: 46, Current Node #: 97, Diagonal Node #: 74, (128) 
 Element #: 46, Current Node #: 98, Diagonal Node #: 73, (127) 
+Element #: 46, Current Node #: 101, Diagonal Node #: 70, (121) 
 Element #: 46, Current Node #: 102, Diagonal Node #: 69, (120) 
-Element #: 46, Current Node #: 101, Diagonal Node #: 70, (121) 
 Element #: 47, Current Node #: 70, Diagonal Node #: 103, (178) 
 Element #: 47, Current Node #: 71, Diagonal Node #: 102, (177) 
+Element #: 47, Current Node #: 74, Diagonal Node #: 99, (171) 
 Element #: 47, Current Node #: 75, Diagonal Node #: 98, (170) 
-Element #: 47, Current Node #: 74, Diagonal Node #: 99, (171) 
 Element #: 47, Current Node #: 98, Diagonal Node #: 75, (129) 
 Element #: 47, Current Node #: 99, Diagonal Node #: 74, (128) 
+Element #: 47, Current Node #: 102, Diagonal Node #: 71, (122) 
 Element #: 47, Current Node #: 103, Diagonal Node #: 70, (121) 
-Element #: 47, Current Node #: 102, Diagonal Node #: 71, (122) 
 Element #: 48, Current Node #: 72, Diagonal Node #: 105, (183) 
 Element #: 48, Current Node #: 73, Diagonal Node #: 104, (182) 
+Element #: 48, Current Node #: 76, Diagonal Node #: 101, (176) 
 Element #: 48, Current Node #: 77, Diagonal Node #: 100, (175) 
-Element #: 48, Current Node #: 76, Diagonal Node #: 101, (176) 
 Element #: 48, Current Node #: 100, Diagonal Node #: 77, (134) 
 Element #: 48, Current Node #: 101, Diagonal Node #: 76, (133) 
+Element #: 48, Current Node #: 104, Diagonal Node #: 73, (127) 
 Element #: 48, Current Node #: 105, Diagonal Node #: 72, (126) 
-Element #: 48, Current Node #: 104, Diagonal Node #: 73, (127) 
 Element #: 49, Current Node #: 73, Diagonal Node #: 106, (184) 
 Element #: 49, Current Node #: 74, Diagonal Node #: 105, (183) 
+Element #: 49, Current Node #: 77, Diagonal Node #: 102, (177) 
 Element #: 49, Current Node #: 78, Diagonal Node #: 101, (176) 
-Element #: 49, Current Node #: 77, Diagonal Node #: 102, (177) 
 Element #: 49, Current Node #: 101, Diagonal Node #: 78, (135) 
 Element #: 49, Current Node #: 102, Diagonal Node #: 77, (134) 
+Element #: 49, Current Node #: 105, Diagonal Node #: 74, (128) 
 Element #: 49, Current Node #: 106, Diagonal Node #: 73, (127) 
-Element #: 49, Current Node #: 105, Diagonal Node #: 74, (128) 
 Element #: 50, Current Node #: 74, Diagonal Node #: 107, (185) 
 Element #: 50, Current Node #: 75, Diagonal Node #: 106, (184) 
+Element #: 50, Current Node #: 78, Diagonal Node #: 103, (178) 
 Element #: 50, Current Node #: 79, Diagonal Node #: 102, (177) 
-Element #: 50, Current Node #: 78, Diagonal Node #: 103, (178) 
 Element #: 50, Current Node #: 102, Diagonal Node #: 79, (136) 
 Element #: 50, Current Node #: 103, Diagonal Node #: 78, (135) 
+Element #: 50, Current Node #: 106, Diagonal Node #: 75, (129) 
 Element #: 50, Current Node #: 107, Diagonal Node #: 74, (128) 
-Element #: 50, Current Node #: 106, Diagonal Node #: 75, (129) 
 Element #: 51, Current Node #: 76, Diagonal Node #: 109, (190) 
 Element #: 51, Current Node #: 77, Diagonal Node #: 108, (189) 
+Element #: 51, Current Node #: 80, Diagonal Node #: 105, (183) 
 Element #: 51, Current Node #: 81, Diagonal Node #: 104, (182) 
-Element #: 51, Current Node #: 80, Diagonal Node #: 105, (183) 
 Element #: 51, Current Node #: 104, Diagonal Node #: 81, (141) 
 Element #: 51, Current Node #: 105, Diagonal Node #: 80, (140) 
+Element #: 51, Current Node #: 108, Diagonal Node #: 77, (134) 
 Element #: 51, Current Node #: 109, Diagonal Node #: 76, (133) 
-Element #: 51, Current Node #: 108, Diagonal Node #: 77, (134) 
 Element #: 52, Current Node #: 77, Diagonal Node #: 110, (191) 
 Element #: 52, Current Node #: 78, Diagonal Node #: 109, (190) 
+Element #: 52, Current Node #: 81, Diagonal Node #: 106, (184) 
 Element #: 52, Current Node #: 82, Diagonal Node #: 105, (183) 
-Element #: 52, Current Node #: 81, Diagonal Node #: 106, (184) 
 Element #: 52, Current Node #: 105, Diagonal Node #: 82, (142) 
 Element #: 52, Current Node #: 106, Diagonal Node #: 81, (141) 
+Element #: 52, Current Node #: 109, Diagonal Node #: 78, (135) 
 Element #: 52, Current Node #: 110, Diagonal Node #: 77, (134) 
-Element #: 52, Current Node #: 109, Diagonal Node #: 78, (135) 
 Element #: 53, Current Node #: 78, Diagonal Node #: 111, (192) 
 Element #: 53, Current Node #: 79, Diagonal Node #: 110, (191) 
+Element #: 53, Current Node #: 82, Diagonal Node #: 107, (185) 
 Element #: 53, Current Node #: 83, Diagonal Node #: 106, (184) 
-Element #: 53, Current Node #: 82, Diagonal Node #: 107, (185) 
 Element #: 53, Current Node #: 106, Diagonal Node #: 83, (143) 
 Element #: 53, Current Node #: 107, Diagonal Node #: 82, (142) 
+Element #: 53, Current Node #: 110, Diagonal Node #: 79, (136) 
 Element #: 53, Current Node #: 111, Diagonal Node #: 78, (135) 
-Element #: 53, Current Node #: 110, Diagonal Node #: 79, (136) 
 Element #: 54, Current Node #: 84, Diagonal Node #: 117, (204) 
 Element #: 54, Current Node #: 85, Diagonal Node #: 116, (203) 
+Element #: 54, Current Node #: 88, Diagonal Node #: 113, (197) 
 Element #: 54, Current Node #: 89, Diagonal Node #: 112, (196) 
-Element #: 54, Current Node #: 88, Diagonal Node #: 113, (197) 
 Element #: 54, Current Node #: 112, Diagonal Node #: 89, (155) 
 Element #: 54, Current Node #: 113, Diagonal Node #: 88, (154) 
+Element #: 54, Current Node #: 116, Diagonal Node #: 85, (148) 
 Element #: 54, Current Node #: 117, Diagonal Node #: 84, (147) 
-Element #: 54, Current Node #: 116, Diagonal Node #: 85, (148) 
 Element #: 55, Current Node #: 85, Diagonal Node #: 118, (205) 
 Element #: 55, Current Node #: 86, Diagonal Node #: 117, (204) 
+Element #: 55, Current Node #: 89, Diagonal Node #: 114, (198) 
 Element #: 55, Current Node #: 90, Diagonal Node #: 113, (197) 
-Element #: 55, Current Node #: 89, Diagonal Node #: 114, (198) 
 Element #: 55, Current Node #: 113, Diagonal Node #: 90, (156) 
 Element #: 55, Current Node #: 114, Diagonal Node #: 89, (155) 
+Element #: 55, Current Node #: 117, Diagonal Node #: 86, (149) 
 Element #: 55, Current Node #: 118, Diagonal Node #: 85, (148) 
-Element #: 55, Current Node #: 117, Diagonal Node #: 86, (149) 
 Element #: 56, Current Node #: 86, Diagonal Node #: 119, (206) 
 Element #: 56, Current Node #: 87, Diagonal Node #: 118, (205) 
+Element #: 56, Current Node #: 90, Diagonal Node #: 115, (199) 
 Element #: 56, Current Node #: 91, Diagonal Node #: 114, (198) 
-Element #: 56, Current Node #: 90, Diagonal Node #: 115, (199) 
 Element #: 56, Current Node #: 114, Diagonal Node #: 91, (157) 
 Element #: 56, Current Node #: 115, Diagonal Node #: 90, (156) 
+Element #: 56, Current Node #: 118, Diagonal Node #: 87, (150) 
 Element #: 56, Current Node #: 119, Diagonal Node #: 86, (149) 
-Element #: 56, Current Node #: 118, Diagonal Node #: 87, (150) 
 Element #: 57, Current Node #: 88, Diagonal Node #: 121, (211) 
 Element #: 57, Current Node #: 89, Diagonal Node #: 120, (210) 
+Element #: 57, Current Node #: 92, Diagonal Node #: 117, (204) 
 Element #: 57, Current Node #: 93, Diagonal Node #: 116, (203) 
-Element #: 57, Current Node #: 92, Diagonal Node #: 117, (204) 
 Element #: 57, Current Node #: 116, Diagonal Node #: 93, (162) 
 Element #: 57, Current Node #: 117, Diagonal Node #: 92, (161) 
+Element #: 57, Current Node #: 120, Diagonal Node #: 89, (155) 
 Element #: 57, Current Node #: 121, Diagonal Node #: 88, (154) 
-Element #: 57, Current Node #: 120, Diagonal Node #: 89, (155) 
 Element #: 58, Current Node #: 89, Diagonal Node #: 122, (212) 
 Element #: 58, Current Node #: 90, Diagonal Node #: 121, (211) 
+Element #: 58, Current Node #: 93, Diagonal Node #: 118, (205) 
 Element #: 58, Current Node #: 94, Diagonal Node #: 117, (204) 
-Element #: 58, Current Node #: 93, Diagonal Node #: 118, (205) 
 Element #: 58, Current Node #: 117, Diagonal Node #: 94, (163) 
 Element #: 58, Current Node #: 118, Diagonal Node #: 93, (162) 
+Element #: 58, Current Node #: 121, Diagonal Node #: 90, (156) 
 Element #: 58, Current Node #: 122, Diagonal Node #: 89, (155) 
-Element #: 58, Current Node #: 121, Diagonal Node #: 90, (156) 
 Element #: 59, Current Node #: 90, Diagonal Node #: 123, (213) 
 Element #: 59, Current Node #: 91, Diagonal Node #: 122, (212) 
+Element #: 59, Current Node #: 94, Diagonal Node #: 119, (206) 
 Element #: 59, Current Node #: 95, Diagonal Node #: 118, (205) 
-Element #: 59, Current Node #: 94, Diagonal Node #: 119, (206) 
 Element #: 59, Current Node #: 118, Diagonal Node #: 95, (164) 
 Element #: 59, Current Node #: 119, Diagonal Node #: 94, (163) 
+Element #: 59, Current Node #: 122, Diagonal Node #: 91, (157) 
 Element #: 59, Current Node #: 123, Diagonal Node #: 90, (156) 
-Element #: 59, Current Node #: 122, Diagonal Node #: 91, (157) 
 Element #: 60, Current Node #: 92, Diagonal Node #: 125, (218) 
 Element #: 60, Current Node #: 93, Diagonal Node #: 124, (217) 
+Element #: 60, Current Node #: 96, Diagonal Node #: 121, (211) 
 Element #: 60, Current Node #: 97, Diagonal Node #: 120, (210) 
-Element #: 60, Current Node #: 96, Diagonal Node #: 121, (211) 
 Element #: 60, Current Node #: 120, Diagonal Node #: 97, (169) 
 Element #: 60, Current Node #: 121, Diagonal Node #: 96, (168) 
+Element #: 60, Current Node #: 124, Diagonal Node #: 93, (162) 
 Element #: 60, Current Node #: 125, Diagonal Node #: 92, (161) 
-Element #: 60, Current Node #: 124, Diagonal Node #: 93, (162) 
 Element #: 61, Current Node #: 93, Diagonal Node #: 126, (219) 
 Element #: 61, Current Node #: 94, Diagonal Node #: 125, (218) 
+Element #: 61, Current Node #: 97, Diagonal Node #: 122, (212) 
 Element #: 61, Current Node #: 98, Diagonal Node #: 121, (211) 
-Element #: 61, Current Node #: 97, Diagonal Node #: 122, (212) 
 Element #: 61, Current Node #: 121, Diagonal Node #: 98, (170) 
 Element #: 61, Current Node #: 122, Diagonal Node #: 97, (169) 
+Element #: 61, Current Node #: 125, Diagonal Node #: 94, (163) 
 Element #: 61, Current Node #: 126, Diagonal Node #: 93, (162) 
-Element #: 61, Current Node #: 125, Diagonal Node #: 94, (163) 
 Element #: 62, Current Node #: 94, Diagonal Node #: 127, (220) 
 Element #: 62, Current Node #: 95, Diagonal Node #: 126, (219) 
+Element #: 62, Current Node #: 98, Diagonal Node #: 123, (213) 
 Element #: 62, Current Node #: 99, Diagonal Node #: 122, (212) 
-Element #: 62, Current Node #: 98, Diagonal Node #: 123, (213) 
 Element #: 62, Current Node #: 122, Diagonal Node #: 99, (171) 
 Element #: 62, Current Node #: 123, Diagonal Node #: 98, (170) 
+Element #: 62, Current Node #: 126, Diagonal Node #: 95, (164) 
 Element #: 62, Current Node #: 127, Diagonal Node #: 94, (163) 
-Element #: 62, Current Node #: 126, Diagonal Node #: 95, (164) 
 Element #: 63, Current Node #: 96, Diagonal Node #: 129, (225) 
 Element #: 63, Current Node #: 97, Diagonal Node #: 128, (224) 
+Element #: 63, Current Node #: 100, Diagonal Node #: 125, (218) 
 Element #: 63, Current Node #: 101, Diagonal Node #: 124, (217) 
-Element #: 63, Current Node #: 100, Diagonal Node #: 125, (218) 
 Element #: 63, Current Node #: 124, Diagonal Node #: 101, (176) 
 Element #: 63, Current Node #: 125, Diagonal Node #: 100, (175) 
+Element #: 63, Current Node #: 128, Diagonal Node #: 97, (169) 
 Element #: 63, Current Node #: 129, Diagonal Node #: 96, (168) 
-Element #: 63, Current Node #: 128, Diagonal Node #: 97, (169) 
 Element #: 64, Current Node #: 97, Diagonal Node #: 130, (226) 
 Element #: 64, Current Node #: 98, Diagonal Node #: 129, (225) 
+Element #: 64, Current Node #: 101, Diagonal Node #: 126, (219) 
 Element #: 64, Current Node #: 102, Diagonal Node #: 125, (218) 
-Element #: 64, Current Node #: 101, Diagonal Node #: 126, (219) 
 Element #: 64, Current Node #: 125, Diagonal Node #: 102, (177) 
 Element #: 64, Current Node #: 126, Diagonal Node #: 101, (176) 
+Element #: 64, Current Node #: 129, Diagonal Node #: 98, (170) 
 Element #: 64, Current Node #: 130, Diagonal Node #: 97, (169) 
-Element #: 64, Current Node #: 129, Diagonal Node #: 98, (170) 
 Element #: 65, Current Node #: 98, Diagonal Node #: 131, (227) 
 Element #: 65, Current Node #: 99, Diagonal Node #: 130, (226) 
+Element #: 65, Current Node #: 102, Diagonal Node #: 127, (220) 
 Element #: 65, Current Node #: 103, Diagonal Node #: 126, (219) 
-Element #: 65, Current Node #: 102, Diagonal Node #: 127, (220) 
 Element #: 65, Current Node #: 126, Diagonal Node #: 103, (178) 
 Element #: 65, Current Node #: 127, Diagonal Node #: 102, (177) 
+Element #: 65, Current Node #: 130, Diagonal Node #: 99, (171) 
 Element #: 65, Current Node #: 131, Diagonal Node #: 98, (170) 
-Element #: 65, Current Node #: 130, Diagonal Node #: 99, (171) 
 Element #: 66, Current Node #: 100, Diagonal Node #: 133, (232) 
 Element #: 66, Current Node #: 101, Diagonal Node #: 132, (231) 
+Element #: 66, Current Node #: 104, Diagonal Node #: 129, (225) 
 Element #: 66, Current Node #: 105, Diagonal Node #: 128, (224) 
-Element #: 66, Current Node #: 104, Diagonal Node #: 129, (225) 
 Element #: 66, Current Node #: 128, Diagonal Node #: 105, (183) 
 Element #: 66, Current Node #: 129, Diagonal Node #: 104, (182) 
+Element #: 66, Current Node #: 132, Diagonal Node #: 101, (176) 
 Element #: 66, Current Node #: 133, Diagonal Node #: 100, (175) 
-Element #: 66, Current Node #: 132, Diagonal Node #: 101, (176) 
 Element #: 67, Current Node #: 101, Diagonal Node #: 134, (233) 
 Element #: 67, Current Node #: 102, Diagonal Node #: 133, (232) 
+Element #: 67, Current Node #: 105, Diagonal Node #: 130, (226) 
 Element #: 67, Current Node #: 106, Diagonal Node #: 129, (225) 
-Element #: 67, Current Node #: 105, Diagonal Node #: 130, (226) 
 Element #: 67, Current Node #: 129, Diagonal Node #: 106, (184) 
 Element #: 67, Current Node #: 130, Diagonal Node #: 105, (183) 
+Element #: 67, Current Node #: 133, Diagonal Node #: 102, (177) 
 Element #: 67, Current Node #: 134, Diagonal Node #: 101, (176) 
-Element #: 67, Current Node #: 133, Diagonal Node #: 102, (177) 
 Element #: 68, Current Node #: 102, Diagonal Node #: 135, (234) 
 Element #: 68, Current Node #: 103, Diagonal Node #: 134, (233) 
+Element #: 68, Current Node #: 106, Diagonal Node #: 131, (227) 
 Element #: 68, Current Node #: 107, Diagonal Node #: 130, (226) 
-Element #: 68, Current Node #: 106, Diagonal Node #: 131, (227) 
 Element #: 68, Current Node #: 130, Diagonal Node #: 107, (185) 
 Element #: 68, Current Node #: 131, Diagonal Node #: 106, (184) 
+Element #: 68, Current Node #: 134, Diagonal Node #: 103, (178) 
 Element #: 68, Current Node #: 135, Diagonal Node #: 102, (177) 
-Element #: 68, Current Node #: 134, Diagonal Node #: 103, (178) 
 Element #: 69, Current Node #: 104, Diagonal Node #: 137, (239) 
 Element #: 69, Current Node #: 105, Diagonal Node #: 136, (238) 
+Element #: 69, Current Node #: 108, Diagonal Node #: 133, (232) 
 Element #: 69, Current Node #: 109, Diagonal Node #: 132, (231) 
-Element #: 69, Current Node #: 108, Diagonal Node #: 133, (232) 
 Element #: 69, Current Node #: 132, Diagonal Node #: 109, (190) 
 Element #: 69, Current Node #: 133, Diagonal Node #: 108, (189) 
+Element #: 69, Current Node #: 136, Diagonal Node #: 105, (183) 
 Element #: 69, Current Node #: 137, Diagonal Node #: 104, (182) 
-Element #: 69, Current Node #: 136, Diagonal Node #: 105, (183) 
 Element #: 70, Current Node #: 105, Diagonal Node #: 138, (240) 
 Element #: 70, Current Node #: 106, Diagonal Node #: 137, (239) 
+Element #: 70, Current Node #: 109, Diagonal Node #: 134, (233) 
 Element #: 70, Current Node #: 110, Diagonal Node #: 133, (232) 
-Element #: 70, Current Node #: 109, Diagonal Node #: 134, (233) 
 Element #: 70, Current Node #: 133, Diagonal Node #: 110, (191) 
 Element #: 70, Current Node #: 134, Diagonal Node #: 109, (190) 
+Element #: 70, Current Node #: 137, Diagonal Node #: 106, (184) 
 Element #: 70, Current Node #: 138, Diagonal Node #: 105, (183) 
-Element #: 70, Current Node #: 137, Diagonal Node #: 106, (184) 
 Element #: 71, Current Node #: 106, Diagonal Node #: 139, (241) 
 Element #: 71, Current Node #: 107, Diagonal Node #: 138, (240) 
+Element #: 71, Current Node #: 110, Diagonal Node #: 135, (234) 
 Element #: 71, Current Node #: 111, Diagonal Node #: 134, (233) 
-Element #: 71, Current Node #: 110, Diagonal Node #: 135, (234) 
 Element #: 71, Current Node #: 134, Diagonal Node #: 111, (192) 
 Element #: 71, Current Node #: 135, Diagonal Node #: 110, (191) 
+Element #: 71, Current Node #: 138, Diagonal Node #: 107, (185) 
 Element #: 71, Current Node #: 139, Diagonal Node #: 106, (184) 
-Element #: 71, Current Node #: 138, Diagonal Node #: 107, (185) 
 Element #: 72, Current Node #: 112, Diagonal Node #: 145, (253) 
 Element #: 72, Current Node #: 113, Diagonal Node #: 144, (252) 
+Element #: 72, Current Node #: 116, Diagonal Node #: 141, (246) 
 Element #: 72, Current Node #: 117, Diagonal Node #: 140, (245) 
-Element #: 72, Current Node #: 116, Diagonal Node #: 141, (246) 
 Element #: 72, Current Node #: 140, Diagonal Node #: 117, (204) 
 Element #: 72, Current Node #: 141, Diagonal Node #: 116, (203) 
+Element #: 72, Current Node #: 144, Diagonal Node #: 113, (197) 
 Element #: 72, Current Node #: 145, Diagonal Node #: 112, (196) 
-Element #: 72, Current Node #: 144, Diagonal Node #: 113, (197) 
 Element #: 73, Current Node #: 113, Diagonal Node #: 146, (254) 
 Element #: 73, Current Node #: 114, Diagonal Node #: 145, (253) 
+Element #: 73, Current Node #: 117, Diagonal Node #: 142, (247) 
 Element #: 73, Current Node #: 118, Diagonal Node #: 141, (246) 
-Element #: 73, Current Node #: 117, Diagonal Node #: 142, (247) 
 Element #: 73, Current Node #: 141, Diagonal Node #: 118, (205) 
 Element #: 73, Current Node #: 142, Diagonal Node #: 117, (204) 
+Element #: 73, Current Node #: 145, Diagonal Node #: 114, (198) 
 Element #: 73, Current Node #: 146, Diagonal Node #: 113, (197) 
-Element #: 73, Current Node #: 145, Diagonal Node #: 114, (198) 
 Element #: 74, Current Node #: 114, Diagonal Node #: 147, (255) 
 Element #: 74, Current Node #: 115, Diagonal Node #: 146, (254) 
+Element #: 74, Current Node #: 118, Diagonal Node #: 143, (248) 
 Element #: 74, Current Node #: 119, Diagonal Node #: 142, (247) 
-Element #: 74, Current Node #: 118, Diagonal Node #: 143, (248) 
 Element #: 74, Current Node #: 142, Diagonal Node #: 119, (206) 
 Element #: 74, Current Node #: 143, Diagonal Node #: 118, (205) 
+Element #: 74, Current Node #: 146, Diagonal Node #: 115, (199) 
 Element #: 74, Current Node #: 147, Diagonal Node #: 114, (198) 
-Element #: 74, Current Node #: 146, Diagonal Node #: 115, (199) 
 Element #: 75, Current Node #: 116, Diagonal Node #: 149, (260) 
 Element #: 75, Current Node #: 117, Diagonal Node #: 148, (259) 
+Element #: 75, Current Node #: 120, Diagonal Node #: 145, (253) 
 Element #: 75, Current Node #: 121, Diagonal Node #: 144, (252) 
-Element #: 75, Current Node #: 120, Diagonal Node #: 145, (253) 
 Element #: 75, Current Node #: 144, Diagonal Node #: 121, (211) 
 Element #: 75, Current Node #: 145, Diagonal Node #: 120, (210) 
+Element #: 75, Current Node #: 148, Diagonal Node #: 117, (204) 
 Element #: 75, Current Node #: 149, Diagonal Node #: 116, (203) 
-Element #: 75, Current Node #: 148, Diagonal Node #: 117, (204) 
 Element #: 76, Current Node #: 117, Diagonal Node #: 150, (261) 
 Element #: 76, Current Node #: 118, Diagonal Node #: 149, (260) 
+Element #: 76, Current Node #: 121, Diagonal Node #: 146, (254) 
 Element #: 76, Current Node #: 122, Diagonal Node #: 145, (253) 
-Element #: 76, Current Node #: 121, Diagonal Node #: 146, (254) 
 Element #: 76, Current Node #: 145, Diagonal Node #: 122, (212) 
 Element #: 76, Current Node #: 146, Diagonal Node #: 121, (211) 
+Element #: 76, Current Node #: 149, Diagonal Node #: 118, (205) 
 Element #: 76, Current Node #: 150, Diagonal Node #: 117, (204) 
-Element #: 76, Current Node #: 149, Diagonal Node #: 118, (205) 
 Element #: 77, Current Node #: 118, Diagonal Node #: 151, (262) 
 Element #: 77, Current Node #: 119, Diagonal Node #: 150, (261) 
+Element #: 77, Current Node #: 122, Diagonal Node #: 147, (255) 
 Element #: 77, Current Node #: 123, Diagonal Node #: 146, (254) 
-Element #: 77, Current Node #: 122, Diagonal Node #: 147, (255) 
 Element #: 77, Current Node #: 146, Diagonal Node #: 123, (213) 
 Element #: 77, Current Node #: 147, Diagonal Node #: 122, (212) 
+Element #: 77, Current Node #: 150, Diagonal Node #: 119, (206) 
 Element #: 77, Current Node #: 151, Diagonal Node #: 118, (205) 
-Element #: 77, Current Node #: 150, Diagonal Node #: 119, (206) 
 Element #: 78, Current Node #: 120, Diagonal Node #: 153, (267) 
 Element #: 78, Current Node #: 121, Diagonal Node #: 152, (266) 
+Element #: 78, Current Node #: 124, Diagonal Node #: 149, (260) 
 Element #: 78, Current Node #: 125, Diagonal Node #: 148, (259) 
-Element #: 78, Current Node #: 124, Diagonal Node #: 149, (260) 
 Element #: 78, Current Node #: 148, Diagonal Node #: 125, (218) 
 Element #: 78, Current Node #: 149, Diagonal Node #: 124, (217) 
+Element #: 78, Current Node #: 152, Diagonal Node #: 121, (211) 
 Element #: 78, Current Node #: 153, Diagonal Node #: 120, (210) 
-Element #: 78, Current Node #: 152, Diagonal Node #: 121, (211) 
 Element #: 79, Current Node #: 121, Diagonal Node #: 154, (268) 
 Element #: 79, Current Node #: 122, Diagonal Node #: 153, (267) 
+Element #: 79, Current Node #: 125, Diagonal Node #: 150, (261) 
 Element #: 79, Current Node #: 126, Diagonal Node #: 149, (260) 
-Element #: 79, Current Node #: 125, Diagonal Node #: 150, (261) 
 Element #: 79, Current Node #: 149, Diagonal Node #: 126, (219) 
 Element #: 79, Current Node #: 150, Diagonal Node #: 125, (218) 
+Element #: 79, Current Node #: 153, Diagonal Node #: 122, (212) 
 Element #: 79, Current Node #: 154, Diagonal Node #: 121, (211) 
-Element #: 79, Current Node #: 153, Diagonal Node #: 122, (212) 
 Element #: 80, Current Node #: 122, Diagonal Node #: 155, (269) 
 Element #: 80, Current Node #: 123, Diagonal Node #: 154, (268) 
+Element #: 80, Current Node #: 126, Diagonal Node #: 151, (262) 
 Element #: 80, Current Node #: 127, Diagonal Node #: 150, (261) 
-Element #: 80, Current Node #: 126, Diagonal Node #: 151, (262) 
 Element #: 80, Current Node #: 150, Diagonal Node #: 127, (220) 
 Element #: 80, Current Node #: 151, Diagonal Node #: 126, (219) 
+Element #: 80, Current Node #: 154, Diagonal Node #: 123, (213) 
 Element #: 80, Current Node #: 155, Diagonal Node #: 122, (212) 
-Element #: 80, Current Node #: 154, Diagonal Node #: 123, (213) 
 Element #: 81, Current Node #: 124, Diagonal Node #: 157, (274) 
 Element #: 81, Current Node #: 125, Diagonal Node #: 156, (273) 
+Element #: 81, Current Node #: 128, Diagonal Node #: 153, (267) 
 Element #: 81, Current Node #: 129, Diagonal Node #: 152, (266) 
-Element #: 81, Current Node #: 128, Diagonal Node #: 153, (267) 
 Element #: 81, Current Node #: 152, Diagonal Node #: 129, (225) 
 Element #: 81, Current Node #: 153, Diagonal Node #: 128, (224) 
+Element #: 81, Current Node #: 156, Diagonal Node #: 125, (218) 
 Element #: 81, Current Node #: 157, Diagonal Node #: 124, (217) 
-Element #: 81, Current Node #: 156, Diagonal Node #: 125, (218) 
 Element #: 82, Current Node #: 125, Diagonal Node #: 158, (275) 
 Element #: 82, Current Node #: 126, Diagonal Node #: 157, (274) 
+Element #: 82, Current Node #: 129, Diagonal Node #: 154, (268) 
 Element #: 82, Current Node #: 130, Diagonal Node #: 153, (267) 
-Element #: 82, Current Node #: 129, Diagonal Node #: 154, (268) 
 Element #: 82, Current Node #: 153, Diagonal Node #: 130, (226) 
 Element #: 82, Current Node #: 154, Diagonal Node #: 129, (225) 
+Element #: 82, Current Node #: 157, Diagonal Node #: 126, (219) 
 Element #: 82, Current Node #: 158, Diagonal Node #: 125, (218) 
-Element #: 82, Current Node #: 157, Diagonal Node #: 126, (219) 
 Element #: 83, Current Node #: 126, Diagonal Node #: 159, (276) 
 Element #: 83, Current Node #: 127, Diagonal Node #: 158, (275) 
+Element #: 83, Current Node #: 130, Diagonal Node #: 155, (269) 
 Element #: 83, Current Node #: 131, Diagonal Node #: 154, (268) 
-Element #: 83, Current Node #: 130, Diagonal Node #: 155, (269) 
 Element #: 83, Current Node #: 154, Diagonal Node #: 131, (227) 
 Element #: 83, Current Node #: 155, Diagonal Node #: 130, (226) 
+Element #: 83, Current Node #: 158, Diagonal Node #: 127, (220) 
 Element #: 83, Current Node #: 159, Diagonal Node #: 126, (219) 
-Element #: 83, Current Node #: 158, Diagonal Node #: 127, (220) 
 Element #: 84, Current Node #: 128, Diagonal Node #: 161, (281) 
 Element #: 84, Current Node #: 129, Diagonal Node #: 160, (280) 
+Element #: 84, Current Node #: 132, Diagonal Node #: 157, (274) 
 Element #: 84, Current Node #: 133, Diagonal Node #: 156, (273) 
-Element #: 84, Current Node #: 132, Diagonal Node #: 157, (274) 
 Element #: 84, Current Node #: 156, Diagonal Node #: 133, (232) 
 Element #: 84, Current Node #: 157, Diagonal Node #: 132, (231) 
+Element #: 84, Current Node #: 160, Diagonal Node #: 129, (225) 
 Element #: 84, Current Node #: 161, Diagonal Node #: 128, (224) 
-Element #: 84, Current Node #: 160, Diagonal Node #: 129, (225) 
 Element #: 85, Current Node #: 129, Diagonal Node #: 162, (282) 
 Element #: 85, Current Node #: 130, Diagonal Node #: 161, (281) 
+Element #: 85, Current Node #: 133, Diagonal Node #: 158, (275) 
 Element #: 85, Current Node #: 134, Diagonal Node #: 157, (274) 
-Element #: 85, Current Node #: 133, Diagonal Node #: 158, (275) 
 Element #: 85, Current Node #: 157, Diagonal Node #: 134, (233) 
 Element #: 85, Current Node #: 158, Diagonal Node #: 133, (232) 
+Element #: 85, Current Node #: 161, Diagonal Node #: 130, (226) 
 Element #: 85, Current Node #: 162, Diagonal Node #: 129, (225) 
-Element #: 85, Current Node #: 161, Diagonal Node #: 130, (226) 
 Element #: 86, Current Node #: 130, Diagonal Node #: 163, (283) 
 Element #: 86, Current Node #: 131, Diagonal Node #: 162, (282) 
+Element #: 86, Current Node #: 134, Diagonal Node #: 159, (276) 
 Element #: 86, Current Node #: 135, Diagonal Node #: 158, (275) 
-Element #: 86, Current Node #: 134, Diagonal Node #: 159, (276) 
 Element #: 86, Current Node #: 158, Diagonal Node #: 135, (234) 
 Element #: 86, Current Node #: 159, Diagonal Node #: 134, (233) 
+Element #: 86, Current Node #: 162, Diagonal Node #: 131, (227) 
 Element #: 86, Current Node #: 163, Diagonal Node #: 130, (226) 
-Element #: 86, Current Node #: 162, Diagonal Node #: 131, (227) 
 Element #: 87, Current Node #: 132, Diagonal Node #: 165, (288) 
 Element #: 87, Current Node #: 133, Diagonal Node #: 164, (287) 
+Element #: 87, Current Node #: 136, Diagonal Node #: 161, (281) 
 Element #: 87, Current Node #: 137, Diagonal Node #: 160, (280) 
-Element #: 87, Current Node #: 136, Diagonal Node #: 161, (281) 
 Element #: 87, Current Node #: 160, Diagonal Node #: 137, (239) 
 Element #: 87, Current Node #: 161, Diagonal Node #: 136, (238) 
+Element #: 87, Current Node #: 164, Diagonal Node #: 133, (232) 
 Element #: 87, Current Node #: 165, Diagonal Node #: 132, (231) 
-Element #: 87, Current Node #: 164, Diagonal Node #: 133, (232) 
 Element #: 88, Current Node #: 133, Diagonal Node #: 166, (289) 
 Element #: 88, Current Node #: 134, Diagonal Node #: 165, (288) 
+Element #: 88, Current Node #: 137, Diagonal Node #: 162, (282) 
 Element #: 88, Current Node #: 138, Diagonal Node #: 161, (281) 
-Element #: 88, Current Node #: 137, Diagonal Node #: 162, (282) 
 Element #: 88, Current Node #: 161, Diagonal Node #: 138, (240) 
 Element #: 88, Current Node #: 162, Diagonal Node #: 137, (239) 
+Element #: 88, Current Node #: 165, Diagonal Node #: 134, (233) 
 Element #: 88, Current Node #: 166, Diagonal Node #: 133, (232) 
-Element #: 88, Current Node #: 165, Diagonal Node #: 134, (233) 
 Element #: 89, Current Node #: 134, Diagonal Node #: 167, (290) 
 Element #: 89, Current Node #: 135, Diagonal Node #: 166, (289) 
+Element #: 89, Current Node #: 138, Diagonal Node #: 163, (283) 
 Element #: 89, Current Node #: 139, Diagonal Node #: 162, (282) 
-Element #: 89, Current Node #: 138, Diagonal Node #: 163, (283) 
 Element #: 89, Current Node #: 162, Diagonal Node #: 139, (241) 
 Element #: 89, Current Node #: 163, Diagonal Node #: 138, (240) 
+Element #: 89, Current Node #: 166, Diagonal Node #: 135, (234) 
 Element #: 89, Current Node #: 167, Diagonal Node #: 134, (233) 
-Element #: 89, Current Node #: 166, Diagonal Node #: 135, (234) 
 Element #: 90, Current Node #: 140, Diagonal Node #: 173, (302) 
 Element #: 90, Current Node #: 141, Diagonal Node #: 172, (301) 
+Element #: 90, Current Node #: 144, Diagonal Node #: 169, (295) 
 Element #: 90, Current Node #: 145, Diagonal Node #: 168, (294) 
-Element #: 90, Current Node #: 144, Diagonal Node #: 169, (295) 
 Element #: 90, Current Node #: 168, Diagonal Node #: 145, (253) 
 Element #: 90, Current Node #: 169, Diagonal Node #: 144, (252) 
+Element #: 90, Current Node #: 172, Diagonal Node #: 141, (246) 
 Element #: 90, Current Node #: 173, Diagonal Node #: 140, (245) 
-Element #: 90, Current Node #: 172, Diagonal Node #: 141, (246) 
 Element #: 91, Current Node #: 141, Diagonal Node #: 174, (303) 
 Element #: 91, Current Node #: 142, Diagonal Node #: 173, (302) 
+Element #: 91, Current Node #: 145, Diagonal Node #: 170, (296) 
 Element #: 91, Current Node #: 146, Diagonal Node #: 169, (295) 
-Element #: 91, Current Node #: 145, Diagonal Node #: 170, (296) 
 Element #: 91, Current Node #: 169, Diagonal Node #: 146, (254) 
 Element #: 91, Current Node #: 170, Diagonal Node #: 145, (253) 
+Element #: 91, Current Node #: 173, Diagonal Node #: 142, (247) 
 Element #: 91, Current Node #: 174, Diagonal Node #: 141, (246) 
-Element #: 91, Current Node #: 173, Diagonal Node #: 142, (247) 
 Element #: 92, Current Node #: 142, Diagonal Node #: 175, (304) 
 Element #: 92, Current Node #: 143, Diagonal Node #: 174, (303) 
+Element #: 92, Current Node #: 146, Diagonal Node #: 171, (297) 
 Element #: 92, Current Node #: 147, Diagonal Node #: 170, (296) 
-Element #: 92, Current Node #: 146, Diagonal Node #: 171, (297) 
 Element #: 92, Current Node #: 170, Diagonal Node #: 147, (255) 
 Element #: 92, Current Node #: 171, Diagonal Node #: 146, (254) 
+Element #: 92, Current Node #: 174, Diagonal Node #: 143, (248) 
 Element #: 92, Current Node #: 175, Diagonal Node #: 142, (247) 
-Element #: 92, Current Node #: 174, Diagonal Node #: 143, (248) 
 Element #: 93, Current Node #: 144, Diagonal Node #: 177, (309) 
 Element #: 93, Current Node #: 145, Diagonal Node #: 176, (308) 
+Element #: 93, Current Node #: 148, Diagonal Node #: 173, (302) 
 Element #: 93, Current Node #: 149, Diagonal Node #: 172, (301) 
-Element #: 93, Current Node #: 148, Diagonal Node #: 173, (302) 
 Element #: 93, Current Node #: 172, Diagonal Node #: 149, (260) 
 Element #: 93, Current Node #: 173, Diagonal Node #: 148, (259) 
+Element #: 93, Current Node #: 176, Diagonal Node #: 145, (253) 
 Element #: 93, Current Node #: 177, Diagonal Node #: 144, (252) 
-Element #: 93, Current Node #: 176, Diagonal Node #: 145, (253) 
 Element #: 94, Current Node #: 145, Diagonal Node #: 178, (310) 
 Element #: 94, Current Node #: 146, Diagonal Node #: 177, (309) 
+Element #: 94, Current Node #: 149, Diagonal Node #: 174, (303) 
 Element #: 94, Current Node #: 150, Diagonal Node #: 173, (302) 
-Element #: 94, Current Node #: 149, Diagonal Node #: 174, (303) 
 Element #: 94, Current Node #: 173, Diagonal Node #: 150, (261) 
 Element #: 94, Current Node #: 174, Diagonal Node #: 149, (260) 
+Element #: 94, Current Node #: 177, Diagonal Node #: 146, (254) 
 Element #: 94, Current Node #: 178, Diagonal Node #: 145, (253) 
-Element #: 94, Current Node #: 177, Diagonal Node #: 146, (254) 
 Element #: 95, Current Node #: 146, Diagonal Node #: 179, (311) 
 Element #: 95, Current Node #: 147, Diagonal Node #: 178, (310) 
+Element #: 95, Current Node #: 150, Diagonal Node #: 175, (304) 
 Element #: 95, Current Node #: 151, Diagonal Node #: 174, (303) 
-Element #: 95, Current Node #: 150, Diagonal Node #: 175, (304) 
 Element #: 95, Current Node #: 174, Diagonal Node #: 151, (262) 
 Element #: 95, Current Node #: 175, Diagonal Node #: 150, (261) 
+Element #: 95, Current Node #: 178, Diagonal Node #: 147, (255) 
 Element #: 95, Current Node #: 179, Diagonal Node #: 146, (254) 
-Element #: 95, Current Node #: 178, Diagonal Node #: 147, (255) 
 Element #: 96, Current Node #: 148, Diagonal Node #: 181, (316) 
 Element #: 96, Current Node #: 149, Diagonal Node #: 180, (315) 
+Element #: 96, Current Node #: 152, Diagonal Node #: 177, (309) 
 Element #: 96, Current Node #: 153, Diagonal Node #: 176, (308) 
-Element #: 96, Current Node #: 152, Diagonal Node #: 177, (309) 
 Element #: 96, Current Node #: 176, Diagonal Node #: 153, (267) 
 Element #: 96, Current Node #: 177, Diagonal Node #: 152, (266) 
+Element #: 96, Current Node #: 180, Diagonal Node #: 149, (260) 
 Element #: 96, Current Node #: 181, Diagonal Node #: 148, (259) 
-Element #: 96, Current Node #: 180, Diagonal Node #: 149, (260) 
 Element #: 97, Current Node #: 149, Diagonal Node #: 182, (317) 
 Element #: 97, Current Node #: 150, Diagonal Node #: 181, (316) 
+Element #: 97, Current Node #: 153, Diagonal Node #: 178, (310) 
 Element #: 97, Current Node #: 154, Diagonal Node #: 177, (309) 
-Element #: 97, Current Node #: 153, Diagonal Node #: 178, (310) 
 Element #: 97, Current Node #: 177, Diagonal Node #: 154, (268) 
 Element #: 97, Current Node #: 178, Diagonal Node #: 153, (267) 
+Element #: 97, Current Node #: 181, Diagonal Node #: 150, (261) 
 Element #: 97, Current Node #: 182, Diagonal Node #: 149, (260) 
-Element #: 97, Current Node #: 181, Diagonal Node #: 150, (261) 
 Element #: 98, Current Node #: 150, Diagonal Node #: 183, (318) 
 Element #: 98, Current Node #: 151, Diagonal Node #: 182, (317) 
+Element #: 98, Current Node #: 154, Diagonal Node #: 179, (311) 
 Element #: 98, Current Node #: 155, Diagonal Node #: 178, (310) 
-Element #: 98, Current Node #: 154, Diagonal Node #: 179, (311) 
 Element #: 98, Current Node #: 178, Diagonal Node #: 155, (269) 
 Element #: 98, Current Node #: 179, Diagonal Node #: 154, (268) 
+Element #: 98, Current Node #: 182, Diagonal Node #: 151, (262) 
 Element #: 98, Current Node #: 183, Diagonal Node #: 150, (261) 
-Element #: 98, Current Node #: 182, Diagonal Node #: 151, (262) 
 Element #: 99, Current Node #: 152, Diagonal Node #: 185, (323) 
 Element #: 99, Current Node #: 153, Diagonal Node #: 184, (322) 
+Element #: 99, Current Node #: 156, Diagonal Node #: 181, (316) 
 Element #: 99, Current Node #: 157, Diagonal Node #: 180, (315) 
-Element #: 99, Current Node #: 156, Diagonal Node #: 181, (316) 
 Element #: 99, Current Node #: 180, Diagonal Node #: 157, (274) 
 Element #: 99, Current Node #: 181, Diagonal Node #: 156, (273) 
+Element #: 99, Current Node #: 184, Diagonal Node #: 153, (267) 
 Element #: 99, Current Node #: 185, Diagonal Node #: 152, (266) 
-Element #: 99, Current Node #: 184, Diagonal Node #: 153, (267) 
 Element #: 100, Current Node #: 153, Diagonal Node #: 186, (324) 
 Element #: 100, Current Node #: 154, Diagonal Node #: 185, (323) 
+Element #: 100, Current Node #: 157, Diagonal Node #: 182, (317) 
 Element #: 100, Current Node #: 158, Diagonal Node #: 181, (316) 
-Element #: 100, Current Node #: 157, Diagonal Node #: 182, (317) 
 Element #: 100, Current Node #: 181, Diagonal Node #: 158, (275) 
 Element #: 100, Current Node #: 182, Diagonal Node #: 157, (274) 
+Element #: 100, Current Node #: 185, Diagonal Node #: 154, (268) 
 Element #: 100, Current Node #: 186, Diagonal Node #: 153, (267) 
-Element #: 100, Current Node #: 185, Diagonal Node #: 154, (268) 
 Element #: 101, Current Node #: 154, Diagonal Node #: 187, (325) 
 Element #: 101, Current Node #: 155, Diagonal Node #: 186, (324) 
+Element #: 101, Current Node #: 158, Diagonal Node #: 183, (318) 
 Element #: 101, Current Node #: 159, Diagonal Node #: 182, (317) 
-Element #: 101, Current Node #: 158, Diagonal Node #: 183, (318) 
 Element #: 101, Current Node #: 182, Diagonal Node #: 159, (276) 
 Element #: 101, Current Node #: 183, Diagonal Node #: 158, (275) 
+Element #: 101, Current Node #: 186, Diagonal Node #: 155, (269) 
 Element #: 101, Current Node #: 187, Diagonal Node #: 154, (268) 
-Element #: 101, Current Node #: 186, Diagonal Node #: 155, (269) 
 Element #: 102, Current Node #: 156, Diagonal Node #: 189, (330) 
 Element #: 102, Current Node #: 157, Diagonal Node #: 188, (329) 
+Element #: 102, Current Node #: 160, Diagonal Node #: 185, (323) 
 Element #: 102, Current Node #: 161, Diagonal Node #: 184, (322) 
-Element #: 102, Current Node #: 160, Diagonal Node #: 185, (323) 
 Element #: 102, Current Node #: 184, Diagonal Node #: 161, (281) 
 Element #: 102, Current Node #: 185, Diagonal Node #: 160, (280) 
+Element #: 102, Current Node #: 188, Diagonal Node #: 157, (274) 
 Element #: 102, Current Node #: 189, Diagonal Node #: 156, (273) 
-Element #: 102, Current Node #: 188, Diagonal Node #: 157, (274) 
 Element #: 103, Current Node #: 157, Diagonal Node #: 190, (331) 
 Element #: 103, Current Node #: 158, Diagonal Node #: 189, (330) 
+Element #: 103, Current Node #: 161, Diagonal Node #: 186, (324) 
 Element #: 103, Current Node #: 162, Diagonal Node #: 185, (323) 
-Element #: 103, Current Node #: 161, Diagonal Node #: 186, (324) 
 Element #: 103, Current Node #: 185, Diagonal Node #: 162, (282) 
 Element #: 103, Current Node #: 186, Diagonal Node #: 161, (281) 
+Element #: 103, Current Node #: 189, Diagonal Node #: 158, (275) 
 Element #: 103, Current Node #: 190, Diagonal Node #: 157, (274) 
-Element #: 103, Current Node #: 189, Diagonal Node #: 158, (275) 
 Element #: 104, Current Node #: 158, Diagonal Node #: 191, (332) 
 Element #: 104, Current Node #: 159, Diagonal Node #: 190, (331) 
+Element #: 104, Current Node #: 162, Diagonal Node #: 187, (325) 
 Element #: 104, Current Node #: 163, Diagonal Node #: 186, (324) 
-Element #: 104, Current Node #: 162, Diagonal Node #: 187, (325) 
 Element #: 104, Current Node #: 186, Diagonal Node #: 163, (283) 
 Element #: 104, Current Node #: 187, Diagonal Node #: 162, (282) 
+Element #: 104, Current Node #: 190, Diagonal Node #: 159, (276) 
 Element #: 104, Current Node #: 191, Diagonal Node #: 158, (275) 
-Element #: 104, Current Node #: 190, Diagonal Node #: 159, (276) 
 Element #: 105, Current Node #: 160, Diagonal Node #: 193, (337) 
 Element #: 105, Current Node #: 161, Diagonal Node #: 192, (336) 
+Element #: 105, Current Node #: 164, Diagonal Node #: 189, (330) 
 Element #: 105, Current Node #: 165, Diagonal Node #: 188, (329) 
-Element #: 105, Current Node #: 164, Diagonal Node #: 189, (330) 
 Element #: 105, Current Node #: 188, Diagonal Node #: 165, (288) 
 Element #: 105, Current Node #: 189, Diagonal Node #: 164, (287) 
+Element #: 105, Current Node #: 192, Diagonal Node #: 161, (281) 
 Element #: 105, Current Node #: 193, Diagonal Node #: 160, (280) 
-Element #: 105, Current Node #: 192, Diagonal Node #: 161, (281) 
 Element #: 106, Current Node #: 161, Diagonal Node #: 194, (338) 
 Element #: 106, Current Node #: 162, Diagonal Node #: 193, (337) 
+Element #: 106, Current Node #: 165, Diagonal Node #: 190, (331) 
 Element #: 106, Current Node #: 166, Diagonal Node #: 189, (330) 
-Element #: 106, Current Node #: 165, Diagonal Node #: 190, (331) 
 Element #: 106, Current Node #: 189, Diagonal Node #: 166, (289) 
 Element #: 106, Current Node #: 190, Diagonal Node #: 165, (288) 
+Element #: 106, Current Node #: 193, Diagonal Node #: 162, (282) 
 Element #: 106, Current Node #: 194, Diagonal Node #: 161, (281) 
-Element #: 106, Current Node #: 193, Diagonal Node #: 162, (282) 
 Element #: 107, Current Node #: 162, Diagonal Node #: 195, (339) 
 Element #: 107, Current Node #: 163, Diagonal Node #: 194, (338) 
+Element #: 107, Current Node #: 166, Diagonal Node #: 191, (332) 
 Element #: 107, Current Node #: 167, Diagonal Node #: 190, (331) 
-Element #: 107, Current Node #: 166, Diagonal Node #: 191, (332) 
 Element #: 107, Current Node #: 190, Diagonal Node #: 167, (290) 
 Element #: 107, Current Node #: 191, Diagonal Node #: 166, (289) 
+Element #: 107, Current Node #: 194, Diagonal Node #: 163, (283) 
 Element #: 107, Current Node #: 195, Diagonal Node #: 162, (282) 
-Element #: 107, Current Node #: 194, Diagonal Node #: 163, (283) 
 Element #: 108, Current Node #: 3, Diagonal Node #: 204, (60) 
 Element #: 108, Current Node #: 196, Diagonal Node #: 35, (59) 
+Element #: 108, Current Node #: 7, Diagonal Node #: 203, (53) 
 Element #: 108, Current Node #: 197, Diagonal Node #: 31, (52) 
-Element #: 108, Current Node #: 7, Diagonal Node #: 203, (53) 
 Element #: 108, Current Node #: 31, Diagonal Node #: 197, (11) 
 Element #: 108, Current Node #: 203, Diagonal Node #: 7, (10) 
+Element #: 108, Current Node #: 35, Diagonal Node #: 196, (4) 
 Element #: 108, Current Node #: 204, Diagonal Node #: 3, (3) 
-Element #: 108, Current Node #: 35, Diagonal Node #: 196, (4) 
 Element #: 109, Current Node #: 7, Diagonal Node #: 205, (67) 
 Element #: 109, Current Node #: 197, Diagonal Node #: 39, (66) 
+Element #: 109, Current Node #: 11, Diagonal Node #: 204, (60) 
 Element #: 109, Current Node #: 198, Diagonal Node #: 35, (59) 
-Element #: 109, Current Node #: 11, Diagonal Node #: 204, (60) 
 Element #: 109, Current Node #: 35, Diagonal Node #: 198, (18) 
 Element #: 109, Current Node #: 204, Diagonal Node #: 11, (17) 
+Element #: 109, Current Node #: 39, Diagonal Node #: 197, (11) 
 Element #: 109, Current Node #: 205, Diagonal Node #: 7, (10) 
-Element #: 109, Current Node #: 39, Diagonal Node #: 197, (11) 
 Element #: 110, Current Node #: 11, Diagonal Node #: 206, (74) 
 Element #: 110, Current Node #: 198, Diagonal Node #: 43, (73) 
+Element #: 110, Current Node #: 15, Diagonal Node #: 205, (67) 
 Element #: 110, Current Node #: 199, Diagonal Node #: 39, (66) 
-Element #: 110, Current Node #: 15, Diagonal Node #: 205, (67) 
 Element #: 110, Current Node #: 39, Diagonal Node #: 199, (25) 
 Element #: 110, Current Node #: 205, Diagonal Node #: 15, (24) 
+Element #: 110, Current Node #: 43, Diagonal Node #: 198, (18) 
 Element #: 110, Current Node #: 206, Diagonal Node #: 11, (17) 
-Element #: 110, Current Node #: 43, Diagonal Node #: 198, (18) 
 Element #: 111, Current Node #: 15, Diagonal Node #: 207, (81) 
 Element #: 111, Current Node #: 199, Diagonal Node #: 47, (80) 
+Element #: 111, Current Node #: 19, Diagonal Node #: 206, (74) 
 Element #: 111, Current Node #: 200, Diagonal Node #: 43, (73) 
-Element #: 111, Current Node #: 19, Diagonal Node #: 206, (74) 
 Element #: 111, Current Node #: 43, Diagonal Node #: 200, (32) 
 Element #: 111, Current Node #: 206, Diagonal Node #: 19, (31) 
+Element #: 111, Current Node #: 47, Diagonal Node #: 199, (25) 
 Element #: 111, Current Node #: 207, Diagonal Node #: 15, (24) 
-Element #: 111, Current Node #: 47, Diagonal Node #: 199, (25) 
 Element #: 112, Current Node #: 19, Diagonal Node #: 208, (88) 
 Element #: 112, Current Node #: 200, Diagonal Node #: 51, (87) 
+Element #: 112, Current Node #: 23, Diagonal Node #: 207, (81) 
 Element #: 112, Current Node #: 201, Diagonal Node #: 47, (80) 
-Element #: 112, Current Node #: 23, Diagonal Node #: 207, (81) 
 Element #: 112, Current Node #: 47, Diagonal Node #: 201, (39) 
 Element #: 112, Current Node #: 207, Diagonal Node #: 23, (38) 
+Element #: 112, Current Node #: 51, Diagonal Node #: 200, (32) 
 Element #: 112, Current Node #: 208, Diagonal Node #: 19, (31) 
-Element #: 112, Current Node #: 51, Diagonal Node #: 200, (32) 
 Element #: 113, Current Node #: 23, Diagonal Node #: 209, (95) 
 Element #: 113, Current Node #: 201, Diagonal Node #: 55, (94) 
+Element #: 113, Current Node #: 27, Diagonal Node #: 208, (88) 
 Element #: 113, Current Node #: 202, Diagonal Node #: 51, (87) 
-Element #: 113, Current Node #: 27, Diagonal Node #: 208, (88) 
 Element #: 113, Current Node #: 51, Diagonal Node #: 202, (46) 
 Element #: 113, Current Node #: 208, Diagonal Node #: 27, (45) 
+Element #: 113, Current Node #: 55, Diagonal Node #: 201, (39) 
 Element #: 113, Current Node #: 209, Diagonal Node #: 23, (38) 
-Element #: 113, Current Node #: 55, Diagonal Node #: 201, (39) 
 Element #: 114, Current Node #: 31, Diagonal Node #: 211, (109) 
 Element #: 114, Current Node #: 203, Diagonal Node #: 63, (108) 
+Element #: 114, Current Node #: 35, Diagonal Node #: 210, (102) 
 Element #: 114, Current Node #: 204, Diagonal Node #: 59, (101) 
-Element #: 114, Current Node #: 35, Diagonal Node #: 210, (102) 
 Element #: 114, Current Node #: 59, Diagonal Node #: 204, (60) 
 Element #: 114, Current Node #: 210, Diagonal Node #: 35, (59) 
+Element #: 114, Current Node #: 63, Diagonal Node #: 203, (53) 
 Element #: 114, Current Node #: 211, Diagonal Node #: 31, (52) 
-Element #: 114, Current Node #: 63, Diagonal Node #: 203, (53) 
 Element #: 115, Current Node #: 35, Diagonal Node #: 212, (116) 
 Element #: 115, Current Node #: 204, Diagonal Node #: 67, (115) 
+Element #: 115, Current Node #: 39, Diagonal Node #: 211, (109) 
 Element #: 115, Current Node #: 205, Diagonal Node #: 63, (108) 
-Element #: 115, Current Node #: 39, Diagonal Node #: 211, (109) 
 Element #: 115, Current Node #: 63, Diagonal Node #: 205, (67) 
 Element #: 115, Current Node #: 211, Diagonal Node #: 39, (66) 
+Element #: 115, Current Node #: 67, Diagonal Node #: 204, (60) 
 Element #: 115, Current Node #: 212, Diagonal Node #: 35, (59) 
-Element #: 115, Current Node #: 67, Diagonal Node #: 204, (60) 
 Element #: 116, Current Node #: 39, Diagonal Node #: 213, (123) 
 Element #: 116, Current Node #: 205, Diagonal Node #: 71, (122) 
+Element #: 116, Current Node #: 43, Diagonal Node #: 212, (116) 
 Element #: 116, Current Node #: 206, Diagonal Node #: 67, (115) 
-Element #: 116, Current Node #: 43, Diagonal Node #: 212, (116) 
 Element #: 116, Current Node #: 67, Diagonal Node #: 206, (74) 
 Element #: 116, Current Node #: 212, Diagonal Node #: 43, (73) 
+Element #: 116, Current Node #: 71, Diagonal Node #: 205, (67) 
 Element #: 116, Current Node #: 213, Diagonal Node #: 39, (66) 
-Element #: 116, Current Node #: 71, Diagonal Node #: 205, (67) 
 Element #: 117, Current Node #: 43, Diagonal Node #: 214, (130) 
 Element #: 117, Current Node #: 206, Diagonal Node #: 75, (129) 
+Element #: 117, Current Node #: 47, Diagonal Node #: 213, (123) 
 Element #: 117, Current Node #: 207, Diagonal Node #: 71, (122) 
-Element #: 117, Current Node #: 47, Diagonal Node #: 213, (123) 
 Element #: 117, Current Node #: 71, Diagonal Node #: 207, (81) 
 Element #: 117, Current Node #: 213, Diagonal Node #: 47, (80) 
+Element #: 117, Current Node #: 75, Diagonal Node #: 206, (74) 
 Element #: 117, Current Node #: 214, Diagonal Node #: 43, (73) 
-Element #: 117, Current Node #: 75, Diagonal Node #: 206, (74) 
 Element #: 118, Current Node #: 47, Diagonal Node #: 215, (137) 
 Element #: 118, Current Node #: 207, Diagonal Node #: 79, (136) 
+Element #: 118, Current Node #: 51, Diagonal Node #: 214, (130) 
 Element #: 118, Current Node #: 208, Diagonal Node #: 75, (129) 
-Element #: 118, Current Node #: 51, Diagonal Node #: 214, (130) 
 Element #: 118, Current Node #: 75, Diagonal Node #: 208, (88) 
 Element #: 118, Current Node #: 214, Diagonal Node #: 51, (87) 
+Element #: 118, Current Node #: 79, Diagonal Node #: 207, (81) 
 Element #: 118, Current Node #: 215, Diagonal Node #: 47, (80) 
-Element #: 118, Current Node #: 79, Diagonal Node #: 207, (81) 
 Element #: 119, Current Node #: 51, Diagonal Node #: 216, (144) 
 Element #: 119, Current Node #: 208, Diagonal Node #: 83, (143) 
+Element #: 119, Current Node #: 55, Diagonal Node #: 215, (137) 
 Element #: 119, Current Node #: 209, Diagonal Node #: 79, (136) 
-Element #: 119, Current Node #: 55, Diagonal Node #: 215, (137) 
 Element #: 119, Current Node #: 79, Diagonal Node #: 209, (95) 
 Element #: 119, Current Node #: 215, Diagonal Node #: 55, (94) 
+Element #: 119, Current Node #: 83, Diagonal Node #: 208, (88) 
 Element #: 119, Current Node #: 216, Diagonal Node #: 51, (87) 
-Element #: 119, Current Node #: 83, Diagonal Node #: 208, (88) 
 Element #: 120, Current Node #: 59, Diagonal Node #: 218, (158) 
 Element #: 120, Current Node #: 210, Diagonal Node #: 91, (157) 
+Element #: 120, Current Node #: 63, Diagonal Node #: 217, (151) 
 Element #: 120, Current Node #: 211, Diagonal Node #: 87, (150) 
-Element #: 120, Current Node #: 63, Diagonal Node #: 217, (151) 
 Element #: 120, Current Node #: 87, Diagonal Node #: 211, (109) 
 Element #: 120, Current Node #: 217, Diagonal Node #: 63, (108) 
+Element #: 120, Current Node #: 91, Diagonal Node #: 210, (102) 
 Element #: 120, Current Node #: 218, Diagonal Node #: 59, (101) 
-Element #: 120, Current Node #: 91, Diagonal Node #: 210, (102) 
 Element #: 121, Current Node #: 63, Diagonal Node #: 219, (165) 
 Element #: 121, Current Node #: 211, Diagonal Node #: 95, (164) 
+Element #: 121, Current Node #: 67, Diagonal Node #: 218, (158) 
 Element #: 121, Current Node #: 212, Diagonal Node #: 91, (157) 
-Element #: 121, Current Node #: 67, Diagonal Node #: 218, (158) 
 Element #: 121, Current Node #: 91, Diagonal Node #: 212, (116) 
 Element #: 121, Current Node #: 218, Diagonal Node #: 67, (115) 
+Element #: 121, Current Node #: 95, Diagonal Node #: 211, (109) 
 Element #: 121, Current Node #: 219, Diagonal Node #: 63, (108) 
-Element #: 121, Current Node #: 95, Diagonal Node #: 211, (109) 
 Element #: 122, Current Node #: 67, Diagonal Node #: 220, (172) 
 Element #: 122, Current Node #: 212, Diagonal Node #: 99, (171) 
+Element #: 122, Current Node #: 71, Diagonal Node #: 219, (165) 
 Element #: 122, Current Node #: 213, Diagonal Node #: 95, (164) 
-Element #: 122, Current Node #: 71, Diagonal Node #: 219, (165) 
 Element #: 122, Current Node #: 95, Diagonal Node #: 213, (123) 
 Element #: 122, Current Node #: 219, Diagonal Node #: 71, (122) 
+Element #: 122, Current Node #: 99, Diagonal Node #: 212, (116) 
 Element #: 122, Current Node #: 220, Diagonal Node #: 67, (115) 
-Element #: 122, Current Node #: 99, Diagonal Node #: 212, (116) 
 Element #: 123, Current Node #: 71, Diagonal Node #: 221, (179) 
 Element #: 123, Current Node #: 213, Diagonal Node #: 103, (178) 
+Element #: 123, Current Node #: 75, Diagonal Node #: 220, (172) 
 Element #: 123, Current Node #: 214, Diagonal Node #: 99, (171) 
-Element #: 123, Current Node #: 75, Diagonal Node #: 220, (172) 
 Element #: 123, Current Node #: 99, Diagonal Node #: 214, (130) 
 Element #: 123, Current Node #: 220, Diagonal Node #: 75, (129) 
+Element #: 123, Current Node #: 103, Diagonal Node #: 213, (123) 
 Element #: 123, Current Node #: 221, Diagonal Node #: 71, (122) 
-Element #: 123, Current Node #: 103, Diagonal Node #: 213, (123) 
 Element #: 124, Current Node #: 75, Diagonal Node #: 222, (186) 
 Element #: 124, Current Node #: 214, Diagonal Node #: 107, (185) 
+Element #: 124, Current Node #: 79, Diagonal Node #: 221, (179) 
 Element #: 124, Current Node #: 215, Diagonal Node #: 103, (178) 
-Element #: 124, Current Node #: 79, Diagonal Node #: 221, (179) 
 Element #: 124, Current Node #: 103, Diagonal Node #: 215, (137) 
 Element #: 124, Current Node #: 221, Diagonal Node #: 79, (136) 
+Element #: 124, Current Node #: 107, Diagonal Node #: 214, (130) 
 Element #: 124, Current Node #: 222, Diagonal Node #: 75, (129) 
-Element #: 124, Current Node #: 107, Diagonal Node #: 214, (130) 
 Element #: 125, Current Node #: 79, Diagonal Node #: 223, (193) 
 Element #: 125, Current Node #: 215, Diagonal Node #: 111, (192) 
+Element #: 125, Current Node #: 83, Diagonal Node #: 222, (186) 
 Element #: 125, Current Node #: 216, Diagonal Node #: 107, (185) 
-Element #: 125, Current Node #: 83, Diagonal Node #: 222, (186) 
 Element #: 125, Current Node #: 107, Diagonal Node #: 216, (144) 
 Element #: 125, Current Node #: 222, Diagonal Node #: 83, (143) 
+Element #: 125, Current Node #: 111, Diagonal Node #: 215, (137) 
 Element #: 125, Current Node #: 223, Diagonal Node #: 79, (136) 
-Element #: 125, Current Node #: 111, Diagonal Node #: 215, (137) 
 Element #: 126, Current Node #: 87, Diagonal Node #: 225, (207) 
 Element #: 126, Current Node #: 217, Diagonal Node #: 119, (206) 
+Element #: 126, Current Node #: 91, Diagonal Node #: 224, (200) 
 Element #: 126, Current Node #: 218, Diagonal Node #: 115, (199) 
-Element #: 126, Current Node #: 91, Diagonal Node #: 224, (200) 
 Element #: 126, Current Node #: 115, Diagonal Node #: 218, (158) 
 Element #: 126, Current Node #: 224, Diagonal Node #: 91, (157) 
+Element #: 126, Current Node #: 119, Diagonal Node #: 217, (151) 
 Element #: 126, Current Node #: 225, Diagonal Node #: 87, (150) 
-Element #: 126, Current Node #: 119, Diagonal Node #: 217, (151) 
 Element #: 127, Current Node #: 91, Diagonal Node #: 226, (214) 
 Element #: 127, Current Node #: 218, Diagonal Node #: 123, (213) 
+Element #: 127, Current Node #: 95, Diagonal Node #: 225, (207) 
 Element #: 127, Current Node #: 219, Diagonal Node #: 119, (206) 
-Element #: 127, Current Node #: 95, Diagonal Node #: 225, (207) 
 Element #: 127, Current Node #: 119, Diagonal Node #: 219, (165) 
 Element #: 127, Current Node #: 225, Diagonal Node #: 95, (164) 
+Element #: 127, Current Node #: 123, Diagonal Node #: 218, (158) 
 Element #: 127, Current Node #: 226, Diagonal Node #: 91, (157) 
-Element #: 127, Current Node #: 123, Diagonal Node #: 218, (158) 
 Element #: 128, Current Node #: 95, Diagonal Node #: 227, (221) 
 Element #: 128, Current Node #: 219, Diagonal Node #: 127, (220) 
+Element #: 128, Current Node #: 99, Diagonal Node #: 226, (214) 
 Element #: 128, Current Node #: 220, Diagonal Node #: 123, (213) 
-Element #: 128, Current Node #: 99, Diagonal Node #: 226, (214) 
 Element #: 128, Current Node #: 123, Diagonal Node #: 220, (172) 
 Element #: 128, Current Node #: 226, Diagonal Node #: 99, (171) 
+Element #: 128, Current Node #: 127, Diagonal Node #: 219, (165) 
 Element #: 128, Current Node #: 227, Diagonal Node #: 95, (164) 
-Element #: 128, Current Node #: 127, Diagonal Node #: 219, (165) 
 Element #: 129, Current Node #: 99, Diagonal Node #: 228, (228) 
 Element #: 129, Current Node #: 220, Diagonal Node #: 131, (227) 
+Element #: 129, Current Node #: 103, Diagonal Node #: 227, (221) 
 Element #: 129, Current Node #: 221, Diagonal Node #: 127, (220) 
-Element #: 129, Current Node #: 103, Diagonal Node #: 227, (221) 
 Element #: 129, Current Node #: 127, Diagonal Node #: 221, (179) 
 Element #: 129, Current Node #: 227, Diagonal Node #: 103, (178) 
+Element #: 129, Current Node #: 131, Diagonal Node #: 220, (172) 
 Element #: 129, Current Node #: 228, Diagonal Node #: 99, (171) 
-Element #: 129, Current Node #: 131, Diagonal Node #: 220, (172) 
 Element #: 130, Current Node #: 103, Diagonal Node #: 229, (235) 
 Element #: 130, Current Node #: 221, Diagonal Node #: 135, (234) 
+Element #: 130, Current Node #: 107, Diagonal Node #: 228, (228) 
 Element #: 130, Current Node #: 222, Diagonal Node #: 131, (227) 
-Element #: 130, Current Node #: 107, Diagonal Node #: 228, (228) 
 Element #: 130, Current Node #: 131, Diagonal Node #: 222, (186) 
 Element #: 130, Current Node #: 228, Diagonal Node #: 107, (185) 
+Element #: 130, Current Node #: 135, Diagonal Node #: 221, (179) 
 Element #: 130, Current Node #: 229, Diagonal Node #: 103, (178) 
-Element #: 130, Current Node #: 135, Diagonal Node #: 221, (179) 
 Element #: 131, Current Node #: 107, Diagonal Node #: 230, (242) 
 Element #: 131, Current Node #: 222, Diagonal Node #: 139, (241) 
+Element #: 131, Current Node #: 111, Diagonal Node #: 229, (235) 
 Element #: 131, Current Node #: 223, Diagonal Node #: 135, (234) 
-Element #: 131, Current Node #: 111, Diagonal Node #: 229, (235) 
 Element #: 131, Current Node #: 135, Diagonal Node #: 223, (193) 
 Element #: 131, Current Node #: 229, Diagonal Node #: 111, (192) 
+Element #: 131, Current Node #: 139, Diagonal Node #: 222, (186) 
 Element #: 131, Current Node #: 230, Diagonal Node #: 107, (185) 
-Element #: 131, Current Node #: 139, Diagonal Node #: 222, (186) 
 Element #: 132, Current Node #: 115, Diagonal Node #: 232, (256) 
 Element #: 132, Current Node #: 224, Diagonal Node #: 147, (255) 
+Element #: 132, Current Node #: 119, Diagonal Node #: 231, (249) 
 Element #: 132, Current Node #: 225, Diagonal Node #: 143, (248) 
-Element #: 132, Current Node #: 119, Diagonal Node #: 231, (249) 
 Element #: 132, Current Node #: 143, Diagonal Node #: 225, (207) 
 Element #: 132, Current Node #: 231, Diagonal Node #: 119, (206) 
+Element #: 132, Current Node #: 147, Diagonal Node #: 224, (200) 
 Element #: 132, Current Node #: 232, Diagonal Node #: 115, (199) 
-Element #: 132, Current Node #: 147, Diagonal Node #: 224, (200) 
 Element #: 133, Current Node #: 119, Diagonal Node #: 233, (263) 
 Element #: 133, Current Node #: 225, Diagonal Node #: 151, (262) 
+Element #: 133, Current Node #: 123, Diagonal Node #: 232, (256) 
 Element #: 133, Current Node #: 226, Diagonal Node #: 147, (255) 
-Element #: 133, Current Node #: 123, Diagonal Node #: 232, (256) 
 Element #: 133, Current Node #: 147, Diagonal Node #: 226, (214) 
 Element #: 133, Current Node #: 232, Diagonal Node #: 123, (213) 
+Element #: 133, Current Node #: 151, Diagonal Node #: 225, (207) 
 Element #: 133, Current Node #: 233, Diagonal Node #: 119, (206) 
-Element #: 133, Current Node #: 151, Diagonal Node #: 225, (207) 
 Element #: 134, Current Node #: 123, Diagonal Node #: 234, (270) 
 Element #: 134, Current Node #: 226, Diagonal Node #: 155, (269) 
+Element #: 134, Current Node #: 127, Diagonal Node #: 233, (263) 
 Element #: 134, Current Node #: 227, Diagonal Node #: 151, (262) 
-Element #: 134, Current Node #: 127, Diagonal Node #: 233, (263) 
 Element #: 134, Current Node #: 151, Diagonal Node #: 227, (221) 
 Element #: 134, Current Node #: 233, Diagonal Node #: 127, (220) 
+Element #: 134, Current Node #: 155, Diagonal Node #: 226, (214) 
 Element #: 134, Current Node #: 234, Diagonal Node #: 123, (213) 
-Element #: 134, Current Node #: 155, Diagonal Node #: 226, (214) 
 Element #: 135, Current Node #: 127, Diagonal Node #: 235, (277) 
 Element #: 135, Current Node #: 227, Diagonal Node #: 159, (276) 
+Element #: 135, Current Node #: 131, Diagonal Node #: 234, (270) 
 Element #: 135, Current Node #: 228, Diagonal Node #: 155, (269) 
-Element #: 135, Current Node #: 131, Diagonal Node #: 234, (270) 
 Element #: 135, Current Node #: 155, Diagonal Node #: 228, (228) 
 Element #: 135, Current Node #: 234, Diagonal Node #: 131, (227) 
+Element #: 135, Current Node #: 159, Diagonal Node #: 227, (221) 
 Element #: 135, Current Node #: 235, Diagonal Node #: 127, (220) 
-Element #: 135, Current Node #: 159, Diagonal Node #: 227, (221) 
 Element #: 136, Current Node #: 131, Diagonal Node #: 236, (284) 
 Element #: 136, Current Node #: 228, Diagonal Node #: 163, (283) 
+Element #: 136, Current Node #: 135, Diagonal Node #: 235, (277) 
 Element #: 136, Current Node #: 229, Diagonal Node #: 159, (276) 
-Element #: 136, Current Node #: 135, Diagonal Node #: 235, (277) 
 Element #: 136, Current Node #: 159, Diagonal Node #: 229, (235) 
 Element #: 136, Current Node #: 235, Diagonal Node #: 135, (234) 
+Element #: 136, Current Node #: 163, Diagonal Node #: 228, (228) 
 Element #: 136, Current Node #: 236, Diagonal Node #: 131, (227) 
-Element #: 136, Current Node #: 163, Diagonal Node #: 228, (228) 
 Element #: 137, Current Node #: 135, Diagonal Node #: 237, (291) 
 Element #: 137, Current Node #: 229, Diagonal Node #: 167, (290) 
+Element #: 137, Current Node #: 139, Diagonal Node #: 236, (284) 
 Element #: 137, Current Node #: 230, Diagonal Node #: 163, (283) 
-Element #: 137, Current Node #: 139, Diagonal Node #: 236, (284) 
 Element #: 137, Current Node #: 163, Diagonal Node #: 230, (242) 
 Element #: 137, Current Node #: 236, Diagonal Node #: 139, (241) 
+Element #: 137, Current Node #: 167, Diagonal Node #: 229, (235) 
 Element #: 137, Current Node #: 237, Diagonal Node #: 135, (234) 
-Element #: 137, Current Node #: 167, Diagonal Node #: 229, (235) 
 Element #: 138, Current Node #: 143, Diagonal Node #: 239, (305) 
 Element #: 138, Current Node #: 231, Diagonal Node #: 175, (304) 
+Element #: 138, Current Node #: 147, Diagonal Node #: 238, (298) 
 Element #: 138, Current Node #: 232, Diagonal Node #: 171, (297) 
-Element #: 138, Current Node #: 147, Diagonal Node #: 238, (298) 
 Element #: 138, Current Node #: 171, Diagonal Node #: 232, (256) 
 Element #: 138, Current Node #: 238, Diagonal Node #: 147, (255) 
+Element #: 138, Current Node #: 175, Diagonal Node #: 231, (249) 
 Element #: 138, Current Node #: 239, Diagonal Node #: 143, (248) 
-Element #: 138, Current Node #: 175, Diagonal Node #: 231, (249) 
 Element #: 139, Current Node #: 147, Diagonal Node #: 240, (312) 
 Element #: 139, Current Node #: 232, Diagonal Node #: 179, (311) 
+Element #: 139, Current Node #: 151, Diagonal Node #: 239, (305) 
 Element #: 139, Current Node #: 233, Diagonal Node #: 175, (304) 
-Element #: 139, Current Node #: 151, Diagonal Node #: 239, (305) 
 Element #: 139, Current Node #: 175, Diagonal Node #: 233, (263) 
 Element #: 139, Current Node #: 239, Diagonal Node #: 151, (262) 
+Element #: 139, Current Node #: 179, Diagonal Node #: 232, (256) 
 Element #: 139, Current Node #: 240, Diagonal Node #: 147, (255) 
-Element #: 139, Current Node #: 179, Diagonal Node #: 232, (256) 
 Element #: 140, Current Node #: 151, Diagonal Node #: 241, (319) 
 Element #: 140, Current Node #: 233, Diagonal Node #: 183, (318) 
+Element #: 140, Current Node #: 155, Diagonal Node #: 240, (312) 
 Element #: 140, Current Node #: 234, Diagonal Node #: 179, (311) 
-Element #: 140, Current Node #: 155, Diagonal Node #: 240, (312) 
 Element #: 140, Current Node #: 179, Diagonal Node #: 234, (270) 
 Element #: 140, Current Node #: 240, Diagonal Node #: 155, (269) 
+Element #: 140, Current Node #: 183, Diagonal Node #: 233, (263) 
 Element #: 140, Current Node #: 241, Diagonal Node #: 151, (262) 
-Element #: 140, Current Node #: 183, Diagonal Node #: 233, (263) 
 Element #: 141, Current Node #: 155, Diagonal Node #: 242, (326) 
 Element #: 141, Current Node #: 234, Diagonal Node #: 187, (325) 
+Element #: 141, Current Node #: 159, Diagonal Node #: 241, (319) 
 Element #: 141, Current Node #: 235, Diagonal Node #: 183, (318) 
-Element #: 141, Current Node #: 159, Diagonal Node #: 241, (319) 
 Element #: 141, Current Node #: 183, Diagonal Node #: 235, (277) 
 Element #: 141, Current Node #: 241, Diagonal Node #: 159, (276) 
+Element #: 141, Current Node #: 187, Diagonal Node #: 234, (270) 
 Element #: 141, Current Node #: 242, Diagonal Node #: 155, (269) 
-Element #: 141, Current Node #: 187, Diagonal Node #: 234, (270) 
 Element #: 142, Current Node #: 159, Diagonal Node #: 243, (333) 
 Element #: 142, Current Node #: 235, Diagonal Node #: 191, (332) 
+Element #: 142, Current Node #: 163, Diagonal Node #: 242, (326) 
 Element #: 142, Current Node #: 236, Diagonal Node #: 187, (325) 
-Element #: 142, Current Node #: 163, Diagonal Node #: 242, (326) 
 Element #: 142, Current Node #: 187, Diagonal Node #: 236, (284) 
 Element #: 142, Current Node #: 242, Diagonal Node #: 163, (283) 
+Element #: 142, Current Node #: 191, Diagonal Node #: 235, (277) 
 Element #: 142, Current Node #: 243, Diagonal Node #: 159, (276) 
-Element #: 142, Current Node #: 191, Diagonal Node #: 235, (277) 
 Element #: 143, Current Node #: 163, Diagonal Node #: 244, (340) 
 Element #: 143, Current Node #: 236, Diagonal Node #: 195, (339) 
+Element #: 143, Current Node #: 167, Diagonal Node #: 243, (333) 
 Element #: 143, Current Node #: 237, Diagonal Node #: 191, (332) 
-Element #: 143, Current Node #: 167, Diagonal Node #: 243, (333) 
 Element #: 143, Current Node #: 191, Diagonal Node #: 237, (291) 
 Element #: 143, Current Node #: 243, Diagonal Node #: 167, (290) 
+Element #: 143, Current Node #: 195, Diagonal Node #: 236, (284) 
 Element #: 143, Current Node #: 244, Diagonal Node #: 163, (283) 
-Element #: 143, Current Node #: 195, Diagonal Node #: 236, (284) 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,1153 +1,1153 @@
-StGermain Framework revision 0. Copyright (C) 2003-2005 VPAC.
-Element #: 0, Current Node #: 0, Diagonal Node #: 33, (60) 
-Element #: 0, Current Node #: 1, Diagonal Node #: 32, (59) 
-Element #: 0, Current Node #: 5, Diagonal Node #: 28, (52) 
-Element #: 0, Current Node #: 4, Diagonal Node #: 29, (53) 
-Element #: 0, Current Node #: 28, Diagonal Node #: 5, (11) 
-Element #: 0, Current Node #: 29, Diagonal Node #: 4, (10) 
-Element #: 0, Current Node #: 33, Diagonal Node #: 0, (3) 
-Element #: 0, Current Node #: 32, Diagonal Node #: 1, (4) 
-Element #: 1, Current Node #: 1, Diagonal Node #: 34, (61) 
-Element #: 1, Current Node #: 2, Diagonal Node #: 33, (60) 
-Element #: 1, Current Node #: 6, Diagonal Node #: 29, (53) 
-Element #: 1, Current Node #: 5, Diagonal Node #: 30, (54) 
-Element #: 1, Current Node #: 29, Diagonal Node #: 6, (12) 
-Element #: 1, Current Node #: 30, Diagonal Node #: 5, (11) 
-Element #: 1, Current Node #: 34, Diagonal Node #: 1, (4) 
-Element #: 1, Current Node #: 33, Diagonal Node #: 2, (5) 
-Element #: 2, Current Node #: 2, Diagonal Node #: 35, (62) 
-Element #: 2, Current Node #: 3, Diagonal Node #: 34, (61) 
-Element #: 2, Current Node #: 7, Diagonal Node #: 30, (54) 
-Element #: 2, Current Node #: 6, Diagonal Node #: 31, (55) 
-Element #: 2, Current Node #: 30, Diagonal Node #: 7, (13) 
-Element #: 2, Current Node #: 31, Diagonal Node #: 6, (12) 
-Element #: 2, Current Node #: 35, Diagonal Node #: 2, (5) 
-Element #: 2, Current Node #: 34, Diagonal Node #: 3, (6) 
-Element #: 3, Current Node #: 4, Diagonal Node #: 37, (67) 
-Element #: 3, Current Node #: 5, Diagonal Node #: 36, (66) 
-Element #: 3, Current Node #: 9, Diagonal Node #: 32, (59) 
-Element #: 3, Current Node #: 8, Diagonal Node #: 33, (60) 
-Element #: 3, Current Node #: 32, Diagonal Node #: 9, (18) 
-Element #: 3, Current Node #: 33, Diagonal Node #: 8, (17) 
-Element #: 3, Current Node #: 37, Diagonal Node #: 4, (10) 
-Element #: 3, Current Node #: 36, Diagonal Node #: 5, (11) 
-Element #: 4, Current Node #: 5, Diagonal Node #: 38, (68) 
-Element #: 4, Current Node #: 6, Diagonal Node #: 37, (67) 
-Element #: 4, Current Node #: 10, Diagonal Node #: 33, (60) 
-Element #: 4, Current Node #: 9, Diagonal Node #: 34, (61) 
-Element #: 4, Current Node #: 33, Diagonal Node #: 10, (19) 
-Element #: 4, Current Node #: 34, Diagonal Node #: 9, (18) 
-Element #: 4, Current Node #: 38, Diagonal Node #: 5, (11) 
-Element #: 4, Current Node #: 37, Diagonal Node #: 6, (12) 
-Element #: 5, Current Node #: 6, Diagonal Node #: 39, (69) 
-Element #: 5, Current Node #: 7, Diagonal Node #: 38, (68) 
-Element #: 5, Current Node #: 11, Diagonal Node #: 34, (61) 
-Element #: 5, Current Node #: 10, Diagonal Node #: 35, (62) 
-Element #: 5, Current Node #: 34, Diagonal Node #: 11, (20) 
-Element #: 5, Current Node #: 35, Diagonal Node #: 10, (19) 
-Element #: 5, Current Node #: 39, Diagonal Node #: 6, (12) 
-Element #: 5, Current Node #: 38, Diagonal Node #: 7, (13) 
-Element #: 6, Current Node #: 8, Diagonal Node #: 41, (74) 
-Element #: 6, Current Node #: 9, Diagonal Node #: 40, (73) 
-Element #: 6, Current Node #: 13, Diagonal Node #: 36, (66) 
-Element #: 6, Current Node #: 12, Diagonal Node #: 37, (67) 
-Element #: 6, Current Node #: 36, Diagonal Node #: 13, (25) 
-Element #: 6, Current Node #: 37, Diagonal Node #: 12, (24) 
-Element #: 6, Current Node #: 41, Diagonal Node #: 8, (17) 
-Element #: 6, Current Node #: 40, Diagonal Node #: 9, (18) 
-Element #: 7, Current Node #: 9, Diagonal Node #: 42, (75) 
-Element #: 7, Current Node #: 10, Diagonal Node #: 41, (74) 
-Element #: 7, Current Node #: 14, Diagonal Node #: 37, (67) 
-Element #: 7, Current Node #: 13, Diagonal Node #: 38, (68) 
-Element #: 7, Current Node #: 37, Diagonal Node #: 14, (26) 
-Element #: 7, Current Node #: 38, Diagonal Node #: 13, (25) 
-Element #: 7, Current Node #: 42, Diagonal Node #: 9, (18) 
-Element #: 7, Current Node #: 41, Diagonal Node #: 10, (19) 
-Element #: 8, Current Node #: 10, Diagonal Node #: 43, (76) 
-Element #: 8, Current Node #: 11, Diagonal Node #: 42, (75) 
-Element #: 8, Current Node #: 15, Diagonal Node #: 38, (68) 
-Element #: 8, Current Node #: 14, Diagonal Node #: 39, (69) 
-Element #: 8, Current Node #: 38, Diagonal Node #: 15, (27) 
-Element #: 8, Current Node #: 39, Diagonal Node #: 14, (26) 
-Element #: 8, Current Node #: 43, Diagonal Node #: 10, (19) 
-Element #: 8, Current Node #: 42, Diagonal Node #: 11, (20) 
-Element #: 9, Current Node #: 12, Diagonal Node #: 45, (81) 
-Element #: 9, Current Node #: 13, Diagonal Node #: 44, (80) 
-Element #: 9, Current Node #: 17, Diagonal Node #: 40, (73) 
-Element #: 9, Current Node #: 16, Diagonal Node #: 41, (74) 
-Element #: 9, Current Node #: 40, Diagonal Node #: 17, (32) 
-Element #: 9, Current Node #: 41, Diagonal Node #: 16, (31) 
-Element #: 9, Current Node #: 45, Diagonal Node #: 12, (24) 
-Element #: 9, Current Node #: 44, Diagonal Node #: 13, (25) 
-Element #: 10, Current Node #: 13, Diagonal Node #: 46, (82) 
-Element #: 10, Current Node #: 14, Diagonal Node #: 45, (81) 
-Element #: 10, Current Node #: 18, Diagonal Node #: 41, (74) 
-Element #: 10, Current Node #: 17, Diagonal Node #: 42, (75) 
-Element #: 10, Current Node #: 41, Diagonal Node #: 18, (33) 
-Element #: 10, Current Node #: 42, Diagonal Node #: 17, (32) 
-Element #: 10, Current Node #: 46, Diagonal Node #: 13, (25) 
-Element #: 10, Current Node #: 45, Diagonal Node #: 14, (26) 
-Element #: 11, Current Node #: 14, Diagonal Node #: 47, (83) 
-Element #: 11, Current Node #: 15, Diagonal Node #: 46, (82) 
-Element #: 11, Current Node #: 19, Diagonal Node #: 42, (75) 
-Element #: 11, Current Node #: 18, Diagonal Node #: 43, (76) 
-Element #: 11, Current Node #: 42, Diagonal Node #: 19, (34) 
-Element #: 11, Current Node #: 43, Diagonal Node #: 18, (33) 
-Element #: 11, Current Node #: 47, Diagonal Node #: 14, (26) 
-Element #: 11, Current Node #: 46, Diagonal Node #: 15, (27) 
-Element #: 12, Current Node #: 16, Diagonal Node #: 49, (88) 
-Element #: 12, Current Node #: 17, Diagonal Node #: 48, (87) 
-Element #: 12, Current Node #: 21, Diagonal Node #: 44, (80) 
-Element #: 12, Current Node #: 20, Diagonal Node #: 45, (81) 
-Element #: 12, Current Node #: 44, Diagonal Node #: 21, (39) 
-Element #: 12, Current Node #: 45, Diagonal Node #: 20, (38) 
-Element #: 12, Current Node #: 49, Diagonal Node #: 16, (31) 
-Element #: 12, Current Node #: 48, Diagonal Node #: 17, (32) 
-Element #: 13, Current Node #: 17, Diagonal Node #: 50, (89) 
-Element #: 13, Current Node #: 18, Diagonal Node #: 49, (88) 
-Element #: 13, Current Node #: 22, Diagonal Node #: 45, (81) 
-Element #: 13, Current Node #: 21, Diagonal Node #: 46, (82) 
-Element #: 13, Current Node #: 45, Diagonal Node #: 22, (40) 
-Element #: 13, Current Node #: 46, Diagonal Node #: 21, (39) 
-Element #: 13, Current Node #: 50, Diagonal Node #: 17, (32) 
-Element #: 13, Current Node #: 49, Diagonal Node #: 18, (33) 
-Element #: 14, Current Node #: 18, Diagonal Node #: 51, (90) 
-Element #: 14, Current Node #: 19, Diagonal Node #: 50, (89) 
-Element #: 14, Current Node #: 23, Diagonal Node #: 46, (82) 
-Element #: 14, Current Node #: 22, Diagonal Node #: 47, (83) 
-Element #: 14, Current Node #: 46, Diagonal Node #: 23, (41) 
-Element #: 14, Current Node #: 47, Diagonal Node #: 22, (40) 
-Element #: 14, Current Node #: 51, Diagonal Node #: 18, (33) 
-Element #: 14, Current Node #: 50, Diagonal Node #: 19, (34) 
-Element #: 15, Current Node #: 20, Diagonal Node #: 53, (95) 
-Element #: 15, Current Node #: 21, Diagonal Node #: 52, (94) 
-Element #: 15, Current Node #: 25, Diagonal Node #: 48, (87) 
-Element #: 15, Current Node #: 24, Diagonal Node #: 49, (88) 
-Element #: 15, Current Node #: 48, Diagonal Node #: 25, (46) 
-Element #: 15, Current Node #: 49, Diagonal Node #: 24, (45) 
-Element #: 15, Current Node #: 53, Diagonal Node #: 20, (38) 
-Element #: 15, Current Node #: 52, Diagonal Node #: 21, (39) 
-Element #: 16, Current Node #: 21, Diagonal Node #: 54, (96) 
-Element #: 16, Current Node #: 22, Diagonal Node #: 53, (95) 
-Element #: 16, Current Node #: 26, Diagonal Node #: 49, (88) 
-Element #: 16, Current Node #: 25, Diagonal Node #: 50, (89) 
-Element #: 16, Current Node #: 49, Diagonal Node #: 26, (47) 
-Element #: 16, Current Node #: 50, Diagonal Node #: 25, (46) 
-Element #: 16, Current Node #: 54, Diagonal Node #: 21, (39) 
-Element #: 16, Current Node #: 53, Diagonal Node #: 22, (40) 
-Element #: 17, Current Node #: 22, Diagonal Node #: 55, (97) 
-Element #: 17, Current Node #: 23, Diagonal Node #: 54, (96) 
-Element #: 17, Current Node #: 27, Diagonal Node #: 50, (89) 
-Element #: 17, Current Node #: 26, Diagonal Node #: 51, (90) 
-Element #: 17, Current Node #: 50, Diagonal Node #: 27, (48) 
-Element #: 17, Current Node #: 51, Diagonal Node #: 26, (47) 
-Element #: 17, Current Node #: 55, Diagonal Node #: 22, (40) 
-Element #: 17, Current Node #: 54, Diagonal Node #: 23, (41) 
-Element #: 18, Current Node #: 28, Diagonal Node #: 61, (109) 
-Element #: 18, Current Node #: 29, Diagonal Node #: 60, (108) 
-Element #: 18, Current Node #: 33, Diagonal Node #: 56, (101) 
-Element #: 18, Current Node #: 32, Diagonal Node #: 57, (102) 
-Element #: 18, Current Node #: 56, Diagonal Node #: 33, (60) 
-Element #: 18, Current Node #: 57, Diagonal Node #: 32, (59) 
-Element #: 18, Current Node #: 61, Diagonal Node #: 28, (52) 
-Element #: 18, Current Node #: 60, Diagonal Node #: 29, (53) 
-Element #: 19, Current Node #: 29, Diagonal Node #: 62, (110) 
-Element #: 19, Current Node #: 30, Diagonal Node #: 61, (109) 
-Element #: 19, Current Node #: 34, Diagonal Node #: 57, (102) 
-Element #: 19, Current Node #: 33, Diagonal Node #: 58, (103) 
-Element #: 19, Current Node #: 57, Diagonal Node #: 34, (61) 
-Element #: 19, Current Node #: 58, Diagonal Node #: 33, (60) 
-Element #: 19, Current Node #: 62, Diagonal Node #: 29, (53) 
-Element #: 19, Current Node #: 61, Diagonal Node #: 30, (54) 
-Element #: 20, Current Node #: 30, Diagonal Node #: 63, (111) 
-Element #: 20, Current Node #: 31, Diagonal Node #: 62, (110) 
-Element #: 20, Current Node #: 35, Diagonal Node #: 58, (103) 
-Element #: 20, Current Node #: 34, Diagonal Node #: 59, (104) 
-Element #: 20, Current Node #: 58, Diagonal Node #: 35, (62) 
-Element #: 20, Current Node #: 59, Diagonal Node #: 34, (61) 
-Element #: 20, Current Node #: 63, Diagonal Node #: 30, (54) 
-Element #: 20, Current Node #: 62, Diagonal Node #: 31, (55) 
-Element #: 21, Current Node #: 32, Diagonal Node #: 65, (116) 
-Element #: 21, Current Node #: 33, Diagonal Node #: 64, (115) 
-Element #: 21, Current Node #: 37, Diagonal Node #: 60, (108) 
-Element #: 21, Current Node #: 36, Diagonal Node #: 61, (109) 
-Element #: 21, Current Node #: 60, Diagonal Node #: 37, (67) 
-Element #: 21, Current Node #: 61, Diagonal Node #: 36, (66) 
-Element #: 21, Current Node #: 65, Diagonal Node #: 32, (59) 
-Element #: 21, Current Node #: 64, Diagonal Node #: 33, (60) 
-Element #: 22, Current Node #: 33, Diagonal Node #: 66, (117) 
-Element #: 22, Current Node #: 34, Diagonal Node #: 65, (116) 
-Element #: 22, Current Node #: 38, Diagonal Node #: 61, (109) 
-Element #: 22, Current Node #: 37, Diagonal Node #: 62, (110) 
-Element #: 22, Current Node #: 61, Diagonal Node #: 38, (68) 
-Element #: 22, Current Node #: 62, Diagonal Node #: 37, (67) 
-Element #: 22, Current Node #: 66, Diagonal Node #: 33, (60) 
-Element #: 22, Current Node #: 65, Diagonal Node #: 34, (61) 
-Element #: 23, Current Node #: 34, Diagonal Node #: 67, (118) 
-Element #: 23, Current Node #: 35, Diagonal Node #: 66, (117) 
-Element #: 23, Current Node #: 39, Diagonal Node #: 62, (110) 
-Element #: 23, Current Node #: 38, Diagonal Node #: 63, (111) 
-Element #: 23, Current Node #: 62, Diagonal Node #: 39, (69) 
-Element #: 23, Current Node #: 63, Diagonal Node #: 38, (68) 
-Element #: 23, Current Node #: 67, Diagonal Node #: 34, (61) 
-Element #: 23, Current Node #: 66, Diagonal Node #: 35, (62) 
-Element #: 24, Current Node #: 36, Diagonal Node #: 69, (123) 
-Element #: 24, Current Node #: 37, Diagonal Node #: 68, (122) 
-Element #: 24, Current Node #: 41, Diagonal Node #: 64, (115) 
-Element #: 24, Current Node #: 40, Diagonal Node #: 65, (116) 
-Element #: 24, Current Node #: 64, Diagonal Node #: 41, (74) 
-Element #: 24, Current Node #: 65, Diagonal Node #: 40, (73) 
-Element #: 24, Current Node #: 69, Diagonal Node #: 36, (66) 
-Element #: 24, Current Node #: 68, Diagonal Node #: 37, (67) 
-Element #: 25, Current Node #: 37, Diagonal Node #: 70, (124) 
-Element #: 25, Current Node #: 38, Diagonal Node #: 69, (123) 
-Element #: 25, Current Node #: 42, Diagonal Node #: 65, (116) 
-Element #: 25, Current Node #: 41, Diagonal Node #: 66, (117) 
-Element #: 25, Current Node #: 65, Diagonal Node #: 42, (75) 
-Element #: 25, Current Node #: 66, Diagonal Node #: 41, (74) 
-Element #: 25, Current Node #: 70, Diagonal Node #: 37, (67) 
-Element #: 25, Current Node #: 69, Diagonal Node #: 38, (68) 
-Element #: 26, Current Node #: 38, Diagonal Node #: 71, (125) 
-Element #: 26, Current Node #: 39, Diagonal Node #: 70, (124) 
-Element #: 26, Current Node #: 43, Diagonal Node #: 66, (117) 
-Element #: 26, Current Node #: 42, Diagonal Node #: 67, (118) 
-Element #: 26, Current Node #: 66, Diagonal Node #: 43, (76) 
-Element #: 26, Current Node #: 67, Diagonal Node #: 42, (75) 
-Element #: 26, Current Node #: 71, Diagonal Node #: 38, (68) 
-Element #: 26, Current Node #: 70, Diagonal Node #: 39, (69) 
-Element #: 27, Current Node #: 40, Diagonal Node #: 73, (130) 
-Element #: 27, Current Node #: 41, Diagonal Node #: 72, (129) 
-Element #: 27, Current Node #: 45, Diagonal Node #: 68, (122) 
-Element #: 27, Current Node #: 44, Diagonal Node #: 69, (123) 
-Element #: 27, Current Node #: 68, Diagonal Node #: 45, (81) 
-Element #: 27, Current Node #: 69, Diagonal Node #: 44, (80) 
-Element #: 27, Current Node #: 73, Diagonal Node #: 40, (73) 
-Element #: 27, Current Node #: 72, Diagonal Node #: 41, (74) 
-Element #: 28, Current Node #: 41, Diagonal Node #: 74, (131) 
-Element #: 28, Current Node #: 42, Diagonal Node #: 73, (130) 
-Element #: 28, Current Node #: 46, Diagonal Node #: 69, (123) 
-Element #: 28, Current Node #: 45, Diagonal Node #: 70, (124) 
-Element #: 28, Current Node #: 69, Diagonal Node #: 46, (82) 
-Element #: 28, Current Node #: 70, Diagonal Node #: 45, (81) 
-Element #: 28, Current Node #: 74, Diagonal Node #: 41, (74) 
-Element #: 28, Current Node #: 73, Diagonal Node #: 42, (75) 
-Element #: 29, Current Node #: 42, Diagonal Node #: 75, (132) 
-Element #: 29, Current Node #: 43, Diagonal Node #: 74, (131) 
-Element #: 29, Current Node #: 47, Diagonal Node #: 70, (124) 
-Element #: 29, Current Node #: 46, Diagonal Node #: 71, (125) 
-Element #: 29, Current Node #: 70, Diagonal Node #: 47, (83) 
-Element #: 29, Current Node #: 71, Diagonal Node #: 46, (82) 
-Element #: 29, Current Node #: 75, Diagonal Node #: 42, (75) 
-Element #: 29, Current Node #: 74, Diagonal Node #: 43, (76) 
-Element #: 30, Current Node #: 44, Diagonal Node #: 77, (137) 
-Element #: 30, Current Node #: 45, Diagonal Node #: 76, (136) 
-Element #: 30, Current Node #: 49, Diagonal Node #: 72, (129) 
-Element #: 30, Current Node #: 48, Diagonal Node #: 73, (130) 
-Element #: 30, Current Node #: 72, Diagonal Node #: 49, (88) 
-Element #: 30, Current Node #: 73, Diagonal Node #: 48, (87) 
-Element #: 30, Current Node #: 77, Diagonal Node #: 44, (80) 
-Element #: 30, Current Node #: 76, Diagonal Node #: 45, (81) 
-Element #: 31, Current Node #: 45, Diagonal Node #: 78, (138) 
-Element #: 31, Current Node #: 46, Diagonal Node #: 77, (137) 
-Element #: 31, Current Node #: 50, Diagonal Node #: 73, (130) 
-Element #: 31, Current Node #: 49, Diagonal Node #: 74, (131) 
-Element #: 31, Current Node #: 73, Diagonal Node #: 50, (89) 
-Element #: 31, Current Node #: 74, Diagonal Node #: 49, (88) 
-Element #: 31, Current Node #: 78, Diagonal Node #: 45, (81) 
-Element #: 31, Current Node #: 77, Diagonal Node #: 46, (82) 
-Element #: 32, Current Node #: 46, Diagonal Node #: 79, (139) 
-Element #: 32, Current Node #: 47, Diagonal Node #: 78, (138) 
-Element #: 32, Current Node #: 51, Diagonal Node #: 74, (131) 
-Element #: 32, Current Node #: 50, Diagonal Node #: 75, (132) 
-Element #: 32, Current Node #: 74, Diagonal Node #: 51, (90) 
-Element #: 32, Current Node #: 75, Diagonal Node #: 50, (89) 
-Element #: 32, Current Node #: 79, Diagonal Node #: 46, (82) 
-Element #: 32, Current Node #: 78, Diagonal Node #: 47, (83) 
-Element #: 33, Current Node #: 48, Diagonal Node #: 81, (144) 
-Element #: 33, Current Node #: 49, Diagonal Node #: 80, (143) 
-Element #: 33, Current Node #: 53, Diagonal Node #: 76, (136) 
-Element #: 33, Current Node #: 52, Diagonal Node #: 77, (137) 
-Element #: 33, Current Node #: 76, Diagonal Node #: 53, (95) 
-Element #: 33, Current Node #: 77, Diagonal Node #: 52, (94) 
-Element #: 33, Current Node #: 81, Diagonal Node #: 48, (87) 
-Element #: 33, Current Node #: 80, Diagonal Node #: 49, (88) 
-Element #: 34, Current Node #: 49, Diagonal Node #: 82, (145) 
-Element #: 34, Current Node #: 50, Diagonal Node #: 81, (144) 
-Element #: 34, Current Node #: 54, Diagonal Node #: 77, (137) 
-Element #: 34, Current Node #: 53, Diagonal Node #: 78, (138) 
-Element #: 34, Current Node #: 77, Diagonal Node #: 54, (96) 
-Element #: 34, Current Node #: 78, Diagonal Node #: 53, (95) 
-Element #: 34, Current Node #: 82, Diagonal Node #: 49, (88) 
-Element #: 34, Current Node #: 81, Diagonal Node #: 50, (89) 
-Element #: 35, Current Node #: 50, Diagonal Node #: 83, (146) 
-Element #: 35, Current Node #: 51, Diagonal Node #: 82, (145) 
-Element #: 35, Current Node #: 55, Diagonal Node #: 78, (138) 
-Element #: 35, Current Node #: 54, Diagonal Node #: 79, (139) 
-Element #: 35, Current Node #: 78, Diagonal Node #: 55, (97) 
-Element #: 35, Current Node #: 79, Diagonal Node #: 54, (96) 
-Element #: 35, Current Node #: 83, Diagonal Node #: 50, (89) 
-Element #: 35, Current Node #: 82, Diagonal Node #: 51, (90) 
-Element #: 36, Current Node #: 56, Diagonal Node #: 89, (158) 
-Element #: 36, Current Node #: 57, Diagonal Node #: 88, (157) 
-Element #: 36, Current Node #: 61, Diagonal Node #: 84, (150) 
-Element #: 36, Current Node #: 60, Diagonal Node #: 85, (151) 
-Element #: 36, Current Node #: 84, Diagonal Node #: 61, (109) 
-Element #: 36, Current Node #: 85, Diagonal Node #: 60, (108) 
-Element #: 36, Current Node #: 89, Diagonal Node #: 56, (101) 
-Element #: 36, Current Node #: 88, Diagonal Node #: 57, (102) 
-Element #: 37, Current Node #: 57, Diagonal Node #: 90, (159) 
-Element #: 37, Current Node #: 58, Diagonal Node #: 89, (158) 
-Element #: 37, Current Node #: 62, Diagonal Node #: 85, (151) 
-Element #: 37, Current Node #: 61, Diagonal Node #: 86, (152) 
-Element #: 37, Current Node #: 85, Diagonal Node #: 62, (110) 
-Element #: 37, Current Node #: 86, Diagonal Node #: 61, (109) 
-Element #: 37, Current Node #: 90, Diagonal Node #: 57, (102) 
-Element #: 37, Current Node #: 89, Diagonal Node #: 58, (103) 
-Element #: 38, Current Node #: 58, Diagonal Node #: 91, (160) 
-Element #: 38, Current Node #: 59, Diagonal Node #: 90, (159) 
-Element #: 38, Current Node #: 63, Diagonal Node #: 86, (152) 
-Element #: 38, Current Node #: 62, Diagonal Node #: 87, (153) 
-Element #: 38, Current Node #: 86, Diagonal Node #: 63, (111) 
-Element #: 38, Current Node #: 87, Diagonal Node #: 62, (110) 
-Element #: 38, Current Node #: 91, Diagonal Node #: 58, (103) 
-Element #: 38, Current Node #: 90, Diagonal Node #: 59, (104) 
-Element #: 39, Current Node #: 60, Diagonal Node #: 93, (165) 
-Element #: 39, Current Node #: 61, Diagonal Node #: 92, (164) 
-Element #: 39, Current Node #: 65, Diagonal Node #: 88, (157) 
-Element #: 39, Current Node #: 64, Diagonal Node #: 89, (158) 
-Element #: 39, Current Node #: 88, Diagonal Node #: 65, (116) 
-Element #: 39, Current Node #: 89, Diagonal Node #: 64, (115) 
-Element #: 39, Current Node #: 93, Diagonal Node #: 60, (108) 
-Element #: 39, Current Node #: 92, Diagonal Node #: 61, (109) 
-Element #: 40, Current Node #: 61, Diagonal Node #: 94, (166) 
-Element #: 40, Current Node #: 62, Diagonal Node #: 93, (165) 
-Element #: 40, Current Node #: 66, Diagonal Node #: 89, (158) 
-Element #: 40, Current Node #: 65, Diagonal Node #: 90, (159) 
-Element #: 40, Current Node #: 89, Diagonal Node #: 66, (117) 
-Element #: 40, Current Node #: 90, Diagonal Node #: 65, (116) 
-Element #: 40, Current Node #: 94, Diagonal Node #: 61, (109) 
-Element #: 40, Current Node #: 93, Diagonal Node #: 62, (110) 
-Element #: 41, Current Node #: 62, Diagonal Node #: 95, (167) 
-Element #: 41, Current Node #: 63, Diagonal Node #: 94, (166) 
-Element #: 41, Current Node #: 67, Diagonal Node #: 90, (159) 
-Element #: 41, Current Node #: 66, Diagonal Node #: 91, (160) 
-Element #: 41, Current Node #: 90, Diagonal Node #: 67, (118) 
-Element #: 41, Current Node #: 91, Diagonal Node #: 66, (117) 
-Element #: 41, Current Node #: 95, Diagonal Node #: 62, (110) 
-Element #: 41, Current Node #: 94, Diagonal Node #: 63, (111) 
-Element #: 42, Current Node #: 64, Diagonal Node #: 97, (172) 
-Element #: 42, Current Node #: 65, Diagonal Node #: 96, (171) 
-Element #: 42, Current Node #: 69, Diagonal Node #: 92, (164) 
-Element #: 42, Current Node #: 68, Diagonal Node #: 93, (165) 
-Element #: 42, Current Node #: 92, Diagonal Node #: 69, (123) 
-Element #: 42, Current Node #: 93, Diagonal Node #: 68, (122) 
-Element #: 42, Current Node #: 97, Diagonal Node #: 64, (115) 
-Element #: 42, Current Node #: 96, Diagonal Node #: 65, (116) 
-Element #: 43, Current Node #: 65, Diagonal Node #: 98, (173) 
-Element #: 43, Current Node #: 66, Diagonal Node #: 97, (172) 
-Element #: 43, Current Node #: 70, Diagonal Node #: 93, (165) 
-Element #: 43, Current Node #: 69, Diagonal Node #: 94, (166) 
-Element #: 43, Current Node #: 93, Diagonal Node #: 70, (124) 
-Element #: 43, Current Node #: 94, Diagonal Node #: 69, (123) 
-Element #: 43, Current Node #: 98, Diagonal Node #: 65, (116) 
-Element #: 43, Current Node #: 97, Diagonal Node #: 66, (117) 
-Element #: 44, Current Node #: 66, Diagonal Node #: 99, (174) 
-Element #: 44, Current Node #: 67, Diagonal Node #: 98, (173) 
-Element #: 44, Current Node #: 71, Diagonal Node #: 94, (166) 
-Element #: 44, Current Node #: 70, Diagonal Node #: 95, (167) 
-Element #: 44, Current Node #: 94, Diagonal Node #: 71, (125) 
-Element #: 44, Current Node #: 95, Diagonal Node #: 70, (124) 
-Element #: 44, Current Node #: 99, Diagonal Node #: 66, (117) 
-Element #: 44, Current Node #: 98, Diagonal Node #: 67, (118) 
-Element #: 45, Current Node #: 68, Diagonal Node #: 101, (179) 
-Element #: 45, Current Node #: 69, Diagonal Node #: 100, (178) 
-Element #: 45, Current Node #: 73, Diagonal Node #: 96, (171) 
-Element #: 45, Current Node #: 72, Diagonal Node #: 97, (172) 
-Element #: 45, Current Node #: 96, Diagonal Node #: 73, (130) 
-Element #: 45, Current Node #: 97, Diagonal Node #: 72, (129) 
-Element #: 45, Current Node #: 101, Diagonal Node #: 68, (122) 
-Element #: 45, Current Node #: 100, Diagonal Node #: 69, (123) 
-Element #: 46, Current Node #: 69, Diagonal Node #: 102, (180) 
-Element #: 46, Current Node #: 70, Diagonal Node #: 101, (179) 
-Element #: 46, Current Node #: 74, Diagonal Node #: 97, (172) 
-Element #: 46, Current Node #: 73, Diagonal Node #: 98, (173) 
-Element #: 46, Current Node #: 97, Diagonal Node #: 74, (131) 
-Element #: 46, Current Node #: 98, Diagonal Node #: 73, (130) 
-Element #: 46, Current Node #: 102, Diagonal Node #: 69, (123) 
-Element #: 46, Current Node #: 101, Diagonal Node #: 70, (124) 
-Element #: 47, Current Node #: 70, Diagonal Node #: 103, (181) 
-Element #: 47, Current Node #: 71, Diagonal Node #: 102, (180) 
-Element #: 47, Current Node #: 75, Diagonal Node #: 98, (173) 
-Element #: 47, Current Node #: 74, Diagonal Node #: 99, (174) 
-Element #: 47, Current Node #: 98, Diagonal Node #: 75, (132) 
-Element #: 47, Current Node #: 99, Diagonal Node #: 74, (131) 
-Element #: 47, Current Node #: 103, Diagonal Node #: 70, (124) 
-Element #: 47, Current Node #: 102, Diagonal Node #: 71, (125) 
-Element #: 48, Current Node #: 72, Diagonal Node #: 105, (186) 
-Element #: 48, Current Node #: 73, Diagonal Node #: 104, (185) 
-Element #: 48, Current Node #: 77, Diagonal Node #: 100, (178) 
-Element #: 48, Current Node #: 76, Diagonal Node #: 101, (179) 
-Element #: 48, Current Node #: 100, Diagonal Node #: 77, (137) 
-Element #: 48, Current Node #: 101, Diagonal Node #: 76, (136) 
-Element #: 48, Current Node #: 105, Diagonal Node #: 72, (129) 
-Element #: 48, Current Node #: 104, Diagonal Node #: 73, (130) 
-Element #: 49, Current Node #: 73, Diagonal Node #: 106, (187) 
-Element #: 49, Current Node #: 74, Diagonal Node #: 105, (186) 
-Element #: 49, Current Node #: 78, Diagonal Node #: 101, (179) 
-Element #: 49, Current Node #: 77, Diagonal Node #: 102, (180) 
-Element #: 49, Current Node #: 101, Diagonal Node #: 78, (138) 
-Element #: 49, Current Node #: 102, Diagonal Node #: 77, (137) 
-Element #: 49, Current Node #: 106, Diagonal Node #: 73, (130) 
-Element #: 49, Current Node #: 105, Diagonal Node #: 74, (131) 
-Element #: 50, Current Node #: 74, Diagonal Node #: 107, (188) 
-Element #: 50, Current Node #: 75, Diagonal Node #: 106, (187) 
-Element #: 50, Current Node #: 79, Diagonal Node #: 102, (180) 
-Element #: 50, Current Node #: 78, Diagonal Node #: 103, (181) 
-Element #: 50, Current Node #: 102, Diagonal Node #: 79, (139) 
-Element #: 50, Current Node #: 103, Diagonal Node #: 78, (138) 
-Element #: 50, Current Node #: 107, Diagonal Node #: 74, (131) 
-Element #: 50, Current Node #: 106, Diagonal Node #: 75, (132) 
-Element #: 51, Current Node #: 76, Diagonal Node #: 109, (193) 
-Element #: 51, Current Node #: 77, Diagonal Node #: 108, (192) 
-Element #: 51, Current Node #: 81, Diagonal Node #: 104, (185) 
-Element #: 51, Current Node #: 80, Diagonal Node #: 105, (186) 
-Element #: 51, Current Node #: 104, Diagonal Node #: 81, (144) 
-Element #: 51, Current Node #: 105, Diagonal Node #: 80, (143) 
-Element #: 51, Current Node #: 109, Diagonal Node #: 76, (136) 
-Element #: 51, Current Node #: 108, Diagonal Node #: 77, (137) 
-Element #: 52, Current Node #: 77, Diagonal Node #: 110, (194) 
-Element #: 52, Current Node #: 78, Diagonal Node #: 109, (193) 
-Element #: 52, Current Node #: 82, Diagonal Node #: 105, (186) 
-Element #: 52, Current Node #: 81, Diagonal Node #: 106, (187) 
-Element #: 52, Current Node #: 105, Diagonal Node #: 82, (145) 
-Element #: 52, Current Node #: 106, Diagonal Node #: 81, (144) 
-Element #: 52, Current Node #: 110, Diagonal Node #: 77, (137) 
-Element #: 52, Current Node #: 109, Diagonal Node #: 78, (138) 
-Element #: 53, Current Node #: 78, Diagonal Node #: 111, (195) 
-Element #: 53, Current Node #: 79, Diagonal Node #: 110, (194) 
-Element #: 53, Current Node #: 83, Diagonal Node #: 106, (187) 
-Element #: 53, Current Node #: 82, Diagonal Node #: 107, (188) 
-Element #: 53, Current Node #: 106, Diagonal Node #: 83, (146) 
-Element #: 53, Current Node #: 107, Diagonal Node #: 82, (145) 
-Element #: 53, Current Node #: 111, Diagonal Node #: 78, (138) 
-Element #: 53, Current Node #: 110, Diagonal Node #: 79, (139) 
-Element #: 54, Current Node #: 84, Diagonal Node #: 117, (207) 
-Element #: 54, Current Node #: 85, Diagonal Node #: 116, (206) 
-Element #: 54, Current Node #: 89, Diagonal Node #: 112, (199) 
-Element #: 54, Current Node #: 88, Diagonal Node #: 113, (200) 
-Element #: 54, Current Node #: 112, Diagonal Node #: 89, (158) 
-Element #: 54, Current Node #: 113, Diagonal Node #: 88, (157) 
-Element #: 54, Current Node #: 117, Diagonal Node #: 84, (150) 
-Element #: 54, Current Node #: 116, Diagonal Node #: 85, (151) 
-Element #: 55, Current Node #: 85, Diagonal Node #: 118, (208) 
-Element #: 55, Current Node #: 86, Diagonal Node #: 117, (207) 
-Element #: 55, Current Node #: 90, Diagonal Node #: 113, (200) 
-Element #: 55, Current Node #: 89, Diagonal Node #: 114, (201) 
-Element #: 55, Current Node #: 113, Diagonal Node #: 90, (159) 
-Element #: 55, Current Node #: 114, Diagonal Node #: 89, (158) 
-Element #: 55, Current Node #: 118, Diagonal Node #: 85, (151) 
-Element #: 55, Current Node #: 117, Diagonal Node #: 86, (152) 
-Element #: 56, Current Node #: 86, Diagonal Node #: 119, (209) 
-Element #: 56, Current Node #: 87, Diagonal Node #: 118, (208) 
-Element #: 56, Current Node #: 91, Diagonal Node #: 114, (201) 
-Element #: 56, Current Node #: 90, Diagonal Node #: 115, (202) 
-Element #: 56, Current Node #: 114, Diagonal Node #: 91, (160) 
-Element #: 56, Current Node #: 115, Diagonal Node #: 90, (159) 
-Element #: 56, Current Node #: 119, Diagonal Node #: 86, (152) 
-Element #: 56, Current Node #: 118, Diagonal Node #: 87, (153) 
-Element #: 57, Current Node #: 88, Diagonal Node #: 121, (214) 
-Element #: 57, Current Node #: 89, Diagonal Node #: 120, (213) 
-Element #: 57, Current Node #: 93, Diagonal Node #: 116, (206) 
-Element #: 57, Current Node #: 92, Diagonal Node #: 117, (207) 
-Element #: 57, Current Node #: 116, Diagonal Node #: 93, (165) 
-Element #: 57, Current Node #: 117, Diagonal Node #: 92, (164) 
-Element #: 57, Current Node #: 121, Diagonal Node #: 88, (157) 
-Element #: 57, Current Node #: 120, Diagonal Node #: 89, (158) 
-Element #: 58, Current Node #: 89, Diagonal Node #: 122, (215) 
-Element #: 58, Current Node #: 90, Diagonal Node #: 121, (214) 
-Element #: 58, Current Node #: 94, Diagonal Node #: 117, (207) 
-Element #: 58, Current Node #: 93, Diagonal Node #: 118, (208) 
-Element #: 58, Current Node #: 117, Diagonal Node #: 94, (166) 
-Element #: 58, Current Node #: 118, Diagonal Node #: 93, (165) 
-Element #: 58, Current Node #: 122, Diagonal Node #: 89, (158) 
-Element #: 58, Current Node #: 121, Diagonal Node #: 90, (159) 
-Element #: 59, Current Node #: 90, Diagonal Node #: 123, (216) 
-Element #: 59, Current Node #: 91, Diagonal Node #: 122, (215) 
-Element #: 59, Current Node #: 95, Diagonal Node #: 118, (208) 
-Element #: 59, Current Node #: 94, Diagonal Node #: 119, (209) 
-Element #: 59, Current Node #: 118, Diagonal Node #: 95, (167) 
-Element #: 59, Current Node #: 119, Diagonal Node #: 94, (166) 
-Element #: 59, Current Node #: 123, Diagonal Node #: 90, (159) 
-Element #: 59, Current Node #: 122, Diagonal Node #: 91, (160) 
-Element #: 60, Current Node #: 92, Diagonal Node #: 125, (221) 
-Element #: 60, Current Node #: 93, Diagonal Node #: 124, (220) 
-Element #: 60, Current Node #: 97, Diagonal Node #: 120, (213) 
-Element #: 60, Current Node #: 96, Diagonal Node #: 121, (214) 
-Element #: 60, Current Node #: 120, Diagonal Node #: 97, (172) 
-Element #: 60, Current Node #: 121, Diagonal Node #: 96, (171) 
-Element #: 60, Current Node #: 125, Diagonal Node #: 92, (164) 
-Element #: 60, Current Node #: 124, Diagonal Node #: 93, (165) 
-Element #: 61, Current Node #: 93, Diagonal Node #: 126, (222) 
-Element #: 61, Current Node #: 94, Diagonal Node #: 125, (221) 
-Element #: 61, Current Node #: 98, Diagonal Node #: 121, (214) 
-Element #: 61, Current Node #: 97, Diagonal Node #: 122, (215) 
-Element #: 61, Current Node #: 121, Diagonal Node #: 98, (173) 
-Element #: 61, Current Node #: 122, Diagonal Node #: 97, (172) 
-Element #: 61, Current Node #: 126, Diagonal Node #: 93, (165) 
-Element #: 61, Current Node #: 125, Diagonal Node #: 94, (166) 
-Element #: 62, Current Node #: 94, Diagonal Node #: 127, (223) 
-Element #: 62, Current Node #: 95, Diagonal Node #: 126, (222) 
-Element #: 62, Current Node #: 99, Diagonal Node #: 122, (215) 
-Element #: 62, Current Node #: 98, Diagonal Node #: 123, (216) 
-Element #: 62, Current Node #: 122, Diagonal Node #: 99, (174) 
-Element #: 62, Current Node #: 123, Diagonal Node #: 98, (173) 
-Element #: 62, Current Node #: 127, Diagonal Node #: 94, (166) 
-Element #: 62, Current Node #: 126, Diagonal Node #: 95, (167) 
-Element #: 63, Current Node #: 96, Diagonal Node #: 129, (228) 
-Element #: 63, Current Node #: 97, Diagonal Node #: 128, (227) 
-Element #: 63, Current Node #: 101, Diagonal Node #: 124, (220) 
-Element #: 63, Current Node #: 100, Diagonal Node #: 125, (221) 
-Element #: 63, Current Node #: 124, Diagonal Node #: 101, (179) 
-Element #: 63, Current Node #: 125, Diagonal Node #: 100, (178) 
-Element #: 63, Current Node #: 129, Diagonal Node #: 96, (171) 
-Element #: 63, Current Node #: 128, Diagonal Node #: 97, (172) 
-Element #: 64, Current Node #: 97, Diagonal Node #: 130, (229) 
-Element #: 64, Current Node #: 98, Diagonal Node #: 129, (228) 
-Element #: 64, Current Node #: 102, Diagonal Node #: 125, (221) 
-Element #: 64, Current Node #: 101, Diagonal Node #: 126, (222) 
-Element #: 64, Current Node #: 125, Diagonal Node #: 102, (180) 
-Element #: 64, Current Node #: 126, Diagonal Node #: 101, (179) 
-Element #: 64, Current Node #: 130, Diagonal Node #: 97, (172) 
-Element #: 64, Current Node #: 129, Diagonal Node #: 98, (173) 
-Element #: 65, Current Node #: 98, Diagonal Node #: 131, (230) 
-Element #: 65, Current Node #: 99, Diagonal Node #: 130, (229) 
-Element #: 65, Current Node #: 103, Diagonal Node #: 126, (222) 
-Element #: 65, Current Node #: 102, Diagonal Node #: 127, (223) 
-Element #: 65, Current Node #: 126, Diagonal Node #: 103, (181) 
-Element #: 65, Current Node #: 127, Diagonal Node #: 102, (180) 
-Element #: 65, Current Node #: 131, Diagonal Node #: 98, (173) 
-Element #: 65, Current Node #: 130, Diagonal Node #: 99, (174) 
-Element #: 66, Current Node #: 100, Diagonal Node #: 133, (235) 
-Element #: 66, Current Node #: 101, Diagonal Node #: 132, (234) 
-Element #: 66, Current Node #: 105, Diagonal Node #: 128, (227) 
-Element #: 66, Current Node #: 104, Diagonal Node #: 129, (228) 
-Element #: 66, Current Node #: 128, Diagonal Node #: 105, (186) 
-Element #: 66, Current Node #: 129, Diagonal Node #: 104, (185) 
-Element #: 66, Current Node #: 133, Diagonal Node #: 100, (178) 
-Element #: 66, Current Node #: 132, Diagonal Node #: 101, (179) 
-Element #: 67, Current Node #: 101, Diagonal Node #: 134, (236) 
-Element #: 67, Current Node #: 102, Diagonal Node #: 133, (235) 
-Element #: 67, Current Node #: 106, Diagonal Node #: 129, (228) 
-Element #: 67, Current Node #: 105, Diagonal Node #: 130, (229) 
-Element #: 67, Current Node #: 129, Diagonal Node #: 106, (187) 
-Element #: 67, Current Node #: 130, Diagonal Node #: 105, (186) 
-Element #: 67, Current Node #: 134, Diagonal Node #: 101, (179) 
-Element #: 67, Current Node #: 133, Diagonal Node #: 102, (180) 
-Element #: 68, Current Node #: 102, Diagonal Node #: 135, (237) 
-Element #: 68, Current Node #: 103, Diagonal Node #: 134, (236) 
-Element #: 68, Current Node #: 107, Diagonal Node #: 130, (229) 
-Element #: 68, Current Node #: 106, Diagonal Node #: 131, (230) 
-Element #: 68, Current Node #: 130, Diagonal Node #: 107, (188) 
-Element #: 68, Current Node #: 131, Diagonal Node #: 106, (187) 
-Element #: 68, Current Node #: 135, Diagonal Node #: 102, (180) 
-Element #: 68, Current Node #: 134, Diagonal Node #: 103, (181) 
-Element #: 69, Current Node #: 104, Diagonal Node #: 137, (242) 
-Element #: 69, Current Node #: 105, Diagonal Node #: 136, (241) 
-Element #: 69, Current Node #: 109, Diagonal Node #: 132, (234) 
-Element #: 69, Current Node #: 108, Diagonal Node #: 133, (235) 
-Element #: 69, Current Node #: 132, Diagonal Node #: 109, (193) 
-Element #: 69, Current Node #: 133, Diagonal Node #: 108, (192) 
-Element #: 69, Current Node #: 137, Diagonal Node #: 104, (185) 
-Element #: 69, Current Node #: 136, Diagonal Node #: 105, (186) 
-Element #: 70, Current Node #: 105, Diagonal Node #: 138, (243) 
-Element #: 70, Current Node #: 106, Diagonal Node #: 137, (242) 
-Element #: 70, Current Node #: 110, Diagonal Node #: 133, (235) 
-Element #: 70, Current Node #: 109, Diagonal Node #: 134, (236) 
-Element #: 70, Current Node #: 133, Diagonal Node #: 110, (194) 
-Element #: 70, Current Node #: 134, Diagonal Node #: 109, (193) 
-Element #: 70, Current Node #: 138, Diagonal Node #: 105, (186) 
-Element #: 70, Current Node #: 137, Diagonal Node #: 106, (187) 
-Element #: 71, Current Node #: 106, Diagonal Node #: 139, (244) 
-Element #: 71, Current Node #: 107, Diagonal Node #: 138, (243) 
-Element #: 71, Current Node #: 111, Diagonal Node #: 134, (236) 
-Element #: 71, Current Node #: 110, Diagonal Node #: 135, (237) 
-Element #: 71, Current Node #: 134, Diagonal Node #: 111, (195) 
-Element #: 71, Current Node #: 135, Diagonal Node #: 110, (194) 
-Element #: 71, Current Node #: 139, Diagonal Node #: 106, (187) 
-Element #: 71, Current Node #: 138, Diagonal Node #: 107, (188) 
-Element #: 72, Current Node #: 112, Diagonal Node #: 145, (256) 
-Element #: 72, Current Node #: 113, Diagonal Node #: 144, (255) 
-Element #: 72, Current Node #: 117, Diagonal Node #: 140, (248) 
-Element #: 72, Current Node #: 116, Diagonal Node #: 141, (249) 
-Element #: 72, Current Node #: 140, Diagonal Node #: 117, (207) 
-Element #: 72, Current Node #: 141, Diagonal Node #: 116, (206) 
-Element #: 72, Current Node #: 145, Diagonal Node #: 112, (199) 
-Element #: 72, Current Node #: 144, Diagonal Node #: 113, (200) 
-Element #: 73, Current Node #: 113, Diagonal Node #: 146, (257) 
-Element #: 73, Current Node #: 114, Diagonal Node #: 145, (256) 
-Element #: 73, Current Node #: 118, Diagonal Node #: 141, (249) 
-Element #: 73, Current Node #: 117, Diagonal Node #: 142, (250) 
-Element #: 73, Current Node #: 141, Diagonal Node #: 118, (208) 
-Element #: 73, Current Node #: 142, Diagonal Node #: 117, (207) 
-Element #: 73, Current Node #: 146, Diagonal Node #: 113, (200) 
-Element #: 73, Current Node #: 145, Diagonal Node #: 114, (201) 
-Element #: 74, Current Node #: 114, Diagonal Node #: 147, (258) 
-Element #: 74, Current Node #: 115, Diagonal Node #: 146, (257) 
-Element #: 74, Current Node #: 119, Diagonal Node #: 142, (250) 
-Element #: 74, Current Node #: 118, Diagonal Node #: 143, (251) 
-Element #: 74, Current Node #: 142, Diagonal Node #: 119, (209) 
-Element #: 74, Current Node #: 143, Diagonal Node #: 118, (208) 
-Element #: 74, Current Node #: 147, Diagonal Node #: 114, (201) 
-Element #: 74, Current Node #: 146, Diagonal Node #: 115, (202) 
-Element #: 75, Current Node #: 116, Diagonal Node #: 149, (263) 
-Element #: 75, Current Node #: 117, Diagonal Node #: 148, (262) 
-Element #: 75, Current Node #: 121, Diagonal Node #: 144, (255) 
-Element #: 75, Current Node #: 120, Diagonal Node #: 145, (256) 
-Element #: 75, Current Node #: 144, Diagonal Node #: 121, (214) 
-Element #: 75, Current Node #: 145, Diagonal Node #: 120, (213) 
-Element #: 75, Current Node #: 149, Diagonal Node #: 116, (206) 
-Element #: 75, Current Node #: 148, Diagonal Node #: 117, (207) 
-Element #: 76, Current Node #: 117, Diagonal Node #: 150, (264) 
-Element #: 76, Current Node #: 118, Diagonal Node #: 149, (263) 
-Element #: 76, Current Node #: 122, Diagonal Node #: 145, (256) 
-Element #: 76, Current Node #: 121, Diagonal Node #: 146, (257) 
-Element #: 76, Current Node #: 145, Diagonal Node #: 122, (215) 
-Element #: 76, Current Node #: 146, Diagonal Node #: 121, (214) 
-Element #: 76, Current Node #: 150, Diagonal Node #: 117, (207) 
-Element #: 76, Current Node #: 149, Diagonal Node #: 118, (208) 
-Element #: 77, Current Node #: 118, Diagonal Node #: 151, (265) 
-Element #: 77, Current Node #: 119, Diagonal Node #: 150, (264) 
-Element #: 77, Current Node #: 123, Diagonal Node #: 146, (257) 
-Element #: 77, Current Node #: 122, Diagonal Node #: 147, (258) 
-Element #: 77, Current Node #: 146, Diagonal Node #: 123, (216) 
-Element #: 77, Current Node #: 147, Diagonal Node #: 122, (215) 
-Element #: 77, Current Node #: 151, Diagonal Node #: 118, (208) 
-Element #: 77, Current Node #: 150, Diagonal Node #: 119, (209) 
-Element #: 78, Current Node #: 120, Diagonal Node #: 153, (270) 
-Element #: 78, Current Node #: 121, Diagonal Node #: 152, (269) 
-Element #: 78, Current Node #: 125, Diagonal Node #: 148, (262) 
-Element #: 78, Current Node #: 124, Diagonal Node #: 149, (263) 
-Element #: 78, Current Node #: 148, Diagonal Node #: 125, (221) 
-Element #: 78, Current Node #: 149, Diagonal Node #: 124, (220) 
-Element #: 78, Current Node #: 153, Diagonal Node #: 120, (213) 
-Element #: 78, Current Node #: 152, Diagonal Node #: 121, (214) 
-Element #: 79, Current Node #: 121, Diagonal Node #: 154, (271) 
-Element #: 79, Current Node #: 122, Diagonal Node #: 153, (270) 
-Element #: 79, Current Node #: 126, Diagonal Node #: 149, (263) 
-Element #: 79, Current Node #: 125, Diagonal Node #: 150, (264) 
-Element #: 79, Current Node #: 149, Diagonal Node #: 126, (222) 
-Element #: 79, Current Node #: 150, Diagonal Node #: 125, (221) 
-Element #: 79, Current Node #: 154, Diagonal Node #: 121, (214) 
-Element #: 79, Current Node #: 153, Diagonal Node #: 122, (215) 
-Element #: 80, Current Node #: 122, Diagonal Node #: 155, (272) 
-Element #: 80, Current Node #: 123, Diagonal Node #: 154, (271) 
-Element #: 80, Current Node #: 127, Diagonal Node #: 150, (264) 
-Element #: 80, Current Node #: 126, Diagonal Node #: 151, (265) 
-Element #: 80, Current Node #: 150, Diagonal Node #: 127, (223) 
-Element #: 80, Current Node #: 151, Diagonal Node #: 126, (222) 
-Element #: 80, Current Node #: 155, Diagonal Node #: 122, (215) 
-Element #: 80, Current Node #: 154, Diagonal Node #: 123, (216) 
-Element #: 81, Current Node #: 124, Diagonal Node #: 157, (277) 
-Element #: 81, Current Node #: 125, Diagonal Node #: 156, (276) 
-Element #: 81, Current Node #: 129, Diagonal Node #: 152, (269) 
-Element #: 81, Current Node #: 128, Diagonal Node #: 153, (270) 
-Element #: 81, Current Node #: 152, Diagonal Node #: 129, (228) 
-Element #: 81, Current Node #: 153, Diagonal Node #: 128, (227) 
-Element #: 81, Current Node #: 157, Diagonal Node #: 124, (220) 
-Element #: 81, Current Node #: 156, Diagonal Node #: 125, (221) 
-Element #: 82, Current Node #: 125, Diagonal Node #: 158, (278) 
-Element #: 82, Current Node #: 126, Diagonal Node #: 157, (277) 
-Element #: 82, Current Node #: 130, Diagonal Node #: 153, (270) 
-Element #: 82, Current Node #: 129, Diagonal Node #: 154, (271) 
-Element #: 82, Current Node #: 153, Diagonal Node #: 130, (229) 
-Element #: 82, Current Node #: 154, Diagonal Node #: 129, (228) 
-Element #: 82, Current Node #: 158, Diagonal Node #: 125, (221) 
-Element #: 82, Current Node #: 157, Diagonal Node #: 126, (222) 
-Element #: 83, Current Node #: 126, Diagonal Node #: 159, (279) 
-Element #: 83, Current Node #: 127, Diagonal Node #: 158, (278) 
-Element #: 83, Current Node #: 131, Diagonal Node #: 154, (271) 
-Element #: 83, Current Node #: 130, Diagonal Node #: 155, (272) 
-Element #: 83, Current Node #: 154, Diagonal Node #: 131, (230) 
-Element #: 83, Current Node #: 155, Diagonal Node #: 130, (229) 
-Element #: 83, Current Node #: 159, Diagonal Node #: 126, (222) 
-Element #: 83, Current Node #: 158, Diagonal Node #: 127, (223) 
-Element #: 84, Current Node #: 128, Diagonal Node #: 161, (284) 
-Element #: 84, Current Node #: 129, Diagonal Node #: 160, (283) 
-Element #: 84, Current Node #: 133, Diagonal Node #: 156, (276) 
-Element #: 84, Current Node #: 132, Diagonal Node #: 157, (277) 
-Element #: 84, Current Node #: 156, Diagonal Node #: 133, (235) 
-Element #: 84, Current Node #: 157, Diagonal Node #: 132, (234) 
-Element #: 84, Current Node #: 161, Diagonal Node #: 128, (227) 
-Element #: 84, Current Node #: 160, Diagonal Node #: 129, (228) 
-Element #: 85, Current Node #: 129, Diagonal Node #: 162, (285) 
-Element #: 85, Current Node #: 130, Diagonal Node #: 161, (284) 
-Element #: 85, Current Node #: 134, Diagonal Node #: 157, (277) 
-Element #: 85, Current Node #: 133, Diagonal Node #: 158, (278) 
-Element #: 85, Current Node #: 157, Diagonal Node #: 134, (236) 
-Element #: 85, Current Node #: 158, Diagonal Node #: 133, (235) 
-Element #: 85, Current Node #: 162, Diagonal Node #: 129, (228) 
-Element #: 85, Current Node #: 161, Diagonal Node #: 130, (229) 
-Element #: 86, Current Node #: 130, Diagonal Node #: 163, (286) 
-Element #: 86, Current Node #: 131, Diagonal Node #: 162, (285) 
-Element #: 86, Current Node #: 135, Diagonal Node #: 158, (278) 
-Element #: 86, Current Node #: 134, Diagonal Node #: 159, (279) 
-Element #: 86, Current Node #: 158, Diagonal Node #: 135, (237) 
-Element #: 86, Current Node #: 159, Diagonal Node #: 134, (236) 
-Element #: 86, Current Node #: 163, Diagonal Node #: 130, (229) 
-Element #: 86, Current Node #: 162, Diagonal Node #: 131, (230) 
-Element #: 87, Current Node #: 132, Diagonal Node #: 165, (291) 
-Element #: 87, Current Node #: 133, Diagonal Node #: 164, (290) 
-Element #: 87, Current Node #: 137, Diagonal Node #: 160, (283) 
-Element #: 87, Current Node #: 136, Diagonal Node #: 161, (284) 
-Element #: 87, Current Node #: 160, Diagonal Node #: 137, (242) 
-Element #: 87, Current Node #: 161, Diagonal Node #: 136, (241) 
-Element #: 87, Current Node #: 165, Diagonal Node #: 132, (234) 
-Element #: 87, Current Node #: 164, Diagonal Node #: 133, (235) 
-Element #: 88, Current Node #: 133, Diagonal Node #: 166, (292) 
-Element #: 88, Current Node #: 134, Diagonal Node #: 165, (291) 
-Element #: 88, Current Node #: 138, Diagonal Node #: 161, (284) 
-Element #: 88, Current Node #: 137, Diagonal Node #: 162, (285) 
-Element #: 88, Current Node #: 161, Diagonal Node #: 138, (243) 
-Element #: 88, Current Node #: 162, Diagonal Node #: 137, (242) 
-Element #: 88, Current Node #: 166, Diagonal Node #: 133, (235) 
-Element #: 88, Current Node #: 165, Diagonal Node #: 134, (236) 
-Element #: 89, Current Node #: 134, Diagonal Node #: 167, (293) 
-Element #: 89, Current Node #: 135, Diagonal Node #: 166, (292) 
-Element #: 89, Current Node #: 139, Diagonal Node #: 162, (285) 
-Element #: 89, Current Node #: 138, Diagonal Node #: 163, (286) 
-Element #: 89, Current Node #: 162, Diagonal Node #: 139, (244) 
-Element #: 89, Current Node #: 163, Diagonal Node #: 138, (243) 
-Element #: 89, Current Node #: 167, Diagonal Node #: 134, (236) 
-Element #: 89, Current Node #: 166, Diagonal Node #: 135, (237) 
-Element #: 90, Current Node #: 140, Diagonal Node #: 173, (305) 
-Element #: 90, Current Node #: 141, Diagonal Node #: 172, (304) 
-Element #: 90, Current Node #: 145, Diagonal Node #: 168, (297) 
-Element #: 90, Current Node #: 144, Diagonal Node #: 169, (298) 
-Element #: 90, Current Node #: 168, Diagonal Node #: 145, (256) 
-Element #: 90, Current Node #: 169, Diagonal Node #: 144, (255) 
-Element #: 90, Current Node #: 173, Diagonal Node #: 140, (248) 
-Element #: 90, Current Node #: 172, Diagonal Node #: 141, (249) 
-Element #: 91, Current Node #: 141, Diagonal Node #: 174, (306) 
-Element #: 91, Current Node #: 142, Diagonal Node #: 173, (305) 
-Element #: 91, Current Node #: 146, Diagonal Node #: 169, (298) 
-Element #: 91, Current Node #: 145, Diagonal Node #: 170, (299) 
-Element #: 91, Current Node #: 169, Diagonal Node #: 146, (257) 
-Element #: 91, Current Node #: 170, Diagonal Node #: 145, (256) 
-Element #: 91, Current Node #: 174, Diagonal Node #: 141, (249) 
-Element #: 91, Current Node #: 173, Diagonal Node #: 142, (250) 
-Element #: 92, Current Node #: 142, Diagonal Node #: 175, (307) 
-Element #: 92, Current Node #: 143, Diagonal Node #: 174, (306) 
-Element #: 92, Current Node #: 147, Diagonal Node #: 170, (299) 
-Element #: 92, Current Node #: 146, Diagonal Node #: 171, (300) 
-Element #: 92, Current Node #: 170, Diagonal Node #: 147, (258) 
-Element #: 92, Current Node #: 171, Diagonal Node #: 146, (257) 
-Element #: 92, Current Node #: 175, Diagonal Node #: 142, (250) 
-Element #: 92, Current Node #: 174, Diagonal Node #: 143, (251) 
-Element #: 93, Current Node #: 144, Diagonal Node #: 177, (312) 
-Element #: 93, Current Node #: 145, Diagonal Node #: 176, (311) 
-Element #: 93, Current Node #: 149, Diagonal Node #: 172, (304) 
-Element #: 93, Current Node #: 148, Diagonal Node #: 173, (305) 
-Element #: 93, Current Node #: 172, Diagonal Node #: 149, (263) 
-Element #: 93, Current Node #: 173, Diagonal Node #: 148, (262) 
-Element #: 93, Current Node #: 177, Diagonal Node #: 144, (255) 
-Element #: 93, Current Node #: 176, Diagonal Node #: 145, (256) 
-Element #: 94, Current Node #: 145, Diagonal Node #: 178, (313) 
-Element #: 94, Current Node #: 146, Diagonal Node #: 177, (312) 
-Element #: 94, Current Node #: 150, Diagonal Node #: 173, (305) 
-Element #: 94, Current Node #: 149, Diagonal Node #: 174, (306) 
-Element #: 94, Current Node #: 173, Diagonal Node #: 150, (264) 
-Element #: 94, Current Node #: 174, Diagonal Node #: 149, (263) 
-Element #: 94, Current Node #: 178, Diagonal Node #: 145, (256) 
-Element #: 94, Current Node #: 177, Diagonal Node #: 146, (257) 
-Element #: 95, Current Node #: 146, Diagonal Node #: 179, (314) 
-Element #: 95, Current Node #: 147, Diagonal Node #: 178, (313) 
-Element #: 95, Current Node #: 151, Diagonal Node #: 174, (306) 
-Element #: 95, Current Node #: 150, Diagonal Node #: 175, (307) 
-Element #: 95, Current Node #: 174, Diagonal Node #: 151, (265) 
-Element #: 95, Current Node #: 175, Diagonal Node #: 150, (264) 
-Element #: 95, Current Node #: 179, Diagonal Node #: 146, (257) 
-Element #: 95, Current Node #: 178, Diagonal Node #: 147, (258) 
-Element #: 96, Current Node #: 148, Diagonal Node #: 181, (319) 
-Element #: 96, Current Node #: 149, Diagonal Node #: 180, (318) 
-Element #: 96, Current Node #: 153, Diagonal Node #: 176, (311) 
-Element #: 96, Current Node #: 152, Diagonal Node #: 177, (312) 
-Element #: 96, Current Node #: 176, Diagonal Node #: 153, (270) 
-Element #: 96, Current Node #: 177, Diagonal Node #: 152, (269) 
-Element #: 96, Current Node #: 181, Diagonal Node #: 148, (262) 
-Element #: 96, Current Node #: 180, Diagonal Node #: 149, (263) 
-Element #: 97, Current Node #: 149, Diagonal Node #: 182, (320) 
-Element #: 97, Current Node #: 150, Diagonal Node #: 181, (319) 
-Element #: 97, Current Node #: 154, Diagonal Node #: 177, (312) 
-Element #: 97, Current Node #: 153, Diagonal Node #: 178, (313) 
-Element #: 97, Current Node #: 177, Diagonal Node #: 154, (271) 
-Element #: 97, Current Node #: 178, Diagonal Node #: 153, (270) 
-Element #: 97, Current Node #: 182, Diagonal Node #: 149, (263) 
-Element #: 97, Current Node #: 181, Diagonal Node #: 150, (264) 
-Element #: 98, Current Node #: 150, Diagonal Node #: 183, (321) 
-Element #: 98, Current Node #: 151, Diagonal Node #: 182, (320) 
-Element #: 98, Current Node #: 155, Diagonal Node #: 178, (313) 
-Element #: 98, Current Node #: 154, Diagonal Node #: 179, (314) 
-Element #: 98, Current Node #: 178, Diagonal Node #: 155, (272) 
-Element #: 98, Current Node #: 179, Diagonal Node #: 154, (271) 
-Element #: 98, Current Node #: 183, Diagonal Node #: 150, (264) 
-Element #: 98, Current Node #: 182, Diagonal Node #: 151, (265) 
-Element #: 99, Current Node #: 152, Diagonal Node #: 185, (326) 
-Element #: 99, Current Node #: 153, Diagonal Node #: 184, (325) 
-Element #: 99, Current Node #: 157, Diagonal Node #: 180, (318) 
-Element #: 99, Current Node #: 156, Diagonal Node #: 181, (319) 
-Element #: 99, Current Node #: 180, Diagonal Node #: 157, (277) 
-Element #: 99, Current Node #: 181, Diagonal Node #: 156, (276) 
-Element #: 99, Current Node #: 185, Diagonal Node #: 152, (269) 
-Element #: 99, Current Node #: 184, Diagonal Node #: 153, (270) 
-Element #: 100, Current Node #: 153, Diagonal Node #: 186, (327) 
-Element #: 100, Current Node #: 154, Diagonal Node #: 185, (326) 
-Element #: 100, Current Node #: 158, Diagonal Node #: 181, (319) 
-Element #: 100, Current Node #: 157, Diagonal Node #: 182, (320) 
-Element #: 100, Current Node #: 181, Diagonal Node #: 158, (278) 
-Element #: 100, Current Node #: 182, Diagonal Node #: 157, (277) 
-Element #: 100, Current Node #: 186, Diagonal Node #: 153, (270) 
-Element #: 100, Current Node #: 185, Diagonal Node #: 154, (271) 
-Element #: 101, Current Node #: 154, Diagonal Node #: 187, (328) 
-Element #: 101, Current Node #: 155, Diagonal Node #: 186, (327) 
-Element #: 101, Current Node #: 159, Diagonal Node #: 182, (320) 
-Element #: 101, Current Node #: 158, Diagonal Node #: 183, (321) 
-Element #: 101, Current Node #: 182, Diagonal Node #: 159, (279) 
-Element #: 101, Current Node #: 183, Diagonal Node #: 158, (278) 
-Element #: 101, Current Node #: 187, Diagonal Node #: 154, (271) 
-Element #: 101, Current Node #: 186, Diagonal Node #: 155, (272) 
-Element #: 102, Current Node #: 156, Diagonal Node #: 189, (333) 
-Element #: 102, Current Node #: 157, Diagonal Node #: 188, (332) 
-Element #: 102, Current Node #: 161, Diagonal Node #: 184, (325) 
-Element #: 102, Current Node #: 160, Diagonal Node #: 185, (326) 
-Element #: 102, Current Node #: 184, Diagonal Node #: 161, (284) 
-Element #: 102, Current Node #: 185, Diagonal Node #: 160, (283) 
-Element #: 102, Current Node #: 189, Diagonal Node #: 156, (276) 
-Element #: 102, Current Node #: 188, Diagonal Node #: 157, (277) 
-Element #: 103, Current Node #: 157, Diagonal Node #: 190, (334) 
-Element #: 103, Current Node #: 158, Diagonal Node #: 189, (333) 
-Element #: 103, Current Node #: 162, Diagonal Node #: 185, (326) 
-Element #: 103, Current Node #: 161, Diagonal Node #: 186, (327) 
-Element #: 103, Current Node #: 185, Diagonal Node #: 162, (285) 
-Element #: 103, Current Node #: 186, Diagonal Node #: 161, (284) 
-Element #: 103, Current Node #: 190, Diagonal Node #: 157, (277) 
-Element #: 103, Current Node #: 189, Diagonal Node #: 158, (278) 
-Element #: 104, Current Node #: 158, Diagonal Node #: 191, (335) 
-Element #: 104, Current Node #: 159, Diagonal Node #: 190, (334) 
-Element #: 104, Current Node #: 163, Diagonal Node #: 186, (327) 
-Element #: 104, Current Node #: 162, Diagonal Node #: 187, (328) 
-Element #: 104, Current Node #: 186, Diagonal Node #: 163, (286) 
-Element #: 104, Current Node #: 187, Diagonal Node #: 162, (285) 
-Element #: 104, Current Node #: 191, Diagonal Node #: 158, (278) 
-Element #: 104, Current Node #: 190, Diagonal Node #: 159, (279) 
-Element #: 105, Current Node #: 160, Diagonal Node #: 193, (340) 
-Element #: 105, Current Node #: 161, Diagonal Node #: 192, (339) 
-Element #: 105, Current Node #: 165, Diagonal Node #: 188, (332) 
-Element #: 105, Current Node #: 164, Diagonal Node #: 189, (333) 
-Element #: 105, Current Node #: 188, Diagonal Node #: 165, (291) 
-Element #: 105, Current Node #: 189, Diagonal Node #: 164, (290) 
-Element #: 105, Current Node #: 193, Diagonal Node #: 160, (283) 
-Element #: 105, Current Node #: 192, Diagonal Node #: 161, (284) 
-Element #: 106, Current Node #: 161, Diagonal Node #: 194, (341) 
-Element #: 106, Current Node #: 162, Diagonal Node #: 193, (340) 
-Element #: 106, Current Node #: 166, Diagonal Node #: 189, (333) 
-Element #: 106, Current Node #: 165, Diagonal Node #: 190, (334) 
-Element #: 106, Current Node #: 189, Diagonal Node #: 166, (292) 
-Element #: 106, Current Node #: 190, Diagonal Node #: 165, (291) 
-Element #: 106, Current Node #: 194, Diagonal Node #: 161, (284) 
-Element #: 106, Current Node #: 193, Diagonal Node #: 162, (285) 
-Element #: 107, Current Node #: 162, Diagonal Node #: 195, (342) 
-Element #: 107, Current Node #: 163, Diagonal Node #: 194, (341) 
-Element #: 107, Current Node #: 167, Diagonal Node #: 190, (334) 
-Element #: 107, Current Node #: 166, Diagonal Node #: 191, (335) 
-Element #: 107, Current Node #: 190, Diagonal Node #: 167, (293) 
-Element #: 107, Current Node #: 191, Diagonal Node #: 166, (292) 
-Element #: 107, Current Node #: 195, Diagonal Node #: 162, (285) 
-Element #: 107, Current Node #: 194, Diagonal Node #: 163, (286) 
-Element #: 108, Current Node #: 196, Diagonal Node #: 32, (59) 
-Element #: 108, Current Node #: 0, Diagonal Node #: 204, (58) 
-Element #: 108, Current Node #: 4, Diagonal Node #: 203, (51) 
-Element #: 108, Current Node #: 197, Diagonal Node #: 28, (52) 
-Element #: 108, Current Node #: 203, Diagonal Node #: 4, (10) 
-Element #: 108, Current Node #: 28, Diagonal Node #: 197, (9) 
-Element #: 108, Current Node #: 32, Diagonal Node #: 196, (2) 
-Element #: 108, Current Node #: 204, Diagonal Node #: 0, (3) 
-Element #: 109, Current Node #: 197, Diagonal Node #: 36, (66) 
-Element #: 109, Current Node #: 4, Diagonal Node #: 205, (65) 
-Element #: 109, Current Node #: 8, Diagonal Node #: 204, (58) 
-Element #: 109, Current Node #: 198, Diagonal Node #: 32, (59) 
-Element #: 109, Current Node #: 204, Diagonal Node #: 8, (17) 
-Element #: 109, Current Node #: 32, Diagonal Node #: 198, (16) 
-Element #: 109, Current Node #: 36, Diagonal Node #: 197, (9) 
-Element #: 109, Current Node #: 205, Diagonal Node #: 4, (10) 
-Element #: 110, Current Node #: 198, Diagonal Node #: 40, (73) 
-Element #: 110, Current Node #: 8, Diagonal Node #: 206, (72) 
-Element #: 110, Current Node #: 12, Diagonal Node #: 205, (65) 
-Element #: 110, Current Node #: 199, Diagonal Node #: 36, (66) 
-Element #: 110, Current Node #: 205, Diagonal Node #: 12, (24) 
-Element #: 110, Current Node #: 36, Diagonal Node #: 199, (23) 
-Element #: 110, Current Node #: 40, Diagonal Node #: 198, (16) 
-Element #: 110, Current Node #: 206, Diagonal Node #: 8, (17) 
-Element #: 111, Current Node #: 199, Diagonal Node #: 44, (80) 
-Element #: 111, Current Node #: 12, Diagonal Node #: 207, (79) 
-Element #: 111, Current Node #: 16, Diagonal Node #: 206, (72) 
-Element #: 111, Current Node #: 200, Diagonal Node #: 40, (73) 
-Element #: 111, Current Node #: 206, Diagonal Node #: 16, (31) 
-Element #: 111, Current Node #: 40, Diagonal Node #: 200, (30) 
-Element #: 111, Current Node #: 44, Diagonal Node #: 199, (23) 
-Element #: 111, Current Node #: 207, Diagonal Node #: 12, (24) 
-Element #: 112, Current Node #: 200, Diagonal Node #: 48, (87) 
-Element #: 112, Current Node #: 16, Diagonal Node #: 208, (86) 
-Element #: 112, Current Node #: 20, Diagonal Node #: 207, (79) 
-Element #: 112, Current Node #: 201, Diagonal Node #: 44, (80) 
-Element #: 112, Current Node #: 207, Diagonal Node #: 20, (38) 
-Element #: 112, Current Node #: 44, Diagonal Node #: 201, (37) 
-Element #: 112, Current Node #: 48, Diagonal Node #: 200, (30) 
-Element #: 112, Current Node #: 208, Diagonal Node #: 16, (31) 
-Element #: 113, Current Node #: 201, Diagonal Node #: 52, (94) 
-Element #: 113, Current Node #: 20, Diagonal Node #: 209, (93) 
-Element #: 113, Current Node #: 24, Diagonal Node #: 208, (86) 
-Element #: 113, Current Node #: 202, Diagonal Node #: 48, (87) 
-Element #: 113, Current Node #: 208, Diagonal Node #: 24, (45) 
-Element #: 113, Current Node #: 48, Diagonal Node #: 202, (44) 
-Element #: 113, Current Node #: 52, Diagonal Node #: 201, (37) 
-Element #: 113, Current Node #: 209, Diagonal Node #: 20, (38) 
-Element #: 114, Current Node #: 203, Diagonal Node #: 60, (108) 
-Element #: 114, Current Node #: 28, Diagonal Node #: 211, (107) 
-Element #: 114, Current Node #: 32, Diagonal Node #: 210, (100) 
-Element #: 114, Current Node #: 204, Diagonal Node #: 56, (101) 
-Element #: 114, Current Node #: 210, Diagonal Node #: 32, (59) 
-Element #: 114, Current Node #: 56, Diagonal Node #: 204, (58) 
-Element #: 114, Current Node #: 60, Diagonal Node #: 203, (51) 
-Element #: 114, Current Node #: 211, Diagonal Node #: 28, (52) 
-Element #: 115, Current Node #: 204, Diagonal Node #: 64, (115) 
-Element #: 115, Current Node #: 32, Diagonal Node #: 212, (114) 
-Element #: 115, Current Node #: 36, Diagonal Node #: 211, (107) 
-Element #: 115, Current Node #: 205, Diagonal Node #: 60, (108) 
-Element #: 115, Current Node #: 211, Diagonal Node #: 36, (66) 
-Element #: 115, Current Node #: 60, Diagonal Node #: 205, (65) 
-Element #: 115, Current Node #: 64, Diagonal Node #: 204, (58) 
-Element #: 115, Current Node #: 212, Diagonal Node #: 32, (59) 
-Element #: 116, Current Node #: 205, Diagonal Node #: 68, (122) 
-Element #: 116, Current Node #: 36, Diagonal Node #: 213, (121) 
-Element #: 116, Current Node #: 40, Diagonal Node #: 212, (114) 
-Element #: 116, Current Node #: 206, Diagonal Node #: 64, (115) 
-Element #: 116, Current Node #: 212, Diagonal Node #: 40, (73) 
-Element #: 116, Current Node #: 64, Diagonal Node #: 206, (72) 
-Element #: 116, Current Node #: 68, Diagonal Node #: 205, (65) 
-Element #: 116, Current Node #: 213, Diagonal Node #: 36, (66) 
-Element #: 117, Current Node #: 206, Diagonal Node #: 72, (129) 
-Element #: 117, Current Node #: 40, Diagonal Node #: 214, (128) 
-Element #: 117, Current Node #: 44, Diagonal Node #: 213, (121) 
-Element #: 117, Current Node #: 207, Diagonal Node #: 68, (122) 
-Element #: 117, Current Node #: 213, Diagonal Node #: 44, (80) 
-Element #: 117, Current Node #: 68, Diagonal Node #: 207, (79) 
-Element #: 117, Current Node #: 72, Diagonal Node #: 206, (72) 
-Element #: 117, Current Node #: 214, Diagonal Node #: 40, (73) 
-Element #: 118, Current Node #: 207, Diagonal Node #: 76, (136) 
-Element #: 118, Current Node #: 44, Diagonal Node #: 215, (135) 
-Element #: 118, Current Node #: 48, Diagonal Node #: 214, (128) 
-Element #: 118, Current Node #: 208, Diagonal Node #: 72, (129) 
-Element #: 118, Current Node #: 214, Diagonal Node #: 48, (87) 
-Element #: 118, Current Node #: 72, Diagonal Node #: 208, (86) 
-Element #: 118, Current Node #: 76, Diagonal Node #: 207, (79) 
-Element #: 118, Current Node #: 215, Diagonal Node #: 44, (80) 
-Element #: 119, Current Node #: 208, Diagonal Node #: 80, (143) 
-Element #: 119, Current Node #: 48, Diagonal Node #: 216, (142) 
-Element #: 119, Current Node #: 52, Diagonal Node #: 215, (135) 
-Element #: 119, Current Node #: 209, Diagonal Node #: 76, (136) 
-Element #: 119, Current Node #: 215, Diagonal Node #: 52, (94) 
-Element #: 119, Current Node #: 76, Diagonal Node #: 209, (93) 
-Element #: 119, Current Node #: 80, Diagonal Node #: 208, (86) 
-Element #: 119, Current Node #: 216, Diagonal Node #: 48, (87) 
-Element #: 120, Current Node #: 210, Diagonal Node #: 88, (157) 
-Element #: 120, Current Node #: 56, Diagonal Node #: 218, (156) 
-Element #: 120, Current Node #: 60, Diagonal Node #: 217, (149) 
-Element #: 120, Current Node #: 211, Diagonal Node #: 84, (150) 
-Element #: 120, Current Node #: 217, Diagonal Node #: 60, (108) 
-Element #: 120, Current Node #: 84, Diagonal Node #: 211, (107) 
-Element #: 120, Current Node #: 88, Diagonal Node #: 210, (100) 
-Element #: 120, Current Node #: 218, Diagonal Node #: 56, (101) 
-Element #: 121, Current Node #: 211, Diagonal Node #: 92, (164) 
-Element #: 121, Current Node #: 60, Diagonal Node #: 219, (163) 
-Element #: 121, Current Node #: 64, Diagonal Node #: 218, (156) 
-Element #: 121, Current Node #: 212, Diagonal Node #: 88, (157) 
-Element #: 121, Current Node #: 218, Diagonal Node #: 64, (115) 
-Element #: 121, Current Node #: 88, Diagonal Node #: 212, (114) 
-Element #: 121, Current Node #: 92, Diagonal Node #: 211, (107) 
-Element #: 121, Current Node #: 219, Diagonal Node #: 60, (108) 
-Element #: 122, Current Node #: 212, Diagonal Node #: 96, (171) 
-Element #: 122, Current Node #: 64, Diagonal Node #: 220, (170) 
-Element #: 122, Current Node #: 68, Diagonal Node #: 219, (163) 
-Element #: 122, Current Node #: 213, Diagonal Node #: 92, (164) 
-Element #: 122, Current Node #: 219, Diagonal Node #: 68, (122) 
-Element #: 122, Current Node #: 92, Diagonal Node #: 213, (121) 
-Element #: 122, Current Node #: 96, Diagonal Node #: 212, (114) 
-Element #: 122, Current Node #: 220, Diagonal Node #: 64, (115) 
-Element #: 123, Current Node #: 213, Diagonal Node #: 100, (178) 
-Element #: 123, Current Node #: 68, Diagonal Node #: 221, (177) 
-Element #: 123, Current Node #: 72, Diagonal Node #: 220, (170) 
-Element #: 123, Current Node #: 214, Diagonal Node #: 96, (171) 
-Element #: 123, Current Node #: 220, Diagonal Node #: 72, (129) 
-Element #: 123, Current Node #: 96, Diagonal Node #: 214, (128) 
-Element #: 123, Current Node #: 100, Diagonal Node #: 213, (121) 
-Element #: 123, Current Node #: 221, Diagonal Node #: 68, (122) 
-Element #: 124, Current Node #: 214, Diagonal Node #: 104, (185) 
-Element #: 124, Current Node #: 72, Diagonal Node #: 222, (184) 
-Element #: 124, Current Node #: 76, Diagonal Node #: 221, (177) 
-Element #: 124, Current Node #: 215, Diagonal Node #: 100, (178) 
-Element #: 124, Current Node #: 221, Diagonal Node #: 76, (136) 
-Element #: 124, Current Node #: 100, Diagonal Node #: 215, (135) 
-Element #: 124, Current Node #: 104, Diagonal Node #: 214, (128) 
-Element #: 124, Current Node #: 222, Diagonal Node #: 72, (129) 
-Element #: 125, Current Node #: 215, Diagonal Node #: 108, (192) 
-Element #: 125, Current Node #: 76, Diagonal Node #: 223, (191) 
-Element #: 125, Current Node #: 80, Diagonal Node #: 222, (184) 
-Element #: 125, Current Node #: 216, Diagonal Node #: 104, (185) 
-Element #: 125, Current Node #: 222, Diagonal Node #: 80, (143) 
-Element #: 125, Current Node #: 104, Diagonal Node #: 216, (142) 
-Element #: 125, Current Node #: 108, Diagonal Node #: 215, (135) 
-Element #: 125, Current Node #: 223, Diagonal Node #: 76, (136) 
-Element #: 126, Current Node #: 217, Diagonal Node #: 116, (206) 
-Element #: 126, Current Node #: 84, Diagonal Node #: 225, (205) 
-Element #: 126, Current Node #: 88, Diagonal Node #: 224, (198) 
-Element #: 126, Current Node #: 218, Diagonal Node #: 112, (199) 
-Element #: 126, Current Node #: 224, Diagonal Node #: 88, (157) 
-Element #: 126, Current Node #: 112, Diagonal Node #: 218, (156) 
-Element #: 126, Current Node #: 116, Diagonal Node #: 217, (149) 
-Element #: 126, Current Node #: 225, Diagonal Node #: 84, (150) 
-Element #: 127, Current Node #: 218, Diagonal Node #: 120, (213) 
-Element #: 127, Current Node #: 88, Diagonal Node #: 226, (212) 
-Element #: 127, Current Node #: 92, Diagonal Node #: 225, (205) 
-Element #: 127, Current Node #: 219, Diagonal Node #: 116, (206) 
-Element #: 127, Current Node #: 225, Diagonal Node #: 92, (164) 
-Element #: 127, Current Node #: 116, Diagonal Node #: 219, (163) 
-Element #: 127, Current Node #: 120, Diagonal Node #: 218, (156) 
-Element #: 127, Current Node #: 226, Diagonal Node #: 88, (157) 
-Element #: 128, Current Node #: 219, Diagonal Node #: 124, (220) 
-Element #: 128, Current Node #: 92, Diagonal Node #: 227, (219) 
-Element #: 128, Current Node #: 96, Diagonal Node #: 226, (212) 
-Element #: 128, Current Node #: 220, Diagonal Node #: 120, (213) 
-Element #: 128, Current Node #: 226, Diagonal Node #: 96, (171) 
-Element #: 128, Current Node #: 120, Diagonal Node #: 220, (170) 
-Element #: 128, Current Node #: 124, Diagonal Node #: 219, (163) 
-Element #: 128, Current Node #: 227, Diagonal Node #: 92, (164) 
-Element #: 129, Current Node #: 220, Diagonal Node #: 128, (227) 
-Element #: 129, Current Node #: 96, Diagonal Node #: 228, (226) 
-Element #: 129, Current Node #: 100, Diagonal Node #: 227, (219) 
-Element #: 129, Current Node #: 221, Diagonal Node #: 124, (220) 
-Element #: 129, Current Node #: 227, Diagonal Node #: 100, (178) 
-Element #: 129, Current Node #: 124, Diagonal Node #: 221, (177) 
-Element #: 129, Current Node #: 128, Diagonal Node #: 220, (170) 
-Element #: 129, Current Node #: 228, Diagonal Node #: 96, (171) 
-Element #: 130, Current Node #: 221, Diagonal Node #: 132, (234) 
-Element #: 130, Current Node #: 100, Diagonal Node #: 229, (233) 
-Element #: 130, Current Node #: 104, Diagonal Node #: 228, (226) 
-Element #: 130, Current Node #: 222, Diagonal Node #: 128, (227) 
-Element #: 130, Current Node #: 228, Diagonal Node #: 104, (185) 
-Element #: 130, Current Node #: 128, Diagonal Node #: 222, (184) 
-Element #: 130, Current Node #: 132, Diagonal Node #: 221, (177) 
-Element #: 130, Current Node #: 229, Diagonal Node #: 100, (178) 
-Element #: 131, Current Node #: 222, Diagonal Node #: 136, (241) 
-Element #: 131, Current Node #: 104, Diagonal Node #: 230, (240) 
-Element #: 131, Current Node #: 108, Diagonal Node #: 229, (233) 
-Element #: 131, Current Node #: 223, Diagonal Node #: 132, (234) 
-Element #: 131, Current Node #: 229, Diagonal Node #: 108, (192) 
-Element #: 131, Current Node #: 132, Diagonal Node #: 223, (191) 
-Element #: 131, Current Node #: 136, Diagonal Node #: 222, (184) 
-Element #: 131, Current Node #: 230, Diagonal Node #: 104, (185) 
-Element #: 132, Current Node #: 224, Diagonal Node #: 144, (255) 
-Element #: 132, Current Node #: 112, Diagonal Node #: 232, (254) 
-Element #: 132, Current Node #: 116, Diagonal Node #: 231, (247) 
-Element #: 132, Current Node #: 225, Diagonal Node #: 140, (248) 
-Element #: 132, Current Node #: 231, Diagonal Node #: 116, (206) 
-Element #: 132, Current Node #: 140, Diagonal Node #: 225, (205) 
-Element #: 132, Current Node #: 144, Diagonal Node #: 224, (198) 
-Element #: 132, Current Node #: 232, Diagonal Node #: 112, (199) 
-Element #: 133, Current Node #: 225, Diagonal Node #: 148, (262) 
-Element #: 133, Current Node #: 116, Diagonal Node #: 233, (261) 
-Element #: 133, Current Node #: 120, Diagonal Node #: 232, (254) 
-Element #: 133, Current Node #: 226, Diagonal Node #: 144, (255) 
-Element #: 133, Current Node #: 232, Diagonal Node #: 120, (213) 
-Element #: 133, Current Node #: 144, Diagonal Node #: 226, (212) 
-Element #: 133, Current Node #: 148, Diagonal Node #: 225, (205) 
-Element #: 133, Current Node #: 233, Diagonal Node #: 116, (206) 
-Element #: 134, Current Node #: 226, Diagonal Node #: 152, (269) 
-Element #: 134, Current Node #: 120, Diagonal Node #: 234, (268) 
-Element #: 134, Current Node #: 124, Diagonal Node #: 233, (261) 
-Element #: 134, Current Node #: 227, Diagonal Node #: 148, (262) 
-Element #: 134, Current Node #: 233, Diagonal Node #: 124, (220) 
-Element #: 134, Current Node #: 148, Diagonal Node #: 227, (219) 
-Element #: 134, Current Node #: 152, Diagonal Node #: 226, (212) 
-Element #: 134, Current Node #: 234, Diagonal Node #: 120, (213) 
-Element #: 135, Current Node #: 227, Diagonal Node #: 156, (276) 
-Element #: 135, Current Node #: 124, Diagonal Node #: 235, (275) 
-Element #: 135, Current Node #: 128, Diagonal Node #: 234, (268) 
-Element #: 135, Current Node #: 228, Diagonal Node #: 152, (269) 
-Element #: 135, Current Node #: 234, Diagonal Node #: 128, (227) 
-Element #: 135, Current Node #: 152, Diagonal Node #: 228, (226) 
-Element #: 135, Current Node #: 156, Diagonal Node #: 227, (219) 
-Element #: 135, Current Node #: 235, Diagonal Node #: 124, (220) 
-Element #: 136, Current Node #: 228, Diagonal Node #: 160, (283) 
-Element #: 136, Current Node #: 128, Diagonal Node #: 236, (282) 
-Element #: 136, Current Node #: 132, Diagonal Node #: 235, (275) 
-Element #: 136, Current Node #: 229, Diagonal Node #: 156, (276) 
-Element #: 136, Current Node #: 235, Diagonal Node #: 132, (234) 
-Element #: 136, Current Node #: 156, Diagonal Node #: 229, (233) 
-Element #: 136, Current Node #: 160, Diagonal Node #: 228, (226) 
-Element #: 136, Current Node #: 236, Diagonal Node #: 128, (227) 
-Element #: 137, Current Node #: 229, Diagonal Node #: 164, (290) 
-Element #: 137, Current Node #: 132, Diagonal Node #: 237, (289) 
-Element #: 137, Current Node #: 136, Diagonal Node #: 236, (282) 
-Element #: 137, Current Node #: 230, Diagonal Node #: 160, (283) 
-Element #: 137, Current Node #: 236, Diagonal Node #: 136, (241) 
-Element #: 137, Current Node #: 160, Diagonal Node #: 230, (240) 
-Element #: 137, Current Node #: 164, Diagonal Node #: 229, (233) 
-Element #: 137, Current Node #: 237, Diagonal Node #: 132, (234) 
-Element #: 138, Current Node #: 231, Diagonal Node #: 172, (304) 
-Element #: 138, Current Node #: 140, Diagonal Node #: 239, (303) 
-Element #: 138, Current Node #: 144, Diagonal Node #: 238, (296) 
-Element #: 138, Current Node #: 232, Diagonal Node #: 168, (297) 
-Element #: 138, Current Node #: 238, Diagonal Node #: 144, (255) 
-Element #: 138, Current Node #: 168, Diagonal Node #: 232, (254) 
-Element #: 138, Current Node #: 172, Diagonal Node #: 231, (247) 
-Element #: 138, Current Node #: 239, Diagonal Node #: 140, (248) 
-Element #: 139, Current Node #: 232, Diagonal Node #: 176, (311) 
-Element #: 139, Current Node #: 144, Diagonal Node #: 240, (310) 
-Element #: 139, Current Node #: 148, Diagonal Node #: 239, (303) 
-Element #: 139, Current Node #: 233, Diagonal Node #: 172, (304) 
-Element #: 139, Current Node #: 239, Diagonal Node #: 148, (262) 
-Element #: 139, Current Node #: 172, Diagonal Node #: 233, (261) 
-Element #: 139, Current Node #: 176, Diagonal Node #: 232, (254) 
-Element #: 139, Current Node #: 240, Diagonal Node #: 144, (255) 
-Element #: 140, Current Node #: 233, Diagonal Node #: 180, (318) 
-Element #: 140, Current Node #: 148, Diagonal Node #: 241, (317) 
-Element #: 140, Current Node #: 152, Diagonal Node #: 240, (310) 
-Element #: 140, Current Node #: 234, Diagonal Node #: 176, (311) 
-Element #: 140, Current Node #: 240, Diagonal Node #: 152, (269) 
-Element #: 140, Current Node #: 176, Diagonal Node #: 234, (268) 
-Element #: 140, Current Node #: 180, Diagonal Node #: 233, (261) 
-Element #: 140, Current Node #: 241, Diagonal Node #: 148, (262) 
-Element #: 141, Current Node #: 234, Diagonal Node #: 184, (325) 
-Element #: 141, Current Node #: 152, Diagonal Node #: 242, (324) 
-Element #: 141, Current Node #: 156, Diagonal Node #: 241, (317) 
-Element #: 141, Current Node #: 235, Diagonal Node #: 180, (318) 
-Element #: 141, Current Node #: 241, Diagonal Node #: 156, (276) 
-Element #: 141, Current Node #: 180, Diagonal Node #: 235, (275) 
-Element #: 141, Current Node #: 184, Diagonal Node #: 234, (268) 
-Element #: 141, Current Node #: 242, Diagonal Node #: 152, (269) 
-Element #: 142, Current Node #: 235, Diagonal Node #: 188, (332) 
-Element #: 142, Current Node #: 156, Diagonal Node #: 243, (331) 
-Element #: 142, Current Node #: 160, Diagonal Node #: 242, (324) 
-Element #: 142, Current Node #: 236, Diagonal Node #: 184, (325) 
-Element #: 142, Current Node #: 242, Diagonal Node #: 160, (283) 
-Element #: 142, Current Node #: 184, Diagonal Node #: 236, (282) 
-Element #: 142, Current Node #: 188, Diagonal Node #: 235, (275) 
-Element #: 142, Current Node #: 243, Diagonal Node #: 156, (276) 
-Element #: 143, Current Node #: 236, Diagonal Node #: 192, (339) 
-Element #: 143, Current Node #: 160, Diagonal Node #: 244, (338) 
-Element #: 143, Current Node #: 164, Diagonal Node #: 243, (331) 
-Element #: 143, Current Node #: 237, Diagonal Node #: 188, (332) 
-Element #: 143, Current Node #: 243, Diagonal Node #: 164, (290) 
-Element #: 143, Current Node #: 188, Diagonal Node #: 237, (289) 
-Element #: 143, Current Node #: 192, Diagonal Node #: 236, (282) 
-Element #: 143, Current Node #: 244, Diagonal Node #: 160, (283) 
+StGermain Framework revision 3900. Copyright (C) 2003-2005 VPAC.
+Element #: 0, Current Node #: 147, Diagonal Node #: 24, (60) 
+Element #: 0, Current Node #: 0, Diagonal Node #: 155, (59) 
+Element #: 0, Current Node #: 148, Diagonal Node #: 21, (53) 
+Element #: 0, Current Node #: 3, Diagonal Node #: 154, (52) 
+Element #: 0, Current Node #: 154, Diagonal Node #: 3, (11) 
+Element #: 0, Current Node #: 21, Diagonal Node #: 148, (10) 
+Element #: 0, Current Node #: 155, Diagonal Node #: 0, (4) 
+Element #: 0, Current Node #: 24, Diagonal Node #: 147, (3) 
+Element #: 1, Current Node #: 0, Diagonal Node #: 25, (61) 
+Element #: 1, Current Node #: 1, Diagonal Node #: 24, (60) 
+Element #: 1, Current Node #: 3, Diagonal Node #: 22, (54) 
+Element #: 1, Current Node #: 4, Diagonal Node #: 21, (53) 
+Element #: 1, Current Node #: 21, Diagonal Node #: 4, (12) 
+Element #: 1, Current Node #: 22, Diagonal Node #: 3, (11) 
+Element #: 1, Current Node #: 24, Diagonal Node #: 1, (5) 
+Element #: 1, Current Node #: 25, Diagonal Node #: 0, (4) 
+Element #: 2, Current Node #: 1, Diagonal Node #: 26, (62) 
+Element #: 2, Current Node #: 2, Diagonal Node #: 25, (61) 
+Element #: 2, Current Node #: 4, Diagonal Node #: 23, (55) 
+Element #: 2, Current Node #: 5, Diagonal Node #: 22, (54) 
+Element #: 2, Current Node #: 22, Diagonal Node #: 5, (13) 
+Element #: 2, Current Node #: 23, Diagonal Node #: 4, (12) 
+Element #: 2, Current Node #: 25, Diagonal Node #: 2, (6) 
+Element #: 2, Current Node #: 26, Diagonal Node #: 1, (5) 
+Element #: 3, Current Node #: 148, Diagonal Node #: 27, (67) 
+Element #: 3, Current Node #: 3, Diagonal Node #: 156, (66) 
+Element #: 3, Current Node #: 149, Diagonal Node #: 24, (60) 
+Element #: 3, Current Node #: 6, Diagonal Node #: 155, (59) 
+Element #: 3, Current Node #: 155, Diagonal Node #: 6, (18) 
+Element #: 3, Current Node #: 24, Diagonal Node #: 149, (17) 
+Element #: 3, Current Node #: 156, Diagonal Node #: 3, (11) 
+Element #: 3, Current Node #: 27, Diagonal Node #: 148, (10) 
+Element #: 4, Current Node #: 3, Diagonal Node #: 28, (68) 
+Element #: 4, Current Node #: 4, Diagonal Node #: 27, (67) 
+Element #: 4, Current Node #: 6, Diagonal Node #: 25, (61) 
+Element #: 4, Current Node #: 7, Diagonal Node #: 24, (60) 
+Element #: 4, Current Node #: 24, Diagonal Node #: 7, (19) 
+Element #: 4, Current Node #: 25, Diagonal Node #: 6, (18) 
+Element #: 4, Current Node #: 27, Diagonal Node #: 4, (12) 
+Element #: 4, Current Node #: 28, Diagonal Node #: 3, (11) 
+Element #: 5, Current Node #: 4, Diagonal Node #: 29, (69) 
+Element #: 5, Current Node #: 5, Diagonal Node #: 28, (68) 
+Element #: 5, Current Node #: 7, Diagonal Node #: 26, (62) 
+Element #: 5, Current Node #: 8, Diagonal Node #: 25, (61) 
+Element #: 5, Current Node #: 25, Diagonal Node #: 8, (20) 
+Element #: 5, Current Node #: 26, Diagonal Node #: 7, (19) 
+Element #: 5, Current Node #: 28, Diagonal Node #: 5, (13) 
+Element #: 5, Current Node #: 29, Diagonal Node #: 4, (12) 
+Element #: 6, Current Node #: 149, Diagonal Node #: 30, (74) 
+Element #: 6, Current Node #: 6, Diagonal Node #: 157, (73) 
+Element #: 6, Current Node #: 150, Diagonal Node #: 27, (67) 
+Element #: 6, Current Node #: 9, Diagonal Node #: 156, (66) 
+Element #: 6, Current Node #: 156, Diagonal Node #: 9, (25) 
+Element #: 6, Current Node #: 27, Diagonal Node #: 150, (24) 
+Element #: 6, Current Node #: 157, Diagonal Node #: 6, (18) 
+Element #: 6, Current Node #: 30, Diagonal Node #: 149, (17) 
+Element #: 7, Current Node #: 6, Diagonal Node #: 31, (75) 
+Element #: 7, Current Node #: 7, Diagonal Node #: 30, (74) 
+Element #: 7, Current Node #: 9, Diagonal Node #: 28, (68) 
+Element #: 7, Current Node #: 10, Diagonal Node #: 27, (67) 
+Element #: 7, Current Node #: 27, Diagonal Node #: 10, (26) 
+Element #: 7, Current Node #: 28, Diagonal Node #: 9, (25) 
+Element #: 7, Current Node #: 30, Diagonal Node #: 7, (19) 
+Element #: 7, Current Node #: 31, Diagonal Node #: 6, (18) 
+Element #: 8, Current Node #: 7, Diagonal Node #: 32, (76) 
+Element #: 8, Current Node #: 8, Diagonal Node #: 31, (75) 
+Element #: 8, Current Node #: 10, Diagonal Node #: 29, (69) 
+Element #: 8, Current Node #: 11, Diagonal Node #: 28, (68) 
+Element #: 8, Current Node #: 28, Diagonal Node #: 11, (27) 
+Element #: 8, Current Node #: 29, Diagonal Node #: 10, (26) 
+Element #: 8, Current Node #: 31, Diagonal Node #: 8, (20) 
+Element #: 8, Current Node #: 32, Diagonal Node #: 7, (19) 
+Element #: 9, Current Node #: 150, Diagonal Node #: 33, (81) 
+Element #: 9, Current Node #: 9, Diagonal Node #: 158, (80) 
+Element #: 9, Current Node #: 151, Diagonal Node #: 30, (74) 
+Element #: 9, Current Node #: 12, Diagonal Node #: 157, (73) 
+Element #: 9, Current Node #: 157, Diagonal Node #: 12, (32) 
+Element #: 9, Current Node #: 30, Diagonal Node #: 151, (31) 
+Element #: 9, Current Node #: 158, Diagonal Node #: 9, (25) 
+Element #: 9, Current Node #: 33, Diagonal Node #: 150, (24) 
+Element #: 10, Current Node #: 9, Diagonal Node #: 34, (82) 
+Element #: 10, Current Node #: 10, Diagonal Node #: 33, (81) 
+Element #: 10, Current Node #: 12, Diagonal Node #: 31, (75) 
+Element #: 10, Current Node #: 13, Diagonal Node #: 30, (74) 
+Element #: 10, Current Node #: 30, Diagonal Node #: 13, (33) 
+Element #: 10, Current Node #: 31, Diagonal Node #: 12, (32) 
+Element #: 10, Current Node #: 33, Diagonal Node #: 10, (26) 
+Element #: 10, Current Node #: 34, Diagonal Node #: 9, (25) 
+Element #: 11, Current Node #: 10, Diagonal Node #: 35, (83) 
+Element #: 11, Current Node #: 11, Diagonal Node #: 34, (82) 
+Element #: 11, Current Node #: 13, Diagonal Node #: 32, (76) 
+Element #: 11, Current Node #: 14, Diagonal Node #: 31, (75) 
+Element #: 11, Current Node #: 31, Diagonal Node #: 14, (34) 
+Element #: 11, Current Node #: 32, Diagonal Node #: 13, (33) 
+Element #: 11, Current Node #: 34, Diagonal Node #: 11, (27) 
+Element #: 11, Current Node #: 35, Diagonal Node #: 10, (26) 
+Element #: 12, Current Node #: 151, Diagonal Node #: 36, (88) 
+Element #: 12, Current Node #: 12, Diagonal Node #: 159, (87) 
+Element #: 12, Current Node #: 152, Diagonal Node #: 33, (81) 
+Element #: 12, Current Node #: 15, Diagonal Node #: 158, (80) 
+Element #: 12, Current Node #: 158, Diagonal Node #: 15, (39) 
+Element #: 12, Current Node #: 33, Diagonal Node #: 152, (38) 
+Element #: 12, Current Node #: 159, Diagonal Node #: 12, (32) 
+Element #: 12, Current Node #: 36, Diagonal Node #: 151, (31) 
+Element #: 13, Current Node #: 12, Diagonal Node #: 37, (89) 
+Element #: 13, Current Node #: 13, Diagonal Node #: 36, (88) 
+Element #: 13, Current Node #: 15, Diagonal Node #: 34, (82) 
+Element #: 13, Current Node #: 16, Diagonal Node #: 33, (81) 
+Element #: 13, Current Node #: 33, Diagonal Node #: 16, (40) 
+Element #: 13, Current Node #: 34, Diagonal Node #: 15, (39) 
+Element #: 13, Current Node #: 36, Diagonal Node #: 13, (33) 
+Element #: 13, Current Node #: 37, Diagonal Node #: 12, (32) 
+Element #: 14, Current Node #: 13, Diagonal Node #: 38, (90) 
+Element #: 14, Current Node #: 14, Diagonal Node #: 37, (89) 
+Element #: 14, Current Node #: 16, Diagonal Node #: 35, (83) 
+Element #: 14, Current Node #: 17, Diagonal Node #: 34, (82) 
+Element #: 14, Current Node #: 34, Diagonal Node #: 17, (41) 
+Element #: 14, Current Node #: 35, Diagonal Node #: 16, (40) 
+Element #: 14, Current Node #: 37, Diagonal Node #: 14, (34) 
+Element #: 14, Current Node #: 38, Diagonal Node #: 13, (33) 
+Element #: 15, Current Node #: 152, Diagonal Node #: 39, (95) 
+Element #: 15, Current Node #: 15, Diagonal Node #: 160, (94) 
+Element #: 15, Current Node #: 153, Diagonal Node #: 36, (88) 
+Element #: 15, Current Node #: 18, Diagonal Node #: 159, (87) 
+Element #: 15, Current Node #: 159, Diagonal Node #: 18, (46) 
+Element #: 15, Current Node #: 36, Diagonal Node #: 153, (45) 
+Element #: 15, Current Node #: 160, Diagonal Node #: 15, (39) 
+Element #: 15, Current Node #: 39, Diagonal Node #: 152, (38) 
+Element #: 16, Current Node #: 15, Diagonal Node #: 40, (96) 
+Element #: 16, Current Node #: 16, Diagonal Node #: 39, (95) 
+Element #: 16, Current Node #: 18, Diagonal Node #: 37, (89) 
+Element #: 16, Current Node #: 19, Diagonal Node #: 36, (88) 
+Element #: 16, Current Node #: 36, Diagonal Node #: 19, (47) 
+Element #: 16, Current Node #: 37, Diagonal Node #: 18, (46) 
+Element #: 16, Current Node #: 39, Diagonal Node #: 16, (40) 
+Element #: 16, Current Node #: 40, Diagonal Node #: 15, (39) 
+Element #: 17, Current Node #: 16, Diagonal Node #: 41, (97) 
+Element #: 17, Current Node #: 17, Diagonal Node #: 40, (96) 
+Element #: 17, Current Node #: 19, Diagonal Node #: 38, (90) 
+Element #: 17, Current Node #: 20, Diagonal Node #: 37, (89) 
+Element #: 17, Current Node #: 37, Diagonal Node #: 20, (48) 
+Element #: 17, Current Node #: 38, Diagonal Node #: 19, (47) 
+Element #: 17, Current Node #: 40, Diagonal Node #: 17, (41) 
+Element #: 17, Current Node #: 41, Diagonal Node #: 16, (40) 
+Element #: 18, Current Node #: 154, Diagonal Node #: 45, (109) 
+Element #: 18, Current Node #: 21, Diagonal Node #: 162, (108) 
+Element #: 18, Current Node #: 155, Diagonal Node #: 42, (102) 
+Element #: 18, Current Node #: 24, Diagonal Node #: 161, (101) 
+Element #: 18, Current Node #: 161, Diagonal Node #: 24, (60) 
+Element #: 18, Current Node #: 42, Diagonal Node #: 155, (59) 
+Element #: 18, Current Node #: 162, Diagonal Node #: 21, (53) 
+Element #: 18, Current Node #: 45, Diagonal Node #: 154, (52) 
+Element #: 19, Current Node #: 21, Diagonal Node #: 46, (110) 
+Element #: 19, Current Node #: 22, Diagonal Node #: 45, (109) 
+Element #: 19, Current Node #: 24, Diagonal Node #: 43, (103) 
+Element #: 19, Current Node #: 25, Diagonal Node #: 42, (102) 
+Element #: 19, Current Node #: 42, Diagonal Node #: 25, (61) 
+Element #: 19, Current Node #: 43, Diagonal Node #: 24, (60) 
+Element #: 19, Current Node #: 45, Diagonal Node #: 22, (54) 
+Element #: 19, Current Node #: 46, Diagonal Node #: 21, (53) 
+Element #: 20, Current Node #: 22, Diagonal Node #: 47, (111) 
+Element #: 20, Current Node #: 23, Diagonal Node #: 46, (110) 
+Element #: 20, Current Node #: 25, Diagonal Node #: 44, (104) 
+Element #: 20, Current Node #: 26, Diagonal Node #: 43, (103) 
+Element #: 20, Current Node #: 43, Diagonal Node #: 26, (62) 
+Element #: 20, Current Node #: 44, Diagonal Node #: 25, (61) 
+Element #: 20, Current Node #: 46, Diagonal Node #: 23, (55) 
+Element #: 20, Current Node #: 47, Diagonal Node #: 22, (54) 
+Element #: 21, Current Node #: 155, Diagonal Node #: 48, (116) 
+Element #: 21, Current Node #: 24, Diagonal Node #: 163, (115) 
+Element #: 21, Current Node #: 156, Diagonal Node #: 45, (109) 
+Element #: 21, Current Node #: 27, Diagonal Node #: 162, (108) 
+Element #: 21, Current Node #: 162, Diagonal Node #: 27, (67) 
+Element #: 21, Current Node #: 45, Diagonal Node #: 156, (66) 
+Element #: 21, Current Node #: 163, Diagonal Node #: 24, (60) 
+Element #: 21, Current Node #: 48, Diagonal Node #: 155, (59) 
+Element #: 22, Current Node #: 24, Diagonal Node #: 49, (117) 
+Element #: 22, Current Node #: 25, Diagonal Node #: 48, (116) 
+Element #: 22, Current Node #: 27, Diagonal Node #: 46, (110) 
+Element #: 22, Current Node #: 28, Diagonal Node #: 45, (109) 
+Element #: 22, Current Node #: 45, Diagonal Node #: 28, (68) 
+Element #: 22, Current Node #: 46, Diagonal Node #: 27, (67) 
+Element #: 22, Current Node #: 48, Diagonal Node #: 25, (61) 
+Element #: 22, Current Node #: 49, Diagonal Node #: 24, (60) 
+Element #: 23, Current Node #: 25, Diagonal Node #: 50, (118) 
+Element #: 23, Current Node #: 26, Diagonal Node #: 49, (117) 
+Element #: 23, Current Node #: 28, Diagonal Node #: 47, (111) 
+Element #: 23, Current Node #: 29, Diagonal Node #: 46, (110) 
+Element #: 23, Current Node #: 46, Diagonal Node #: 29, (69) 
+Element #: 23, Current Node #: 47, Diagonal Node #: 28, (68) 
+Element #: 23, Current Node #: 49, Diagonal Node #: 26, (62) 
+Element #: 23, Current Node #: 50, Diagonal Node #: 25, (61) 
+Element #: 24, Current Node #: 156, Diagonal Node #: 51, (123) 
+Element #: 24, Current Node #: 27, Diagonal Node #: 164, (122) 
+Element #: 24, Current Node #: 157, Diagonal Node #: 48, (116) 
+Element #: 24, Current Node #: 30, Diagonal Node #: 163, (115) 
+Element #: 24, Current Node #: 163, Diagonal Node #: 30, (74) 
+Element #: 24, Current Node #: 48, Diagonal Node #: 157, (73) 
+Element #: 24, Current Node #: 164, Diagonal Node #: 27, (67) 
+Element #: 24, Current Node #: 51, Diagonal Node #: 156, (66) 
+Element #: 25, Current Node #: 27, Diagonal Node #: 52, (124) 
+Element #: 25, Current Node #: 28, Diagonal Node #: 51, (123) 
+Element #: 25, Current Node #: 30, Diagonal Node #: 49, (117) 
+Element #: 25, Current Node #: 31, Diagonal Node #: 48, (116) 
+Element #: 25, Current Node #: 48, Diagonal Node #: 31, (75) 
+Element #: 25, Current Node #: 49, Diagonal Node #: 30, (74) 
+Element #: 25, Current Node #: 51, Diagonal Node #: 28, (68) 
+Element #: 25, Current Node #: 52, Diagonal Node #: 27, (67) 
+Element #: 26, Current Node #: 28, Diagonal Node #: 53, (125) 
+Element #: 26, Current Node #: 29, Diagonal Node #: 52, (124) 
+Element #: 26, Current Node #: 31, Diagonal Node #: 50, (118) 
+Element #: 26, Current Node #: 32, Diagonal Node #: 49, (117) 
+Element #: 26, Current Node #: 49, Diagonal Node #: 32, (76) 
+Element #: 26, Current Node #: 50, Diagonal Node #: 31, (75) 
+Element #: 26, Current Node #: 52, Diagonal Node #: 29, (69) 
+Element #: 26, Current Node #: 53, Diagonal Node #: 28, (68) 
+Element #: 27, Current Node #: 157, Diagonal Node #: 54, (130) 
+Element #: 27, Current Node #: 30, Diagonal Node #: 165, (129) 
+Element #: 27, Current Node #: 158, Diagonal Node #: 51, (123) 
+Element #: 27, Current Node #: 33, Diagonal Node #: 164, (122) 
+Element #: 27, Current Node #: 164, Diagonal Node #: 33, (81) 
+Element #: 27, Current Node #: 51, Diagonal Node #: 158, (80) 
+Element #: 27, Current Node #: 165, Diagonal Node #: 30, (74) 
+Element #: 27, Current Node #: 54, Diagonal Node #: 157, (73) 
+Element #: 28, Current Node #: 30, Diagonal Node #: 55, (131) 
+Element #: 28, Current Node #: 31, Diagonal Node #: 54, (130) 
+Element #: 28, Current Node #: 33, Diagonal Node #: 52, (124) 
+Element #: 28, Current Node #: 34, Diagonal Node #: 51, (123) 
+Element #: 28, Current Node #: 51, Diagonal Node #: 34, (82) 
+Element #: 28, Current Node #: 52, Diagonal Node #: 33, (81) 
+Element #: 28, Current Node #: 54, Diagonal Node #: 31, (75) 
+Element #: 28, Current Node #: 55, Diagonal Node #: 30, (74) 
+Element #: 29, Current Node #: 31, Diagonal Node #: 56, (132) 
+Element #: 29, Current Node #: 32, Diagonal Node #: 55, (131) 
+Element #: 29, Current Node #: 34, Diagonal Node #: 53, (125) 
+Element #: 29, Current Node #: 35, Diagonal Node #: 52, (124) 
+Element #: 29, Current Node #: 52, Diagonal Node #: 35, (83) 
+Element #: 29, Current Node #: 53, Diagonal Node #: 34, (82) 
+Element #: 29, Current Node #: 55, Diagonal Node #: 32, (76) 
+Element #: 29, Current Node #: 56, Diagonal Node #: 31, (75) 
+Element #: 30, Current Node #: 158, Diagonal Node #: 57, (137) 
+Element #: 30, Current Node #: 33, Diagonal Node #: 166, (136) 
+Element #: 30, Current Node #: 159, Diagonal Node #: 54, (130) 
+Element #: 30, Current Node #: 36, Diagonal Node #: 165, (129) 
+Element #: 30, Current Node #: 165, Diagonal Node #: 36, (88) 
+Element #: 30, Current Node #: 54, Diagonal Node #: 159, (87) 
+Element #: 30, Current Node #: 166, Diagonal Node #: 33, (81) 
+Element #: 30, Current Node #: 57, Diagonal Node #: 158, (80) 
+Element #: 31, Current Node #: 33, Diagonal Node #: 58, (138) 
+Element #: 31, Current Node #: 34, Diagonal Node #: 57, (137) 
+Element #: 31, Current Node #: 36, Diagonal Node #: 55, (131) 
+Element #: 31, Current Node #: 37, Diagonal Node #: 54, (130) 
+Element #: 31, Current Node #: 54, Diagonal Node #: 37, (89) 
+Element #: 31, Current Node #: 55, Diagonal Node #: 36, (88) 
+Element #: 31, Current Node #: 57, Diagonal Node #: 34, (82) 
+Element #: 31, Current Node #: 58, Diagonal Node #: 33, (81) 
+Element #: 32, Current Node #: 34, Diagonal Node #: 59, (139) 
+Element #: 32, Current Node #: 35, Diagonal Node #: 58, (138) 
+Element #: 32, Current Node #: 37, Diagonal Node #: 56, (132) 
+Element #: 32, Current Node #: 38, Diagonal Node #: 55, (131) 
+Element #: 32, Current Node #: 55, Diagonal Node #: 38, (90) 
+Element #: 32, Current Node #: 56, Diagonal Node #: 37, (89) 
+Element #: 32, Current Node #: 58, Diagonal Node #: 35, (83) 
+Element #: 32, Current Node #: 59, Diagonal Node #: 34, (82) 
+Element #: 33, Current Node #: 159, Diagonal Node #: 60, (144) 
+Element #: 33, Current Node #: 36, Diagonal Node #: 167, (143) 
+Element #: 33, Current Node #: 160, Diagonal Node #: 57, (137) 
+Element #: 33, Current Node #: 39, Diagonal Node #: 166, (136) 
+Element #: 33, Current Node #: 166, Diagonal Node #: 39, (95) 
+Element #: 33, Current Node #: 57, Diagonal Node #: 160, (94) 
+Element #: 33, Current Node #: 167, Diagonal Node #: 36, (88) 
+Element #: 33, Current Node #: 60, Diagonal Node #: 159, (87) 
+Element #: 34, Current Node #: 36, Diagonal Node #: 61, (145) 
+Element #: 34, Current Node #: 37, Diagonal Node #: 60, (144) 
+Element #: 34, Current Node #: 39, Diagonal Node #: 58, (138) 
+Element #: 34, Current Node #: 40, Diagonal Node #: 57, (137) 
+Element #: 34, Current Node #: 57, Diagonal Node #: 40, (96) 
+Element #: 34, Current Node #: 58, Diagonal Node #: 39, (95) 
+Element #: 34, Current Node #: 60, Diagonal Node #: 37, (89) 
+Element #: 34, Current Node #: 61, Diagonal Node #: 36, (88) 
+Element #: 35, Current Node #: 37, Diagonal Node #: 62, (146) 
+Element #: 35, Current Node #: 38, Diagonal Node #: 61, (145) 
+Element #: 35, Current Node #: 40, Diagonal Node #: 59, (139) 
+Element #: 35, Current Node #: 41, Diagonal Node #: 58, (138) 
+Element #: 35, Current Node #: 58, Diagonal Node #: 41, (97) 
+Element #: 35, Current Node #: 59, Diagonal Node #: 40, (96) 
+Element #: 35, Current Node #: 61, Diagonal Node #: 38, (90) 
+Element #: 35, Current Node #: 62, Diagonal Node #: 37, (89) 
+Element #: 36, Current Node #: 161, Diagonal Node #: 66, (158) 
+Element #: 36, Current Node #: 42, Diagonal Node #: 169, (157) 
+Element #: 36, Current Node #: 162, Diagonal Node #: 63, (151) 
+Element #: 36, Current Node #: 45, Diagonal Node #: 168, (150) 
+Element #: 36, Current Node #: 168, Diagonal Node #: 45, (109) 
+Element #: 36, Current Node #: 63, Diagonal Node #: 162, (108) 
+Element #: 36, Current Node #: 169, Diagonal Node #: 42, (102) 
+Element #: 36, Current Node #: 66, Diagonal Node #: 161, (101) 
+Element #: 37, Current Node #: 42, Diagonal Node #: 67, (159) 
+Element #: 37, Current Node #: 43, Diagonal Node #: 66, (158) 
+Element #: 37, Current Node #: 45, Diagonal Node #: 64, (152) 
+Element #: 37, Current Node #: 46, Diagonal Node #: 63, (151) 
+Element #: 37, Current Node #: 63, Diagonal Node #: 46, (110) 
+Element #: 37, Current Node #: 64, Diagonal Node #: 45, (109) 
+Element #: 37, Current Node #: 66, Diagonal Node #: 43, (103) 
+Element #: 37, Current Node #: 67, Diagonal Node #: 42, (102) 
+Element #: 38, Current Node #: 43, Diagonal Node #: 68, (160) 
+Element #: 38, Current Node #: 44, Diagonal Node #: 67, (159) 
+Element #: 38, Current Node #: 46, Diagonal Node #: 65, (153) 
+Element #: 38, Current Node #: 47, Diagonal Node #: 64, (152) 
+Element #: 38, Current Node #: 64, Diagonal Node #: 47, (111) 
+Element #: 38, Current Node #: 65, Diagonal Node #: 46, (110) 
+Element #: 38, Current Node #: 67, Diagonal Node #: 44, (104) 
+Element #: 38, Current Node #: 68, Diagonal Node #: 43, (103) 
+Element #: 39, Current Node #: 162, Diagonal Node #: 69, (165) 
+Element #: 39, Current Node #: 45, Diagonal Node #: 170, (164) 
+Element #: 39, Current Node #: 163, Diagonal Node #: 66, (158) 
+Element #: 39, Current Node #: 48, Diagonal Node #: 169, (157) 
+Element #: 39, Current Node #: 169, Diagonal Node #: 48, (116) 
+Element #: 39, Current Node #: 66, Diagonal Node #: 163, (115) 
+Element #: 39, Current Node #: 170, Diagonal Node #: 45, (109) 
+Element #: 39, Current Node #: 69, Diagonal Node #: 162, (108) 
+Element #: 40, Current Node #: 45, Diagonal Node #: 70, (166) 
+Element #: 40, Current Node #: 46, Diagonal Node #: 69, (165) 
+Element #: 40, Current Node #: 48, Diagonal Node #: 67, (159) 
+Element #: 40, Current Node #: 49, Diagonal Node #: 66, (158) 
+Element #: 40, Current Node #: 66, Diagonal Node #: 49, (117) 
+Element #: 40, Current Node #: 67, Diagonal Node #: 48, (116) 
+Element #: 40, Current Node #: 69, Diagonal Node #: 46, (110) 
+Element #: 40, Current Node #: 70, Diagonal Node #: 45, (109) 
+Element #: 41, Current Node #: 46, Diagonal Node #: 71, (167) 
+Element #: 41, Current Node #: 47, Diagonal Node #: 70, (166) 
+Element #: 41, Current Node #: 49, Diagonal Node #: 68, (160) 
+Element #: 41, Current Node #: 50, Diagonal Node #: 67, (159) 
+Element #: 41, Current Node #: 67, Diagonal Node #: 50, (118) 
+Element #: 41, Current Node #: 68, Diagonal Node #: 49, (117) 
+Element #: 41, Current Node #: 70, Diagonal Node #: 47, (111) 
+Element #: 41, Current Node #: 71, Diagonal Node #: 46, (110) 
+Element #: 42, Current Node #: 163, Diagonal Node #: 72, (172) 
+Element #: 42, Current Node #: 48, Diagonal Node #: 171, (171) 
+Element #: 42, Current Node #: 164, Diagonal Node #: 69, (165) 
+Element #: 42, Current Node #: 51, Diagonal Node #: 170, (164) 
+Element #: 42, Current Node #: 170, Diagonal Node #: 51, (123) 
+Element #: 42, Current Node #: 69, Diagonal Node #: 164, (122) 
+Element #: 42, Current Node #: 171, Diagonal Node #: 48, (116) 
+Element #: 42, Current Node #: 72, Diagonal Node #: 163, (115) 
+Element #: 43, Current Node #: 48, Diagonal Node #: 73, (173) 
+Element #: 43, Current Node #: 49, Diagonal Node #: 72, (172) 
+Element #: 43, Current Node #: 51, Diagonal Node #: 70, (166) 
+Element #: 43, Current Node #: 52, Diagonal Node #: 69, (165) 
+Element #: 43, Current Node #: 69, Diagonal Node #: 52, (124) 
+Element #: 43, Current Node #: 70, Diagonal Node #: 51, (123) 
+Element #: 43, Current Node #: 72, Diagonal Node #: 49, (117) 
+Element #: 43, Current Node #: 73, Diagonal Node #: 48, (116) 
+Element #: 44, Current Node #: 49, Diagonal Node #: 74, (174) 
+Element #: 44, Current Node #: 50, Diagonal Node #: 73, (173) 
+Element #: 44, Current Node #: 52, Diagonal Node #: 71, (167) 
+Element #: 44, Current Node #: 53, Diagonal Node #: 70, (166) 
+Element #: 44, Current Node #: 70, Diagonal Node #: 53, (125) 
+Element #: 44, Current Node #: 71, Diagonal Node #: 52, (124) 
+Element #: 44, Current Node #: 73, Diagonal Node #: 50, (118) 
+Element #: 44, Current Node #: 74, Diagonal Node #: 49, (117) 
+Element #: 45, Current Node #: 164, Diagonal Node #: 75, (179) 
+Element #: 45, Current Node #: 51, Diagonal Node #: 172, (178) 
+Element #: 45, Current Node #: 165, Diagonal Node #: 72, (172) 
+Element #: 45, Current Node #: 54, Diagonal Node #: 171, (171) 
+Element #: 45, Current Node #: 171, Diagonal Node #: 54, (130) 
+Element #: 45, Current Node #: 72, Diagonal Node #: 165, (129) 
+Element #: 45, Current Node #: 172, Diagonal Node #: 51, (123) 
+Element #: 45, Current Node #: 75, Diagonal Node #: 164, (122) 
+Element #: 46, Current Node #: 51, Diagonal Node #: 76, (180) 
+Element #: 46, Current Node #: 52, Diagonal Node #: 75, (179) 
+Element #: 46, Current Node #: 54, Diagonal Node #: 73, (173) 
+Element #: 46, Current Node #: 55, Diagonal Node #: 72, (172) 
+Element #: 46, Current Node #: 72, Diagonal Node #: 55, (131) 
+Element #: 46, Current Node #: 73, Diagonal Node #: 54, (130) 
+Element #: 46, Current Node #: 75, Diagonal Node #: 52, (124) 
+Element #: 46, Current Node #: 76, Diagonal Node #: 51, (123) 
+Element #: 47, Current Node #: 52, Diagonal Node #: 77, (181) 
+Element #: 47, Current Node #: 53, Diagonal Node #: 76, (180) 
+Element #: 47, Current Node #: 55, Diagonal Node #: 74, (174) 
+Element #: 47, Current Node #: 56, Diagonal Node #: 73, (173) 
+Element #: 47, Current Node #: 73, Diagonal Node #: 56, (132) 
+Element #: 47, Current Node #: 74, Diagonal Node #: 55, (131) 
+Element #: 47, Current Node #: 76, Diagonal Node #: 53, (125) 
+Element #: 47, Current Node #: 77, Diagonal Node #: 52, (124) 
+Element #: 48, Current Node #: 165, Diagonal Node #: 78, (186) 
+Element #: 48, Current Node #: 54, Diagonal Node #: 173, (185) 
+Element #: 48, Current Node #: 166, Diagonal Node #: 75, (179) 
+Element #: 48, Current Node #: 57, Diagonal Node #: 172, (178) 
+Element #: 48, Current Node #: 172, Diagonal Node #: 57, (137) 
+Element #: 48, Current Node #: 75, Diagonal Node #: 166, (136) 
+Element #: 48, Current Node #: 173, Diagonal Node #: 54, (130) 
+Element #: 48, Current Node #: 78, Diagonal Node #: 165, (129) 
+Element #: 49, Current Node #: 54, Diagonal Node #: 79, (187) 
+Element #: 49, Current Node #: 55, Diagonal Node #: 78, (186) 
+Element #: 49, Current Node #: 57, Diagonal Node #: 76, (180) 
+Element #: 49, Current Node #: 58, Diagonal Node #: 75, (179) 
+Element #: 49, Current Node #: 75, Diagonal Node #: 58, (138) 
+Element #: 49, Current Node #: 76, Diagonal Node #: 57, (137) 
+Element #: 49, Current Node #: 78, Diagonal Node #: 55, (131) 
+Element #: 49, Current Node #: 79, Diagonal Node #: 54, (130) 
+Element #: 50, Current Node #: 55, Diagonal Node #: 80, (188) 
+Element #: 50, Current Node #: 56, Diagonal Node #: 79, (187) 
+Element #: 50, Current Node #: 58, Diagonal Node #: 77, (181) 
+Element #: 50, Current Node #: 59, Diagonal Node #: 76, (180) 
+Element #: 50, Current Node #: 76, Diagonal Node #: 59, (139) 
+Element #: 50, Current Node #: 77, Diagonal Node #: 58, (138) 
+Element #: 50, Current Node #: 79, Diagonal Node #: 56, (132) 
+Element #: 50, Current Node #: 80, Diagonal Node #: 55, (131) 
+Element #: 51, Current Node #: 166, Diagonal Node #: 81, (193) 
+Element #: 51, Current Node #: 57, Diagonal Node #: 174, (192) 
+Element #: 51, Current Node #: 167, Diagonal Node #: 78, (186) 
+Element #: 51, Current Node #: 60, Diagonal Node #: 173, (185) 
+Element #: 51, Current Node #: 173, Diagonal Node #: 60, (144) 
+Element #: 51, Current Node #: 78, Diagonal Node #: 167, (143) 
+Element #: 51, Current Node #: 174, Diagonal Node #: 57, (137) 
+Element #: 51, Current Node #: 81, Diagonal Node #: 166, (136) 
+Element #: 52, Current Node #: 57, Diagonal Node #: 82, (194) 
+Element #: 52, Current Node #: 58, Diagonal Node #: 81, (193) 
+Element #: 52, Current Node #: 60, Diagonal Node #: 79, (187) 
+Element #: 52, Current Node #: 61, Diagonal Node #: 78, (186) 
+Element #: 52, Current Node #: 78, Diagonal Node #: 61, (145) 
+Element #: 52, Current Node #: 79, Diagonal Node #: 60, (144) 
+Element #: 52, Current Node #: 81, Diagonal Node #: 58, (138) 
+Element #: 52, Current Node #: 82, Diagonal Node #: 57, (137) 
+Element #: 53, Current Node #: 58, Diagonal Node #: 83, (195) 
+Element #: 53, Current Node #: 59, Diagonal Node #: 82, (194) 
+Element #: 53, Current Node #: 61, Diagonal Node #: 80, (188) 
+Element #: 53, Current Node #: 62, Diagonal Node #: 79, (187) 
+Element #: 53, Current Node #: 79, Diagonal Node #: 62, (146) 
+Element #: 53, Current Node #: 80, Diagonal Node #: 61, (145) 
+Element #: 53, Current Node #: 82, Diagonal Node #: 59, (139) 
+Element #: 53, Current Node #: 83, Diagonal Node #: 58, (138) 
+Element #: 54, Current Node #: 168, Diagonal Node #: 87, (207) 
+Element #: 54, Current Node #: 63, Diagonal Node #: 176, (206) 
+Element #: 54, Current Node #: 169, Diagonal Node #: 84, (200) 
+Element #: 54, Current Node #: 66, Diagonal Node #: 175, (199) 
+Element #: 54, Current Node #: 175, Diagonal Node #: 66, (158) 
+Element #: 54, Current Node #: 84, Diagonal Node #: 169, (157) 
+Element #: 54, Current Node #: 176, Diagonal Node #: 63, (151) 
+Element #: 54, Current Node #: 87, Diagonal Node #: 168, (150) 
+Element #: 55, Current Node #: 63, Diagonal Node #: 88, (208) 
+Element #: 55, Current Node #: 64, Diagonal Node #: 87, (207) 
+Element #: 55, Current Node #: 66, Diagonal Node #: 85, (201) 
+Element #: 55, Current Node #: 67, Diagonal Node #: 84, (200) 
+Element #: 55, Current Node #: 84, Diagonal Node #: 67, (159) 
+Element #: 55, Current Node #: 85, Diagonal Node #: 66, (158) 
+Element #: 55, Current Node #: 87, Diagonal Node #: 64, (152) 
+Element #: 55, Current Node #: 88, Diagonal Node #: 63, (151) 
+Element #: 56, Current Node #: 64, Diagonal Node #: 89, (209) 
+Element #: 56, Current Node #: 65, Diagonal Node #: 88, (208) 
+Element #: 56, Current Node #: 67, Diagonal Node #: 86, (202) 
+Element #: 56, Current Node #: 68, Diagonal Node #: 85, (201) 
+Element #: 56, Current Node #: 85, Diagonal Node #: 68, (160) 
+Element #: 56, Current Node #: 86, Diagonal Node #: 67, (159) 
+Element #: 56, Current Node #: 88, Diagonal Node #: 65, (153) 
+Element #: 56, Current Node #: 89, Diagonal Node #: 64, (152) 
+Element #: 57, Current Node #: 169, Diagonal Node #: 90, (214) 
+Element #: 57, Current Node #: 66, Diagonal Node #: 177, (213) 
+Element #: 57, Current Node #: 170, Diagonal Node #: 87, (207) 
+Element #: 57, Current Node #: 69, Diagonal Node #: 176, (206) 
+Element #: 57, Current Node #: 176, Diagonal Node #: 69, (165) 
+Element #: 57, Current Node #: 87, Diagonal Node #: 170, (164) 
+Element #: 57, Current Node #: 177, Diagonal Node #: 66, (158) 
+Element #: 57, Current Node #: 90, Diagonal Node #: 169, (157) 
+Element #: 58, Current Node #: 66, Diagonal Node #: 91, (215) 
+Element #: 58, Current Node #: 67, Diagonal Node #: 90, (214) 
+Element #: 58, Current Node #: 69, Diagonal Node #: 88, (208) 
+Element #: 58, Current Node #: 70, Diagonal Node #: 87, (207) 
+Element #: 58, Current Node #: 87, Diagonal Node #: 70, (166) 
+Element #: 58, Current Node #: 88, Diagonal Node #: 69, (165) 
+Element #: 58, Current Node #: 90, Diagonal Node #: 67, (159) 
+Element #: 58, Current Node #: 91, Diagonal Node #: 66, (158) 
+Element #: 59, Current Node #: 67, Diagonal Node #: 92, (216) 
+Element #: 59, Current Node #: 68, Diagonal Node #: 91, (215) 
+Element #: 59, Current Node #: 70, Diagonal Node #: 89, (209) 
+Element #: 59, Current Node #: 71, Diagonal Node #: 88, (208) 
+Element #: 59, Current Node #: 88, Diagonal Node #: 71, (167) 
+Element #: 59, Current Node #: 89, Diagonal Node #: 70, (166) 
+Element #: 59, Current Node #: 91, Diagonal Node #: 68, (160) 
+Element #: 59, Current Node #: 92, Diagonal Node #: 67, (159) 
+Element #: 60, Current Node #: 170, Diagonal Node #: 93, (221) 
+Element #: 60, Current Node #: 69, Diagonal Node #: 178, (220) 
+Element #: 60, Current Node #: 171, Diagonal Node #: 90, (214) 
+Element #: 60, Current Node #: 72, Diagonal Node #: 177, (213) 
+Element #: 60, Current Node #: 177, Diagonal Node #: 72, (172) 
+Element #: 60, Current Node #: 90, Diagonal Node #: 171, (171) 
+Element #: 60, Current Node #: 178, Diagonal Node #: 69, (165) 
+Element #: 60, Current Node #: 93, Diagonal Node #: 170, (164) 
+Element #: 61, Current Node #: 69, Diagonal Node #: 94, (222) 
+Element #: 61, Current Node #: 70, Diagonal Node #: 93, (221) 
+Element #: 61, Current Node #: 72, Diagonal Node #: 91, (215) 
+Element #: 61, Current Node #: 73, Diagonal Node #: 90, (214) 
+Element #: 61, Current Node #: 90, Diagonal Node #: 73, (173) 
+Element #: 61, Current Node #: 91, Diagonal Node #: 72, (172) 
+Element #: 61, Current Node #: 93, Diagonal Node #: 70, (166) 
+Element #: 61, Current Node #: 94, Diagonal Node #: 69, (165) 
+Element #: 62, Current Node #: 70, Diagonal Node #: 95, (223) 
+Element #: 62, Current Node #: 71, Diagonal Node #: 94, (222) 
+Element #: 62, Current Node #: 73, Diagonal Node #: 92, (216) 
+Element #: 62, Current Node #: 74, Diagonal Node #: 91, (215) 
+Element #: 62, Current Node #: 91, Diagonal Node #: 74, (174) 
+Element #: 62, Current Node #: 92, Diagonal Node #: 73, (173) 
+Element #: 62, Current Node #: 94, Diagonal Node #: 71, (167) 
+Element #: 62, Current Node #: 95, Diagonal Node #: 70, (166) 
+Element #: 63, Current Node #: 171, Diagonal Node #: 96, (228) 
+Element #: 63, Current Node #: 72, Diagonal Node #: 179, (227) 
+Element #: 63, Current Node #: 172, Diagonal Node #: 93, (221) 
+Element #: 63, Current Node #: 75, Diagonal Node #: 178, (220) 
+Element #: 63, Current Node #: 178, Diagonal Node #: 75, (179) 
+Element #: 63, Current Node #: 93, Diagonal Node #: 172, (178) 
+Element #: 63, Current Node #: 179, Diagonal Node #: 72, (172) 
+Element #: 63, Current Node #: 96, Diagonal Node #: 171, (171) 
+Element #: 64, Current Node #: 72, Diagonal Node #: 97, (229) 
+Element #: 64, Current Node #: 73, Diagonal Node #: 96, (228) 
+Element #: 64, Current Node #: 75, Diagonal Node #: 94, (222) 
+Element #: 64, Current Node #: 76, Diagonal Node #: 93, (221) 
+Element #: 64, Current Node #: 93, Diagonal Node #: 76, (180) 
+Element #: 64, Current Node #: 94, Diagonal Node #: 75, (179) 
+Element #: 64, Current Node #: 96, Diagonal Node #: 73, (173) 
+Element #: 64, Current Node #: 97, Diagonal Node #: 72, (172) 
+Element #: 65, Current Node #: 73, Diagonal Node #: 98, (230) 
+Element #: 65, Current Node #: 74, Diagonal Node #: 97, (229) 
+Element #: 65, Current Node #: 76, Diagonal Node #: 95, (223) 
+Element #: 65, Current Node #: 77, Diagonal Node #: 94, (222) 
+Element #: 65, Current Node #: 94, Diagonal Node #: 77, (181) 
+Element #: 65, Current Node #: 95, Diagonal Node #: 76, (180) 
+Element #: 65, Current Node #: 97, Diagonal Node #: 74, (174) 
+Element #: 65, Current Node #: 98, Diagonal Node #: 73, (173) 
+Element #: 66, Current Node #: 172, Diagonal Node #: 99, (235) 
+Element #: 66, Current Node #: 75, Diagonal Node #: 180, (234) 
+Element #: 66, Current Node #: 173, Diagonal Node #: 96, (228) 
+Element #: 66, Current Node #: 78, Diagonal Node #: 179, (227) 
+Element #: 66, Current Node #: 179, Diagonal Node #: 78, (186) 
+Element #: 66, Current Node #: 96, Diagonal Node #: 173, (185) 
+Element #: 66, Current Node #: 180, Diagonal Node #: 75, (179) 
+Element #: 66, Current Node #: 99, Diagonal Node #: 172, (178) 
+Element #: 67, Current Node #: 75, Diagonal Node #: 100, (236) 
+Element #: 67, Current Node #: 76, Diagonal Node #: 99, (235) 
+Element #: 67, Current Node #: 78, Diagonal Node #: 97, (229) 
+Element #: 67, Current Node #: 79, Diagonal Node #: 96, (228) 
+Element #: 67, Current Node #: 96, Diagonal Node #: 79, (187) 
+Element #: 67, Current Node #: 97, Diagonal Node #: 78, (186) 
+Element #: 67, Current Node #: 99, Diagonal Node #: 76, (180) 
+Element #: 67, Current Node #: 100, Diagonal Node #: 75, (179) 
+Element #: 68, Current Node #: 76, Diagonal Node #: 101, (237) 
+Element #: 68, Current Node #: 77, Diagonal Node #: 100, (236) 
+Element #: 68, Current Node #: 79, Diagonal Node #: 98, (230) 
+Element #: 68, Current Node #: 80, Diagonal Node #: 97, (229) 
+Element #: 68, Current Node #: 97, Diagonal Node #: 80, (188) 
+Element #: 68, Current Node #: 98, Diagonal Node #: 79, (187) 
+Element #: 68, Current Node #: 100, Diagonal Node #: 77, (181) 
+Element #: 68, Current Node #: 101, Diagonal Node #: 76, (180) 
+Element #: 69, Current Node #: 173, Diagonal Node #: 102, (242) 
+Element #: 69, Current Node #: 78, Diagonal Node #: 181, (241) 
+Element #: 69, Current Node #: 174, Diagonal Node #: 99, (235) 
+Element #: 69, Current Node #: 81, Diagonal Node #: 180, (234) 
+Element #: 69, Current Node #: 180, Diagonal Node #: 81, (193) 
+Element #: 69, Current Node #: 99, Diagonal Node #: 174, (192) 
+Element #: 69, Current Node #: 181, Diagonal Node #: 78, (186) 
+Element #: 69, Current Node #: 102, Diagonal Node #: 173, (185) 
+Element #: 70, Current Node #: 78, Diagonal Node #: 103, (243) 
+Element #: 70, Current Node #: 79, Diagonal Node #: 102, (242) 
+Element #: 70, Current Node #: 81, Diagonal Node #: 100, (236) 
+Element #: 70, Current Node #: 82, Diagonal Node #: 99, (235) 
+Element #: 70, Current Node #: 99, Diagonal Node #: 82, (194) 
+Element #: 70, Current Node #: 100, Diagonal Node #: 81, (193) 
+Element #: 70, Current Node #: 102, Diagonal Node #: 79, (187) 
+Element #: 70, Current Node #: 103, Diagonal Node #: 78, (186) 
+Element #: 71, Current Node #: 79, Diagonal Node #: 104, (244) 
+Element #: 71, Current Node #: 80, Diagonal Node #: 103, (243) 
+Element #: 71, Current Node #: 82, Diagonal Node #: 101, (237) 
+Element #: 71, Current Node #: 83, Diagonal Node #: 100, (236) 
+Element #: 71, Current Node #: 100, Diagonal Node #: 83, (195) 
+Element #: 71, Current Node #: 101, Diagonal Node #: 82, (194) 
+Element #: 71, Current Node #: 103, Diagonal Node #: 80, (188) 
+Element #: 71, Current Node #: 104, Diagonal Node #: 79, (187) 
+Element #: 72, Current Node #: 175, Diagonal Node #: 108, (256) 
+Element #: 72, Current Node #: 84, Diagonal Node #: 183, (255) 
+Element #: 72, Current Node #: 176, Diagonal Node #: 105, (249) 
+Element #: 72, Current Node #: 87, Diagonal Node #: 182, (248) 
+Element #: 72, Current Node #: 182, Diagonal Node #: 87, (207) 
+Element #: 72, Current Node #: 105, Diagonal Node #: 176, (206) 
+Element #: 72, Current Node #: 183, Diagonal Node #: 84, (200) 
+Element #: 72, Current Node #: 108, Diagonal Node #: 175, (199) 
+Element #: 73, Current Node #: 84, Diagonal Node #: 109, (257) 
+Element #: 73, Current Node #: 85, Diagonal Node #: 108, (256) 
+Element #: 73, Current Node #: 87, Diagonal Node #: 106, (250) 
+Element #: 73, Current Node #: 88, Diagonal Node #: 105, (249) 
+Element #: 73, Current Node #: 105, Diagonal Node #: 88, (208) 
+Element #: 73, Current Node #: 106, Diagonal Node #: 87, (207) 
+Element #: 73, Current Node #: 108, Diagonal Node #: 85, (201) 
+Element #: 73, Current Node #: 109, Diagonal Node #: 84, (200) 
+Element #: 74, Current Node #: 85, Diagonal Node #: 110, (258) 
+Element #: 74, Current Node #: 86, Diagonal Node #: 109, (257) 
+Element #: 74, Current Node #: 88, Diagonal Node #: 107, (251) 
+Element #: 74, Current Node #: 89, Diagonal Node #: 106, (250) 
+Element #: 74, Current Node #: 106, Diagonal Node #: 89, (209) 
+Element #: 74, Current Node #: 107, Diagonal Node #: 88, (208) 
+Element #: 74, Current Node #: 109, Diagonal Node #: 86, (202) 
+Element #: 74, Current Node #: 110, Diagonal Node #: 85, (201) 
+Element #: 75, Current Node #: 176, Diagonal Node #: 111, (263) 
+Element #: 75, Current Node #: 87, Diagonal Node #: 184, (262) 
+Element #: 75, Current Node #: 177, Diagonal Node #: 108, (256) 
+Element #: 75, Current Node #: 90, Diagonal Node #: 183, (255) 
+Element #: 75, Current Node #: 183, Diagonal Node #: 90, (214) 
+Element #: 75, Current Node #: 108, Diagonal Node #: 177, (213) 
+Element #: 75, Current Node #: 184, Diagonal Node #: 87, (207) 
+Element #: 75, Current Node #: 111, Diagonal Node #: 176, (206) 
+Element #: 76, Current Node #: 87, Diagonal Node #: 112, (264) 
+Element #: 76, Current Node #: 88, Diagonal Node #: 111, (263) 
+Element #: 76, Current Node #: 90, Diagonal Node #: 109, (257) 
+Element #: 76, Current Node #: 91, Diagonal Node #: 108, (256) 
+Element #: 76, Current Node #: 108, Diagonal Node #: 91, (215) 
+Element #: 76, Current Node #: 109, Diagonal Node #: 90, (214) 
+Element #: 76, Current Node #: 111, Diagonal Node #: 88, (208) 
+Element #: 76, Current Node #: 112, Diagonal Node #: 87, (207) 
+Element #: 77, Current Node #: 88, Diagonal Node #: 113, (265) 
+Element #: 77, Current Node #: 89, Diagonal Node #: 112, (264) 
+Element #: 77, Current Node #: 91, Diagonal Node #: 110, (258) 
+Element #: 77, Current Node #: 92, Diagonal Node #: 109, (257) 
+Element #: 77, Current Node #: 109, Diagonal Node #: 92, (216) 
+Element #: 77, Current Node #: 110, Diagonal Node #: 91, (215) 
+Element #: 77, Current Node #: 112, Diagonal Node #: 89, (209) 
+Element #: 77, Current Node #: 113, Diagonal Node #: 88, (208) 
+Element #: 78, Current Node #: 177, Diagonal Node #: 114, (270) 
+Element #: 78, Current Node #: 90, Diagonal Node #: 185, (269) 
+Element #: 78, Current Node #: 178, Diagonal Node #: 111, (263) 
+Element #: 78, Current Node #: 93, Diagonal Node #: 184, (262) 
+Element #: 78, Current Node #: 184, Diagonal Node #: 93, (221) 
+Element #: 78, Current Node #: 111, Diagonal Node #: 178, (220) 
+Element #: 78, Current Node #: 185, Diagonal Node #: 90, (214) 
+Element #: 78, Current Node #: 114, Diagonal Node #: 177, (213) 
+Element #: 79, Current Node #: 90, Diagonal Node #: 115, (271) 
+Element #: 79, Current Node #: 91, Diagonal Node #: 114, (270) 
+Element #: 79, Current Node #: 93, Diagonal Node #: 112, (264) 
+Element #: 79, Current Node #: 94, Diagonal Node #: 111, (263) 
+Element #: 79, Current Node #: 111, Diagonal Node #: 94, (222) 
+Element #: 79, Current Node #: 112, Diagonal Node #: 93, (221) 
+Element #: 79, Current Node #: 114, Diagonal Node #: 91, (215) 
+Element #: 79, Current Node #: 115, Diagonal Node #: 90, (214) 
+Element #: 80, Current Node #: 91, Diagonal Node #: 116, (272) 
+Element #: 80, Current Node #: 92, Diagonal Node #: 115, (271) 
+Element #: 80, Current Node #: 94, Diagonal Node #: 113, (265) 
+Element #: 80, Current Node #: 95, Diagonal Node #: 112, (264) 
+Element #: 80, Current Node #: 112, Diagonal Node #: 95, (223) 
+Element #: 80, Current Node #: 113, Diagonal Node #: 94, (222) 
+Element #: 80, Current Node #: 115, Diagonal Node #: 92, (216) 
+Element #: 80, Current Node #: 116, Diagonal Node #: 91, (215) 
+Element #: 81, Current Node #: 178, Diagonal Node #: 117, (277) 
+Element #: 81, Current Node #: 93, Diagonal Node #: 186, (276) 
+Element #: 81, Current Node #: 179, Diagonal Node #: 114, (270) 
+Element #: 81, Current Node #: 96, Diagonal Node #: 185, (269) 
+Element #: 81, Current Node #: 185, Diagonal Node #: 96, (228) 
+Element #: 81, Current Node #: 114, Diagonal Node #: 179, (227) 
+Element #: 81, Current Node #: 186, Diagonal Node #: 93, (221) 
+Element #: 81, Current Node #: 117, Diagonal Node #: 178, (220) 
+Element #: 82, Current Node #: 93, Diagonal Node #: 118, (278) 
+Element #: 82, Current Node #: 94, Diagonal Node #: 117, (277) 
+Element #: 82, Current Node #: 96, Diagonal Node #: 115, (271) 
+Element #: 82, Current Node #: 97, Diagonal Node #: 114, (270) 
+Element #: 82, Current Node #: 114, Diagonal Node #: 97, (229) 
+Element #: 82, Current Node #: 115, Diagonal Node #: 96, (228) 
+Element #: 82, Current Node #: 117, Diagonal Node #: 94, (222) 
+Element #: 82, Current Node #: 118, Diagonal Node #: 93, (221) 
+Element #: 83, Current Node #: 94, Diagonal Node #: 119, (279) 
+Element #: 83, Current Node #: 95, Diagonal Node #: 118, (278) 
+Element #: 83, Current Node #: 97, Diagonal Node #: 116, (272) 
+Element #: 83, Current Node #: 98, Diagonal Node #: 115, (271) 
+Element #: 83, Current Node #: 115, Diagonal Node #: 98, (230) 
+Element #: 83, Current Node #: 116, Diagonal Node #: 97, (229) 
+Element #: 83, Current Node #: 118, Diagonal Node #: 95, (223) 
+Element #: 83, Current Node #: 119, Diagonal Node #: 94, (222) 
+Element #: 84, Current Node #: 179, Diagonal Node #: 120, (284) 
+Element #: 84, Current Node #: 96, Diagonal Node #: 187, (283) 
+Element #: 84, Current Node #: 180, Diagonal Node #: 117, (277) 
+Element #: 84, Current Node #: 99, Diagonal Node #: 186, (276) 
+Element #: 84, Current Node #: 186, Diagonal Node #: 99, (235) 
+Element #: 84, Current Node #: 117, Diagonal Node #: 180, (234) 
+Element #: 84, Current Node #: 187, Diagonal Node #: 96, (228) 
+Element #: 84, Current Node #: 120, Diagonal Node #: 179, (227) 
+Element #: 85, Current Node #: 96, Diagonal Node #: 121, (285) 
+Element #: 85, Current Node #: 97, Diagonal Node #: 120, (284) 
+Element #: 85, Current Node #: 99, Diagonal Node #: 118, (278) 
+Element #: 85, Current Node #: 100, Diagonal Node #: 117, (277) 
+Element #: 85, Current Node #: 117, Diagonal Node #: 100, (236) 
+Element #: 85, Current Node #: 118, Diagonal Node #: 99, (235) 
+Element #: 85, Current Node #: 120, Diagonal Node #: 97, (229) 
+Element #: 85, Current Node #: 121, Diagonal Node #: 96, (228) 
+Element #: 86, Current Node #: 97, Diagonal Node #: 122, (286) 
+Element #: 86, Current Node #: 98, Diagonal Node #: 121, (285) 
+Element #: 86, Current Node #: 100, Diagonal Node #: 119, (279) 
+Element #: 86, Current Node #: 101, Diagonal Node #: 118, (278) 
+Element #: 86, Current Node #: 118, Diagonal Node #: 101, (237) 
+Element #: 86, Current Node #: 119, Diagonal Node #: 100, (236) 
+Element #: 86, Current Node #: 121, Diagonal Node #: 98, (230) 
+Element #: 86, Current Node #: 122, Diagonal Node #: 97, (229) 
+Element #: 87, Current Node #: 180, Diagonal Node #: 123, (291) 
+Element #: 87, Current Node #: 99, Diagonal Node #: 188, (290) 
+Element #: 87, Current Node #: 181, Diagonal Node #: 120, (284) 
+Element #: 87, Current Node #: 102, Diagonal Node #: 187, (283) 
+Element #: 87, Current Node #: 187, Diagonal Node #: 102, (242) 
+Element #: 87, Current Node #: 120, Diagonal Node #: 181, (241) 
+Element #: 87, Current Node #: 188, Diagonal Node #: 99, (235) 
+Element #: 87, Current Node #: 123, Diagonal Node #: 180, (234) 
+Element #: 88, Current Node #: 99, Diagonal Node #: 124, (292) 
+Element #: 88, Current Node #: 100, Diagonal Node #: 123, (291) 
+Element #: 88, Current Node #: 102, Diagonal Node #: 121, (285) 
+Element #: 88, Current Node #: 103, Diagonal Node #: 120, (284) 
+Element #: 88, Current Node #: 120, Diagonal Node #: 103, (243) 
+Element #: 88, Current Node #: 121, Diagonal Node #: 102, (242) 
+Element #: 88, Current Node #: 123, Diagonal Node #: 100, (236) 
+Element #: 88, Current Node #: 124, Diagonal Node #: 99, (235) 
+Element #: 89, Current Node #: 100, Diagonal Node #: 125, (293) 
+Element #: 89, Current Node #: 101, Diagonal Node #: 124, (292) 
+Element #: 89, Current Node #: 103, Diagonal Node #: 122, (286) 
+Element #: 89, Current Node #: 104, Diagonal Node #: 121, (285) 
+Element #: 89, Current Node #: 121, Diagonal Node #: 104, (244) 
+Element #: 89, Current Node #: 122, Diagonal Node #: 103, (243) 
+Element #: 89, Current Node #: 124, Diagonal Node #: 101, (237) 
+Element #: 89, Current Node #: 125, Diagonal Node #: 100, (236) 
+Element #: 90, Current Node #: 182, Diagonal Node #: 129, (305) 
+Element #: 90, Current Node #: 105, Diagonal Node #: 190, (304) 
+Element #: 90, Current Node #: 183, Diagonal Node #: 126, (298) 
+Element #: 90, Current Node #: 108, Diagonal Node #: 189, (297) 
+Element #: 90, Current Node #: 189, Diagonal Node #: 108, (256) 
+Element #: 90, Current Node #: 126, Diagonal Node #: 183, (255) 
+Element #: 90, Current Node #: 190, Diagonal Node #: 105, (249) 
+Element #: 90, Current Node #: 129, Diagonal Node #: 182, (248) 
+Element #: 91, Current Node #: 105, Diagonal Node #: 130, (306) 
+Element #: 91, Current Node #: 106, Diagonal Node #: 129, (305) 
+Element #: 91, Current Node #: 108, Diagonal Node #: 127, (299) 
+Element #: 91, Current Node #: 109, Diagonal Node #: 126, (298) 
+Element #: 91, Current Node #: 126, Diagonal Node #: 109, (257) 
+Element #: 91, Current Node #: 127, Diagonal Node #: 108, (256) 
+Element #: 91, Current Node #: 129, Diagonal Node #: 106, (250) 
+Element #: 91, Current Node #: 130, Diagonal Node #: 105, (249) 
+Element #: 92, Current Node #: 106, Diagonal Node #: 131, (307) 
+Element #: 92, Current Node #: 107, Diagonal Node #: 130, (306) 
+Element #: 92, Current Node #: 109, Diagonal Node #: 128, (300) 
+Element #: 92, Current Node #: 110, Diagonal Node #: 127, (299) 
+Element #: 92, Current Node #: 127, Diagonal Node #: 110, (258) 
+Element #: 92, Current Node #: 128, Diagonal Node #: 109, (257) 
+Element #: 92, Current Node #: 130, Diagonal Node #: 107, (251) 
+Element #: 92, Current Node #: 131, Diagonal Node #: 106, (250) 
+Element #: 93, Current Node #: 183, Diagonal Node #: 132, (312) 
+Element #: 93, Current Node #: 108, Diagonal Node #: 191, (311) 
+Element #: 93, Current Node #: 184, Diagonal Node #: 129, (305) 
+Element #: 93, Current Node #: 111, Diagonal Node #: 190, (304) 
+Element #: 93, Current Node #: 190, Diagonal Node #: 111, (263) 
+Element #: 93, Current Node #: 129, Diagonal Node #: 184, (262) 
+Element #: 93, Current Node #: 191, Diagonal Node #: 108, (256) 
+Element #: 93, Current Node #: 132, Diagonal Node #: 183, (255) 
+Element #: 94, Current Node #: 108, Diagonal Node #: 133, (313) 
+Element #: 94, Current Node #: 109, Diagonal Node #: 132, (312) 
+Element #: 94, Current Node #: 111, Diagonal Node #: 130, (306) 
+Element #: 94, Current Node #: 112, Diagonal Node #: 129, (305) 
+Element #: 94, Current Node #: 129, Diagonal Node #: 112, (264) 
+Element #: 94, Current Node #: 130, Diagonal Node #: 111, (263) 
+Element #: 94, Current Node #: 132, Diagonal Node #: 109, (257) 
+Element #: 94, Current Node #: 133, Diagonal Node #: 108, (256) 
+Element #: 95, Current Node #: 109, Diagonal Node #: 134, (314) 
+Element #: 95, Current Node #: 110, Diagonal Node #: 133, (313) 
+Element #: 95, Current Node #: 112, Diagonal Node #: 131, (307) 
+Element #: 95, Current Node #: 113, Diagonal Node #: 130, (306) 
+Element #: 95, Current Node #: 130, Diagonal Node #: 113, (265) 
+Element #: 95, Current Node #: 131, Diagonal Node #: 112, (264) 
+Element #: 95, Current Node #: 133, Diagonal Node #: 110, (258) 
+Element #: 95, Current Node #: 134, Diagonal Node #: 109, (257) 
+Element #: 96, Current Node #: 184, Diagonal Node #: 135, (319) 
+Element #: 96, Current Node #: 111, Diagonal Node #: 192, (318) 
+Element #: 96, Current Node #: 185, Diagonal Node #: 132, (312) 
+Element #: 96, Current Node #: 114, Diagonal Node #: 191, (311) 
+Element #: 96, Current Node #: 191, Diagonal Node #: 114, (270) 
+Element #: 96, Current Node #: 132, Diagonal Node #: 185, (269) 
+Element #: 96, Current Node #: 192, Diagonal Node #: 111, (263) 
+Element #: 96, Current Node #: 135, Diagonal Node #: 184, (262) 
+Element #: 97, Current Node #: 111, Diagonal Node #: 136, (320) 
+Element #: 97, Current Node #: 112, Diagonal Node #: 135, (319) 
+Element #: 97, Current Node #: 114, Diagonal Node #: 133, (313) 
+Element #: 97, Current Node #: 115, Diagonal Node #: 132, (312) 
+Element #: 97, Current Node #: 132, Diagonal Node #: 115, (271) 
+Element #: 97, Current Node #: 133, Diagonal Node #: 114, (270) 
+Element #: 97, Current Node #: 135, Diagonal Node #: 112, (264) 
+Element #: 97, Current Node #: 136, Diagonal Node #: 111, (263) 
+Element #: 98, Current Node #: 112, Diagonal Node #: 137, (321) 
+Element #: 98, Current Node #: 113, Diagonal Node #: 136, (320) 
+Element #: 98, Current Node #: 115, Diagonal Node #: 134, (314) 
+Element #: 98, Current Node #: 116, Diagonal Node #: 133, (313) 
+Element #: 98, Current Node #: 133, Diagonal Node #: 116, (272) 
+Element #: 98, Current Node #: 134, Diagonal Node #: 115, (271) 
+Element #: 98, Current Node #: 136, Diagonal Node #: 113, (265) 
+Element #: 98, Current Node #: 137, Diagonal Node #: 112, (264) 
+Element #: 99, Current Node #: 185, Diagonal Node #: 138, (326) 
+Element #: 99, Current Node #: 114, Diagonal Node #: 193, (325) 
+Element #: 99, Current Node #: 186, Diagonal Node #: 135, (319) 
+Element #: 99, Current Node #: 117, Diagonal Node #: 192, (318) 
+Element #: 99, Current Node #: 192, Diagonal Node #: 117, (277) 
+Element #: 99, Current Node #: 135, Diagonal Node #: 186, (276) 
+Element #: 99, Current Node #: 193, Diagonal Node #: 114, (270) 
+Element #: 99, Current Node #: 138, Diagonal Node #: 185, (269) 
+Element #: 100, Current Node #: 114, Diagonal Node #: 139, (327) 
+Element #: 100, Current Node #: 115, Diagonal Node #: 138, (326) 
+Element #: 100, Current Node #: 117, Diagonal Node #: 136, (320) 
+Element #: 100, Current Node #: 118, Diagonal Node #: 135, (319) 
+Element #: 100, Current Node #: 135, Diagonal Node #: 118, (278) 
+Element #: 100, Current Node #: 136, Diagonal Node #: 117, (277) 
+Element #: 100, Current Node #: 138, Diagonal Node #: 115, (271) 
+Element #: 100, Current Node #: 139, Diagonal Node #: 114, (270) 
+Element #: 101, Current Node #: 115, Diagonal Node #: 140, (328) 
+Element #: 101, Current Node #: 116, Diagonal Node #: 139, (327) 
+Element #: 101, Current Node #: 118, Diagonal Node #: 137, (321) 
+Element #: 101, Current Node #: 119, Diagonal Node #: 136, (320) 
+Element #: 101, Current Node #: 136, Diagonal Node #: 119, (279) 
+Element #: 101, Current Node #: 137, Diagonal Node #: 118, (278) 
+Element #: 101, Current Node #: 139, Diagonal Node #: 116, (272) 
+Element #: 101, Current Node #: 140, Diagonal Node #: 115, (271) 
+Element #: 102, Current Node #: 186, Diagonal Node #: 141, (333) 
+Element #: 102, Current Node #: 117, Diagonal Node #: 194, (332) 
+Element #: 102, Current Node #: 187, Diagonal Node #: 138, (326) 
+Element #: 102, Current Node #: 120, Diagonal Node #: 193, (325) 
+Element #: 102, Current Node #: 193, Diagonal Node #: 120, (284) 
+Element #: 102, Current Node #: 138, Diagonal Node #: 187, (283) 
+Element #: 102, Current Node #: 194, Diagonal Node #: 117, (277) 
+Element #: 102, Current Node #: 141, Diagonal Node #: 186, (276) 
+Element #: 103, Current Node #: 117, Diagonal Node #: 142, (334) 
+Element #: 103, Current Node #: 118, Diagonal Node #: 141, (333) 
+Element #: 103, Current Node #: 120, Diagonal Node #: 139, (327) 
+Element #: 103, Current Node #: 121, Diagonal Node #: 138, (326) 
+Element #: 103, Current Node #: 138, Diagonal Node #: 121, (285) 
+Element #: 103, Current Node #: 139, Diagonal Node #: 120, (284) 
+Element #: 103, Current Node #: 141, Diagonal Node #: 118, (278) 
+Element #: 103, Current Node #: 142, Diagonal Node #: 117, (277) 
+Element #: 104, Current Node #: 118, Diagonal Node #: 143, (335) 
+Element #: 104, Current Node #: 119, Diagonal Node #: 142, (334) 
+Element #: 104, Current Node #: 121, Diagonal Node #: 140, (328) 
+Element #: 104, Current Node #: 122, Diagonal Node #: 139, (327) 
+Element #: 104, Current Node #: 139, Diagonal Node #: 122, (286) 
+Element #: 104, Current Node #: 140, Diagonal Node #: 121, (285) 
+Element #: 104, Current Node #: 142, Diagonal Node #: 119, (279) 
+Element #: 104, Current Node #: 143, Diagonal Node #: 118, (278) 
+Element #: 105, Current Node #: 187, Diagonal Node #: 144, (340) 
+Element #: 105, Current Node #: 120, Diagonal Node #: 195, (339) 
+Element #: 105, Current Node #: 188, Diagonal Node #: 141, (333) 
+Element #: 105, Current Node #: 123, Diagonal Node #: 194, (332) 
+Element #: 105, Current Node #: 194, Diagonal Node #: 123, (291) 
+Element #: 105, Current Node #: 141, Diagonal Node #: 188, (290) 
+Element #: 105, Current Node #: 195, Diagonal Node #: 120, (284) 
+Element #: 105, Current Node #: 144, Diagonal Node #: 187, (283) 
+Element #: 106, Current Node #: 120, Diagonal Node #: 145, (341) 
+Element #: 106, Current Node #: 121, Diagonal Node #: 144, (340) 
+Element #: 106, Current Node #: 123, Diagonal Node #: 142, (334) 
+Element #: 106, Current Node #: 124, Diagonal Node #: 141, (333) 
+Element #: 106, Current Node #: 141, Diagonal Node #: 124, (292) 
+Element #: 106, Current Node #: 142, Diagonal Node #: 123, (291) 
+Element #: 106, Current Node #: 144, Diagonal Node #: 121, (285) 
+Element #: 106, Current Node #: 145, Diagonal Node #: 120, (284) 
+Element #: 107, Current Node #: 121, Diagonal Node #: 146, (342) 
+Element #: 107, Current Node #: 122, Diagonal Node #: 145, (341) 
+Element #: 107, Current Node #: 124, Diagonal Node #: 143, (335) 
+Element #: 107, Current Node #: 125, Diagonal Node #: 142, (334) 
+Element #: 107, Current Node #: 142, Diagonal Node #: 125, (293) 
+Element #: 107, Current Node #: 143, Diagonal Node #: 124, (292) 
+Element #: 107, Current Node #: 145, Diagonal Node #: 122, (286) 
+Element #: 107, Current Node #: 146, Diagonal Node #: 121, (285) 
+Element #: 108, Current Node #: 196, Diagonal Node #: 155, (59) 
+Element #: 108, Current Node #: 147, Diagonal Node #: 204, (58) 
+Element #: 108, Current Node #: 197, Diagonal Node #: 154, (52) 
+Element #: 108, Current Node #: 148, Diagonal Node #: 203, (51) 
+Element #: 108, Current Node #: 203, Diagonal Node #: 148, (10) 
+Element #: 108, Current Node #: 154, Diagonal Node #: 197, (9) 
+Element #: 108, Current Node #: 204, Diagonal Node #: 147, (3) 
+Element #: 108, Current Node #: 155, Diagonal Node #: 196, (2) 
+Element #: 109, Current Node #: 197, Diagonal Node #: 156, (66) 
+Element #: 109, Current Node #: 148, Diagonal Node #: 205, (65) 
+Element #: 109, Current Node #: 198, Diagonal Node #: 155, (59) 
+Element #: 109, Current Node #: 149, Diagonal Node #: 204, (58) 
+Element #: 109, Current Node #: 204, Diagonal Node #: 149, (17) 
+Element #: 109, Current Node #: 155, Diagonal Node #: 198, (16) 
+Element #: 109, Current Node #: 205, Diagonal Node #: 148, (10) 
+Element #: 109, Current Node #: 156, Diagonal Node #: 197, (9) 
+Element #: 110, Current Node #: 198, Diagonal Node #: 157, (73) 
+Element #: 110, Current Node #: 149, Diagonal Node #: 206, (72) 
+Element #: 110, Current Node #: 199, Diagonal Node #: 156, (66) 
+Element #: 110, Current Node #: 150, Diagonal Node #: 205, (65) 
+Element #: 110, Current Node #: 205, Diagonal Node #: 150, (24) 
+Element #: 110, Current Node #: 156, Diagonal Node #: 199, (23) 
+Element #: 110, Current Node #: 206, Diagonal Node #: 149, (17) 
+Element #: 110, Current Node #: 157, Diagonal Node #: 198, (16) 
+Element #: 111, Current Node #: 199, Diagonal Node #: 158, (80) 
+Element #: 111, Current Node #: 150, Diagonal Node #: 207, (79) 
+Element #: 111, Current Node #: 200, Diagonal Node #: 157, (73) 
+Element #: 111, Current Node #: 151, Diagonal Node #: 206, (72) 
+Element #: 111, Current Node #: 206, Diagonal Node #: 151, (31) 
+Element #: 111, Current Node #: 157, Diagonal Node #: 200, (30) 
+Element #: 111, Current Node #: 207, Diagonal Node #: 150, (24) 
+Element #: 111, Current Node #: 158, Diagonal Node #: 199, (23) 
+Element #: 112, Current Node #: 200, Diagonal Node #: 159, (87) 
+Element #: 112, Current Node #: 151, Diagonal Node #: 208, (86) 
+Element #: 112, Current Node #: 201, Diagonal Node #: 158, (80) 
+Element #: 112, Current Node #: 152, Diagonal Node #: 207, (79) 
+Element #: 112, Current Node #: 207, Diagonal Node #: 152, (38) 
+Element #: 112, Current Node #: 158, Diagonal Node #: 201, (37) 
+Element #: 112, Current Node #: 208, Diagonal Node #: 151, (31) 
+Element #: 112, Current Node #: 159, Diagonal Node #: 200, (30) 
+Element #: 113, Current Node #: 201, Diagonal Node #: 160, (94) 
+Element #: 113, Current Node #: 152, Diagonal Node #: 209, (93) 
+Element #: 113, Current Node #: 202, Diagonal Node #: 159, (87) 
+Element #: 113, Current Node #: 153, Diagonal Node #: 208, (86) 
+Element #: 113, Current Node #: 208, Diagonal Node #: 153, (45) 
+Element #: 113, Current Node #: 159, Diagonal Node #: 202, (44) 
+Element #: 113, Current Node #: 209, Diagonal Node #: 152, (38) 
+Element #: 113, Current Node #: 160, Diagonal Node #: 201, (37) 
+Element #: 114, Current Node #: 203, Diagonal Node #: 162, (108) 
+Element #: 114, Current Node #: 154, Diagonal Node #: 211, (107) 
+Element #: 114, Current Node #: 204, Diagonal Node #: 161, (101) 
+Element #: 114, Current Node #: 155, Diagonal Node #: 210, (100) 
+Element #: 114, Current Node #: 210, Diagonal Node #: 155, (59) 
+Element #: 114, Current Node #: 161, Diagonal Node #: 204, (58) 
+Element #: 114, Current Node #: 211, Diagonal Node #: 154, (52) 
+Element #: 114, Current Node #: 162, Diagonal Node #: 203, (51) 
+Element #: 115, Current Node #: 204, Diagonal Node #: 163, (115) 
+Element #: 115, Current Node #: 155, Diagonal Node #: 212, (114) 
+Element #: 115, Current Node #: 205, Diagonal Node #: 162, (108) 
+Element #: 115, Current Node #: 156, Diagonal Node #: 211, (107) 
+Element #: 115, Current Node #: 211, Diagonal Node #: 156, (66) 
+Element #: 115, Current Node #: 162, Diagonal Node #: 205, (65) 
+Element #: 115, Current Node #: 212, Diagonal Node #: 155, (59) 
+Element #: 115, Current Node #: 163, Diagonal Node #: 204, (58) 
+Element #: 116, Current Node #: 205, Diagonal Node #: 164, (122) 
+Element #: 116, Current Node #: 156, Diagonal Node #: 213, (121) 
+Element #: 116, Current Node #: 206, Diagonal Node #: 163, (115) 
+Element #: 116, Current Node #: 157, Diagonal Node #: 212, (114) 
+Element #: 116, Current Node #: 212, Diagonal Node #: 157, (73) 
+Element #: 116, Current Node #: 163, Diagonal Node #: 206, (72) 
+Element #: 116, Current Node #: 213, Diagonal Node #: 156, (66) 
+Element #: 116, Current Node #: 164, Diagonal Node #: 205, (65) 
+Element #: 117, Current Node #: 206, Diagonal Node #: 165, (129) 
+Element #: 117, Current Node #: 157, Diagonal Node #: 214, (128) 
+Element #: 117, Current Node #: 207, Diagonal Node #: 164, (122) 
+Element #: 117, Current Node #: 158, Diagonal Node #: 213, (121) 
+Element #: 117, Current Node #: 213, Diagonal Node #: 158, (80) 
+Element #: 117, Current Node #: 164, Diagonal Node #: 207, (79) 
+Element #: 117, Current Node #: 214, Diagonal Node #: 157, (73) 
+Element #: 117, Current Node #: 165, Diagonal Node #: 206, (72) 
+Element #: 118, Current Node #: 207, Diagonal Node #: 166, (136) 
+Element #: 118, Current Node #: 158, Diagonal Node #: 215, (135) 
+Element #: 118, Current Node #: 208, Diagonal Node #: 165, (129) 
+Element #: 118, Current Node #: 159, Diagonal Node #: 214, (128) 
+Element #: 118, Current Node #: 214, Diagonal Node #: 159, (87) 
+Element #: 118, Current Node #: 165, Diagonal Node #: 208, (86) 
+Element #: 118, Current Node #: 215, Diagonal Node #: 158, (80) 
+Element #: 118, Current Node #: 166, Diagonal Node #: 207, (79) 
+Element #: 119, Current Node #: 208, Diagonal Node #: 167, (143) 
+Element #: 119, Current Node #: 159, Diagonal Node #: 216, (142) 
+Element #: 119, Current Node #: 209, Diagonal Node #: 166, (136) 
+Element #: 119, Current Node #: 160, Diagonal Node #: 215, (135) 
+Element #: 119, Current Node #: 215, Diagonal Node #: 160, (94) 
+Element #: 119, Current Node #: 166, Diagonal Node #: 209, (93) 
+Element #: 119, Current Node #: 216, Diagonal Node #: 159, (87) 
+Element #: 119, Current Node #: 167, Diagonal Node #: 208, (86) 
+Element #: 120, Current Node #: 210, Diagonal Node #: 169, (157) 
+Element #: 120, Current Node #: 161, Diagonal Node #: 218, (156) 
+Element #: 120, Current Node #: 211, Diagonal Node #: 168, (150) 
+Element #: 120, Current Node #: 162, Diagonal Node #: 217, (149) 
+Element #: 120, Current Node #: 217, Diagonal Node #: 162, (108) 
+Element #: 120, Current Node #: 168, Diagonal Node #: 211, (107) 
+Element #: 120, Current Node #: 218, Diagonal Node #: 161, (101) 
+Element #: 120, Current Node #: 169, Diagonal Node #: 210, (100) 
+Element #: 121, Current Node #: 211, Diagonal Node #: 170, (164) 
+Element #: 121, Current Node #: 162, Diagonal Node #: 219, (163) 
+Element #: 121, Current Node #: 212, Diagonal Node #: 169, (157) 
+Element #: 121, Current Node #: 163, Diagonal Node #: 218, (156) 
+Element #: 121, Current Node #: 218, Diagonal Node #: 163, (115) 
+Element #: 121, Current Node #: 169, Diagonal Node #: 212, (114) 
+Element #: 121, Current Node #: 219, Diagonal Node #: 162, (108) 
+Element #: 121, Current Node #: 170, Diagonal Node #: 211, (107) 
+Element #: 122, Current Node #: 212, Diagonal Node #: 171, (171) 
+Element #: 122, Current Node #: 163, Diagonal Node #: 220, (170) 
+Element #: 122, Current Node #: 213, Diagonal Node #: 170, (164) 
+Element #: 122, Current Node #: 164, Diagonal Node #: 219, (163) 
+Element #: 122, Current Node #: 219, Diagonal Node #: 164, (122) 
+Element #: 122, Current Node #: 170, Diagonal Node #: 213, (121) 
+Element #: 122, Current Node #: 220, Diagonal Node #: 163, (115) 
+Element #: 122, Current Node #: 171, Diagonal Node #: 212, (114) 
+Element #: 123, Current Node #: 213, Diagonal Node #: 172, (178) 
+Element #: 123, Current Node #: 164, Diagonal Node #: 221, (177) 
+Element #: 123, Current Node #: 214, Diagonal Node #: 171, (171) 
+Element #: 123, Current Node #: 165, Diagonal Node #: 220, (170) 
+Element #: 123, Current Node #: 220, Diagonal Node #: 165, (129) 
+Element #: 123, Current Node #: 171, Diagonal Node #: 214, (128) 
+Element #: 123, Current Node #: 221, Diagonal Node #: 164, (122) 
+Element #: 123, Current Node #: 172, Diagonal Node #: 213, (121) 
+Element #: 124, Current Node #: 214, Diagonal Node #: 173, (185) 
+Element #: 124, Current Node #: 165, Diagonal Node #: 222, (184) 
+Element #: 124, Current Node #: 215, Diagonal Node #: 172, (178) 
+Element #: 124, Current Node #: 166, Diagonal Node #: 221, (177) 
+Element #: 124, Current Node #: 221, Diagonal Node #: 166, (136) 
+Element #: 124, Current Node #: 172, Diagonal Node #: 215, (135) 
+Element #: 124, Current Node #: 222, Diagonal Node #: 165, (129) 
+Element #: 124, Current Node #: 173, Diagonal Node #: 214, (128) 
+Element #: 125, Current Node #: 215, Diagonal Node #: 174, (192) 
+Element #: 125, Current Node #: 166, Diagonal Node #: 223, (191) 
+Element #: 125, Current Node #: 216, Diagonal Node #: 173, (185) 
+Element #: 125, Current Node #: 167, Diagonal Node #: 222, (184) 
+Element #: 125, Current Node #: 222, Diagonal Node #: 167, (143) 
+Element #: 125, Current Node #: 173, Diagonal Node #: 216, (142) 
+Element #: 125, Current Node #: 223, Diagonal Node #: 166, (136) 
+Element #: 125, Current Node #: 174, Diagonal Node #: 215, (135) 
+Element #: 126, Current Node #: 217, Diagonal Node #: 176, (206) 
+Element #: 126, Current Node #: 168, Diagonal Node #: 225, (205) 
+Element #: 126, Current Node #: 218, Diagonal Node #: 175, (199) 
+Element #: 126, Current Node #: 169, Diagonal Node #: 224, (198) 
+Element #: 126, Current Node #: 224, Diagonal Node #: 169, (157) 
+Element #: 126, Current Node #: 175, Diagonal Node #: 218, (156) 
+Element #: 126, Current Node #: 225, Diagonal Node #: 168, (150) 
+Element #: 126, Current Node #: 176, Diagonal Node #: 217, (149) 
+Element #: 127, Current Node #: 218, Diagonal Node #: 177, (213) 
+Element #: 127, Current Node #: 169, Diagonal Node #: 226, (212) 
+Element #: 127, Current Node #: 219, Diagonal Node #: 176, (206) 
+Element #: 127, Current Node #: 170, Diagonal Node #: 225, (205) 
+Element #: 127, Current Node #: 225, Diagonal Node #: 170, (164) 
+Element #: 127, Current Node #: 176, Diagonal Node #: 219, (163) 
+Element #: 127, Current Node #: 226, Diagonal Node #: 169, (157) 
+Element #: 127, Current Node #: 177, Diagonal Node #: 218, (156) 
+Element #: 128, Current Node #: 219, Diagonal Node #: 178, (220) 
+Element #: 128, Current Node #: 170, Diagonal Node #: 227, (219) 
+Element #: 128, Current Node #: 220, Diagonal Node #: 177, (213) 
+Element #: 128, Current Node #: 171, Diagonal Node #: 226, (212) 
+Element #: 128, Current Node #: 226, Diagonal Node #: 171, (171) 
+Element #: 128, Current Node #: 177, Diagonal Node #: 220, (170) 
+Element #: 128, Current Node #: 227, Diagonal Node #: 170, (164) 
+Element #: 128, Current Node #: 178, Diagonal Node #: 219, (163) 
+Element #: 129, Current Node #: 220, Diagonal Node #: 179, (227) 
+Element #: 129, Current Node #: 171, Diagonal Node #: 228, (226) 
+Element #: 129, Current Node #: 221, Diagonal Node #: 178, (220) 
+Element #: 129, Current Node #: 172, Diagonal Node #: 227, (219) 
+Element #: 129, Current Node #: 227, Diagonal Node #: 172, (178) 
+Element #: 129, Current Node #: 178, Diagonal Node #: 221, (177) 
+Element #: 129, Current Node #: 228, Diagonal Node #: 171, (171) 
+Element #: 129, Current Node #: 179, Diagonal Node #: 220, (170) 
+Element #: 130, Current Node #: 221, Diagonal Node #: 180, (234) 
+Element #: 130, Current Node #: 172, Diagonal Node #: 229, (233) 
+Element #: 130, Current Node #: 222, Diagonal Node #: 179, (227) 
+Element #: 130, Current Node #: 173, Diagonal Node #: 228, (226) 
+Element #: 130, Current Node #: 228, Diagonal Node #: 173, (185) 
+Element #: 130, Current Node #: 179, Diagonal Node #: 222, (184) 
+Element #: 130, Current Node #: 229, Diagonal Node #: 172, (178) 
+Element #: 130, Current Node #: 180, Diagonal Node #: 221, (177) 
+Element #: 131, Current Node #: 222, Diagonal Node #: 181, (241) 
+Element #: 131, Current Node #: 173, Diagonal Node #: 230, (240) 
+Element #: 131, Current Node #: 223, Diagonal Node #: 180, (234) 
+Element #: 131, Current Node #: 174, Diagonal Node #: 229, (233) 
+Element #: 131, Current Node #: 229, Diagonal Node #: 174, (192) 
+Element #: 131, Current Node #: 180, Diagonal Node #: 223, (191) 
+Element #: 131, Current Node #: 230, Diagonal Node #: 173, (185) 
+Element #: 131, Current Node #: 181, Diagonal Node #: 222, (184) 
+Element #: 132, Current Node #: 224, Diagonal Node #: 183, (255) 
+Element #: 132, Current Node #: 175, Diagonal Node #: 232, (254) 
+Element #: 132, Current Node #: 225, Diagonal Node #: 182, (248) 
+Element #: 132, Current Node #: 176, Diagonal Node #: 231, (247) 
+Element #: 132, Current Node #: 231, Diagonal Node #: 176, (206) 
+Element #: 132, Current Node #: 182, Diagonal Node #: 225, (205) 
+Element #: 132, Current Node #: 232, Diagonal Node #: 175, (199) 
+Element #: 132, Current Node #: 183, Diagonal Node #: 224, (198) 
+Element #: 133, Current Node #: 225, Diagonal Node #: 184, (262) 
+Element #: 133, Current Node #: 176, Diagonal Node #: 233, (261) 
+Element #: 133, Current Node #: 226, Diagonal Node #: 183, (255) 
+Element #: 133, Current Node #: 177, Diagonal Node #: 232, (254) 
+Element #: 133, Current Node #: 232, Diagonal Node #: 177, (213) 
+Element #: 133, Current Node #: 183, Diagonal Node #: 226, (212) 
+Element #: 133, Current Node #: 233, Diagonal Node #: 176, (206) 
+Element #: 133, Current Node #: 184, Diagonal Node #: 225, (205) 
+Element #: 134, Current Node #: 226, Diagonal Node #: 185, (269) 
+Element #: 134, Current Node #: 177, Diagonal Node #: 234, (268) 
+Element #: 134, Current Node #: 227, Diagonal Node #: 184, (262) 
+Element #: 134, Current Node #: 178, Diagonal Node #: 233, (261) 
+Element #: 134, Current Node #: 233, Diagonal Node #: 178, (220) 
+Element #: 134, Current Node #: 184, Diagonal Node #: 227, (219) 
+Element #: 134, Current Node #: 234, Diagonal Node #: 177, (213) 
+Element #: 134, Current Node #: 185, Diagonal Node #: 226, (212) 
+Element #: 135, Current Node #: 227, Diagonal Node #: 186, (276) 
+Element #: 135, Current Node #: 178, Diagonal Node #: 235, (275) 
+Element #: 135, Current Node #: 228, Diagonal Node #: 185, (269) 
+Element #: 135, Current Node #: 179, Diagonal Node #: 234, (268) 
+Element #: 135, Current Node #: 234, Diagonal Node #: 179, (227) 
+Element #: 135, Current Node #: 185, Diagonal Node #: 228, (226) 
+Element #: 135, Current Node #: 235, Diagonal Node #: 178, (220) 
+Element #: 135, Current Node #: 186, Diagonal Node #: 227, (219) 
+Element #: 136, Current Node #: 228, Diagonal Node #: 187, (283) 
+Element #: 136, Current Node #: 179, Diagonal Node #: 236, (282) 
+Element #: 136, Current Node #: 229, Diagonal Node #: 186, (276) 
+Element #: 136, Current Node #: 180, Diagonal Node #: 235, (275) 
+Element #: 136, Current Node #: 235, Diagonal Node #: 180, (234) 
+Element #: 136, Current Node #: 186, Diagonal Node #: 229, (233) 
+Element #: 136, Current Node #: 236, Diagonal Node #: 179, (227) 
+Element #: 136, Current Node #: 187, Diagonal Node #: 228, (226) 
+Element #: 137, Current Node #: 229, Diagonal Node #: 188, (290) 
+Element #: 137, Current Node #: 180, Diagonal Node #: 237, (289) 
+Element #: 137, Current Node #: 230, Diagonal Node #: 187, (283) 
+Element #: 137, Current Node #: 181, Diagonal Node #: 236, (282) 
+Element #: 137, Current Node #: 236, Diagonal Node #: 181, (241) 
+Element #: 137, Current Node #: 187, Diagonal Node #: 230, (240) 
+Element #: 137, Current Node #: 237, Diagonal Node #: 180, (234) 
+Element #: 137, Current Node #: 188, Diagonal Node #: 229, (233) 
+Element #: 138, Current Node #: 231, Diagonal Node #: 190, (304) 
+Element #: 138, Current Node #: 182, Diagonal Node #: 239, (303) 
+Element #: 138, Current Node #: 232, Diagonal Node #: 189, (297) 
+Element #: 138, Current Node #: 183, Diagonal Node #: 238, (296) 
+Element #: 138, Current Node #: 238, Diagonal Node #: 183, (255) 
+Element #: 138, Current Node #: 189, Diagonal Node #: 232, (254) 
+Element #: 138, Current Node #: 239, Diagonal Node #: 182, (248) 
+Element #: 138, Current Node #: 190, Diagonal Node #: 231, (247) 
+Element #: 139, Current Node #: 232, Diagonal Node #: 191, (311) 
+Element #: 139, Current Node #: 183, Diagonal Node #: 240, (310) 
+Element #: 139, Current Node #: 233, Diagonal Node #: 190, (304) 
+Element #: 139, Current Node #: 184, Diagonal Node #: 239, (303) 
+Element #: 139, Current Node #: 239, Diagonal Node #: 184, (262) 
+Element #: 139, Current Node #: 190, Diagonal Node #: 233, (261) 
+Element #: 139, Current Node #: 240, Diagonal Node #: 183, (255) 
+Element #: 139, Current Node #: 191, Diagonal Node #: 232, (254) 
+Element #: 140, Current Node #: 233, Diagonal Node #: 192, (318) 
+Element #: 140, Current Node #: 184, Diagonal Node #: 241, (317) 
+Element #: 140, Current Node #: 234, Diagonal Node #: 191, (311) 
+Element #: 140, Current Node #: 185, Diagonal Node #: 240, (310) 
+Element #: 140, Current Node #: 240, Diagonal Node #: 185, (269) 
+Element #: 140, Current Node #: 191, Diagonal Node #: 234, (268) 
+Element #: 140, Current Node #: 241, Diagonal Node #: 184, (262) 
+Element #: 140, Current Node #: 192, Diagonal Node #: 233, (261) 
+Element #: 141, Current Node #: 234, Diagonal Node #: 193, (325) 
+Element #: 141, Current Node #: 185, Diagonal Node #: 242, (324) 
+Element #: 141, Current Node #: 235, Diagonal Node #: 192, (318) 
+Element #: 141, Current Node #: 186, Diagonal Node #: 241, (317) 
+Element #: 141, Current Node #: 241, Diagonal Node #: 186, (276) 
+Element #: 141, Current Node #: 192, Diagonal Node #: 235, (275) 
+Element #: 141, Current Node #: 242, Diagonal Node #: 185, (269) 
+Element #: 141, Current Node #: 193, Diagonal Node #: 234, (268) 
+Element #: 142, Current Node #: 235, Diagonal Node #: 194, (332) 
+Element #: 142, Current Node #: 186, Diagonal Node #: 243, (331) 
+Element #: 142, Current Node #: 236, Diagonal Node #: 193, (325) 
+Element #: 142, Current Node #: 187, Diagonal Node #: 242, (324) 
+Element #: 142, Current Node #: 242, Diagonal Node #: 187, (283) 
+Element #: 142, Current Node #: 193, Diagonal Node #: 236, (282) 
+Element #: 142, Current Node #: 243, Diagonal Node #: 186, (276) 
+Element #: 142, Current Node #: 194, Diagonal Node #: 235, (275) 
+Element #: 143, Current Node #: 236, Diagonal Node #: 195, (339) 
+Element #: 143, Current Node #: 187, Diagonal Node #: 244, (338) 
+Element #: 143, Current Node #: 237, Diagonal Node #: 194, (332) 
+Element #: 143, Current Node #: 188, Diagonal Node #: 243, (331) 
+Element #: 143, Current Node #: 243, Diagonal Node #: 188, (290) 
+Element #: 143, Current Node #: 194, Diagonal Node #: 237, (289) 
+Element #: 143, Current Node #: 244, Diagonal Node #: 187, (283) 
+Element #: 143, Current Node #: 195, Diagonal Node #: 236, (282) 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testRegularMeshUtils.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -52,22 +52,45 @@
 };
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {0, 1, 1};
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
 int main(int argc, char *argv[])
 {
-	MPI_Comm		CommWorld;
-	int			rank;
-	int			procCount;
-	int			procToWatch;
-	Dictionary*		dictionary;
+	MPI_Comm			CommWorld;
+	int				rank;
+	int				procCount;
+	int				procToWatch;
 	ExtensionManager_Register*	extensionMgr_Register;
-	Topology*		nTopology;
-	ElementLayout*		eLayout;
-	NodeLayout*		nLayout;
-	MeshDecomp*		decomp;
-	MeshLayout*		ml;
-	Mesh*			mesh;
-	Stream*			stream;
+	Stream*				stream;
 
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {6, 6, 6};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
+	Mesh*		mesh;
 	
 	/* Initialise MPI, get world info */
 	MPI_Init(&argc, &argv);
@@ -84,84 +107,41 @@
 	stream = Journal_Register (Info_Type, "myStream");
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 	
-	dictionary = Dictionary_New();
-	Dictionary_Add( dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( procCount ) );
-	Dictionary_Add( dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 7 ) );
-	Dictionary_Add( dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 7 ) );
-	Dictionary_Add( dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 7 ) );
-	Dictionary_Add( dictionary, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dictionary, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 1 ) );
-	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	ml = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	
 	extensionMgr_Register = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", ml, sizeof(Node), sizeof(Element), extensionMgr_Register, dictionary );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
 	
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-	
-	Build( mesh, 0, False );
-	Initialise(mesh, 0, False );
-	
-
-	
 	if (rank == procToWatch)
 	{
-		Node_Index				currElementNodesCount=0;	
-		Node_Index*         	currElementNodes = NULL;
-		Element_Index          	element_dI = 0;
-		Node_Index             	refNode_eI = 0;
-		Node_Index				node_Diagonal = 0;
-		Node_Index				node_Diagonal_gI = 0;
+		unsigned		currElementNodesCount=0;	
+		unsigned*         	currElementNodes = NULL;
+		unsigned          	element_dI = 0;
+		unsigned             	refNode_eI = 0;
+		unsigned		node_Diagonal = 0;
+		unsigned		node_Diagonal_gI = 0;
 		
-		// only use this while setting up the test
-		//Print(mesh, stream);
+		/* only use this while setting up the test
+		   Print(mesh, stream);
 				
-		// Some tests involving RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex()
+		   Some tests involving RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex() */
 		
-		
-		for (element_dI=0; element_dI < mesh->elementDomainCount; element_dI++) {
+		for (element_dI=0; element_dI < Mesh_GetDomainSize( mesh, nDims ); element_dI++) {
+			Mesh_GetIncidence( mesh, nDims, element_dI, MT_VERTEX, 
+					   &currElementNodesCount, &currElementNodes );
 			
-			currElementNodes = mesh->elementNodeTbl[element_dI];
-			currElementNodesCount = mesh->elementNodeCountTbl[element_dI];
-			
 			for (refNode_eI = 0; refNode_eI < currElementNodesCount; refNode_eI++ ) {
 				
 				node_Diagonal = RegularMeshUtils_GetDiagOppositeAcrossElementNodeIndex(mesh, element_dI, 
 					currElementNodes[refNode_eI]) ;
-				node_Diagonal_gI = Mesh_NodeMapDomainToGlobal( mesh, node_Diagonal );
-				//print message stating: Element #, curr node #, diag opp node #
+				node_Diagonal_gI = Mesh_DomainToGlobal( mesh, MT_VERTEX, node_Diagonal );
+				/*print message stating: Element #, curr node #, diag opp node #*/
 				printf("Element #: %d, Current Node #: %d, Diagonal Node #: %d, (%d) \n",
 					element_dI, currElementNodes[refNode_eI], node_Diagonal, node_Diagonal_gI);
 				
 			}
-		}	
+		}
 	}
 	
 	Stg_Class_Delete(mesh);
-	Stg_Class_Delete(ml);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete( nTopology );
-	Stg_Class_Delete(dictionary);
 	
 	DiscretisationMesh_Finalise();
 	DiscretisationShape_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSemiRegDeform.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSemiRegDeform.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSemiRegDeform.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -51,22 +51,45 @@
 };
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+
+	gen = CartesianGenerator_New( "" );
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, NULL );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	KillObject( mesh->generator );
+
+	return mesh;
+}
+
+
 int main( int argc, char* argv[] ) {
 	MPI_Comm			commWorld;
 	int				rank;
 	int				nProcs;
 	int				procToWatch;
-	Dictionary*			dict;
-	ExtensionManager_Register*	extMgrReg;
-	Topology*			nTopo;
-	ElementLayout*			eLyt;
-	NodeLayout*			nLyt;
-	MeshDecomp*			decomp;
-	MeshLayout*			mLyt;
-	Mesh*				mesh;
+	ExtensionManager_Register*	extensionMgr_Register;
 	Stream*				stream;
 	SemiRegDeform*			srd;
 
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {4, 4, 4};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
+	Mesh*		mesh;
+	Grid*		vertGrid;
 
 	/*
 	** Initialise MPI, StGermain Base, get world info.
@@ -87,64 +110,14 @@
 	procToWatch = argc >= 2 ? atoi(argv[1]) : 0;
 
 	/*
-	** Polpulate the dictionary.
-	*/
-
-	dict = Dictionary_New();
-	Dictionary_Add( dict, "rank", Dictionary_Entry_Value_FromUnsignedInt( rank ) );
-	Dictionary_Add( dict, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt( nProcs ) );
-	Dictionary_Add( dict, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dict, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt( 5 ) );
-	Dictionary_Add( dict, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt( 4 ) );
-	Dictionary_Add( dict, "allowUnusedCPUs", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dict, "allowPartitionOnElement", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dict, "allowPartitionOnNode", Dictionary_Entry_Value_FromBool( True ) );
-	Dictionary_Add( dict, "allowUnbalancing", Dictionary_Entry_Value_FromBool( False ) );
-	Dictionary_Add( dict, "shadowDepth", Dictionary_Entry_Value_FromUnsignedInt( 0 ) );
-
-
-	/*
 	** Create the mesh.
 	*/
 
-	nTopo = (Topology*)IJK6Topology_New( "IJK6Topology", dict );
-	eLyt = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dict );
-	nLyt = (NodeLayout*)CornerNL_New( "CornerNL", dict, eLyt, nTopo );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dict, commWorld, eLyt, nLyt );
-	mLyt = MeshLayout_New( "MeshLayout", eLyt, nLyt, decomp );
-	
-	extMgrReg = ExtensionManager_Register_New();
-	mesh = Mesh_New( "Mesh", mLyt, sizeof(Node), sizeof(Element), extMgrReg, dict );
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	vertGrid = *(Grid**)ExtensionManager_Get( mesh->info, mesh, 
+						  ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
 
-	mesh->buildNodeLocalToGlobalMap = True;
-	mesh->buildNodeDomainToGlobalMap = True;
-	mesh->buildNodeGlobalToLocalMap = True;
-	mesh->buildNodeGlobalToDomainMap = True;
-	mesh->buildNodeNeighbourTbl = True;
-	mesh->buildNodeElementTbl = True;
-	mesh->buildElementLocalToGlobalMap = True;
-	mesh->buildElementDomainToGlobalMap = True;
-	mesh->buildElementGlobalToDomainMap = True;
-	mesh->buildElementGlobalToLocalMap = True;
-	mesh->buildElementNeighbourTbl = True;
-	mesh->buildElementNodeTbl = True;
-
-
 	/*
-	** Build phase.
-	*/
-
-	Build( mesh, 0, False );
-
-
-	/*
-	** Initialisation phase.
-	*/
-
-	Initialise(mesh, 0, False );
-
-
-	/*
 	** Create the deformation.
 	*/
 
@@ -156,13 +129,13 @@
 		SemiRegDeform_SetMesh( srd, mesh );
 
 		/* Set up strips to remesh in the y direction. */
-		for( ijk[2] = 0; ijk[2] < ((HexaMD*)decomp)->nodeGlobal3DCounts[2]; ijk[2]++ ) {
-			for( ijk[0] = 0; ijk[0] < ((HexaMD*)decomp)->nodeGlobal3DCounts[0]; ijk[0]++ ) {
+		for( ijk[2] = 0; ijk[2] < meshSize[2]; ijk[2]++ ) {
+			for( ijk[0] = 0; ijk[0] < meshSize[0]; ijk[0]++ ) {
 				ijk[1] = 0;
-				GRM_Project( &srd->grm, ijk, &lower );
+				lower = Grid_Project( vertGrid, ijk );
 
-				ijk[1] = ((HexaMD*)decomp)->nodeGlobal3DCounts[1] - 1;
-				GRM_Project( &srd->grm, ijk, &upper );
+				ijk[1] = meshSize[1] - 1;
+				upper = Grid_Project( vertGrid, ijk );
 
 				SemiRegDeform_AddStrip( srd, lower, upper );
 			}
@@ -191,17 +164,17 @@
 		SemiRegDeform_SetMesh( srd, mesh );
 
 		/* Set up strips to remesh in the y direction. */
-		for( ijk[2] = 0; ijk[2] < ((HexaMD*)decomp)->nodeGlobal3DCounts[2]; ijk[2]++ ) {
-			for( ijk[0] = 0; ijk[0] < ((HexaMD*)decomp)->nodeGlobal3DCounts[0]; ijk[0]++ ) {
+		for( ijk[2] = 0; ijk[2] < meshSize[2]; ijk[2]++ ) {
+			for( ijk[0] = 0; ijk[0] < meshSize[0]; ijk[0]++ ) {
 				ijk[1] = 0;
-				GRM_Project( &srd->grm, ijk, &lower );
-				ijk[1] = ((HexaMD*)decomp)->nodeGlobal3DCounts[1] - 2;
-				GRM_Project( &srd->grm, ijk, &upper );
+				lower = Grid_Project( vertGrid, ijk );
+				ijk[1] = meshSize[1] - 2;
+				upper = Grid_Project( vertGrid, ijk );
 				SemiRegDeform_AddStrip( srd, lower, upper );
 
 				lower = upper;
-				ijk[1] = ((HexaMD*)decomp)->nodeGlobal3DCounts[1] - 1;
-				GRM_Project( &srd->grm, ijk, &upper );
+				ijk[1] = meshSize[1] - 1;
+				upper = Grid_Project( vertGrid, ijk );
 				SemiRegDeform_AddStrip( srd, lower, upper );
 			}
 		}
@@ -224,12 +197,6 @@
 	*/
 	
 	Stg_Class_Delete( mesh );
-	Stg_Class_Delete( mLyt );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLyt );
-	Stg_Class_Delete( eLyt );
-	Stg_Class_Delete( nTopo );
-	Stg_Class_Delete( dict );
 
 	DiscretisationMesh_Finalise();
 	DiscretisationShape_Finalise();

Deleted: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSync.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSync.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testSync.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,605 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
-**
-** Authors:
-**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  This library is free software; you can redistribute it and/or
-**  modify it under the terms of the GNU Lesser General Public
-**  License as published by the Free Software Foundation; either
-**  version 2.1 of the License, or (at your option) any later version.
-**
-**  This library is distributed in the hope that it will be useful,
-**  but WITHOUT ANY WARRANTY; without even the implied warranty of
-**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-**  Lesser General Public License for more details.
-**
-**  You should have received a copy of the GNU Lesser General Public
-**  License along with this library; if not, write to the Free Software
-**  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-**
-** $Id: testSyncVC.c 3056 2005-06-28 06:06:29Z RaquibulHassan $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <mpi.h>
-#include "Base/Base.h"
-
-#include "Discretisation/Geometry/Geometry.h"
-#include "Discretisation/Shape/Shape.h"
-#include "Discretisation/Mesh/Mesh.h"
-#include "Discretisation/Utils/Utils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-#define NLOCALS	10
-
-
-int main( int argc, char *argv[] ) {
-	int		rank;
-	int		nProcs;
-	int		watch;
-	Stream*		stream;
-	unsigned	nGlobals;
-	unsigned	locals[NLOCALS];
-	unsigned	nRequired;
-	unsigned*	required;
-	unsigned*	array;
-
-	void initArray( unsigned** array, unsigned nRequired, unsigned nLocals, unsigned rank );
-	void dumpSync( const char* title, Sync* sync );
-	
-	
-	/*
-	** Initialise MPI and StGermain, get world info.
-	*/
-	
-	MPI_Init( &argc, &argv );
-	MPI_Comm_size( MPI_COMM_WORLD, &nProcs );
-	MPI_Comm_rank( MPI_COMM_WORLD, &rank );
-	
-	Base_Init( &argc, &argv );
-	
-	DiscretisationGeometry_Init( &argc, &argv );
-	DiscretisationShape_Init( &argc, &argv );
-	DiscretisationMesh_Init( &argc, &argv );
-	DiscretisationUtils_Init( &argc, &argv );
-	MPI_Barrier( MPI_COMM_WORLD ); /* Ensures copyright info always come first in output */
-
-	/* Setup a stream. */
-	stream = Journal_Register( Info_Type, "myStream" );
-	
-	/* Which process are we going to watch? */
-	watch = (argc >= 2) ? atoi( argv[1] ) : 0;
-
-	/* Set up globals. */
-	nGlobals = NLOCALS * nProcs;
-	
-	
-	/*
-	** Test 1.
-	**	Here we will set up a system with no dependancies on other procs.
-	*/
-	
-	{
-		Sync*		sync;
-		
-		sync = Sync_New( "someName" );
-
-		/* Set up local values. */
-		{
-			unsigned	local_i;
-			
-			for( local_i = 0; local_i < NLOCALS; local_i++ ) {
-				locals[local_i] = rank * NLOCALS + local_i;
-			}
-		}
-		
-		/* No dependancies. */
-		nRequired = 0;
-		required = NULL;
-
-		/* Setup basic stuff. */
-		initArray( &array, nRequired, NLOCALS, rank );
-
-		/* Perform initialisation. */
-		Sync_Negotiate( sync, 
-				nGlobals, 
-				locals, NLOCALS, 
-				NULL, 0, 
-				required, nRequired, 
-				MPI_COMM_WORLD );
-		
-		/* Prepare send/recv. */
-		Sync_SetDomainArray( sync, 
-				     sizeof(unsigned), 
-				     sizeof(unsigned), array );
-
-		/* Execute. */
-		Sync_SendRecv( sync );
-		
-		/* Check the results. */
-		dumpSync( "Test 1:", sync );
-		
-		Stg_Class_Delete( sync );
-	}
-
-	/*
-	** Test 2.
-	**	Here we will set up a system with some dependancies on other procs.
-	*/
-	
-	{
-		Sync*	sync;
-		
-		sync = Sync_New( "someName" );
-		
-		/* Set up local values. */
-		{
-			unsigned	local_i;
-			
-			for( local_i = 0; local_i < NLOCALS; local_i++ ) {
-				locals[local_i] = rank * NLOCALS + local_i;
-			}
-		}
-		
-		/* Dependancies. */
-		{
-			unsigned	req_i;
-			
-			nRequired = 2;
-			required = Memory_Alloc_Array( unsigned, nRequired, "testSync" );
-			for( req_i = nRequired; req_i > 0; req_i-- ) {
-				required[nRequired - req_i] = ((rank + 1) % nProcs) * NLOCALS + req_i - 1;
-			}
-		}
-
-		/* Setup basic stuff. */
-		initArray( &array, nRequired, NLOCALS, rank );
-
-		/* Perform initialisation. */
-		Sync_Negotiate( sync, 
-				nGlobals, 
-				locals, NLOCALS, 
-				NULL, 0, 
-				required, nRequired, 
-				MPI_COMM_WORLD );
-		
-		/* Prepare send/recv. */
-		Sync_SetDomainArray( sync, 
-				     sizeof(unsigned), 
-				     sizeof(unsigned), array );
-
-		/* Free the required array. */
-		FreeArray( required );
-
-		/* Execute. */
-		Sync_SendRecv( sync );
-		
-		/* Check the results. */
-		dumpSync( "Test 2:", sync );
-		
-		Stg_Class_Delete( sync );
-	}
-	
-
-	/*
-	** Test 3.
-	**	Each proc is entirely dependant on another.
-	*/
-	
-	{
-		Sync*	sync;
-		
-		sync = Sync_New( "someName" );
-		
-		/* Set up local values. */
-		{
-			unsigned	local_i;
-			
-			for( local_i = 0; local_i < NLOCALS; local_i++ ) {
-				locals[local_i] = rank * NLOCALS + local_i;
-			}
-		}
-		
-		/* Dependancies. */
-		{
-			unsigned	req_i;
-			
-			nRequired = NLOCALS;
-			required = Memory_Alloc_Array( unsigned, nRequired, "testSync" );
-			for( req_i = 0; req_i < nRequired; req_i++ ) {
-				required[req_i] = ((rank + 1) % nProcs) * NLOCALS + req_i;
-			}
-		}
-
-		/* Setup basic stuff. */
-		initArray( &array, nRequired, NLOCALS, rank );
-
-		/* Perform initialisation. */
-		Sync_Negotiate( sync, 
-				nGlobals, 
-				locals, NLOCALS, 
-				NULL, 0, 
-				required, nRequired, 
-				MPI_COMM_WORLD );
-		
-		/* Prepare send/recv. */
-		Sync_SetDomainArray( sync, 
-				     sizeof(unsigned), 
-				     sizeof(unsigned), array );
-		
-		/* Free the required array. */
-		FreeArray( required );
-		
-		/* Execute. */
-		Sync_SendRecv( sync );
-		
-		/* Check the results. */
-		dumpSync( "Test 3:", sync );
-		
-		Stg_Class_Delete( sync );
-	}
-	
-	
-	/*
-	** Shut everything down.
-	*/
-	
-	DiscretisationUtils_Finalise();
-	DiscretisationMesh_Finalise();
-	DiscretisationShape_Finalise();
-	DiscretisationGeometry_Finalise();
-	
-	Base_Finalise();
-	
-	/* Close off MPI */
-	MPI_Finalize();
-	
-	return EXIT_SUCCESS;
-}
-
-
-void initArray( unsigned** array, unsigned nRequired, unsigned nLocals, unsigned rank ) {
-   unsigned	val_i;
-
-   *array = Memory_Alloc_Array( unsigned, nLocals + nRequired, "testSync" );
-   for( val_i = 0; val_i < nLocals; val_i++ ) {
-      (*array)[val_i] = rank * nLocals + val_i;
-   }
-}
-
-
-void buildSinkMap( Sync* sync, unsigned** map ) {
-	if( sync->netSink ) {
-		unsigned*	tmpMap;
-		unsigned	snkInd = 0;
-		unsigned	proc_i;
-		
-		tmpMap = Memory_Alloc_Array( unsigned, sync->netSink, "testSync" );
-		
-		for( proc_i = 0; proc_i < sync->nProcs; proc_i++ ) {
-			unsigned	snk_i;
-
-			for( snk_i = 0; snk_i < sync->nSink[proc_i]; snk_i++ ) {
-				tmpMap[snkInd] = sync->sink[proc_i][snk_i] % 10;
-				snkInd++;
-			}
-		}
-
-		*map = tmpMap;
-	}
-	else {
-		*map = NULL;
-	}
-}
-
-
-void buildSourceMap( Sync* sync, unsigned** map ) {
-	if( sync->netSource ) {
-		unsigned*	tmpMap;
-		unsigned	src_i;
-		
-		tmpMap = Memory_Alloc_Array( unsigned, sync->netSource, "testSync" );
-		
-		for( src_i = 0; src_i < sync->netSource; src_i++ ) {
-			tmpMap[src_i] = src_i;
-		}
-		
-		*map = tmpMap;
-	}
-	else {
-		*map = NULL;
-	}
-}
-
-
-/*
-** A whole bunch of printing tools.
-*/
-
-typedef struct {
-	unsigned	col;
-	unsigned	indent;
-	unsigned	tabWidth;
-	
-	unsigned	master;
-	unsigned	nProcs;
-	unsigned	rank;
-	MPI_Comm	comm;
-} PrintContext;
-
-
-void expandTabs( PrintContext* ctx, char* str, const char* tabStr ) {
-	char*	curPos;
-	char*	res;
-	
-	curPos = str;
-	do {
-		res = strpbrk( curPos, tabStr );
-		if( res ) {
-			unsigned	nextTab;
-			unsigned	tab_i;
-			
-			*res = '\0';
-			ctx->col += strlen( curPos );
-			printf( "%s", curPos );
-			
-			/* Calculate the next tab stop. */
-			nextTab = ctx->tabWidth - ctx->col % ctx->tabWidth;
-			ctx->col += nextTab;
-			for( tab_i = 0; tab_i < nextTab; tab_i++ ) {
-				printf( " " );
-			}
-			
-			curPos = res + 1;
-		}
-	}
-	while( res );
-	
-	/* Print the last section. */
-	ctx->col += strlen( curPos );
-	printf( "%s", curPos );
-}
-
-
-void print( PrintContext* ctx, const char* fmt, ... ) {
-	va_list	args;
-	char*	tmpFmt;
-	unsigned	maxStrSize;
-	
-	char*	tabCode = "\xFF";
-	char*	crCode = "\xFE";
-	
-	
-	if( !fmt ) {
-		return;
-	}
-	
-	/* Start the variable argument list. */
-	va_start( args, fmt );
-	
-	
-	/*
-	** If we need to indent, then do so.
-	*/
-	
-	if( ctx->col < ctx->indent * ctx->tabWidth ) {
-		unsigned	indSize = ctx->indent * ctx->tabWidth - ctx->col;
-		unsigned	tab_i;
-		
-		for( tab_i = 0; tab_i < indSize; tab_i++ ) {
-			printf( " " );
-		}
-		
-		ctx->col = ctx->indent * ctx->tabWidth;
-	}
-	
-	
-	/*
-	** Process the format string looking for tabs and newlines.  Any we find we'll encode so that c formatted print
-	** won't modify it.  We want to mess with it.
-	*/
-	
-	{
-		unsigned	chr_i;
-		unsigned	len = strlen( fmt ) + 1;
-		unsigned	curChr = 0;
-		
-		/* Destination format buffer. */
-		tmpFmt = Memory_Alloc_Array( char, len, "print" );
-		
-		for( chr_i = 0; chr_i < len; chr_i++ ) {
-			if( fmt[chr_i] == '\t' ) {
-				tmpFmt[curChr] = tabCode[0];
-			}
-			else if( fmt[chr_i] == '\n' ) {
-				tmpFmt[curChr] = crCode[0];
-			}
-			else {
-				tmpFmt[curChr] = fmt[chr_i];
-			}
-			
-			curChr++;
-		}
-		
-		/* TODO: Need to implement a system of counting how long the string is going to be.  Will look for '%' format
-		   discriptors in the format string and use the maximum number of digits for that type.  For the moment, just
-		   hard code a maximum. */
-		maxStrSize = 1024;
-	}
-	
-	
-	/*
-	** Dump the string to a new buffer and translate back while printing.
-	*/
-	
-	{
-		char*	tmpStr;
-		char*	res;
-		char*	curPos;
-		
-		tmpStr = Memory_Alloc_Array( char, maxStrSize, "print" );
-		
-		/* Pass to vsprintf. */
-		vsprintf( tmpStr, tmpFmt, args );
-		
-		/* Free destination buffer. */
-		FreeArray( tmpFmt );
-		
-		/* Tokenize on carriage returns and tab stops respectively. */
-		curPos = tmpStr;
-		do {
-			res = strpbrk( curPos, crCode );
-			if( res ) {
-				/* Search for tab stops. */
-				*res = '\0';
-				expandTabs( ctx, curPos, tabCode );
-				
-				/* Print carriage return. */
-				ctx->col = 0;
-				printf( "\n" );
-				
-				curPos = res + 1;
-			}
-		}
-		while( res );
-		
-		/* Search for tabs in the last section. */
-		expandTabs( ctx, curPos, tabCode );
-		
-		/* Free memory. */
-		FreeArray( tmpStr );
-	}
-	
-	/* End the argument list. */
-	va_end( args );
-}
-
-
-void printArray_unsigned( PrintContext* ctx, 
-					 const char*	title, 
-					 unsigned		size, 
-					 unsigned*	array )
-{
-	if( title ) {
-		print( ctx, title );
-	}
-	print( ctx, "[]:\n" );
-	ctx->indent++;
-	
-	if( size > 0 && array ) {
-		unsigned	item_i;
-		
-		for( item_i = 0; item_i < size; item_i++ ) {
-			print( ctx, "[%d]:\t%d\n", item_i, array[item_i] );
-		}
-	}
-	else {
-		print( ctx, "empty\n" );
-	}
-	
-	ctx->indent--;
-}
-
-
-void printArray2D_unsigned( PrintContext*	ctx, 
-					   const char*		title, 
-					   unsigned		nBlocks, 
-					   unsigned*		sizes, 
-					   unsigned**		array )
-{
-	if( title ) {
-		print( ctx, title );
-	}
-	print( ctx, "[][]:\n" );
-	ctx->indent++;
-	
-	if( nBlocks > 0 && array && sizes ) {
-		unsigned	block_i;
-		char*	title;
-		unsigned	maxTitleLen;
-		
-		maxTitleLen = (unsigned)floor( log10( (double)nBlocks ) ) + 4;
-		title = Memory_Alloc_Array( char, maxTitleLen, "printArray2D_unsigned" );
-		
-		for( block_i = 0; block_i < nBlocks; block_i++ ) {
-			sprintf( title, "[%d]", block_i );
-			printArray_unsigned( ctx, title, sizes[block_i], array[block_i] );
-		}
-		
-		FreeArray( title );
-	}
-	else {
-		print( ctx, "empty\n" );
-	}
-	
-	ctx->indent--;
-}
-
-
-const unsigned	tagBeginPrinting = 1021;
-
-void printPreBarrier( PrintContext* ctx ) {
-	/* We need to ensure that if we're running in parallel each proc prints in order.  We'll do this by waiting for a 
-	   go-ahead from the previous proc. */
-	if( ctx->rank > 0 ) {
-		MPI_Status	status;
-		unsigned		buf;
-		
-		MPI_Recv( &buf, 1, MPI_UNSIGNED, ctx->rank - 1, tagBeginPrinting, ctx->comm, &status );
-	}
-}
-
-
-void printPostBarrier( PrintContext* ctx ) {
-	/* Before signalling, make sure our output is flushed. */
-	fflush( stdout );
-	
-	/* Signal the next proc to begin printing. */
-	if( ctx->nProcs > 1 && ctx->rank < ctx->nProcs - 1 ) {
-		unsigned		buf;
-		
-		MPI_Send( &buf, 1, MPI_UNSIGNED, ctx->rank + 1, tagBeginPrinting, ctx->comm );
-	}
-	
-	/* This will make sure proc 0 doesn't start printing again until all others are done. */
-	MPI_Barrier( ctx->comm );
-}
-
-
-void dumpSync( const char* title, Sync* sync ) {
-	PrintContext	ctx;
-	
-	/* Set up the context. */
-	ctx.indent = 0;
-	ctx.col = 0;
-	ctx.tabWidth = 5;
-	ctx.nProcs = sync->nProcs;
-	ctx.rank = sync->rank;
-	ctx.comm = sync->comm;
-	
-	/* Dump. */
-	if( title ) {
-		print( &ctx, title );
-		print( &ctx, "\n" );
-	}
-	ctx.indent++;
-	print( &ctx, "Sync on proc %d:\n", sync->rank );
-	ctx.indent++;
-	printArray_unsigned( &ctx, "nSource", sync->nProcs, sync->nSource );
-	printArray2D_unsigned( &ctx, "source", sync->nProcs, sync->nSource, sync->source );
-	printArray_unsigned( &ctx, "nSink", sync->nProcs, sync->nSink );
-	printArray2D_unsigned( &ctx, "sink", sync->nProcs, sync->nSink, sync->sink );
-	print( &ctx, "\n" );
-}
-

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of2.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of2.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of2.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,49 +1,49 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Testing for WallVC_Front
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ea8
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3e7c
 		_dictionaryEntryName: WallVC_Front
 	_wall: Front
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e240
+	_entryTbl (ptr): 0x112c788
 		_entryTbl[0]:
-			varName (ptr): 0x8067ec0
+			varName (ptr): 0x111e938
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805eb10
+			varName (ptr): 0x1124ca8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805eb70
+			varName (ptr): 0x1124e58
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_FrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -54,26 +54,26 @@
 	initialise function name: WallVC_FrontName-Initialise
 	execute function name: WallVC_FrontName-Execute
 	destroy function name: WallVC_FrontName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e328
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c7c8
 	indexCount: 8
-	indexTbl (ptr): 0x806c0d8
-		indexTbl[0]: 24
-		indexTbl[1]: 25
-		indexTbl[2]: 26
-		indexTbl[3]: 27
+	indexTbl (ptr): 0x112c988
+		indexTbl[0]: 12
+		indexTbl[1]: 13
+		indexTbl[2]: 14
+		indexTbl[3]: 15
 		indexTbl[4]: 28
 		indexTbl[5]: 29
 		indexTbl[6]: 30
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c108
+	vcVarCountTbl (ptr): 0x112cb98
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -82,7 +82,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c138
+	vcTbl (ptr): 0x112cbc8
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -156,7 +156,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c228
+	valueTbl (ptr): 0x112ccb8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -171,66 +171,66 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 000 000 000 000 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 001 001 001 001 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 002 002 002 002 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Back
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eb5
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3e8c
 		_dictionaryEntryName: WallVC_Back
 	_wall: Back
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e150
+	_entryTbl (ptr): 0x112cd08
 		_entryTbl[0]:
-			varName (ptr): 0x805f068
+			varName (ptr): 0x1125228
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806bf38
+				asDoubleArray (ptr): 0x112cb98
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -241,26 +241,26 @@
 	initialise function name: WallVC_BackName-Initialise
 	execute function name: WallVC_BackName-Execute
 	destroy function name: WallVC_BackName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e328
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c478
 	indexCount: 8
-	indexTbl (ptr): 0x806c228
+	indexTbl (ptr): 0x112c4b8
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
 		indexTbl[3]: 3
-		indexTbl[4]: 4
-		indexTbl[5]: 5
-		indexTbl[6]: 6
-		indexTbl[7]: 7
-	vcVarCountTbl (ptr): 0x806c108
+		indexTbl[4]: 16
+		indexTbl[5]: 17
+		indexTbl[6]: 18
+		indexTbl[7]: 19
+	vcVarCountTbl (ptr): 0x112c4e8
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -269,7 +269,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c3b0
+	vcTbl (ptr): 0x112ced8
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -295,11 +295,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x806c0b0
+	valueTbl (ptr): 0x112ccb8
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806bf38
+			asDoubleArray (ptr): 0x112cb98
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -313,7 +313,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -321,7 +321,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False False False False False False False False False 
+True  True  True  True  False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -329,53 +329,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 000 000 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Left
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ec1
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3e98
 		_dictionaryEntryName: WallVC_Left
 	_wall: Left
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e328
+	_entryTbl (ptr): 0x112c478
 		_entryTbl[0]:
-			varName (ptr): 0x80665c0
+			varName (ptr): 0x1126278
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[1]:
-			varName (ptr): 0x8066a70
+			varName (ptr): 0x1126448
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[2]:
-			varName (ptr): 0x8066c40
+			varName (ptr): 0x1126618
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_LeftName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -386,21 +386,21 @@
 	initialise function name: WallVC_LeftName-Initialise
 	execute function name: WallVC_LeftName-Execute
 	destroy function name: WallVC_LeftName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e240
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c4b8
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x806c108
+	valueTbl (ptr): 0x112ccb8
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 0
@@ -437,50 +437,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Right
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ecd
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3ea4
 		_dictionaryEntryName: WallVC_Right
 	_wall: Right
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e240
+	_entryTbl (ptr): 0x112c478
 		_entryTbl[0]:
-			varName (ptr): 0x8067f80
+			varName (ptr): 0x1126a08
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[1]:
-			varName (ptr): 0x8067208
+			varName (ptr): 0x1126bd8
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[2]:
-			varName (ptr): 0x80673d8
+			varName (ptr): 0x1126da8
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_RightName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -491,34 +491,34 @@
 	initialise function name: WallVC_RightName-Initialise
 	execute function name: WallVC_RightName-Execute
 	destroy function name: WallVC_RightName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e328
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c4b8
 	indexCount: 16
-	indexTbl (ptr): 0x8068668
-		indexTbl[0]: 1
-		indexTbl[1]: 3
-		indexTbl[2]: 5
-		indexTbl[3]: 7
-		indexTbl[4]: 9
-		indexTbl[5]: 11
-		indexTbl[6]: 13
-		indexTbl[7]: 15
-		indexTbl[8]: 17
-		indexTbl[9]: 19
-		indexTbl[10]: 21
-		indexTbl[11]: 23
-		indexTbl[12]: 25
-		indexTbl[13]: 27
-		indexTbl[14]: 29
-		indexTbl[15]: 31
-	vcVarCountTbl (ptr): 0x8068328
+	indexTbl (ptr): 0x112c4f8
+		indexTbl[0]: 0
+		indexTbl[1]: 1
+		indexTbl[2]: 2
+		indexTbl[3]: 3
+		indexTbl[4]: 4
+		indexTbl[5]: 5
+		indexTbl[6]: 6
+		indexTbl[7]: 7
+		indexTbl[8]: 8
+		indexTbl[9]: 9
+		indexTbl[10]: 10
+		indexTbl[11]: 11
+		indexTbl[12]: 12
+		indexTbl[13]: 13
+		indexTbl[14]: 14
+		indexTbl[15]: 15
+	vcVarCountTbl (ptr): 0x112cf48
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -535,7 +535,7 @@
 		vcVarCountTbl[13]: 3
 		vcVarCountTbl[14]: 3
 		vcVarCountTbl[15]: 3
-	vcTbl (ptr): 0x806c438
+	vcTbl (ptr): 0x112cf98
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -681,7 +681,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c108
+	valueTbl (ptr): 0x112ccb8
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 1
@@ -696,66 +696,66 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
-var[4]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
-var[5]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
+var[3]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 
-XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 
-XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 
+000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+001 001 001 001 001 001 001 001 001 001 001 001 001 001 001 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+002 002 002 002 002 002 002 002 002 002 002 002 002 002 002 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Top
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eda
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3eb4
 		_dictionaryEntryName: WallVC_Top
 	_wall: Top
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e150
+	_entryTbl (ptr): 0x112cd08
 		_entryTbl[0]:
-			varName (ptr): 0x8065cf0
+			varName (ptr): 0x11256b8
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806e1a0
+				asDoubleArray (ptr): 0x112cf48
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_TopName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -766,26 +766,26 @@
 	initialise function name: WallVC_TopName-Initialise
 	execute function name: WallVC_TopName-Execute
 	destroy function name: WallVC_TopName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e328
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c478
 	indexCount: 8
-	indexTbl (ptr): 0x806c108
-		indexTbl[0]: 6
+	indexTbl (ptr): 0x112c4b8
+		indexTbl[0]: 3
 		indexTbl[1]: 7
-		indexTbl[2]: 14
+		indexTbl[2]: 11
 		indexTbl[3]: 15
-		indexTbl[4]: 22
+		indexTbl[4]: 19
 		indexTbl[5]: 23
-		indexTbl[6]: 30
+		indexTbl[6]: 27
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c228
+	vcVarCountTbl (ptr): 0x112c4e8
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -794,7 +794,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c608
+	vcTbl (ptr): 0x112d168
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -820,11 +820,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x806c0b0
+	valueTbl (ptr): 0x112ccb8
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806e1a0
+			asDoubleArray (ptr): 0x112cf48
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -838,7 +838,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -846,7 +846,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -854,53 +854,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 
+XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 
 
 Testing for WallVC_Bottom
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ee5
+WallVC (ptr): 0x112c258
+	dictionary (ptr): 0x111df18
+	_dictionaryEntryName (ptr): 0x3ec0
 		_dictionaryEntryName: WallVC_Bottom
 	_wall: Bottom
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e328
+	_entryTbl (ptr): 0x112c478
 		_entryTbl[0]:
-			varName (ptr): 0x8068168
+			varName (ptr): 0x1125b48
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068190
+			varName (ptr): 0x1125cf8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8067fb0
+			varName (ptr): 0x1125ea8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061048
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111eea8
+VariableCondition (ptr): 0x112c258
+Stg_Component (ptr): 0x112c258
+Stg_Object (ptr): 0x112c258
+	Stg_Class (ptr): 0x112c258
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f78fd3
-		_print (func ptr): 0xb7f79019
-		_copy (func ptr): 0xb7f795ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BottomName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f782a4
-	_construct (func ptr): 0xb7f797df
-	_build (func ptr): 0xb7f7979d
-	_initialise (func ptr): 0xb7edcde2
-	_execute (func ptr): 0xb7edcea6
-	_destroy (func ptr): 0xb7edced6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -911,26 +911,26 @@
 	initialise function name: WallVC_BottomName-Initialise
 	execute function name: WallVC_BottomName-Execute
 	destroy function name: WallVC_BottomName-Destroy
-	_getSet (func ptr): 0xb7f7982e
-	_getVariableCount (func ptr): 0xb7f79bc4
-	_getVariableIndex (func ptr): 0xb7f79bdb
-	_getValueIndex (func ptr): 0xb7f79cb6
-	_getValueCount (func ptr): 0xb7f79cbe
-	_getValue (func ptr): 0xb7f79cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e240
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112a378
+	conFunc_Register (ptr): 0x112a318
+	_set (ptr): 0x112c4b8
 	indexCount: 8
-	indexTbl (ptr): 0x806c228
+	indexTbl (ptr): 0x112ccb8
 		indexTbl[0]: 0
-		indexTbl[1]: 1
+		indexTbl[1]: 4
 		indexTbl[2]: 8
-		indexTbl[3]: 9
+		indexTbl[3]: 12
 		indexTbl[4]: 16
-		indexTbl[5]: 17
+		indexTbl[5]: 20
 		indexTbl[6]: 24
-		indexTbl[7]: 25
-	vcVarCountTbl (ptr): 0x806c108
+		indexTbl[7]: 28
+	vcVarCountTbl (ptr): 0x112c4f8
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -939,7 +939,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c678
+	vcTbl (ptr): 0x112d1d8
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -1013,7 +1013,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c0d8
+	valueTbl (ptr): 0x112c528
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -1028,24 +1028,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 
-001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 
-002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 
+000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 
+001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 
+002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.1of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,49 +1,49 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Testing for WallVC_Front
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ea8
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e7c
 		_dictionaryEntryName: WallVC_Front
 	_wall: Front
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e2d8
+	_entryTbl (ptr): 0x112e5b8
 		_entryTbl[0]:
-			varName (ptr): 0x8067ec0
+			varName (ptr): 0x111f348
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805eb10
+			varName (ptr): 0x11256b8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805eb70
+			varName (ptr): 0x1125868
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_FrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -54,26 +54,26 @@
 	initialise function name: WallVC_FrontName-Initialise
 	execute function name: WallVC_FrontName-Execute
 	destroy function name: WallVC_FrontName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e5f8
 	indexCount: 8
-	indexTbl (ptr): 0x806c090
-		indexTbl[0]: 24
-		indexTbl[1]: 25
-		indexTbl[2]: 26
-		indexTbl[3]: 27
+	indexTbl (ptr): 0x112e7b8
+		indexTbl[0]: 12
+		indexTbl[1]: 13
+		indexTbl[2]: 14
+		indexTbl[3]: 15
 		indexTbl[4]: 28
 		indexTbl[5]: 29
 		indexTbl[6]: 30
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c0c0
+	vcVarCountTbl (ptr): 0x112e9c8
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -82,7 +82,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c0f0
+	vcTbl (ptr): 0x112e9f8
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -156,7 +156,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c1e0
+	valueTbl (ptr): 0x112eae8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -171,66 +171,66 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 000 000 000 000 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 001 001 001 001 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 002 002 002 002 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Back
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eb5
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e8c
 		_dictionaryEntryName: WallVC_Back
 	_wall: Back
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e1a0
+	_entryTbl (ptr): 0x112eb38
 		_entryTbl[0]:
-			varName (ptr): 0x805f068
+			varName (ptr): 0x1125c38
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806de00
+				asDoubleArray (ptr): 0x112e9c8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -241,26 +241,26 @@
 	initialise function name: WallVC_BackName-Initialise
 	execute function name: WallVC_BackName-Execute
 	destroy function name: WallVC_BackName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e2a8
 	indexCount: 8
-	indexTbl (ptr): 0x806c1e0
+	indexTbl (ptr): 0x112e2e8
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
 		indexTbl[3]: 3
-		indexTbl[4]: 4
-		indexTbl[5]: 5
-		indexTbl[6]: 6
-		indexTbl[7]: 7
-	vcVarCountTbl (ptr): 0x806c0c0
+		indexTbl[4]: 16
+		indexTbl[5]: 17
+		indexTbl[6]: 18
+		indexTbl[7]: 19
+	vcVarCountTbl (ptr): 0x112e318
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -269,7 +269,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c368
+	vcTbl (ptr): 0x112ed08
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -295,11 +295,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x80686a0
+	valueTbl (ptr): 0x112eae8
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806de00
+			asDoubleArray (ptr): 0x112e9c8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -313,7 +313,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -321,7 +321,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False False False False False False False False False 
+True  True  True  True  False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -329,53 +329,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 000 000 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Left
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ec1
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e98
 		_dictionaryEntryName: WallVC_Left
 	_wall: Left
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e0b8
+	_entryTbl (ptr): 0x112e2a8
 		_entryTbl[0]:
-			varName (ptr): 0x80665c0
+			varName (ptr): 0x1126c88
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[1]:
-			varName (ptr): 0x8066a70
+			varName (ptr): 0x1126e58
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[2]:
-			varName (ptr): 0x8066c40
+			varName (ptr): 0x1127028
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_LeftName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -386,21 +386,21 @@
 	initialise function name: WallVC_LeftName-Initialise
 	execute function name: WallVC_LeftName-Execute
 	destroy function name: WallVC_LeftName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e2d8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e2e8
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x806c0c0
+	valueTbl (ptr): 0x112eae8
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 0
@@ -437,50 +437,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Right
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ecd
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3ea4
 		_dictionaryEntryName: WallVC_Right
 	_wall: Right
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e2d8
+	_entryTbl (ptr): 0x112e2a8
 		_entryTbl[0]:
-			varName (ptr): 0x8067f80
+			varName (ptr): 0x1127418
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[1]:
-			varName (ptr): 0x8067208
+			varName (ptr): 0x11275e8
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[2]:
-			varName (ptr): 0x80673d8
+			varName (ptr): 0x11277b8
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_RightName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -491,21 +491,21 @@
 	initialise function name: WallVC_RightName-Initialise
 	execute function name: WallVC_RightName-Execute
 	destroy function name: WallVC_RightName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e2e8
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x806c0c0
+	valueTbl (ptr): 0x112eae8
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 1
@@ -542,44 +542,44 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Top
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eda
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3eb4
 		_dictionaryEntryName: WallVC_Top
 	_wall: Top
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e1a0
+	_entryTbl (ptr): 0x112eb38
 		_entryTbl[0]:
-			varName (ptr): 0x8065cf0
+			varName (ptr): 0x11260c8
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806df80
+				asDoubleArray (ptr): 0x112e2a8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_TopName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -590,26 +590,26 @@
 	initialise function name: WallVC_TopName-Initialise
 	execute function name: WallVC_TopName-Execute
 	destroy function name: WallVC_TopName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e2d8
 	indexCount: 8
-	indexTbl (ptr): 0x806c0c0
-		indexTbl[0]: 6
+	indexTbl (ptr): 0x112e318
+		indexTbl[0]: 3
 		indexTbl[1]: 7
-		indexTbl[2]: 14
+		indexTbl[2]: 11
 		indexTbl[3]: 15
-		indexTbl[4]: 22
+		indexTbl[4]: 19
 		indexTbl[5]: 23
-		indexTbl[6]: 30
+		indexTbl[6]: 27
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c1e0
+	vcVarCountTbl (ptr): 0x112e348
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -618,7 +618,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c3d8
+	vcTbl (ptr): 0x112ed78
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -644,11 +644,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x80686a0
+	valueTbl (ptr): 0x112eae8
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806df80
+			asDoubleArray (ptr): 0x112e2a8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -662,7 +662,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -670,7 +670,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -678,53 +678,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 
+XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 
 
 Testing for WallVC_Bottom
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ee5
+WallVC (ptr): 0x112e088
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3ec0
 		_dictionaryEntryName: WallVC_Bottom
 	_wall: Bottom
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e0b8
+	_entryTbl (ptr): 0x112e348
 		_entryTbl[0]:
-			varName (ptr): 0x8068168
+			varName (ptr): 0x1126558
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068190
+			varName (ptr): 0x1126708
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8067fb0
+			varName (ptr): 0x11268b8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061018
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112e088
+Stg_Component (ptr): 0x112e088
+Stg_Object (ptr): 0x112e088
+	Stg_Class (ptr): 0x112e088
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f9efd3
-		_print (func ptr): 0xb7f9f019
-		_copy (func ptr): 0xb7f9f5ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BottomName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f9e2a4
-	_construct (func ptr): 0xb7f9f7df
-	_build (func ptr): 0xb7f9f79d
-	_initialise (func ptr): 0xb7f02de2
-	_execute (func ptr): 0xb7f02ea6
-	_destroy (func ptr): 0xb7f02ed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -735,26 +735,26 @@
 	initialise function name: WallVC_BottomName-Initialise
 	execute function name: WallVC_BottomName-Execute
 	destroy function name: WallVC_BottomName-Destroy
-	_getSet (func ptr): 0xb7f9f82e
-	_getVariableCount (func ptr): 0xb7f9fbc4
-	_getVariableIndex (func ptr): 0xb7f9fbdb
-	_getValueIndex (func ptr): 0xb7f9fcb6
-	_getValueCount (func ptr): 0xb7f9fcbe
-	_getValue (func ptr): 0xb7f9fcd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e2d8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112c1c8
+	conFunc_Register (ptr): 0x112c168
+	_set (ptr): 0x112e238
 	indexCount: 8
-	indexTbl (ptr): 0x806c1e0
+	indexTbl (ptr): 0x112e278
 		indexTbl[0]: 0
-		indexTbl[1]: 1
+		indexTbl[1]: 4
 		indexTbl[2]: 8
-		indexTbl[3]: 9
+		indexTbl[3]: 12
 		indexTbl[4]: 16
-		indexTbl[5]: 17
+		indexTbl[5]: 20
 		indexTbl[6]: 24
-		indexTbl[7]: 25
-	vcVarCountTbl (ptr): 0x806c0c0
+		indexTbl[7]: 28
+	vcVarCountTbl (ptr): 0x112eae8
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -763,7 +763,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c448
+	vcTbl (ptr): 0x112ee08
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -837,7 +837,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c090
+	valueTbl (ptr): 0x112eef8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -852,24 +852,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 
-001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 
-002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 
+000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 
+001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 
+002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.2of3.expected
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.2of3.expected	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.2of3.expected	2006-12-07 23:20:58 UTC (rev 5531)
@@ -1,49 +1,49 @@
-StGermain Framework revision 3605. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3842. Copyright (C) 2003-2005 VPAC.
 Testing for WallVC_Front
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ea8
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e7c
 		_dictionaryEntryName: WallVC_Front
 	_wall: Front
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e2d8
+	_entryTbl (ptr): 0x112d708
 		_entryTbl[0]:
-			varName (ptr): 0x8067ec0
+			varName (ptr): 0x111f348
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x805eb10
+			varName (ptr): 0x11256b8
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x805eb70
+			varName (ptr): 0x1125868
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_FrontName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -54,26 +54,26 @@
 	initialise function name: WallVC_FrontName-Initialise
 	execute function name: WallVC_FrontName-Execute
 	destroy function name: WallVC_FrontName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d748
 	indexCount: 8
-	indexTbl (ptr): 0x806c0d8
-		indexTbl[0]: 24
-		indexTbl[1]: 25
-		indexTbl[2]: 26
-		indexTbl[3]: 27
+	indexTbl (ptr): 0x112d908
+		indexTbl[0]: 12
+		indexTbl[1]: 13
+		indexTbl[2]: 14
+		indexTbl[3]: 15
 		indexTbl[4]: 28
 		indexTbl[5]: 29
 		indexTbl[6]: 30
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c108
+	vcVarCountTbl (ptr): 0x112db18
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -82,7 +82,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c138
+	vcTbl (ptr): 0x112db48
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -156,7 +156,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c228
+	valueTbl (ptr): 0x112dc38
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -171,66 +171,66 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00, 2.00
-var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00, 3.00
-var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00
+var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 2.00, 2.00
+var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 3.00, 3.00
+var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 1.00, 1.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
-False False False False False False False False False False False False False False False False False False False False False False False False True  True  True  True  True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
+False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False True  True  True  True  
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 000 000 000 000 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 001 001 001 001 
-XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 002 002 002 002 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 001 001 001 001 
+XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 002 002 002 002 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Back
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eb5
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e8c
 		_dictionaryEntryName: WallVC_Back
 	_wall: Back
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e1a0
+	_entryTbl (ptr): 0x112dc88
 		_entryTbl[0]:
-			varName (ptr): 0x805f068
+			varName (ptr): 0x1125c38
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806bf38
+				asDoubleArray (ptr): 0x112db18
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BackName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -241,26 +241,26 @@
 	initialise function name: WallVC_BackName-Initialise
 	execute function name: WallVC_BackName-Execute
 	destroy function name: WallVC_BackName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d3f8
 	indexCount: 8
-	indexTbl (ptr): 0x806c228
+	indexTbl (ptr): 0x112d438
 		indexTbl[0]: 0
 		indexTbl[1]: 1
 		indexTbl[2]: 2
 		indexTbl[3]: 3
-		indexTbl[4]: 4
-		indexTbl[5]: 5
-		indexTbl[6]: 6
-		indexTbl[7]: 7
-	vcVarCountTbl (ptr): 0x806c108
+		indexTbl[4]: 16
+		indexTbl[5]: 17
+		indexTbl[6]: 18
+		indexTbl[7]: 19
+	vcVarCountTbl (ptr): 0x112d468
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -269,7 +269,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c3b0
+	vcTbl (ptr): 0x112de58
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -295,11 +295,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x806c0b0
+	valueTbl (ptr): 0x112dc38
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806bf38
+			asDoubleArray (ptr): 0x112db18
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -313,7 +313,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[6]: 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -321,7 +321,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False False False False False False False False False 
+True  True  True  True  False False False False False False False False False False False False True  True  True  True  False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -329,53 +329,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 000 000 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Left
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ec1
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3e98
 		_dictionaryEntryName: WallVC_Left
 	_wall: Left
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e0b8
+	_entryTbl (ptr): 0x112d3f8
 		_entryTbl[0]:
-			varName (ptr): 0x80665c0
+			varName (ptr): 0x1126c88
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[1]:
-			varName (ptr): 0x8066a70
+			varName (ptr): 0x1126e58
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
 		_entryTbl[2]:
-			varName (ptr): 0x8066c40
+			varName (ptr): 0x1127028
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 0
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_LeftName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -386,21 +386,21 @@
 	initialise function name: WallVC_LeftName-Initialise
 	execute function name: WallVC_LeftName-Execute
 	destroy function name: WallVC_LeftName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e2d8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d438
 	indexCount: 0
-	indexTbl (ptr): (nil)
-	vcVarCountTbl (ptr): (nil)
-	vcTbl (ptr): (nil)
+	indexTbl (ptr): 0x0
+	vcVarCountTbl (ptr): 0x0
+	vcTbl (ptr): 0x0
 	valueCount: 3
-	valueTbl (ptr): 0x806c108
+	valueTbl (ptr): 0x112dc38
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 0
@@ -437,50 +437,50 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Right
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ecd
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3ea4
 		_dictionaryEntryName: WallVC_Right
 	_wall: Right
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e2d8
+	_entryTbl (ptr): 0x112d3f8
 		_entryTbl[0]:
-			varName (ptr): 0x8067f80
+			varName (ptr): 0x1127418
 				varName: vx
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[1]:
-			varName (ptr): 0x8067208
+			varName (ptr): 0x11275e8
 				varName: vy
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
 		_entryTbl[2]:
-			varName (ptr): 0x80673d8
+			varName (ptr): 0x11277b8
 				varName: vz
 			value:
 				type: VC_ValueType_CFIndex
 				asCFIndex: 1
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_RightName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -491,34 +491,34 @@
 	initialise function name: WallVC_RightName-Initialise
 	execute function name: WallVC_RightName-Execute
 	destroy function name: WallVC_RightName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d438
 	indexCount: 16
-	indexTbl (ptr): 0x8068668
-		indexTbl[0]: 1
-		indexTbl[1]: 3
-		indexTbl[2]: 5
-		indexTbl[3]: 7
-		indexTbl[4]: 9
-		indexTbl[5]: 11
-		indexTbl[6]: 13
-		indexTbl[7]: 15
-		indexTbl[8]: 17
-		indexTbl[9]: 19
-		indexTbl[10]: 21
-		indexTbl[11]: 23
-		indexTbl[12]: 25
-		indexTbl[13]: 27
-		indexTbl[14]: 29
-		indexTbl[15]: 31
-	vcVarCountTbl (ptr): 0x8068328
+	indexTbl (ptr): 0x112d478
+		indexTbl[0]: 0
+		indexTbl[1]: 1
+		indexTbl[2]: 2
+		indexTbl[3]: 3
+		indexTbl[4]: 4
+		indexTbl[5]: 5
+		indexTbl[6]: 6
+		indexTbl[7]: 7
+		indexTbl[8]: 8
+		indexTbl[9]: 9
+		indexTbl[10]: 10
+		indexTbl[11]: 11
+		indexTbl[12]: 12
+		indexTbl[13]: 13
+		indexTbl[14]: 14
+		indexTbl[15]: 15
+	vcVarCountTbl (ptr): 0x112dec8
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -535,7 +535,7 @@
 		vcVarCountTbl[13]: 3
 		vcVarCountTbl[14]: 3
 		vcVarCountTbl[15]: 3
-	vcTbl (ptr): 0x806c438
+	vcTbl (ptr): 0x112df18
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -681,7 +681,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c108
+	valueTbl (ptr): 0x112dc38
 		valueTbl[0]:
 			type: VC_ValueType_CFIndex
 			asCFIndex: 1
@@ -696,66 +696,66 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
-var[4]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
-var[5]: 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00, 0.00, 30.00
+var[3]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[4]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[5]: 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 30.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
-False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  False True  
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
+True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  True  False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 XXX 000 
-XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 XXX 001 
-XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 XXX 002 
+000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+001 001 001 001 001 001 001 001 001 001 001 001 001 001 001 001 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
+002 002 002 002 002 002 002 002 002 002 002 002 002 002 002 002 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 
 Testing for WallVC_Top
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049eda
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3eb4
 		_dictionaryEntryName: WallVC_Top
 	_wall: Top
 	_entryCount: 1
-	_entryTbl (ptr): 0x806e1a0
+	_entryTbl (ptr): 0x112dc88
 		_entryTbl[0]:
-			varName (ptr): 0x8065cf0
+			varName (ptr): 0x11260c8
 				varName: temp
 			value:
 				type: VC_ValueType_DoubleArray
 				arraySize: 5
-				asDoubleArray (ptr): 0x806df80
+				asDoubleArray (ptr): 0x112dec8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
 				asDoubleArray[3]: 8
 				asDoubleArray[4]: 9
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_TopName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -766,26 +766,26 @@
 	initialise function name: WallVC_TopName-Initialise
 	execute function name: WallVC_TopName-Execute
 	destroy function name: WallVC_TopName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e0b8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d3f8
 	indexCount: 8
-	indexTbl (ptr): 0x806c108
-		indexTbl[0]: 6
+	indexTbl (ptr): 0x112d438
+		indexTbl[0]: 3
 		indexTbl[1]: 7
-		indexTbl[2]: 14
+		indexTbl[2]: 11
 		indexTbl[3]: 15
-		indexTbl[4]: 22
+		indexTbl[4]: 19
 		indexTbl[5]: 23
-		indexTbl[6]: 30
+		indexTbl[6]: 27
 		indexTbl[7]: 31
-	vcVarCountTbl (ptr): 0x806c228
+	vcVarCountTbl (ptr): 0x112d468
 		vcVarCountTbl[0]: 1
 		vcVarCountTbl[1]: 1
 		vcVarCountTbl[2]: 1
@@ -794,7 +794,7 @@
 		vcVarCountTbl[5]: 1
 		vcVarCountTbl[6]: 1
 		vcVarCountTbl[7]: 1
-	vcTbl (ptr): 0x806c608
+	vcTbl (ptr): 0x112e0e8
 		vcTbl[0][0]:
 			varIndex: 6
 			valIndex: 0
@@ -820,11 +820,11 @@
 			varIndex: 6
 			valIndex: 0
 	valueCount: 1
-	valueTbl (ptr): 0x806c0b0
+	valueTbl (ptr): 0x112dc38
 		valueTbl[0]:
 			type: VC_ValueType_DoubleArray
 			arraySize: 5
-			asDoubleArray (ptr): 0x806df80
+			asDoubleArray (ptr): 0x112dec8
 				asDoubleArray[0]: 5
 				asDoubleArray[1]: 6
 				asDoubleArray[2]: 7
@@ -838,7 +838,7 @@
 var[3]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[4]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[5]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 5.00, 6.00, 7.00, 8.00, 9.00
+var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 5.00, 6.00, 7.00, 8.00, 9.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
@@ -846,7 +846,7 @@
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  
+False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
@@ -854,53 +854,53 @@
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 
+XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 
 
 Testing for WallVC_Bottom
-WallVC (ptr): 0x806da50
-	dictionary (ptr): 0x805e558
-	_dictionaryEntryName (ptr): 0x8049ee5
+WallVC (ptr): 0x112d1d8
+	dictionary (ptr): 0x111e928
+	_dictionaryEntryName (ptr): 0x3ec0
 		_dictionaryEntryName: WallVC_Bottom
 	_wall: Bottom
 	_entryCount: 3
-	_entryTbl (ptr): 0x806e0b8
+	_entryTbl (ptr): 0x112d3f8
 		_entryTbl[0]:
-			varName (ptr): 0x8068168
+			varName (ptr): 0x1126558
 				varName: vx
 			value:
 				type: VC_ValueType_Double
 				asDouble: 2
 		_entryTbl[1]:
-			varName (ptr): 0x8068190
+			varName (ptr): 0x1126708
 				varName: vy
 			value:
 				type: VC_ValueType_Double
 				asDouble: 3
 		_entryTbl[2]:
-			varName (ptr): 0x8067fb0
+			varName (ptr): 0x11268b8
 				varName: vz
 			value:
 				type: VC_ValueType_Double
 				asDouble: 1
-	_mesh (ptr): 0x8061000
-VariableCondition (ptr): 0x806da50
-Stg_Component (ptr): 0x806da50
-Stg_Object (ptr): 0x806da50
-	Stg_Class (ptr): 0x806da50
+	_mesh (ptr): 0x111f8b8
+VariableCondition (ptr): 0x112d1d8
+Stg_Component (ptr): 0x112d1d8
+Stg_Object (ptr): 0x112d1d8
+	Stg_Class (ptr): 0x112d1d8
 		sizeOfSelf: 192
 		_deleteSelf: Yes
 		type: WallVC
-		_delete (func ptr): 0xb7f17fd3
-		_print (func ptr): 0xb7f18019
-		_copy (func ptr): 0xb7f185ca
+		_delete (func ptr): 0x20a1f4
+		_print (func ptr): 0x20a250
+		_copy (func ptr): 0x20a87c
 	name: WallVC_BottomName
 	nameAllocationType: NON_GLOBAL
-	_defaultConstructor (func ptr): 0xb7f172a4
-	_construct (func ptr): 0xb7f187df
-	_build (func ptr): 0xb7f1879d
-	_initialise (func ptr): 0xb7e7bde2
-	_execute (func ptr): 0xb7e7bea6
-	_destroy (func ptr): 0xb7e7bed6
+	_defaultConstructor (func ptr): 0x209278
+	_construct (func ptr): 0x20aac0
+	_build (func ptr): 0x20aa70
+	_initialise (func ptr): 0x56e31c
+	_execute (func ptr): 0x56e410
+	_destroy (func ptr): 0x56e454
 	isConstructed: True
 	isBuilt: True
 	isInitialised: False
@@ -911,26 +911,26 @@
 	initialise function name: WallVC_BottomName-Initialise
 	execute function name: WallVC_BottomName-Execute
 	destroy function name: WallVC_BottomName-Destroy
-	_getSet (func ptr): 0xb7f1882e
-	_getVariableCount (func ptr): 0xb7f18bc4
-	_getVariableIndex (func ptr): 0xb7f18bdb
-	_getValueIndex (func ptr): 0xb7f18cb6
-	_getValueCount (func ptr): 0xb7f18cbe
-	_getValue (func ptr): 0xb7f18cd5
-	variable_Register (ptr): 0x806e290
-	conFunc_Register (ptr): 0x805b9f8
-	_set (ptr): 0x806e2d8
+	_getSet (func ptr): 0x20ab40
+	_getVariableCount (func ptr): 0x20b3dc
+	_getVariableIndex (func ptr): 0x20b410
+	_getValueIndex (func ptr): 0x20b51c
+	_getValueCount (func ptr): 0x20b548
+	_getValue (func ptr): 0x20b578
+	variable_Register (ptr): 0x112b2f8
+	conFunc_Register (ptr): 0x112b298
+	_set (ptr): 0x112d438
 	indexCount: 8
-	indexTbl (ptr): 0x806c228
+	indexTbl (ptr): 0x112dc38
 		indexTbl[0]: 0
-		indexTbl[1]: 1
+		indexTbl[1]: 4
 		indexTbl[2]: 8
-		indexTbl[3]: 9
+		indexTbl[3]: 12
 		indexTbl[4]: 16
-		indexTbl[5]: 17
+		indexTbl[5]: 20
 		indexTbl[6]: 24
-		indexTbl[7]: 25
-	vcVarCountTbl (ptr): 0x806c108
+		indexTbl[7]: 28
+	vcVarCountTbl (ptr): 0x112d478
 		vcVarCountTbl[0]: 3
 		vcVarCountTbl[1]: 3
 		vcVarCountTbl[2]: 3
@@ -939,7 +939,7 @@
 		vcVarCountTbl[5]: 3
 		vcVarCountTbl[6]: 3
 		vcVarCountTbl[7]: 3
-	vcTbl (ptr): 0x806c678
+	vcTbl (ptr): 0x112e158
 		vcTbl[0][0]:
 			varIndex: 3
 			valIndex: 0
@@ -1013,7 +1013,7 @@
 			varIndex: 5
 			valIndex: 2
 	valueCount: 3
-	valueTbl (ptr): 0x806c0d8
+	valueTbl (ptr): 0x112d4a8
 		valueTbl[0]:
 			type: VC_ValueType_Double
 			asDouble: 2
@@ -1028,24 +1028,24 @@
 var[0]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[1]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 var[2]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[3]: 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[4]: 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 3.00, 3.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
-var[5]: 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 1.00, 1.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
+var[3]: 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00, 2.00, 0.00, 0.00, 0.00
+var[4]: 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00, 3.00, 0.00, 0.00, 0.00
+var[5]: 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00, 1.00, 0.00, 0.00, 0.00
 var[6]: 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00
 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
-True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False True  True  False False False False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
+True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False True  False False False 
 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 
 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
-000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 000 000 XXX XXX XXX XXX XXX XXX 
-001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 001 001 XXX XXX XXX XXX XXX XXX 
-002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 002 002 XXX XXX XXX XXX XXX XXX 
+000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 000 XXX XXX XXX 
+001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 001 XXX XXX XXX 
+002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 002 XXX XXX XXX 
 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testWallVC.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,6 +53,30 @@
 }
 
 
+Mesh* buildMesh( unsigned nDims, unsigned* size, 
+		     double* minCrds, double* maxCrds, 
+		     ExtensionManager_Register* emReg )
+{
+	CartesianGenerator*	gen;
+	Mesh*			mesh;
+	unsigned		maxDecomp[3] = {0, 1, 1};
+
+	gen = CartesianGenerator_New( "" );
+	gen->shadowDepth = 0;
+	CartesianGenerator_SetTopologyParams( gen, nDims, size, 0, NULL, maxDecomp );
+	CartesianGenerator_SetGeometryParams( gen, minCrds, maxCrds );
+
+	mesh = Mesh_New( "" );
+	Mesh_SetExtensionManagerRegister( mesh, emReg );
+	Mesh_SetGenerator( mesh, gen );
+
+	Build( mesh, NULL, False );
+	Initialise( mesh, NULL, False );
+
+	return mesh;
+}
+
+
 int main(int argc, char *argv[])
 {
 	MPI_Comm		CommWorld;
@@ -64,11 +88,10 @@
 	Dictionary*		dictionary;
 	XML_IO_Handler*		io_handler;
 	
-	Topology*       nTopology;
-	ElementLayout*	eLayout;
-	NodeLayout*	nLayout;
-	MeshDecomp*	decomp;
-	MeshLayout*	layout;
+	unsigned	nDims = 3;
+	unsigned	meshSize[3] = {3, 3, 3};
+	double		minCrds[3] = {0.0, 0.0, 0.0};
+	double		maxCrds[3] = {1.0, 1.0, 1.0};
 	Mesh*		mesh;
 	
 	Variable*			var[7];
@@ -86,10 +109,11 @@
 	char*		vcKeyName[] = {"WallVC_FrontName", "WallVC_BackName", "WallVC_LeftName", "WallVC_RightName",
 				"WallVC_TopName", "WallVC_BottomName"};
 	char*		varName[] = {"x", "y", "z", "vx", "vy", "vz", "temp"};
+
+	unsigned	nDomains;
 	
 	Index	i;
 
-	
 	/* Initialise MPI, get world info */
 	MPI_Init(&argc, &argv);
 	MPI_Comm_dup( MPI_COMM_WORLD, &CommWorld );
@@ -114,21 +138,12 @@
 	IO_Handler_ReadAllFromFile(io_handler, "data/wallVC.xml", dictionary);
 	fflush(stdout);
 	MPI_Barrier(MPI_COMM_WORLD);
-	Dictionary_Add(dictionary, "rank", Dictionary_Entry_Value_FromUnsignedInt(rank));
-	Dictionary_Add(dictionary, "numProcessors", Dictionary_Entry_Value_FromUnsignedInt(procCount));
-	Dictionary_Add(dictionary, "meshSizeI", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeJ", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "meshSizeK", Dictionary_Entry_Value_FromUnsignedInt(4));
-	Dictionary_Add(dictionary, "allowUnbalancing", Dictionary_Entry_Value_FromBool(True));
 
 	extensionMgr_Register = ExtensionManager_Register_New();	
 	
-	nTopology = (Topology*)IJK6Topology_New( "IJK6Topology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	layout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
-	mesh = Mesh_New( "Mesh", layout, 0, 0, extensionMgr_Register, dictionary );
+	/* Create a mesh. */
+	mesh = buildMesh( nDims, meshSize, minCrds, maxCrds, extensionMgr_Register );
+	nDomains = Mesh_GetDomainSize( mesh, MT_VERTEX );
 	
 	/* Create CF stuff */
 	quadCF = ConditionFunction_New(quadratic, "quadratic");
@@ -142,12 +157,12 @@
 	
 	/* Create variables */
 	for (i = 0; i < 6; i++) {
-		array[i] = Memory_Alloc_Array( double, decomp->nodeLocalCount, "array[i]" );
-		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &decomp->nodeLocalCount, (void**)&array[i], 0 ); 
+		array[i] = Memory_Alloc_Array( double, nDomains, "array[i]" );
+		var[i] = Variable_NewScalar( varName[i], Variable_DataType_Double, &nDomains, (void**)&array[i], 0 ); 
 		Variable_Register_Add(variable_Register, var[i]);
 	}
-	array[6] = Memory_Alloc_Array( double, decomp->nodeLocalCount * 5, "array[6]" );
-	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &decomp->nodeLocalCount, (void**)&array[6], 0 );
+	array[6] = Memory_Alloc_Array( double, nDomains * 5, "array[6]" );
+	var[6] = Variable_NewVector( varName[6], Variable_DataType_Double, 5, &nDomains, (void**)&array[6], 0 );
 	Variable_Register_Add(variable_Register, var[6]);
 	Variable_Register_BuildAll(variable_Register);
 	
@@ -160,8 +175,8 @@
 		Build( vc, 0, False );
 		
 		for (j = 0; j < 6; j++)
-			memset(array[j], 0, sizeof(double)* decomp->nodeLocalCount );
-		memset(array[6], 0, sizeof(double)* decomp->nodeLocalCount * 5);
+			memset(array[j], 0, sizeof(double)* nDomains );
+		memset(array[6], 0, sizeof(double)* nDomains * 5);
 		VariableCondition_Apply(vc, NULL);
 	
 		if (rank == procToWatch)
@@ -172,17 +187,17 @@
 			for (j = 0; j < 6; j++)
 			{
 				printf("\nvar[%u]: %.2lf", j, array[j][0]);
-				for (k = 1; k < decomp->nodeLocalCount; k++)
+				for (k = 1; k < nDomains; k++)
 					printf(", %.2lf", array[j][k]);
 			}
 			printf("\nvar[6]: %.2lf", array[6][0]);
-			for (j = 1; j < decomp->nodeLocalCount*5; j++)
+			for (j = 1; j < nDomains*5; j++)
 				printf(", %.2lf", array[6][j]);
 			printf("\n\n");
 			
 			for (j = 0; j < 7; j++)
 			{
-				for (k = 0; k < decomp->nodeLocalCount; k++)
+				for (k = 0; k < nDomains; k++)
 					printf("%s ", VariableCondition_IsCondition(vc, k, j) ? "True " : "False");
 				printf("\n");
 			}
@@ -190,7 +205,7 @@
 			
 			for (j = 0; j < 7; j++)
 			{
-				for (k = 0; k < decomp->nodeLocalCount; k++)
+				for (k = 0; k < nDomains; k++)
 				{
 					VariableCondition_ValueIndex	valIndex;
 					
@@ -217,12 +232,8 @@
 	Stg_Class_Delete(conFunc_Register);
 	Stg_Class_Delete(quadCF);
 	Stg_Class_Delete(expCF);
-	Stg_Class_Delete(layout);
-	Stg_Class_Delete(decomp);
-	Stg_Class_Delete(nLayout);
-	Stg_Class_Delete(eLayout);
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete(dictionary);
+	FreeObject( mesh );
 	
 	DiscretisationUtils_Finalise();
 	DiscretisationMesh_Finalise();

Modified: long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -61,7 +61,6 @@
 		AbstractContext_SetDt*		_setDt,
 		double				start,
 		double				stop,
-		MeshLayout*			meshLayout,
 		SizeT				nodeSize,
 		SizeT				elementSize,
 		MPI_Comm			communicator,
@@ -78,23 +77,18 @@
 	
 	/* Virtual info */
 	
-	_MeshContext_Init( self, meshLayout, nodeSize, elementSize );
+	_MeshContext_Init( self, nodeSize, elementSize );
 	
 	return self;
 }
 
-void _MeshContext_Init( MeshContext* self, MeshLayout* meshLayout, SizeT nodeSize, SizeT elementSize ) {
+void _MeshContext_Init( MeshContext* self, SizeT nodeSize, SizeT elementSize ) {
 	Dictionary* meshDict;
 
 	/* General and Virtual info should already be set */
 	
 	/* MeshContext info */
-	self->meshLayout = meshLayout;
-	meshDict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( self->dictionary, "mesh" ) );
-	self->mesh = Mesh_New( "Mesh", self->meshLayout, nodeSize, elementSize, self->extensionMgr_Register,
-		meshDict ? meshDict : self->dictionary );
-	self->meshExtensionMgr = ExtensionManager_New_OfExistingObject( "mesh", self->mesh );
-	ExtensionManager_Register_Add( self->extensionMgr_Register, self->meshExtensionMgr ); 
+	self->mesh = NULL;
 	
 	/* Add hooks to entry points */
 	EntryPoint_Append( Context_GetEntryPoint( self, AbstractContext_EP_Build ), "defaultMeshBuild",
@@ -116,7 +110,7 @@
 		ExtensionManager_Free( self->meshExtensionMgr, self->mesh );
 	}
 	#endif
-	Stg_Class_Delete( self->mesh );
+	FreeObject( self->mesh );
 	
 	/* Stg_Class_Delete parent */
 	_AbstractContext_Delete( meshContext );
@@ -131,9 +125,10 @@
 	/* Virtual info */
 	
 	/* MeshContext info */
-	Print( self->meshLayout, stream );
-	Print( self->mesh, stream );
-	Print( self->meshExtensionMgr, stream );
+	if( self->mesh )
+		Print( self->mesh, stream );
+	if( self->meshExtensionMgr )
+		Print( self->meshExtensionMgr, stream );
 	
 	/* Print parent */
 	_AbstractContext_Print( meshContext, stream );
@@ -145,7 +140,8 @@
 	
 	Journal_Printf( self->debug, "In: %s\n", __func__ );
 	
-	Build( self->mesh, data, False );
+	if( self->mesh )
+		Build( self->mesh, data, False );
 }
 
 void _MeshContext_InitialConditions( Context* context, void* data ) {
@@ -153,5 +149,6 @@
 	
 	Journal_Printf( self->debug, "In: %s\n", __func__ );
 	
-	Initialise( self->mesh, data, False );
+	if( self->mesh )
+		Initialise( self->mesh, data, False );
 }

Modified: long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.h	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/FD/src/MeshContext.h	2006-12-07 23:20:58 UTC (rev 5531)
@@ -53,7 +53,6 @@
 		/* Virtual info */ \
 		\
 		/* MeshContext info */ \
-		MeshLayout*			meshLayout; \
 		Mesh*				mesh; \
 		ExtensionManager*		meshExtensionMgr;
 	struct MeshContext { __MeshContext };
@@ -79,14 +78,13 @@
 		AbstractContext_SetDt*		_setDt,
 		double				start,
 		double				stop,
-		MeshLayout*			meshLayout,
 		SizeT				nodeSize,
 		SizeT				elementSize,
 		MPI_Comm			communicator,
 		Dictionary*			dictionary );
 	
 	/* Initialisation implementation */
-	void _MeshContext_Init( MeshContext* self, MeshLayout* meshLayout, SizeT nodeSize, SizeT elementSize );
+	void _MeshContext_Init( MeshContext* self, SizeT nodeSize, SizeT elementSize );
 	
 	
 	/* Stg_Class_Delete implementation */

Modified: long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c	2006-12-07 22:34:26 UTC (rev 5530)
+++ long/3D/Gale/trunk/src/StGermain/FD/tests/testMeshContext0.c	2006-12-07 23:20:58 UTC (rev 5531)
@@ -96,11 +96,6 @@
 	int numProcessors;
 	int procToWatch;
 	Dictionary* dictionary;
-	Topology*			nTopology;
-	ElementLayout*			eLayout;
-	NodeLayout*			nLayout;
-	MeshDecomp*			decomp;
-	MeshLayout*			meshLayout;
 	MeshContext* meshContext;
 	
 	/* Initialise MPI, get world info */
@@ -135,11 +130,6 @@
 	dictionary->add( dictionary, "maxZ", Dictionary_Entry_Value_FromDouble( 300.0f ) );
 	
 	/* Build the context */
-	nTopology = (Topology*)IJK6Topology_New( "IJKTopology", dictionary );
-	eLayout = (ElementLayout*)ParallelPipedHexaEL_New( "PPHexaEL", 3, dictionary );
-	nLayout = (NodeLayout*)CornerNL_New( "CornerNL", dictionary, eLayout, nTopology );
-	decomp = (MeshDecomp*)HexaMD_New( "HexaMD", dictionary, MPI_COMM_WORLD, eLayout, nLayout );
-	meshLayout = MeshLayout_New( "MeshLayout", eLayout, nLayout, decomp );
 	meshContext = _MeshContext_New( 
 		sizeof(MeshContext), 
 		"TestContext", 
@@ -157,7 +147,6 @@
 		MySetDt, 
 		0, 
 		10, 
-		meshLayout, 
 		sizeof(Node), 
 		sizeof(Element), 
 		CommWorld, 
@@ -199,12 +188,6 @@
 	
 	/* Stg_Class_Delete stuff */
 	Stg_Component_Destroy( meshContext, 0 /* dummy */, False );
-	Stg_Class_Delete( meshContext );
-	Stg_Class_Delete( meshLayout );
-	Stg_Class_Delete( decomp );
-	Stg_Class_Delete( nLayout );
-	Stg_Class_Delete( eLayout );
-	Stg_Class_Delete( nTopology );
 	Stg_Class_Delete( dictionary );
 	
 	FD_Finalise();



More information about the cig-commits mailing list