Index: /issm/trunk-jpl/src/c/Container/Container.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Container.h	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Container.h	(revision 12466)
@@ -6,4 +6,5 @@
 #define  _CONTAINER_CONTAINER_H_
 
+#include "../include/include.h"
 #include "./DataSet.h"
 #include "./Constraints.h"
Index: /issm/trunk-jpl/src/c/Container/DataSet.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/DataSet.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/DataSet.cpp	(revision 12466)
@@ -60,9 +60,9 @@
 	if(sorted_ids){
 		copy->sorted_ids=xNew<int>(objects.size());
-		memcpy(copy->sorted_ids,sorted_ids,objects.size()*sizeof(int));
+		xMemCpy<int>(copy->sorted_ids,sorted_ids,objects.size());
 	}
 	if(id_offsets){
 		copy->id_offsets=xNew<int>(objects.size());
-		memcpy(copy->id_offsets,id_offsets,objects.size()*sizeof(int));
+		xMemCpy<int>(copy->id_offsets,id_offsets,objects.size());
 	}
 
Index: /issm/trunk-jpl/src/c/Container/Elements.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Elements.cpp	(revision 12466)
@@ -173,6 +173,6 @@
 	int    *resultssizes  = NULL;
 	int    *resultssteps  = NULL;
-	double *resultstimes = NULL;
-	double *vector_serial= NULL;
+	IssmDouble *resultstimes = NULL;
+	IssmDouble *vector_serial= NULL;
 	Vector*     vector       = NULL;
 	bool   io_gather;
@@ -217,5 +217,5 @@
 			resultsenums=xNew<int>(numberofresults);
 			resultssizes=xNew<int>(numberofresults);
-			resultstimes=xNew<double>(numberofresults);
+			resultstimes=xNew<IssmDouble>(numberofresults);
 			resultssteps=xNew<int>(numberofresults);
 		}
@@ -250,5 +250,5 @@
 			/*clean up*/
 			xdelete(&vector);
-			xDelete<double>(vector_serial);
+			xDelete<IssmDouble>(vector_serial);
 		}
 	}
@@ -272,5 +272,5 @@
 	xDelete<int>(resultssizes);
 	xDelete<int>(resultssteps);
-	xDelete<double>(resultstimes);
+	xDelete<IssmDouble>(resultstimes);
 	delete patch;
 }
Index: /issm/trunk-jpl/src/c/Container/Inputs.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Inputs.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Inputs.cpp	(revision 12466)
@@ -93,6 +93,6 @@
 }
 /*}}}*/
