[cig-commits] r6072 - in long/3D/Gale/trunk/src/PICellerator: . Apps Apps/BuoyancyBenchmark Apps/BuoyancyBenchmark/tests Apps/LidDrivenPIC Apps/PIC_Components Apps/RayleighTaylor Apps/RayleighTaylor/tests Apps/ThermoChem MaterialPoints/src MaterialPoints/tests PopulationControl/src PopulationControl/tests Utils/src Voronoi/src Voronoi/tests Weights/src Weights/tests Weights/tests/expected Weights/tests/plugins

walter at geodynamics.org walter at geodynamics.org
Fri Feb 23 10:00:14 PST 2007


Author: walter
Date: 2007-02-23 10:00:01 -0800 (Fri, 23 Feb 2007)
New Revision: 6072

Added:
   long/3D/Gale/trunk/src/PICellerator/Apps/src
   long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.c
   long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.h
   long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.meta
Modified:
   long/3D/Gale/trunk/src/PICellerator/
   long/3D/Gale/trunk/src/PICellerator/Apps/
   long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/BuoyancyExample.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/demo.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/AnalyticViewports.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/testBuoyancy.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/LidDrivenPIC/LidDrivenPIC.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarmW.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-flip1.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-test1.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-flip1.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-test1.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticBlock.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticColumn.xml
   long/3D/Gale/trunk/src/PICellerator/Apps/ThermoChem/ThermoChem.xml
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/BackgroundParticleLayout.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/CoincidentMapper.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/GaussMapper.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointMapper.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointsSwarm.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ManyToOneMapper.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MappedParticleLayout.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/Material.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialFeVariable.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.c
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.h
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/OneToOneMapper.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ParticleFeVariable.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/PeriodicBoundariesManager.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorW.meta
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testAdvection.xml
   long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testMaterialFeVariable.xml
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiRemove.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiSplitting.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/EscapedRoutine.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/RemovalRoutine.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/ReseedSplitting.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/SplittingRoutine.meta
   long/3D/Gale/trunk/src/PICellerator/PopulationControl/tests/testPopulationControl.xml
   long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.meta
   long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c
   long/3D/Gale/trunk/src/PICellerator/Utils/src/MaterialSwarmVariable.meta
   long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h
   long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h
   long/3D/Gale/trunk/src/PICellerator/Voronoi/src/AdaptiveVoronoi.meta
   long/3D/Gale/trunk/src/PICellerator/Voronoi/src/CellularAutomataVoronoi.meta
   long/3D/Gale/trunk/src/PICellerator/Voronoi/src/DiscreteVoronoi.meta
   long/3D/Gale/trunk/src/PICellerator/Voronoi/tests/testDiscreteVoronoi.xml
   long/3D/Gale/trunk/src/PICellerator/Weights/src/ConstantWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.c
   long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/DiscreteVoronoiWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/IterativeWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/MomentBalanceWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/VolumeWeights.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/src/WeightsCalculator.meta
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsCircle.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsExpIface.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsPoly.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsCircle.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsExpIface.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsPoly.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsCircle.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsExpIface.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsPoly.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsCircle.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsExpIface.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsPoly.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsCircle.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsExpIface.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsPoly.0of1.output.dat.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/plugins/testElementIntegral.c
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsCircle.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsExpIface.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsPoly.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.0of1.expected
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.c
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsCircle.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsExpIface.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsPoly.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsCircle.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsExpIface.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsPoly.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testElementIntegral.xml
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsCircle.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsExpIface.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsPoly.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsCircle.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsExpIface.0of1.sh
   long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsPoly.0of1.sh
Log:
 r563 at earth (orig r418):  LukeHodkinson | 2007-02-05 15:20:42 -0800
 Merging changes on the trunk into the branch.
 



Property changes on: long/3D/Gale/trunk/src/PICellerator
___________________________________________________________________
Name: svk:merge
   - 00de75e2-39f1-0310-8538-9683d00a49cc:/branches/decomp3d:408
00de75e2-39f1-0310-8538-9683d00a49cc:/trunk:381
aee11096-cf10-0410-a191-eea5772ba81f:/cig:524
   + 00de75e2-39f1-0310-8538-9683d00a49cc:/branches/decomp3d:418
00de75e2-39f1-0310-8538-9683d00a49cc:/trunk:381
aee11096-cf10-0410-a191-eea5772ba81f:/cig:524


Property changes on: long/3D/Gale/trunk/src/PICellerator/Apps
___________________________________________________________________
Name: svn:externals
   + 

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/BuoyancyExample.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/BuoyancyExample.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/BuoyancyExample.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -11,16 +11,16 @@
 	<!--param name="extensionReferenceHeight">maxY</param-->
 
 	<!-- Component Stuff -->
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml </include>
-	<include>../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa.xml </include>
-	<!--include>../Underworld_Components/StokesFlowUzawaCompressible.xml </include-->
-	<!--include> ../PIC_Components/PopulationControl.xml </include-->
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml </include>
+	<!--include>Underworld/StokesFlowUzawaCompressible.xml </include-->
+	<!--include>PICellerator/PopulationControl.xml </include-->
 
 	<list name="plugins" mergeType="merge">
 		<!-- Output Plugins -->
@@ -114,7 +114,7 @@
 	<param name="allowUnbalancing"> True </param>
 
 	<!-- Set up BCs and ICs -->
-        <include>./velocityBCs.freeslip.xml</include>
+        <include>velocityBCs.freeslip.xml</include>
 	
 </StGermainData>
 

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/demo.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/demo.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/demo.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,9 +3,9 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
  	
-	<include>./BuoyancyExample.xml</include>
-	<include>./PressureVP.xml</include>
-	<include>./window.xml</include>
+	<include>BuoyancyExample.xml</include>
+	<include>PressureVP.xml</include>
+	<include>window.xml</include>
 	<struct name="components" mergeType="merge">
 		<struct name="window" mergeType="merge">
 			<param name="Viewport">PressureVP</param>

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/AnalyticViewports.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/AnalyticViewports.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/AnalyticViewports.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -4,8 +4,8 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 	<include>../PressureVP.xml</include>
-	<include>./AnalyticPressureVP.xml</include>
-	<include>./PressureErrorVP.xml</include>
+	<include>AnalyticPressureVP.xml</include>
+	<include>PressureErrorVP.xml</include>
 	<include>../window.xml</include>
 	<struct name="components" mergeType="merge">
 		<struct name="window" mergeType="merge">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/testBuoyancy.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/testBuoyancy.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/BuoyancyBenchmark/tests/testBuoyancy.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,9 +3,7 @@
 
 	<include>../BuoyancyExample.xml</include>
 	
-	<!--
-	<include>./AnalyticViewports.xml</include>
-	-->
+	<!--include>AnalyticViewports.xml</include-->
 
 	<list name="plugins" mergeType="merge">
 		<param>PICellerator_AnalyticPressure</param>

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/LidDrivenPIC/LidDrivenPIC.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/LidDrivenPIC/LidDrivenPIC.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/LidDrivenPIC/LidDrivenPIC.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa.xml        </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml        </include>
 	
 	<!-- Load the plugin that sets up the app, plus any others you require -->
 	<list name="plugins">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarm.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -9,24 +9,42 @@
 			<param name="Type">ElementCellLayout</param>
 			<param name="Mesh">mesh-linear</param>
 		</struct>
-		<struct name="discreteVoronoi">
+		<!--struct name="discreteVoronoi">
 			<param name="Type">CellularAutomataVoronoi</param>
 			<param name="resolution">10</param>
 			<param name="diagonalNeighbours">true</param>
-		</struct>		
+		</struct-->		
+		<!--
+		<struct name="weights">
+			<param name="Type">ConstantWeights</param>
+		</struct>
+		-->
 		<!--struct name="weights">
-			<param name="Type">ConstantWeights</param>
+			<param name="Type">DiscreteVoronoiWeights</param>
+			<param name="DiscreteVoronoi">discreteVoronoi</param>
 		</struct-->
+
+		<!--
 		<struct name="weights">
-			<param name="Type">DiscreteVoronoiWeights</param>
-			<param name="DiscreteVoronoi">discreteVoronoi</param>
-		</struct>
-		<!--struct name="weights">
 			<param name="Type">ConstantWeights</param>
-		</struct-->	
-		<!--struct name="weights">
+		</struct>	
+		-->
+		
+		<struct name="weights">
   			<param name="Type">DVCWeights</param>
  			 <param name="resolution">10</param>
+		</struct>
+		
+		<!-- struct name="weights">
+  			<param name="Type">PCDVC</param>
+		   <param name="resolutionX">10</param>
+		   <param name="resolutionY">10</param>
+		   <param name="resolutionZ">10</param>
+		   <param name="lowerT">0.6</param>
+		   <param name="upperT">25</param>
+		   <param name="maxDeletions">3</param>
+		   <param name="maxSplits">3</param>
+		   <param name="MaterialPointsSwarm">materialSwarm</param>
 		</struct-->
 		
 		<struct name="localLayout">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarmW.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarmW.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/MaterialPointSwarmW.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -35,7 +35,7 @@
 			<param name="Type">IntegrationPointsSwarm</param>
 			<param name="CellLayout">elementCellLayout</param>
 			<param name="ParticleLayout">localLayout</param>
-			<param name="FiniteElement_Mesh">mesh-linear</param>
+			<param name="FeMesh">mesh-linear</param>
 			<param name="WeightsCalculator">weights</param>
 			<param name="TimeIntegrator">timeIntegrator</param>
 			<param name="IntegrationPointMapper">mapper</param>
@@ -53,7 +53,7 @@
 			<param name="Type">MaterialPointsSwarm</param>
 			<param name="CellLayout">elementCellLayout</param>
 			<param name="ParticleLayout">materialSwarmParticleLayout</param>
-			<param name="FiniteElement_Mesh">mesh-linear</param>
+			<param name="FeMesh">mesh-linear</param>
 
 			<!-- These guys may or may not be created -->
 			<param name="SplittingRoutine">splittingRoutine</param>

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-flip1.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-flip1.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-flip1.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -4,7 +4,7 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/StokesFlowUzawa.xml</include>
+	<include>StgFEM/StokesFlowUzawa.xml</include>
 
 	<!-- Stokes Flow Stuff -->
 	<struct name="components" mergeType="merge">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-test1.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-test1.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa-test1.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -4,7 +4,7 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/StokesFlowUzawa.xml</include>
+	<include>StgFEM/StokesFlowUzawa.xml</include>
 
 	<!-- Stokes Flow Stuff -->
 	<struct name="components" mergeType="merge">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/PIC_Components/StokesFlowUzawa.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -4,7 +4,7 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/StokesFlowUzawa.xml</include>
+	<include>StgFEM/StokesFlowUzawa.xml</include>
 
 	<!-- Stokes Flow Stuff -->
 	<struct name="components" mergeType="merge">

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-flip1.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-flip1.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-flip1.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../PIC_Components/MaterialPointSwarm-flip1.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa-flip1.xml           </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm-flip1.xml        </include>
+	<include>PICellerator/StokesFlowUzawa-flip1.xml           </include>
 
 	<list name="plugins">
 		<!-- Output Plugins -->

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-test1.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-test1.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example-test1.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../PIC_Components/MaterialPointSwarm-test1.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa-test1.xml           </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm-test1.xml        </include>
+	<include>PICellerator/StokesFlowUzawa-test1.xml           </include>
 
 	<list name="plugins">
 		<!-- Output Plugins -->

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/RayTay_Example.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa.xml           </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml           </include>
 
 	<list name="plugins">
 		<!-- Output Plugins -->

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticBlock.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticBlock.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticBlock.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../../StgFEM_Components/VelocityField.xml          </include>
-	<include>../../StgFEM_Components/PressureField.xml          </include>
-	<include>../../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../../PIC_Components/StokesFlowUzawa.xml           </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml           </include>
 
 	<list name="plugins">
 		<!-- Solver Plugins -->

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticColumn.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticColumn.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/RayleighTaylor/tests/testAnalyticColumn.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,14 +3,14 @@
 <!-- DTD to validate against -->
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
-	<include>../../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../../StgFEM_Components/VelocityField.xml          </include>
-	<include>../../StgFEM_Components/PressureField.xml          </include>
-	<include>../../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../../PIC_Components/StokesFlowUzawa.xml           </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml           </include>
 
 	<list name="plugins">
 		<!-- Solver Plugins -->

Modified: long/3D/Gale/trunk/src/PICellerator/Apps/ThermoChem/ThermoChem.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/ThermoChem/ThermoChem.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/ThermoChem/ThermoChem.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -4,16 +4,16 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
  
 	<!-- Component Stuff -->
-	<include>../StgFEM_Components/ConstantMesh.xml           </include>
-	<include>../StgFEM_Components/LinearMesh.xml             </include>
-	<include>../StgFEM_Components/VelocityField.xml          </include>
-	<include>../StgFEM_Components/TemperatureField.xml       </include>
-	<include>../StgFEM_Components/PressureField.xml          </include>
-	<include>../StgFEM_Components/GaussSwarm.xml             </include>
-	<include>../StgFEM_Components/TimeIntegrator.xml         </include>
-	<include>../PIC_Components/MaterialPointSwarm.xml        </include>
-	<include>../PIC_Components/StokesFlowUzawa.xml           </include>
-	<include>../StgFEM_Components/TempAdvDiff.xml            </include>
+	<include>StgFEM/ConstantMesh.xml           </include>
+	<include>StgFEM/LinearMesh.xml             </include>
+	<include>StgFEM/VelocityField.xml          </include>
+	<include>StgFEM/TemperatureField.xml       </include>
+	<include>StgFEM/PressureField.xml          </include>
+	<include>StgFEM/GaussSwarm.xml             </include>
+	<include>StgFEM/TimeIntegrator.xml         </include>
+	<include>PICellerator/MaterialPointSwarm.xml        </include>
+	<include>PICellerator/StokesFlowUzawa.xml           </include>
+	<include>StgFEM/TempAdvDiff.xml            </include>
 	
 	<!-- Load the plugin that sets up the app, plus any others you require -->
 	<list name="plugins">

Added: long/3D/Gale/trunk/src/PICellerator/Apps/src
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Apps/src	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Apps/src	2007-02-23 18:00:01 UTC (rev 6072)
@@ -0,0 +1 @@
+link PIC_Components
\ No newline at end of file


Property changes on: long/3D/Gale/trunk/src/PICellerator/Apps/src
___________________________________________________________________
Name: svn:special
   + *

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/BackgroundParticleLayout.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/BackgroundParticleLayout.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/BackgroundParticleLayout.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">BackgroundParticleLayout</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">ParticleLayout</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">A particle layout which creates only 1 particle, for use in creating backgroud layers where materials are
 "everywhere"</param>
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/CoincidentMapper.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/CoincidentMapper.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/CoincidentMapper.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">CoincidentMapper</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">IntegrationPointMapper</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">A one-to-one mapper that maps integration points to material points at the same coordinates. A simple global to local operation is performed. The weight of the integration point is dependant on the WeightCalculator of the IntegrationPointsSwarm.</param> 
 <!--Now the interesting stuff-->
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/GaussMapper.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/GaussMapper.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/GaussMapper.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">GaussMapper</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">OneToOneMapper</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">A special one-to-one mapper designed for IntegrationPointsSwarms that uses a GaussParticleLayout. Because
 you may still want to use a simple single-cell, 4-gauss point conservative option for perfect weights and local coord calculation,
 this mapper allow you to map IntegrationPoints to a signle MaterialPoint. The MaterialPointsSwarm will most likely be using a

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointMapper.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointMapper.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointMapper.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">IntegrationPointMapper</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointsSwarm.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointsSwarm.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/IntegrationPointsSwarm.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">IntegrationPointsSwarm</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Swarm</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">A specific swarm used for integration which is "aware" of the materials used. A mapper relationship links
 it with the physical material swarm(s) of which can actually be advected.</param>
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ManyToOneMapper.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ManyToOneMapper.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ManyToOneMapper.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">ManyToOneMapper</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">IntegrationPointMapper</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">Maps many MaterialPointsSwarms to one IntegrationPointsSwarm</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MappedParticleLayout.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MappedParticleLayout.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MappedParticleLayout.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">MappedParticleLayout</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">ParticleLayout</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">Special particle layout for IntegrationPointsSwarms. Indicates that the particle layout will be determined
 by a IntegrationPointMapper.</param>
 

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/Material.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/Material.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/Material.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">Material</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">
 Instances of the Material component represent a physical material. Its parameters are dynamic, each corresponding to a material
 property which defines its mathematical behaviour.

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialFeVariable.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialFeVariable.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialFeVariable.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">MaterialFeVariable</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">ParticleFeVariable</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -51,7 +51,7 @@
 #include <PICellerator/Weights/Weights.h>
 
 #include "MaterialPoints.h"
-
+#include "MaterialPointsSwarm.h"
 #include <assert.h>
 #include <string.h>
 #include <math.h>
@@ -60,6 +60,50 @@
 /* Textual name of this class */
 const Type MaterialPointsSwarm_Type = "MaterialPointsSwarm";
 
