[cig-commits] r13677 - in long/3D/Gale/trunk: . src/PICellerator/Utils/src

walter at geodynamics.org walter at geodynamics.org
Sat Dec 13 03:57:51 PST 2008


Author: walter
Date: 2008-12-13 03:57:50 -0800 (Sat, 13 Dec 2008)
New Revision: 13677

Modified:
   long/3D/Gale/trunk/
   long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.c
   long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.h
Log:
 r2432 at dante:  boo | 2008-12-13 02:16:33 -0800
 Add HydrostaticTerm to BuoyancyForceTerm



Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
   - 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2429
   + 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2432

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.c
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.c	2008-12-13 10:16:26 UTC (rev 13676)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.c	2008-12-13 11:57:50 UTC (rev 13677)
@@ -53,6 +53,7 @@
 
 #include "types.h"
 #include "BuoyancyForceTerm.h"
+#include "HydrostaticTerm.h"
 #include "MaterialSwarmVariable.h"
 
 #include <assert.h>
@@ -107,18 +108,19 @@
 		FeVariable*                                         temperatureField,
 		double                                              gravity,
 		Bool                                                adjust,
-		Materials_Register*                                 materials_Register )
+		Materials_Register*                                 materials_Register,
+                HydrostaticTerm*                                    hydrostaticTerm )
 {
 	BuoyancyForceTerm* self = (BuoyancyForceTerm*) _BuoyancyForceTerm_DefaultNew( name );
 
-	BuoyancyForceTerm_InitAll( 
-			self,
-			forceVector,
-			integrationSwarm,
-			temperatureField,
-			gravity,
-			adjust,
-			materials_Register );
+	BuoyancyForceTerm_InitAll(self,
+                                  forceVector,
+                                  integrationSwarm,
+                                  temperatureField,
+                                  gravity,
+                                  adjust,
+                                  materials_Register,
+                                  hydrostaticTerm);
 
 	return self;
 }
@@ -170,13 +172,15 @@
 		FeVariable*                                         temperatureField,
 		double                                              gravity,
 		Bool                                                adjust,
-		Materials_Register*                                 materials_Register )
+		Materials_Register*                                 materials_Register,
+                HydrostaticTerm*                                    hydrostaticTerm )
 {
 	self->temperatureField    = temperatureField;
 	self->gravity             = gravity;
 	self->gHat		  = NULL;
 	self->adjust              = adjust;
 	self->materials_Register  = materials_Register;
+        self->hydrostaticTerm     = hydrostaticTerm;
 }
 
 void BuoyancyForceTerm_InitAll( 
@@ -186,13 +190,14 @@
 		FeVariable*                                         temperatureField,
 		double                                              gravity,
 		Bool                                                adjust,
-		Materials_Register*                                 materials_Register )
+		Materials_Register*                                 materials_Register,
+                HydrostaticTerm*                                    hydrostaticTerm )
 {
 	BuoyancyForceTerm* self = (BuoyancyForceTerm*) forceTerm;
 
 	ForceTerm_InitAll( self, forceVector, integrationSwarm, NULL );
-	_BuoyancyForceTerm_Init( self, temperatureField, 
-                                 gravity, adjust, materials_Register );
+	_BuoyancyForceTerm_Init( self, temperatureField, gravity, adjust,
+                                 materials_Register, hydrostaticTerm );
 }
 
 void _BuoyancyForceTerm_Delete( void* forceTerm ) {
@@ -251,6 +256,8 @@
 	Dictionary_Entry_Value*	    direcList;
 	double*			    direc;
 	unsigned		d_i;
+        HydrostaticTerm*                                    hydrostaticTerm;
+        
 
 	/* Construct Parent */
 	_ForceTerm_Construct( self, cf, data );
@@ -283,8 +290,10 @@
 	materials_Register = Stg_ObjectList_Get( cf->registerRegister, "Materials_Register" );
 	assert( materials_Register );
 
-	_BuoyancyForceTerm_Init( self, temperatureField,
-                                 gravity, adjust, materials_Register );
+	hydrostaticTerm = Stg_ComponentFactory_ConstructByKey( cf, self->name, "HydrostaticTerm", HydrostaticTerm, False, data ) ;
+
+	_BuoyancyForceTerm_Init( self, temperatureField, gravity, adjust,
+                                 materials_Register, hydrostaticTerm );
 }
 
 void _BuoyancyForceTerm_Build( void* forceTerm, void* data ) {
@@ -443,8 +452,16 @@
     if ( temperatureField )
       FeVariable_InterpolateWithinElement( temperatureField, lElement_I, xi, &temperature );
     
-    FeMesh_CoordLocalToGlobal(mesh, cell_I, xi, coord);
-    background_density=DensityFunction(coord);
+    if(self->hydrostaticTerm)
+      {
+        double density_temp=DensityFunction(coord);
+
+        FeMesh_CoordLocalToGlobal(mesh, cell_I, xi, coord);
+        background_density=HydrostaticTerm_Density(self->hydrostaticTerm,coord);
+
+        if(fabs(density_temp-background_density)/density_temp>1.0e-12)
+          printf("density %g %g\n",density_temp,background_density);
+      }
     
     material =
       IntegrationPointsSwarm_GetMaterialOn( (IntegrationPointsSwarm*) swarm,

Modified: long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.h
===================================================================
--- long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.h	2008-12-13 10:16:26 UTC (rev 13676)
+++ long/3D/Gale/trunk/src/PICellerator/Utils/src/BuoyancyForceTerm.h	2008-12-13 11:57:50 UTC (rev 13677)
@@ -75,7 +75,8 @@
 		ExtensionInfo_Index                                 materialExtHandle;                 \
 		MaterialSwarmVariable**                             densitySwarmVariables;             \
 		MaterialSwarmVariable**                             alphaSwarmVariables;               \
-		Index                                               materialSwarmCount;
+		Index                                               materialSwarmCount; \
+                HydrostaticTerm*                                    hydrostaticTerm;
 
 	struct BuoyancyForceTerm { __BuoyancyForceTerm };
 
@@ -86,7 +87,8 @@
 		FeVariable*                                         temperatureField,
 		double                                              gravity,
 		Bool                                                adjust,
-		Materials_Register*                                 materials_Register );
+		Materials_Register*                                 materials_Register,
+                HydrostaticTerm*                                    hydrostaticTerm);
 
 	BuoyancyForceTerm* _BuoyancyForceTerm_New( 
 		SizeT                                               sizeOfSelf,  
@@ -111,7 +113,8 @@
 		FeVariable*                                         temperatureField,
 		double                                              gravity,
 		Bool                                                adjust,
-		Materials_Register*                                 materials_Register );
+		Materials_Register*                                 materials_Register,
+                HydrostaticTerm*                                    hydrostaticTerm );
 
 	void _BuoyancyForceTerm_Delete( void* forceTerm );
 	void _BuoyancyForceTerm_Print( void* forceTerm, Stream* stream );



More information about the CIG-COMMITS mailing list