[cig-commits] r5576 - in long/3D/Gale/trunk: . src/StGermain/Discretisation/Mesh/src src/StGermain/Discretisation/Swarm/src

walter at geodynamics.org walter at geodynamics.org
Sun Dec 10 01:39:06 PST 2006


Author: walter
Date: 2006-12-10 01:39:06 -0800 (Sun, 10 Dec 2006)
New Revision: 5576

Modified:
   long/3D/Gale/trunk/
   long/3D/Gale/trunk/sinusoid.xml
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SConscript
   long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c
Log:
 r1206 at earth:  boo | 2005-05-05 02:22:44 -0700
 Make sinusoid.xml work



Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
   - 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1205
   + 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:1206

Modified: long/3D/Gale/trunk/sinusoid.xml
===================================================================
--- long/3D/Gale/trunk/sinusoid.xml	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/sinusoid.xml	2006-12-10 09:39:06 UTC (rev 5576)
@@ -1,91 +1,45 @@
 <?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>
+      <param name="Type">FeMesh</param>
+      <param name="elementType">constant</param>
+      <param name="elementMesh">mesh-linear</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 name="constantMesh-generator">
+      <param name="Type">C0Generator</param>
+      <param name="mesh">mesh-constant</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>
+      <param name="Type">FeMesh</param>
+      <param name="elementType">linear</param>
     </struct>
+    <struct name="linearMesh-generator">
+      <param name="Type">CartesianGenerator</param>
+      <param name="mesh">mesh-linear</param>
+      <param name="dim">dim</param>
+      <param name="shadowDepth">shadowDepth</param>
+      <list name="size">
+        <param>elementResI</param>
+        <param>elementResJ</param>
+        <param>elementResK</param>
+      </list>
+      <list name="minCoord">
+        <param>minX</param>
+        <param>minY</param>
+        <param>minZ</param>
+      </list>
+      <list name="maxCoord">
+        <param>maxX</param>
+        <param>maxY</param>
+        <param>maxZ</param>
+      </list>
+    </struct>
     <struct name="velocity">
-      <param name="Type">Variable</param>
+      <param name="Type">MeshVariable</param>
+      <param name="mesh">mesh-linear</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>
@@ -103,7 +57,7 @@
     </struct>
     <struct name="velocityDofLayout">
       <param name="Type">DofLayout</param>
-      <param name="Count">decomp-linear-nodeDomainCount</param>
+      <param name="mesh">mesh-linear</param>
       <param name="BaseVariableCount">dim</param>
       <list name="BaseVariables">
         <param>vx</param>
@@ -129,6 +83,11 @@
       <param name="Operator">Gradient</param>
       <param name="FeVariable">VelocityField</param>
     </struct>
+    <struct name="VelocityGradientsInvariantField">
+      <param name="Type">OperatorFeVariable</param>
+      <param name="Operator">TensorInvariant</param>
+      <param name="FeVariable">VelocityGradientsField</param>
+    </struct>
     <struct name="VelocityXXField">
       <param name="Type">OperatorFeVariable</param>
       <param name="Operator">TakeFirstComponent</param>
@@ -165,15 +124,14 @@
       <param name="FeVariable">StrainRateField</param>
     </struct>
     <struct name="pressure">
-      <param name="Type">Variable</param>
+      <param name="Type">MeshVariable</param>
+      <param name="mesh">mesh-constant</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>
+      <param name="mesh">mesh-constant</param>
       <list name="BaseVariables">
         <param>pressure</param>
       </list>
@@ -181,7 +139,6 @@
     <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>
@@ -195,7 +152,7 @@
       <param name="Type">IntegrationPointsSwarm</param>
       <param name="CellLayout">cellLayout</param>
       <param name="ParticleLayout">particleLayout</param>
-      <param name="FiniteElement_Mesh">mesh-linear</param>
+      <param name="FeMesh">mesh-linear</param>
       <param name="TimeIntegrator">timeIntegrator</param>
       <param name="IntegrationPointMapper">gaussMapper</param>
     </struct>
@@ -211,7 +168,7 @@
       <param name="Type">MaterialPointsSwarm</param>
       <param name="CellLayout">cellLayout</param>
       <param name="ParticleLayout">backgroundLayout</param>
-      <param name="FiniteElement_Mesh">mesh-linear</param>
+      <param name="FeMesh">mesh-linear</param>
     </struct>
     <struct name="timeIntegrator">
       <param name="Type">TimeIntegrator</param>
@@ -239,7 +196,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>
@@ -250,15 +207,14 @@
       <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>
+      <param name="Type">SpaceFillerParticleLayout</param>
+      <param name="averageInitialParticlesPerCell">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="FeMesh">mesh-linear</param>
       <param name="SplittingRoutine">splittingRoutine</param>
       <param name="RemovalRoutine">removalRoutine</param>
       <param name="EscapedRoutine">escapedRoutine</param>