+MaterialPointsSwarm* MaterialPointsSwarm_New(
+		Name                                  name,
+		void*                                 cellLayout,
+		void*                                 particleLayout,
+		Dimension_Index                       dim,
+		SizeT                                 particleSize,
+		Particle_InCellIndex                  cellParticleTblDelta,
+		double                                extraParticlesFactor,
+		FeMesh*                   mesh,
+		RemovalRoutine*                       removalRoutine,
+		SplittingRoutine*                     splittingRoutine,
+		EscapedRoutine*                       escapedRoutine, 
+		Material*                             material,
+		Variable_Register*                    swarmVariable_Register,
+		ExtensionManager_Register*            extensionMgr_Register,
+		Materials_Register*                   materials_Register,		
+		MPI_Comm                              comm) 
+{
+	MaterialPointsSwarm* self = (MaterialPointsSwarm*) _MaterialPointsSwarm_DefaultNew( name );
+	
+		self->particleSize = particleSize;
+
+		/* 	MaterialPointsSwarm_InitAll */
+		_Swarm_Init(  	(Swarm*)self, 
+						cellLayout, 
+						particleLayout, 
+						dim, 
+						cellParticleTblDelta, 	 
+						extraParticlesFactor,
+		 				extensionMgr_Register,
+		  				swarmVariable_Register, 
+						comm);
+		_MaterialPointsSwarm_Init(	self, 
+									mesh, 
+									removalRoutine, 
+									splittingRoutine,
+		 							escapedRoutine, 
+									material, 
+									materials_Register);
+
+	return self;
+}
+
+
 MaterialPointsSwarm* _MaterialPointsSwarm_New(
 		SizeT                                           _sizeOfSelf,
 		Type                                            type,
@@ -368,4 +412,3 @@
 	return ExtensionManager_Get( self->particleExtensionMgr, point, extHandle );
 	
 }
-

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.h	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.h	2007-02-23 18:00:01 UTC (rev 6072)
@@ -78,6 +78,25 @@
 	/*---------------------------------------------------------------------------------------------------------------------
 	** Constructors
 	*/
