[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