[cig-commits] r4878 - in long/3D/Gale/trunk/src/StGermain: . Discretisation/Utils/src Discretisation/Utils/tests

walter at geodynamics.org walter at geodynamics.org
Wed Oct 11 13:48:16 PDT 2006


Author: walter
Date: 2006-10-11 13:48:15 -0700 (Wed, 11 Oct 2006)
New Revision: 4878

Modified:
   long/3D/Gale/trunk/src/StGermain/
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DiscretisationContext.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.h
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testFieldVariable_Register.c
   long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testOperatorFieldVariable.c
Log:
 r2935 at earth:  boo | 2006-10-11 13:42:47 -0700
  r2851 at earth (orig r3839):  KathleenHumble | 2006-10-05 01:10:13 -0700
  Implementing a reasonably big change to the FeildVariable:
  Adding in a Bool isCheckpointedAndReloaded
  that at present can not be set per FieldVariable type
  except by using the standard method of deciding which
  variables to checkpoint...
  
  This change is to prevent the checkpointing system from
  checkpointing spurious FieldVariables that were breaking
  some of the checkpointing tests.
  
  At present, this new flag cannot be set from the xml 
  
  
 



Property changes on: long/3D/Gale/trunk/src/StGermain
___________________________________________________________________
Name: svk:merge
   - 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2934
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3838
   + 1ef209d2-b310-0410-a72d-e20c9eb0015c:/cig:2935
afb6c753-b9d0-0310-b4e7-dbd8d91cdd35:/trunk/StGermain:3839

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DiscretisationContext.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DiscretisationContext.c	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/DiscretisationContext.c	2006-10-11 20:48:15 UTC (rev 4878)
@@ -133,11 +133,52 @@
 
 
 void _DiscretisationContext_Init( DiscretisationContext* self ) {
+	Dictionary_Entry_Value*   feVarsList = NULL;
+	FieldVariable*            fieldVar = NULL;
+
 	
 	self->isConstructed = True;
 	self->fieldVariable_Register = FieldVariable_Register_New();
 	self->dim = Dictionary_GetUnsignedInt_WithDefault( self->dictionary, "dim", 2 );
+
+	/* Case insensitive search */
+	feVarsList = Dictionary_Get( self->dictionary, "fieldVariablesToCheckpoint" );
+	if ( NULL == feVarsList ) {
+		feVarsList = Dictionary_Get( self->dictionary, "FieldVariablesToCheckpoint" );
+	}	
+
+	if (feVarsList != NULL ) {
+		/* Dump the requested subset of feVars */
+		Index                    listLength = Dictionary_Entry_Value_GetCount( feVarsList );
+		Index                    var_I = 0;
+		Dictionary_Entry_Value*  feVarDictValue = NULL;
 	
+		/* Initially set all in register to False since they were created
+		   as true by default */
+		for ( var_I = 0; var_I < self->fieldVariable_Register->objects->count; var_I++ ) {
+			fieldVar = FieldVariable_Register_GetByIndex( self->fieldVariable_Register, var_I );
+			fieldVar->isCheckpointedAndReloaded = False;
+		}	
+	
+		
+		for ( var_I = 0; var_I < listLength; var_I++ ) {
+			feVarDictValue = Dictionary_Entry_Value_GetElement( feVarsList, var_I );
+			fieldVar = FieldVariable_Register_GetByName( self->fieldVariable_Register,
+				Dictionary_Entry_Value_AsString( feVarDictValue ) );
+				
+			if ( NULL == fieldVar ) {
+				Stream* errorStr = Journal_Register( Error_Type, self->type );
+				Journal_Printf( errorStr, "WARNING - in %s: requested feVariable to "
+					"save \"%s\" doesn't exist. Skipping.\n",
+					__func__, Dictionary_Entry_Value_AsString( feVarDictValue ) );
+				continue;	
+			}
+			else {
+				fieldVar->isCheckpointedAndReloaded = True;
+			}
+		}
+	}
+	
 	Stg_ObjectList_ClassAppend( self->register_Register, (void*)self->fieldVariable_Register, "FieldVariable_Register" );
 }
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.c	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.c	2006-10-11 20:48:15 UTC (rev 4878)
@@ -74,6 +74,7 @@
 			NULL, 
 			0,
 			0,
+			False,
 			MPI_COMM_WORLD,
 			NULL);
 }
@@ -87,6 +88,7 @@
 		FieldVariable_GetCoordFunction*                    _getMinAndMaxGlobalCoords,
 		Index                                              fieldComponentCount,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fieldVariable_Register ) 
 {
@@ -111,31 +113,33 @@
 			_getMinAndMaxGlobalCoords,
 			fieldComponentCount,
 			dim,
+            isCheckpointedAndReloaded,
 			communicator,
 			fieldVariable_Register );
 }
 
 FieldVariable* _FieldVariable_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_ExecuteFunction*				_destroy,