+	
+	MaterialPointsSwarm* MaterialPointsSwarm_New(
+		Name                                  name,
+		void*                                 cellLayout,
+		void*                                 particleLayout,
+		Dimension_Index                       dim,
+		SizeT                                 particleSize,
+		Particle_InCellIndex                  cellParticleTblDelta,
+		double                                extraParticlesFactor,
+		FeMesh*                   	      mesh,
+		RemovalRoutine*                       removalRoutine,
+		SplittingRoutine*                     splittingRoutine,
+		EscapedRoutine*                       escapedRoutine, 
+		Material*                             material,
+		Variable_Register*                    swarmVariable_Register,
+		ExtensionManager_Register*            extensionMgr_Register,
+		Materials_Register*                   materials_Register,		
+		MPI_Comm                              comm);
+		
 	MaterialPointsSwarm* _MaterialPointsSwarm_New(
 		SizeT                                           _sizeOfSelf, 
 		Type                                            type,
@@ -118,6 +137,15 @@
 	void _MaterialPointsSwarm_Destroy( void* swarm, void* data ) ;
 
 
+void _MaterialPointsSwarm_Init( 
+		void*                                 swarm,
+		FeMesh*                   mesh,
+		RemovalRoutine*                       removalRoutine,
+		SplittingRoutine*                     splittingRoutine,
+		EscapedRoutine*                       escapedRoutine, 
+		Material*                             material,
+		Materials_Register*                   materials_Register );
+
 	/** TimeIntegrator hook, used to update envoke population control routines after advection */
 	void _MaterialPointsSwarm_UpdateHook( void* timeIntegrator, void* swarm );
 
@@ -135,4 +163,4 @@
 	/** Returns the particle extension at given point index */
 	void* MaterialPointsSwarm_GetExtensionAt( void* swarm, Index point_I, Index extHandle );
 	
-#endif 
+#endif

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/MaterialPointsSwarm.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">MaterialPointsSwarm</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Swarm</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">Represents a set of points which track materials in the domain. It can be advected during the simulation
 and can be population controlled for load balancing purposes.
 </param>

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/OneToOneMapper.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/OneToOneMapper.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/OneToOneMapper.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">OneToOneMapper</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">IntegrationPointMapper</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">An abstract mapper which will yield one-to-one mapping of integration points to material points.</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ParticleFeVariable.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ParticleFeVariable.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/ParticleFeVariable.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">ParticleFeVariable</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">FeVariable</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/PeriodicBoundariesManager.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/PeriodicBoundariesManager.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/PeriodicBoundariesManager.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,5 +3,6 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">PeriodicBoundariesManager</param>
+<param name="Author">...</param>
 
 </StGermainData>

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvector.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">SwarmAdvector</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">TimeIntegratee</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorD.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">SwarmAdvectorD</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/MaterialPoints/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">TimeIntegratee</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorW.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorW.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/src/SwarmAdvectorW.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">SwarmAdvectorW</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">SwarmAdvector</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testAdvection.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testAdvection.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testAdvection.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,10 +3,10 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	
-	<include>../../Apps/StgFEM_Components/LinearMesh.xml</include>
-	<include>../../Apps/StgFEM_Components/ElementLayout.xml</include>
-	<include>../../Apps/StgFEM_Components/VelocityField.xml</include>
-	<include>../../Apps/StgFEM_Components/TimeIntegrator.xml</include>
+	<include>StgFEM/LinearMesh.xml</include>
+	<include>StgFEM/ElementLayout.xml</include>
+	<include>StgFEM/VelocityField.xml</include>
+	<include>StgFEM/TimeIntegrator.xml</include>
 
 	<param name="timeIntegratorOrder">1</param>
 	

Modified: long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testMaterialFeVariable.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testMaterialFeVariable.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/MaterialPoints/tests/testMaterialFeVariable.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,11 +3,11 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	
-	<include>../../Apps/StgFEM_Components/LinearMesh.xml</include>
-	<include>../../Apps/StgFEM_Components/GaussSwarm.xml</include>
-	<include>../../Apps/StgFEM_Components/ElementLayout.xml</include>
-	<include>../../Apps/StgFEM_Components/VelocityField.xml</include>
-	<include>../../Apps/StgFEM_Components/TimeIntegrator.xml</include>
+	<include>StgFEM/LinearMesh.xml</include>
+	<include>StgFEM/GaussSwarm.xml</include>
+	<include>StgFEM/ElementLayout.xml</include>
+	<include>StgFEM/VelocityField.xml</include>
+	<include>StgFEM/TimeIntegrator.xml</include>
 
 	<struct name="components" mergeType="merge">
 		<struct name="elementCellLayout">

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiRemove.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiRemove.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiRemove.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">DiscreteVoronoiRemove</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">RemovalRoutine</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiSplitting.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiSplitting.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/DiscreteVoronoiSplitting.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">DiscreteVoronoiSplitting</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">SplittingRoutine</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/EscapedRoutine.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/EscapedRoutine.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/EscapedRoutine.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">EscapedRoutine</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/RemovalRoutine.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/RemovalRoutine.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/RemovalRoutine.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">RemovalRoutine</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/ReseedSplitting.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/ReseedSplitting.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/ReseedSplitting.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">ReseedSplitting</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">SplittingRoutine</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/SplittingRoutine.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/SplittingRoutine.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/src/SplittingRoutine.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">SplittingRoutine</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/PopulationControl/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/PopulationControl/tests/testPopulationControl.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/PopulationControl/tests/testPopulationControl.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/PopulationControl/tests/testPopulationControl.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,8 +3,8 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	
-	<include>../../Apps/StgFEM_Components/LinearMesh.xml</include>
-	<include>../../Apps/StgFEM_Components/ElementLayout.xml</include>
+	<include>StgFEM/LinearMesh.xml</include>
+	<include>StgFEM/ElementLayout.xml</include>
 
 	<struct name="components" mergeType="merge">
 		<struct name="elementCellLayout">

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">BuoyancyForceTerm</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Utils/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">ForceTerm</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">This adds a force term for themo-chemical convection, where the fluid is driven my both the thermal expansivity ($\alpha$) as well as the density ($\rho$). Both 'alpha' and 'density' are required as parameters for each material.</param>
 <param name="Equation">$\rho g \left( 1 - \alpha T \right)$</param>
 

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -59,6 +59,7 @@
 	Journal_Printf( Journal_Register( DebugStream_Type, "Context" ), "In: %s\n", __func__ ); /* DO NOT CHANGE OR REMOVE */
 	
 	Stg_ComponentRegister_Add( componentsRegister, BuoyancyForceTerm_Type,            "0", _BuoyancyForceTerm_DefaultNew );
+        Stg_ComponentRegister_Add( componentsRegister, PCDVC_Type,                    "0", _PCDVC_DefaultNew );
 
 	RegisterParent( BuoyancyForceTerm_Type,     ForceTerm_Type );
 
@@ -66,6 +67,6 @@
 
 	RegisterParent( StressBC_Type,     ForceTerm_Type );
 	RegisterParent( MaterialSwarmVariable_Type, SwarmVariable_Type );
-	
+	RegisterParent( PCDVC_Type,                 DVCWeights_Type );
 	return True;
 }

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/MaterialSwarmVariable.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/MaterialSwarmVariable.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/MaterialSwarmVariable.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">MaterialSwarmVariable</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Utils/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">SwarmVariable</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">Creates a swarm variable from a value stored on each material. This means that the degrees of freedom for the SwarmVariable aren't extra data on the particles in the swarm but stored only once per material.</param>
 
 <list name="Params">

Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -0,0 +1,1172 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2006, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** Author:
+**              Mirko Velic - Mirko.Velic at sci.monash.edu.au
+**              Patrick Sunter - patrick at vpac.org
+**              Julian Giordani - julian.giordani at sci.monash.edu.au
+**          
+**  Assumptions:
+**  	 I am assuming that the xi's (local coords) on the IntegrationPoint particles
+**       are precalculated. i.e. We assume the Coincident mapper is being used.
+**
+**  Notes:
+**         The PCDVC class should really be a class the next level up here.
+**	   We should be able to swap out the WeightsCalculator_CalculateAll function instead of just setting
+**                 a pointer inside that function.
+**
+**         If the function  getIntParticleMaterialRef_PointingToMaterialParticle ever gets called
+**         then someone has messed up the mapping between integration and material points. This function
+**         is potentially slow as it traverses the whole swarm. This should be avoided.
+**
+**         We do not allow particle deletion in interface cells (cells that have more than one type of material
+**         in them). Splitting is optional. This may be inadequate. We may need to do some handling of the neighbours
+**         to interface cells as well, in order to preserve particle density about an interface.
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+/****************************************************************************************************************
+
+  The algorithm here-in uses the DVCWeights module to compute a discrete voronoi diagram per FEM cell given a set of local
+  particle positions, in 3D and 2D. The volumes of the Voronoi regions are used as integration weights for
+  the integration point swarm and the integration points are the centroids of the same volumes.
+
+  The volumes are also used as criteria for splitting and deleting particles.
+  At the moment we are only deleting or adding *one* particle per cell per time-step: This
+  will be changed shortlyas it may be inadequate.
+
+  For a description of the Voronoi algorithm, see the article by Velic et.al.
+     "A Fast Robust Algorithm for computing Discrete Voronoi Diagrams in N-dimensions"
+  
+*****************************************************************************************************************/
+
+#include <mpi.h>
+#include <StGermain/StGermain.h>
+#include <StgFEM/StgFEM.h>
+#include <PICellerator/Voronoi/Voronoi.h>
+#include <PICellerator/PopulationControl/PopulationControl.h>
+#include <PICellerator/Weights/Weights.h>
+#include <PICellerator/MaterialPoints/MaterialPoints.h>
+
+//#include <PICellerator/PICellerator.h>
+#include "types.h"
+
+#include "PCDVC.h"
+
+#include <assert.h>
+#include <string.h>
+#include <math.h>
+
+
+/* Textual name of this class */
+const Type PCDVC_Type = "PCDVC";
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+PCDVC* PCDVC_New( Name name, Dimension_Index dim ) {
+	PCDVC* self = (PCDVC*) _PCDVC_DefaultNew( name );
+
+	PCDVC_InitAll( self, dim );
+	return self;
+}
+
+PCDVC* _PCDVC_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,		
+		WeightsCalculator_CalculateFunction*  _calculate,
+		Name                                  name )
+{
+	PCDVC* self;
+	
+	/* Allocate memory */
+	assert( _sizeOfSelf >= sizeof(PCDVC) );
+	/* Initialise the parent class. Every class has a parent, bar Stg_Component, which needs to be called */
+	self = (PCDVC*)_DVCWeights_New( 
+			_sizeOfSelf,
+			type,
+			_delete,
+			_print,
+			_copy,
+			_defaultConstructor,
+			_construct,
+			_build,
+			_initialise,
+			_execute,
+			_destroy,		
+			_calculate,
+			name );
+
+	
+	/* General info */
+
+	/* Virtual Info */
+	return self;
+}
+
+void _PCDVC_Init( void* pcdvc, MaterialPointsSwarm* mps,  double upT, double lowT, int maxDeletions, int maxSplits, Bool splitInInterfaceCells, int *res ) {
+	PCDVC* self = (PCDVC*)pcdvc;
+	
+	self->materialPointsSwarm = mps;
+	self->upperT = upT;
+	self->lowerT = lowT;
+	self->maxDeletions = maxDeletions;
+	self->maxSplits = maxSplits;
+	self->resX = res[I_AXIS];
+	self->resY = res[J_AXIS];
+	self->resZ = res[K_AXIS];
+	self->splitInInterfaceCells = splitInInterfaceCells;
+
+}
+
+void PCDVC_InitAll( void* pcdvc, Dimension_Index dim ) {
+	PCDVC* self = (PCDVC*)pcdvc;
+	WeightsCalculator_InitAll( self, dim );
+}
+
+/*------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _PCDVC_Delete( void* pcdvc ) {
+	PCDVC* self = (PCDVC*)pcdvc;
+	/* Delete parent */
+	_DVCWeights_Delete( self );
+}
+
+
+void _PCDVC_Print( void* pcdvc, Stream* stream ) {
+	PCDVC* self = (PCDVC*)pcdvc;
+	/* Print parent */
+	_DVCWeights_Print( self, stream );
+}
+
+
+
+void* _PCDVC_Copy( void* pcdvc, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap ) {
+	PCDVC*	self = (PCDVC*)pcdvc;
+	PCDVC*	newPCDVC;
+	
+	newPCDVC = (PCDVC*)_DVCWeights_Copy( self, dest, deep, nameExt, ptrMap );
+	return (void*)newPCDVC;
+}
+
+void* _PCDVC_DefaultNew( Name name ) {
+	return (void*) _PCDVC_New(
+			sizeof(PCDVC),
+			PCDVC_Type,
+			_PCDVC_Delete,
+			_PCDVC_Print,
+			_PCDVC_Copy,
+			_PCDVC_DefaultNew,
+			_PCDVC_Construct,
+			_PCDVC_Build,
+			_PCDVC_Initialise,
+			_PCDVC_Execute,
+			_PCDVC_Destroy,
+			_PCDVC_Calculate,
+			name );
+}
+
+
+void _PCDVC_Construct( void* pcdvc, Stg_ComponentFactory* cf, void *data ) {
+
+	PCDVC*	     self          = (PCDVC*) pcdvc;
+	MaterialPointsSwarm*       materialPointsSwarm;
+	double upT, lowT;
+	int defaultResolution;
+	int resolution[3];
+	int maxD, maxS;
+	Bool splitInInterfaceCells;
+	Stream*  stream = Journal_Register( Info_Type, materialPointsSwarm->type );
+	
+	_DVCWeights_Construct( self, cf, data );
+
+	materialPointsSwarm = Stg_ComponentFactory_ConstructByKey( cf, self->name, "MaterialPointsSwarm", MaterialPointsSwarm, True, data );
+	upT = Stg_ComponentFactory_GetDouble( cf, self->name, "upperT", 25 );
+	lowT = Stg_ComponentFactory_GetDouble( cf, self->name, "lowerT", 0.6 );
+	maxD = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "maxDeletions", 2);
+	maxS = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "maxSplits", 3);
+	splitInInterfaceCells = Stg_ComponentFactory_GetBool( cf, self->name, "splitInInterfaceCells", False);
+	defaultResolution = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "resolution", 10 );
+	resolution[ I_AXIS ] = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "resolutionX", defaultResolution );
+	resolution[ J_AXIS ] = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "resolutionY", defaultResolution );
+	resolution[ K_AXIS ] = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "resolutionZ", defaultResolution );
+
+	if(upT < lowT){
+	      lowT = 0.6;
+	      upT = 25;
+	      Journal_Printf( stream,"On Proc %d: In func %s(): WARNING!! lowT and upT have been reset to some more reasonable values. (lowT = 0.6, upT = 25) now!",materialPointsSwarm->myRank, __func__);
+	}
+
+	_PCDVC_Init( self, materialPointsSwarm,  upT, lowT, maxD, maxS, splitInInterfaceCells, resolution );
+}
+
+void _PCDVC_Build( void* pcdvc, void* data ) {
+	PCDVC*	self = (PCDVC*)pcdvc;
+	_DVCWeights_Build( self, data );
+}
+void _PCDVC_Initialise( void* pcdvc, void* data ) {
+	PCDVC*	self = (PCDVC*)pcdvc;
+	_DVCWeights_Initialise( self, data );
+}
+void _PCDVC_Execute( void* pcdvc, void* data ) {
+	PCDVC*	self = (PCDVC*)pcdvc;
+	_DVCWeights_Execute( self, data );
+}
+void _PCDVC_Destroy( void* pcdvc, void* data ) {
+	PCDVC*	self = (PCDVC*)pcdvc;
+	_DVCWeights_Destroy( self, data );
+}
+
+/*-------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+/* this function loops over the intSwarm in order to find the MaterialPointRef for the integration point particle
+   that points to the matLastParticle_IndexOnCPU of a material particle. It is used here in the case that the last integration point
+   particle DOES NOT point to the last material point particle, as it should.
+   If this function is being called ever, then some other module/component somewhere has messed up the mapping between the integration Swarm and the material Swarm*/
+MaterialPointRef* getIntParticleMaterialRef_PointingToMaterialParticle( IntegrationPointsSwarm*  intSwarm, Particle_Index matLastParticle_IndexOnCPU ){
+      IntegrationPoint* intTestParticle;
+      MaterialPointRef*       ref;
+      int i;
+      Stream*  stream = Journal_Register( Info_Type, intSwarm->type );
+      Journal_Printf( stream,"\n\n\e[31m\nOn Proc %d: In func %s(): WARNING!! If this function is being called, then some other module/component, somewhere, has messed up the mapping between the integration Swarm and the material Swarm\n\n", intSwarm->myRank, __func__);
+      Journal_Printf( stream,"This function is potentially slow. Someone should fix the offending module so that it doesn not mess up the ordering\n\n");
+      Journal_Printf( stream,"\e[0;32m");
+      for(i=0;i<intSwarm->particleLocalCount;i++){
+	    intTestParticle =  (IntegrationPoint*)Swarm_ParticleAt( intSwarm, i);
+	    ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intTestParticle);
+	    if(ref->particle_I == matLastParticle_IndexOnCPU){
+		  break;
+	    }
+      }
+      return ref;
+}
+/****************************************************************************************************
+ This function deletes integration particle number intParticleToRemove_IndexWithinCell in lCell_I
+ as well as the corresponding material point.
+ It assumes the one to one coincidence mapper is being used. i.e. for every integration point 
+ there is one material point and vice versa.
+******************************************************************************************************/
+void deleteIntParticleByIndexWithinCell( IntegrationPointsSwarm*  intSwarm, MaterialPointsSwarm* matSwarm, Cell_LocalIndex lCell_I, Particle_Index intParticleToRemove_IndexWithinCell ) {
+      MaterialPointRef*       ref;
+      MaterialPointRef*       refTestLastParticle;
+      MaterialPointRef*       ref_moved_particle;
+      MaterialPointRef*   refToLastMatParticle;
+      int refToLastMatParticleFlag = 0;
+      Particle_Index    intParticleToRemove_IndexOnCPU;/* the particle number within the swarm on the local CPU */
+      Particle_Index    matParticleToRemove_IndexOnCPU;
+      IntegrationPoint* intParticleToRemove;
+      MaterialPoint*    matParticleToRemove;
+      //Particle_Index    intParticleToRemove_IndexWithinCell;/* the number of the particle within the cell */
+      Particle_Index    matParticleToRemove_IndexWithinCell;
+      IntegrationPoint* intSwarmLastParticle; /* The last particle in the swarm on the local CPU */
+      MaterialPoint*    matSwarmLastParticle;
+      Particle_Index    intLastParticle_IndexOnCPU;
+      Particle_Index    matLastParticle_IndexOnCPU;
+      Particle_Index    intLastParticle_IndexWithinCell;
+      Particle_Index    matLastParticle_IndexWithinCell;
+
+      SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+      SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+
+
+      intParticleToRemove_IndexOnCPU  = intSwarm->cellParticleTbl[ lCell_I ][ intParticleToRemove_IndexWithinCell ];
+      intParticleToRemove =  (IntegrationPoint*)Swarm_ParticleAt( intSwarm, intParticleToRemove_IndexOnCPU);
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToRemove); /* so we can get the material point */
+      matParticleToRemove_IndexOnCPU = ref->particle_I;
+      matParticleToRemove =  (MaterialPoint*)Swarm_ParticleAt( matSwarm, matParticleToRemove_IndexOnCPU);
+      matParticleToRemove_IndexWithinCell = Swarm_GetParticleIndexWithinCell( matSwarm, matParticleToRemove->owningCell, matParticleToRemove_IndexOnCPU);
+
+      /* The particles are homeless after these function-calls and for this reason alone must be destroyed */
+      Swarm_RemoveParticleFromCell( intSwarm, lCell_I, intParticleToRemove_IndexWithinCell );
+      Swarm_RemoveParticleFromCell( matSwarm, matParticleToRemove->owningCell, matParticleToRemove_IndexWithinCell );
+
+      /* Copy over particle to remove with the last particle in the particle array - as long as it isn't the last one  */
+      intLastParticle_IndexOnCPU = intSwarm->particleLocalCount - 1; /* lastParticle_I is the last particle in the array of particles residing on the current CPU */
+      matLastParticle_IndexOnCPU = matSwarm->particleLocalCount - 1; /* lastParticle_I is the last particle in the array of particles residing on the current CPU */
+
+      /* we are switching places between the particle we are deleting and the last particle in the array
+	 then actually deleting the last particle in the array */
+      intSwarmLastParticle = (IntegrationPoint*)Swarm_ParticleAt( intSwarm, intLastParticle_IndexOnCPU );
+      matSwarmLastParticle = (MaterialPoint*)Swarm_ParticleAt( matSwarm, matLastParticle_IndexOnCPU );
+      /* we have the last particles of both swarms now..
+	 if the intSwarmLastParticle material ref does NOT point to the matSwarmLastParticle
+	 then we might be in trouble...so test for this here */
+      refTestLastParticle = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intSwarmLastParticle); /* so we can get the material point */
+      //refToLastMatParticleFlag = 0;
+      if(refTestLastParticle->particle_I != matLastParticle_IndexOnCPU){
+	    printf("\e[31mThe last int particle does NOT point to the last mat particle..we need to handle this\n\n");
+	    printf("\e[0;32m");
+	    refToLastMatParticle = getIntParticleMaterialRef_PointingToMaterialParticle( intSwarm, matLastParticle_IndexOnCPU );
+	    refToLastMatParticle->particle_I = matParticleToRemove_IndexOnCPU;
+	    refToLastMatParticleFlag = 1;
+	    exit(0);
+	    /* if the test here is true then that means that some other int particle points to the last material particle
+               and therefore *its* material ref needs to be updated when we move the last material particle.
+	       It also means that we do not update the ref for the last int particle as that must be pointing somewhere
+	       other than the last material particle and the mat particle that is somewhere else is not being moved.
+	    */
+      }
+      if ( intParticleToRemove_IndexOnCPU != intLastParticle_IndexOnCPU ) {                                                                                                                       
+	    //printf("Deleting int particle number %d from cell %d local cell particle num = %d\n\n", intParticleToRemove_IndexOnCPU ,lCell_I, intParticleToRemove_IndexWithinCell);                    
+                                                                                                                                                                                                
+	    intLastParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, intSwarmLastParticle->owningCell, intLastParticle_IndexOnCPU);                                              
+                                                                                                                                                                                                
+	    /* particleToRemove gets over-written by lastParticle  void *memcpy(void *dest, const void *src, size_t n); */                                                              
+	    memcpy( intParticleToRemove, intSwarmLastParticle, intparticleSize );                                                                                                       
+                                                                                                                                                                                                
+	    /* Change value in cell particle table to point to new index in localCPU particle array.                                                                                    
+	       ok.. lastParticle_I is a global index of the last particle...we no longer have that many particles                                                                       
+	       so give it a new index in the swarm...it has now assumed the identity of the particle that got removed...complete identity theft*/                                       
+	    intSwarm->cellParticleTbl[ intSwarmLastParticle->owningCell ] [intLastParticle_IndexWithinCell ] = intParticleToRemove_IndexOnCPU;
+	    if(!refToLastMatParticleFlag){                                                         
+		  ref_moved_particle = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToRemove); /* so we can get the material point */
+		  ref_moved_particle->particle_I = matParticleToRemove_IndexOnCPU;
+	    }
+      }                                                                                                                                                                                 
+      intSwarm->particleLocalCount--; 
+      //Swarm_Realloc( intSwarm ); /* do I really want to do this EVERY time I delete a particle? No I don't hmmm*/
+      if ( matParticleToRemove_IndexOnCPU != matLastParticle_IndexOnCPU ) {                                                                                                                       
+	    //printf("Deleting mat particle number %d from cell %d local cell particle num = %d\n\n", matParticleToRemove_IndexOnCPU, matParticleToRemove->owningCell, matParticleToRemove_IndexWithinCell);                    
+                                                                                                                                                                                                
+	    matLastParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( matSwarm, matSwarmLastParticle->owningCell, matLastParticle_IndexOnCPU);                                              
+                                                                                                                                                                                                
+	    /* particleToRemove gets over-written by lastParticle  void *memcpy(void *dest, const void *src, size_t n); */                                                              
+	    memcpy( matParticleToRemove, matSwarmLastParticle, matparticleSize );                                                                                                       
+                                                                                                                                                                                                
+	    /* Change value in cell particle table to point to new index in localCPU particle array.                                                                                    
+	       ok.. lastParticle_I is a global index of the last particle...we no longer have that many particles                                                                       
+	       so give it a new index in the swarm...it has now assumed the identity of the particle that got removed...complete identity theft*/                                       
+	    matSwarm->cellParticleTbl[ matSwarmLastParticle->owningCell][matLastParticle_IndexWithinCell ] = matParticleToRemove_IndexOnCPU;                                                          
+                                                                                                                                                                                                
+      }                                                                                                                                                                                 
+      matSwarm->particleLocalCount--; 
+      //Swarm_Realloc( intSwarm ); /* do I really want to do this EVERY time I delete a particle? No I don't hmmm*/
+	      
+}
+/****************************************************************************************************
+ This function deletes integration particle number intParticleToRemove_IndexOnCPU
+ on integration swarm as well as the corresponding material point.
+ It assumes the one to one coincidence mapper is being used. i.e. for every integration point 
+ there is one material point and vice versa.
+******************************************************************************************************/
+void deleteIntParticleByIndexOnCPU( IntegrationPointsSwarm*  intSwarm, MaterialPointsSwarm* matSwarm, Particle_Index intParticleToRemove_IndexOnCPU ) {
+      MaterialPointRef*       ref;
+      MaterialPointRef*       refTestLastParticle;
+      MaterialPointRef*       ref_moved_particle;
+      MaterialPointRef*   refToLastMatParticle;
+      int refToLastMatParticleFlag = 0;
+      //Particle_Index    intParticleToRemove_IndexOnCPU;/* the particle number within the swarm on the local CPU */
+      Particle_Index    matParticleToRemove_IndexOnCPU;
+      IntegrationPoint* intParticleToRemove;
+      MaterialPoint*    matParticleToRemove;
+      Particle_Index    intParticleToRemove_IndexWithinCell;/* the number of the particle within the cell */
+      Particle_Index    matParticleToRemove_IndexWithinCell;
+      IntegrationPoint* intSwarmLastParticle; /* The last particle in the swarm on the local CPU */
+      MaterialPoint*    matSwarmLastParticle;
+      Particle_Index    intLastParticle_IndexOnCPU;
+      Particle_Index    matLastParticle_IndexOnCPU;
+      Particle_Index    intLastParticle_IndexWithinCell;
+      Particle_Index    matLastParticle_IndexWithinCell;
+      Cell_LocalIndex lCell_I;
+
+
+      SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+      SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+
+      //intParticleToRemove_IndexOnCPU  = intSwarm->cellParticleTbl[ lCell_I ][ intParticleToRemove_IndexWithinCell ];
+      intParticleToRemove =  (IntegrationPoint*)Swarm_ParticleAt( intSwarm, intParticleToRemove_IndexOnCPU);
+
+      intParticleToRemove_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, intParticleToRemove->owningCell, intParticleToRemove_IndexOnCPU);
+
+      lCell_I = intParticleToRemove->owningCell;
+
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToRemove); /* so we can get the material point */
+      matParticleToRemove_IndexOnCPU = ref->particle_I;
+      matParticleToRemove =  (MaterialPoint*)Swarm_ParticleAt( matSwarm, matParticleToRemove_IndexOnCPU);
+      matParticleToRemove_IndexWithinCell = Swarm_GetParticleIndexWithinCell( matSwarm, matParticleToRemove->owningCell, matParticleToRemove_IndexOnCPU);
+
+      /* The particles are homeless after these function-calls and for this reason alone must be destroyed */
+      Swarm_RemoveParticleFromCell( intSwarm, lCell_I, intParticleToRemove_IndexWithinCell );
+      Swarm_RemoveParticleFromCell( matSwarm, matParticleToRemove->owningCell, matParticleToRemove_IndexWithinCell );
+
+      /* Copy over particle to remove with the last particle in the particle array - as long as it isn't the last one  */
+      intLastParticle_IndexOnCPU = intSwarm->particleLocalCount - 1; /* lastParticle_I is the last particle in the array of particles residing on the current CPU */
+      matLastParticle_IndexOnCPU = matSwarm->particleLocalCount - 1; /* lastParticle_I is the last particle in the array of particles residing on the current CPU */
+
+      /* we are switching places between the particle we are deleting and the last particle in the array
+	 then actually deleting the last particle in the array */
+      intSwarmLastParticle = (IntegrationPoint*)Swarm_ParticleAt( intSwarm, intLastParticle_IndexOnCPU );
+      matSwarmLastParticle = (MaterialPoint*)Swarm_ParticleAt( matSwarm, matLastParticle_IndexOnCPU );
+      /* we have the last particles of both swarms now..
+	 if the intSwarmLastParticle material ref does NOT point to the matSwarmLastParticle
+	 then we might be in trouble...so test for this here */
+      refTestLastParticle = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intSwarmLastParticle); /* so we can get the material point */
+      //refToLastMatParticleFlag = 0;
+      if(refTestLastParticle->particle_I != matLastParticle_IndexOnCPU){
+	    printf("\e[31mThe last int particle does NOT point to the last mat particle..we need to handle this\n\n");
+	    printf("\e[0;32m");
+	    refToLastMatParticle = getIntParticleMaterialRef_PointingToMaterialParticle( intSwarm, matLastParticle_IndexOnCPU );
+	    refToLastMatParticle->particle_I = matParticleToRemove_IndexOnCPU;
+	    refToLastMatParticleFlag = 1;
+	    exit(0);
+	    /* if the test here is true then that means that some other int particle points to the last material particle
+               and therefore *its* material ref needs to be updated when we move the last material particle.
+	       It also means that we do not update the ref for the last int particle as that must be pointing somewhere
+	       other than the last material particle and the mat particle that is somewhere else is not being moved.
+	    */
+      }
+
+      if ( intParticleToRemove_IndexOnCPU != intLastParticle_IndexOnCPU ) {
+	    //printf("Deleting int particle number %d from cell %d local cell particle num = %d\n\n", intParticleToRemove_IndexOnCPU ,lCell_I, intParticleToRemove_IndexWithinCell);
+
+	    intLastParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, intSwarmLastParticle->owningCell, intLastParticle_IndexOnCPU);
+      
+	    /* particleToRemove gets over-written by lastParticle  void *memcpy(void *dest, const void *src, size_t n); */                                                              
+	    memcpy( intParticleToRemove, intSwarmLastParticle, intparticleSize );
+
+	    /* Change value in cell particle table to point to new index in localCPU particle array.
+	       ok.. lastParticle_I is a global index of the last particle...we no longer have that many particles                                                                       
+	       so give it a new index in the swarm...it has now assumed the identity of the particle that got removed...complete identity theft*/                                       
+	    intSwarm->cellParticleTbl[ intSwarmLastParticle->owningCell ] [intLastParticle_IndexWithinCell ] = intParticleToRemove_IndexOnCPU;
+	    if(!refToLastMatParticleFlag){
+		  ref_moved_particle = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToRemove); /* so we can get the material point */
+		  ref_moved_particle->particle_I = matParticleToRemove_IndexOnCPU;
+	    }
+      }
+
+      intSwarm->particleLocalCount--; 
+      //Swarm_Realloc( intSwarm ); /* do I really want to do this EVERY time I delete a particle? No I don't hmmm*/
+      if ( matParticleToRemove_IndexOnCPU != matLastParticle_IndexOnCPU ) {                                                                                                                       
+	    //printf("Deleting mat particle number %d from cell %d local cell particle num = %d\n\n", matParticleToRemove_IndexOnCPU, matParticleToRemove->owningCell, matParticleToRemove_IndexWithinCell);                    
+                                                                                                                                                                                                
+	    matLastParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( matSwarm, matSwarmLastParticle->owningCell, matLastParticle_IndexOnCPU);                                              
+                                                                                                                                                                                                
+	    /* particleToRemove gets over-written by lastParticle  void *memcpy(void *dest, const void *src, size_t n); */                                                              
+	    memcpy( matParticleToRemove, matSwarmLastParticle, matparticleSize );                                                                                                       
+                                                                                                                                                                                                
+	    /* Change value in cell particle table to point to new index in localCPU particle array.                                                                                    
+	       ok.. lastParticle_I is a global index of the last particle...we no longer have that many particles                                                                       
+	       so give it a new index in the swarm...it has now assumed the identity of the particle that got removed...complete identity theft*/                                       
+	    matSwarm->cellParticleTbl[ matSwarmLastParticle->owningCell][matLastParticle_IndexWithinCell ] = matParticleToRemove_IndexOnCPU;                                                          
+                                                                                                                                                                                                
+      }                                                                                                                                                                                 
+      matSwarm->particleLocalCount--; 
+      //Swarm_Realloc( intSwarm ); /* do I really want to do this EVERY time I delete a particle? No I don't hmmm*/
+	      
+}
+void splitIntParticleByIndexWithinCell( IntegrationPointsSwarm*  intSwarm, MaterialPointsSwarm* matSwarm, Cell_LocalIndex lCell_I, Particle_Index intParticleToSplit_IndexWithinCell, Coord xi ) {
+      MaterialPointRef*       ref;
+      Particle_Index    intNewParticle_IndexOnCPU;/* the particle number within the swarm on the local CPU */
+      Particle_Index    matNewParticle_IndexOnCPU;
+      IntegrationPoint* intNewParticle;
+      MaterialPoint*    matNewParticle;
+      Particle_Index    intNewParticle_IndexWithinCell;/* the number of the particle within the cell */
+      //Particle_Index    matNewParticle_IndexWithinCell;
+      IntegrationPoint* intParticleToSplit;
+      MaterialPoint*    matParticleToSplit;
+      //Particle_Index    intParticleToSplit_IndexWithinCell;
+      //Particle_Index    matParticleToSplit_IndexWithinCell;
+      Particle_Index    matParticleToSplit_IndexOnCPU;
+//      SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+//      SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+      Coord                   newCoord;
+//      Coord                   xi;
+
+      FeMesh*     mesh              = (FeMesh*)((ElementCellLayout*)matSwarm->cellLayout)->mesh;
+
+	      
+      //intParticleToSplit_IndexWithinCell = maxI;
+
+      /* Add a new particle to end the end of each swarm */
+      /* this calls Swarm_Realloc -- don't like reallocing every time we create a particle
+	 need to do this differently */
+      intNewParticle     = (IntegrationPoint*) Swarm_CreateNewParticle( intSwarm, &intNewParticle_IndexOnCPU );
+      matNewParticle     = (MaterialPoint*) Swarm_CreateNewParticle( matSwarm, &matNewParticle_IndexOnCPU );
+	      
+      /* Copy particle information */
+      intParticleToSplit = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, intParticleToSplit_IndexWithinCell );
+      memcpy( intNewParticle, intParticleToSplit, intSwarm->particleExtensionMgr->finalSize );
+      Swarm_AddParticleToCell( intSwarm, lCell_I, intNewParticle_IndexOnCPU );
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intNewParticle); /* so we can set the reference to the material point */
+      ref->particle_I = matNewParticle_IndexOnCPU; /* now the ref for the new int particle points to the new material particle -- the swarm id should be correct because we memcpy'd from the original */
+
+      /* Now get the material point corresponding to the int point being split so that
+	 we can copy the material properties to the newly created material particle */
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToSplit);
+      matParticleToSplit_IndexOnCPU = ref->particle_I;
+      matParticleToSplit  =  (MaterialPoint*)Swarm_ParticleAt( matSwarm, matParticleToSplit_IndexOnCPU );
+      memcpy( matNewParticle, matParticleToSplit, matSwarm->particleExtensionMgr->finalSize );
+      Swarm_AddParticleToCell( matSwarm, matNewParticle->owningCell, matNewParticle_IndexOnCPU );
+
+      /* Copy new local position to xi on new int particle */
+      memcpy( intNewParticle->xi, xi, sizeof(Coord) );
+	      
+      /* Get new Global Coordinates from the Local Coordinates */
+      FeMesh_CoordLocalToGlobal( mesh, lCell_I, xi, newCoord );
+
+      /* Copy new global position to coord on new mat particle */
+      memcpy( matNewParticle->coord, newCoord, sizeof(Coord) );
+	      
+      intNewParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, lCell_I, intNewParticle_IndexOnCPU);
+      /*
+	printf("\e[1;33m");
+	printf("Creating int particle number %d from cell %d local within cell particle num = %d\n\n", intNewParticle_IndexOnCPU ,lCell_I, intNewParticle_IndexWithinCell);
+	printf("matSwarm particle count is now : %d\n",matSwarm->cellParticleCountTbl[lCell_I]);
+	printf("intSwarm particle count is now : %d\n",intSwarm->cellParticleCountTbl[lCell_I]);
+	printf("Original Population was %d\n",nump-1);
+	printf("\e[0;32m");
+      */
+
+}
+void splitIntParticleByIndexOnCPU( IntegrationPointsSwarm*  intSwarm, MaterialPointsSwarm* matSwarm, Particle_Index intParticleToSplit_IndexOnCPU, Coord xi ) {
+      MaterialPointRef*       ref;
+      Particle_Index    intNewParticle_IndexOnCPU;/* the particle number within the swarm on the local CPU */
+      Particle_Index    matNewParticle_IndexOnCPU;
+      IntegrationPoint* intNewParticle;
+      MaterialPoint*    matNewParticle;
+      Particle_Index    intNewParticle_IndexWithinCell;/* the number of the particle within the cell */
+      //Particle_Index    matNewParticle_IndexWithinCell;
+      IntegrationPoint* intParticleToSplit;
+      MaterialPoint*    matParticleToSplit;
+      Particle_Index    intParticleToSplit_IndexWithinCell;
+      //Particle_Index    matParticleToSplit_IndexWithinCell;
+      Particle_Index    matParticleToSplit_IndexOnCPU;
+//      SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+//      SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+      Coord                   newCoord;
+//      Coord                   xi;
+
+      Cell_LocalIndex lCell_I;
+
+      FeMesh*     mesh              = (FeMesh*)((ElementCellLayout*)matSwarm->cellLayout)->mesh;
+
+	      
+      //intParticleToSplit_IndexWithinCell = maxI;
+
+      /* Add a new particle to end the end of each swarm */
+      /* this calls Swarm_Realloc -- don't like reallocing every time we create a particle
+	 need to do this differently */
+      intNewParticle     = (IntegrationPoint*) Swarm_CreateNewParticle( intSwarm, &intNewParticle_IndexOnCPU );
+      matNewParticle     = (MaterialPoint*) Swarm_CreateNewParticle( matSwarm, &matNewParticle_IndexOnCPU );
+	      
+
+
+      /* Copy particle information */
+      intParticleToSplit_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, intParticleToSplit->owningCell, intParticleToSplit_IndexOnCPU);
+
+      intParticleToSplit = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, intParticleToSplit_IndexWithinCell );
+
+
+      lCell_I = intParticleToSplit->owningCell;
+
+
+      memcpy( intNewParticle, intParticleToSplit, intSwarm->particleExtensionMgr->finalSize );
+      Swarm_AddParticleToCell( intSwarm, lCell_I, intNewParticle_IndexOnCPU );
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intNewParticle); /* so we can set the reference to the material point */
+      ref->particle_I = matNewParticle_IndexOnCPU; /* now the ref for the new int particle points to the new material particle -- the swarm id should be correct because we memcpy'd from the original */
+
+      /* Now get the material point corresponding to the int point being split so that
+	 we can copy the material properties to the newly created material particle */
+      ref = OneToOneMapper_GetMaterialRef(intSwarm->mapper, intParticleToSplit);
+      matParticleToSplit_IndexOnCPU = ref->particle_I;
+      matParticleToSplit  =  (MaterialPoint*)Swarm_ParticleAt( matSwarm, matParticleToSplit_IndexOnCPU );
+      memcpy( matNewParticle, matParticleToSplit, matSwarm->particleExtensionMgr->finalSize );
+      Swarm_AddParticleToCell( matSwarm, matNewParticle->owningCell, matNewParticle_IndexOnCPU );
+
+      /* Copy new local position to xi on new int particle */
+      memcpy( intNewParticle->xi, xi, sizeof(Coord) );
+	      
+      /* Get new Global Coordinates from the Local Coordinates */
+      FeMesh_CoordLocalToGlobal( mesh, lCell_I, xi, newCoord );
+
+      /* Copy new global position to coord on new mat particle */
+      memcpy( matNewParticle->coord, newCoord, sizeof(Coord) );
+	      
+      intNewParticle_IndexWithinCell = Swarm_GetParticleIndexWithinCell( intSwarm, lCell_I, intNewParticle_IndexOnCPU);
+      /*
+	printf("\e[1;33m");
+	printf("Creating int particle number %d from cell %d local within cell particle num = %d\n\n", intNewParticle_IndexOnCPU ,lCell_I, intNewParticle_IndexWithinCell);
+	printf("matSwarm particle count is now : %d\n",matSwarm->cellParticleCountTbl[lCell_I]);
+	printf("intSwarm particle count is now : %d\n",intSwarm->cellParticleCountTbl[lCell_I]);
+	printf("Original Population was %d\n",nump-1);
+	printf("\e[0;32m");
+      */
+
+}
+/* sort indexOnCPU in reverse order */
+int compare_indexOnCPU(const void * _particleA, const void * _particleB){
+      struct deleteParticle * particleA = (struct deleteParticle *) _particleA;
+      struct deleteParticle * particleB = (struct deleteParticle *) _particleB;
+      
+      if(particleA->indexOnCPU < particleB->indexOnCPU)
+	    return 1;
+      else
+	    return -1;
+
+}
+/* Calculate the integration weights for each particle by contructing
+   a voronoi diagram in an element in 3D*/
+void _PCDVC_Calculate3D( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I ) {
+	PCDVC*             self            = (PCDVC*)  pcdvc;
+	IntegrationPointsSwarm*  intSwarm  = (IntegrationPointsSwarm*) _swarm;
+        MaterialPointsSwarm* matSwarm =	(MaterialPointsSwarm*) self->materialPointsSwarm;
+	/* CoincidentMapper is a special case of the one to one mapper */
+	//CoincidentMapper* mapper  = (CoincidentMapper*)(intSwarm->mapper); /* need the mapper after-all to update the material ref */
+	Particle_InCellIndex         cParticleCount;
+	IntegrationPoint**           particle;
+	static int visited = 0 ;
+	//static int deleted = 0 ;
+	double dx,dy,dz,da;
+	static struct cell *cells;// the connected grid
+	struct particle *pList;// particle List
+	struct chain *bchain;//boundary chain
+	int nump_orig,nump,numx,numy,numz;
+	double BBXMIN = -1.0; // the ranges of the local coordinates of a FEM cell.
+	double BBXMAX = 1.0;
+	double BBYMIN = -1.0;
+	double BBYMAX = 1.0;
+	double BBZMIN = -1.0;
+	double BBZMAX = 1.0;
+	int i,k;
+
+	/*************************************/
+	/* stuff for particle removal/adding */
+	struct deleteParticle* deleteList;
+	double maxW,minW;
+	int maxI, minI;
+	double lowT = self->lowerT;
+	double upT = self->upperT;
+	int delete_flag, split_flag;
+	Particle_Index  *splitList;
+//	int deleteListStackPtr = -1;/* use a number to tell me how many particles we are going to delete: saves doing it some other less efficient way */
+//	int splitListStackPtr = -1;
+	int maxDeletions = self->maxDeletions;/* hard setting this till I get stuff from xml file */
+	int maxSplits = self->maxSplits;
+	int splitCount;
+	int deleteCount;
+	int Count;
+	int matTypeFirst;
+	int matType;
+	Bool splitInInterfaceCells = self->splitInInterfaceCells;
+
+//	SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+//	SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+//	Coord                   newCoord;
+	Coord                   xi;
+
+//	FiniteElement_Mesh*     mesh              = (FiniteElement_Mesh*)((ElementCellLayout*)matSwarm->cellLayout)->mesh;
+
+	/* end decs needed for particle control */
+	/*************************************/
+	
+
+
+	numx = self->resX;
+	numy = self->resY;
+	numz = self->resZ;
+
+	nump_orig = nump = cParticleCount = intSwarm->cellParticleCountTbl[lCell_I];
+
+	/* need a struct for the deletList because we must sort it bu indexOnCPU and delete in reverse order
+           so we don't have the potential problem of  deleting a particle from the list that points to the last particle on the swarm */
+	deleteList = (struct deleteParticle*)malloc(nump*sizeof(struct deleteParticle));/* I don't think I am going to let you delete more than half the particles in a given cell */
+	splitList  = (Particle_Index*)malloc(nump*sizeof(Particle_Index));
+
+
+	Journal_Firewall( nump , Journal_Register(Error_Type, "PCDVC"), "Error in %s: Problem has an under resolved cell (Cell Id = %d), add more particles to your model\n", __func__, lCell_I );
+
+	dx = (BBXMAX - BBXMIN)/numx;
+	dy = (BBYMAX - BBYMIN)/numy;
+	dz = (BBZMAX - BBZMIN)/numz;
+	da = dx*dy*dz;
+	
+	// Construct the grid for the Voronoi cells only once.
+	// If we wanted to call this function again during a job with a different resolution
+	// then we should destroy the grid once we have looped through the whole mesh.
+	// I am assuming we are not going to do that for now.
+	// Easy to implement this anyway, if needed.
+	if(!visited){
+	      /* The PCDVC class should really be a class the next level up here */
+	      /* We should be able to swap out the WeightsCalculator_CalculateAll instead of just setting
+                 a pointer inside that function */
+	      visited++;
+	      _DVCWeights_ConstructGrid(&cells,numz,numy,numx,BBXMIN,BBYMIN,BBZMIN,BBXMAX,BBYMAX,BBZMAX);
+	}
+	
+	// init the data structures
+	_DVCWeights_InitialiseStructs( &bchain, &pList, nump);
+	_DVCWeights_ResetGrid(&cells,numz*numy*numx);
+	
+	particle = (IntegrationPoint**)malloc( (nump)*sizeof(IntegrationPoint*));
+	
+        // initialize the particle positions to be the local coordinates of the material swarm particles
+	// I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material
+	// positions each time step.
+	for(i=0;i<nump;i++){
+	      
+	      particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, i );
+	      pList[i].x = particle[i]->xi[0];
+	      pList[i].y = particle[i]->xi[1];
+	      pList[i].z = particle[i]->xi[2];
+	      
+	}
+	_DVCWeights_CreateVoronoi( &bchain, &pList, &cells, dx, dy, dz, nump, numx, numy, numz, BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
+	_DVCWeights_GetCentroids( cells, pList,numz,numy,numx,nump,da);
+
+	/****************************/
+	/****************************/
+	/* Start Population Control */
+	/****************************/
+	/****************************/
+	/* todo: put print statements into Journal statements */
+	split_flag = 0;
+	delete_flag = 0;
+//	maxW = 0.0;
+//	minW = 8.0;
+	splitCount = 0;
+	deleteCount = 0;
+	/* shouldn't need maxI and minI now */
+	maxW = upT*8/100.0;
+	minW = lowT*8/100.0;
+	/* check to see if we are in an interface cell.
+           We never want to delete particles in an interface cell */
+	matTypeFirst = IntegrationPointMapper_GetMaterialIndexAt(intSwarm->mapper,intSwarm->cellParticleTbl[ lCell_I ][ 0 ]);
+	for(i=0;i<nump;i++){
+	      matType = IntegrationPointMapper_GetMaterialIndexAt(intSwarm->mapper,intSwarm->cellParticleTbl[ lCell_I ][ i ]);
+	      if(matType != matTypeFirst){
+		    maxDeletions = 0; /* no deletions in an interface cell */
+		    /* this may be inadequate...we may need to do something in the neighbouring cells to interface cells as well */
+		    if(!splitInInterfaceCells){
+			  maxSplits = 0;
+		    }
+		    break;
+	      }
+	}
+	for(i=0;i<nump;i++){
+	      if(pList[i].w > maxW){ /* maxW = pList[i].w; maxI = i;*/ splitList[splitCount] = i; splitCount++;}
+	      if(pList[i].w < minW){
+		    /* minW = pList[i].w; minI = i; */
+		    deleteList[deleteCount].indexWithinCell = i;
+		    deleteList[deleteCount].indexOnCPU  = intSwarm->cellParticleTbl[ lCell_I ][ i ];		    
+		    deleteCount++;
+	      }
+	}
+	/* sort the deleteList by indexOnCPU so we can delete the list in reverse order */
+	qsort(deleteList, (deleteCount), sizeof(struct deleteParticle),compare_indexOnCPU);
+	//deleteCount--; /* is going to be one size too large after the loop */
+	/*
+	for(i=0;i<deleteCount;i++){
+	      printf("deleteCount = %d\n",deleteCount);
+	      printf("indices are indexWithinCell %d indexOnCPU %d\n",deleteList[i].indexWithinCell,deleteList[i].indexOnCPU);
+	}
+	*/
+	if(maxDeletions > nump-4){ maxDeletions = nump/2;}
+
+	/* we now have our lists of particles to delete and split */
+
+//	if(pList[maxI].w > upT*8/100.0){
+	Count = maxSplits > splitCount ? splitCount : maxSplits;
+	for(i=0;i<Count;i++){
+	      maxI = splitList[i];
+	      /* now get local coords from centroid of the cell that particleToSplit lives in */
+	      xi[0] = pList[maxI].cx;
+	      xi[1] = pList[maxI].cy;
+	      xi[2] = pList[maxI].cz;
+
+	      split_flag = 1;
+	      nump++;
+
+	      splitIntParticleByIndexWithinCell( intSwarm, matSwarm, lCell_I, maxI, xi );
+
+	}
+
+//	if( (pList[minI].w < lowT*8/100.0) ){
+	Count = maxDeletions > deleteCount ? deleteCount : maxDeletions;
+	for(i=0;i<Count;i++){
+
+	      minI = deleteList[i].indexOnCPU;
+
+	      deleteIntParticleByIndexOnCPU( intSwarm,  matSwarm, minI );
+
+	      delete_flag = 1;
+	      nump--;
+
+	} /* if(pList[minI].w < lowT*8/100.0) */
+	
+	//printf("pList[maxI].w = %lf particle num = %d : %d\n", pList[maxI].w, pList[maxI].index,maxI);
+	//printf("pList[minI].w = %lf particle num = %d : %d\n", pList[minI].w, pList[minI].index,minI);
+	if(delete_flag || split_flag ){/* then we need to redo the Voronoi diagram */
+	      for(k=0;k<nump_orig;k++){
+		    free(bchain[k].new_claimed_cells);
+		    free(bchain[k].new_bound_cells);
+	      }
+	      free(particle);
+	      free(bchain);
+	      free(pList);
+	      if(nump < 3){
+		    Journal_Firewall( 0 , Journal_Register(Error_Type, "PCDVC"), "Something went horribly wrong in %s: Problem has an under resolved cell (Cell Id = %d), check or tune your population control parameters\n", __func__, lCell_I );
+	      }
+	      // init the data structures
+	      _DVCWeights_InitialiseStructs( &bchain, &pList, nump);
+	      //_DVCWeights_ResetGrid(&cells,numz*numy*numx);
+	      
+	      particle = (IntegrationPoint**)malloc( (nump)*sizeof(IntegrationPoint*));
+	
+	      // re-initialize the particle positions to be the local coordinates of the material swarm particles
+	      for(i=0;i<nump;i++){
+		    
+		    particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, i );
+		    pList[i].x = particle[i]->xi[0];
+		    pList[i].y = particle[i]->xi[1];
+		    pList[i].z = particle[i]->xi[2];
+		    //pList[i].index = i; // to track which particle numbers we have after sorting this list */
+		    
+	      }
+	      //printf("Population of matSwarm is %d\n",matSwarm->particleLocalCount);
+	      //printf("Population of intSwarm is %d\n",intSwarm->particleLocalCount);
+	      _DVCWeights_ResetGrid(&cells,numz*numy*numx);
+	      //reset_grid(&cells,numz*numy*numx);/* adding this line fixed memory leak probs */
+	      //create_voronoi( &bchain, &pList, &cells, dx, dy, dz, nump, numx, numy, numz, BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
+	      //get_centroids( cells, pList,numz,numy,numx,nump,da);
+	      _DVCWeights_CreateVoronoi( &bchain, &pList, &cells, dx, dy, dz, nump, numx, numy, numz, BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
+	      _DVCWeights_GetCentroids( cells, pList,numz,numy,numx,nump,da);
+
+	}/* if delete_flag */
+	/****************************/
+	/****************************/
+	/* End Population Control */
+	/****************************/
+	/****************************/
+
+	// We are setting the integration points to be the centroids of the Voronoi regions here and
+	// the weight is the volume of each Voronoi region.
+	for(i=0;i<nump;i++){
+
+	      particle[i]->xi[0] = pList[i].cx;
+	      particle[i]->xi[1] = pList[i].cy;
+	      particle[i]->xi[2] = pList[i].cz;
+	      particle[i]->weight = pList[i].w;
+
+	}	
+	for(k=0;k<nump;k++){
+	      free(bchain[k].new_claimed_cells);
+	      free(bchain[k].new_bound_cells);
+	}
+	free(particle);
+	free(bchain);
+	free(pList);
+	free(deleteList);
+	free(splitList);
+
+}
+
+/* Calculate the integration weighting for each particle by contructing
+a voronoi diagram in an element in 2D*/
+void _PCDVC_Calculate2D( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I ) {
+	PCDVC*             self            = (PCDVC*)  pcdvc;
+	IntegrationPointsSwarm*  intSwarm  = (IntegrationPointsSwarm*) _swarm;
+        MaterialPointsSwarm* matSwarm =	(MaterialPointsSwarm*) self->materialPointsSwarm;
+	/* CoincidentMapper is a special case of the one to one mapper */
+	//CoincidentMapper* mapper  = (CoincidentMapper*)(intSwarm->mapper); /* need the mapper after-all to update the material ref */
+	Particle_InCellIndex         cParticleCount;
+	IntegrationPoint**           particle;
+	static int visited = 0 ;
+	//static int deleted = 0 ;
+
+	double dx,dy,da;
+	static struct cell2d *cells;// the connected grid
+	struct particle2d *pList;// particle List
+	struct chain *bchain;//boundary chain
+	int nump_orig,nump,numx,numy;
+	double BBXMIN = -1.0; // the ranges of the local coordinates of a FEM cell.
+	double BBXMAX = 1.0;
+	double BBYMIN = -1.0;
+	double BBYMAX = 1.0;
+	int i,k;
+
+	/*************************************/
+	/* stuff for particle removal/adding */
+	double maxW,minW;
+	int maxI, minI;
+	double lowT = self->lowerT;
+	double upT = self->upperT;
+	int delete_flag, split_flag;
+	struct deleteParticle* deleteList;
+	Particle_Index  *splitList;
+	int splitCount;
+	int deleteCount;
+	int maxDeletions = self->maxDeletions;/* hard setting this till I get stuff from xml file */
+	int maxSplits = self->maxSplits;
+	int Count;
+	int matTypeFirst;
+	int matType;
+	Bool splitInInterfaceCells = self->splitInInterfaceCells;
+//	SizeT                 intparticleSize     = intSwarm->particleExtensionMgr->finalSize;
+//	SizeT                 matparticleSize     = matSwarm->particleExtensionMgr->finalSize;
+
+//	Coord                   newCoord;
+	Coord                   xi;
+
+//	FiniteElement_Mesh*     mesh              = (FiniteElement_Mesh*)((ElementCellLayout*)matSwarm->cellLayout)->mesh;
+
+	/* end decs needed for particle control */
+	/*************************************/
+	
+
+	numx = self->resX;
+	numy = self->resY;
+
+	nump_orig = nump = cParticleCount = intSwarm->cellParticleCountTbl[lCell_I];
+
+	/* need a struct for the deletList because we must sort it bu indexOnCPU and delete in reverse order
+           so we don't have the potential problem of  deleting a particle from the list that points to the last particle on the swarm */
+	deleteList = (struct deleteParticle*)malloc(nump*sizeof(struct deleteParticle));/* I don't think I am going to let you delete more than half the particles in a given cell */
+	splitList  = (Particle_Index*)malloc(nump*sizeof(Particle_Index));
+
+	Journal_Firewall( nump , Journal_Register(Error_Type, "PCDVC"), "Error in %s: Problem has an under resolved cell (Cell Id = %d), add more particles to your model\n", __func__, lCell_I );
+
+	dx = (BBXMAX - BBXMIN)/numx;
+	dy = (BBYMAX - BBYMIN)/numy;
+	da = dx*dy;
+	
+	// Construct the grid for the Voronoi cells only once.
+	// If we wanted to call this function again during a job with a different resolution
+	// then we should destroy the grid once we have looped through the whole mesh.
+	// I am assuming we are not going to do that for now.
+	// Easy to implement this anyway, if needed.
+	if(!visited){
+	      /* The PCDVC class should really be a class the next level up here */
+	      /* We should be able to swap out the WeightsCalculator_CalculateAll instead of just setting
+                 a pointer inside that function */
+	      visited++;
+	      _DVCWeights_ConstructGrid2D(&cells,numy,numx,BBXMIN,BBYMIN,BBXMAX,BBYMAX);
+	}
+	
+	
+	// init the data structures
+	_DVCWeights_InitialiseStructs2D( &bchain, &pList, nump);
+	_DVCWeights_ResetGrid2D(&cells,numy*numx);
+	
+	particle = (IntegrationPoint**)malloc((nump)*sizeof(IntegrationPoint*));
+	
+        // initialize the particle positions to be the local coordinates of the material swarm particles
+	// I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material
+	// positions each time step.
+	for(i=0;i<nump;i++){
+	      
+	      particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, i );
+	      pList[i].x = particle[i]->xi[0];
+	      pList[i].y = particle[i]->xi[1];
+	      
+	}
+	_DVCWeights_CreateVoronoi2D( &bchain, &pList, &cells, dx, dy, nump, numx, numy, BBXMIN, BBXMAX, BBYMIN, BBYMAX);
+	_DVCWeights_GetCentroids2D( cells, pList,numy,numx,nump,da);
+
+	/****************************/
+	/****************************/
+	/* Start Population Control */
+	/****************************/
+	/****************************/
+
+	split_flag = 0;
+	delete_flag = 0;
+	splitCount = 0;
+	deleteCount = 0;
+	/* shouldn't need maxI and minI now */
+	maxW = upT*4/100.0;
+	minW = lowT*4/100.0;
+	/* check to see if we are in an interface cell.
+           We never want to delete particles in an interface cell */
+	matTypeFirst = IntegrationPointMapper_GetMaterialIndexAt(intSwarm->mapper,intSwarm->cellParticleTbl[ lCell_I ][ 0 ]);
+	for(i=0;i<nump;i++){
+	      matType = IntegrationPointMapper_GetMaterialIndexAt(intSwarm->mapper,intSwarm->cellParticleTbl[ lCell_I ][ i ]);
+	      if(matType != matTypeFirst){
+		    maxDeletions = 0; /* no deletions in an interface cell */
+		    /* this may be inadequate...we may need to do something in the neighbouring cells to interface cells as well */
+		    if(!splitInInterfaceCells){
+			  maxSplits = 0;
+		    }
+		    //printf("------- FOUND an Interface Cell!! --------------\n");
+		    break;
+	      }
+	}
+	for(i=0;i<nump;i++){
+	      if(pList[i].w > maxW){ /* maxW = pList[i].w; maxI = i;*/ splitList[splitCount] = i; splitCount++;}
+	      if(pList[i].w < minW){
+		    /* minW = pList[i].w; minI = i; */
+		    deleteList[deleteCount].indexWithinCell = i;
+		    deleteList[deleteCount].indexOnCPU  = intSwarm->cellParticleTbl[ lCell_I ][ i ];		    
+		    deleteCount++;
+	      }
+	}
+	/* sort the deleteList by indexOnCPU so we can delete the list in reverse order */
+	qsort(deleteList, (deleteCount), sizeof(struct deleteParticle),compare_indexOnCPU);
+	//deleteCount--; /* is going to be one size too large after the loop */
+	/*
+	for(i=0;i<deleteCount;i++){
+	      printf("deleteCount = %d\n",deleteCount);
+	      printf("indices are indexWithinCell %d indexOnCPU %d\n",deleteList[i].indexWithinCell,deleteList[i].indexOnCPU);
+	}
+*/
+	if(maxDeletions > nump-4){ maxDeletions = nump/2;}
+
+	/* we now have our lists of particles to delete and split */
+	Count = maxSplits > splitCount ? splitCount : maxSplits;
+	for(i=0;i<Count;i++){
+	      maxI = splitList[i];
+	      /* now get local coords from centroid of the cell that particleToSplit lives in */
+	      xi[0] = pList[maxI].cx;
+	      xi[1] = pList[maxI].cy;
+	      //xi[2] = pList[maxI].cz;
+
+	      split_flag = 1;
+	      nump++;
+
+	      splitIntParticleByIndexWithinCell( intSwarm, matSwarm, lCell_I, maxI, xi );
+
+	}
+	Count = maxDeletions > deleteCount ? deleteCount : maxDeletions;
+	for(i=0;i<Count;i++){
+
+	      minI = deleteList[i].indexOnCPU;
+
+	      deleteIntParticleByIndexOnCPU( intSwarm,  matSwarm, minI );
+
+
+	      delete_flag = 1;
+	      nump--;
+
+	      
+	} /* if(pList[minI].w < lowT*8/100.0) */
+	
+	//printf("pList[maxI].w = %lf particle num = %d : %d\n", pList[maxI].w, pList[maxI].index,maxI);
+	//printf("pList[minI].w = %lf particle num = %d : %d\n", pList[minI].w, pList[minI].index,minI);
+	if(delete_flag || split_flag ){/* then we need to redo the Voronoi diagram */
+	      for(k=0;k<nump_orig;k++){
+		    free(bchain[k].new_claimed_cells);
+		    free(bchain[k].new_bound_cells);
+	      }
+	      free(particle);
+	      free(bchain);
+	      free(pList);
+	      if(nump < 3){
+		    Journal_Firewall( 0 , Journal_Register(Error_Type, "PCDVC"), "Something went horribly wrong in %s: Problem has an under resolved cell (Cell Id = %d), check or tune your population control parameters\n", __func__, lCell_I );
+	      }
+	      particle = (IntegrationPoint**)malloc((nump)*sizeof(IntegrationPoint*));
+              // init the data structures
+	      _DVCWeights_InitialiseStructs2D( &bchain, &pList, nump);
+	      // re-initialize the particle positions to be the local coordinates of the material swarm particles
+	      for(i=0;i<nump;i++){
+		    
+		    particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( intSwarm, lCell_I, i );
+		    pList[i].x = particle[i]->xi[0];
+		    pList[i].y = particle[i]->xi[1];
+		    //pList[i].z = particle[i]->xi[2];
+		    //pList[i].index = i; // to track which particle numbers we have after sorting this list */
+		    
+	      }
+	      //printf("Population of matSwarm is %d\n",matSwarm->particleLocalCount);
+	      //printf("Population of intSwarm is %d\n",intSwarm->particleLocalCount);
+
+	      _DVCWeights_ResetGrid2D(&cells,numy*numx);
+	      //reset_grid(&cells,numz*numy*numx);/* adding this line fixed memory leak probs */
+	      //create_voronoi( &bchain, &pList, &cells, dx, dy, dz, nump, numx, numy, numz, BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
+	      //get_centroids( cells, pList,numz,numy,numx,nump,da);
+	      _DVCWeights_CreateVoronoi2D( &bchain, &pList, &cells, dx, dy, nump, numx, numy, BBXMIN, BBXMAX, BBYMIN, BBYMAX);
+	      _DVCWeights_GetCentroids2D( cells, pList,numy,numx,nump,da);
+
+	}/* if delete_flag */
+	/****************************/
+	/****************************/
+	/* End Population Control */
+	/****************************/
+	/****************************/
+
+
+	// We are setting the integration points to be the centroids of the Voronoi regions here and
+	// the weight is the volume of each Voronoi region.
+	for(i=0;i<nump;i++){
+
+	      particle[i]->xi[0] = pList[i].cx;
+	      particle[i]->xi[1] = pList[i].cy;
+	      particle[i]->weight = pList[i].w;
+
+	}	
+	for(k=0;k<nump;k++){
+	      free(bchain[k].new_claimed_cells);
+	      free(bchain[k].new_bound_cells);
+	}
+	free(particle);
+	free(bchain);
+	free(pList);
+	free(deleteList);
+	free(splitList);
+
+}
+
+void _PCDVC_Calculate( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I ){
+      Swarm* swarm = (Swarm*) _swarm;
+      Dimension_Index dim = swarm->dim;
+      Stream*  stream = Journal_Register( Info_Type, swarm->type );
+      PCDVC*             self            = (PCDVC*)  pcdvc;
+      MaterialPointsSwarm* matSwarm =	(MaterialPointsSwarm*) self->materialPointsSwarm;
+      /* it might be nice to report the total deletions and splits as well as the final population here */
+      /* One could set the parameters to be too aggressive and cause "swarm thrashing" where many particles
+         are being created and destroyed while maintaining some population that it has converged on */
+      if(lCell_I == 0){
+
+	   Journal_Printf( stream, "\nOn Proc %d: In func %s(): for swarm \"%s\" Population is %d\n", swarm->myRank, __func__, swarm->name, swarm->particleLocalCount );
+	   Journal_Printf( stream, "On Proc %d: In func %s(): for swarm \"%s\" Population is %d\n\n", matSwarm->myRank,__func__, matSwarm->name, matSwarm->particleLocalCount );
+
+      }
+      if(dim == 3){
+	    _PCDVC_Calculate3D( pcdvc, _swarm, lCell_I);
+      }
+      else {
+	    _PCDVC_Calculate2D( pcdvc, _swarm, lCell_I);
+      }
+
+}
+/*-------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+

Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.h	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.h	2007-02-23 18:00:01 UTC (rev 6072)
@@ -0,0 +1,141 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+** Copyright (c) 2006, Monash Cluster Computing 
+** All rights reserved.
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**
+** 		* Redistributions of source code must retain the above copyright notice, 
+** 			this list of conditions and the following disclaimer.
+** 		* Redistributions in binary form must reproduce the above copyright 
+**			notice, this list of conditions and the following disclaimer in the 
+**			documentation and/or other materials provided with the distribution.
+** 		* Neither the name of the Monash University nor the names of its contributors 
+**			may be used to endorse or promote products derived from this software 
+**			without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
+** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
+** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 
+** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+**
+** Contact:
+*%		Louis Moresi - Louis.Moresi at sci.monash.edu.au
+*%
+** Author:
+**              Mirko Velic - Mirko.Velic at sci.monash.edu.au
+**              Patrick Sunter - patrick at vpac.org
+**              Julian Giordani - julian.giordani at sci.monash.edu.au
+**
+**  Assumptions:
+**  	 I am assuming that the xi's (local coords) on the IntegrationPoint particles
+**       are precalculated somewhere and get reset based on material PIC positions each time step.
+**
+**  Notes:
+**         The PCDVC class should really be a class the next level up here.
+**	   We should be able to swap out the WeightsCalculator_CalculateAll function instead of just setting
+**                 a pointer inside that function.
+**
+**         If the function  getIntParticleMaterialRef_PointingToMaterialParticle ever gets called
+**         then someone has messed up the mapping between integration and material points. This function
+**         is potentially slow as it traverses the whole swarm. This should be avoided.
+**
+**         We do not allow particle deletion in interface cells (cells that have more than one type of material
+**         in them). Splitting is optional. This may be inadequate. We may need to do some handling of the neighbours
+**         to interface cells as well, in order to preserve particle density about an interface.
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+/****************************************************************************************************************
+
+  The algorithm here-in computes a discrete voronoi diagram per FEM cell given a set of local
+  particle positions, in 3D and 2D. The volumes of the Voronoi regions are used as integration weights for
+  the integration point swarm and the integration points are the centroids of the same volumes.
+
+  For a description of this algorithm, see the article by Velic et.al.
+     "A Fast Robust Algorithm for computing Discrete Voronoi Diagrams in N-dimensions"
+
+
+
+*****************************************************************************************************************/
+
+#ifndef __PICellerator_Weights_PCDVCClass_h__
+#define __PICellerator_Weights_PCDVCClass_h__
+
+	/* Textual name of this class */
+	extern const Type PCDVC_Type;
+
+	/* PCDVC information */
+     //   #define __PCDVC 
+                /* Who's my daddy */ 
+            //    __DVCWeights 
+		/* My Data structures */ 
+             //  MaterialPointsSwarm* materialPointsSwarm; 
+              //  int upT; 
+              //  int lowT;
+
+#define __PCDVC __DVCWeights MaterialPointsSwarm* materialPointsSwarm; double upperT; double lowerT; Bool splitInInterfaceCells; int maxDeletions; int maxSplits;
+
+struct PCDVC { __PCDVC };
+
+struct deleteParticle{
+      Particle_Index indexWithinCell;
+      Particle_Index indexOnCPU;
+};
+
+	/*---------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+	PCDVC* PCDVC_New( Name name, Dimension_Index dim ) ;
+	PCDVC* _PCDVC_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,		
+		WeightsCalculator_CalculateFunction*  _calculate,
+		Name                                  name );
+
+	void _PCDVC_Init( void* pcdvc, MaterialPointsSwarm* mps, double upT, double lowT, int maxDeletions, int maxSplits, Bool splitInInterfaceCells, int *res ) ;
+	void PCDVC_InitAll( void* pcdvc, Dimension_Index dim ) ;
+
+
+	/* Stg_Class_Delete PCDVC implementation */
+	void _PCDVC_Delete( void* pcdvc );
+	void _PCDVC_Print( void* pcdvc, Stream* stream );
+	#define PCDVC_Copy( self ) \
+		(PCDVC*) Stg_Class_Copy( self, NULL, False, NULL, NULL )
+	#define PCDVC_DeepCopy( self ) \
+		(PCDVC*) Stg_Class_Copy( self, NULL, True, NULL, NULL )
+	void* _PCDVC_Copy( void* pcdvc, void* dest, Bool deep, Name nameExt, PtrMap* ptrMap );
+	
+	void* _PCDVC_DefaultNew( Name name ) ;
+
+	void _PCDVC_Construct( void* pcdvc, Stg_ComponentFactory* cf, void* data ) ;
+
+	void _PCDVC_Build( void* pcdvc, void* data ) ;
+	void _PCDVC_Initialise( void* pcdvc, void* data ) ;
+	void _PCDVC_Execute( void* pcdvc, void* data );
+	void _PCDVC_Destroy( void* pcdvc, void* data ) ;
+        MaterialPointRef* getIntParticleMaterialRef_PointingToMaterialParticle( IntegrationPointsSwarm*  intSwarm, Particle_Index matLastParticle_IndexOnCPU );
+        void splitIntParticleByIndexWithinCell( IntegrationPointsSwarm* intSwarm,  MaterialPointsSwarm* matSwarm, Cell_LocalIndex lCell_I, Particle_Index intParticleToSplit_IndexOnCPU, Coord xi );
+        void deleteIntParticleByIndexWithinCell( IntegrationPointsSwarm* intSwarm,  MaterialPointsSwarm* matSwarm,  Cell_LocalIndex lCell_I, Particle_Index intParticleToSplit_IndexWithinCell );
+        void deleteIntParticleByIndexOnCPU( IntegrationPointsSwarm* intSwarm,  MaterialPointsSwarm* matSwarm, Particle_Index intParticleToSplit_IndexWithinCell );
+        void splitIntParticleByIndexOnCPU( IntegrationPointsSwarm* intSwarm,  MaterialPointsSwarm* matSwarm, Particle_Index intParticleToSplit_IndexOnCPU, Coord xi );
+        void _PCDVC_Calculate3D( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I );
+        void _PCDVC_Calculate2D( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I );	
+	void _PCDVC_Calculate( void* pcdvc, void* _swarm, Cell_LocalIndex lCell_I ) ;
+
+#endif

Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/PCDVC.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">PCDVC</param>
+<param name="Author">Mirko Velic</param>
+<param name="Organisation">MCC</param>
+<param name="Project">Underworld</param>
+<param name="Location">./PICellerator/Utils/src/</param>
+<param name="Project Web">http://mcc.monash.edu.au/Underworld</param>
+<param name="Copyright">Copyright (C) 2006 Monash Cluster Computing.</param>
+<param name="License">http://www.opensource.org/licenses/bsd-license.php</param>
+<param name="Parent">DVCWeights</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
+<param name="Description">Calculates PIC integration weights and handles Population Control in 3D and 2D using a Voronoi diagram. The integration points are set to the centroid of a Voronoi cell and
+ the weight is the volume of the cell.</param>
+
+
+<list name="Params">
+
+</list>
+
+<list name="Dependencies">
+   <param name="Type">DVCWeights</param>
+</list>
+
+<!-- Example Usage -->
+<!-- Use this struct -->
+<struct name="weights">
+   <param name="Type">PCDVC</param>
+   <param name="resolution">10</param>
+   <param name="lowerT">0.6</param>
+   <param name="upperT">25</param>
+   <param name="maxDeletions">3</param>
+   <param name="maxSplits">3</param>
+   <param name="splitInInterfaceCells">True</param>
+   <param name="MaterialPointsSwarm">materialSwarm</param>
+</struct>
+
+<!-- or one can use this struct instead -->
+<struct name="weights">
+   <param name="Type">PCDVC</param>
+   <param name="resolutionX">10</param>
+   <param name="resolutionY">10</param>
+   <param name="resolutionZ">10</param>
+   <param name="lowerT">0.6</param>
+   <param name="upperT">25</param>
+   <param name="maxDeletions">3</param>
+   <param name="maxSplits">3</param>
+   <param name="splitInInterfaceCells">True</param>
+   <param name="MaterialPointsSwarm">materialSwarm</param>
+</struct>
+<!-- where the X Y Z resolutions may be all different -->
+<!-- upperT and lowerT represent upper and lower volume percentage thresholds
+     for population control criteria -->
+
+<!-- Then do this -->
+<!-- The file InputFiles/PIC_Components/MaterialPointSwarm.xml
+     should alreay have this in it -->
+<struct name="localLayout">
+	<param name="Type">MappedParticleLayout</param>
+</struct>
+<struct name="picIntegrationPoints">
+	<param name="Type">IntegrationPointsSwarm</param>
+	<param name="CellLayout">elementCellLayout</param>
+	<param name="ParticleLayout">localLayout</param>
+	<param name="FiniteElement_Mesh">mesh-linear</param>
+	<param name="WeightsCalculator">weights</param>
+	<param name="TimeIntegrator">timeIntegrator</param>
+	<param name="IntegrationPointMapper">mapper</param>
+</struct>
+
+
+<!-- You need this too -->
+<struct name="mapper">
+   <param name="Type">CoincidentMapper</param>
+   <param name="IntegrationPointsSwarm">materialPoints</param>
+   <param name="MaterialPointsSwarm">materialSwarm</param>
+</struct>
+
+<!-- See MaterialPointsSwarm.xml in Underworld/InputFiles/PIC_Components for an example -->
+
+</StGermainData>

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h	2007-02-23 18:00:01 UTC (rev 6072)
@@ -51,5 +51,6 @@
 
 	#include "Init.h"
 	#include "Finalise.h"