@@ -393,14 +349,10 @@
         <param>storeViscosity</param>
       </list>
     </struct>
-    <struct name="cartesianGenerator">
-      <param name="Type">CartesianGenerator</param>
-      <param name="decomp">decomp-linear</param>
-    </struct>
     <struct name="surfaceAdaptor">
       <param name="Type">SurfaceAdaptor</param>
       <param name="mesh">mesh-linear</param>
-      <param name="sourceGenerator">cartesianGenerator</param>
+      <param name="sourceGenerator">linearMesh-generator</param>
       <param name="surfaceType">cosine</param>
       <list name="origin">
         <param>0.0</param>
@@ -419,13 +371,14 @@
       <list name="dims">
         <param>true</param>
         <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="dims">3</param>
       <param name="cellMesh">mesh-linear</param>
     </struct>
     <struct name="conditionFunctions">
@@ -440,7 +393,6 @@
   <param name="dumpEvery">1</param>
   <param name="outputPath">./output.sinusoid</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>
@@ -448,17 +400,18 @@
   <param name="maxX">1.0f</param>
   <param name="maxY">0.5f</param>
   <param name="maxZ">0.3f</param>
-  <param name="elementResI">128</param>
-  <param name="elementResJ">64</param>
+  <param name="elementResI">32</param>
+  <param name="elementResJ">16</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>
+  <param name="particlesPerCell">30</param>
+  <param name="cellParticleCount">30</param>
+  <param name="seed">13</param>
   <struct name="EulerDeform">
     <list name="systems">
       <struct>

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Init.c	2006-12-10 09:39:06 UTC (rev 5576)
@@ -61,12 +61,15 @@
 				   Mesh_Type, "0", (Stg_Component_DefaultConstructorFunction*)Mesh_New );
 	Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
 				   MeshVariable_Type, "0", (Stg_Component_DefaultConstructorFunction*)MeshVariable_New );
+        Stg_ComponentRegister_Add( Stg_ComponentRegister_Get_ComponentRegister(), 
+                                   SurfaceAdaptor_Type, "0", (Stg_Component_DefaultConstructorFunction*)SurfaceAdaptor_New );
 
 	RegisterParent( Mesh_Algorithms_Type, Stg_Component_Type );
 	RegisterParent( MeshTopology_Type, Stg_Component_Type );
 	RegisterParent( CartesianGenerator_Type, MeshGenerator_Type );
 	RegisterParent( Mesh_Type, Stg_Component_Type );
 	RegisterParent( MeshVariable_Type, Variable_Type );
+        RegisterParent( SurfaceAdaptor_Type, MeshAdaptor_Type );
 
 	return True;
 }

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/Mesh.h	2006-12-10 09:39:06 UTC (rev 5576)
@@ -60,6 +60,8 @@
 	#include "MeshGenerator.h"
 	#include "CartesianGenerator.h"
 	#include "MeshVariable.h"
+        #include "MeshAdaptor.h"
+        #include "SurfaceAdaptor.h"
 
 	#include "Init.h"
 	#include "Finalise.h"

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/MeshAdaptor.c	2006-12-10 09:39:06 UTC (rev 5576)
@@ -106,12 +106,12 @@
 	_MeshGenerator_Construct( self, cf, data );
 
 	/* There could be either a generator or a mesh to use as a template.  Prefer the mesh. */
-	self->mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceMesh", Mesh, False, data );
-	if( !self->mesh ) {
+/* 	self->mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceMesh", Mesh, False, data ); */
+/* 	if( !self->mesh ) { */
 		/* Read the source generator. */
 		self->generator = Stg_ComponentFactory_ConstructByKey( cf, self->name, "sourceGenerator", 
 								       MeshGenerator, True, data );
-	}
+/* 	} */
 }
 
 void _MeshAdaptor_Build( void* adaptor, void* data ) {

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SConscript
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SConscript	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SConscript	2006-12-10 09:39:06 UTC (rev 5576)
@@ -34,6 +34,7 @@
 MeshClass.h
 MeshTopology.h
 Mesh.h
+MeshAdaptor.h
 MeshGenerator.h
 MeshVariable.h
 Mesh_Algorithms.h
@@ -53,6 +54,7 @@
 Finalise.c
 Grid.c
 Init.c
+MeshAdaptor.c
 MeshClass.c
 MeshGenerator.c
 MeshTopology.c
@@ -68,6 +70,7 @@
 Decomp_Sync.meta
 DecompTransfer.meta
 Grid.meta
+MeshAdaptor.meta
 MeshClass.meta
 MeshGenerator.meta
 MeshTopology.meta

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Mesh/src/SurfaceAdaptor.c	2006-12-10 09:39:06 UTC (rev 5576)
@@ -86,7 +86,7 @@
 	
 	/* Allocate memory */
 	assert( sizeOfSelf >= sizeof(SurfaceAdaptor) );
-	self = (SurfaceAdaptor*)_MeshGenerator_New( MESHADAPTOR_PASSARGS );
+	self = (SurfaceAdaptor*)_MeshAdaptor_New( MESHADAPTOR_PASSARGS );
 
 	/* Virtual info */
 
@@ -110,7 +110,7 @@
 	SurfaceAdaptor*	self = (SurfaceAdaptor*)adaptor;
 
 	/* Delete the parent. */
-	_MeshGenerator_Delete( self );
+	_MeshAdaptor_Delete( self );
 }
 
 void _SurfaceAdaptor_Print( void* adaptor, Stream* stream ) {
@@ -122,7 +122,7 @@
 
 	/* Print parent */
 	Journal_Printf( stream, "SurfaceAdaptor (ptr): (%p)\n", self );
-	_MeshGenerator_Print( self, stream );
+	_MeshAdaptor_Print( self, stream );
 }
 
 void _SurfaceAdaptor_Construct( void* adaptor, Stg_ComponentFactory* cf, void* data ) {
@@ -199,7 +199,7 @@
 	SurfaceAdaptor*			self = (SurfaceAdaptor*)adaptor;
 	Mesh*				mesh = (Mesh*)_mesh;
 	SurfaceAdaptor_DeformFunc*	deformFunc;
-	unsigned*			gSize;
+	Grid**                          current_grid;
 	Grid*				grid;
 	unsigned*			inds;
 	unsigned			d_i, n_i;
@@ -227,32 +227,33 @@
 	};
 
 	/* Extract the cartesian information. */
