[cig-commits] commit: Make pure thermal problems use a specified dt

Mercurial hg at geodynamics.org
Sat Nov 19 10:17:27 PST 2011


changeset:   814:7ce5ed512871
tag:         tip
user:        Walter Landry <wlandry at caltech.edu>
date:        Sat Nov 19 10:17:16 2011 -0800
files:       SLE/SystemSetup/src/FiniteElementContext.cxx
description:
Make pure thermal problems use a specified dt


diff -r 637110944ca8 -r 7ce5ed512871 SLE/SystemSetup/src/FiniteElementContext.cxx
--- a/SLE/SystemSetup/src/FiniteElementContext.cxx	Wed Nov 09 15:15:00 2011 -0800
+++ b/SLE/SystemSetup/src/FiniteElementContext.cxx	Sat Nov 19 10:17:16 2011 -0800
@@ -362,46 +362,50 @@ double _FiniteElementContext_GetDt( void
 }
 
 double FiniteElementContext_CalcNewDt( void* context ) {
-	FiniteElementContext* self = (FiniteElementContext*)context;
+  FiniteElementContext* self = (FiniteElementContext*)context;
 
-	self->prevTimestepDt = self->dt;
+  self->prevTimestepDt = self->dt;
 	
-	if ( self->calcDtEP->hooks->count == 0 ) {
-		self->dt = 0.0;
-	}
-	else {
-		self->dt = _EntryPoint_Run_Class_Minimum_VoidPtr( self->calcDtEP, self );
-	}	
+  self->dt=Dictionary_GetDouble_WithDefault(self->dictionary,"dt",0.0);
+
+  if(self->dt==0)
+    {
+      if ( self->calcDtEP->hooks->count == 0 ) {
+        self->dt = 0.0;
+      }
+      else {
+        self->dt = _EntryPoint_Run_Class_Minimum_VoidPtr( self->calcDtEP, self );
+      }	
 		
-	if ( ( self->timeStep > 1 ) && ( self->limitTimeStepIncreaseRate == True ) ) {
-		double  maxAllowedDt = self->prevTimestepDt * ( 1 + self->maxTimeStepIncreasePercentage / 100 );
+      if ( ( self->timeStep > 1 ) && ( self->limitTimeStepIncreaseRate == True ) ) {
+        double  maxAllowedDt = self->prevTimestepDt * ( 1 + self->maxTimeStepIncreasePercentage / 100 );
 
-		if ( self->dt > maxAllowedDt ) {
-			int prevContextPrintingRank = Stream_GetPrintingRank( self->info );
-			/* We assume the dt calculation will be the same across all procs since its a global
-			  operation, so only print this once */
-			Stream_SetPrintingRank( self->info, 0 );
-			Journal_Printf( 
-				self->info, 
-				"In %s(): dt calculated was %g (time), but prev timestep's dt\n"
-				"was %g (time) and max allowed increase percentage is %.2f\n, thus limiting current\n"
-				"dt to %g (time).\n", 
-				__func__, 
-				self->dt, 
-				self->prevTimestepDt,
-				self->maxTimeStepIncreasePercentage, 
-				maxAllowedDt );
-			self->dt = maxAllowedDt;
-			Stream_SetPrintingRank( self->info, prevContextPrintingRank );
-		}
-	}
+        if ( self->dt > maxAllowedDt ) {
+          int prevContextPrintingRank = Stream_GetPrintingRank( self->info );
+          /* We assume the dt calculation will be the same across all procs since its a global
+             operation, so only print this once */
+          Stream_SetPrintingRank( self->info, 0 );
+          Journal_Printf( 
+                         self->info, 
+                         "In %s(): dt calculated was %g (time), but prev timestep's dt\n"
+                         "was %g (time) and max allowed increase percentage is %.2f\n, thus limiting current\n"
+                         "dt to %g (time).\n", 
+                         __func__, 
+                         self->dt, 
+                         self->prevTimestepDt,
+                         self->maxTimeStepIncreasePercentage, 
+                         maxAllowedDt );
+          self->dt = maxAllowedDt;
+          Stream_SetPrintingRank( self->info, prevContextPrintingRank );
+        }
+      }
 
-        if( self->maxTimeStepSize > 0.0 ) {
-           if( self->dt > self->maxTimeStepSize )
-              self->dt = self->maxTimeStepSize;
-        }
-	
-	return self->dt;
+      if( self->maxTimeStepSize > 0.0 ) {
+        if( self->dt > self->maxTimeStepSize )
+          self->dt = self->maxTimeStepSize;
+      }
+    }
+  return self->dt;
 }
 
 



More information about the CIG-COMMITS mailing list