[cig-commits] commit:

Mercurial hg at geodynamics.org
Mon Nov 24 11:59:23 PST 2008


changeset:   131:ef6976a2e48a
user:        LukeHodkinson
date:        Tue Aug 05 06:17:57 2008 +0000
files:       Utils/src/RegularMeshUtils.c Utils/src/RegularRemesher.c Utils/src/RegularRemesher.def Utils/src/RegularRemesherCmpt.c Utils/src/RegularRemesherCmpt.h Utils/src/Remesher.c Utils/src/Remesher.h
description:
Needed some special remeshing options to handle
frictional boundary layers.  We want to keep the
layers regular while allowing the rest of the
problem domain to deform slightly.


diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/RegularMeshUtils.c
--- a/Utils/src/RegularMeshUtils.c	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/RegularMeshUtils.c	Tue Aug 05 06:17:57 2008 +0000
@@ -847,8 +847,14 @@ IndexSet* RegularMeshUtils_CreateContact
    nNodes = Mesh_GetDomainSize( mesh, 0 );
    set = IndexSet_New( nNodes );
 
+/*
    left = depth + 1;
    right = grid->sizes[0] - (depth + 1) - 1;
+   bottom = 1;
+   top = depth;
+*/
+   left = 0;
+   right = grid->sizes[0] - 1;
    bottom = 1;
    top = depth;
    for( ii = 0; ii < nNodes; ii++ ) {
@@ -876,9 +882,15 @@ IndexSet* RegularMeshUtils_CreateContact
    nNodes = Mesh_GetDomainSize( mesh, 0 );
    set = IndexSet_New( nNodes );
 
+/*
    left = 1;
    right = depth;
    bottom = depth + 1;
+   top = grid->sizes[1] - 2;
+*/
+   left = 1;
+   right = depth;
+   bottom = 1;
    top = grid->sizes[1] - 2;
    if( includeTop ) top++;
    for( ii = 0; ii < nNodes; ii++ ) {
@@ -906,9 +918,15 @@ IndexSet* RegularMeshUtils_CreateContact
    nNodes = Mesh_GetDomainSize( mesh, 0 );
    set = IndexSet_New( nNodes );
 
+/*
    left = grid->sizes[0] - depth - 1;
    right = grid->sizes[0] - 2;
    bottom = depth + 1;
+   top = grid->sizes[1] - 2;
+*/
+   left = grid->sizes[0] - depth - 1;
+   right = grid->sizes[0] - 2;
+   bottom = 1;
    top = grid->sizes[1] - 2;
    if( includeTop ) top++;
    for( ii = 0; ii < nNodes; ii++ ) {
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/RegularRemesher.c
--- a/Utils/src/RegularRemesher.c	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/RegularRemesher.c	Tue Aug 05 06:17:57 2008 +0000
@@ -58,6 +58,7 @@ void _RegularRemesher_Init( void* _self 
    self->nWallVerts = NULL;
    self->wallVerts = NULL;
    self->wallCrds = NULL;
+   self->contactDepth = 0;
 }
 
 void _RegularRemesher_Copy( void* _self, const void* _op ) {
@@ -135,6 +136,47 @@ void _RegularRemesher_Remesh( void* _sel
       }
    }
 
+   /* If we have a contact depth set we'll need to manipulate the boundaries
+      a little. */
+   if( self->contactDepth ) {
+      int curInd;
+      int ii, d_j;
+
+      /* Reset static depths. */
+      curInd = 0;
+      for( ii = 0; ii < nVerts; ii++ ) {
+         Grid_Lift( vGrid, ii, inds );
+         if( inds[1] != self->contactDepth ) continue;
+         Mesh_GetVertex( mesh, ii )[1] = self->contactVerts[curInd++];
+      }
+
+      /* Also handle contact element boundaries. */
+      for( d_i = 0; d_i < nDims; d_i++ ) {
+         for( v_i = 0; v_i < nVerts; v_i++ ) {
+            ind = Sync_DomainToGlobal( meshSync, v_i );
+            Grid_Lift( vGrid, ind, (unsigned*)inds );
+            center = inds[d_i];
+            if( center == 0 || center == vGrid->sizes[d_i] - 1 ) {
+
+               /* If we're inside the contact depth range, we need to make
+                  sure the side coordinates are aligned. */
+               if( d_i == 0 ) d_j = 1;
+               else if( d_i == 1 ) d_j = 0;
+               else if( d_i == 2 ) d_j = 1;
+               if( inds[d_j] < self->contactDepth )
+                  inds[d_j] = self->contactDepth;
+               else if( inds[d_j] > vGrid->sizes[d_j] - self->contactDepth - 1 && 
+                        d_i == 1 )
+               {
+                  inds[d_j] = vGrid->sizes[d_j] - self->contactDepth - 1;
+               }
+               Mesh_GetVertex( mesh, v_i )[d_i] =
+                  Mesh_GetVertex( mesh, Grid_Project( vGrid, inds ) )[d_i];
+            }
+         }
+      }
+   }
+
    for( d_i = 0; d_i < nDims; d_i++ ) {
       if( !ISet_Has( self->remeshDims, d_i ) )
 	 continue;
@@ -167,9 +209,42 @@ void _RegularRemesher_Remesh( void* _sel
 	 else
 	    rightCrd = Mesh_GetVertex( mesh, ind)[d_i];
 
-	 mesh->verts[v_i][d_i] = leftCrd + 
-	    (double)center * (rightCrd - leftCrd) / 
-	    (double)(vGrid->sizes[d_i] - 1);
+         /* Account for contact depth. */
+         if( d_i == 1 ) {
+            if( center > self->contactDepth ) {
+
+               /* If we're past contact elements, adjust center to be
+                  properly smoothed. */
+               center -= self->contactDepth;
+               inds[1] = self->contactDepth;
+               leftCrd = Mesh_GetVertex( mesh, Grid_Project( vGrid, inds ) )[1];
+
+               /* Blend coordinate. */
+               mesh->verts[v_i][d_i] = leftCrd + 
+                  (double)center * (rightCrd - leftCrd) / 
+                  (double)(vGrid->sizes[d_i] - self->contactDepth - 1);
+
+            }
+            else if( center < self->contactDepth ) {
+
+               /* If we're inside the contact depth smooth within the
+                  contact range. */
+               inds[1] = self->contactDepth;
+               rightCrd = Mesh_GetVertex( mesh, Grid_Project( vGrid, inds ) )[1];
+               mesh->verts[v_i][d_i] = leftCrd + 
+                  (double)center * (rightCrd - leftCrd) / 
+                  (double)self->contactDepth;
+
+            }
+         }
+         else {
+
+               /* Blend coordinate. */
+               mesh->verts[v_i][d_i] = leftCrd + 
+                  (double)center * (rightCrd - leftCrd) / 
+                  (double)(vGrid->sizes[d_i] - 1);
+
+         }
       }
    }
 
@@ -290,8 +365,35 @@ void RegularRemesher_Build( void* _self 
       self->crds[d_i] = Class_Array( self, double, nRems );
    }
 
+   NewClass_Delete( wallSet );
+
+   /* If we have some contact depth, copy the relevant vertices. */
+   if( self->contactDepth > 0 ) {
+      int curInd;
+      Grid* grid;
+      int ii;
+
+      /* Get the vertex grid from the mesh. */
+      grid = *Mesh_GetExtension( mesh, Grid**, "vertexGrid" );
+      assert( grid );
+
+      /* Allocate for all the contact vertices. */
+      nVerts = grid->sizes[0];
+      if( nDims == 3 ) nVerts *= grid->sizes[1];
+      self->contactVerts = MemArray( double, nVerts, "" );
+
+      /* Copy upper strip. */
+      nVerts = Mesh_GetLocalSize( mesh, 0 );
+      curInd = 0;
+      for( ii = 0; ii < nVerts; ii++ ) {
+         Grid_Lift( grid, ii, inds );
+         if( inds[1] != self->contactDepth ) continue;
+         self->contactVerts[curInd++] = Mesh_GetVertex( mesh, ii )[1];
+      }
+
+   }
+
    Class_Free( self, inds );
-   NewClass_Delete( wallSet );
 }
 
 void RegularRemesher_SetRemeshState( void* _self, int dim, Bool state ) {
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/RegularRemesher.def
--- a/Utils/src/RegularRemesher.def	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/RegularRemesher.def	Tue Aug 05 06:17:57 2008 +0000
@@ -38,6 +38,8 @@ MEMBER( int**, nWallVerts )
 MEMBER( int**, nWallVerts )
 MEMBER( int***, wallVerts )
 MEMBER( double***, wallCrds )
+MEMBER( int, contactDepth )
+MEMBER( double*, contactVerts )
 
 
 /*
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/RegularRemesherCmpt.c
--- a/Utils/src/RegularRemesherCmpt.c	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/RegularRemesherCmpt.c	Tue Aug 05 06:17:57 2008 +0000
@@ -77,32 +77,14 @@ RegularRemesherCmpt* RegularRemesherCmpt
 }
 
 
-RegularRemesherCmpt* _RegularRemesherCmpt_New( CLASS_ARGS, 
-					       COMPONENT_ARGS, 
-					       REMESHER_ARGS )
-{
+RegularRemesherCmpt* _RegularRemesherCmpt_New( REMESHER_ARGS ) {
 	RegularRemesherCmpt*	self;
 
 	/* Allocate memory. */
-	self = (RegularRemesherCmpt*)_Remesher_New( _sizeOfSelf,
-					    type,
-					    _delete,
-					    _print, 
-					    _copy, 
-					    _defaultConstructor, 
-					    _construct, 
-					    _build, 
-					    _initialise, 
-					    _execute, 
-					    _destroy, 
-					    name, 
-							 initFlag, 
-							 NULL );
-
-	/* RegularRemesherCmpt info */
-	if( initFlag ) {
-		_RegularRemesherCmpt_Init( self );
-	}
+	self = (RegularRemesherCmpt*)_Remesher_New( REMESHER_PASSARGS );
+
+	/* RegularRemesherCmpt info */
+        _RegularRemesherCmpt_Init( self );
 
 	return self;
 }
@@ -188,6 +170,8 @@ void _RegularRemesherCmpt_Construct( voi
 
 	mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "mesh", Mesh, True, data );
 	NewRemesher_SetMesh( self->regRemesh, mesh );
+
+        self->regRemesh->contactDepth = Stg_ComponentFactory_GetInt( cf, self->name, "contactDepth", 0 );
 
 	dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
 	list = Dictionary_Get( dict, "remeshDims" );
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/RegularRemesherCmpt.h
--- a/Utils/src/RegularRemesherCmpt.h	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/RegularRemesherCmpt.h	Tue Aug 05 06:17:57 2008 +0000
@@ -67,9 +67,8 @@
 	RegularRemesherCmpt* RegularRemesherCmpt_New( Name name );
 
 	/* Creation implementation */
-	RegularRemesherCmpt* _RegularRemesherCmpt_New( CLASS_ARGS, 
-						       COMPONENT_ARGS, 
-						       REMESHER_ARGS );
+	RegularRemesherCmpt* _RegularRemesherCmpt_New( REMESHER_ARGS );
+
 	/* Initialise a RegularRemesherCmpt */
 	void RegularRemesherCmpt_Init( RegularRemesherCmpt* self );
 
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/Remesher.c
--- a/Utils/src/Remesher.c	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/Remesher.c	Tue Aug 05 06:17:57 2008 +0000
@@ -1,6 +1,7 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 **
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd,
+** 110 Victoria Street, Melbourne, 3053, Australia.
 **
 ** Authors:
 **	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
@@ -26,7 +27,7 @@
 **
 ** $Id: Remesher.c 2192 2004-10-15 02:45:38Z LukeHodkinson $
 **
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -48,174 +49,108 @@ const Type Remesher_Type = "Remesher";
 const Type Remesher_Type = "Remesher";
 
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
+/*
+** Constructors */
 
-#define REMESH_DEFARGS				\
-	sizeof(Remesher),			\
-	Remesher_Type,				\
-	_Remesher_Delete,			\
-	_Remesher_Print,			\
-	NULL,					\
-	(void*(*)(Name))_Remesher_DefaultNew,	\
-	_Remesher_Construct,			\
-	_Remesher_Build,			\
-	_Remesher_Initialise,			\
-	_Remesher_Execute,			\
-	_Remesher_Destroy,			\
-	name,					\
-	False,					\
-	NULL
+Remesher* _Remesher_New( REMESHER_ARGS ) {
+   Remesher*	self;
 
+   /* Allocate memory. */
+   self = (Remesher*)_Stg_Component_New( STG_COMPONENT_PASSARGS );
 
-Remesher* _Remesher_New( CLASS_ARGS, 
-			 COMPONENT_ARGS, 
-			 REMESHER_ARGS )
-{
-	Remesher*	self;
+   /* Virtual functions. */
+   self->remeshFunc = remeshFunc;
 
-	/* Allocate memory. */
-	self = (Remesher*)_Stg_Component_New( _sizeOfSelf,
-					    type,
-					    _delete,
-					    _print, 
-					    _copy, 
-					    _defaultConstructor, 
-					    _construct, 
-					    _build, 
-					    _initialise, 
-					    _execute, 
-					    _destroy, 
-					    name, 
-					    initFlag );
+   /* Remesher info */
+   _Remesher_Init( self );
 
-	/* Virtual functions. */
-	self->setMeshFunc = setMeshFunc;
-
-	/* Remesher info */
-	if( initFlag ) {
-		_Remesher_Init( self );
-	}
-
-	return self;
+   return self;
 }
 
-
 void _Remesher_Init( Remesher* self ) {
-	/* Remesher info */
-	memset( &self->meshType, 
-		0, 
-		(size_t)&self->comm - (size_t)&self->meshType + sizeof(MPI_Comm) );
+   /* Remesher info */
+   self->mesh = NULL;
 }
 
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
+/*
+** Virtual functions */
 
 void _Remesher_Delete( void* remesher ) {
-	Remesher*	self = (Remesher*)remesher;
+   Remesher*	self = (Remesher*)remesher;
 
-	/* Delete the class itself */
+   /* Delete the class itself */
 
-	/* Delete parent */
-	_Stg_Component_Delete( self );
+   /* Delete parent */
+   _Stg_Component_Delete( self );
 }
 
+void _Remesher_Print( void* remesher, Stream* stream ) {
+   Remesher*	self = (Remesher*)remesher;
+   Stream*		myStream;
+	
+   /* Set the Journal for printing informations */
+   myStream = Journal_Register( InfoStream_Type, "RemesherStream" );
 
-void _Remesher_Print( void* remesher, Stream* stream ) {
-	Remesher*	self = (Remesher*)remesher;
-	Stream*		myStream;
-	
-	/* Set the Journal for printing informations */
-	myStream = Journal_Register( InfoStream_Type, "RemesherStream" );
+   /* Print parent */
+   _Stg_Component_Print( self, stream );
 
-	/* Print parent */
-	_Stg_Component_Print( self, stream );
+   /* General info */
+   Journal_Printf( myStream, "Remesher (ptr): (%p)\n", self );
 
-	/* General info */
-	Journal_Printf( myStream, "Remesher (ptr): (%p)\n", self );
+   /* Virtual info */
 
-	/* Virtual info */
-
-	/* Remesher info */
+   /* Remesher info */
 }
 
-
 Remesher* _Remesher_DefaultNew( Name name ) {
-	return _Remesher_New( REMESH_DEFARGS );
+   return _Remesher_New( sizeof(Remesher), Remesher_Type, _Remesher_Delete,
+                         _Remesher_Print, NULL, (void*(*)(Name))_Remesher_DefaultNew,
+                         _Remesher_Construct, _Remesher_Build, _Remesher_Initialise,
+                         _Remesher_Execute, _Remesher_Destroy, name, False, NULL );
 }
 
+void _Remesher_Construct( void* remesher, Stg_ComponentFactory* cf, void* data ) {
+   Remesher*	self = (Remesher*)remesher;
+   char*		meshName;
 
-void _Remesher_Construct( void* remesher, Stg_ComponentFactory* cf, void* data ) {
-	Remesher*	self = (Remesher*)remesher;
-	char*		meshName;
+   assert( self );
+   assert( cf );
+   assert( cf->componentDict );
 
-	assert( self );
-	assert( cf );
-	assert( cf->componentDict );
-
-	meshName = Stg_ComponentFactory_GetString( cf, self->name, "mesh", "" );
-	if( !strcmp( meshName, "" ) ) {
-		return;
-	}
-
-	self->mesh = Stg_ComponentFactory_ConstructByName( cf, meshName, Mesh, True, data );
-	self->meshType = Stg_ComponentFactory_GetString( cf, self->name, "meshType", "unknown" );
-	if( !strcmp( self->meshType, "unknown" ) ) {
-		fprintf( stderr, "Remesher: Unknown mesh type.\n" );
-		assert( 0 );
-	}
+   self->mesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, "mesh", Mesh, True, data );
 }
 
+void _Remesher_Build( void* remesher, void* data ) {
+   Remesher*	self = (Remesher*)remesher;
 
-void _Remesher_Build( void* remesher, void* data ) {
-	Remesher*	self = (Remesher*)remesher;
+   assert( self );
+   assert( self->mesh );
 
-	assert( self );
-
-	if( !self->meshType ) {
-		return;
-	}
-
-	assert( self->mesh );
-
-	/* Build the mesh. */
-	Stg_Component_Build( self->mesh, NULL, False );
-	Remesher_SetMesh( self, self->mesh );
+   /* Build the mesh. */
+   Stg_Component_Build( self->mesh, NULL, False );
 }
 
+void _Remesher_Initialise( void* remesher, void* data ) {
+   Remesher*	self = (Remesher*)remesher;
 
-void _Remesher_Initialise( void* remesher, void* data ) {
-	Remesher*	self = (Remesher*)remesher;
-
-	assert( self );
+   assert( self );
 }
 
+void _Remesher_Execute( void* remesher, void* data ) {
+   Remesher*	self = (Remesher*)remesher;
 
-void _Remesher_Execute( void* remesher, void* data ) {
-	Remesher*	self = (Remesher*)remesher;
-
-	assert( self );
-	assert( self->mesh );
+   assert( self );
 }
 
+void _Remesher_Destroy( void* remesher, void* data ) {
+   Remesher*	self = (Remesher*)remesher;
 
-void _Remesher_Destroy( void* remesher, void* data ) {
-	Remesher*	self = (Remesher*)remesher;
+   assert( self );
 
-	assert( self );
-
-	/* TODO: If delete deletes, what does destroy do? */
+   /* TODO: If delete deletes, what does destroy do? */
 }
 
 
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
+/*
+** Public Functions */
diff -r af4a5d7869ea -r ef6976a2e48a Utils/src/Remesher.h
--- a/Utils/src/Remesher.h	Tue Aug 05 06:17:01 2008 +0000
+++ b/Utils/src/Remesher.h	Tue Aug 05 06:17:57 2008 +0000
@@ -1,6 +1,7 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 **
-** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street, Melbourne, 3053, Australia.
+** Copyright (C), 2003, Victorian Partnership for Advanced Computing (VPAC) Ltd,
+** 110 Victoria Street, Melbourne, 3053, Australia.
 **
 ** Authors:
 **	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
@@ -24,8 +25,6 @@
 **  License along with this library; if not, write to the Free Software
 **  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 **
-*/
-/** \file
 **  Role:
 **
 ** Assumptions:
@@ -36,91 +35,59 @@
 **
 ** $Id: Remesher.h 2225 1970-01-02 13:48:23Z LukeHodkinson $
 **
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
 #ifndef __StGermain_Domain_Utils_Remesher_h__
 #define __StGermain_Domain_Utils_Remesher_h__
 
-	/* Textual name of this class. */
-	extern const Type Remesher_Type;
+/* Textual name of this class. */
+extern const Type Remesher_Type;
 
-	/* Virtual function types. */
-	typedef void (Remesher_SetMeshFunc)( void* remesher, Mesh* mesh );
+/* Virtual function types. */
+typedef void (Remesher_RemeshFunc)( void* _self );
 
-	/* Class contents. */
-	#define __Remesher					\
-		/* General info */				\
-		__Stg_Component					\
-								\
-		/* Virtual info */				\
-		Remesher_SetMeshFunc*	setMeshFunc;		\
-								\
-		/* Remesher info ... */				\
-		char*			meshType;		\
-		Mesh*			mesh;			\
-		MPI_Comm		comm;
+/* Class contents. */
+#define __Remesher                              \
+  __Stg_Component                               \
+  Remesher_RemeshFunc*	remeshFunc;		\
+  Mesh* mesh;
 
-	struct Remesher { __Remesher };
+struct Remesher { __Remesher };
 
 
-	/*-----------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
+/*
+** Constructors */
 
-	#define CLASS_ARGS					\
-		SizeT				_sizeOfSelf,	\
-		Type				type,		\
-		Stg_Class_DeleteFunction*	_delete,	\
-		Stg_Class_PrintFunction*	_print, 	\
-		Stg_Class_CopyFunction*		_copy
+#define REMESHER_ARGS				\
+  STG_COMPONENT_DEFARGS,                        \
+    Remesher_RemeshFunc* remeshFunc
 
-	#define COMPONENT_ARGS								\
-		Stg_Component_DefaultConstructorFunction*	_defaultConstructor,	\
-		Stg_Component_ConstructFunction*		_construct, 		\
-		Stg_Component_BuildFunction*			_build, 		\
-		Stg_Component_InitialiseFunction*		_initialise, 		\
-		Stg_Component_ExecuteFunction*			_execute, 		\
-		Stg_Component_DestroyFunction*			_destroy, 		\
-		Name						name, 			\
-		Bool						initFlag
+#define REMESHER_PASSARGS                       \
+  STG_COMPONENT_PASSARGS, remeshFunc
 
-	#define REMESHER_ARGS				\
-		Remesher_SetMeshFunc*	setMeshFunc
 
+Remesher* _Remesher_New( REMESHER_ARGS );
+void _Remesher_Init( Remesher* self );
 
-	/* Creation implementation */
-	Remesher* _Remesher_New( CLASS_ARGS, 
-				 COMPONENT_ARGS, 
-				 REMESHER_ARGS );
 
-	/* Initialisation implementation functions */
-	void _Remesher_Init( Remesher* self );
+/*
+** Virtual functions */
 
+void _Remesher_Delete( void* remesher );
+void _Remesher_Print( void* remesher, Stream* stream );
+Remesher* _Remesher_DefaultNew( Name name );
+void _Remesher_Construct( void* remesher, Stg_ComponentFactory* cf, void* data );
+void _Remesher_Build( void* remesher, void* data );
+void _Remesher_Initialise( void* remesher, void* data );
+void _Remesher_Execute( void* remesher, void* data );
+void _Remesher_Destroy( void* remesher, void* data );
 
-	/*-----------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
 
-	void _Remesher_Delete( void* remesher );
-	void _Remesher_Print( void* remesher, Stream* stream );
-	Remesher* _Remesher_DefaultNew( Name name );
-	void _Remesher_Construct( void* remesher, Stg_ComponentFactory* cf, void* data );
-	void _Remesher_Build( void* remesher, void* data );
-	void _Remesher_Initialise( void* remesher, void* data );
-	void _Remesher_Execute( void* remesher, void* data );
-	void _Remesher_Destroy( void* remesher, void* data );
+/*
+** Public functions */
 
+#define Remesher_Remesh( self)                  \
+  (self)->reshFunc( self )
 
-	/*-----------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	#define Remesher_SetMesh( self, mesh )		\
-		(self)->setMeshFunc( self, mesh )
-
-
-	/*-----------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
 
 #endif



More information about the CIG-COMMITS mailing list