Index: /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13082)
+++ /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13083)
@@ -12,7 +12,5 @@
 enum definitions{
 	/*Model fields {{{1*/
-	AutodiffForwardEnum,
 	AutodiffIsautodiffEnum, 
-	AutodiffReverseEnum,
 	BalancethicknessSpcthicknessEnum,
 	BalancethicknessStabilizationEnum,
Index: /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13082)
+++ /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13083)
@@ -17,7 +17,5 @@
 	switch(en){
 
-		case AutodiffForwardEnum : return "AutodiffForward";
 		case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
-		case AutodiffReverseEnum : return "AutodiffReverse";
 		case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
 		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13082)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13083)
@@ -86,6 +86,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(AutodiffForwardEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(AutodiffReverseEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(QmuIsdakotaEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(InversionIscontrolEnum));
Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13082)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13083)
@@ -18,7 +18,5 @@
 
    if(stage==1){
-	      if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
-	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
-	      else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
+	      if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
 	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
@@ -138,10 +136,10 @@
 	      else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
 	      else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
+	      else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
+	      else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
-	      else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
-	      else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
+	      if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
 	      else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
 	      else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
@@ -261,10 +259,10 @@
 	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
 	      else if (strcmp(name,"Contour")==0) return ContourEnum;
+	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
+	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
-	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
-	      else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
+	      if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
 	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
 	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
@@ -384,10 +382,10 @@
 	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
 	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+	      else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
+	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
-	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
-	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+	      if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
 	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
 	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
Index: /issm/trunk-jpl/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 13082)
+++ /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 13083)
@@ -15,4 +15,5 @@
 
 	/*AD: */
+	bool autodiff=false;
 	#if _ADOLC_VERSION_ == 2
 	int      tape_stats[11];
@@ -49,9 +50,5 @@
 	ISSMBOOT();
 
-	/*If running AD, then initialize the tape: */
-	#ifdef _HAVE_ADOLC_
-	trace_on(1);
-	#endif
-
+	
 	/*Initialize environments: Petsc, MPI, etc...: */
 	#ifdef _HAVE_PETSC_
@@ -112,4 +109,5 @@
 	femmodel->parameters->FindParam(&tao_analysis,InversionTaoEnum);
 	femmodel->parameters->FindParam(&profiling,DebugProfilingEnum); 
+	femmodel->parameters->FindParam(&autodiff,AutodiffIsautodiffEnum);
 
 	#ifdef _HAVE_MPI_
@@ -117,4 +115,9 @@
 	#else
 	finish_init=(IssmPDouble)clock();
+	#endif
+	
+	/*If running AD, then initialize the tape: */
+	#ifdef _HAVE_ADOLC_
+	if(autodiff) trace_on(1);
 	#endif
 
@@ -165,4 +168,19 @@
 	_pprintLine_("write results to disk:");
 	OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
+	
+	/*If running AD, close our tape, print statistics: {{{*/
+	#ifdef _HAVE_ADOLC_
+	if(autodiff){
+		trace_off();
+		tapestats(1,tape_stats); //reading of tape statistics
+		_pprintLine_("   ADOLC statistics: ");
+		_pprintLine_("   "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0]);
+		_pprintLine_("   "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1]);
+		_pprintLine_("   "<<setw(45)<<left<<"Maximal number of live active variables: " <<tape_stats[2]);
+		_pprintLine_("   "<<setw(45)<<left<<"Size of value stack (number of overwrites): " <<tape_stats[3]);
+		_pprintLine_("   "<<setw(45)<<left<<"Buffer size (a multiple of eight): " <<tape_stats[4]);
+		_pprintLine_("   "<<setw(45)<<left<<"Total number of operations recorded: " <<tape_stats[5]);
+	}
+	#endif  /*}}}*/
 
 	/*Close output and petsc options file and write lock file if requested*/
@@ -213,16 +231,4 @@
 	#endif
 
