Index: /issm/trunk-jpl/externalpackages/freetype/install.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/freetype/install.sh	(revision 16242)
+++ /issm/trunk-jpl/externalpackages/freetype/install.sh	(revision 16243)
@@ -5,16 +5,16 @@
 rm -rf src
 rm -rf install
-rm -rf freetype-2.4.9
+rm -rf freetype-2.5.0
 mkdir src install
 
 #Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/freetype-2.4.9.tar.gz' 'freetype-2.4.9.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/freetype-2.5.0.tar.gz' 'freetype-2.5.0.tar.gz'
 
 #Untar 
-tar -zxvf  freetype-2.4.9.tar.gz
+tar -zxvf  freetype-2.5.0.tar.gz
 
 #Move freetype into src directory
-mv freetype-2.4.9/* src
-rm -rf freetype-2.4.9
+mv freetype-2.5.0/* src
+rm -rf freetype-2.5.0
 
 #Configure freetype
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16242)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16243)
@@ -38,7 +38,11 @@
 		#ifdef _HAVE_ADOLC_
 
-		/*Copy some parameters from IoModel to parameters dataset: */
+		/*Copy some parameters from IoModel to parameters dataset: {{{*/
 		parameters->AddObject(iomodel->CopyConstantObject(AutodiffKeepEnum));
-
+		parameters->AddObject(iomodel->CopyConstantObject(AutodiffObufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(AutodiffCbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(AutodiffLbufsizeEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(AutodiffTbufsizeEnum));
+		/*}}}*/
 		/*retrieve driver: {{{*/
 		iomodel->Constant(&autodiff_driver,AutodiffDriverEnum);
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16242)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16243)
@@ -29,4 +29,8 @@
 	AutodiffMassFluxSegmentsPresentEnum,
 	AutodiffKeepEnum,
+	AutodiffObufsizeEnum,
+	AutodiffLbufsizeEnum,
+	AutodiffCbufsizeEnum,
+	AutodiffTbufsizeEnum,
 	BalancethicknessSpcthicknessEnum,
 	BalancethicknessStabilizationEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16242)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16243)
@@ -37,4 +37,8 @@
 		case AutodiffMassFluxSegmentsPresentEnum : return "AutodiffMassFluxSegmentsPresent";
 		case AutodiffKeepEnum : return "AutodiffKeep";
+		case AutodiffObufsizeEnum : return "AutodiffObufsize";
+		case AutodiffLbufsizeEnum : return "AutodiffLbufsize";
+		case AutodiffCbufsizeEnum : return "AutodiffCbufsize";
+		case AutodiffTbufsizeEnum : return "AutodiffTbufsize";
 		case BalancethicknessSpcthicknessEnum : return "BalancethicknessSpcthickness";
 		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16242)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16243)
@@ -37,4 +37,8 @@
 	      else if (strcmp(name,"AutodiffMassFluxSegmentsPresent")==0) return AutodiffMassFluxSegmentsPresentEnum;
 	      else if (strcmp(name,"AutodiffKeep")==0) return AutodiffKeepEnum;
+	      else if (strcmp(name,"AutodiffObufsize")==0) return AutodiffObufsizeEnum;
+	      else if (strcmp(name,"AutodiffLbufsize")==0) return AutodiffLbufsizeEnum;
+	      else if (strcmp(name,"AutodiffCbufsize")==0) return AutodiffCbufsizeEnum;
+	      else if (strcmp(name,"AutodiffTbufsize")==0) return AutodiffTbufsizeEnum;
 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
 	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
@@ -133,12 +137,12 @@
 	      else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
 	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
-	      else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
+         else stage=2;
+   }
+   if(stage==2){
+	      if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
 	      else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
 	      else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
 	      else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
-         else stage=2;
-   }
-   if(stage==2){
-	      if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
 	      else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
 	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
@@ -256,12 +260,12 @@
 	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
 	      else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
-	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
 	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
 	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
 	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
-         else stage=3;
-   }
-   if(stage==3){
-	      if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
+	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
 	      else if (strcmp(name,"ThermalIsdynamicbasalspc")==0) return ThermalIsdynamicbasalspcEnum;
 	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
@@ -379,12 +383,12 @@
 	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
 	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
-	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"Matpar")==0) return MatparEnum;
 	      else if (strcmp(name,"Node")==0) return NodeEnum;
 	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
 	      else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
-         else stage=4;
-   }
-   if(stage==4){
-	      if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
 	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
 	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
@@ -502,12 +506,12 @@
 	      else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
 	      else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
-	      else if (strcmp(name,"GiaW")==0) return GiaWEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"GiaW")==0) return GiaWEnum;
 	      else if (strcmp(name,"P0")==0) return P0Enum;
 	      else if (strcmp(name,"P1")==0) return P1Enum;
 	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
