[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