-	/*If running AD, close our tape, print statistics: */
-	#ifdef _HAVE_ADOLC_
-	trace_off();
-	tapestats(1,tape_stats); //reading of tape statistics
-	_pprintLine_("   ADOLC statistics: ");
-	_pprintLine_("   "<<setw(45)<<left<<"Number of independents: " <<tape_stats[0]);
-	_pprintLine_("   "<<setw(45)<<left<<"Number of dependents: " <<tape_stats[1]);
-	_pprintLine_("   "<<setw(45)<<left<<"Maximal number of live active variables: " <<tape_stats[2]);
-	_pprintLine_("   "<<setw(45)<<left<<"Size of value stack (number of overwrites): " <<tape_stats[3]);
-	_pprintLine_("   "<<setw(45)<<left<<"Buffer size (a multiple of eight): " <<tape_stats[4]);
-	_pprintLine_("   "<<setw(45)<<left<<"Total number of operations recorded: " <<tape_stats[5]);
-	#endif
 	
 	/*end module: */
Index: /issm/trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 13082)
+++ /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 13083)
@@ -7,6 +7,4 @@
 	properties (SetAccess=public) 
 		isautodiff = false;
-		forward    = true;
-		reverse    = false;
 	end
 	methods
@@ -29,12 +27,8 @@
 
 			fielddisplay(obj,'isautodiff','indicates if the automatic differentiation is activated');
-			fielddisplay(obj,'forward','forward differentiation');
-			fielddisplay(obj,'reverse','backward differentiation');
 
 		end % }}}
 		function marshall(obj,fid) % {{{
 			WriteData(fid,'object',obj,'fieldname','isautodiff','format','Boolean');
-			WriteData(fid,'object',obj,'fieldname','forward','format','Boolean');
-			WriteData(fid,'object',obj,'fieldname','reverse','format','Boolean');
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/autodiff.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 13082)
+++ /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 13083)
@@ -17,6 +17,4 @@
 		# {{{ Properties
 		self.isautodiff = False
-		self.forward    = True
-		self.reverse    = False
 
 		#set defaults
@@ -28,6 +26,4 @@
 		string='   automatic differentiation parameters:'
 		string="%s\n%s"%(string,fielddisplay(self,'isautodiff','indicates if the automatic differentiation is activated'))
-		string="%s\n%s"%(string,fielddisplay(self,'forward','forward differentiation'))
-		string="%s\n%s"%(string,fielddisplay(self,'reverse','backward differentiation'))
 		return string
 		#}}}
@@ -43,6 +39,4 @@
 	def marshall(self,fid):    # {{{
 		WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean')
-		WriteData(fid,'object',self,'fieldname','forward','format','Boolean')
-		WriteData(fid,'object',self,'fieldname','reverse','format','Boolean')
 	# }}}
 
Index: sm/trunk-jpl/src/m/enum/AutodiffForwardEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffForwardEnum.m	(revision 13082)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=AutodiffForwardEnum()
-%AUTODIFFFORWARDENUM - Enum of AutodiffForward
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=AutodiffForwardEnum()
-
-macro=StringToEnum('AutodiffForward');
Index: sm/trunk-jpl/src/m/enum/AutodiffReverseEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffReverseEnum.m	(revision 13082)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=AutodiffReverseEnum()
-%AUTODIFFREVERSEENUM - Enum of AutodiffReverse
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      macro=AutodiffReverseEnum()
-
-macro=StringToEnum('AutodiffReverse');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13082)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13083)
@@ -9,14 +9,4 @@
 """
 
-def AutodiffForwardEnum():
-	"""
-	AUTODIFFFORWARDENUM - Enum of AutodiffForward
-
-	   Usage:
-	      macro=AutodiffForwardEnum()
-	"""
-
-	return StringToEnum('AutodiffForward')[0]
-
 def AutodiffIsautodiffEnum():
 	"""
@@ -29,14 +19,4 @@
 	return StringToEnum('AutodiffIsautodiff')[0]
 
-def AutodiffReverseEnum():
-	"""
-	AUTODIFFREVERSEENUM - Enum of AutodiffReverse
-
-	   Usage:
-	      macro=AutodiffReverseEnum()
-	"""
-
-	return StringToEnum('AutodiffReverse')[0]
-
 def BalancethicknessSpcthicknessEnum():
 	"""
@@ -4627,4 +4607,4 @@
 	"""
 
-	return 461
-
+	return 459
+
Index: /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13082)
+++ /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13083)
@@ -9,3 +9,3 @@
 %      macro=MaximumNumberOfEnums()
 
-macro=461;
+macro=459;