-         else stage=5;
-   }
-   if(stage==5){
-	      if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
+	      else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
 	      else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
 	      else if (strcmp(name,"P2")==0) return P2Enum;
Index: /issm/trunk-jpl/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 16242)
+++ /issm/trunk-jpl/src/m/classes/autodiff.m	(revision 16243)
@@ -5,10 +5,15 @@
 
 classdef autodiff
-	properties (SetAccess=public) 
-		isautodiff   = false;
+	properties (SetAccess=public)  
+		% {{{isautodiff   = false;
 		dependents   = {};
 		independents = {};
 		driver       = 'fos_forward';
-	end
+		obufsize     = NaN;
+		lbufsize     = NaN;
+		cbufsize     = NaN;
+		tbufsize     = NaN;
+		end
+		%}}}
 	methods
 		function obj = autodiff(varargin) % {{{
@@ -21,5 +26,8 @@
 		end % }}}
 		function obj = setdefaultparameters(obj) % {{{
-
+		obufsize     = 524288;
+		lbufsize     = 524288;
+		cbufsize     = 524288;
+		tbufsize     = 524288;
 		end % }}}
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
@@ -30,4 +38,10 @@
 			%Driver value:
 			md = checkfield(md,'autodiff.driver','values',{'fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'});
+			
+			%buffer values: 
+			md = checkfield(md,'autodiff.obufsize','>=',524288);
+			md = checkfield(md,'autodiff.lbufsize','>=',524288);
+			md = checkfield(md,'autodiff.cbufsize','>=',524288);
+			md = checkfield(md,'autodiff.tbufsize','>=',524288);
 
 			%go through our dependents and independents and check consistency: 
@@ -48,4 +62,8 @@
 			fielddisplay(obj,'independents','list of independent variables');
 			fielddisplay(obj,'driver','ADOLC driver (''fos_forward'' or ''fov_forward'')');
