Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 19316)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 19317)
@@ -25,4 +25,5 @@
 	bool       time_adapt;
 	int        output_frequency;
+	int        recording_frequency;
 	int        domaintype,groundingline_migration,smb_model;
 	int        numoutputs;
@@ -42,4 +43,5 @@
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
 	femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
+	femmodel->parameters->FindParam(&recording_frequency,SettingsRecordingFrequencyEnum);
 	femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum);
 	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
@@ -57,4 +59,7 @@
 	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
+
+	//first, figure out if there was a check point, if so, do a reset of the FemModel* femmodel structure. 
+	if(recording_frequency)femmodel->Restart();
 
 	/*initialize: */
@@ -175,4 +180,9 @@
 			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results);
 		}
+		
+		if(recording_frequency&& step%recording_frequency==0){
+			if(VerboseSolution()) _printf0_("   checkpointing model \n");
+			femmodel->CheckPoint();
+		}
 
 		if(save_results){
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19316)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19317)
@@ -48,5 +48,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(DomainDimensionEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(SettingsRestartFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SettingsRecordingFrequencyEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ConstantsYtsEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(TimesteppingStartTimeEnum));
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19316)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19317)
@@ -293,5 +293,5 @@
 	SettingsLowmemEnum,
 	SettingsOutputFrequencyEnum,
-	SettingsRestartFrequencyEnum,
+	SettingsRecordingFrequencyEnum,
 	SettingsWaitonlockEnum,
 	DebugProfilingEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19316)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19317)
@@ -299,5 +299,5 @@
 		case SettingsLowmemEnum : return "SettingsLowmem";
 		case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency";
-		case SettingsRestartFrequencyEnum : return "SettingsRestartFrequency";
+		case SettingsRecordingFrequencyEnum : return "SettingsRecordingFrequency";
 		case SettingsWaitonlockEnum : return "SettingsWaitonlock";
 		case DebugProfilingEnum : return "DebugProfiling";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19316)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19317)
@@ -305,5 +305,5 @@
 	      else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
 	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
-	      else if (strcmp(name,"SettingsRestartFrequency")==0) return SettingsRestartFrequencyEnum;
+	      else if (strcmp(name,"SettingsRecordingFrequency")==0) return SettingsRecordingFrequencyEnum;
 	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
 	      else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
Index: /issm/trunk-jpl/src/m/classes/settings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/settings.m	(revision 19316)
+++ /issm/trunk-jpl/src/m/classes/settings.m	(revision 19317)
@@ -10,5 +10,5 @@
 		lowmem              = 0;
 		output_frequency    = 0;
-		restart_frequency   = 0;
+		recording_frequency   = 0;
 		waitonlock          = 0;
 		upload_server       = '';
@@ -60,5 +60,5 @@
 
 			%checkpoints frequency, by default never: 
-			self.restart_frequency=0;
+			self.recording_frequency=0;
 
 			%this option can be activated to load automatically the results
@@ -78,5 +78,5 @@
 			md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
-			md = checkfield(md,'fieldname','settings.restart_frequency','numel',[1],'>=',0);
+			md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
 			md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
 
@@ -89,5 +89,5 @@
 			fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
 			fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
-			fielddisplay(self,'restart_frequency','frequency at which the runs are being checkpointed, allowing for a restart');
+			fielddisplay(self,'recording_frequency','frequency at which the runs are being checkpointed, allowing for a restart');
 			fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
 			fielddisplay(self,'upload_server','server hostname where model should be uploaded');
@@ -103,5 +103,5 @@
 			WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer');
-			WriteData(fid,'object',self,'fieldname','restart_frequency','format','Integer');
+			WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer');
 			if self.waitonlock>0,
 				WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean');
Index: /issm/trunk-jpl/src/m/classes/settings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/settings.py	(revision 19316)
+++ /issm/trunk-jpl/src/m/classes/settings.py	(revision 19317)
@@ -17,5 +17,5 @@
 		self.lowmem              = 0
 		self.output_frequency    = 0
-		self.restart_frequency    = 0
+		self.recording_frequency    = 0
 		self.waitonlock          = 0
 
@@ -31,5 +31,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
 		string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps"))
-		string="%s\n%s"%(string,fielddisplay(self,"restart_frequency","frequency at which the runs are being checkpointed, allowing for a restart"))
+		string="%s\n%s"%(string,fielddisplay(self,"recording_frequency","frequency at which the runs are being checkpointed, allowing for a restart"))
 		string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0"))
 		return string
@@ -47,5 +47,5 @@
 
 		#checkpoints frequency, by default never: 
-		self.restart_frequency=0
+		self.recording_frequency=0
 
 
@@ -63,5 +63,5 @@
 		md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)
-		md = checkfield(md,'fieldname','settings.restart_frequency','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)
 		md = checkfield(md,'fieldname','settings.waitonlock','numel',[1])
 
@@ -73,5 +73,5 @@
 		WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer')
-		WriteData(fid,'object',self,'fieldname','restart_frequency','format','Integer')
+		WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer')
 		if self.waitonlock>0:
 			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19316)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19317)
@@ -291,5 +291,5 @@
 def SettingsLowmemEnum(): return StringToEnum("SettingsLowmem")[0]
 def SettingsOutputFrequencyEnum(): return StringToEnum("SettingsOutputFrequency")[0]
-def SettingsRestartFrequencyEnum(): return StringToEnum("SettingsRestartFrequency")[0]
+def SettingsRecordingFrequencyEnum(): return StringToEnum("SettingsRecordingFrequency")[0]
 def SettingsWaitonlockEnum(): return StringToEnum("SettingsWaitonlock")[0]
 def DebugProfilingEnum(): return StringToEnum("DebugProfiling")[0]
Index: sm/trunk-jpl/src/m/enum/SettingsRestartFrequencyEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SettingsRestartFrequencyEnum.m	(revision 19316)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SettingsRestartFrequencyEnum()
-%SETTINGSRESTARTFREQUENCYENUM - Enum of SettingsRestartFrequency
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SettingsRestartFrequencyEnum()
-
-macro=StringToEnum('SettingsRestartFrequency');
