[cig-commits] commit: Rename Inner2DGenerator to InnerGenerator since it handles 2D and 3D

Mercurial hg at geodynamics.org
Sun Oct 2 15:18:41 PDT 2011


changeset:   802:4ebd3e1473df
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Sun Oct 02 15:17:06 2011 -0700
files:       Apps/StgFEM_Components/LinearInnerMesh.xml Discretisation/src/Discretisation.h Discretisation/src/Init.cxx Discretisation/src/Inner2DGenerator.cxx Discretisation/src/Inner2DGenerator.h Discretisation/src/Inner2DGenerator.meta Discretisation/src/InnerGenerator.cxx Discretisation/src/InnerGenerator.h Discretisation/src/InnerGenerator.meta Discretisation/src/types.h
description:
Rename Inner2DGenerator to InnerGenerator since it handles 2D and 3D


diff -r df953fda3eb6 -r 4ebd3e1473df Apps/StgFEM_Components/LinearInnerMesh.xml
--- a/Apps/StgFEM_Components/LinearInnerMesh.xml	Sun Oct 02 11:01:01 2011 -0700
+++ b/Apps/StgFEM_Components/LinearInnerMesh.xml	Sun Oct 02 15:17:06 2011 -0700
@@ -11,7 +11,7 @@
     </struct>
 
     <struct name="linearInnerMeshGenerator">
-      <param name="Type">Inner2DGenerator</param>
+      <param name="Type">InnerGenerator</param>
       <param name="mesh">linearInnerMesh</param>
       <param name="elementMesh">elementMesh</param>
       <param name="dims">dim</param>
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/Discretisation.h
--- a/Discretisation/src/Discretisation.h	Sun Oct 02 11:01:01 2011 -0700
+++ b/Discretisation/src/Discretisation.h	Sun Oct 02 15:17:06 2011 -0700
@@ -83,7 +83,7 @@
 	#include "FeMesh.h"
 	#include "C0Generator.h"
 	#include "C2Generator.h"
-	#include "Inner2DGenerator.h"
+	#include "InnerGenerator.h"
 	#include "LinkedDofInfo.h"
 	#include "FeEquationNumber.h"
 	#include "FeVariable.h"
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/Init.cxx
--- a/Discretisation/src/Init.cxx	Sun Oct 02 11:01:01 2011 -0700
+++ b/Discretisation/src/Init.cxx	Sun Oct 02 15:17:06 2011 -0700
@@ -90,7 +90,7 @@ Bool StgFEM_Discretisation_Init( int* ar
                                    (Stg_Component_DefaultConstructorFunction*)C0Generator_New  );
 	Stg_ComponentRegister_Add( componentRegister, C2Generator_Type, (Name)"0",
                                    (Stg_Component_DefaultConstructorFunction*)C2Generator_New  );
-	Stg_ComponentRegister_Add( componentRegister, Inner2DGenerator_Type, (Name)"0", (Stg_Component_DefaultConstructorFunction*)Inner2DGenerator_New  );
+	Stg_ComponentRegister_Add( componentRegister, InnerGenerator_Type, (Name)"0", (Stg_Component_DefaultConstructorFunction*)InnerGenerator_New  );
 	Stg_ComponentRegister_Add( componentRegister, FieldTest_Type, (Name)"0", _FieldTest_DefaultNew  );
 	
 	/** Register Parents for type checking */