+        #include "PCDVC.h"
 
 #endif

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h	2007-02-23 18:00:01 UTC (rev 6072)
@@ -57,6 +57,7 @@
 	typedef struct BuoyancyForceTerm                BuoyancyForceTerm;
 	typedef struct StressBC                         StressBC;
 	typedef struct MaterialSwarmVariable            MaterialSwarmVariable;
+        typedef struct PCDVC                        PCDVC;
 
 /* StressBC types */
 typedef enum

Modified: long/3D/Gale/trunk/src/PICellerator/Voronoi/src/AdaptiveVoronoi.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Voronoi/src/AdaptiveVoronoi.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Voronoi/src/AdaptiveVoronoi.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">AdaptiveVoronoi</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Voronoi/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">DiscreteVoronoi</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Voronoi/src/CellularAutomataVoronoi.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Voronoi/src/CellularAutomataVoronoi.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Voronoi/src/CellularAutomataVoronoi.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">CellularAutomataVoronoi</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Voronoi/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">DiscreteVoronoi</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Voronoi/src/DiscreteVoronoi.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Voronoi/src/DiscreteVoronoi.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Voronoi/src/DiscreteVoronoi.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">DiscreteVoronoi</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Voronoi/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Voronoi/tests/testDiscreteVoronoi.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Voronoi/tests/testDiscreteVoronoi.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Voronoi/tests/testDiscreteVoronoi.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,10 +3,10 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	
-	<include>../../Apps/StgFEM_Components/LinearMesh.xml</include>
-	<include>../../Apps/StgFEM_Components/ElementLayout.xml</include>
-	<include>../../Apps/StgFEM_Components/VelocityField.xml</include>
-	<include>../../Apps/StgFEM_Components/TimeIntegrator.xml</include>
+	<include>StgFEM/LinearMesh.xml</include>
+	<include>StgFEM/ElementLayout.xml</include>
+	<include>StgFEM/VelocityField.xml</include>
+	<include>StgFEM/TimeIntegrator.xml</include>
 
 	<param name="timeIntegratorOrder">1</param>
 	

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/ConstantWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/ConstantWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/ConstantWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">ConstantWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">WeightsCalculator</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -244,7 +244,7 @@
     pList[ cells[i].p ].cx += cells[i].x;
     pList[ cells[i].p ].cy += cells[i].y;
     pList[ cells[i].p ].cz += cells[i].z;
