[cig-commits] commit: added two new flags to achieve selective checkpoint restarts of field and/or swarm data:

Mercurial hg at geodynamics.org
Tue Mar 23 10:34:22 PDT 2010


changeset:   392:cce619afffd2
parent:      381:84d4b74cf385
user:        John Mansour <john.mansour at maths.monash.edu.au>
date:        Mon Jan 18 17:20:32 2010 +1100
files:       MaterialPoints/src/MaterialPointsSwarm.c MaterialPoints/src/ParticleFeVariable.c MaterialPoints/src/SwarmAdvector.c Utils/src/PCDVC.c
description:
added two new flags to achieve selective checkpoint restarts of field and/or swarm data:

--loadSwarmsFromCheckpoint
--loadFieldsFromCheckpoint

So, to restart from a checkpointed timestep, but only loading the fields and not the swarms (which will be re-initilised according to XML specs), you might use something
like:

./StGermain ThermoChemBenchmark.xml --restartTimestep=100 --loadSwarmsFromCheckpoint=0

and likewise, to only reload swarm data you would use:

./StGermain ThermoChemBenchmark.xml --restartTimestep=100 --loadFieldsFromCheckpoint=0


diff -r 84d4b74cf385 -r cce619afffd2 MaterialPoints/src/MaterialPointsSwarm.c
--- a/MaterialPoints/src/MaterialPointsSwarm.c	Wed Jan 13 22:24:53 2010 +1100
+++ b/MaterialPoints/src/MaterialPointsSwarm.c	Mon Jan 18 17:20:32 2010 +1100
@@ -314,7 +314,7 @@ void _MaterialPointsSwarm_Initialise( vo
 	}
 
 	/* Now setup the material properties */
-   if(  False == context->loadFromCheckPoint ) {
+   if(  False == context->loadSwarmsFromCheckpoint ) {
 
       /* Beforehand, set each particle to have UNDEFINED_MATERIAL */
       for ( lParticle_I = 0; lParticle_I < self->particleLocalCount; lParticle_I++ ) {
@@ -336,7 +336,7 @@ void _MaterialPointsSwarm_Initialise( vo
 
 	/** if loading from checkpoint, particle materials etc have already been loaded in Swarm_Build() - */ 
 	/** possibly need to check for empty cells (and populate) if performing a interpolation restart */
-   if ( True == context->loadFromCheckPoint ){
+   if ( True == context->loadSwarmsFromCheckpoint ){
       if ( (True == self->isSwarmTypeToCheckPointAndReload) && (True == context->interpolateRestart) ) {	   
          Particle_InCellIndex cParticle_I         = 0;
          Particle_InCellIndex particle_I          = 0;
diff -r 84d4b74cf385 -r cce619afffd2 MaterialPoints/src/ParticleFeVariable.c
--- a/MaterialPoints/src/ParticleFeVariable.c	Wed Jan 13 22:24:53 2010 +1100
+++ b/MaterialPoints/src/ParticleFeVariable.c	Mon Jan 18 17:20:32 2010 +1100
@@ -197,9 +197,8 @@ void _ParticleFeVariable_Initialise( voi
 	Variable_Update( self->dataVariable );
 	/* If loading from CP, _don't_ recalculate the field as we've already just loaded it!
 		-- PatrickSunter 22 Nov 2006 */
-	if ( !(context && (True == context->loadFromCheckPoint)  ) ) {
+	if ( False == context->loadFromCheckPoint )
 		ParticleFeVariable_Update( self );
-	}
 }
 
 void _ParticleFeVariable_Execute( void* materialFeVariable, void* _ctx ) {
diff -r 84d4b74cf385 -r cce619afffd2 MaterialPoints/src/SwarmAdvector.c
--- a/MaterialPoints/src/SwarmAdvector.c	Wed Jan 13 22:24:53 2010 +1100
+++ b/MaterialPoints/src/SwarmAdvector.c	Mon Jan 18 17:20:32 2010 +1100
@@ -239,7 +239,8 @@ void _SwarmAdvector_Initialise( void* sw
    Stg_Component_Initialise( self->swarm, data, False );
 	if ( self->periodicBCsManager )
 		Stg_Component_Initialise( self->periodicBCsManager, data, False );
-	_TimeIntegrand_Initialise( self, data );
+   if ( self->context->loadSwarmsFromCheckpoint == False )
+      _TimeIntegrand_Initialise( self, data );
 }
 
 void _SwarmAdvector_Execute( void* swarmAdvector, void* data ) {
diff -r 84d4b74cf385 -r cce619afffd2 Utils/src/PCDVC.c
--- a/Utils/src/PCDVC.c	Wed Jan 13 22:24:53 2010 +1100
+++ b/Utils/src/PCDVC.c	Mon Jan 18 17:20:32 2010 +1100
@@ -290,7 +290,7 @@ void _PCDVC_Initialise( void* pcdvc, voi
     /** for interpolation restart, we need to set these values high to ensure correct population of */
     /** integration point swarms                                                                    */
     /** these parameters will be reset to correct values after first timestep                       */
-    if ( (True == self->context->loadFromCheckPoint) && (True == self->context->interpolateRestart) ){
+    if ( (True == self->context->loadSwarmsFromCheckpoint) && (True == self->context->interpolateRestart) ){
         self->maxDeletions           = 999999;
         self->maxSplits              = 999999;
         self->Inflow                 = True;



More information about the CIG-COMMITS mailing list