[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