-    count[ cells[i].p ]++;/* for total volume of a cell */
+    count[ cells[i].p ]++;//for total volume of a cell
   }
   for(i=0;i<nump;i++){
     pList[ i ].w = count[i]*vol;
@@ -272,7 +272,7 @@
   for(i=0;i<n*m;i++){
     pList[ cells[i].p ].cx += cells[i].x;
     pList[ cells[i].p ].cy += cells[i].y;
-    count[ cells[i].p ]++;/* for total volume of a cell */
+    count[ cells[i].p ]++;//for total volume of a cell
   }
   for(i=0;i<nump;i++){
     pList[ i ].w = count[i]*vol;
@@ -298,8 +298,8 @@
 
 
   for(i=0;i<bchain->sizeofboundary;i++){
-    cell_num0 = bchain->new_bound_cells[i];/*  cell number we are trying to claim */
-    if(cells[cell_num0].p == -1){/* if cell unowned then claim cell */
+    cell_num0 = bchain->new_bound_cells[i];// cell number we are trying to claim
+    if(cells[cell_num0].p == -1){//if cell unowned then claim cell
        /* This is the bit needed for mallocing */
        /* do a test here to see if we need to realloc bchain->new_claimed_cells and bchain->new_bound_cells */
        if( count > bchain->new_claimed_cells_malloced - 1 ){
@@ -314,11 +314,11 @@
       bchain->new_claimed_cells[count] = cell_num0;
       bchain->numclaimed++;
       count++;
-      cells[cell_num0].p = p_i;/*  this cell is now owned by particle p_i */
+      cells[cell_num0].p = p_i;// this cell is now owned by particle p_i
     }
     else{
       if(cells[cell_num0].p != p_i){
-/* 	we need a contest between particles for the cell. */
+	//we need a contest between particles for the cell.
 	x2 = (*pList)[p_i].x;
 	y2 = (*pList)[p_i].y;
 	z2 = (*pList)[p_i].z;
@@ -335,12 +335,12 @@
 	  bchain->new_claimed_cells[count] = cell_num0;
 	  bchain->numclaimed++;
 	  count++;
-	  cells[cell_num0].p = p_i;/*  this cell is now owned by particle p_i */
+	  cells[cell_num0].p = p_i;// this cell is now owned by particle p_i
 	}
-      }/* if */
-    }/* else */
+      }//if
+    }//else
   }
-  bchain->new_claimed_cells[count] = -1;/*  end of list */
+  bchain->new_claimed_cells[count] = -1;// end of list
 }
 
 /** Claim a cell for a particle in the list  in 2D*/
