Index: /issm/trunk-jpl/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16252)
+++ /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16253)
@@ -63,4 +63,5 @@
 	 *and prevent them from being erased during successive calls to iomodel->FetchConstants, iomodel->FetchData and 
 	 iomodel->DeleteData:*/
+	this->StartTrace();
 	this->DeclareIndependents();
 
@@ -223,4 +224,45 @@
 }
 /*}}}*/
+/*FUNCTION IoModel::StartTrace{{{*/
+void IoModel::StartTrace(void){
+
+	int  i;
+	bool autodiff = false;
+	bool keep=false;
+	IssmDouble gcTriggerRatio;
+	IssmDouble gcTriggerMaxSize;
+	IssmDouble obufsize;
+	IssmDouble lbufsize;
+	IssmDouble cbufsize;
+	IssmDouble tbufsize;
+
+	int my_rank=IssmComm::GetRank();
+
+	this->FetchData(&autodiff,AutodiffIsautodiffEnum);
+	if(autodiff){
+
+		#ifdef _HAVE_ADOLC_
+		/*Retrieve parameters: */
+		this->FetchData(&keep,AutodiffKeepEnum);
+		this->FetchData(&gcTriggerRatio,AutodiffGcTriggerRatioEnum);
+		this->FetchData(&gcTriggerMaxSize,AutodiffGcTriggerMaxSizeEnum);
+		this->FetchData(&obufsize,AutodiffObufsizeEnum);
+		this->FetchData(&lbufsize,AutodiffLbufsizeEnum);
+		this->FetchData(&cbufsize,AutodiffCbufsizeEnum);
+		this->FetchData(&tbufsize,AutodiffTbufsizeEnum);
+
+		/*Set garbage collection parameters: */
+		setStoreManagerControl(reCast<size_t>(gcTriggerRatio),reCast<size_t>(gcTriggerMaxSize));
+
+		/*Set buffer sizes: */
+
+		/*Start trace: */
+		if(keep)trace_on(my_rank,1);
+		else    trace_on(my_rank);
+		#endif
+	}
+
+}
+/*}}}*/
 /*FUNCTION IoModel::DeclareIndependents{{{*/
 void IoModel::DeclareIndependents(void){
@@ -234,7 +276,4 @@
 
 	int  dummy;
-	bool keep=false;
-
-	int my_rank=IssmComm::GetRank();
 
 	/*Initialize array detecting whether data[i] is an independent AD mode variable: */
@@ -246,10 +285,4 @@
 
 		#ifdef _HAVE_ADOLC_
-		/*Start trace*/
-		this->FetchData(&keep,AutodiffKeepEnum);
-		setStoreManagerControl(2.0,2000000);
-		if(keep)trace_on(my_rank,1);
-		else    trace_on(my_rank);
-
 		/*build dataset made of independent objects:*/
 		this->independent_objects=new DataSet();
Index: /issm/trunk-jpl/src/c/classes/IoModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.h	(revision 16252)
+++ /issm/trunk-jpl/src/c/classes/IoModel.h	(revision 16253)
@@ -83,4 +83,5 @@
 		FILE*       SetFilePointerToData(int* pcode,int* pvector_type, int data_enum);
 		void        DeclareIndependents(void);
+		void        StartTrace(void);
 		void        FetchIndependent(int dependent_enum);
 };
Index: /issm/trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 16252)
+++ /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 16253)
@@ -29,10 +29,10 @@
 		end % }}}
 		function obj = setdefaultparameters(obj) % {{{
-		obufsize     = 524288;
-		lbufsize     = 524288;
-		cbufsize     = 524288;
-		tbufsize     = 524288;
-		gcTriggerRatio=2.0;
-		gcTriggerMaxSize=2000000;
+		obj.obufsize     = 524288;
+		obj.lbufsize     = 524288;
+		obj.cbufsize     = 524288;
+		obj.tbufsize     = 524288;
+		obj.gcTriggerRatio=2.0;
+		obj.gcTriggerMaxSize=2000000;
 		end % }}}
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