-/*FUNCTION Inputs::GetInputValue(double* pvalue,int enum-type){{{*/
-void Inputs::GetInputValue(double* pvalue,int enum_type){
+/*FUNCTION Inputs::GetInputValue(IssmDouble* pvalue,int enum-type){{{*/
+void Inputs::GetInputValue(IssmDouble* pvalue,int enum_type){
 
 	vector<Object*>::iterator object;
@@ -122,5 +122,5 @@
 /*}}}*/
 /*FUNCTION Inputs::GetInputAverage{{{*/
-void Inputs::GetInputAverage(double* pvalue,int enum_type){
+void Inputs::GetInputAverage(IssmDouble* pvalue,int enum_type){
 
 	vector<Object*>::iterator object;
@@ -206,5 +206,5 @@
 /*}}}*/
 /*FUNCTION Inputs::ConstrainMin{{{*/
-void  Inputs::ConstrainMin(int constrain_enum, double minimum){
+void  Inputs::ConstrainMin(int constrain_enum, IssmDouble minimum){
 	   
 	Input* constrain_input=NULL; 
@@ -220,8 +220,8 @@
 /*}}}*/
 /*FUNCTION Inputs::InfinityNorm{{{*/
-double Inputs::InfinityNorm(int enumtype){
-
-	/*Output*/
-	double norm;
+IssmDouble Inputs::InfinityNorm(int enumtype){
+
+	/*Output*/
+	IssmDouble norm;
 
 	/*Get input*/
@@ -241,8 +241,8 @@
 /*}}}*/
 /*FUNCTION Inputs::Max{{{*/
-double Inputs::Max(int enumtype){
-
-	/*Output*/
-	double max;
+IssmDouble Inputs::Max(int enumtype){
+
+	/*Output*/
+	IssmDouble max;
 
 	/*Get input*/
@@ -262,8 +262,8 @@
 /*}}}*/
 /*FUNCTION Inputs::MaxAbs{{{*/
-double Inputs::MaxAbs(int enumtype){
-
-	/*Output*/
-	double max;
+IssmDouble Inputs::MaxAbs(int enumtype){
+
+	/*Output*/
+	IssmDouble max;
 
 	/*Get input*/
@@ -283,8 +283,8 @@
 /*}}}*/
 /*FUNCTION Inputs::Min{{{*/
-double Inputs::Min(int enumtype){
-
-	/*Output*/
-	double min;
+IssmDouble Inputs::Min(int enumtype){
+
+	/*Output*/
+	IssmDouble min;
 
 	/*Get input*/
@@ -304,8 +304,8 @@
 /*}}}*/
 /*FUNCTION Inputs::MinAbs{{{*/
-double Inputs::MinAbs(int enumtype){
-
-	/*Output*/
-	double min;
+IssmDouble Inputs::MinAbs(int enumtype){
+
+	/*Output*/
+	IssmDouble min;
 
 	/*Get input*/
@@ -406,5 +406,5 @@
 /*}}}*/
 /*FUNCTION Inputs::AXPY{{{*/
-void  Inputs::AXPY(int MeshYEnum, double scalar, int MeshXEnum){
+void  Inputs::AXPY(int MeshYEnum, IssmDouble scalar, int MeshXEnum){
 	   
 	Input* xinput=NULL;
Index: /issm/trunk-jpl/src/c/Container/Inputs.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Inputs.h	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Inputs.h	(revision 12466)
@@ -31,20 +31,20 @@
 		int     AddInput(Input* in_input);
 		void    ChangeEnum(int enumtype,int new_enumtype);
-		void    ConstrainMin(int constrain_enum, double minimum);
+		void    ConstrainMin(int constrain_enum, IssmDouble minimum);
 		int     DeleteInput(int enum_type);
 		void    DuplicateInput(int original_enum,int new_enum);
 		Input*  GetInput(int enum_name);
 		Inputs* SpawnTriaInputs(int* indices);
-		void    AXPY(int MeshYEnum, double scalar, int MeshXEnum);
-		double  InfinityNorm(int enumtype);
-		double  Max(int enumtype);
-		double  MaxAbs(int enumtype);
-		double  Min(int enumtype);
-		double  MinAbs(int enumtype);
+		void    AXPY(int MeshYEnum, IssmDouble scalar, int MeshXEnum);
+		IssmDouble  InfinityNorm(int enumtype);
+		IssmDouble  Max(int enumtype);
+		IssmDouble  MaxAbs(int enumtype);
+		IssmDouble  Min(int enumtype);
+		IssmDouble  MinAbs(int enumtype);
 		
-		void GetInputAverage(double* pvalue, int enum_type);
+		void GetInputAverage(IssmDouble* pvalue, int enum_type);
 		void GetInputValue(bool* pvalue,int enum_type);
 		void GetInputValue(int* pvalue,int enum_type);
-		void GetInputValue(double* pvalue,int enum_type);
+		void GetInputValue(IssmDouble* pvalue,int enum_type);
 
 		void Configure(Parameters* parameters);
Index: /issm/trunk-jpl/src/c/Container/Observations.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Observations.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Observations.cpp	(revision 12466)
@@ -34,12 +34,12 @@
 }
 /*}}}*/
-/*FUNCTION Observations::Observations(double* observations_list,double* x,double* y,int n,Options* options){{{*/
-Observations::Observations(double* observations_list,double* x,double* y,int n,Options* options){
+/*FUNCTION Observations::Observations(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options){{{*/
+Observations::Observations(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options){
 
 	/*Intermediaries*/
 	int          i,j,maxdepth,level,counter,index;
 	int          xi,yi;
-	double       xmin,xmax,ymin,ymax;
-	double       offset,minlength,minspacing,mintrimming,maxtrimming;
+	IssmDouble       xmin,xmax,ymin,ymax;
+	IssmDouble       offset,minlength,minspacing,mintrimming,maxtrimming;
 	int         *indices     = NULL;
 	Observation *observation = NULL;
@@ -69,5 +69,5 @@
 	else{
 		maxdepth = 30;
-		minlength=max(xmax-xmin,ymax-ymin)/double((1L<<maxdepth)-1);
+		minlength=max(xmax-xmin,ymax-ymin)/IssmDouble((1L<<maxdepth)-1);
 	}
 
@@ -117,10 +117,10 @@
 /*Methods*/
 /*FUNCTION Observations::ClosestObservation{{{*/
-void Observations::ClosestObservation(double *px,double *py,double *pobs,double x_interp,double y_interp,double radius){
+void Observations::ClosestObservation(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius){
 
 	/*Output and Intermediaries*/
 	bool         stop;
 	int          nobs,i,index;
-	double       h2,hmin2,radius2;
+	IssmDouble       h2,hmin2,radius2;
 	int         *indices      = NULL;
 	Observation *observation  = NULL;
@@ -165,17 +165,17 @@
 
 }/*}}}*/
-/*FUNCTION Observations::ObservationList(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){{{*/
-void Observations::ObservationList(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){
+/*FUNCTION Observations::ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata){{{*/
+void Observations::ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata){
 
 	/*Output and Intermediaries*/
 	bool         stop;
 	int          nobs,tempnobs,i,j,k,n,counter;
-	double       h2,radius2;
+	IssmDouble       h2,radius2;
 	int         *indices      = NULL;
 	int         *tempindices  = NULL;
-	double      *dists        = NULL;
-	double      *x            = NULL;
-	double      *y            = NULL;
-	double      *obs          = NULL;
+	IssmDouble      *dists        = NULL;
+	IssmDouble      *x            = NULL;
+	IssmDouble      *y            = NULL;
+	IssmDouble      *obs          = NULL;
 	Observation *observation  = NULL;
 
@@ -190,5 +190,5 @@
 	if(tempnobs){
 		indices = xNew<int>(tempnobs);
-		dists   = xNew<double>(tempnobs);
+		dists   = xNew<IssmDouble>(tempnobs);
 	}
 	nobs = 0;
@@ -225,12 +225,12 @@
 		}
 	}  
-	xDelete<double>(dists);
+	xDelete<IssmDouble>(dists);
 	xDelete<int>(tempindices);
 
 	if(nobs){
 		/*Allocate vectors*/
-		x   = xNew<double>(nobs);
-		y   = xNew<double>(nobs);
-		obs = xNew<double>(nobs);
+		x   = xNew<IssmDouble>(nobs);
+		y   = xNew<IssmDouble>(nobs);
+		obs = xNew<IssmDouble>(nobs);
 
 		/*Loop over all observations and fill in x, y and obs*/
@@ -248,12 +248,12 @@
 	*pnobs=nobs;
 }/*}}}*/
-/*FUNCTION Observations::ObservationList(double **px,double **py,double **pobs,int* pnobs){{{*/
-void Observations::ObservationList(double **px,double **py,double **pobs,int* pnobs){
+/*FUNCTION Observations::ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs){{{*/
+void Observations::ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs){
 
 	/*Output and Intermediaries*/
 	int          nobs;
-	double      *x            = NULL;
-	double      *y            = NULL;
-	double      *obs          = NULL;
+	IssmDouble      *x            = NULL;
+	IssmDouble      *y            = NULL;
+	IssmDouble      *obs          = NULL;
 	Observation *observation  = NULL;
 
@@ -261,7 +261,7 @@
 
 	if(nobs){
-		x   = xNew<double>(nobs);
-		y   = xNew<double>(nobs);
-		obs = xNew<double>(nobs);
+		x   = xNew<IssmDouble>(nobs);
+		y   = xNew<IssmDouble>(nobs);
+		obs = xNew<IssmDouble>(nobs);
 		for(int i=0;i<this->Size();i++){
 			observation=(Observation*)this->GetObjectByOffset(i);
@@ -277,13 +277,13 @@
 }/*}}}*/
 /*FUNCTION Observations::InterpolationIDW{{{*/
-void Observations::InterpolationIDW(double *pprediction,double x_interp,double y_interp,double radius,int mindata,int maxdata,double power){
+void Observations::InterpolationIDW(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,IssmDouble power){
 
 	/*Intermediaries*/
 	int    i,n_obs;
-	double prediction;
-	double numerator,denominator,h,weight;
-	double *x   = NULL;
-	double *y   = NULL;
-	double *obs = NULL;
+	IssmDouble prediction;
+	IssmDouble numerator,denominator,h,weight;
+	IssmDouble *x   = NULL;
+	IssmDouble *y   = NULL;
+	IssmDouble *obs = NULL;
 
 	/*Some checks*/
@@ -321,24 +321,24 @@
 	/*clean-up*/
 	*pprediction = prediction;
-	xDelete<double>(x);
-	xDelete<double>(y);
-	xDelete<double>(obs);
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+	xDelete<IssmDouble>(obs);
 }/*}}}*/
 /*FUNCTION Observations::InterpolationKriging{{{*/
-void Observations::InterpolationKriging(double *pprediction,double *perror,double x_interp,double y_interp,double radius,int mindata,int maxdata,Variogram* variogram){
+void Observations::InterpolationKriging(IssmDouble *pprediction,IssmDouble *perror,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,Variogram* variogram){
 
 	/*Intermediaries*/
 	int           i,j,n_obs;
-	double        prediction,error;
-	double        numerator,denominator,ratio;
-	double       *x            = NULL;
-	double       *y            = NULL;
-	double       *obs          = NULL;
-	double       *Gamma        = NULL;
-	double       *GinvG0       = NULL;
-	double       *Ginv1        = NULL;
-	double       *GinvZ        = NULL;
-	double       *gamma0       = NULL;
-	double       *ones         = NULL;
+	IssmDouble        prediction,error;
+	IssmDouble        numerator,denominator,ratio;
+	IssmDouble       *x            = NULL;
+	IssmDouble       *y            = NULL;
+	IssmDouble       *obs          = NULL;
+	IssmDouble       *Gamma        = NULL;
+	IssmDouble       *GinvG0       = NULL;
+	IssmDouble       *Ginv1        = NULL;
+	IssmDouble       *GinvZ        = NULL;
+	IssmDouble       *gamma0       = NULL;
+	IssmDouble       *ones         = NULL;
 
 	/*Some checks*/
@@ -360,7 +360,7 @@
 
 	/*Allocate intermediary matrix and vectors*/
-	Gamma  = xNew<double>(n_obs*n_obs);
-	gamma0 = xNew<double>(n_obs);
-	ones   = xNew<double>(n_obs);
+	Gamma  = xNew<IssmDouble>(n_obs*n_obs);
+	gamma0 = xNew<IssmDouble>(n_obs);
+	ones   = xNew<IssmDouble>(n_obs);
 
 	/*First: Create semivariogram matrix for observations*/
@@ -401,20 +401,20 @@
 	*pprediction = prediction;
 	*perror = error;
-	xDelete<double>(x);
-	xDelete<double>(y);
-	xDelete<double>(obs);
-	xDelete<double>(Gamma);
-	xDelete<double>(gamma0);
-	xDelete<double>(ones);
-	xDelete<double>(GinvG0);
-	xDelete<double>(Ginv1);
-	xDelete<double>(GinvZ);
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+	xDelete<IssmDouble>(obs);
+	xDelete<IssmDouble>(Gamma);
+	xDelete<IssmDouble>(gamma0);
+	xDelete<IssmDouble>(ones);
+	xDelete<IssmDouble>(GinvG0);
+	xDelete<IssmDouble>(Ginv1);
+	xDelete<IssmDouble>(GinvZ);
 
 }/*}}}*/
 /*FUNCTION Observations::InterpolationNearestNeighbor{{{*/
-void Observations::InterpolationNearestNeighbor(double *pprediction,double x_interp,double y_interp,double radius){
+void Observations::InterpolationNearestNeighbor(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius){
 
 	/*Intermediaries*/
-	double        x,y,obs;
+	IssmDouble        x,y,obs;
 
 	/*Get clostest observation*/
@@ -425,5 +425,5 @@
 }/*}}}*/
 /*FUNCTION Observations::QuadtreeColoring{{{*/
-void Observations::QuadtreeColoring(double* A,double *x,double *y,int n){
+void Observations::QuadtreeColoring(IssmDouble* A,IssmDouble *x,IssmDouble *y,int n){
 
 	int xi,yi,level;
@@ -432,18 +432,18 @@
 		this->quadtree->IntergerCoordinates(&xi,&yi,x[i],y[i]);
 		this->quadtree->QuadtreeDepth(&level,xi,yi);
-		A[i]=(double)level;
+		A[i]=(IssmDouble)level;
 	}
 
 }/*}}}*/
 /*FUNCTION Observations::Variomap{{{*/
-void Observations::Variomap(double* gamma,double *x,int n){
+void Observations::Variomap(IssmDouble* gamma,IssmDouble *x,int n){
 
 	/*Output and Intermediaries*/
 	int          i,j,k;
-	double       distance;
+	IssmDouble       distance;
 	Observation *observation1 = NULL;
 	Observation *observation2 = NULL;
 
-	double *counter = xNew<double>(n);
+	IssmDouble *counter = xNew<IssmDouble>(n);
 	for(j=0;j<n;j++) counter[j] = 0.0;
 	for(j=0;j<n;j++) gamma[j]   = 0.0;
@@ -474,4 +474,4 @@
 
 	/*Assign output pointer*/
-	xDelete<double>(counter);
-}/*}}}*/
+	xDelete<IssmDouble>(counter);
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/Container/Observations.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Observations.h	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Observations.h	(revision 12466)
@@ -20,16 +20,16 @@
 		/*constructors, destructors*/
 		Observations();
-		Observations(double* observations_list,double* x,double* y,int n,Options* options);
+		Observations(IssmDouble* observations_list,IssmDouble* x,IssmDouble* y,int n,Options* options);
 		~Observations();
 
 		/*Methods*/
-		void ClosestObservation(double *px,double *py,double *pobs,double x_interp,double y_interp,double radius);
-		void InterpolationIDW(double *pprediction,double x_interp,double y_interp,double radius,int mindata,int maxdata,double power);
-		void InterpolationKriging(double *pprediction,double *perror,double x_interp,double y_interp,double radius,int mindata,int maxdata,Variogram* variogram);
-		void InterpolationNearestNeighbor(double *pprediction,double x_interp,double y_interp,double radius);
-		void ObservationList(double **px,double **py,double **pobs,int* pnobs);
-		void ObservationList(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata);
-		void QuadtreeColoring(double* A,double *x,double *y,int n);
-		void Variomap(double* gamma,double *x,int n);
+		void ClosestObservation(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void InterpolationIDW(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,IssmDouble power);
+		void InterpolationKriging(IssmDouble *pprediction,IssmDouble *perror,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,Variogram* variogram);
+		void InterpolationNearestNeighbor(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs);
+		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void QuadtreeColoring(IssmDouble* A,IssmDouble *x,IssmDouble *y,int n);
+		void Variomap(IssmDouble* gamma,IssmDouble *x,int n);
 
 };
Index: /issm/trunk-jpl/src/c/Container/Options.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Options.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Options.cpp	(revision 12466)
@@ -106,25 +106,25 @@
 }
 /*}}}*/
-/*FUNCTION Options::Get(double* pvalue, char* name){{{*/
-void Options::Get(double* pvalue,const char* name){
-
-	vector<Object*>::iterator object;
-	Option* option=NULL;
-
-	/*Get option*/
-	option=GetOption(name);
-
-	/*If the pointer is not NULL, the option has been found*/
-	if(option){
-		option->Get(pvalue);
-	}
-	/*Else, the Option does not exist, no default provided*/
-	else{
-		_error_("option of name \"%s\" not found, and no default value has been provided",name);
-	}
-}
-/*}}}*/
-/*FUNCTION Options::Get(double* pvalue, char* name,double default_value){{{*/
-void Options::Get(double* pvalue,const char* name,double default_value){
+/*FUNCTION Options::Get(IssmDouble* pvalue, char* name){{{*/
+void Options::Get(IssmDouble* pvalue,const char* name){
+
+	vector<Object*>::iterator object;
+	Option* option=NULL;
+
+	/*Get option*/
+	option=GetOption(name);
+
+	/*If the pointer is not NULL, the option has been found*/
+	if(option){
+		option->Get(pvalue);
+	}
+	/*Else, the Option does not exist, no default provided*/
+	else{
+		_error_("option of name \"%s\" not found, and no default value has been provided",name);
+	}
+}
+/*}}}*/
+/*FUNCTION Options::Get(IssmDouble* pvalue, char* name,IssmDouble default_value){{{*/
+void Options::Get(IssmDouble* pvalue,const char* name,IssmDouble default_value){
 
 	vector<Object*>::iterator object;
@@ -223,5 +223,5 @@
 		stringsize=strlen(default_value)+1;
 		outstring=xNew<char>(stringsize);
-		memcpy(outstring,default_value,stringsize*sizeof(char));
+		xMemCpy<char>(outstring,default_value,stringsize);
 		*pvalue=outstring;
 	}
@@ -275,6 +275,6 @@
 }
 /*}}}*/
-/*FUNCTION Options::Get(double** pvalue,int* numel,const char* name){{{*/
-void Options::Get(double** pvalue,int* numel,const char* name){
+/*FUNCTION Options::Get(IssmDouble** pvalue,int* numel,const char* name){{{*/
+void Options::Get(IssmDouble** pvalue,int* numel,const char* name){
 
 	vector<Object*>::iterator object;
Index: /issm/trunk-jpl/src/c/Container/Options.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Options.h	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Options.h	(revision 12466)
@@ -20,6 +20,6 @@
 		int  AddOption(Option* in_oobject);
 		Option* GetOption(const char* name);
-		void Get(double*  pvalue,const char* name);
-		void Get(double*  pvalue,const char* name,double default_value);
+		void Get(IssmDouble*  pvalue,const char* name);
+		void Get(IssmDouble*  pvalue,const char* name,IssmDouble default_value);
 		void Get(int*  pvalue,const char* name);
 		void Get(int*  pvalue,const char* name,int default_value);
@@ -29,5 +29,5 @@
 		void Get(char**   pvalue,const char* name,const char* default_value);
 		void Get(char***  pvalue,int* numel,const char* name);
-		void Get(double** pvalue,int* numel,const char* name);
+		void Get(IssmDouble** pvalue,int* numel,const char* name);
 };
 
Index: /issm/trunk-jpl/src/c/Container/Parameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Parameters.cpp	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Parameters.cpp	(revision 12466)
@@ -85,6 +85,6 @@
 }
 /*}}}*/
-/*FUNCTION Parameters::FindParam(double* pscalar, int enum_type){{{*/
-void Parameters::FindParam(double* pscalar, int enum_type){ _assert_(this);
+/*FUNCTION Parameters::FindParam(IssmDouble* pscalar, int enum_type){{{*/
+void Parameters::FindParam(IssmDouble* pscalar, int enum_type){ _assert_(this);
 	
 	vector<Object*>::iterator object;
@@ -174,42 +174,42 @@
 }
 /*}}}*/
-/*FUNCTION Parameters::FindParam(double** pdoublearray,int* pM,int enum_type){{{*/
-void Parameters::FindParam(double** pdoublearray,int* pM, int enum_type){ _assert_(this);
-
-	vector<Object*>::iterator object;
-	Param* param=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		param=(Param*)(*object);
-		if(param->InstanceEnum()==enum_type){
-			param->GetParameterValue(pdoublearray,pM);
-			return;
-		}
-	}
-	_error_("could not find parameter %s",EnumToStringx(enum_type));
-
-}
-/*}}}*/
-/*FUNCTION Parameters::FindParam(double** pdoublearray,int* pM, int* pN,int enum_type){{{*/
-void Parameters::FindParam(double** pdoublearray,int* pM, int* pN,int enum_type){ _assert_(this);
-
-	vector<Object*>::iterator object;
-	Param* param=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		param=(Param*)(*object);
-		if(param->InstanceEnum()==enum_type){
-			param->GetParameterValue(pdoublearray,pM,pN);
-			return;
-		}
-	}
-	_error_("could not find parameter %s",EnumToStringx(enum_type));
-
-}
-/*}}}*/
-/*FUNCTION Parameters::FindParam(double*** parray,int* pM,int** pmdims_array,int** pndims_array,int enum_type){{{*/
-void Parameters::FindParam(double*** parray,int* pM,int** pmdims_array,int** pndims_array,int enum_type){ _assert_(this);
+/*FUNCTION Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM,int enum_type){{{*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int enum_type){ _assert_(this);
+
+	vector<Object*>::iterator object;
+	Param* param=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		param=(Param*)(*object);
+		if(param->InstanceEnum()==enum_type){
+			param->GetParameterValue(pIssmDoublearray,pM);
+			return;
+		}
+	}
+	_error_("could not find parameter %s",EnumToStringx(enum_type));
+
+}
+/*}}}*/
+/*FUNCTION Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int enum_type){{{*/
+void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int enum_type){ _assert_(this);
+
+	vector<Object*>::iterator object;
+	Param* param=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		param=(Param*)(*object);
+		if(param->InstanceEnum()==enum_type){
+			param->GetParameterValue(pIssmDoublearray,pM,pN);
+			return;
+		}
+	}
+	_error_("could not find parameter %s",EnumToStringx(enum_type));
+
+}
+/*}}}*/
+/*FUNCTION Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int enum_type){{{*/
+void Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int enum_type){ _assert_(this);
 	
 	vector<Object*>::iterator object;
@@ -305,6 +305,6 @@
 }
 /*}}}*/
-/*FUNCTION Parameters::SetParam(double scalar,int enum_type);{{{*/
-void   Parameters::SetParam(double scalar,int enum_type){
+/*FUNCTION Parameters::SetParam(IssmDouble scalar,int enum_type);{{{*/
+void   Parameters::SetParam(IssmDouble scalar,int enum_type){
 
 	Param* param=NULL;
@@ -341,26 +341,26 @@
 }
 /*}}}*/
-/*FUNCTION Parameters::SetParam(double* doublearray,int M,int enum_type);{{{*/
-void   Parameters::SetParam(double* doublearray,int M, int enum_type){
-
-	Param* param=NULL;
-	
-	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
-
-	if(param) param->SetValue(doublearray,M); //already exists, just set it.
-	else this->AddObject(new DoubleVecParam(enum_type,doublearray,M)); //just add the new parameter.
-}
-/*}}}*/
-/*FUNCTION Parameters::SetParam(double* doublearray,int M,int N, int enum_type);{{{*/
-void   Parameters::SetParam(double* doublearray,int M, int N, int enum_type){
-
-	Param* param=NULL;
-	
-	/*first, figure out if the param has already been created: */
-	param=(Param*)this->FindParamObject(enum_type);
-
-	if(param) param->SetValue(doublearray,M,N); //already exists, just set it.
-	else this->AddObject(new DoubleMatParam(enum_type,doublearray,M,N)); //just add the new parameter.
+/*FUNCTION Parameters::SetParam(IssmDouble* IssmDoublearray,int M,int enum_type);{{{*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int enum_type){
+
+	Param* param=NULL;
+	
+	/*first, figure out if the param has already been created: */
+	param=(Param*)this->FindParamObject(enum_type);
+
+	if(param) param->SetValue(IssmDoublearray,M); //already exists, just set it.
+	else this->AddObject(new DoubleVecParam(enum_type,IssmDoublearray,M)); //just add the new parameter.
+}
+/*}}}*/
+/*FUNCTION Parameters::SetParam(IssmDouble* IssmDoublearray,int M,int N, int enum_type);{{{*/
+void   Parameters::SetParam(IssmDouble* IssmDoublearray,int M, int N, int enum_type){
+
+	Param* param=NULL;
+	
+	/*first, figure out if the param has already been created: */
+	param=(Param*)this->FindParamObject(enum_type);
+
+	if(param) param->SetValue(IssmDoublearray,M,N); //already exists, just set it.
+	else this->AddObject(new DoubleMatParam(enum_type,IssmDoublearray,M,N)); //just add the new parameter.
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/Container/Parameters.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Parameters.h	(revision 12465)
+++ /issm/trunk-jpl/src/c/Container/Parameters.h	(revision 12466)
@@ -32,12 +32,12 @@
 		void  FindParam(bool* pinteger,int enum_type);
 		void  FindParam(int* pinteger,int enum_type);
-		void  FindParam(double* pscalar, int enum_type);
+		void  FindParam(IssmDouble* pscalar, int enum_type);
 		void  FindParam(char** pstring,int enum_type);
 		void  FindParam(char*** pstringarray,int* pM,int enum_type);
 		void  FindParam(int** pintarray,int* pM,int enum_type);
 		void  FindParam(int** pintarray,int* pM,int* PN,int enum_type);
-		void  FindParam(double** pdoublearray,int* pM,int enum_type);
-		void  FindParam(double** pdoublearray,int* pM,int* pN,int enum_type);
-		void  FindParam(double*** parray,int* pM, int** pmdims_array,int** pndims_array,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int enum_type);
+		void  FindParam(IssmDouble** pIssmDoublearray,int* pM,int* pN,int enum_type);
+		void  FindParam(IssmDouble*** parray,int* pM, int** pmdims_array,int** pndims_array,int enum_type);
 		void  FindParam(Vector** pvec,int enum_type);
 		void  FindParam(Matrix** pmat,int enum_type);
@@ -46,9 +46,9 @@
 		void  SetParam(bool boolean,int enum_type);
 		void  SetParam(int integer,int enum_type);
-		void  SetParam(double scalar, int enum_type);
+		void  SetParam(IssmDouble scalar, int enum_type);
 		void  SetParam(char* string,int enum_type);
 		void  SetParam(char** stringarray,int M,int enum_type);
-		void  SetParam(double* doublearray,int M,int enum_type);
-		void  SetParam(double* doublearray,int M,int N,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int enum_type);
+		void  SetParam(IssmDouble* IssmDoublearray,int M,int N,int enum_type);
 		void  SetParam(int* intarray,int M,int enum_type);
 		void  SetParam(int* intarray,int M,int N,int enum_type);
