[cig-commits] commit: Add InnerGenerator_SetCoordinates for resetting the coordinates after advection

Mercurial hg at geodynamics.org
Tue Oct 4 15:09:37 PDT 2011


changeset:   805:ab1d59951752
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Tue Oct 04 15:08:01 2011 -0700
files:       Discretisation/src/InnerGenerator.cxx Discretisation/src/InnerGenerator.h
description:
Add InnerGenerator_SetCoordinates for resetting the coordinates after advection


diff -r efd77fe373cf -r ab1d59951752 Discretisation/src/InnerGenerator.cxx
--- a/Discretisation/src/InnerGenerator.cxx	Tue Oct 04 15:06:53 2011 -0700
+++ b/Discretisation/src/InnerGenerator.cxx	Tue Oct 04 15:08:01 2011 -0700
@@ -103,10 +103,6 @@ void _InnerGenerator_Print( void* genera
 void _InnerGenerator_Print( void* generator, Stream* stream ) {
 	InnerGenerator*	self = (InnerGenerator*)generator;
 	
-	/* Set the Journal for printing informations */
-	Stream* generatorStream;
-	generatorStream = Journal_Register( InfoStream_Type, (Name)"InnerGeneratorStream"  );
-
 	/* Print parent */
 	Journal_Printf( stream, "InnerGenerator (ptr): (%p)\n", self );
 	_MeshGenerator_Print( self, stream );
@@ -195,7 +191,8 @@ void InnerGenerator_BuildTopology( Inner
 	int		nLocals, *locals;
 	int		nRemotes, *remotes;
 	unsigned	global;
-	unsigned	e_i, l_i, r_i;
+	unsigned	e_i;
+        int             l_i, r_i;
 
 	assert( self );
 	assert( mesh );
@@ -299,72 +296,86 @@ void InnerGenerator_BuildTopology( Inner
 	IGraph_InvertIncidence( topo, MT_VERTEX, nDims );
 }
 
+void InnerGenerator_SetCoordinates( InnerGenerator* self, FeMesh* mesh );
+
 void InnerGenerator_BuildGeometry( InnerGenerator* self, FeMesh* mesh ) {
-	Mesh*		elMesh;
-	double		localCrds[3][2] = {{-0.5, -0.5}, 
-					   {0.5, -0.5}, 
-					   {0, 0.5}};
-	double		globalCrd[2];
-	double		*vert;
-	unsigned	nDims;
-	unsigned	nDomainEls;
-	unsigned	e_i;
+  assert( self );
+  assert( mesh );
 
-	assert( self );
-	assert( mesh );
+  Mesh *elMesh = self->elMesh;
+  unsigned nDims = Mesh_GetDimSize( elMesh );
+  unsigned nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
 
-	elMesh = self->elMesh;
-	nDims = Mesh_GetDimSize( elMesh );
-	nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
+  if( nDims == 2 ) {
+    mesh->verts = AllocArray2D( double, nDomainEls * 3, nDims );
+  }
+  else if( nDims == 3 ) {
+    mesh->verts = AllocArray2D( double, nDomainEls * 4, nDims );
+  }
+  InnerGenerator_SetCoordinates(self, mesh);
+}
 
-	if( nDims == 2 ) {
-		mesh->verts = AllocArray2D( double, nDomainEls * 3, nDims );
-		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
-			unsigned elInd = e_i * 3;
+void InnerGenerator_SetCoordinates( InnerGenerator* self, FeMesh* mesh ) {
+  assert( self );
+  assert( mesh );
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[0], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd );
-			memcpy( vert, globalCrd, nDims * sizeof(double) );
+  Mesh *elMesh = self->elMesh;
+  unsigned nDims = Mesh_GetDimSize( elMesh );
+  unsigned nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
+  double *vert;
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[1], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd + 1 );
-			memcpy( vert, globalCrd, nDims * sizeof(double) );
+  if( nDims == 2 ) {
+    double localCrds[3][2] = {{-0.5, -0.5}, 
+                              {0.5, -0.5}, 
+                              {0, 0.5}};
+    double globalCrd[2];
+    for(unsigned e_i = 0; e_i < nDomainEls; e_i++ ) {
+      unsigned elInd = e_i * 3;
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[2], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd + 2 );
-			memcpy( vert, globalCrd, nDims * sizeof(double) );
-		}
-	}
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[0], globalCrd );
+      vert = Mesh_GetVertex( mesh, elInd );
+      memcpy( vert, globalCrd, nDims * sizeof(double) );
 
-	else if( nDims == 3 ) {
-		double localCrds3D[4][3] = { {-0.5, -0.5, -0.5},
-		                             {0.25, 0.25, 0.25},
-		                             {0.5, -0.25, -0.5},
-		                             {-0.25, 0.5, 0.5} };
-		double globalCrd3D[3];
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[1], globalCrd );
+      vert = Mesh_GetVertex( mesh, elInd + 1 );
+      memcpy( vert, globalCrd, nDims * sizeof(double) );
 
-		mesh->verts = AllocArray2D( double, nDomainEls * 4, nDims );
-		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
-			unsigned elInd = e_i * 4;
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[2], globalCrd );
+      vert = Mesh_GetVertex( mesh, elInd + 2 );
+      memcpy( vert, globalCrd, nDims * sizeof(double) );
+    }
+  }
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[0], globalCrd3D );
-			vert = Mesh_GetVertex( mesh, elInd );
-			memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+  else if( nDims == 3 ) {
+    double localCrds3D[4][3] = { {-0.5, -0.5, -0.5},
+                                 {0.5, -0.5, -0.5},
+                                 {0.0, 0.5, -0.5},
+                                 {0.0, 0.0, 0.5} };
+    double globalCrd3D[3];
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[1], globalCrd3D );
-			vert = Mesh_GetVertex( mesh, elInd + 1 );
-			memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+    for(unsigned e_i = 0; e_i < nDomainEls; e_i++ ) {
+      unsigned elInd = e_i * 4;
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[2], globalCrd3D );
-			vert = Mesh_GetVertex( mesh, elInd + 2 );
-			memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[0], globalCrd3D );
+      vert = Mesh_GetVertex( mesh, elInd );
+      memcpy( vert, globalCrd3D, nDims * sizeof(double) );
 
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[3], globalCrd3D );
-			vert = Mesh_GetVertex( mesh, elInd + 3 );
-			memcpy( vert, globalCrd3D, nDims * sizeof(double) );
-		}
-	}
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[1], globalCrd3D );
+      vert = Mesh_GetVertex( mesh, elInd + 1 );
+      memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[2], globalCrd3D );
+      vert = Mesh_GetVertex( mesh, elInd + 2 );
+      memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+
+      FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds3D[3], globalCrd3D );
+      vert = Mesh_GetVertex( mesh, elInd + 3 );
+      memcpy( vert, globalCrd3D, nDims * sizeof(double) );
+    }
+  }
+
 }
+
 
 void InnerGenerator_BuildElementTypes( InnerGenerator* self, FeMesh* mesh ) {
 	unsigned		nDomainEls;
diff -r efd77fe373cf -r ab1d59951752 Discretisation/src/InnerGenerator.h
--- a/Discretisation/src/InnerGenerator.h	Tue Oct 04 15:06:53 2011 -0700
+++ b/Discretisation/src/InnerGenerator.h	Tue Oct 04 15:08:01 2011 -0700
@@ -98,6 +98,7 @@
 	*/
 
 	void InnerGenerator_SetElementMesh( void* generator, void* mesh );
+        void InnerGenerator_SetCoordinates( InnerGenerator* self, FeMesh* mesh );
 
 	/*--------------------------------------------------------------------------------------------------------------------------
 	** Private Member functions



More information about the CIG-COMMITS mailing list