[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