+			fielddisplay(obj,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+			fielddisplay(obj,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+			fielddisplay(obj,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+			fielddisplay(obj,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
 		end % }}}
 		function marshall(obj,md,fid) % {{{
@@ -61,4 +79,10 @@
 			end
 
+			%buffer sizes {{{
+			WriteData(fid,'data',obj,'fieldname','obufsize','enum',AutodiffObufsizeEnum(),'format','Double');
+			WriteData(fid,'data',obj,'fieldname','lbufsize','enum',AutodiffLbufsizeEnum(),'format','Double');
+			WriteData(fid,'data',obj,'fieldname','cbufsize','enum',AutodiffCbufsizeEnum(),'format','Double');
+			WriteData(fid,'data',obj,'fieldname','tbufsize','enum',AutodiffTbufsizeEnum(),'format','Double');
+			%}}}
 			%process dependent variables {{{
 			num_dependent_objects=numel(obj.dependents);
Index: /issm/trunk-jpl/src/m/classes/autodiff.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 16242)
+++ /issm/trunk-jpl/src/m/classes/autodiff.py	(revision 16243)
@@ -20,5 +20,8 @@
 		self.independents = []
 		self.driver       = 'fos_forward'
-
+		self.obufsize     = float('NaN')
+		self.lbufsize     = float('NaN')
+		self.cbufsize     = float('NaN')
+		self.tbufsize     = float('NaN')
 		if not len(args):
 			self.setdefaultparameters()
@@ -33,9 +36,16 @@
 		s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
 		s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
-
+		s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
 		return s
 	# }}}
 	def setdefaultparameters(self):    # {{{
-		return self
+		self.obufsize     = 524288
+		self.lbufsize     = 524288
+		self.cbufsize     = 524288
+		self.tbufsize     = 524288
+return self
 	# }}}
 	def checkconsistency(self,md,solution,analyses):    # {{{
@@ -43,5 +53,10 @@
 		#Early return 
 		if not self.isautodiff:
-			return md
+			return md 
+		
+		md = checkfield(md,'autodiff.obufsize','>=',524288)
+		md = checkfield(md,'autodiff.lbufsize','>=',524288)
+		md = checkfield(md,'autodiff.cbufsize','>=',524288)
+		md = checkfield(md,'autodiff.tbufsize','>=',524288)
 
 		#Driver value:
@@ -65,5 +80,11 @@
 			WriteData(fid,'data',False,'enum',AutodiffKeepEnum(),'format','Boolean')
 			return
-
+			
+		#buffer sizes {{{
+		WriteData(fid,'data',self,'fieldname','obufsize','enum',AutodiffObufsizeEnum(),'format','Double');
+		WriteData(fid,'data',self,'fieldname','lbufsize','enum',AutodiffLbufsizeEnum(),'format','Double');
+		WriteData(fid,'data',self,'fieldname','cbufsize','enum',AutodiffCbufsizeEnum(),'format','Double');
+		WriteData(fid,'data',self,'fieldname','tbufsize','enum',AutodiffTbufsizeEnum(),'format','Double');
+		#}}}
 		#process dependent variables {{{
 		num_dependent_objects=len(self.dependents)
@@ -84,5 +105,4 @@
 			WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3)
 		#}}}
-
 		#process independent variables {{{
 		num_independent_objects=len(self.independents)
@@ -100,5 +120,4 @@
 			WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3)
 		#}}}
-
 		#if driver is fos_forward, build index:  {{{
 		if strcmpi(self.driver,'fos_forward'):
@@ -118,5 +137,4 @@
 			WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer')
 		#}}}
-
 		#if driver is fos_reverse, build index:  {{{
 		if strcmpi(self.driver,'fos_reverse'):
@@ -136,5 +154,4 @@
 			WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer')
 		#}}}
-
 		#if driver is fov_forward, build indices:  {{{
 		if strcmpi(self.driver,'fov_forward'):
@@ -154,5 +171,4 @@
 			WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3)
 		#}}}
-
 		#deal with mass fluxes:  {{{
 		mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
@@ -165,5 +181,4 @@
 		WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
 		#}}}
-
 		#deal with trace keep on: {{{
 		keep=False
Index: /issm/trunk-jpl/src/m/enum/AutodiffCbufsizeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffCbufsizeEnum.m	(revision 16243)
+++ /issm/trunk-jpl/src/m/enum/AutodiffCbufsizeEnum.m	(revision 16243)
@@ -0,0 +1,11 @@
+function macro=AutodiffCbufsizeEnum()
+%AUTODIFFCBUFSIZEENUM - Enum of AutodiffCbufsize
+%
+%   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=AutodiffCbufsizeEnum()
+
+macro=StringToEnum('AutodiffCbufsize');
Index: /issm/trunk-jpl/src/m/enum/AutodiffLbufsizeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffLbufsizeEnum.m	(revision 16243)
+++ /issm/trunk-jpl/src/m/enum/AutodiffLbufsizeEnum.m	(revision 16243)
@@ -0,0 +1,11 @@
+function macro=AutodiffLbufsizeEnum()
+%AUTODIFFLBUFSIZEENUM - Enum of AutodiffLbufsize
+%
+%   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=AutodiffLbufsizeEnum()
+
+macro=StringToEnum('AutodiffLbufsize');
Index: /issm/trunk-jpl/src/m/enum/AutodiffObufsizeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffObufsizeEnum.m	(revision 16243)
+++ /issm/trunk-jpl/src/m/enum/AutodiffObufsizeEnum.m	(revision 16243)
@@ -0,0 +1,11 @@
+function macro=AutodiffObufsizeEnum()
+%AUTODIFFOBUFSIZEENUM - Enum of AutodiffObufsize
+%
+%   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=AutodiffObufsizeEnum()
+
+macro=StringToEnum('AutodiffObufsize');
Index: /issm/trunk-jpl/src/m/enum/AutodiffTbufsizeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/AutodiffTbufsizeEnum.m	(revision 16243)
+++ /issm/trunk-jpl/src/m/enum/AutodiffTbufsizeEnum.m	(revision 16243)
@@ -0,0 +1,11 @@
+function macro=AutodiffTbufsizeEnum()
+%AUTODIFFTBUFSIZEENUM - Enum of AutodiffTbufsize
+%
+%   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=AutodiffTbufsizeEnum()
+
+macro=StringToEnum('AutodiffTbufsize');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16242)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16243)
@@ -29,4 +29,8 @@
 def AutodiffMassFluxSegmentsPresentEnum(): return StringToEnum("AutodiffMassFluxSegmentsPresent")[0]
 def AutodiffKeepEnum(): return StringToEnum("AutodiffKeep")[0]
+def AutodiffObufsizeEnum(): return StringToEnum("AutodiffObufsize")[0]
+def AutodiffLbufsizeEnum(): return StringToEnum("AutodiffLbufsize")[0]
+def AutodiffCbufsizeEnum(): return StringToEnum("AutodiffCbufsize")[0]
+def AutodiffTbufsizeEnum(): return StringToEnum("AutodiffTbufsize")[0]
 def BalancethicknessSpcthicknessEnum(): return StringToEnum("BalancethicknessSpcthickness")[0]
 def BalancethicknessStabilizationEnum(): return StringToEnum("BalancethicknessStabilization")[0]