-	gSize = (unsigned*)ExtensionManager_Get( mesh->info, mesh, 
-						 ExtensionManager_GetHandle( mesh->info, "cartesianGlobalSize" ) );
+	current_grid = (Grid**)ExtensionManager_Get( mesh->info, mesh, 
+                                                     ExtensionManager_GetHandle( mesh->info, "vertexGrid" ) );
 
 	/* Build grid and space for indices. */
 	grid = Grid_New();
 	Grid_SetNDims( grid, mesh->topo->nDims );
 	for( d_i = 0; d_i < mesh->topo->nDims; d_i++ )
-		gSize[d_i]++;
-	Grid_SetSizes( grid, gSize );
+          (*current_grid)->sizes[d_i]++;
+	Grid_SetSizes( grid, (*current_grid)->sizes );
 	for( d_i = 0; d_i < mesh->topo->nDims; d_i++ )
-		gSize[d_i]--;
+          (*current_grid)->sizes[d_i]--;
 	inds = Memory_Alloc_Array_Unnamed( unsigned, mesh->topo->nDims );
 
 	/* Loop over domain nodes. */
 	for( n_i = 0; n_i < MeshTopology_GetDomainSize( mesh->topo, MT_VERTEX ); n_i++ ) {
-		unsigned	gNode;
+          double scale_factor;
 
-		gNode = MeshTopology_DomainToGlobal( mesh->topo, MT_VERTEX, n_i );
-		Grid_Lift( grid, gNode, inds );
+          RegularMeshUtils_Node_1DTo3D( mesh, Mesh_DomainToGlobal(mesh, MT_VERTEX, n_i), inds );      
 
-		/* If we're not on top, skip. */
-		if( inds[1] != gSize[1] - 1 )
-			continue;
+          /* We have to do all of the nodes, because we might end up
+             with the height of the node going below other, non-moved
+             nodes. */
 
-		/* Deform this node. */
-		Mesh_GetVertex(mesh, n_i)[1] += deformFunc( self, mesh, gSize, n_i, inds );
+          scale_factor=inds[1]/((*current_grid)->sizes[1] - 1.0);
+
+          /* Deform this node. */
+          Mesh_GetVertex(mesh, n_i)[1] += scale_factor*deformFunc( self, mesh, (*current_grid)->sizes, n_i, inds );
 	}
 
 	/* Free resources. */

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c	2006-12-10 09:39:02 UTC (rev 5575)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Swarm/src/SpaceFillerParticleLayout.c	2006-12-10 09:39:06 UTC (rev 5576)
@@ -276,11 +276,19 @@
 
 	coord = particle->coord;
 	memset( coord, 0, sizeof(Coord) );
-	for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
-		coord[ dim_I ] = SobolGenerator_GetNextNumber_WithMinMax(
+
+        /* We have to do a loop here, because the initial mesh might
+           be deformed */
+        do
+          {
+            for ( dim_I = 0; dim_I < self->dim; dim_I++ ) {
+              coord[ dim_I ] = SobolGenerator_GetNextNumber_WithMinMax(
 					self->sobolGenerator[ dim_I ], 
 					minCrd[ dim_I ], 
 					maxCrd[ dim_I ]);
-	}
+            }
+          }
+        while(CellLayout_CellOf(swarm->cellLayout, particle)
+              >= swarm->cellLocalCount);
 }
 



More information about the cig-commits mailing list