[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