[cig-commits] commit: Add in DivergenceForce

Mercurial hg at geodynamics.org
Tue Dec 22 22:56:55 PST 2009


changeset:   691:00fa84dcdf46
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Tue Dec 22 21:54:03 2009 -0800
files:       Utils/src/DivergenceForce.c Utils/src/DivergenceForce.h Utils/src/DivergenceForce.meta Utils/src/Init.c Utils/src/Utils.h Utils/src/types.h
description:
Add in DivergenceForce


diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/DivergenceForce.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utils/src/DivergenceForce.c	Tue Dec 22 21:54:03 2009 -0800
@@ -0,0 +1,326 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003-2006, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street,
+**	Melbourne, 3053, Australia.
+** Copyright (c) 2005-2006, Monash Cluster Computing, Building 28, Monash University Clayton Campus,
+**	Victoria, 3800, Australia
+**
+** Primary Contributing Organisations:
+**	Victorian Partnership for Advanced Computing Ltd, Computational Software Development - http://csd.vpac.org
+**	Australian Computational Earth Systems Simulator - http://www.access.edu.au
+**	Monash Cluster Computing - http://www.mcc.monash.edu.au
+**
+** Contributors:
+**	Robert Turnbull, Research Assistant, Monash University. (robert.turnbull at sci.monash.edu.au)
+**	Patrick D. Sunter, Software Engineer, VPAC. (patrick at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	David May, PhD Student, Monash University (david.may at sci.monash.edu.au)
+**	Vincent Lemiale, Postdoctoral Fellow, Monash University. (vincent.lemiale at sci.monash.edu.au)
+**	Julian Giordani, Research Assistant, Monash University. (julian.giordani at sci.monash.edu.au)
+**	Louis Moresi, Associate Professor, Monash University. (louis.moresi at sci.monash.edu.au)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**	David Stegman, Postdoctoral Fellow, Monash University. (david.stegman at sci.monash.edu.au)
+**	Wendy Sharples, PhD Student, Monash University (wendy.sharples at sci.monash.edu.au)
+**
+** Copyright (C) 2008, California Institute of Technology
+** Modified for DivergenceForce by Walter Landry
+**
+**  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: /cig/src/Gale/Utils/src/DivergenceForce.c 1691 2007-03-13T18:13:42.248551Z boo  $
+**
+**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
+
+
+#include <mpi.h>
+#include <StGermain/StGermain.h>
+#include <StgDomain/StgDomain.h>
+#include <StgFEM/StgFEM.h>
+#include <PICellerator/PICellerator.h>
+
+#include "types.h"
+#include "DivergenceForce.h"
+
+#include <assert.h>
+#include <string.h>
+
+/* Textual name of this class */
+const Type DivergenceForce_Type = "DivergenceForce";
+
+DivergenceForce* DivergenceForce_New(Name name,
+                                     ForceVector* forceVector,
+                                     Swarm* integrationSwarm,
+                                     Stg_Shape* domainShape,
+                                     FeMesh* geometryMesh,
+                                     StressBC_Entry force,
+                                     FiniteElementContext* context)
+{
+	DivergenceForce* self = (DivergenceForce*) _DivergenceForce_DefaultNew( name );
+
+	DivergenceForce_InitAll( 
+			self,
+			forceVector,
+			integrationSwarm,
+                        domainShape,
+                        geometryMesh,
+                        force,
+                        context);
+
+	return self;
+}
+
+/* Creation implementation / Virtual constructor */
+DivergenceForce* _DivergenceForce_New( 
+		SizeT                                               sizeOfSelf,  
+		Type                                                type,
+		Stg_Class_DeleteFunction*                           _delete,
+		Stg_Class_PrintFunction*                            _print,
+		Stg_Class_CopyFunction*                             _copy, 
+		Stg_Component_DefaultConstructorFunction*           _defaultConstructor,
+		Stg_Component_ConstructFunction*                    _construct,
+		Stg_Component_BuildFunction*                        _build,
+		Stg_Component_InitialiseFunction*                   _initialise,
+		Stg_Component_ExecuteFunction*                      _execute,
+		Stg_Component_DestroyFunction*                      _destroy,
+		ForceTerm_AssembleElementFunction*                  _assembleElement,		
+		Name                                                name,
+                FiniteElementContext*                               context)
+{
+	DivergenceForce* self;
+	
+	/* Allocate memory */
+	assert( sizeOfSelf >= sizeof(DivergenceForce) );
+	self = (DivergenceForce*) _ForceTerm_New( 
+		sizeOfSelf, 
+		type, 
+		_delete, 
+		_print, 
+		_copy,
+		_defaultConstructor,
+		_construct,
+		_build, 
+		_initialise,
+		_execute,
+		_destroy,
+		_assembleElement,
+		name );
+        self->context=context;
+	
+	return self;
+}
+
+void _DivergenceForce_Init(DivergenceForce* self,
+                           Stg_Shape* domainShape, FeMesh *geometryMesh,
+                           StressBC_Entry force,
+                           FiniteElementContext* context)
+{
+	self->domainShape=domainShape;
+        self->geometryMesh=geometryMesh;
+        self->force=force;
+        self->context=context;
+}
+
+void DivergenceForce_InitAll( 
+		void*                                               forceTerm,
+		ForceVector*                                        forceVector,
+		Swarm*                                              integrationSwarm,
+                Stg_Shape* domainShape,
+                FeMesh* geometryMesh,
+                StressBC_Entry force,
+                FiniteElementContext* context)
+{
+	DivergenceForce* self = (DivergenceForce*) forceTerm;
+
+	ForceTerm_InitAll( self, forceVector, integrationSwarm, NULL );
+	_DivergenceForce_Init( self, domainShape, geometryMesh, force, context);
+}
+
+void _DivergenceForce_Delete( void* forceTerm ) {
+	DivergenceForce* self = (DivergenceForce*)forceTerm;
+
+	_ForceTerm_Delete( self );
+}
+
+void _DivergenceForce_Print( void* forceTerm, Stream* stream ) {
+	DivergenceForce* self = (DivergenceForce*)forceTerm;
+	
+	_ForceTerm_Print( self, stream );
+
+	/* General info */
+}
+
+void* _DivergenceForce_DefaultNew( Name name ) {
+	return (void*)_DivergenceForce_New( 
+		sizeof(DivergenceForce), 
+		DivergenceForce_Type,
+		_DivergenceForce_Delete,
+		_DivergenceForce_Print,
+		NULL,
+		_DivergenceForce_DefaultNew,
+		_DivergenceForce_Construct,
+		_DivergenceForce_Build,
+		_DivergenceForce_Initialise,
+		_DivergenceForce_Execute,
+		_DivergenceForce_Destroy,
+		_DivergenceForce_AssembleElement,
+		name,
+                NULL);
+}
+
+void _DivergenceForce_Construct( void* forceTerm, Stg_ComponentFactory* cf, void* data ) {
+	DivergenceForce*          self             = (DivergenceForce*)forceTerm;
+	Dictionary*		dict;
+        Stg_Shape* domainShape=NULL;
+        FeMesh* geometryMesh=NULL;
+        StressBC_Entry force;
+        char *type;
+        FiniteElementContext* context;
+
+	/* Construct Parent */
+	_ForceTerm_Construct( self, cf, data );
+
+        context = (FiniteElementContext*)Stg_ComponentFactory_ConstructByName
+          ( cf, "context", FiniteElementContext, True, data ) ;
+
+	dict = Dictionary_Entry_Value_AsDictionary( Dictionary_Get( cf->componentDict, self->name ) );
+	domainShape =  Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  "DomainShape", Stg_Shape,  True, data  ) ;
+        type = Stg_ComponentFactory_GetString( cf, self->name, "force_type", "");
+
+        if(!strcasecmp(type,"double") || !strcasecmp(type,"float"))
+          {
+            force.type = StressBC_Double;
+            force.DoubleValue =
+              Stg_ComponentFactory_GetDouble( cf, self->name, "force_value", 0.0);
+          }
+        else if(!strcasecmp(type,"func"))
+          {
+            char *funcName = Stg_ComponentFactory_GetString
+              ( cf, self->name, "force_value", "");
+            
+            Index cfIndex;
+            cfIndex = ConditionFunction_Register_GetIndex
+              ( context->condFunc_Register, funcName);
+            force.type = StressBC_ConditionFunction;
+            if ( cfIndex == (unsigned)-1 ) {	
+              Stream*	errorStr = Journal_Register( Error_Type, self->type );
+              
+              Journal_Printf( errorStr, "Error- in %s: While parsing "
+                              "definition of DivergenceForce, the cond. func. "
+                              " \"%s\" - wasn't found in the c.f. register.\n",
+                              __func__, funcName );
+              Journal_Printf( errorStr, "(Available functions in the C.F. register are: ");	
+              ConditionFunction_Register_PrintNameOfEachFunc
+                ( context->condFunc_Register, errorStr );
+              Journal_Printf( errorStr, ")\n");	
+              assert(0);
+            }
+            force.CFIndex = cfIndex;
+          }
+        else if(strlen(type)==0)
+          {
+            Stream* errorStr = Journal_Register( Error_Type, self->type );
+            Journal_Printf( errorStr, "Error- in %s: While parsing "
+                            "definition of DivergenceForce, force_type is not specified.\nSupported types are \"double\" and \"function\".\n",
+                            __func__);
+            assert(0);
+          }
+        else
+          {
+            Stream* errorStr = Journal_Register( Error_Type, self->type );
+            Journal_Printf( errorStr, "Error- in %s: While parsing "
+                            "definition of DivergenceForce, the type of condition \"%s\"\nis not supported.  Supported types are \"double\" and \"function\".\n",
+                            __func__, type );
+            assert(0);
+          }
+        
+        geometryMesh=Stg_ComponentFactory_ConstructByKey(  cf,  self->name,  "GeometryMesh", FeMesh,  True, data  ) ;
+        
+	_DivergenceForce_Init( self, domainShape, geometryMesh, force, context);
+}
+
+void _DivergenceForce_Build( void* forceTerm, void* data ) {
+	DivergenceForce*               self               = (DivergenceForce*)forceTerm;
+	_ForceTerm_Build( self, data );
+}
+
+void _DivergenceForce_Initialise( void* forceTerm, void* data ) {
+	DivergenceForce*             self             = (DivergenceForce*)forceTerm;
+	_ForceTerm_Initialise( self, data );
+}
+
+void _DivergenceForce_Execute( void* forceTerm, void* data ) {
+	_ForceTerm_Execute( forceTerm, data );
+}
+
+void _DivergenceForce_Destroy( void* forceTerm, void* data ) {
+	_ForceTerm_Destroy( forceTerm, data );
+}
+
+
+void _DivergenceForce_AssembleElement( void* forceTerm,
+                                       ForceVector* forceVector, 
+                                       Element_LocalIndex lElement_I, 
+                                       double* elForceVec ) {
+  DivergenceForce* self=(DivergenceForce*) forceTerm;
+  FeMesh* mesh=forceVector->feVariable->feMesh;
+  Node_ElementLocalIndex           eNode_I;
+  Element_NodeIndex                elementNodeCount;
+  Node_DomainIndex *elementNodes=NULL;
+
+  double xi[3], force, factor;
+  ElementType* geometryElementType;
+  
+  IArray *incidence;
+
+  xi[0]=0;
+  xi[1]=0;
+  xi[2]=0;
+  geometryElementType=FeMesh_GetElementType(self->geometryMesh,lElement_I);
+  factor=ElementType_JacobianDeterminant( geometryElementType,
+                                          self->geometryMesh,
+                                          lElement_I,
+                                          xi, forceVector->dim );
+  incidence=IArray_New();
+  Mesh_GetIncidence(mesh, Mesh_GetDimSize(mesh), lElement_I,
+                    MT_VERTEX,incidence);
+  elementNodeCount=IArray_GetSize(incidence);
+  elementNodes=IArray_GetPtr(incidence);
+  
+  for( eNode_I = 0 ; eNode_I < elementNodeCount; eNode_I++ ) {
+    if(Stg_Shape_IsCoordInside(self->domainShape,
+                               Mesh_GetVertex(mesh,elementNodes[eNode_I])))
+      {
+        switch(self->force.type)
+          {
+          case StressBC_Double:
+            force=self->force.DoubleValue;
+            break;
+          case StressBC_ConditionFunction:
+            
+            /* We use a variable number of zero "0", because
+               we don't use the variable number and that one
+               is always going to exist. */
+            ConditionFunction_Apply
+              (self->context->condFunc_Register->_cf[self->force.CFIndex],
+               elementNodes[eNode_I],0,self->context,&force);
+            break;
+          }
+        elForceVec[ eNode_I] += force*factor;
+      }
+  }
+  NewClass_Delete(incidence);
+}
diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/DivergenceForce.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utils/src/DivergenceForce.h	Tue Dec 22 21:54:03 2009 -0800
@@ -0,0 +1,110 @@
+/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+**
+** Copyright (C), 2003-2006, Victorian Partnership for Advanced Computing (VPAC) Ltd, 110 Victoria Street,
+**	Melbourne, 3053, Australia.
+** Copyright (c) 2005-2006, Monash Cluster Computing, Building 28, Monash University Clayton Campus,
+**	Victoria, 3800, Australia
+**
+** Primary Contributing Organisations:
+**	Victorian Partnership for Advanced Computing Ltd, Computational Software Development - http://csd.vpac.org
+**	Australian Computational Earth Systems Simulator - http://www.access.edu.au
+**	Monash Cluster Computing - http://www.mcc.monash.edu.au
+**
+** Contributors:
+**	Robert Turnbull, Research Assistant, Monash University. (robert.turnbull at sci.monash.edu.au)
+**	Patrick D. Sunter, Software Engineer, VPAC. (patrick at vpac.org)
+**	Alan H. Lo, Computational Engineer, VPAC. (alan at vpac.org)
+**	Stevan M. Quenette, Senior Software Engineer, VPAC. (steve at vpac.org)
+**	David May, PhD Student, Monash University (david.may at sci.monash.edu.au)
+**	Vincent Lemiale, Postdoctoral Fellow, Monash University. (vincent.lemiale at sci.monash.edu.au)
+**	Julian Giordani, Research Assistant, Monash University. (julian.giordani at sci.monash.edu.au)
+**	Louis Moresi, Associate Professor, Monash University. (louis.moresi at sci.monash.edu.au)
+**	Luke J. Hodkinson, Computational Engineer, VPAC. (lhodkins at vpac.org)
+**	Raquibul Hassan, Computational Engineer, VPAC. (raq at vpac.org)
+**	David Stegman, Postdoctoral Fellow, Monash University. (david.stegman at sci.monash.edu.au)
+**	Wendy Sharples, PhD Student, Monash University (wendy.sharples at sci.monash.edu.au)
+**
+** Copyright (C) 2008, California Institute of Technology
+** Modified for DivergenceForce by Walter Landry
+**
+**  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
+**
+*/
+
+
+#ifndef __Gale_Utils_DivergenceForce_h__
+#define __Gale_Utils_DivergenceForce_h__
+
+	/** Textual name of this class */
+	extern const Type DivergenceForce_Type;
+
+	/** DivergenceForce class contents */
+	#define __DivergenceForce \
+		/* General info */ \
+		__ForceTerm \
+		Stg_Shape*                                 domainShape;    \
+                FeMesh*                                    geometryMesh; \
+                StressBC_Entry                             force; \
+                FiniteElementContext*                      context; \
+
+	struct DivergenceForce { __DivergenceForce };
+
+	DivergenceForce* DivergenceForce_New( 
+		Name                                                name,
+		ForceVector*                                        forceVector,
+                Swarm* integrationSwarm,
+                Stg_Shape* domainShape,
+                FeMesh* geometryMesh,
+                StressBC_Entry force,
+                FiniteElementContext* context);
+
+	DivergenceForce* _DivergenceForce_New( 
+		SizeT                                               sizeOfSelf,  
+		Type                                                type,
+		Stg_Class_DeleteFunction*                           _delete,
+		Stg_Class_PrintFunction*                            _print,
+		Stg_Class_CopyFunction*                             _copy, 
+		Stg_Component_DefaultConstructorFunction*           _defaultConstructor,
+		Stg_Component_ConstructFunction*                    _construct,
+		Stg_Component_BuildFunction*                        _build,
+		Stg_Component_InitialiseFunction*                   _initialise,
+		Stg_Component_ExecuteFunction*                      _execute,
+		Stg_Component_DestroyFunction*                      _destroy,
+		ForceTerm_AssembleElementFunction*                  _assembleElement,		
+		Name                                                name,
+                FiniteElementContext*                               context);
+	
+	void DivergenceForce_InitAll( 
+		void*                                               forceTerm,
+		ForceVector*                                        forceVector,
+		Swarm*                                              integrationSwarm,
+                Stg_Shape* domainShape,
+                FeMesh* geometryMesh,
+                StressBC_Entry force,
+                FiniteElementContext* context);
+
+	void _DivergenceForce_Delete( void* forceTerm );
+	void _DivergenceForce_Print( void* forceTerm, Stream* stream );
+
+	void* _DivergenceForce_DefaultNew( Name name ) ;
+void _DivergenceForce_Construct( void* forceTerm, Stg_ComponentFactory* cf, void* data ) ;
+	void _DivergenceForce_Build( void* forceTerm, void* data ) ;
+	void _DivergenceForce_Initialise( void* forceTerm, void* data ) ;
+	void _DivergenceForce_Execute( void* forceTerm, void* data ) ;
+	void _DivergenceForce_Destroy( void* forceTerm, void* data ) ;
+
+	void _DivergenceForce_AssembleElement( void* forceTerm, ForceVector* forceVector, Element_LocalIndex lElement_I, double* elForceVec ) ;
+
+#endif
diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/DivergenceForce.meta
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Utils/src/DivergenceForce.meta	Tue Dec 22 21:54:03 2009 -0800
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!DOCTYPE StGermainData SYSTEM "stgermain.dtd">
+<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
+
+<param name="Name">DivergenceForce</param>
+<param name="Author">...</param>
+<param name="Organisation">CIG</param>
+<param name="Project">Gale</param>
+<param name="Location">./Gale/Utils/src/</param>
+<param name="Project Web">http://geodynamics.org</param>
+<param name="Copyright">Copyright (C) 2005 VPAC and Monash Cluster Computing, Copyright 2008 California Institute of Technology</param>
+<param name="License">http://www.opensource.org/licenses/bsd-license.php</param>
+<param name="Parent">ForceTerm</param>
+<param name="Reference">...</param>
+<param name="Summary">...</param>
+<param name="Description">This adds a force to allow a divergence in the velocity.</param>
+
+<!--Now the interesting stuff-->
+
+<list name="Params">
+</list>
+
+<list name="Dependencies">
+</list>
+<!-- Add an exmaple XML if possible -->
+<!-- <param name="Example"> -->
+<!-- 		<struct name="divergenceForce"> -->
+<!-- 			<param name="Type">DivergenceForce</param> -->
+<!-- 			<param name="ForceVector">cont_force</param> -->
+<!-- 			<param name="Swarm">materialPoints</param> -->
+<!-- 			<param name="gravity">1.0</param> -->
+<!-- 		</struct> -->
+<!-- </param> -->
+
+</StGermainData>
diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/Init.c
--- a/Utils/src/Init.c	Tue Dec 22 16:37:51 2009 -0800
+++ b/Utils/src/Init.c	Tue Dec 22 21:54:03 2009 -0800
@@ -72,6 +72,8 @@ Bool Underworld_Utils_Init( int* argc, c
 	Stg_ComponentRegister_Add( componentRegister, SmoothVelGradField_Type , "0", _SmoothVelGradField_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, ViscosityField_Type ,           "0", _ViscosityField_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, DensityField_Type ,           "0", _DensityField_DefaultNew );
+	Stg_ComponentRegister_Add( componentRegister, DivergenceForce_Type,
+                                   "0", _DivergenceForce_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, MixedStabiliserTerm_Type,
                                    "0", _MixedStabiliserTerm_DefaultNew );
 	Stg_ComponentRegister_Add( componentRegister, StressBC_Type,
@@ -86,6 +88,7 @@ Bool Underworld_Utils_Init( int* argc, c
 	RegisterParent( SmoothVelGradField_Type,                   ParticleFeVariable_Type );
 	RegisterParent( ViscosityField_Type,                ParticleFeVariable_Type );
 	RegisterParent( DensityField_Type,                  ParticleFeVariable_Type );
+	RegisterParent( DivergenceForce_Type,                  ForceTerm_Type );
 	RegisterParent( MixedStabiliserTerm_Type, StiffnessMatrixTerm_Type );
 	RegisterParent( StressBC_Type, ForceTerm_Type );
         
diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/Utils.h
--- a/Utils/src/Utils.h	Tue Dec 22 16:37:51 2009 -0800
+++ b/Utils/src/Utils.h	Tue Dec 22 21:54:03 2009 -0800
@@ -53,6 +53,7 @@
 	#include "SmoothVelGradField.h"
 	#include "ViscosityField.h"
 	#include "DensityField.h"
+	#include "DivergenceForce.h"
         #include "MixedStabiliserTerm.h"
 	#include "PressureTemperatureOutput.h"
 	#include "Underworld_SwarmOutput.h"
diff -r be936d65eb8c -r 00fa84dcdf46 Utils/src/types.h
--- a/Utils/src/types.h	Tue Dec 22 16:37:51 2009 -0800
+++ b/Utils/src/types.h	Tue Dec 22 21:54:03 2009 -0800
@@ -55,6 +55,7 @@
 	typedef struct SmoothVelGradField SmoothVelGradField;
 	typedef struct ViscosityField                ViscosityField;
 	typedef struct DensityField                  DensityField;
+        typedef struct DivergenceForce DivergenceForce;
 	typedef struct MixedStabiliserTerm           MixedStabiliserTerm;
         typedef struct StressBC                      StressBC;
 



More information about the CIG-COMMITS mailing list