Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/solutions/issm.cpp
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/solutions/issm.cpp	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/solutions/issm.cpp	(revision 13083)
@@ -14,6 +14,7 @@
 	bool  dakota_analysis,control_analysis,tao_analysis;
 
 	/*AD: */
+	bool autodiff=false;
 	#if _ADOLC_VERSION_ == 2
 	int      tape_stats[11];
 	#else
@@ -48,11 +49,7 @@
 
 	ISSMBOOT();
 
-	/*If running AD, then initialize the tape: */
-	#ifdef _HAVE_ADOLC_
-	trace_on(1);
-	#endif
-
+	
 	/*Initialize environments: Petsc, MPI, etc...: */
 	#ifdef _HAVE_PETSC_
 	ierr=PetscInitialize(&argc,&argv,(char*)0,"");  
@@ -111,12 +108,18 @@
 	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
 	femmodel->parameters->FindParam(&tao_analysis,InversionTaoEnum);
 	femmodel->parameters->FindParam(&profiling,DebugProfilingEnum); 
+	femmodel->parameters->FindParam(&autodiff,AutodiffIsautodiffEnum);
 
 	#ifdef _HAVE_MPI_
 	MPI_Barrier(MPI_COMM_WORLD); finish_init=MPI_Wtime();
 	#else
 	finish_init=(IssmPDouble)clock();
 	#endif
+	
+	/*If running AD, then initialize the tape: */
+	#ifdef _HAVE_ADOLC_
+	if(autodiff) trace_on(1);
+	#endif
 
 	_pprintLine_("call computational core:");
 	#ifdef _HAVE_MPI_
@@ -164,6 +167,21 @@
 
 	_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*/
 	pfclose(output_fid,lockfilename);
@@ -212,18 +230,6 @@
 	#endif
 	#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: */
 	ISSMEND();
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 13083)
@@ -11,9 +11,7 @@
 
 enum definitions{
 	/*Model fields {{{1*/
-	AutodiffForwardEnum,
 	AutodiffIsautodiffEnum, 
-	AutodiffReverseEnum,
 	BalancethicknessSpcthicknessEnum,
 	BalancethicknessStabilizationEnum,
 	BalancethicknessThickeningRateEnum,
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 13083)
@@ -17,9 +17,7 @@
    int  stage=1;
 
    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;
 	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
@@ -137,12 +135,12 @@
 	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
 	      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;
 	      else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
@@ -260,12 +258,12 @@
 	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
 	      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;
 	      else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
@@ -383,12 +381,12 @@
 	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
 	      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;
 	      else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 13083)
@@ -16,9 +16,7 @@
 
 	switch(en){
 
-		case AutodiffForwardEnum : return "AutodiffForward";
 		case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
-		case AutodiffReverseEnum : return "AutodiffReverse";
 		case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
 		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
 		case BalancethicknessThickeningRateEnum : return "BalancethicknessThickeningRate";
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 13083)
@@ -85,8 +85,6 @@
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));
 	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));
 	parameters->AddObject(iomodel->CopyConstantObject(InversionTaoEnum));
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.py
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.py	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.py	(revision 13083)
@@ -16,8 +16,6 @@
 	def __init__(self):
 		# {{{ Properties
 		self.isautodiff = False
-		self.forward    = True
-		self.reverse    = False
 
 		#set defaults
 		self.setdefaultparameters()
@@ -27,8 +25,6 @@
 		# {{{ Display
 		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
 		#}}}
 	def setdefaultparameters(self):
@@ -42,7 +38,5 @@
 
 	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: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.m	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/classes/autodiff.m	(revision 13083)
@@ -6,8 +6,6 @@
 classdef autodiff
 	properties (SetAccess=public) 
 		isautodiff = false;
-		forward    = true;
-		reverse    = false;
 	end
 	methods
 		function obj = autodiff(varargin) % {{{
@@ -28,14 +26,10 @@
 			disp(sprintf('   automatic differentiation parameters:'));
 
 			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
 end
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffReverseEnum.m
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffReverseEnum.m	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffReverseEnum.m	(revision 13083)
@@ -1,11 +0,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: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffForwardEnum.m
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffForwardEnum.m	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/AutodiffForwardEnum.m	(revision 13083)
@@ -1,11 +0,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: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 13083)
@@ -8,4 +8,4 @@
 %   Usage:
 %      macro=MaximumNumberOfEnums()
 
-macro=461;
+macro=459;
Index: /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13082)
+++ /u/astrid-r1b/morlighe/issmuci/trunk-jpl/../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 13083)
@@ -8,16 +8,6 @@
 
 """
 
-def AutodiffForwardEnum():
-	"""
-	AUTODIFFFORWARDENUM - Enum of AutodiffForward
-
-	   Usage:
-	      macro=AutodiffForwardEnum()
-	"""
-
-	return StringToEnum('AutodiffForward')[0]
-
 def AutodiffIsautodiffEnum():
 	"""
 	AUTODIFFISAUTODIFFENUM - Enum of AutodiffIsautodiff
@@ -28,16 +18,6 @@
 
 	return StringToEnum('AutodiffIsautodiff')[0]
 
-def AutodiffReverseEnum():
-	"""
-	AUTODIFFREVERSEENUM - Enum of AutodiffReverse
-
-	   Usage:
-	      macro=AutodiffReverseEnum()
-	"""
-
-	return StringToEnum('AutodiffReverse')[0]
-
 def BalancethicknessSpcthicknessEnum():
 	"""
 	BALANCETHICKNESSSPCTHICKNESSENUM - Enum of BalancethicknessSpcthickness
@@ -4626,5 +4606,5 @@
 	      macro=MaximumNumberOfEnums()
 	"""
 
-	return 461
+	return 459
 