@@ -111,7 +111,7 @@ Bool StgFEM_Discretisation_Init( int* ar
 	RegisterParent( FeMesh_Type, Mesh_Type );
 	RegisterParent( C0Generator_Type, MeshGenerator_Type );
 	RegisterParent( C2Generator_Type, CartesianGenerator_Type );
-	RegisterParent( Inner2DGenerator_Type, MeshGenerator_Type );
+	RegisterParent( InnerGenerator_Type, MeshGenerator_Type );
 	
 	RegisterParent( FeVariable_Type, FieldVariable_Type );
 	RegisterParent( OperatorFeVariable_Type, FeVariable_Type );
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/Inner2DGenerator.cxx
--- a/Discretisation/src/Inner2DGenerator.cxx	Sun Oct 02 11:01:01 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,392 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** 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)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  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: Inner2DGenerator.c 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <mpi.h>
-
-#include <StGermain/StGermain.h>
-#include <StgDomain/StgDomain.h>
-#include "Discretisation.h"
-
-
-/* Textual name of this class */
-const Type Inner2DGenerator_Type = "Inner2DGenerator";
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Constructors
-*/
-
-Inner2DGenerator* Inner2DGenerator_New( Name name, AbstractContext* context ) {
-	/* Variables set in this function */
-	SizeT                                              _sizeOfSelf = sizeof(Inner2DGenerator);
-	Type                                                      type = Inner2DGenerator_Type;
-	Stg_Class_DeleteFunction*                              _delete = _Inner2DGenerator_Delete;
-	Stg_Class_PrintFunction*                                _print = _Inner2DGenerator_Print;
-	Stg_Class_CopyFunction*                                  _copy = NULL;
-	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (void* (*)(Name))_Inner2DGenerator_New;
-	Stg_Component_ConstructFunction*                    _construct = _Inner2DGenerator_AssignFromXML;
-	Stg_Component_BuildFunction*                            _build = _Inner2DGenerator_Build;
-	Stg_Component_InitialiseFunction*                  _initialise = _Inner2DGenerator_Initialise;
-	Stg_Component_ExecuteFunction*                        _execute = _Inner2DGenerator_Execute;
-	Stg_Component_DestroyFunction*                        _destroy = NULL;
-	AllocationType                              nameAllocationType = NON_GLOBAL;
-	MeshGenerator_SetDimSizeFunc*                   setDimSizeFunc = _MeshGenerator_SetDimSize;
-	MeshGenerator_GenerateFunc*                       generateFunc = (MeshGenerator_GenerateFunc*)Inner2DGenerator_Generate;
-
-	Inner2DGenerator* self = _Inner2DGenerator_New(  INNER2DGENERATOR_PASSARGS  );
-
-   _MeshGenerator_Init( (MeshGenerator*)self, context );
-   _Inner2DGenerator_Init( self );
-
-   return self;
-}
-
-Inner2DGenerator* _Inner2DGenerator_New(  INNER2DGENERATOR_DEFARGS  ) {
-	Inner2DGenerator*	self;
-
-	/* Allocate memory */
-	assert( _sizeOfSelf >= sizeof(Inner2DGenerator) );
-	self = (Inner2DGenerator*)_MeshGenerator_New(  MESHGENERATOR_PASSARGS  );
-
-	return self;
-}
-
-void _Inner2DGenerator_Init( Inner2DGenerator* self ) {
-	assert( self && Stg_CheckType( self, Inner2DGenerator ) );
-
-	self->elMesh = NULL;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Virtual functions
-*/
-
-void _Inner2DGenerator_Delete( void* generator ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-
-	/* Delete the parent. */
-	_MeshGenerator_Delete( self );
-}
-
-void _Inner2DGenerator_Print( void* generator, Stream* stream ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-	
-	/* Set the Journal for printing informations */
-	Stream* generatorStream;
-	generatorStream = Journal_Register( InfoStream_Type, (Name)"Inner2DGeneratorStream"  );
-
-	/* Print parent */
-	Journal_Printf( stream, "Inner2DGenerator (ptr): (%p)\n", self );
-	_MeshGenerator_Print( self, stream );
-}
-
-void _Inner2DGenerator_AssignFromXML( void* generator, Stg_ComponentFactory* cf, void* data ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-	Mesh*		elMesh;
-
-	assert( self );
-	assert( cf );
-
-	_MeshGenerator_AssignFromXML( self, cf, data );
-
-	elMesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, (Dictionary_Entry_Key)"elementMesh", Mesh, True, data  );
-	Inner2DGenerator_SetElementMesh( self, elMesh );
-}
-
-void _Inner2DGenerator_Build( void* generator, void* data ) {
-	_MeshGenerator_Build( generator, data );
-}
-
-void _Inner2DGenerator_Initialise( void* generator, void* data ) {
-	_MeshGenerator_Initialise( generator, data );
-}
-
-void _Inner2DGenerator_Execute( void* generator, void* data ) {
-}
-
-void _Inner2DGenerator_Destroy( void* generator, void* data ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-
-   Stg_Component_Destroy( self->elMesh, data, False );
-   _MeshGenerator_Destroy( self, data );
-}
-
-void Inner2DGenerator_Generate( void* generator, void* _mesh ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-	FeMesh*		mesh = (FeMesh*)_mesh;
-	Grid**		grid;
-	Grid*		elGrid;
-
-	assert( self && Stg_CheckType( self, Inner2DGenerator ) );
-	assert( mesh && Stg_CheckType( mesh, FeMesh ) );
-
-	Inner2DGenerator_BuildTopology( self, mesh );
-	Inner2DGenerator_BuildGeometry( self, mesh );
-	Inner2DGenerator_BuildElementTypes( self, mesh );
-
-	elGrid = *(Grid**)ExtensionManager_Get( self->elMesh->info, self->elMesh, 
-					       ExtensionManager_GetHandle( self->elMesh->info, (Name)"elementGrid" )  );
-	ExtensionManager_Add( mesh->info, (Name)"elementGrid", sizeof(Grid*) );
-	grid = (Grid** )ExtensionManager_Get( mesh->info, mesh, 
-					     ExtensionManager_GetHandle( mesh->info, (Name)"elementGrid" ) );
-	*grid = Grid_New( );
-	Grid_SetNumDims( *grid, elGrid->nDims );
-	Grid_SetSizes( *grid, elGrid->sizes );
-}
-
-
-/*--------------------------------------------------------------------------------------------------------------------------
-** Public Functions
-*/
-
-void Inner2DGenerator_SetElementMesh( void* generator, void* mesh ) {
-	Inner2DGenerator*	self = (Inner2DGenerator*)generator;
-
-	assert( self && Stg_CheckType( self, Inner2DGenerator ) );
-
-	self->elMesh = (Mesh*)mesh;
-}
-
-
-/*----------------------------------------------------------------------------------------------------------------------------------
-** Private Functions
-*/
-
-void Inner2DGenerator_BuildTopology( Inner2DGenerator* self, FeMesh* mesh ) {
-	Mesh*		elMesh;
-	MeshTopology	*topo, *elTopo;
-	unsigned	nDims;
-	unsigned	nIncEls, *incEls;
-	unsigned	nDomainEls;
-	Decomp		*elDecomp, *nodeDecomp;
-	Sync		*elSync, *nodeSync;
-	int		nLocals, *locals;
-	int		nRemotes, *remotes;
-	unsigned	global;
-	unsigned	e_i, l_i, r_i;
-
-	assert( self );
-	assert( mesh );
-
-	elMesh = self->elMesh;
-	nDims = Mesh_GetDimSize( elMesh );
-	elTopo = Mesh_GetTopology( elMesh );
-	elSync = Mesh_GetSync( elMesh, (MeshTopology_Dim)nDims );
-
-	topo = Mesh_GetTopology( mesh );
-	MeshTopology_SetComm( topo, MeshTopology_GetComm( elTopo ) );
-	MeshTopology_SetNumDims( topo, nDims );
-	IGraph_SetDomain( topo, nDims, elSync );
-
-	/* Need to redefine the nodes, nDims + 1 per parent element. */
-	elDecomp = (Decomp*)Sync_GetDecomp( elSync );
-	nodeDecomp = Decomp_New();
-
-	if( nDims == 2 ) {
-		nLocals = Decomp_GetNumLocals( elDecomp ) * 3;
-		locals = MemArray( int, nLocals, Inner2DGenerator_Type );
-		for( l_i = 0; l_i < Decomp_GetNumLocals( elDecomp ); l_i++ ) {
-			global = Decomp_LocalToGlobal( elDecomp, l_i );
-			locals[l_i * 3 + 0] = global * 3;
-			locals[l_i * 3 + 1] = global * 3 + 1;
-			locals[l_i * 3 + 2] = global * 3 + 2;
-		}
-	}
-	else if( nDims == 3 ) {
-		nLocals = Decomp_GetNumLocals( elDecomp ) * 4;
-		locals = MemArray( int, nLocals, Inner2DGenerator_Type );
-		for( l_i = 0; l_i < Decomp_GetNumLocals( elDecomp ); l_i++ ) {
-			global = Decomp_LocalToGlobal( elDecomp, l_i );
-			locals[l_i * 4 + 0] = global * 4;
-			locals[l_i * 4 + 1] = global * 4 + 1;
-			locals[l_i * 4 + 2] = global * 4 + 2;
-			locals[l_i * 4 + 3] = global * 4 + 3;
-		}
-	}
-	Decomp_SetLocals( nodeDecomp, nLocals, locals );
-	MemFree( locals );
-
-	nodeSync = Sync_New();
-	Sync_SetComm( nodeSync, Sync_GetComm( elSync ) );
-	Sync_SetDecomp( nodeSync, nodeDecomp );
-
-	if( nDims == 2 ) {
-		nRemotes = Sync_GetNumRemotes( elSync ) * 3;
-		remotes = MemArray( int, nRemotes, Inner2DGenerator_Type );
-		for( r_i = 0; r_i < Sync_GetNumRemotes( elSync ); r_i++ ) {
-			global = Sync_RemoteToGlobal( elSync, r_i );
-			remotes[r_i * 3 + 0] = global * 3;
-			remotes[r_i * 3 + 1] = global * 3 + 1;
-			remotes[r_i * 3 + 2] = global * 3 + 2;
-		}
-	}
-	else if( nDims == 3 ) {
-		nRemotes = Sync_GetNumRemotes( elSync ) * 4;
-		remotes = MemArray( int, nRemotes, Inner2DGenerator_Type );
-		for( r_i = 0; r_i < Sync_GetNumRemotes( elSync ); r_i++ ) {
-			global = Sync_RemoteToGlobal( elSync, r_i );
-			remotes[r_i * 4 + 0] = global * 4;
-			remotes[r_i * 4 + 1] = global * 4 + 1;
-			remotes[r_i * 4 + 2] = global * 4 + 2;
-			remotes[r_i * 4 + 3] = global * 4 + 3;
-		}
-	}
-	Sync_SetRemotes( nodeSync, nRemotes, remotes );
-	MemFree( remotes );
-
-	IGraph_SetDomain( topo, 0, nodeSync );
-
-	/* Same shadow depth. */
-	topo->shadDepth = elTopo->shadDepth;
-
-	/* Build the incidence. */
-	nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
-	if( nDims == 2 ) {
-		nIncEls = 3;
-		incEls = MemArray( unsigned, 3, Inner2DGenerator_Type );
-		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
-			incEls[0] = e_i * 3;
-			incEls[1] = e_i * 3 + 1;
-			incEls[2] = e_i * 3 + 2;
-			IGraph_SetIncidence( topo, nDims, e_i, 0, nIncEls, (int*)incEls );
-		}
-	}
-	else if( nDims == 3 ) {
-		nIncEls = 4;
-		incEls = MemArray( unsigned, 4, Inner2DGenerator_Type );
-		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
-			incEls[0] = e_i * 4;
-			incEls[1] = e_i * 4 + 1;
-			incEls[2] = e_i * 4 + 2;
-			incEls[3] = e_i * 4 + 3;
-			IGraph_SetIncidence( topo, nDims, e_i, 0, nIncEls, (int*)incEls );
-		}
-	}
-	FreeArray( incEls );
-
-	IGraph_InvertIncidence( topo, MT_VERTEX, nDims );
-}
-
-void Inner2DGenerator_BuildGeometry( Inner2DGenerator* 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 );
-
-	elMesh = self->elMesh;
-	nDims = Mesh_GetDimSize( elMesh );
-	nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
-
-	if( nDims == 2 ) {
-		mesh->verts = AllocArray2D( double, nDomainEls * 3, nDims );
-		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
-			unsigned elInd = e_i * 3;
-
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[0], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd );
-			memcpy( vert, globalCrd, nDims * sizeof(double) );
-
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[1], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd + 1 );
-			memcpy( vert, globalCrd, nDims * sizeof(double) );
-
-			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[2], globalCrd );
-			vert = Mesh_GetVertex( mesh, elInd + 2 );
-			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];
-
-		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, localCrds3D[0], globalCrd3D );
-			vert = Mesh_GetVertex( mesh, elInd );
-			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 Inner2DGenerator_BuildElementTypes( Inner2DGenerator* self, FeMesh* mesh ) {
-	unsigned		nDomainEls;
-	Mesh_Algorithms*	algs;
-	unsigned		e_i;
-
-	assert( self );
-	assert( mesh );
-
-	mesh->nElTypes = 1;
-	mesh->elTypes = AllocNamedArray( Mesh_ElementType*, mesh->nElTypes, "Mesh::elTypes" );
-	mesh->elTypes[0] = (Mesh_ElementType*)Mesh_CentroidType_New();
-	Mesh_ElementType_SetMesh( mesh->elTypes[0], mesh );
-	Mesh_CentroidType_SetElementMesh( mesh->elTypes[0], self->elMesh );
-	nDomainEls = Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) );
-	mesh->elTypeMap = AllocNamedArray( unsigned, nDomainEls, "Mesh::elTypeMap" );
-	for( e_i = 0; e_i < nDomainEls; e_i++ )
-		mesh->elTypeMap[e_i] = 0;
-
-	algs = (Mesh_Algorithms*)Mesh_CentroidAlgorithms_New( "", NULL );
-	Mesh_CentroidAlgorithms_SetElementMesh( algs, self->elMesh );
-	Mesh_SetAlgorithms( mesh, algs );
-}
-
-
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/Inner2DGenerator.h
--- a/Discretisation/src/Inner2DGenerator.h	Sun Oct 02 11:01:01 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**
-** 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)
-**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
-**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
-**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
-**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
-**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
-**
-**  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
-**
-*/
-/** \file
-**  Role:
-**
-** Assumptions:
-**
-** Invariants:
-**
-** Comments:
-**
-** $Id: Inner2DGenerator.h 3584 2006-05-16 11:11:07Z PatrickSunter $
-**
-**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
-
-#ifndef __StgFEM_Discretisaton_Inner2DGenerator_h__
-#define __StgFEM_Discretisaton_Inner2DGenerator_h__
-
-	/** Textual name of this class */
-	extern const Type Inner2DGenerator_Type;
-
-	/** Virtual function types */
-
-	/** Inner2DGenerator class contents */
-	#define __Inner2DGenerator		\
-		/* General info */		\
-		__MeshGenerator			\
-						\
-		/* Virtual info */		\
-						\
-		/* Inner2DGenerator info */		\
-		Mesh*		elMesh;
-
-	struct Inner2DGenerator { __Inner2DGenerator };
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Constructors
-	*/
-
-
-
-	
-	#ifndef ZERO
-	#define ZERO 0
-	#endif
-
-	#define INNER2DGENERATOR_DEFARGS \
-                MESHGENERATOR_DEFARGS
-
-	#define INNER2DGENERATOR_PASSARGS \
-                MESHGENERATOR_PASSARGS
-
-	Inner2DGenerator* Inner2DGenerator_New( Name name, AbstractContext* context );
-	Inner2DGenerator* _Inner2DGenerator_New(  INNER2DGENERATOR_DEFARGS  );
-	void _Inner2DGenerator_Init( Inner2DGenerator* self );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Virtual functions
-	*/
-
-	void _Inner2DGenerator_Delete( void* generator );
-	void _Inner2DGenerator_Print( void* generator, Stream* stream );
-	void _Inner2DGenerator_AssignFromXML( void* generator, Stg_ComponentFactory* cf, void* data );
-	void _Inner2DGenerator_Build( void* generator, void* data );
-	void _Inner2DGenerator_Initialise( void* generator, void* data );
-	void _Inner2DGenerator_Execute( void* generator, void* data );
-	void _Inner2DGenerator_Destroy( void* generator, void* data );
-
-	void Inner2DGenerator_Generate( void* generator, void* _mesh );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Public functions
-	*/
-
-	void Inner2DGenerator_SetElementMesh( void* generator, void* mesh );
-
-	/*--------------------------------------------------------------------------------------------------------------------------
-	** Private Member functions
-	*/
-
-	void Inner2DGenerator_BuildTopology( Inner2DGenerator* self, FeMesh* mesh );
-	void Inner2DGenerator_BuildGeometry( Inner2DGenerator* self, FeMesh* mesh );
-	void Inner2DGenerator_BuildElementTypes( Inner2DGenerator* self, FeMesh* mesh );
-
-#endif /* __StgFEM_Discretisaton_Inner2DGenerator_h__ */
-
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/Inner2DGenerator.meta
--- a/Discretisation/src/Inner2DGenerator.meta	Sun Oct 02 11:01:01 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
-<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
-
-<param name="Name">Inner2DGenerator</param>
-<param name="Organisation">VPAC</param>
-<param name="Project">StgFEM</param>
-<param name="Location">./StgFEM/Discretisation/src/</param>
-<param name="Project Web">http://www.stgermainproject.org/StgFEM.html</param>
-<param name="Copyright">Copyright (C) 2004-2005 VPAC.</param>
-<param name="License">The Gnu Lesser General Public License v2.1 - http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html</param>
-<param name="Parent">MeshGenerator</param>
-<param name="Description">Generates a mesh with nodes situated at points internal to the element.</param>
-
-<!--Now the interesting stuff-->
-
-
-<list name="Params">
-
-</list>
-
-<list name="Dependencies">
-	<struct>
-		<param name="Essential">true</param>
-		<param name="Name">elementMesh</param>
-		<param name="Type">Mesh</param>
-		<param name="Description">Eulerian mesh</param>
-	</struct>
-</list>
-<!-- Add an exmaple XML if possible -->
-<param name="Example">n/a</param>
-
-</StGermainData>
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/InnerGenerator.cxx
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discretisation/src/InnerGenerator.cxx	Sun Oct 02 15:17:06 2011 -0700
@@ -0,0 +1,392 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** 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)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  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: InnerGenerator.c 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <mpi.h>
+
+#include <StGermain/StGermain.h>
+#include <StgDomain/StgDomain.h>
+#include "Discretisation.h"
+
+
+/* Textual name of this class */
+const Type InnerGenerator_Type = "InnerGenerator";
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Constructors
+*/
+
+InnerGenerator* InnerGenerator_New( Name name, AbstractContext* context ) {
+	/* Variables set in this function */
+	SizeT                                              _sizeOfSelf = sizeof(InnerGenerator);
+	Type                                                      type = InnerGenerator_Type;
+	Stg_Class_DeleteFunction*                              _delete = _InnerGenerator_Delete;
+	Stg_Class_PrintFunction*                                _print = _InnerGenerator_Print;
+	Stg_Class_CopyFunction*                                  _copy = NULL;
+	Stg_Component_DefaultConstructorFunction*  _defaultConstructor = (void* (*)(Name))_InnerGenerator_New;
+	Stg_Component_ConstructFunction*                    _construct = _InnerGenerator_AssignFromXML;
+	Stg_Component_BuildFunction*                            _build = _InnerGenerator_Build;
+	Stg_Component_InitialiseFunction*                  _initialise = _InnerGenerator_Initialise;
+	Stg_Component_ExecuteFunction*                        _execute = _InnerGenerator_Execute;
+	Stg_Component_DestroyFunction*                        _destroy = NULL;
+	AllocationType                              nameAllocationType = NON_GLOBAL;
+	MeshGenerator_SetDimSizeFunc*                   setDimSizeFunc = _MeshGenerator_SetDimSize;
+	MeshGenerator_GenerateFunc*                       generateFunc = (MeshGenerator_GenerateFunc*)InnerGenerator_Generate;
+
+	InnerGenerator* self = _InnerGenerator_New(  INNERGENERATOR_PASSARGS  );
+
+   _MeshGenerator_Init( (MeshGenerator*)self, context );
+   _InnerGenerator_Init( self );
+
+   return self;
+}
+
+InnerGenerator* _InnerGenerator_New(  INNERGENERATOR_DEFARGS  ) {
+	InnerGenerator*	self;
+
+	/* Allocate memory */
+	assert( _sizeOfSelf >= sizeof(InnerGenerator) );
+	self = (InnerGenerator*)_MeshGenerator_New(  MESHGENERATOR_PASSARGS  );
+
+	return self;
+}
+
+void _InnerGenerator_Init( InnerGenerator* self ) {
+	assert( self && Stg_CheckType( self, InnerGenerator ) );
+
+	self->elMesh = NULL;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Virtual functions
+*/
+
+void _InnerGenerator_Delete( void* generator ) {
+	InnerGenerator*	self = (InnerGenerator*)generator;
+
+	/* Delete the parent. */
+	_MeshGenerator_Delete( self );
+}
+
+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 );
+}
+
+void _InnerGenerator_AssignFromXML( void* generator, Stg_ComponentFactory* cf, void* data ) {
+	InnerGenerator*	self = (InnerGenerator*)generator;
+	Mesh*		elMesh;
+
+	assert( self );
+	assert( cf );
+
+	_MeshGenerator_AssignFromXML( self, cf, data );
+
+	elMesh = Stg_ComponentFactory_ConstructByKey( cf, self->name, (Dictionary_Entry_Key)"elementMesh", Mesh, True, data  );
+	InnerGenerator_SetElementMesh( self, elMesh );
+}
+
+void _InnerGenerator_Build( void* generator, void* data ) {
+	_MeshGenerator_Build( generator, data );
+}
+
+void _InnerGenerator_Initialise( void* generator, void* data ) {
+	_MeshGenerator_Initialise( generator, data );
+}
+
+void _InnerGenerator_Execute( void* generator, void* data ) {
+}
+
+void _InnerGenerator_Destroy( void* generator, void* data ) {
+	InnerGenerator*	self = (InnerGenerator*)generator;
+
+   Stg_Component_Destroy( self->elMesh, data, False );
+   _MeshGenerator_Destroy( self, data );
+}
+
+void InnerGenerator_Generate( void* generator, void* _mesh ) {
+	InnerGenerator*	self = (InnerGenerator*)generator;
+	FeMesh*		mesh = (FeMesh*)_mesh;
+	Grid**		grid;
+	Grid*		elGrid;
+
+	assert( self && Stg_CheckType( self, InnerGenerator ) );
+	assert( mesh && Stg_CheckType( mesh, FeMesh ) );
+
+	InnerGenerator_BuildTopology( self, mesh );
+	InnerGenerator_BuildGeometry( self, mesh );
+	InnerGenerator_BuildElementTypes( self, mesh );
+
+	elGrid = *(Grid**)ExtensionManager_Get( self->elMesh->info, self->elMesh, 
+					       ExtensionManager_GetHandle( self->elMesh->info, (Name)"elementGrid" )  );
+	ExtensionManager_Add( mesh->info, (Name)"elementGrid", sizeof(Grid*) );
+	grid = (Grid** )ExtensionManager_Get( mesh->info, mesh, 
+					     ExtensionManager_GetHandle( mesh->info, (Name)"elementGrid" ) );
+	*grid = Grid_New( );
+	Grid_SetNumDims( *grid, elGrid->nDims );
+	Grid_SetSizes( *grid, elGrid->sizes );
+}
+
+
+/*--------------------------------------------------------------------------------------------------------------------------
+** Public Functions
+*/
+
+void InnerGenerator_SetElementMesh( void* generator, void* mesh ) {
+	InnerGenerator*	self = (InnerGenerator*)generator;
+
+	assert( self && Stg_CheckType( self, InnerGenerator ) );
+
+	self->elMesh = (Mesh*)mesh;
+}
+
+
+/*----------------------------------------------------------------------------------------------------------------------------------
+** Private Functions
+*/
+
+void InnerGenerator_BuildTopology( InnerGenerator* self, FeMesh* mesh ) {
+	Mesh*		elMesh;
+	MeshTopology	*topo, *elTopo;
+	unsigned	nDims;
+	unsigned	nIncEls, *incEls;
+	unsigned	nDomainEls;
+	Decomp		*elDecomp, *nodeDecomp;
+	Sync		*elSync, *nodeSync;
+	int		nLocals, *locals;
+	int		nRemotes, *remotes;
+	unsigned	global;
+	unsigned	e_i, l_i, r_i;
+
+	assert( self );
+	assert( mesh );
+
+	elMesh = self->elMesh;
+	nDims = Mesh_GetDimSize( elMesh );
+	elTopo = Mesh_GetTopology( elMesh );
+	elSync = Mesh_GetSync( elMesh, (MeshTopology_Dim)nDims );
+
+	topo = Mesh_GetTopology( mesh );
+	MeshTopology_SetComm( topo, MeshTopology_GetComm( elTopo ) );
+	MeshTopology_SetNumDims( topo, nDims );
+	IGraph_SetDomain( topo, nDims, elSync );
+
+	/* Need to redefine the nodes, nDims + 1 per parent element. */
+	elDecomp = (Decomp*)Sync_GetDecomp( elSync );
+	nodeDecomp = Decomp_New();
+
+	if( nDims == 2 ) {
+		nLocals = Decomp_GetNumLocals( elDecomp ) * 3;
+		locals = MemArray( int, nLocals, InnerGenerator_Type );
+		for( l_i = 0; l_i < Decomp_GetNumLocals( elDecomp ); l_i++ ) {
+			global = Decomp_LocalToGlobal( elDecomp, l_i );
+			locals[l_i * 3 + 0] = global * 3;
+			locals[l_i * 3 + 1] = global * 3 + 1;
+			locals[l_i * 3 + 2] = global * 3 + 2;
+		}
+	}
+	else if( nDims == 3 ) {
+		nLocals = Decomp_GetNumLocals( elDecomp ) * 4;
+		locals = MemArray( int, nLocals, InnerGenerator_Type );
+		for( l_i = 0; l_i < Decomp_GetNumLocals( elDecomp ); l_i++ ) {
+			global = Decomp_LocalToGlobal( elDecomp, l_i );
+			locals[l_i * 4 + 0] = global * 4;
+			locals[l_i * 4 + 1] = global * 4 + 1;
+			locals[l_i * 4 + 2] = global * 4 + 2;
+			locals[l_i * 4 + 3] = global * 4 + 3;
+		}
+	}
+	Decomp_SetLocals( nodeDecomp, nLocals, locals );
+	MemFree( locals );
+
+	nodeSync = Sync_New();
+	Sync_SetComm( nodeSync, Sync_GetComm( elSync ) );
+	Sync_SetDecomp( nodeSync, nodeDecomp );
+
+	if( nDims == 2 ) {
+		nRemotes = Sync_GetNumRemotes( elSync ) * 3;
+		remotes = MemArray( int, nRemotes, InnerGenerator_Type );
+		for( r_i = 0; r_i < Sync_GetNumRemotes( elSync ); r_i++ ) {
+			global = Sync_RemoteToGlobal( elSync, r_i );
+			remotes[r_i * 3 + 0] = global * 3;
+			remotes[r_i * 3 + 1] = global * 3 + 1;
+			remotes[r_i * 3 + 2] = global * 3 + 2;
+		}
+	}
+	else if( nDims == 3 ) {
+		nRemotes = Sync_GetNumRemotes( elSync ) * 4;
+		remotes = MemArray( int, nRemotes, InnerGenerator_Type );
+		for( r_i = 0; r_i < Sync_GetNumRemotes( elSync ); r_i++ ) {
+			global = Sync_RemoteToGlobal( elSync, r_i );
+			remotes[r_i * 4 + 0] = global * 4;
+			remotes[r_i * 4 + 1] = global * 4 + 1;
+			remotes[r_i * 4 + 2] = global * 4 + 2;
+			remotes[r_i * 4 + 3] = global * 4 + 3;
+		}
+	}
+	Sync_SetRemotes( nodeSync, nRemotes, remotes );
+	MemFree( remotes );
+
+	IGraph_SetDomain( topo, 0, nodeSync );
+
+	/* Same shadow depth. */
+	topo->shadDepth = elTopo->shadDepth;
+
+	/* Build the incidence. */
+	nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
+	if( nDims == 2 ) {
+		nIncEls = 3;
+		incEls = MemArray( unsigned, 3, InnerGenerator_Type );
+		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
+			incEls[0] = e_i * 3;
+			incEls[1] = e_i * 3 + 1;
+			incEls[2] = e_i * 3 + 2;
+			IGraph_SetIncidence( topo, nDims, e_i, 0, nIncEls, (int*)incEls );
+		}
+	}
+	else if( nDims == 3 ) {
+		nIncEls = 4;
+		incEls = MemArray( unsigned, 4, InnerGenerator_Type );
+		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
+			incEls[0] = e_i * 4;
+			incEls[1] = e_i * 4 + 1;
+			incEls[2] = e_i * 4 + 2;
+			incEls[3] = e_i * 4 + 3;
+			IGraph_SetIncidence( topo, nDims, e_i, 0, nIncEls, (int*)incEls );
+		}
+	}
+	FreeArray( incEls );
+
+	IGraph_InvertIncidence( topo, MT_VERTEX, nDims );
+}
+
+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 );
+
+	elMesh = self->elMesh;
+	nDims = Mesh_GetDimSize( elMesh );
+	nDomainEls = Mesh_GetDomainSize( elMesh, (MeshTopology_Dim)nDims );
+
+	if( nDims == 2 ) {
+		mesh->verts = AllocArray2D( double, nDomainEls * 3, nDims );
+		for( e_i = 0; e_i < nDomainEls; e_i++ ) {
+			unsigned elInd = e_i * 3;
+
+			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[0], globalCrd );
+			vert = Mesh_GetVertex( mesh, elInd );
+			memcpy( vert, globalCrd, nDims * sizeof(double) );
+
+			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[1], globalCrd );
+			vert = Mesh_GetVertex( mesh, elInd + 1 );
+			memcpy( vert, globalCrd, nDims * sizeof(double) );
+
+			FeMesh_CoordLocalToGlobal( elMesh, e_i, localCrds[2], globalCrd );
+			vert = Mesh_GetVertex( mesh, elInd + 2 );
+			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];
+
+		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, localCrds3D[0], globalCrd3D );
+			vert = Mesh_GetVertex( mesh, elInd );
+			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;
+	Mesh_Algorithms*	algs;
+	unsigned		e_i;
+
+	assert( self );
+	assert( mesh );
+
+	mesh->nElTypes = 1;
+	mesh->elTypes = AllocNamedArray( Mesh_ElementType*, mesh->nElTypes, "Mesh::elTypes" );
+	mesh->elTypes[0] = (Mesh_ElementType*)Mesh_CentroidType_New();
+	Mesh_ElementType_SetMesh( mesh->elTypes[0], mesh );
+	Mesh_CentroidType_SetElementMesh( mesh->elTypes[0], self->elMesh );
+	nDomainEls = Mesh_GetDomainSize( mesh, Mesh_GetDimSize( mesh ) );
+	mesh->elTypeMap = AllocNamedArray( unsigned, nDomainEls, "Mesh::elTypeMap" );
+	for( e_i = 0; e_i < nDomainEls; e_i++ )
+		mesh->elTypeMap[e_i] = 0;
+
+	algs = (Mesh_Algorithms*)Mesh_CentroidAlgorithms_New( "", NULL );
+	Mesh_CentroidAlgorithms_SetElementMesh( algs, self->elMesh );
+	Mesh_SetAlgorithms( mesh, algs );
+}
+
+
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/InnerGenerator.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discretisation/src/InnerGenerator.h	Sun Oct 02 15:17:06 2011 -0700
@@ -0,0 +1,111 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** 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)
+**	Patrick D. Sunter, Software Engineer, VPAC. (pds at vpac.org)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Siew-Ching Tan, Software Engineer, VPAC. (siew at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**
+**  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
+**
+*/
+/** \file
+**  Role:
+**
+** Assumptions:
+**
+** Invariants:
+**
+** Comments:
+**
+** $Id: InnerGenerator.h 3584 2006-05-16 11:11:07Z PatrickSunter $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+#ifndef __StgFEM_Discretisaton_InnerGenerator_h__
+#define __StgFEM_Discretisaton_InnerGenerator_h__
+
+	/** Textual name of this class */
+	extern const Type InnerGenerator_Type;
+
+	/** Virtual function types */
+
+	/** InnerGenerator class contents */
+	#define __InnerGenerator		\
+		/* General info */		\
+		__MeshGenerator			\
+						\
+		/* Virtual info */		\
+						\
+		/* InnerGenerator info */		\
+		Mesh*		elMesh;
+
+	struct InnerGenerator { __InnerGenerator };
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Constructors
+	*/
+
+
+
+	
+	#ifndef ZERO
+	#define ZERO 0
+	#endif
+
+	#define INNERGENERATOR_DEFARGS \
+                MESHGENERATOR_DEFARGS
+
+	#define INNERGENERATOR_PASSARGS \
+                MESHGENERATOR_PASSARGS
+
+	InnerGenerator* InnerGenerator_New( Name name, AbstractContext* context );
+	InnerGenerator* _InnerGenerator_New(  INNERGENERATOR_DEFARGS  );
+	void _InnerGenerator_Init( InnerGenerator* self );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Virtual functions
+	*/
+
+	void _InnerGenerator_Delete( void* generator );
+	void _InnerGenerator_Print( void* generator, Stream* stream );
+	void _InnerGenerator_AssignFromXML( void* generator, Stg_ComponentFactory* cf, void* data );
+	void _InnerGenerator_Build( void* generator, void* data );
+	void _InnerGenerator_Initialise( void* generator, void* data );
+	void _InnerGenerator_Execute( void* generator, void* data );
+	void _InnerGenerator_Destroy( void* generator, void* data );
+
+	void InnerGenerator_Generate( void* generator, void* _mesh );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Public functions
+	*/
+
+	void InnerGenerator_SetElementMesh( void* generator, void* mesh );
+
+	/*--------------------------------------------------------------------------------------------------------------------------
+	** Private Member functions
+	*/
+
+	void InnerGenerator_BuildTopology( InnerGenerator* self, FeMesh* mesh );
+	void InnerGenerator_BuildGeometry( InnerGenerator* self, FeMesh* mesh );
+	void InnerGenerator_BuildElementTypes( InnerGenerator* self, FeMesh* mesh );
+
+#endif /* __StgFEM_Discretisaton_InnerGenerator_h__ */
+
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/InnerGenerator.meta
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discretisation/src/InnerGenerator.meta	Sun Oct 02 15:17:06 2011 -0700
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">InnerGenerator</param>
+<param name="Organisation">VPAC</param>
+<param name="Project">StgFEM</param>
+<param name="Location">./StgFEM/Discretisation/src/</param>
+<param name="Project Web">http://www.stgermainproject.org/StgFEM.html</param>
+<param name="Copyright">Copyright (C) 2004-2005 VPAC.</param>
+<param name="License">The Gnu Lesser General Public License v2.1 - http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html</param>
+<param name="Parent">MeshGenerator</param>
+<param name="Description">Generates a mesh with nodes situated at points internal to the element.</param>
+
+<!--Now the interesting stuff-->
+
+
+<list name="Params">
+
+</list>
+
+<list name="Dependencies">
+	<struct>
+		<param name="Essential">true</param>
+		<param name="Name">elementMesh</param>
+		<param name="Type">Mesh</param>
+		<param name="Description">Eulerian mesh</param>
+	</struct>
+</list>
+<!-- Add an exmaple XML if possible -->
+<param name="Example">n/a</param>
+
+</StGermainData>
diff -r df953fda3eb6 -r 4ebd3e1473df Discretisation/src/types.h
--- a/Discretisation/src/types.h	Sun Oct 02 11:01:01 2011 -0700
+++ b/Discretisation/src/types.h	Sun Oct 02 15:17:06 2011 -0700
@@ -67,7 +67,7 @@
 	typedef struct FeMesh			 FeMesh;
 	typedef struct C0Generator		 C0Generator;
 	typedef struct C2Generator		 C2Generator;
-	typedef struct Inner2DGenerator		 Inner2DGenerator;
+	typedef struct InnerGenerator		 InnerGenerator;
 	typedef struct LinkedDofInfo             LinkedDofInfo;
 	typedef struct FeEquationNumber          FeEquationNumber;
 	typedef struct FeVariable                FeVariable;



More information about the CIG-COMMITS mailing list