@@ -357,8 +357,8 @@
 
 
   for(i=0;i<bchain->sizeofboundary;i++){
-    cell_num0 = bchain->new_bound_cells[i];/*  cell number we are trying to claim */
-    if(cells[cell_num0].p == -1){/* if cell unowned then claim cell */
+    cell_num0 = bchain->new_bound_cells[i];// cell number we are trying to claim
+    if(cells[cell_num0].p == -1){//if cell unowned then claim cell
        /* This is the bit needed for mallocing */
        /* do a test here to see if we need to realloc bchain->new_claimed_cells and bchain->new_bound_cells */
        if( count > bchain->new_claimed_cells_malloced - 1 ){
@@ -373,11 +373,11 @@
       bchain->new_claimed_cells[count] = cell_num0;
       bchain->numclaimed++;
       count++;
-      cells[cell_num0].p = p_i;/*  this cell is now owned by particle p_i */
+      cells[cell_num0].p = p_i;// this cell is now owned by particle p_i
     }
     else{
       if(cells[cell_num0].p != p_i){
-/* 	we need a contest between particles for the cell. */
+	//we need a contest between particles for the cell.
 	x2 = (*pList)[p_i].x;
 	y2 = (*pList)[p_i].y;
 	x1 = (*pList)[cells[cell_num0].p].x;
@@ -391,12 +391,12 @@
 	  bchain->new_claimed_cells[count] = cell_num0;
 	  bchain->numclaimed++;
 	  count++;
-	  cells[cell_num0].p = p_i;/*  this cell is now owned by particle p_i */
+	  cells[cell_num0].p = p_i;// this cell is now owned by particle p_i
 	}
-      }/* if */
-    }/* else */
+      }//if
+    }//else
   }
-  bchain->new_claimed_cells[count] = -1;/*  end of list */
+  bchain->new_claimed_cells[count] = -1;// end of list
 }
 
 
@@ -441,9 +441,9 @@
 
     for(k=0;k<6;k++){
 	  cell_num1 = cell_num[k];
-/*        if cell does not already belong to the particle and hasn't been */
-/*        marked as being done then add it to new boundary array and mark it */
-/*        as done */
+      // if cell does not already belong to the particle and hasn't been
+      // marked as being done then add it to new boundary array and mark it
+      // as done
       if(cell_num1 != -2){
 	if(cells[cell_num1].p != p_i && cells[cell_num1].done != 1){
 	   /* This is the bit needed for mallocing */	   
@@ -461,11 +461,11 @@
 	  bchain->sizeofboundary++;
 	  count++;
 	  cells[cell_num1].done = 1;
-	}/* if */
-      }/* if cell_num1 */
-    }/* for k */
-  }/* for */
-/*    reset the done flags back to zero for next time */
+	}//if
+      }//if cell_num1
+    }//for k
+  }//for
+  // reset the done flags back to zero for next time
   for(i=0;i<count;i++){
     cells[  bchain->new_bound_cells[i]  ].done = 0;
   }