-		Name									name,
-		Bool									initFlag,
-		FieldVariable_InterpolateValueAtFunction*          _interpolateValueAt,
+ 		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_ExecuteFunction*              _destroy,
+		Name                                        name,
+		Bool                                        initFlag,
+		FieldVariable_InterpolateValueAtFunction*   _interpolateValueAt,
 		FieldVariable_GetValueFunction*                    _getMinGlobalFieldMagnitude,
 		FieldVariable_GetValueFunction*                    _getMaxGlobalFieldMagnitude,		
 		FieldVariable_GetCoordFunction*                    _getMinAndMaxLocalCoords,
 		FieldVariable_GetCoordFunction*                    _getMinAndMaxGlobalCoords,
 		Index                                              fieldComponentCount,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fieldVariable_Register )		
 {
@@ -157,7 +161,8 @@
 	/* General info */
 	/* FieldVariable info */
 	if( initFlag ){
-		_FieldVariable_Init( self, fieldComponentCount, dim, communicator, fieldVariable_Register );
+		_FieldVariable_Init( self, fieldComponentCount, dim, isCheckpointedAndReloaded, 
+			communicator, fieldVariable_Register );
 	}
 	
 	return self;
@@ -187,6 +192,7 @@
 
 	Journal_PrintValue( stream, self->fieldComponentCount );
 	Journal_PrintValue( stream, self->dim );
+	Journal_PrintBool( stream, self->isCheckpointedAndReloaded);
 	#ifdef LAM_MPI
 		Journal_PrintPointer( stream, self->communicator );
 	#elif  defined( OPEN_MPI )
@@ -198,7 +204,13 @@
 	Stream_UnIndent( stream );
 }
 
-void _FieldVariable_Init( FieldVariable* self, Index fieldComponentCount, Dimension_Index dim, MPI_Comm communicator, FieldVariable_Register* fV_Register ) {
+void _FieldVariable_Init( 
+		FieldVariable*                                     self, 
+		Index                                              fieldComponentCount, 
+		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
+		MPI_Comm                                           communicator, 
+		FieldVariable_Register*                            fV_Register ) {
 	/* Add ourselves to the register for later retrieval by clients */
 	self->isConstructed = True;
 
@@ -206,7 +218,8 @@
 	self->dim                         = dim;
 	self->communicator                = communicator;
 	self->fieldVariable_Register      = fV_Register;
-	
+	//TODO put comment here
+	self->isCheckpointedAndReloaded   = isCheckpointedAndReloaded;
 	if (self != NULL && fV_Register != NULL)	
 		FieldVariable_Register_Add( fV_Register, self );
 
@@ -233,6 +246,7 @@
 
 	newFieldVariable->fieldComponentCount        = self->fieldComponentCount;
 	newFieldVariable->dim                        = self->dim;
+	newFieldVariable->isCheckpointedAndReloaded  = self->isCheckpointedAndReloaded;
 	newFieldVariable->communicator               = self->communicator;
 	newFieldVariable->fieldVariable_Register     =  self->fieldVariable_Register;
 
@@ -250,15 +264,22 @@
 	FieldVariable_Register* fV_Register;
 	Dimension_Index         dim;
 	Index                   fieldComponentCount;
-
+	Bool                    isCheckpointedAndReloaded;
+	
 	fV_Register = (FieldVariable_Register*) Stg_ObjectList_Get( cf->registerRegister, "FieldVariable_Register" );
 	assert( fV_Register );
 
 	dim = Stg_ComponentFactory_GetRootDictUnsignedInt( cf, "dim", 0 );
 
 	fieldComponentCount = Stg_ComponentFactory_GetUnsignedInt( cf, self->name, "fieldComponentCount", 0 );
-
-	_FieldVariable_Init( self, fieldComponentCount, dim, MPI_COMM_WORLD, fV_Register );
+	/* DiscretisationContext will be setting isCheckpointedAndReloaded later
+		depending on the contents of the list "FieldVariablesToCheckpoint". 
+		May want to change this later so it is set individually in each
+		FeVariable's component xml entry.
+		--PatrickSunter & KathleenHumble, 27/09/06	*/
+	isCheckpointedAndReloaded = True;
+	_FieldVariable_Init( self, fieldComponentCount, dim, isCheckpointedAndReloaded, 
+		MPI_COMM_WORLD, fV_Register );
 	
 }
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.h	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/FieldVariable.h	2006-10-11 20:48:15 UTC (rev 4878)
@@ -96,6 +96,7 @@
 		Dimension_Index                                    dim;                         \
 		MPI_Comm                                           communicator;                \
 		FieldVariable_Register*                            fieldVariable_Register;      \
+		Bool                                               isCheckpointedAndReloaded;    \
 
 	struct FieldVariable { __FieldVariable };	
 
@@ -115,6 +116,7 @@
 		FieldVariable_GetCoordFunction*                    _getMinAndMaxGlobalCoords,
 		Index                                              fieldComponentCount,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fieldVariable_Register ) ;
 	
