[cig-commits] r5366 - in long/3D/Gale/trunk: .
src/PICellerator/Utils/src
walter at geodynamics.org
walter at geodynamics.org
Tue Nov 28 14:00:18 PST 2006
Author: walter
Date: 2006-11-28 14:00:16 -0800 (Tue, 28 Nov 2006)
New Revision: 5366
Added:
long/3D/Gale/trunk/fountain.xml
long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.h
long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.meta
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c
long/3D/Gale/trunk/src/PICellerator/Utils/src/SConscript
long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h
long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h
Log:
r1115 at earth: boo | 2006-11-27 15:23:24 -0800
First pass at stress BC's. Everything is hard coded right now
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1114
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1115
Added: long/3D/Gale/trunk/fountain.xml
===================================================================
--- long/3D/Gale/trunk/fountain.xml 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/fountain.xml 2006-11-28 22:00:16 UTC (rev 5366)
@@ -0,0 +1,544 @@
+<?xml version="1.0"?>
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+ <struct name="components">
+ <struct name="geometry">
+ <param name="Type">MeshGeometry</param>
+ <param name="mesh">mesh-linear</param>
+ <param name="decomp">decomp-linear</param>
+ <param name="sizeI">elementResI</param>
+ <param name="sizeJ">elementResJ</param>
+ <param name="sizeK">elementResK</param>
+ <param name="sizeShift">+1</param>
+ </struct>
+ <struct name="elementTopology">
+ <param name="Type">IJK26Topology</param>
+ <param name="sizeI">elementResI</param>
+ <param name="sizeJ">elementResJ</param>
+ <param name="sizeK">elementResK</param>
+ </struct>
+ <struct name="elementLayout">
+ <param name="Type">HexaEL</param>
+ <param name="Topology">elementTopology</param>
+ <param name="Geometry">geometry</param>
+ </struct>
+ <struct name="bodyNodeTopology">
+ <param name="Type">IJK6Topology</param>
+ <param name="sizeI">elementResI</param>
+ <param name="sizeJ">elementResJ</param>
+ <param name="sizeK">elementResK</param>
+ </struct>
+ <struct name="bodyNodeLayout">
+ <param name="Type">BodyNL</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="Topology">bodyNodeTopology</param>
+ </struct>
+ <struct name="decomp-constant">
+ <param name="Type">HexaMD</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="NodeLayout">bodyNodeLayout</param>
+ <param name="numPartitionedDims">numPartitionedDims</param>
+ </struct>
+ <struct name="meshLayout-constant">
+ <param name="Type">MeshLayout</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="NodeLayout">bodyNodeLayout</param>
+ <param name="MeshDecomp">decomp-constant</param>
+ </struct>
+ <struct name="mesh-constant">
+ <param name="Type">FiniteElement_Mesh</param>
+ <param name="MeshLayout">meshLayout-constant</param>
+ <param name="ElementSize">8</param>
+ <param name="NodeSize">0</param>
+ </struct>
+ <struct name="cornerNodeTopology">
+ <param name="Type">IJK6Topology</param>
+ <param name="sizeI">elementResI</param>
+ <param name="sizeJ">elementResJ</param>
+ <param name="sizeK">elementResK</param>
+ <param name="sizeShift">1</param>
+ </struct>
+ <struct name="cornerNodeLayout">
+ <param name="Type">CornerNL</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="Topology">cornerNodeTopology</param>
+ </struct>
+ <struct name="decomp-linear">
+ <param name="Type">HexaMD</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="NodeLayout">cornerNodeLayout</param>
+ <param name="numPartitionedDims">numPartitionedDims</param>
+ </struct>
+ <struct name="meshLayout-linear">
+ <param name="Type">MeshLayout</param>
+ <param name="ElementLayout">elementLayout</param>
+ <param name="NodeLayout">cornerNodeLayout</param>
+ <param name="MeshDecomp">decomp-linear</param>
+ </struct>
+ <struct name="mesh-linear">
+ <param name="Type">FiniteElement_Mesh</param>
+ <param name="MeshLayout">meshLayout-linear</param>
+ <param name="ElementSize">8</param>
+ <param name="NodeSize">0</param>
+ </struct>
+ <struct name="velocity">
+ <param name="Type">Variable</param>
+ <param name="Rank">Vector</param>
+ <param name="Dependency">decomp-linear</param>
+ <param name="DataType">Double</param>
+ <param name="Count">decomp-linear-nodeDomainCount</param>
+ <param name="VectorComponentCount">dim</param>
+ <list name="names">
+ <param>vx</param>
+ <param>vy</param>
+ <param>vz</param>
+ </list>
+ </struct>
+ <struct name="velocityBCs">
+ <param name="Type">CompositeVC</param>
+ <param name="Data">mesh-linear</param>
+ </struct>
+ <struct name="velocityICs">
+ <param name="Type">CompositeVC</param>
+ <param name="Data">mesh-linear</param>
+ </struct>
+ <struct name="velocityDofLayout">
+ <param name="Type">DofLayout</param>
+ <param name="Count">decomp-linear-nodeDomainCount</param>
+ <param name="BaseVariableCount">dim</param>
+ <list name="BaseVariables">
+ <param>vx</param>
+ <param>vy</param>
+ <param>vz</param>
+ </list>
+ </struct>
+ <struct name="VelocityField">
+ <param name="Type">FeVariable</param>
+ <param name="FEMesh">mesh-linear</param>
+ <param name="DofLayout">velocityDofLayout</param>
+ <param name="BC">velocityBCs</param>
+ <param name="IC">velocityICs</param>
+ <param name="LinkedDofInfo">velocityLinkedDofs</param>
+ </struct>
+ <struct name="VelocityMagnitudeField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">Magnitude</param>
+ <param name="FeVariable">VelocityField</param>
+ </struct>
+ <struct name="VelocityGradientsField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">Gradient</param>
+ <param name="FeVariable">VelocityField</param>
+ </struct>
+ <struct name="VelocityXXField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TakeFirstComponent</param>
+ <param name="FeVariable">VelocityField</param>
+ </struct>
+ <struct name="VelocityYYField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TakeSecondComponent</param>
+ <param name="FeVariable">VelocityField</param>
+ </struct>
+ <struct name="StrainRateField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TensorSymmetricPart</param>
+ <param name="FeVariable">VelocityGradientsField</param>
+ </struct>
+ <struct name="VorticityField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TensorAntisymmetricPart</param>
+ <param name="FeVariable">VelocityGradientsField</param>
+ </struct>
+ <struct name="StrainRateInvariantField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">SymmetricTensor_Invariant</param>
+ <param name="FeVariable">StrainRateField</param>
+ </struct>
+ <struct name="StrainRateXXField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TakeFirstComponent</param>
+ <param name="FeVariable">StrainRateField</param>
+ </struct>
+ <struct name="StrainRateYYField">
+ <param name="Type">OperatorFeVariable</param>
+ <param name="Operator">TakeSecondComponent</param>
+ <param name="FeVariable">StrainRateField</param>
+ </struct>
+ <struct name="pressure">
+ <param name="Type">Variable</param>
+ <param name="Rank">Scalar</param>
+ <param name="Dependency">decomp-constant</param>
+ <param name="DataType">Double</param>
+ <param name="Count">decomp-constant-nodeDomainCount</param>
+ </struct>
+ <struct name="pressureDofLayout">
+ <param name="Type">DofLayout</param>
+ <param name="Count">decomp-constant-nodeDomainCount</param>
+ <list name="BaseVariables">
+ <param>pressure</param>
+ </list>
+ </struct>
+ <struct name="PressureField">
+ <param name="Type">FeVariable</param>
+ <param name="FEMesh">mesh-constant</param>
+ <param name="GeometryMesh">mesh-linear</param>
+ <param name="DofLayout">pressureDofLayout</param>
+ <param name="LinkedDofInfo">pressureLinkedDofs</param>
+ </struct>
+ <struct name="cellLayout">
+ <param name="Type">SingleCellLayout</param>
+ </struct>
+ <struct name="particleLayout">
+ <param name="Type">GaussParticleLayout</param>
+ </struct>
+ <struct name="gaussSwarm">
+ <param name="Type">IntegrationPointsSwarm</param>
+ <param name="CellLayout">cellLayout</param>
+ <param name="ParticleLayout">particleLayout</param>
+ <param name="FiniteElement_Mesh">mesh-linear</param>
+ <param name="TimeIntegrator">timeIntegrator</param>
+ <param name="IntegrationPointMapper">gaussMapper</param>
+ </struct>
+ <struct name="gaussMapper">
+ <param name="Type">GaussMapper</param>
+ <param name="IntegrationPointsSwarm">gaussSwarm</param>
+ <param name="MaterialPointsSwarm">gaussMaterialSwarm</param>
+ </struct>
+ <struct name="backgroundLayout">
+ <param name="Type">BackgroundParticleLayout</param>
+ </struct>
+ <struct name="gaussMaterialSwarm">
+ <param name="Type">MaterialPointsSwarm</param>
+ <param name="CellLayout">cellLayout</param>
+ <param name="ParticleLayout">backgroundLayout</param>
+ <param name="FiniteElement_Mesh">mesh-linear</param>
+ </struct>
+ <struct name="timeIntegrator">
+ <param name="Type">TimeIntegrator</param>
+ <param name="order">1</param>
+ <param name="simultaneous">t</param>
+ <param name="Context">context</param>
+ </struct>
+ <struct name="elementCellLayout">
+ <param name="Type">ElementCellLayout</param>
+ <param name="Mesh">mesh-linear</param>
+ </struct>
+ <struct name="discreteVoronoi">
+ <param name="Type">CellularAutomataVoronoi</param>
+ <param name="resolution">10</param>
+ <param name="diagonalNeighbours">true</param>
+ </struct>
+ <struct name="weights">
+ <param name="Type">DiscreteVoronoiWeights</param>
+ <param name="DiscreteVoronoi">discreteVoronoi</param>
+ </struct>
+ <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>
+ <struct name="mapper">
+ <param name="Type">CoincidentMapper</param>
+ <param name="IntegrationPointsSwarm">picIntegrationPoints</param>
+ <param name="MaterialPointsSwarm">materialSwarm</param>
+ </struct>
+ <struct name="materialSwarmParticleLayout">
+ <param name="Type">MeshParticleLayout</param>
+ <param name="mesh">mesh-linear</param>
+ <param name="cellParticleCount">particlesPerCell</param>
+ </struct>
+ <struct name="materialSwarm">
+ <param name="Type">MaterialPointsSwarm</param>
+ <param name="CellLayout">elementCellLayout</param>
+ <param name="ParticleLayout">materialSwarmParticleLayout</param>
+ <param name="FiniteElement_Mesh">mesh-linear</param>
+ <param name="SplittingRoutine">splittingRoutine</param>
+ <param name="RemovalRoutine">removalRoutine</param>
+ <param name="EscapedRoutine">escapedRoutine</param>
+ </struct>
+ <struct name="materialSwarmAdvector">
+ <param name="Type">SwarmAdvector</param>
+ <param name="Swarm">materialSwarm</param>
+ <param name="TimeIntegrator">timeIntegrator</param>
+ <param name="VelocityField">VelocityField</param>
+ <param name="PeriodicBCsManager">periodicBCsManager</param>
+ <param name="allowFallbackToFirstOrder">True</param>
+ </struct>
+ <struct name="removalRoutine">
+ <param name="Type">DiscreteVoronoiRemove</param>
+ <param name="idealParticleCount">particlesPerCell</param>
+ <param name="DiscreteVoronoi">discreteVoronoi</param>
+ </struct>
+ <struct name="splittingRoutine">
+ <param name="Type">ReseedSplitting</param>
+ <param name="idealParticleCount">particlesPerCell</param>
+ <param name="DiscreteVoronoi">discreteVoronoi</param>
+ </struct>
+ <struct name="solutionVelocity">
+ <param name="Type">SolutionVector</param>
+ <param name="FeVariable">VelocityField</param>
+ </struct>
+ <struct name="solutionPressure">
+ <param name="Type">SolutionVector</param>
+ <param name="FeVariable">PressureField</param>
+ </struct>
+ <struct name="mom_force">
+ <param name="Type">ForceVector</param>
+ <param name="FeVariable">VelocityField</param>
+ <param name="ExtraInfo">context</param>
+ </struct>
+ <struct name="cont_force">
+ <param name="Type">ForceVector</param>
+ <param name="FeVariable">PressureField</param>
+ <param name="ExtraInfo">context</param>
+ </struct>
+ <struct name="k_matrix">
+ <param name="Type">StiffnessMatrix</param>
+ <param name="RowVariable">VelocityField</param>
+ <param name="ColumnVariable">VelocityField</param>
+ <param name="RHS">mom_force</param>
+ <param name="allowZeroElementContributions">False</param>
+ </struct>
+ <struct name="constitutiveMatrix">
+ <param name="Type">ConstitutiveMatrixCartesian</param>
+ <param name="Swarm">picIntegrationPoints</param>
+ <param name="StiffnessMatrix">k_matrix</param>
+ </struct>
+ <struct name="g_matrix">
+ <param name="Type">StiffnessMatrix</param>
+ <param name="RowVariable">VelocityField</param>
+ <param name="ColumnVariable">PressureField</param>
+ <param name="RHS">cont_force</param>
+ <param name="allowZeroElementContributions">False</param>
+ </struct>
+ <struct name="gradientStiffnessMatrixTerm">
+ <param name="Type">GradientStiffnessMatrixTerm</param>
+ <param name="Swarm">gaussSwarm</param>
+ <param name="StiffnessMatrix">g_matrix</param>
+ </struct>
+ <struct name="preconditioner">
+ <param name="Type">StiffnessMatrix</param>
+ <param name="RowVariable">PressureField</param>
+ <param name="ColumnVariable">PressureField</param>
+ <param name="RHS">cont_force</param>
+ <param name="allowZeroElementContributions">True</param>
+ </struct>
+ <struct name="preconditionerTerm">
+ <param name="Type">UzawaPreconditionerTerm</param>
+ <param name="Swarm">picIntegrationPoints</param>
+ <param name="StiffnessMatrix">preconditioner</param>
+ </struct>
+ <struct name="uzawa">
+ <param name="Type">Stokes_SLE_UzawaSolver</param>
+ <param name="Preconditioner">preconditioner</param>
+ <param name="tolerance">1.0e-5</param>
+ <param name="maxIterations">5000</param>
+ </struct>
+ <struct name="stokesEqn">
+ <param name="Type">Stokes_SLE</param>
+ <param name="SLE_Solver">uzawa</param>
+ <param name="Context">context</param>
+ <param name="StressTensorMatrix">k_matrix</param>
+ <param name="GradientMatrix">g_matrix</param>
+ <param name="DivergenceMatrix"></param>
+ <param name="CompressibilityMatrix">c_matrix</param>
+ <param name="VelocityVector">solutionVelocity</param>
+ <param name="PressureVector">solutionPressure</param>
+ <param name="ForceVector">mom_force</param>
+ <param name="ContinuityForceVector">cont_force</param>
+ <param name="killNonConvergent">false</param>
+ <param name="nonLinearMaxIterations">nonLinearMaxIterations</param>
+ <param name="nonLinearTolerance">nonLinearTolerance</param>
+ <param name="makeConvergenceFile">false</param>
+ </struct>
+ <struct name="buoyancyForceTerm">
+ <param name="Type">BuoyancyForceTerm</param>
+ <param name="ForceVector">mom_force</param>
+ <param name="Swarm">picIntegrationPoints</param>
+ <param name="gravity">gravity</param>
+ </struct>
+ <struct name="stressBC">
+ <param name="Type">StressBC</param>
+ <param name="ForceVector">mom_force</param>
+ <param name="Swarm">picIntegrationPoints</param>
+ <param name="force">10.0</param>
+ </struct>
+ <struct name="background">
+ <param name="Type">Everywhere</param>
+ </struct>
+ <struct name="pdmsShape">
+ <param name="Type">Box</param>
+ <param name="startX">minX</param>
+ <param name="endX">maxX</param>
+ <param name="startY">minY</param>
+ <param name="endY">maxY</param>
+ <param name="startZ">minZ</param>
+ <param name="endZ">maxZ</param>
+ </struct>
+ <struct name="pdmsViscosity">
+ <param name="Type">MaterialViscosity</param>
+ <param name="eta0">1.0</param>
+ </struct>
+ <struct name="storeViscosity">
+ <param name="Type">StoreVisc</param>
+ <param name="MaterialPointsSwarm">materialSwarm</param>
+ </struct>
+ <struct name="pdms">
+ <param name="Type">RheologyMaterial</param>
+ <param name="Shape">pdmsShape</param>
+ <param name="density">1.0</param>
+ <list name="Rheology">
+ <param>pdmsViscosity</param>
+ <param>storeViscosity</param>
+ </list>
+ </struct>
+ <struct name="cartesianGenerator">
+ <param name="Type">CartesianGenerator</param>
+ <param name="decomp">decomp-linear</param>
+ </struct>
+ <struct name="escapedRoutine">
+ <param name="Type">EscapedRoutine</param>
+ <param name="idealParticleCount">0</param>
+ </struct>
+ <struct name="velocityRemesher">
+ <param name="Type">StripRemesher</param>
+ <param name="mesh">mesh-linear</param>
+ <param name="meshType">regular</param>
+ <list name="dims">
+ <param>true</param>
+ <param>true</param>
+ </list>
+ </struct>
+ <struct name="pressureRemesher">
+ <param name="Type">CellRemesher</param>
+ <param name="mesh">mesh-constant</param>
+ <param name="meshType">regular</param>
+ <param name="dims">2</param>
+ <param name="cellMesh">mesh-linear</param>
+ </struct>
+ </struct>
+ <list name="plugins">
+ <param>StgFEM_StandardConditionFunctions</param>
+ <param>Underworld_EulerDeform</param>
+ </list>
+ <param name="maxTimeSteps">500</param>
+ <param name="outputEvery">1</param>
+ <param name="dumpEvery">1</param>
+ <param name="outputPath">./output.fountain</param>
+ <param name="dim">2</param>
+ <param name="numPartitionedDims">1</param>
+ <param name="shadowDepth">1</param>
+ <param name="minX">0.0f</param>
+ <param name="minY">0.0f</param>
+ <param name="minZ">0.0f</param>
+ <param name="maxX">1.0f</param>
+ <param name="maxY">0.5f</param>
+ <param name="maxZ">0.3f</param>
+ <param name="elementResI">64</param>
+ <param name="elementResJ">32</param>
+ <param name="elementResK">3</param>
+ <param name="allowUnbalancing">True</param>
+ <param name="buildNodeNeighbourTbl">True</param>
+ <param name="buildElementNeighbourTbl">True</param>
+ <param name="particlesPerCell">30</param>
+ <param name="seed">13</param>
+ <param name="gaussParticlesX">2</param>
+ <param name="gaussParticlesY">2</param>
+ <param name="gaussParticlesZ">2</param>
+ <struct name="EulerDeform">
+ <list name="systems">
+ <struct>
+ <param name="mesh">mesh-constant</param>
+ <param name="remesher">pressureRemesher</param>
+ <param name="velocityField">VelocityField</param>
+ <list name="fields">
+ <struct>
+ <param name="field">PressureField</param>
+ <param name="variable">pressure</param>
+ </struct>
+ </list>
+ </struct>
+ <struct>
+ <param name="mesh">mesh-linear</param>
+ <param name="remesher">velocityRemesher</param>
+ <param name="velocityField">VelocityField</param>
+ <param name="wrapTop">True</param>
+ <list name="fields">
+ <struct>
+ <param name="field">VelocityField</param>
+ <param name="variable">velocity</param>
+ </struct>
+ </list>
+ </struct>
+ </list>
+ </struct>
+ <struct name="velocityBCs">
+ <param name="type">CompositeVC</param>
+ <list name="vcList">
+ <struct>
+ <param name="type">WallVC</param>
+ <param name="wall">front</param>
+ <list name="variables">
+ <struct>
+ <param name="name">vz</param>
+ <param name="type">double</param>
+ <param name="value">0</param>
+ </struct>
+ </list>
+ </struct>
+ <struct>
+ <param name="type">WallVC</param>
+ <param name="wall">back</param>
+ <list name="variables">
+ <struct>
+ <param name="name">vz</param>
+ <param name="type">double</param>
+ <param name="value">0</param>
+ </struct>
+ </list>
+ </struct>
+ <struct>
+ <param name="type">WallVC</param>
+ <param name="wall">left</param>
+ <list name="variables">
+ <struct>
+ <param name="name">vx</param>
+ <param name="type">double</param>
+ <param name="value">0.0</param>
+ </struct>
+ </list>
+ </struct>
+ <struct>
+ <param name="type">WallVC</param>
+ <param name="wall">right</param>
+ <list name="variables">
+ <struct>
+ <param name="name">vx</param>
+ <param name="type">double</param>
+ <param name="value">0.0</param>
+ </struct>
+ </list>
+ </struct>
+ <struct>
+ <param name="type">WallVC</param>
+ <param name="wall">bottom</param>
+ <list name="variables">
+ <struct>
+ <param name="name">vy</param>
+ <param name="type">double</param>
+ <param name="value">0.0</param>
+ </struct>
+ </list>
+ </struct>
+ </list>
+ </struct>
+ <param name="checkpointEvery">1</param>
+ <param name="gravity">1.</param>
+</StGermainData>
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/Init.c 2006-11-28 22:00:16 UTC (rev 5366)
@@ -61,6 +61,10 @@
Stg_ComponentRegister_Add( componentsRegister, BuoyancyForceTerm_Type, "0", _BuoyancyForceTerm_DefaultNew );
RegisterParent( BuoyancyForceTerm_Type, ForceTerm_Type );
+
+ Stg_ComponentRegister_Add( componentsRegister, StressBC_Type, "0", _StressBC_DefaultNew );
+
+ RegisterParent( StressBC_Type, ForceTerm_Type );
RegisterParent( MaterialSwarmVariable_Type, SwarmVariable_Type );
return True;
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/SConscript
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/SConscript 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/SConscript 2006-11-28 22:00:16 UTC (rev 5366)
@@ -23,6 +23,7 @@
Finalise.h
Init.h
MaterialSwarmVariable.h
+StressBC.h
types.h
Utils.h""")
@@ -30,10 +31,12 @@
c_files=Split("""BuoyancyForceTerm.c
Finalise.c
Init.c
+StressBC.c
MaterialSwarmVariable.c""")
meta_files=Split("""BuoyancyForceTerm.meta
+StressBC.meta
MaterialSwarmVariable.meta""")
c_files+=[local_env.Meta(meta_files)]
Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.c 2006-11-28 22:00:16 UTC (rev 5366)
@@ -0,0 +1,381 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003-2006, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street,
+** Melbourne, 3053, Australia.
+** Copyright (c) 2005-2006, Monash Cluster Computing, Building 28, Monash University Clayton Campus,
+** Victoria, 3800, Australia
+**
+** Primary Contributing Organisations:
+** Victorian Partnership for Advanced Computing Ltd, Computational Software Development - http://csd.vpac.org
+** Australian Computational Earth Systems Simulator - http://www.access.edu.au
+** Monash Cluster Computing - http://www.mcc.monash.edu.au
+**
+** Contributors:
+** Robert Turnbull, Research Assistant, Monash University. (robert.turnbull at sci.monash.edu.au)
+** Patrick D. Sunter, Software Engineer, VPAC. (patrick at vpac.org)
+** Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+** Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+** David May, PhD Student, Monash University (david.may at sci.monash.edu.au)
+** Vincent Lemiale, Postdoctoral Fellow, Monash University. (vincent.lemiale at sci.monash.edu.au)
+** Julian Giordani, Research Assistant, Monash University. (julian.giordani at sci.monash.edu.au)
+** Louis Moresi, Associate Professor, Monash University. (louis.moresi at sci.monash.edu.au)
+** Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+** Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+** David Stegman, Postdoctoral Fellow, Monash University. (david.stegman at sci.monash.edu.au)
+** Wendy Sharples, PhD Student, Monash University (wendy.sharples at sci.monash.edu.au)
+**
+** Modified 2006 by Walter Landry (California Institute of Technology)
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+**
+** This library is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+**
+** $Id$
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+#include <mpi.h>
+#include <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/Utils/types.h"
+#include "PICellerator/Utils/MaterialSwarmVariable.h"
+
+#include "types.h"
+#include "StressBC.h"
+
+#include <assert.h>
+#include <string.h>
+
+/* Textual name of this class */
+const Type StressBC_Type = "StressBC";
+
+StressBC* StressBC_New(
+ Name name,
+ ForceVector* forceVector,
+ Swarm* integrationSwarm,
+ double force,
+ Bool adjust,
+ Materials_Register* materials_Register )
+{
+ StressBC* self = (StressBC*) _StressBC_DefaultNew( name );
+
+ StressBC_InitAll(
+ self,
+ forceVector,
+ integrationSwarm,
+ force,
+ adjust,
+ materials_Register );
+
+ return self;
+}
+
+/* Creation implementation / Virtual constructor */
+StressBC* _StressBC_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,
+ ForceTerm_AssembleElementFunction* _assembleElement,
+ StressBC_CalcForceFunction* _calcForce,
+ Name name )
+{
+ StressBC* self;
+
+ /* Allocate memory */
+ assert( sizeOfSelf >= sizeof(StressBC) );
+ self = (StressBC*) _ForceTerm_New(
+ sizeOfSelf,
+ type,
+ _delete,
+ _print,
+ _copy,
+ _defaultConstructor,
+ _construct,
+ _build,
+ _initialise,
+ _execute,
+ _destroy,
+ _assembleElement,
+ name );
+
+ /* Virtual info */
+ self->_calcForce = _calcForce;
+
+ return self;
+}
+
+void _StressBC_Init(
+ StressBC* self,
+ double force,
+ Bool adjust,
+ Materials_Register* materials_Register )
+{
+ self->force = force;
+ self->adjust = adjust;
+ self->materials_Register = materials_Register;
+
+}
+
+void StressBC_InitAll(
+ void* forceTerm,
+ ForceVector* forceVector,
+ Swarm* integrationSwarm,
+ double force,
+ Bool adjust,
+ Materials_Register* materials_Register )
+{
+ StressBC* self = (StressBC*) forceTerm;
+
+ ForceTerm_InitAll( self, forceVector, integrationSwarm, NULL );
+ _StressBC_Init( self, force, adjust, materials_Register );
+}
+
+void _StressBC_Delete( void* forceTerm ) {
+ StressBC* self = (StressBC*)forceTerm;
+ Index i;
+
+ for ( i = 0; i < self->materialSwarmCount; ++i ) {
+ Stg_Class_Delete( self->densitySwarmVariables[i] );
+ Stg_Class_Delete( self->alphaSwarmVariables[i] );
+ }
+ Stg_Class_Delete( self->densitySwarmVariables );
+ Stg_Class_Delete( self->alphaSwarmVariables );
+
+ _ForceTerm_Delete( self );
+}
+
+void _StressBC_Print( void* forceTerm, Stream* stream ) {
+ StressBC* self = (StressBC*)forceTerm;
+
+ _ForceTerm_Print( self, stream );
+
+ /* General info */
+ Journal_PrintDouble( stream, self->force );
+}
+
+void* _StressBC_DefaultNew( Name name ) {
+ return (void*)_StressBC_New(
+ sizeof(StressBC),
+ StressBC_Type,
+ _StressBC_Delete,
+ _StressBC_Print,
+ NULL,
+ _StressBC_DefaultNew,
+ _StressBC_Construct,
+ _StressBC_Build,
+ _StressBC_Initialise,
+ _StressBC_Execute,
+ _StressBC_Destroy,
+ _StressBC_AssembleElement,
+ _StressBC_CalcForce,
+ name );
+}
+
+void _StressBC_Construct( void* forceTerm, Stg_ComponentFactory* cf, void* data ) {
+ StressBC* self = (StressBC*)forceTerm;
+ double force;
+ Bool adjust;
+ Materials_Register* materials_Register;
+
+ /* Construct Parent */
+ _ForceTerm_Construct( self, cf, data );
+
+ force = Stg_ComponentFactory_GetDouble( cf, self->name, "force", 0.0 );
+ adjust = Stg_ComponentFactory_GetBool( cf, self->name, "adjust", False );
+
+ materials_Register = Stg_ObjectList_Get( cf->registerRegister, "Materials_Register" );
+ assert( materials_Register );
+
+ _StressBC_Init( self, force, adjust, materials_Register );
+}
+
+void _StressBC_Build( void* forceTerm, void* data ) {
+ StressBC* self = (StressBC*)forceTerm;
+ StressBC_MaterialExt* materialExt;
+ Material_Index material_I;
+ Material* material;
+ Materials_Register* materials_Register = self->materials_Register;
+ IntegrationPointsSwarm* swarm = (IntegrationPointsSwarm*)self->integrationSwarm;
+ MaterialPointsSwarm** materialSwarms;
+ Index materialSwarm_I;
+ Name name;
+
+ _ForceTerm_Build( self, data );
+
+ /* Sort out material extension stuff */
+ self->materialExtHandle = Materials_Register_AddMaterialExtension(
+ self->materials_Register,
+ self->type,
+ sizeof(StressBC_MaterialExt) );
+ for ( material_I = 0 ; material_I < Materials_Register_GetCount( materials_Register ) ; material_I++) {
+ material = Materials_Register_GetByIndex( materials_Register, material_I );
+ materialExt = ExtensionManager_GetFunc( material->extensionMgr, material, self->materialExtHandle );
+
+ materialExt->density = Dictionary_GetDouble_WithDefault( material->dictionary, "density", 0.0 );
+ materialExt->alpha = Dictionary_GetDouble_WithDefault( material->dictionary, "alpha", 0.0 );
+ }
+
+ /* Create Swarm Variables of each material swarm this ip swarm is mapped against */
+ materialSwarms = IntegrationPointMapper_GetMaterialPointsSwarms( swarm->mapper, &(self->materialSwarmCount) );
+ self->densitySwarmVariables = Memory_Alloc_Array( MaterialSwarmVariable*, self->materialSwarmCount, "DensityVariables" );
+ self->alphaSwarmVariables = Memory_Alloc_Array( MaterialSwarmVariable*, self->materialSwarmCount, "AlphaVariables" );
+
+ for ( materialSwarm_I = 0; materialSwarm_I < self->materialSwarmCount; ++materialSwarm_I ) {
+ name = Stg_Object_AppendSuffix( materialSwarms[materialSwarm_I], "Density" );
+ self->densitySwarmVariables[materialSwarm_I] = MaterialSwarmVariable_New(
+ name,
+ materialSwarms[materialSwarm_I],
+ 1,
+ self->materials_Register,
+ self->materialExtHandle,
+ GetOffsetOfMember( *materialExt, density ) );
+ Memory_Free( name );
+
+ name = Stg_Object_AppendSuffix( materialSwarms[materialSwarm_I], "Alpha" );
+ self->alphaSwarmVariables[materialSwarm_I] = MaterialSwarmVariable_New(
+ name,
+ materialSwarms[materialSwarm_I],
+ 1,
+ self->materials_Register,
+ self->materialExtHandle,
+ GetOffsetOfMember( *materialExt, alpha ) );
+ Memory_Free( name );
+
+ /* Build new Swarm Variables */
+ Stg_Component_Build( self->densitySwarmVariables[materialSwarm_I], data, False );
+ Stg_Component_Build( self->alphaSwarmVariables[materialSwarm_I], data, False );
+ }
+
+
+}
+
+void _StressBC_Initialise( void* forceTerm, void* data ) {
+ StressBC* self = (StressBC*)forceTerm;
+ Index i;
+
+ _ForceTerm_Initialise( self, data );
+
+ for ( i = 0; i < self->materialSwarmCount; ++i ) {
+ Stg_Component_Initialise( self->densitySwarmVariables[i], data, False );
+ Stg_Component_Initialise( self->alphaSwarmVariables[i], data, False );
+ }
+}
+
+void _StressBC_Execute( void* forceTerm, void* data ) {
+ _ForceTerm_Execute( forceTerm, data );
+}
+
+void _StressBC_Destroy( void* forceTerm, void* data ) {
+ _ForceTerm_Destroy( forceTerm, data );
+}
+
+
+void _StressBC_AssembleElement( void* forceTerm, ForceVector* forceVector, Element_LocalIndex lElement_I, double* elForceVec ) {
+ StressBC* self = (StressBC*) forceTerm;
+ IntegrationPoint* particle;
+ StressBC_MaterialExt* materialExt;
+ Particle_InCellIndex cParticle_I;
+ Particle_InCellIndex cellParticleCount;
+ Element_NodeIndex elementNodeCount;
+ Dimension_Index dim = forceVector->dim;
+ IntegrationPointsSwarm* swarm = (IntegrationPointsSwarm*)self->integrationSwarm;
+ FiniteElement_Mesh* mesh = forceVector->feVariable->feMesh;
+ Node_ElementLocalIndex eNode_I;
+ Cell_Index cell_I;
+ ElementType* elementType;
+ Dof_Index nodeDofCount;
+ double force;
+ double detJac = 0.0;
+ double factor;
+ double Ni[8];
+ double* xi;
+ Material* material;
+ MaterialPoint* materialparticle;
+ MaterialPointsSwarm* materialSwarm;
+
+ double totalWeight = 0.0;
+ double adjustFactor = 0.0;
+
+ elementType = FeMesh_ElementTypeAt( mesh, lElement_I );
+ elementNodeCount = elementType->nodeCount;
+ nodeDofCount = dim;
+ cell_I = CellLayout_MapElementIdToCellId( swarm->cellLayout, lElement_I );
+ cellParticleCount = swarm->cellParticleCountTbl[cell_I];
+
+ /* adjust & adjustFactor -- 20060411 Alan
+ *
+ * The adjust decides whether an adjustFactor should be applied to the resulting factor.
+ * If on, the total weight of the particles in the cell are scaled to the cell local volume.
+ *
+ * This is designed to be used when integrating with swarms which do not cover the whole domain
+ * (ie - I used it to do dave.m's test of 1 swarm for blob, 1 swarm for background)
+ */
+ if ( self->adjust ) {
+ for( cParticle_I = 0 ; cParticle_I < cellParticleCount ; cParticle_I++ ) {
+ particle = (IntegrationPoint*) Swarm_ParticleInCellAt( swarm, cell_I, cParticle_I );
+ totalWeight += particle->weight;
+ }
+ adjustFactor = swarm->weights->cellLocalVolume / totalWeight;
+ }
+ else {
+ adjustFactor = 1.0;
+ }
+
+ for( cParticle_I = 0 ; cParticle_I < cellParticleCount ; cParticle_I++ ) {
+ particle = (IntegrationPoint*) Swarm_ParticleInCellAt( swarm, cell_I, cParticle_I );
+ xi = particle->xi;
+
+ detJac = ElementType_JacobianDeterminant( elementType, mesh, lElement_I, xi, dim );
+ ElementType_EvaluateShapeFunctionsAt( elementType, xi, Ni );
+
+ /* Get parameters */
+ material = IntegrationPointsSwarm_GetMaterialOn( (IntegrationPointsSwarm*) swarm, particle );
+ materialparticle = OneToOneMapper_GetMaterialPoint( swarm->mapper, particle, &materialSwarm );
+
+ /* Calculate Force */
+ force = StressBC_CalcForce( self, (Swarm*)swarm, lElement_I, materialparticle );
+ factor = detJac * particle->weight * adjustFactor * force;
+
+ /* Apply force in verticle direction */
+ for( eNode_I = 0 ; eNode_I < elementNodeCount; eNode_I++ ) {
+ elForceVec[ eNode_I * nodeDofCount + J_AXIS ] += factor * Ni[ eNode_I ] ;
+ }
+ }
+
+}
+
+/* The default implementation is for the force to be constant. */
+double _StressBC_CalcForce( void* forceTerm, Swarm* swarm, Element_DomainIndex dElement_I, void* particle ) {
+ StressBC* self = (StressBC*) forceTerm;
+ double *coord;
+
+ coord=((MaterialPoint*)particle)->coord;
+
+ if(coord[0]>0.4 && coord[0]<0.6 && coord[1]<0.1)
+ return self->force;
+ return 0.0;
+}
Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.h 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.h 2006-11-28 22:00:16 UTC (rev 5366)
@@ -0,0 +1,130 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003-2006, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street,
+** Melbourne, 3053, Australia.
+** Copyright (c) 2005-2006, Monash Cluster Computing, Building 28, Monash University Clayton Campus,
+** Victoria, 3800, Australia
+**
+** Primary Contributing Organisations:
+** Victorian Partnership for Advanced Computing Ltd, Computational Software Development - http://csd.vpac.org
+** Australian Computational Earth Systems Simulator - http://www.access.edu.au
+** Monash Cluster Computing - http://www.mcc.monash.edu.au
+**
+** Contributors:
+** Robert Turnbull, Research Assistant, Monash University. (robert.turnbull at sci.monash.edu.au)
+** Patrick D. Sunter, Software Engineer, VPAC. (patrick at vpac.org)
+** Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+** Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+** David May, PhD Student, Monash University (david.may at sci.monash.edu.au)
+** Vincent Lemiale, Postdoctoral Fellow, Monash University. (vincent.lemiale at sci.monash.edu.au)
+** Julian Giordani, Research Assistant, Monash University. (julian.giordani at sci.monash.edu.au)
+** Louis Moresi, Associate Professor, Monash University. (louis.moresi at sci.monash.edu.au)
+** Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+** Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+** David Stegman, Postdoctoral Fellow, Monash University. (david.stegman at sci.monash.edu.au)
+** Wendy Sharples, PhD Student, Monash University (wendy.sharples at sci.monash.edu.au)
+**
+** Modified 2006 by Walter Landry (California Institute of Technology)
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License as published by the Free Software Foundation; either
+** version 2.1 of the License, or (at your option) any later version.
+**
+** This library is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public
+** License along with this library; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+**
+*/
+
+
+#ifndef __Gale_Utils_StressBC_h__
+#define __Gale_Utils_StressBC_h__
+
+ typedef double (StressBC_CalcForceFunction) (
+ void* forceTerm,
+ Swarm* swarm,
+ Element_LocalIndex lElement_I,
+ void* particle );
+
+ /** Textual name of this class */
+ extern const Type StressBC_Type;
+
+ typedef struct {
+ double alpha;
+ double density;
+ } StressBC_MaterialExt;
+
+ /** StressBC class contents */
+ #define __StressBC \
+ /* General info */ \
+ __ForceTerm \
+ \
+ /* Virtual info */ \
+ StressBC_CalcForceFunction* _calcForce; \
+ \
+ /* StressBC info */ \
+ double force; \
+ Bool adjust; \
+ Materials_Register* materials_Register; \
+ ExtensionInfo_Index materialExtHandle; \
+ MaterialSwarmVariable** densitySwarmVariables; \
+ MaterialSwarmVariable** alphaSwarmVariables; \
+ Index materialSwarmCount;
+
+ struct StressBC { __StressBC };
+
+ StressBC* StressBC_New(
+ Name name,
+ ForceVector* forceVector,
+ Swarm* integrationSwarm,
+ double force,
+ Bool adjust,
+ Materials_Register* materials_Register );
+
+ StressBC* _StressBC_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,
+ ForceTerm_AssembleElementFunction* _assembleElement,
+ StressBC_CalcForceFunction* _calcForce,
+ Name name );
+
+ void StressBC_InitAll(
+ void* forceTerm,
+ ForceVector* forceVector,
+ Swarm* integrationSwarm,
+ double force,
+ Bool adjust,
+ Materials_Register* materials_Register );
+
+ void _StressBC_Delete( void* forceTerm );
+ void _StressBC_Print( void* forceTerm, Stream* stream );
+
+ void* _StressBC_DefaultNew( Name name ) ;
+void _StressBC_Construct( void* forceTerm, Stg_ComponentFactory* cf, void* data ) ;
+ void _StressBC_Build( void* forceTerm, void* data ) ;
+ void _StressBC_Initialise( void* forceTerm, void* data ) ;
+ void _StressBC_Execute( void* forceTerm, void* data ) ;
+ void _StressBC_Destroy( void* forceTerm, void* data ) ;
+
+ void _StressBC_AssembleElement( void* forceTerm, ForceVector* forceVector, Element_LocalIndex lElement_I, double* elForceVec ) ;
+ double _StressBC_CalcForce( void* forceTerm, Swarm* swarm, Element_LocalIndex lElement_I, void* particle ) ;
+
+ #define StressBC_CalcForce( forceTerm, swarm, lElement_I, particle )\
+ (( (StressBC*) forceTerm )->_calcForce( forceTerm, swarm, lElement_I, particle ) )
+
+#endif
Added: long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.meta
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.meta 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/StressBC.meta 2006-11-28 22:00:16 UTC (rev 5366)
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">StressBC</param>
+<param name="Organisation">VPAC and MCC</param>
+<param name="Project">Gale</param>
+<param name="Location">./Gale/Utils/src/</param>
+<param name="Project Web">https://csd.vpac.org/twiki/bin/view/PICellerator/WebHome</param>
+<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="Description">This adds a stress boundary condition.</param>
+
+<!--Now the interesting stuff-->
+
+
+<list name="Params">
+ <struct>
+ <param name="Name">force</param>
+ <param name="Type">Double</param>
+ <param name="Default">0.0</param>
+ <param name="Description">This corresponds to the $g$ in the equation above.</param>
+ </struct>
+
+</list>
+
+<!-- Add an exmaple XML if possible -->
+<param name="Example">
+ <struct name="buoyancyForceTerm">
+ <param name="Type">StressBC</param>
+ <param name="ForceVector">mom_force</param>
+ <param name="Swarm">materialPoints</param>
+ <param name="force">1.0</param>
+ </struct>
+</param>
+
+</StGermainData>
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/Utils.h 2006-11-28 22:00:16 UTC (rev 5366)
@@ -46,6 +46,7 @@
#include "types.h"
#include "BuoyancyForceTerm.h"
+ #include "StressBC.h"
#include "MaterialSwarmVariable.h"
#include "Init.h"
Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h 2006-11-28 22:00:14 UTC (rev 5365)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/types.h 2006-11-28 22:00:16 UTC (rev 5366)
@@ -55,6 +55,7 @@
#define __PICellerator_Utils_types_h__
typedef struct BuoyancyForceTerm BuoyancyForceTerm;
+ typedef struct StressBC StressBC;
typedef struct MaterialSwarmVariable MaterialSwarmVariable;
#endif
More information about the cig-commits
mailing list