@@ -492,9 +492,9 @@
 
     for(k=0;k<4;k++){
       cell_num1 = cell_num[k];
-/*        if cell does not already belong to the particle and hasn't been */
-/*        marked as being done then add it to new boundary array and mark it */
-/*        as done */
+      // if cell does not already belong to the particle and hasn't been
+      // marked as being done then add it to new boundary array and mark it
+      // as done
       if(cell_num1 != -2){
 	if(cells[cell_num1].p != p_i && cells[cell_num1].done != 1){
 	   /* This is the bit needed for mallocing */	   
@@ -512,11 +512,11 @@
 	  bchain->sizeofboundary++;
 	  count++;
 	  cells[cell_num1].done = 1;
-	}/* if */
-      }/* if cell_num1 */
-    }/* for k */
-  }/* for */
-/*    reset the done flags back to zero for next time */
+	}//if
+      }//if cell_num1
+    }//for k
+  }//for
+  // reset the done flags back to zero for next time
   for(i=0;i<count;i++){
     cells[  bchain->new_bound_cells[i]  ].done = 0;
   }
@@ -573,9 +573,9 @@
 	  cells[i+l*j+k*l*m].E = i+l*j+1+k*l*m;
 	  cells[i+l*j+1+k*l*m].W = i+l*j+k*l*m;
 	}
-      }/* x */
-    }/* y */
-  }/* z */
+      }//x
+    }//y
+  }//z
   *cell_list = cells; 
 }
 
@@ -624,7 +624,7 @@
 double _DVCWeights_DistanceSquared(double x0, double y0, double z0, double x1, double y1, double z1){
 	double  position0[3], position1[3], vectorDistance[3];
 	double  dist;
-	Vec_SetScalar3D( position0, x0, y0, z0 );
+	Vec_SetScalar3D( position0, x0, y0, z0 );	
 	Vec_SetScalar3D( position1, x1, y1, z1 );
 	StGermain_VectorSubtraction( vectorDistance, position0, position1, 3 ) ;
 	dist = StGermain_VectorDotProduct(vectorDistance, vectorDistance, 3);
@@ -646,12 +646,12 @@
 void _DVCWeights_InitialiseStructs( struct chain **bchain, struct particle **pList, int nump){
 
    int i;
-/*        init the data structures */
+      // init the data structures
       if( (*bchain = (struct chain *)malloc( nump*sizeof(struct chain ) )) == 0){
 	 printf("No memory for bchain\nCannot continue.\n");
 	 exit(1);
       }
-/*        note that doing bchain[i]->new... doesn't work */
+      // note that doing bchain[i]->new... doesn't work
       for(i=0;i<nump;i++){
 	 (*bchain)[i].new_claimed_cells = (int *)malloc(INC*sizeof(int));
 	 (*bchain)[i].new_claimed_cells_malloced = INC;
@@ -668,10 +668,11 @@
 void _DVCWeights_InitialiseStructs2D( struct chain **bchain, struct particle2d **pList, int nump){
 
    int i;
-/*        init the data structures */
+      // init the data structures
       if( (*bchain = (struct chain *)malloc( nump*sizeof(struct chain ) )) == 0){
 	 Journal_Firewall( 0 , Journal_Register(Error_Type, "DVC_Weights"),"No memory for bchain in '%s'\nCannot continue.\n", __func__);
       }
+      //
       for(i=0;i<nump;i++){
 	 (*bchain)[i].new_claimed_cells = (int *)malloc(INC*sizeof(int));
 	 (*bchain)[i].new_claimed_cells_malloced = INC;
@@ -706,19 +707,19 @@
 	    if (k == numx){  k--; }
 	    if (j == numy) { j--; }
 	    if (l == numz) { l--; }
-	    (*cells)[k+j*numx+l*numx*numy].p = i; /* particle number i */
-	    (*bchain)[i].numclaimed = 1;/*  number of most recently claimed cells */
+	    (*cells)[k+j*numx+l*numx*numy].p = i; //particle number i
+	    (*bchain)[i].numclaimed = 1;// number of most recently claimed cells
 	    (*bchain)[i].sizeofboundary = 0;
-	    (*bchain)[i].totalclaimed = 1;/*  total of claimed cells so far. */
+	    (*bchain)[i].totalclaimed = 1;// total of claimed cells so far.
 	    (*bchain)[i].done = 0;
-	    (*bchain)[i].index = k+j*numx+l*numx*numy;/*  ith particle is in cell # k+j*numx */
+	    (*bchain)[i].index = k+j*numx+l*numx*numy;// ith particle is in cell # k+j*numx
 	    (*bchain)[i].new_claimed_cells[0] = k+j*numx+l*numx*numy; 
-	    /*  ith particle has just claimed cell number k+j*numx+l*numx*numy */
-	    (*bchain)[i].new_claimed_cells[1] = -1;/*  denotes end of claimed_cells list */
-	    /*  when we have finished claiming cells we call this function. */
+	    // ith particle has just claimed cell number k+j*numx+l*numx*numy
+	    (*bchain)[i].new_claimed_cells[1] = -1;// denotes end of claimed_cells list
+	    // when we have finished claiming cells we call this function.
 	    _DVCWeights_UpdateBchain(bchain,cells,i);
       }
-      count = i;/*  number of particles */
+      count = i;// number of particles
       claimed = 1;
       
       while(claimed != 0){
@@ -728,7 +729,7 @@
 		  claimed += (*bchain)[i].numclaimed;
 		  _DVCWeights_UpdateBchain(bchain,cells,i);
 	    }
-      }/* while */
+      }//while
 }
 
 /** Create the Voronoi diagram by growing the voronoi cells from the particle locations.
@@ -755,18 +756,18 @@
 		j--;
 	}
 	
-      (*cells)[k+j*numx].p = i; /* particle number i */
+      (*cells)[k+j*numx].p = i; //particle number i
       
-      (*bchain)[i].numclaimed = 1;/*  number of most recently claimed cells */
+      (*bchain)[i].numclaimed = 1;// number of most recently claimed cells
       (*bchain)[i].sizeofboundary = 0;
-      (*bchain)[i].totalclaimed = 1;/*  total of claimed cells so far. */
+      (*bchain)[i].totalclaimed = 1;// total of claimed cells so far.
       (*bchain)[i].done = 0;
-      (*bchain)[i].index = k+j*numx;/*  ith particle is in cell # k+j*numx */
-      (*bchain)[i].new_claimed_cells[0] = k+j*numx; /*  ith particle has just claimed cell number k+j*numx */
-      (*bchain)[i].new_claimed_cells[1] = -1;/*  denotes end of claimed_cells list */
-      /*  when we have finished claiming cells we call this function. */
+      (*bchain)[i].index = k+j*numx;// ith particle is in cell # k+j*numx
+      (*bchain)[i].new_claimed_cells[0] = k+j*numx; // ith particle has just claimed cell number k+j*numx
+      (*bchain)[i].new_claimed_cells[1] = -1;// denotes end of claimed_cells list
+      // when we have finished claiming cells we call this function.
       _DVCWeights_UpdateBchain2D( bchain, cells, i);
-   }/* nump */
+   }//nump
    
    claimed = 1;
 
@@ -777,7 +778,7 @@
 	 claimed += (*bchain)[i].numclaimed;
 	 _DVCWeights_UpdateBchain2D( bchain, cells, i);
       }
-   }/* while */
+   }//while
 }
 /* Calculate the integration weighting for each particle by contructing
 a voronoi diagram in an element in 3D*/
@@ -788,11 +789,11 @@
 	IntegrationPoint**           particle;
 	static int visited = 0 ;
 	double dx,dy,dz,da;
-	static struct cell *cells;/*  the connected grid */
-	struct particle *pList;/*  particle List */
-	struct chain *bchain;/* boundary chain */
+	static struct cell *cells;// the connected grid
+	struct particle *pList;// particle List
+	struct chain *bchain;//boundary chain
 	int nump,numx,numy,numz;
-	double BBXMIN = -1.0; /*  the ranges of the local coordinates of a FEM cell. */
+	double BBXMIN = -1.0; // the ranges of the local coordinates of a FEM cell.
 	double BBXMAX = 1.0;
 	double BBYMIN = -1.0;
 	double BBYMAX = 1.0;
@@ -813,11 +814,11 @@
 	dz = (BBZMAX - BBZMIN)/numz;
 	da = dx*dy*dz;
 	