@@ -139,11 +141,18 @@
 		FieldVariable_GetCoordFunction*                    _getMinAndMaxGlobalCoords,
 		Index                                              fieldComponentCount,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fieldVariable_Register );
 
 	/** Member initialisation implementation */
-	void _FieldVariable_Init( FieldVariable* self, Index fieldComponentCount, Dimension_Index dim, MPI_Comm communicator, FieldVariable_Register* fV_Register ) ;
+	void _FieldVariable_Init( 
+			FieldVariable*                  self, 
+			Index                           fieldComponentCount, 
+			Dimension_Index                 dim,
+			Bool                            isCheckpointedAndReloaded,
+			MPI_Comm                        communicator, 
+			FieldVariable_Register*         fV_Register ) ;
 	
 	void _FieldVariable_Delete( void* fieldVariable ) ;
 	void _FieldVariable_Print( void* _fieldVariable, Stream* stream ) ;

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.c	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.c	2006-10-11 20:48:15 UTC (rev 4878)
@@ -62,6 +62,7 @@
 			1,
 			&fieldVariable, 
 			fieldVariable->dim,
+			fieldVariable->isCheckpointedAndReloaded,
 			fieldVariable->communicator,
 			fieldVariable->fieldVariable_Register );
 }
@@ -84,6 +85,7 @@
 			2, 
 			fieldVariableList, 
 			fieldVariableList[0]->dim,
+			fieldVariableList[0]->isCheckpointedAndReloaded,
 			fieldVariableList[0]->communicator,
 			fieldVariableList[0]->fieldVariable_Register );
 }
@@ -103,7 +105,7 @@
 			_OperatorFieldVariable_Execute,
 			_OperatorFieldVariable_Destroy,
 			name,
-			False,
+			False, 
 			_OperatorFieldVariable_GetMinLocalFieldMagnitude,
 			_OperatorFieldVariable_GetMaxLocalFieldMagnitude, 
 			_OperatorFieldVariable_GetMinAndMaxLocalCoords,
@@ -113,6 +115,7 @@
 			0,
 			NULL,
 			0,
+			False, /* Setting default to false, as do not want to checkpoint OperatorFeVariables */
 			MPI_COMM_WORLD,
 			NULL);
 }
@@ -124,6 +127,7 @@
 		Index                                              fieldVariableCount,
 		FieldVariable**                                    fieldVariableList,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fV_Register ) 
 {
@@ -151,6 +155,7 @@
 			fieldVariableCount,
 			fieldVariableList,
 			dim,
+			isCheckpointedAndReloaded,
 			communicator,
 			fV_Register );
 }
@@ -178,6 +183,7 @@
 		Index                                              fieldVariableCount,
 		FieldVariable**                                    fieldVariableList,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fV_Register )
 {
@@ -206,6 +212,7 @@
 			_getMinAndMaxGlobalCoords,
 			0, /* field component count - this will be reset later */
 			dim,
+			False, /* Setting this to false as I don't think we want to checkpoint operators*/
 			communicator,
 			fV_Register );
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.h
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.h	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/src/OperatorFieldVariable.h	2006-10-11 20:48:15 UTC (rev 4878)
@@ -99,6 +99,7 @@
 		Index                                              fieldVariableCount,
 		FieldVariable**                                    fieldVariableList,
 		Dimension_Index                                    dim,
+		Bool                                               isCheckpointedAndReloaded,
 		MPI_Comm                                           communicator,
 		FieldVariable_Register*                            fV_Register ) ;
 
@@ -126,6 +127,7 @@
 			Index                                              fieldVariableCount,
 			FieldVariable**                                    fieldVariableList,
 			Dimension_Index                                    dim,
+			Bool                                               isCheckpointedAndReloaded,
 			MPI_Comm                                           communicator,
 			FieldVariable_Register*                            fV_Register );
 

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testFieldVariable_Register.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testFieldVariable_Register.c	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testFieldVariable_Register.c	2006-10-11 20:48:15 UTC (rev 4878)
@@ -88,6 +88,7 @@
 			dummyGetMinAndMaxLocalCoords, dummyGetMinAndMaxGlobalCoords, 
 			0, /* field components */
 			3, /* dim */
+			False,
 			MPI_COMM_WORLD,
 			fV_Register );
 	}	

Modified: long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testOperatorFieldVariable.c
===================================================================
--- long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testOperatorFieldVariable.c	2006-10-11 20:48:13 UTC (rev 4877)
+++ long/3D/Gale/trunk/src/StGermain/Discretisation/Utils/tests/testOperatorFieldVariable.c	2006-10-11 20:48:15 UTC (rev 4878)
@@ -129,6 +129,7 @@
 			dummyGetMinAndMaxGlobalCoords, 
 			3,
 			3,
+			False,
 			MPI_COMM_WORLD,
 			fV_Register );
 



More information about the cig-commits mailing list