-/* 	 Construct the grid for the Voronoi cells only once. */
-/* 	 If we wanted to call this function again during a job with a different resolution */
-/* 	 then we should destroy the grid once we have looped through the whole mesh. */
-/* 	 I am assuming we are not going to do that for now. */
-/* 	 Easy to implement this anyway, if needed. */
+	// Construct the grid for the Voronoi cells only once.
+	// If we wanted to call this function again during a job with a different resolution
+	// then we should destroy the grid once we have looped through the whole mesh.
+	// I am assuming we are not going to do that for now.
+	// Easy to implement this anyway, if needed.
 	if(!visited){
 	      /* The DVCWeights class should really be a class the next level up here */
 	      /* We should be able to swap out the WeightsCalculator_CalculateAll instead of just setting
@@ -827,15 +828,15 @@
 	}
 	
 	
-	/* init the data structures */
+	// init the data structures
 	_DVCWeights_InitialiseStructs( &bchain, &pList, nump);
 	_DVCWeights_ResetGrid(&cells,numz*numy*numx);
 	
 	particle = (IntegrationPoint**)malloc(nump*sizeof(IntegrationPoint*));
 	
-/*          initialize the particle positions to be the local coordinates of the material swarm particles */
-/* 	 I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material */
-/* 	 positions each time step. */
+        // initialize the particle positions to be the local coordinates of the material swarm particles
+	// I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material
+	// positions each time step.
 	for(i=0;i<nump;i++){
 	      
 	      particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( swarm, lCell_I, i );
@@ -846,8 +847,8 @@
 	}
 	_DVCWeights_CreateVoronoi( &bchain, &pList, &cells, dx, dy, dz, nump, numx, numy, numz, BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
 	_DVCWeights_GetCentroids( cells, pList,numz,numy,numx,nump,da);
-	/* We are setting the integration points to be the centroids of the Voronoi regions here and
-	 the weight is the volume of each Voronoi region. */
+	// We are setting the integration points to be the centroids of the Voronoi regions here and
+	// the weight is the volume of each Voronoi region.
 	for(i=0;i<nump;i++){
 
 	      particle[i]->xi[0] = pList[i].cx;
@@ -874,11 +875,11 @@
 	IntegrationPoint**           particle;
 	static int visited = 0 ;
 	double dx,dy,da;
-	static struct cell2d *cells;/*  the connected grid */
-	struct particle2d *pList;/*  particle List */
-	struct chain *bchain;/* boundary chain */
+	static struct cell2d *cells;// the connected grid
+	struct particle2d *pList;// particle List
+	struct chain *bchain;//boundary chain
 	int nump,numx,numy;
-	double BBXMIN = -1.0; /*  the ranges of the local coordinates of a FEM cell. */
+	double BBXMIN = -1.0; // the ranges of the local coordinates of a FEM cell.
 	double BBXMAX = 1.0;
 	double BBYMIN = -1.0;
 	double BBYMAX = 1.0;
@@ -895,11 +896,11 @@
 	dy = (BBYMAX - BBYMIN)/numy;
 	da = dx*dy;
 	
-/* 	 Construct the grid for the Voronoi cells only once. */
-/* 	 If we wanted to call this function again during a job with a different resolution */
-/* 	 then we should destroy the grid once we have looped through the whole mesh. */
-/* 	 I am assuming we are not going to do that for now. */
-/* 	 Easy to implement this anyway, if needed. */
+	// Construct the grid for the Voronoi cells only once.
+	// If we wanted to call this function again during a job with a different resolution
+	// then we should destroy the grid once we have looped through the whole mesh.
+	// I am assuming we are not going to do that for now.
+	// Easy to implement this anyway, if needed.
 	if(!visited){
 	      /* The DVCWeights class should really be a class the next level up here */
 	      /* We should be able to swap out the WeightsCalculator_CalculateAll instead of just setting
@@ -909,15 +910,15 @@
 	}
 	
 	
-	/* init the data structures */
+	// init the data structures
 	_DVCWeights_InitialiseStructs2D( &bchain, &pList, nump);
 	_DVCWeights_ResetGrid2D(&cells,numy*numx);
 	
 	particle = (IntegrationPoint**)malloc(nump*sizeof(IntegrationPoint*));
 	
-/*          initialize the particle positions to be the local coordinates of the material swarm particles */
-/* 	 I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material */
-/* 	 positions each time step. */
+        // initialize the particle positions to be the local coordinates of the material swarm particles
+	// I am assuming the xi's (local coords) are precalculated somewhere and get reset based on material
+	// positions each time step.
 	for(i=0;i<nump;i++){
 	      
 	      particle[i] = (IntegrationPoint*) Swarm_ParticleInCellAt( swarm, lCell_I, i );
@@ -927,8 +928,8 @@
 	}
 	_DVCWeights_CreateVoronoi2D( &bchain, &pList, &cells, dx, dy, nump, numx, numy, BBXMIN, BBXMAX, BBYMIN, BBYMAX);
 	_DVCWeights_GetCentroids2D( cells, pList,numy,numx,nump,da);
-	/* We are setting the integration points to be the centroids of the Voronoi regions here and
-	 the weight is the volume of each Voronoi region. */
+	// We are setting the integration points to be the centroids of the Voronoi regions here and
+	// the weight is the volume of each Voronoi region.
 	for(i=0;i<nump;i++){
 
 	      particle[i]->xi[0] = pList[i].cx;

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/DVCWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">DVCWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2006 Monash Cluster Computing.</param>
 <param name="License">http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">WeightsCalculator</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">Calculates PIC integration weights in 3D and 2D using a Voronoi diagram. The integration points are set to the centroid of a Voronoi cell and
  the weight is the volume of the cell.</param>
 

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/DiscreteVoronoiWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/DiscreteVoronoiWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/DiscreteVoronoiWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">DiscreteVoronoiWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">WeightsCalculator</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/IterativeWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/IterativeWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/IterativeWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">IterativeWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">ConstantWeights</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/MomentBalanceWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/MomentBalanceWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/MomentBalanceWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">MomentBalanceWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">WeightsCalculator</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/VolumeWeights.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/VolumeWeights.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/VolumeWeights.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">VolumeWeights</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">WeightsCalculator</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/src/WeightsCalculator.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/src/WeightsCalculator.meta	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/src/WeightsCalculator.meta	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,6 +3,7 @@
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 
 <param name="Name">WeightsCalculator</param>
+<param name="Author">...</param>
 <param name="Organisation">VPAC and MCC</param>
 <param name="Project">PICellerator</param>
 <param name="Location">./PICellerator/Weights/src/</param>
@@ -10,6 +11,8 @@
 <param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing.</param>
 <param name="License">https://csd.vpac.org/twiki/bin/view/Stgermain/SoftwareLicense http://www.opensource.org/licenses/bsd-license.php</param>
 <param name="Parent">Stg_Component</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
 <param name="Description">...</param>
 
 <!--Now the interesting stuff-->

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsCircle.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsCircle.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsCircle.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.091215 0.066458
+Mean is within tolerance, 0.000001 of 0.091215
+Standard Deviation is within tolerance, 0.000001 of 0.066458

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsExpIface.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsExpIface.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsExpIface.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.15548 0.1168
+Mean is within tolerance, 0.000001 of 0.155483
+Standard Deviation is within tolerance, 0.000001 of 0.116796

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsPoly.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsPoly.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testConstantWeightsPoly.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.017475 0.013738
+Mean is within tolerance, 0.000001 of 0.017475
+Standard Deviation is within tolerance, 0.000001 of 0.013738

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsCircle.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsCircle.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsCircle.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.090837 0.055628
+Mean is within tolerance, 0.005000 of 0.090837
+Standard Deviation is within tolerance, 0.001000 of 0.055628

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsExpIface.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsExpIface.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsExpIface.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.047945 0.035636
+Mean is within tolerance, 0.001000 of 0.047945
+Standard Deviation is within tolerance, 0.001000 of 0.035636

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsPoly.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsPoly.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDVCWeightsPoly.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.0077474 0.0014641
+Mean is within tolerance, 0.001000 of 0.007747
+Standard Deviation is within tolerance, 0.001000 of 0.001464

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsCircle.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsCircle.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsCircle.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.09264 0.063171
+Mean is within tolerance, 0.000001 of 0.092640
+Standard Deviation is within tolerance, 0.000001 of 0.063171

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsExpIface.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsExpIface.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsExpIface.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.074954 0.059645
+Mean is within tolerance, 0.000001 of 0.074954
+Standard Deviation is within tolerance, 0.000001 of 0.059645

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsPoly.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsPoly.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testDiscreteVoronoiWeightsPoly.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.011722 0.0092122
+Mean is within tolerance, 0.000001 of 0.011722
+Standard Deviation is within tolerance, 0.000001 of 0.009212

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsCircle.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsCircle.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsCircle.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.10172 0.070065
+Mean is within tolerance, 0.000001 of 0.101720
+Standard Deviation is within tolerance, 0.000001 of 0.070065

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsExpIface.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsExpIface.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsExpIface.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.088927 0.06681
+Mean is within tolerance, 0.000001 of 0.088927
+Standard Deviation is within tolerance, 0.000001 of 0.066810

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsPoly.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsPoly.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testIterativeWeightsPoly.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.017526 0.013522
+Mean is within tolerance, 0.000001 of 0.017526
+Standard Deviation is within tolerance, 0.000001 of 0.013522

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsCircle.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsCircle.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsCircle.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.097814 0.068607
+Mean is within tolerance, 0.000001 of 0.097814
+Standard Deviation is within tolerance, 0.000001 of 0.068607

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsExpIface.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsExpIface.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsExpIface.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.094671 0.075287
+Mean is within tolerance, 0.000001 of 0.094671
+Standard Deviation is within tolerance, 0.000001 of 0.075287

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsPoly.0of1.output.dat.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsPoly.0of1.output.dat.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/expected/testMomentBalanceWeightsPoly.0of1.output.dat.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1 +1,2 @@
-20 	 0.016697 0.013041
+Mean is within tolerance, 0.000001 of 0.016697
+Standard Deviation is within tolerance, 0.000001 of 0.013041

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/plugins/testElementIntegral.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/plugins/testElementIntegral.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/plugins/testElementIntegral.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -103,6 +103,48 @@
 	*value = (double) (x*x + y*y <= 1.0);
 }
 
+
+void testElementIntegral_CompareAgainstReferenceSolution(DiscretisationContext* context, Stream* stream, double mean, double standardDeviation) {
+	double meanTolerance, stdDevTolerance;
+	double expectedMean, expectedStdDev;
+	double differenceMean, differenceStdDev;	
+	/* Get the tolerance */
+	meanTolerance = Dictionary_GetDouble_WithDefault( context->dictionary, "mean-tolerance", 0.005 );
+	stdDevTolerance = Dictionary_GetDouble_WithDefault( context->dictionary, "standardDeviation-tolerance", 0.005 );
+	
+	/* Get the expected values */
+	expectedMean = Dictionary_GetDouble_WithDefault(context->dictionary, "mean-expectedValue", 0.5);
+	expectedStdDev = Dictionary_GetDouble_WithDefault(context->dictionary, "standardDeviation-expectedValue", 0.5);
+	
+	/* compare the values */
+	differenceMean = fabs(mean - expectedMean);
+	differenceStdDev = fabs(standardDeviation - expectedStdDev);
+	
+	Stream_RedirectFile_WithPrependedPath( stream, context->outputPath, "output.dat" );
+	
+	if (differenceMean <= meanTolerance ) {
+		Journal_Printf(stream, "Mean is within tolerance, %f of %f\n",
+			meanTolerance, expectedMean);
+	}
+	else {
+		Journal_Printf(stream, "Mean is not within tolerance, %f of %f\n",
+			meanTolerance, expectedMean);
+		Journal_Printf(stream, "	value = ( %f ) \n", mean );
+	}
+	if ( differenceStdDev <= stdDevTolerance ) {
+		Journal_Printf(stream, "Standard Deviation is within tolerance, %f of %f\n",
+			stdDevTolerance, expectedStdDev);
+	}
+	else {
+		Journal_Printf(stream, "Standard Deviation is not within tolerance, %f of %f\n",
+			stdDevTolerance, expectedStdDev);
+		Journal_Printf(stream, "	value = ( %f ) \n", standardDeviation);
+	}
+	
+	
+}
+
+
 void PICellerator_testElementIntegral( DiscretisationContext* context ) {
 	Swarm*              integrationSwarm = (Swarm*)LiveComponentRegister_Get( context->CF->LCRegister, "swarm" );
 	Swarm*              materialSwarm    = (Swarm*)LiveComponentRegister_Get( context->CF->LCRegister, "picIntegrationPoints" );
@@ -196,9 +238,15 @@
 	mean = errorSum / (double) count;
 	standardDeviation = sqrt( errorSquaredSum / (double) count - mean * mean );
 
+	/* compare mean and standardDeviation against ref. solution
+		to a tolerance taken from the xml files. */
+	testElementIntegral_CompareAgainstReferenceSolution(context, stream, mean, standardDeviation );
+
+	
 	/* Write to file */
-	Stream_RedirectFile_WithPrependedPath( stream, context->outputPath, "output.dat" );
-	Journal_Printf( stream, "%u \t %.5g %.5g\n", integrationSwarm->cellParticleCountTbl[ lElement_I ], mean, standardDeviation );
+/*	Stream_RedirectFile_WithPrependedPath( stream, context->outputPath, "output.dat" );
+	/Journal_Printf( stream, "%u \t %.5g %.5g\n", integrationSwarm->cellParticleCountTbl[ lElement_I ], mean, standardDeviation );
+*/	
 }
 	
 	

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsCircle.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsCircle.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsCircle.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=CircleInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=CircleInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.091215 --standardDeviation-expectedValue=0.066458" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsExpIface.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsExpIface.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsExpIface.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=ExponentialInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=ExponentialInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.155483 --standardDeviation-expectedValue=0.116796" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsPoly.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsPoly.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testConstantWeightsPoly.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=PolynomialFunction" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testConstantWeights.xml --FunctionName=PolynomialFunction --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.017475 --standardDeviation-expectedValue=0.013738" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.0of1.expected
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.0of1.expected	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.0of1.expected	2007-02-23 18:00:01 UTC (rev 6072)
@@ -1,10 +1,10 @@
-StGermain Framework revision 3927. Copyright (C) 2003-2005 VPAC.
-StGermain Discretisation Library revision 3927. Copyright (C) 2003-2005 VPAC.
-StGermain Finite Element Framework revision 687. Copyright (C) 2003-2005 VPAC.
-StGermain FEM Discretisation Framework revision 687. Copyright (C) 2003-2005 VPAC.
-StGermain SLE Library revision 687. Copyright (C) 2003-2005 VPAC.
-StGermain PETSc-LinearAlgebra Interface revision 687. Copyright (C) 2003-2005 VPAC.
-StGermain FEM Assembly Library revision 687. Copyright (C) 2003-2005 VPAC.
+StGermain Framework revision 3947. Copyright (C) 2003-2005 VPAC.
+StGermain Discretisation Library revision 3947. Copyright (C) 2003-2005 VPAC.
+StGermain Finite Element Framework revision 695. Copyright (C) 2003-2005 VPAC.
+StGermain FEM Discretisation Framework revision 695. Copyright (C) 2003-2005 VPAC.
+StGermain SLE Library revision 695. Copyright (C) 2003-2005 VPAC.
+StGermain PETSc-LinearAlgebra Interface revision 695. Copyright (C) 2003-2005 VPAC.
+StGermain FEM Assembly Library revision 695. Copyright (C) 2003-2005 VPAC.
 -----------------------------
 3D functions:  
 -----------------------------
@@ -17,7 +17,7 @@
 	 y = (-1.000000, 1.000000) 
 	 z = (-1.000000, 1.000000)
 Resolution: 
-	 (x, y, z) = (0.000000, 1.000000, -1.000000)
+	 (x, y, z) = (2, 2, 2)
 cell[0]:	Particle Index: -1
  		Values: (N: 2, S: -2, E: 1, W: -2, U: 4, D: -2) 
  		Coords: (-0.500000, -0.500000,-0.500000) 	 Done = 0
@@ -222,7 +222,7 @@
 	 x = (-1.000000, 1.000000)
 	 y = (-1.000000, 1.000000) 
 Resolution: 
-	 (x, y) = (0.000000, 1.000000)
+	 (x, y) = (2, 2)
 cells2d[0]:	Particle Index: -1 
  		Values: (N: 2, S: -2, E: 1, W: -2) 
  		Coords: (-0.500000, -0.500000) 	 Done = 0

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.c	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeights.c	2007-02-23 18:00:01 UTC (rev 6072)
@@ -67,8 +67,6 @@
 	stream = Journal_Register( InfoStream_Type, "testDVCWeights" );
 
 	stJournal->firewallProducesAssert = False;
-	/* Stream_RedirectFile(Journal_Register( Error_Type, "FullTensorMath"), "FullTensorMath.txt"); */
-	/* Stream_RedirectFile(stream, "FullTensorMath.txt"); */
 	
 	
 	if( argc >= 2 ) {
@@ -81,17 +79,17 @@
 	if( rank == procToWatch ) {
 	
 		double dx,dy,dz,da;
-		static struct cell *cells;/*  the 3D connected grid  */
-		struct particle *pList;/*  3D particle List */
-		struct chain *bchain;/* 3D boundary chain */
+		static struct cell *cells;/* the 3D connected grid */ 
+		struct particle *pList;/* 3D particle List */
+		struct chain *bchain;/*3D boundary chain */
 			
-		static struct cell2d *cells2D;/*  the 2D connected grid */
-		struct particle2d *pList2D;/* 2D particle List */
-		struct chain *bchain2D;/* 2D boundary chain */
+		static struct cell2d *cells2D;/* the 2D connected grid */
+		struct particle2d *pList2D;/*2D particle List */
+		struct chain *bchain2D;/*2D boundary chain */
 			
 		int nump,numx,numy,numz;
 		int px, py, pz;
-		double BBXMIN = -1.0; /*  the ranges of the local coordinates of a FEM cell. */
+		double BBXMIN = -1.0; /* the ranges of the local coordinates of a FEM cell.*/
 		double BBXMAX = 1.0;
 		double BBYMIN = -1.0;
 		double BBYMAX = 1.0;
@@ -112,7 +110,7 @@
 		Journal_Printf( stream, "Test _DVCWeights_ConstructGrid function \n");
 		Journal_Printf( stream, "****************************\n");
 		
-		/* Define the resolution */
+		/*Define the resolution */
 		
 		numx = 2;
 		numy = 2;
@@ -120,7 +118,7 @@
 
 		Journal_Printf( stream, "size of element:\n\t x = (%f, %f)\n\t y = (%f, %f) \n\t z = (%f, %f)\n",
 			BBXMIN, BBXMAX, BBYMIN, BBYMAX, BBZMIN, BBZMAX);
-		Journal_Printf( stream, "Resolution: \n\t (x, y, z) = (%f, %f, %f)\n", numx, numy, numz);
+		Journal_Printf( stream, "Resolution: \n\t (x, y, z) = (%d, %d, %d)\n", numx, numy, numz);
 		
      		_DVCWeights_ConstructGrid(&cells,numz,numy,numx,BBXMIN,BBYMIN,BBZMIN,BBXMAX,BBYMAX,BBZMAX);		
 		
@@ -138,7 +136,7 @@
 		Journal_Printf( stream, "Test _DVCWeights_InitialiseStructs function \n");
 		Journal_Printf( stream, "****************************\n");
 		
-		/* Define the number of particles */
+		/*Define the number of particles */
 		px = 2;
 		py = 2; 
 		pz = 2;
@@ -174,7 +172,7 @@
 		dy = (BBYMAX - BBYMIN)/numy;
 		dz = (BBZMAX - BBZMIN)/numz;
 		da = dx*dy*dz;
-		/* Initialise particle coords */
+		/*Initialise particle coords */
 		l = 0;
 		for(i = 0; i < px ;i++){
 	    	for ( j = 0; j < py ; j++) {
@@ -266,14 +264,14 @@
 		Journal_Printf( stream, "Test _DVCWeights_ConstructGrid2D function \n");
 		Journal_Printf( stream, "****************************\n");
 		
-		/* Define the resolution */
+		/*Define the resolution */
 		
 		numx = 2;
 		numy = 2;
 
 		Journal_Printf( stream, "size of element:\n\t x = (%f, %f)\n\t y = (%f, %f) \n",
 			BBXMIN, BBXMAX, BBYMIN, BBYMAX);
-		Journal_Printf( stream, "Resolution: \n\t (x, y) = (%f, %f)\n", numx, numy);
+		Journal_Printf( stream, "Resolution: \n\t (x, y) = (%d, %d)\n", numx, numy);
 		
      		_DVCWeights_ConstructGrid2D(&cells2D,numy,numx, BBXMIN,BBYMIN,BBXMAX,BBYMAX);		
 		
@@ -291,7 +289,7 @@
 		Journal_Printf( stream, "Test _DVCWeights_InitialiseStructs2D function \n");
 		Journal_Printf( stream, "****************************\n");
 		
-		/* Define size of swarm-to-be */
+		/*Define size of swarm-to-be */
 		px = 2;
 		py = 2; 
 		nump = px * py ;
@@ -325,7 +323,7 @@
 		dx = (BBXMAX - BBXMIN)/numx;
 		dy = (BBYMAX - BBYMIN)/numy;
 		da = dx*dy;
-		/* Initialise particle coords */
+		/*Initialise particle coords */
 		l = 0;
 		for(i = 0; i < px ;i++){
 	    	for ( j = 0; j < py ; j++) {

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsCircle.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsCircle.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsCircle.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=CircleInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=CircleInterface --mean-tolerance=0.005 --standardDeviation-tolerance=0.001 --mean-expectedValue=0.090837 --standardDeviation-expectedValue=0.055628" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsExpIface.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsExpIface.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsExpIface.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=ExponentialInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=ExponentialInterface --mean-tolerance=0.001 --standardDeviation-tolerance=0.001 --mean-expectedValue=0.047945 --standardDeviation-expectedValue=0.035636" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsPoly.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsPoly.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDVCWeightsPoly.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=PolynomialFunction" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDVCWeights.xml --FunctionName=PolynomialFunction --mean-tolerance=0.001 --standardDeviation-tolerance=0.001 --mean-expectedValue=0.0077474 --standardDeviation-expectedValue=0.0014641" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsCircle.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsCircle.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsCircle.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=CircleInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=CircleInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.09264 --standardDeviation-expectedValue=0.063171" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsExpIface.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsExpIface.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsExpIface.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=ExponentialInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=ExponentialInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.074954 --standardDeviation-expectedValue=0.059645" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsPoly.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsPoly.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testDiscreteVoronoiWeightsPoly.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=PolynomialFunction" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testDiscreteVoronoiWeights.xml --FunctionName=PolynomialFunction --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.011722 --standardDeviation-expectedValue=0.0092122" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testElementIntegral.xml
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testElementIntegral.xml	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testElementIntegral.xml	2007-02-23 18:00:01 UTC (rev 6072)
@@ -3,10 +3,10 @@
 
 <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
 	
-	<include>../../Apps/StgFEM_Components/LinearMesh.xml</include>
-	<include>../../Apps/StgFEM_Components/ElementLayout.xml</include>
-	<include>../../Apps/StgFEM_Components/VelocityField.xml</include>
-	<include>../../Apps/StgFEM_Components/TimeIntegrator.xml</include>
+	<include>StgFEM/LinearMesh.xml</include>
+	<include>StgFEM/ElementLayout.xml</include>
+	<include>StgFEM/VelocityField.xml</include>
+	<include>StgFEM/TimeIntegrator.xml</include>
 	
 	<struct name="components" mergeType="merge">
 		<struct name="elementCellLayout">

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsCircle.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsCircle.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsCircle.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=CircleInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=CircleInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.10172 --standardDeviation-expectedValue=0.070065" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsExpIface.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsExpIface.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsExpIface.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=ExponentialInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=ExponentialInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.088927 --standardDeviation-expectedValue=0.06681" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsPoly.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsPoly.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testIterativeWeightsPoly.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=PolynomialFunction" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testIterativeWeights.xml --FunctionName=PolynomialFunction --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.017526 --standardDeviation-expectedValue=0.013522" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsCircle.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsCircle.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsCircle.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=CircleInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=CircleInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.097814 --standardDeviation-expectedValue=0.068607" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsExpIface.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsExpIface.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsExpIface.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=ExponentialInterface" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=ExponentialInterface --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.094671 --standardDeviation-expectedValue=0.075287" "$0" "$@"

Modified: long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsPoly.0of1.sh
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsPoly.0of1.sh	2007-02-23 17:59:31 UTC (rev 6071)
+++ long/3D/Gale/trunk/src/PICellerator/Weights/tests/testMomentBalanceWeightsPoly.0of1.sh	2007-02-23 18:00:01 UTC (rev 6072)
@@ -49,4 +49,4 @@
 done
 . ${TEST_SCRIPT}
 
-runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=PolynomialFunction" "$0" "$@"
+runAndHandleSystemTestStdLocations "PICellerator testMomentBalanceWeights.xml --FunctionName=PolynomialFunction --mean-tolerance=0.000001 --standardDeviation-tolerance=0.000001 --mean-expectedValue=0.016697 --standardDeviation-expectedValue=0.013041" "$0" "$@"



More information about the cig-commits mailing list