Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 15127)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 15128)
@@ -199,5 +199,4 @@
 					./shared/Numerics/extrema.cpp\
 					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
-					./shared/Numerics/UnitConversion.cpp\
 					./shared/Numerics/OptArgs.h\
 					./shared/Numerics/OptPars.h\
Index: /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.cpp	(revision 15128)
@@ -92,9 +92,4 @@
 }
 /*}}}*/
-/*FUNCTION BoolElementResult::ProcessUnits{{{*/
-void BoolElementResult::ProcessUnits(Parameters* parameters){
-// no op
-}
-/*}}}*/
 /*FUNCTION BoolElementResult::NumberOfNodalValues{{{*/
 int BoolElementResult::NumberOfNodalValues(void){
Index: /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.h	(revision 15128)
@@ -37,5 +37,4 @@
 		IssmDouble  GetTime(void){return time;};
 		int     GetStep(void){return step;};
-		void    ProcessUnits(Parameters* parameters);
 		int     NumberOfNodalValues(void);
 		void    PatchFill(int row, Patch* patch);
Index: /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.cpp	(revision 15128)
@@ -92,11 +92,4 @@
 }
 /*}}}*/
-/*FUNCTION DoubleElementResult::ProcessUnits{{{*/
-void DoubleElementResult::ProcessUnits(Parameters* parameters){
-
-	this->value=UnitConversion(this->value,IuToExtEnum,this->enum_type);
-
-}
-/*}}}*/
 /*FUNCTION DoubleElementResult::NumberOfNodalValues{{{*/
 int DoubleElementResult::NumberOfNodalValues(void){
Index: /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.h	(revision 15128)
@@ -37,5 +37,4 @@
 		IssmDouble  GetTime(void){return time;};
 		int     GetStep(void){return step;};
-		void    ProcessUnits(Parameters* parameters);
 		int     NumberOfNodalValues(void);
 		void    PatchFill(int row, Patch* patch);
Index: /issm/trunk-jpl/src/c/classes/ElementResults/ElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/ElementResult.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/ElementResult.h	(revision 15128)
@@ -19,5 +19,4 @@
 		virtual IssmDouble  GetTime(void)=0;
 		virtual int     GetStep(void)=0;
-		virtual void    ProcessUnits(Parameters* parameters)=0;
 		virtual int     NumberOfNodalValues(void)=0;
 		virtual void    PatchFill(int row, Patch* patch)=0;
Index: /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.cpp	(revision 15128)
@@ -103,11 +103,4 @@
 }
 /*}}}*/
-/*FUNCTION PentaP1ElementResult::ProcessUnits{{{*/
-void PentaP1ElementResult::ProcessUnits(Parameters* parameters){
-
-	UnitConversion(this->values,6,IuToExtEnum,this->enum_type);
-
-}
-/*}}}*/
 /*FUNCTION PentaP1ElementResult::NumberOfNodalValues{{{*/
 int PentaP1ElementResult::NumberOfNodalValues(void){
Index: /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.h	(revision 15128)
@@ -36,5 +36,4 @@
 		IssmDouble  GetTime(void){return time;};
 		int     GetStep(void){return step;};
-		void    ProcessUnits(Parameters* parameters);
 		int     NumberOfNodalValues(void);
 		void    PatchFill(int row, Patch* patch);
Index: /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.cpp	(revision 15128)
@@ -91,11 +91,4 @@
 }
 /*}}}*/
-/*FUNCTION TriaP1ElementResult::ProcessUnits{{{*/
-void TriaP1ElementResult::ProcessUnits(Parameters* parameters){
-
-	UnitConversion(this->values,3,IuToExtEnum,this->enum_type);
-
-}
-/*}}}*/
 /*FUNCTION TriaP1ElementResult::NumberOfNodalValues{{{*/
 int TriaP1ElementResult::NumberOfNodalValues(void){
Index: /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.h	(revision 15128)
@@ -35,5 +35,4 @@
 		IssmDouble  GetTime(void){return time;};
 		int     GetStep(void){return step;};
-		void    ProcessUnits(Parameters* parameters);
 		int     NumberOfNodalValues(void);
 		void    PatchFill(int row, Patch* patch);
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 15128)
@@ -69,5 +69,4 @@
 		virtual void   InputCreate(IssmDouble scalar,int name,int code)=0;
 		virtual void   InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code)=0;
-		virtual void   ProcessResultsUnits(void)=0;
 		virtual void   RequestedOutput(int output_enum,int step,IssmDouble time)=0;
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Elements.cpp	(revision 15128)
@@ -50,14 +50,4 @@
 	}
 
-}
-/*}}}*/
-/*FUNCTION Elements::ProcessResultsUnits{{{*/
-void Elements::ProcessResultsUnits(void){
-
-	//Process results to be output in the correct units
-	for(int i=0;i<this->Size();i++){
-		Element* element=dynamic_cast<Element*>(this->GetObjectByOffset(i));
-		element->ProcessResultsUnits();
-	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Elements.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Elements.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Elements.h	(revision 15128)
@@ -28,5 +28,4 @@
 		void   DeleteResults(void);
 		int    MaxNumNodes(void);
-		void   ProcessResultsUnits(void);
 		void   SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
 		void   ToResults(Results* results,Parameters* parameters);
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15128)
@@ -1433,7 +1433,4 @@
 			for(i=0;i<6;i++)nodeinputs[i]=(IssmDouble)vector[penta_vertex_ids[i]-1];
 
-			/*process units: */
-			UnitConversion(&nodeinputs[0], 6 ,ExtToIuEnum, vector_enum);
-
 			/*create static input: */
 			this->inputs->AddInput(new PentaP1Input(vector_enum,nodeinputs));
@@ -1448,7 +1445,4 @@
 					nodeinputs[i]=(IssmDouble)vector[N*row+t];
 				}
-
-				/*process units: */
-				UnitConversion(&nodeinputs[0], 6 ,ExtToIuEnum, vector_enum);
 
 				/*time? :*/
@@ -2595,15 +2589,4 @@
 			}
 		}
-	}
-}
-/*}}}*/
-/*FUNCTION Penta::ProcessResultsUnits{{{*/
-void  Penta::ProcessResultsUnits(void){
-
-	int i;
-
-	for(i=0;i<this->results->Size();i++){
-		ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i);
-		elementresult->ProcessUnits(this->parameters);
 	}
 }
@@ -3288,7 +3271,4 @@
 	IssmDouble minvel=this->inputs->Min(VelEnum);
 
-	/*process units if requested: */
-	if(process_units) minvel=UnitConversion(minvel,IuToExtEnum,VelEnum);
-
 	/*Assign output pointers:*/
 	*pminvel=minvel;
@@ -3301,7 +3281,4 @@
 	IssmDouble minvx=this->inputs->Min(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) minvx=UnitConversion(minvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pminvx=minvx;
@@ -3314,7 +3291,4 @@
 	IssmDouble minvy=this->inputs->Min(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) minvy=UnitConversion(minvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pminvy=minvy;
@@ -3326,7 +3300,4 @@
 	/*Get minimum:*/
 	IssmDouble minvz=this->inputs->Min(VzEnum);
-
-	/*process units if requested: */
-	if(process_units) minvz=UnitConversion(minvz,IuToExtEnum,VzEnum);
 
 	/*Assign output pointers:*/
@@ -3364,7 +3335,4 @@
 	IssmDouble maxabsvx=this->inputs->MaxAbs(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvx=UnitConversion(maxabsvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvx=maxabsvx;
@@ -3377,7 +3345,4 @@
 	IssmDouble maxabsvy=this->inputs->MaxAbs(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvy=UnitConversion(maxabsvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvy=maxabsvy;
@@ -3390,7 +3355,4 @@
 	IssmDouble maxabsvz=this->inputs->MaxAbs(VzEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvz=UnitConversion(maxabsvz,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvz=maxabsvz;
@@ -3403,7 +3365,4 @@
 	IssmDouble maxvel=this->inputs->Max(VelEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvel=UnitConversion(maxvel,IuToExtEnum,VelEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvel=maxvel;
@@ -3417,7 +3376,4 @@
 	IssmDouble maxvx=this->inputs->Max(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvx=UnitConversion(maxvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvx=maxvx;
@@ -3430,7 +3386,4 @@
 	IssmDouble maxvy=this->inputs->Max(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvy=UnitConversion(maxvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvy=maxvy;
@@ -3442,7 +3395,4 @@
 	/*Get maximum:*/
 	IssmDouble maxvz=this->inputs->Max(VzEnum);
-
-	/*process units if requested: */
-	if(process_units) maxvz=UnitConversion(maxvz,IuToExtEnum,VzEnum);
 
 	/*Assign output pointers:*/
@@ -3470,7 +3420,4 @@
 				vel_input->GetInputAverage(&vel);
 
-				/*process units if requested: */
-				if(process_units) vel=UnitConversion(vel,IuToExtEnum,VelEnum);
-
 				/*Assign output pointers:*/
 				*presponse=vel;
@@ -3508,7 +3455,4 @@
 	smb_input->GetInputAverage(&smb);
 	Total_Smb=rho_ice*base*smb;// smb on element in kg s-1
-
-	/*Process units: */
-	Total_Smb=UnitConversion(Total_Smb,IuToExtEnum,TotalSmbEnum);// smb on element in GigaTon yr-1
 
 	/*Return: */
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 15128)
@@ -113,5 +113,4 @@
 		void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
 		void   PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm);
-		void   ProcessResultsUnits(void);
 		void   ResetCoordinateSystem(void);
 		void   SmbGradients();
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15128)
@@ -2059,7 +2059,4 @@
 			for(i=0;i<3;i++)nodeinputs[i]=(IssmDouble)vector[tria_vertex_ids[i]-1];
 
-			/*process units: */
-			UnitConversion(&nodeinputs[0], 3 ,ExtToIuEnum, vector_enum);
-
 			/*create static input: */
 			this->inputs->AddInput(new TriaP1Input(vector_enum,nodeinputs));
@@ -2074,7 +2071,4 @@
 					nodeinputs[i]=(IssmDouble)vector[N*row+t];
 				}
-
-				/*process units: */
-				UnitConversion(&nodeinputs[0], 3 ,ExtToIuEnum, vector_enum);
 
 				/*time? :*/
@@ -2524,15 +2518,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::ProcessResultsUnits{{{*/
-void  Tria::ProcessResultsUnits(void){
-
-	int i;
-
-	for(i=0;i<this->results->Size();i++){
-		ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i);
-		elementresult->ProcessUnits(this->parameters);
-	}
-}
-/*}}}*/
 /*FUNCTION Tria::RequestedOutput{{{*/
 void Tria::RequestedOutput(int output_enum,int step,IssmDouble time){
@@ -2944,7 +2927,4 @@
 				);
 
-	/*Process units: */
-	mass_flux=UnitConversion(mass_flux,IuToExtEnum,MassFluxEnum);
-
 	/*clean up and return:*/
 	delete gauss_1;
@@ -2959,7 +2939,4 @@
 	IssmDouble maxabsvx=this->inputs->MaxAbs(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvx=UnitConversion(maxabsvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvx=maxabsvx;
@@ -2972,7 +2949,4 @@
 	IssmDouble maxabsvy=this->inputs->MaxAbs(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvy=UnitConversion(maxabsvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvy=maxabsvy;
@@ -2985,7 +2959,4 @@
 	IssmDouble maxabsvz=this->inputs->MaxAbs(VzEnum);
 
-	/*process units if requested: */
-	if(process_units) maxabsvz=UnitConversion(maxabsvz,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxabsvz=maxabsvz;
@@ -2998,7 +2969,4 @@
 	IssmDouble maxvel=this->inputs->Max(VelEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvel=UnitConversion(maxvel,IuToExtEnum,VelEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvel=maxvel;
@@ -3011,7 +2979,4 @@
 	IssmDouble maxvx=this->inputs->Max(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvx=UnitConversion(maxvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvx=maxvx;
@@ -3024,7 +2989,4 @@
 	IssmDouble maxvy=this->inputs->Max(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvy=UnitConversion(maxvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvy=maxvy;
@@ -3038,7 +3000,4 @@
 	IssmDouble maxvz=this->inputs->Max(VzEnum);
 
-	/*process units if requested: */
-	if(process_units) maxvz=UnitConversion(maxvz,IuToExtEnum,VzEnum);
-
 	/*Assign output pointers:*/
 	*pmaxvz=maxvz;
@@ -3051,7 +3010,4 @@
 	IssmDouble minvel=this->inputs->Min(VelEnum);
 
-	/*process units if requested: */
-	if(process_units) minvel=UnitConversion(minvel,IuToExtEnum,VelEnum);
-
 	/*Assign output pointers:*/
 	*pminvel=minvel;
@@ -3064,7 +3020,4 @@
 	IssmDouble minvx=this->inputs->Min(VxEnum);
 
-	/*process units if requested: */
-	if(process_units) minvx=UnitConversion(minvx,IuToExtEnum,VxEnum);
-
 	/*Assign output pointers:*/
 	*pminvx=minvx;
@@ -3077,7 +3030,4 @@
 	IssmDouble minvy=this->inputs->Min(VyEnum);
 
-	/*process units if requested: */
-	if(process_units) minvy=UnitConversion(minvy,IuToExtEnum,VyEnum);
-
 	/*Assign output pointers:*/
 	*pminvy=minvy;
@@ -3089,7 +3039,4 @@
 	/*Get minimum:*/
 	IssmDouble minvz=this->inputs->Min(VzEnum);
-
-	/*process units if requested: */
-	if(process_units) minvz=UnitConversion(minvz,IuToExtEnum,VzEnum);
 
 	/*Assign output pointers:*/
@@ -3116,7 +3063,4 @@
 			vel_input->GetInputAverage(&vel);
 
-			/*process units if requested: */
-			if(process_units) vel=UnitConversion(vel,IuToExtEnum,VelEnum);
-
 			/*Assign output pointers:*/
 			*presponse=vel;}
@@ -3152,7 +3096,4 @@
 	smb_input->GetInputAverage(&smb);																								// average smb on element in m ice s-1
    Total_Smb=rho_ice*base*smb;																											// smb on element in kg s-1
-
-	/*Process units: */
-	Total_Smb=UnitConversion(Total_Smb,IuToExtEnum,TotalSmbEnum);																// smb on element in GigaTon yr-1
 
 	/*Return: */
@@ -4711,6 +4652,4 @@
 		misfit=1/S*sqrt( pow(vx-vxobs,2) + pow(vy-vyobs,2));
 
-		if(process_units)UnitConversion(misfit,IuToExtEnum,SurfaceAverageVelMisfitEnum);
-
 		/*Add to cost function*/
 		Jelem+=misfit*weight*Jdet*gauss->weight;
@@ -4772,6 +4711,4 @@
 		obs_velocity_mag=sqrt(pow(vxobs,2)+pow(vyobs,2))+epsvel;
 		misfit=4*pow(meanvel,2)*pow(log(velocity_mag/obs_velocity_mag),2);
-
-		if(process_units)UnitConversion(misfit,IuToExtEnum,SurfaceLogVelMisfitEnum);
 
 		/*Add to cost function*/
@@ -4836,5 +4773,4 @@
 					pow(log((fabs(vy)+epsvel)/(fabs(vyobs)+epsvel)),2) );
 
-		if(process_units)UnitConversion(misfit,IuToExtEnum,SurfaceLogVxVyMisfitEnum);
 
 		/*Add to cost function*/
@@ -4893,6 +4829,4 @@
 		 */
 		misfit=0.5*( pow(vx-vxobs,2) + pow(vy-vyobs,2) );
-
-		if(process_units)UnitConversion(misfit,IuToExtEnum,SurfaceAverageVelMisfitEnum);
 
 		/*Add to cost function*/
@@ -4956,5 +4890,4 @@
 		scaley=pow(meanvel/(vyobs+epsvel),2); if(vyobs==0)scaley=0;
 		misfit=0.5*(scalex*pow((vx-vxobs),2)+scaley*pow((vy-vyobs),2));
-		if(process_units)UnitConversion(misfit,IuToExtEnum,SurfaceRelVelMisfitEnum);
 
 		/*Add to cost function*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 15128)
@@ -113,5 +113,4 @@
 		void   PatchFill(int* pcount, Patch* patch);
 		void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
-		void   ProcessResultsUnits(void);
 		void   ResetCoordinateSystem(void){_error_("not implemented yet");};
 		void	 SmbGradients();
Index: /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp	(revision 15128)
@@ -337,7 +337,4 @@
 	/*First,  copy values, to process units if requested: */
 	for(i=0;i<numnodes;i++)valuescopy[i]=this->values[i];
-
-	/*Process units if requested: */
-	if(process_units)UnitConversion(&valuescopy[0],numnodes,IuToExtEnum,enum_type);
 
 	/*Now, figure out minimum of valuescopy: */
Index: /issm/trunk-jpl/src/c/classes/Inputs/TriaP1Input.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TriaP1Input.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TriaP1Input.cpp	(revision 15128)
@@ -229,7 +229,4 @@
 	for(i=0;i<numnodes;i++)valuescopy[i]=this->values[i];
 
-	/*Process units if requested: */
-	if(process_units)UnitConversion(&valuescopy[0],numnodes,IuToExtEnum,enum_type);
-
 	/*Now, figure out minimum of valuescopy: */
 	squaremin=pow(valuescopy[0],2);
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 15128)
@@ -78,7 +78,4 @@
 	iomodel->Constant(&this->mantle_shear_modulus,MaterialsMantleShearModulusEnum);
 	iomodel->Constant(&this->mantle_density,MaterialsMantleDensityEnum);
-
-	/*Unit conversion: */
-	this->UnitConversion();
 
 	this->inputs=NULL; /*not used here*/
@@ -458,11 +455,2 @@
 }		 
 /*}}}*/ 
-/*FUNCTION Matpar::UnitConversion {{{*/			 
-void Matpar::UnitConversion(void){		 
-
-	/*convert units of fields that were allocated using the Ext unit system, into the Iu unit system: */
-	::UnitConversion(&this->lithosphere_density,1,ExtToIuEnum,MaterialsLithosphereDensityEnum);
-	::UnitConversion(&this->mantle_density,1,ExtToIuEnum,MaterialsMantleDensityEnum);
-
-}		 
-/*}}}*/ 
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 15128)
@@ -136,5 +136,4 @@
 		IssmDouble GetDesFac();
 		IssmDouble GetS0p(); 
-		void   UnitConversion(void);
 		/*}}}*/
 
Index: /issm/trunk-jpl/src/c/classes/Params/BoolParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/BoolParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/BoolParam.cpp	(revision 15128)
@@ -72,7 +72,2 @@
 }
 /*}}}*/
-/*FUNCTION BoolParam::UnitConversion{{{*/
-void  BoolParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/BoolParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/BoolParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/BoolParam.h	(revision 15128)
@@ -68,5 +68,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DataSetParam.cpp	(revision 15128)
@@ -73,9 +73,4 @@
 }
 /*}}}*/
-/*FUNCTION DataSetParam::UnitConversion{{{*/
-void  DataSetParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
 /*FUNCTION DataSetParam::GetParameterValue{{{*/
 void DataSetParam::GetParameterValue(DataSet** pdataset){
Index: /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DataSetParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(DataSet* dataset){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a DataSet yet");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("DataSet param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 15128)
@@ -226,14 +226,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleMatArrayParam::UnitConversion{{{*/
-void  DoubleMatArrayParam::UnitConversion(int direction_enum){
-	/*go through all matrices and convert: */
-	for (int i=0;i<this->M;i++){
-		IssmDouble* matrix=this->array[i];
-		int     m=this->mdim_array[i];
-		int     n=this->ndim_array[i];
-		::UnitConversion(matrix,m*n,direction_enum,this->enum_type);
-	}
-
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatArrayParam.h	(revision 15128)
@@ -71,5 +71,4 @@
 		void  SetValue(FILE* fid){_error_("Bool param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array);
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.cpp	(revision 15128)
@@ -119,7 +119,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleMatParam::UnitConversion{{{*/
-void  DoubleMatParam::UnitConversion(int direction_enum){
-	::UnitConversion(this->value,this->M*this->N,direction_enum,this->enum_type);
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleMatParam.h	(revision 15128)
@@ -70,5 +70,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleParam.cpp	(revision 15128)
@@ -99,7 +99,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleParam::UnitConversion{{{*/
-void  DoubleParam::UnitConversion(int direction_enum){
-	::UnitConversion(&this->value,1,direction_enum,this->enum_type);
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.cpp	(revision 15128)
@@ -19,7 +19,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleTransientMatParam::UnitConversion{{{*/
-void  DoubleTransientMatParam::UnitConversion(int direction_enum){
-	::UnitConversion(this->value,(this->M-1)*this->N,direction_enum,this->enum_type);
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleTransientMatParam.h	(revision 15128)
@@ -24,7 +24,4 @@
 		DoubleTransientMatParam(int enum_type,IssmDouble* value,int M,int N);
 		/*}}}*/
-		/*Param vritual function definitions: {{{*/
-		void  UnitConversion(int direction_enum);
-		/*}}}*/
 };
 #endif  /* _DOUBLETRANSIENTMATPARAM_H */
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.cpp	(revision 15128)
@@ -133,7 +133,2 @@
 }
 /*}}}*/
-/*FUNCTION DoubleVecParam::UnitConversion{{{*/
-void  DoubleVecParam::UnitConversion(int direction_enum){
-	::UnitConversion(this->values,this->M,direction_enum,this->enum_type);
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/DoubleVecParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/FileParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/FileParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/FileParam.cpp	(revision 15128)
@@ -72,7 +72,2 @@
 }
 /*}}}*/
-/*FUNCTION FileParam::UnitConversion{{{*/
-void  FileParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/FileParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/FileParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/FileParam.h	(revision 15128)
@@ -68,5 +68,4 @@
 		void  SetValue(FILE* fid){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("File param of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/GenericParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/GenericParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/GenericParam.h	(revision 15128)
@@ -90,5 +90,4 @@
                 void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold a FILE");}
                 void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(myEnumVal) << " cannot hold an array of matrices");}
-                void  UnitConversion(int direction_enum) {/* nothing useful here either */};
 
                 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/IntMatParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntMatParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntMatParam.cpp	(revision 15128)
@@ -114,7 +114,2 @@
 }
 /*}}}*/
-/*FUNCTION IntMatParam::UnitConversion{{{*/
-void  IntMatParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/IntMatParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntMatParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntMatParam.h	(revision 15128)
@@ -70,5 +70,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/IntParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntParam.cpp	(revision 15128)
@@ -72,7 +72,2 @@
 }
 /*}}}*/
-/*FUNCTION IntParam::UnitConversion{{{*/
-void  IntParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/IntParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/IntVecParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntVecParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntVecParam.cpp	(revision 15128)
@@ -130,7 +130,2 @@
 }
 /*}}}*/
-/*FUNCTION IntVecParam::UnitConversion{{{*/
-void  IntVecParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/IntVecParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/IntVecParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/IntVecParam.h	(revision 15128)
@@ -70,5 +70,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/MatrixParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/MatrixParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/MatrixParam.cpp	(revision 15128)
@@ -99,7 +99,2 @@
 }
 /*}}}*/
-/*FUNCTION MatrixParam::UnitConversion{{{*/
-void  MatrixParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/MatrixParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/MatrixParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/MatrixParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/Param.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Param.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/Param.h	(revision 15128)
@@ -55,5 +55,4 @@
 		virtual void  SetValue(FILE* fid)=0;
 		virtual void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array)=0;
-		virtual void  UnitConversion(int direction_enum)=0;
 		virtual void  GetParameterName(char**pname)=0;
 };
Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 15128)
@@ -472,17 +472,4 @@
 	if(param) param->SetValue(fid); //already exists, just set it.
 	else this->AddObject(new FileParam(enum_type,fid)); //just add the new parameter.
-}
-/*}}}*/
-/*FUNCTION Parameters::UnitConversion(int direction_enum);{{{*/
-void   Parameters::UnitConversion(int direction_enum){
-
-	vector<Object*>::iterator object;
-	Param* param=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-		param=dynamic_cast<Param*>(*object);
-		param->UnitConversion(direction_enum);
-	}
-
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 15128)
@@ -52,5 +52,4 @@
 		void  SetParam(Matrix<IssmDouble>* mat,int enum_type);
 		void  SetParam(FILE* fid,int enum_type);
-		void  UnitConversion(int direction_enum);
 
 		Object* FindParamObject(int enum_type);
Index: /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.cpp	(revision 15128)
@@ -162,7 +162,2 @@
 }
 /*}}}*/
-/*FUNCTION StringArrayParam::UnitConversion{{{*/
-void  StringArrayParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/StringArrayParam.h	(revision 15128)
@@ -70,5 +70,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/StringParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/StringParam.cpp	(revision 15128)
@@ -103,7 +103,2 @@
 }
 /*}}}*/
-/*FUNCTION StringParam::UnitConversion{{{*/
-void  StringParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/StringParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/StringParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/StringParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 15128)
@@ -132,7 +132,2 @@
 }
 /*}}}*/
-/*FUNCTION TransientParam::UnitConversion{{{*/
-void  TransientParam::UnitConversion(int direction_enum){
-	::UnitConversion(this->values,this->N,direction_enum,this->enum_type);
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/TransientParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 15128)
@@ -70,5 +70,4 @@
 		void  SetValue(FILE* fid){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Parameter " <<EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/classes/Params/VectorParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/VectorParam.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/VectorParam.cpp	(revision 15128)
@@ -103,7 +103,2 @@
 }
 /*}}}*/
-/*FUNCTION VectorParam::UnitConversion{{{*/
-void  VectorParam::UnitConversion(int direction_enum){
-	/*do nothing, no unit conversion*/
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/VectorParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/VectorParam.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/classes/Params/VectorParam.h	(revision 15128)
@@ -69,5 +69,4 @@
 		void  SetValue(FILE* fid){_error_("Vector of enum " << enum_type << " (" << EnumToStringx(enum_type) << ") cannot hold a FILE");}
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
-		void  UnitConversion(int direction_enum);
 
 		void GetParameterName(char**pname);
Index: /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15128)
@@ -66,6 +66,4 @@
 			times[j]=IssmDoublevector[(M-1)*N+j];
 		}
-		/*unit conversion: */
-		UnitConversion(times,N,ExtToIuEnum,TimeEnum);
 
 		/*Create constraints from x,y,z: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 15128)
@@ -246,7 +246,4 @@
 	#endif
 
-	/*Go through all parameters, and convert units to SI: */
-	parameters->UnitConversion(ExtToIuEnum);
-
 	/*Assign output pointer: */
 	*pparameters=parameters;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15128)
@@ -88,6 +88,4 @@
 		timesx[j]=spcvx[(Mx-1)*Nx+j];
 	}
-	/*unit conversion: */
-	UnitConversion(timesx,Nx,ExtToIuEnum,TimeEnum);
 	/*figure out times: */
 	timesy=xNew<IssmDouble>(Ny);
@@ -95,6 +93,4 @@
 		timesy[j]=spcvy[(My-1)*Ny+j];
 	}
-	/*unit conversion: */
-	UnitConversion(timesy,Ny,ExtToIuEnum,TimeEnum);
 	/*figure out times: */
 	timesz=xNew<IssmDouble>(Nz);
@@ -102,6 +98,4 @@
 		timesz[j]=spcvz[(Mz-1)*Nz+j];
 	}
-	/*unit conversion: */
-	UnitConversion(timesz,Nz,ExtToIuEnum,TimeEnum);
 
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 15128)
@@ -75,6 +75,4 @@
 			times[j]=spcvector[(M-1)*N+j];
 		}
-		/*unit conversion: */
-		UnitConversion(times,N,ExtToIuEnum,TimeEnum);
 
 		/*Create constraints from x,y,z: */
Index: /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 15127)
+++ /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 15128)
@@ -38,5 +38,4 @@
 
 	/*We have results inside our elements, loads, etc ... Get them out of there, into the results dataset: */
-	elements->ProcessResultsUnits();
 	elements->ToResults(results,parameters);
 	elements->DeleteResults();
Index: /issm/trunk-jpl/src/c/shared/Numerics/CMakeLists.txt
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/CMakeLists.txt	(revision 15127)
+++ /issm/trunk-jpl/src/c/shared/Numerics/CMakeLists.txt	(revision 15128)
@@ -11,5 +11,4 @@
                  $ENV{ISSM_DIR}/src/c/shared/Numerics/isnan.cpp
    $ENV{ISSM_DIR}/src/c/shared/Numerics/OptionsFromAnalysis.cpp
-        $ENV{ISSM_DIR}/src/c/shared/Numerics/UnitConversion.cpp
              $ENV{ISSM_DIR}/src/c/shared/Numerics/Verbosity.cpp
 $ENV{ISSM_DIR}/src/c/shared/Numerics/XZvectorsToCoordinateSystem.cpp PARENT_SCOPE)
Index: sm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp	(revision 15127)
+++ 	(revision )
@@ -1,67 +1,0 @@
-/*!\file:  UnitConversion.cpp
- * \brief: convert units from the model to IU or from IU to the model.
- */ 
-
-/*headers {{{*/
-#ifdef HAVE_CONFIG_H
-	#include <config.h>
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "./numerics.h"
-#include "../Enum/Enum.h"
-#include "../Exceptions/exceptions.h"
-
-IssmDouble UnitConversionScaleFactor(int type_enum);
-/*}}}*/
-
-void UnitConversion(IssmDouble* values, int numvalues,int direction_enum, int type_enum){
-
-	IssmDouble scale;
-	int i;
-
-	/*Get scaling factor: */
-	scale=UnitConversionScaleFactor(type_enum);
-
-	/*Now, which direction are we going? once determined, use scale factor: */
-	if(direction_enum==IuToExtEnum) for(i=0;i<numvalues;i++)values[i]=values[i]*scale; 
-	else if(direction_enum==ExtToIuEnum) for(i=0;i<numvalues;i++)values[i]=values[i]/scale; 
-	else _error_("wrong direction for unit conversion, either IuToExtEnum or ExtToIuEnum. ");
-
-}
-
-IssmDouble UnitConversion(IssmDouble value, int direction_enum, int type_enum){
-
-	UnitConversion(&value,1,direction_enum,type_enum);
-
-	return value;
-}
-
-IssmDouble UnitConversionScaleFactor(int type_enum){
-
-	IssmDouble yts=365.0*24.0*3600.0;
-
-	IssmDouble scale;
-	switch(type_enum){
-		case TimeEnum:                               scale=1.0/yts;break; //yr
-		case HydrologyWaterVxEnum:                   scale=yts;break;     //m/yr
-		case HydrologyWaterVyEnum:                   scale=yts;break;     //m/yr
-		case VxEnum:                                 scale=yts;break;     //m/yr
-		case VyEnum:                                 scale=yts;break;     //m/yr
-		case VzEnum:                                 scale=yts;break;     //m/yr
-		case VelEnum:                                scale=yts;break;     //m/yr
-		case BasalforcingsMeltingRateEnum:           scale=yts;break;     //m/yr
-		case BasalforcingsMeltingRateCorrectionEnum: scale=yts;break;     //m/yr
-		case SurfaceforcingsPrecipitationEnum:       scale=yts;break;     //m/yr
-		case SurfaceforcingsMassBalanceEnum:         scale=yts;break;     //m/yr
-		case SurfaceforcingsBPosEnum:						scale=yts;break;     //m/yr
-		case SurfaceforcingsBNegEnum:						scale=yts;break;     //m/yr
-		case SurfaceforcingsSmbrefEnum:					scale=yts;break;     //m/yr
-		case MisfitEnum:                             scale=pow(yts,2);break; //(m/yr)^2
-		case MassFluxEnum:                           scale=pow((IssmDouble)10,-12)*yts;break; // (GigaTon/year)
-		case TotalSmbEnum:                           scale=pow((IssmDouble)10,-12)*yts;break; // (GigaTon/year)
-		default: scale=1.0; break;
-	}
-	return scale;
-}
Index: /issm/trunk-jpl/src/c/shared/Numerics/numerics.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/numerics.h	(revision 15127)
+++ /issm/trunk-jpl/src/c/shared/Numerics/numerics.h	(revision 15128)
@@ -35,6 +35,4 @@
 void        OptimalSearch(IssmDouble *psearch_scalar,IssmDouble*pJ,OptPars*optpars,IssmDouble (*f)(IssmDouble,OptArgs*), OptArgs*optargs);
 void        cross(IssmDouble *result,IssmDouble*vector1,IssmDouble*vector2);
-void        UnitConversion(IssmDouble *values, int numvalues,int direction_enum, int type_enum);
-IssmDouble  UnitConversion(IssmDouble value, int direction_enum, int type_enum);
 void        XZvectorsToCoordinateSystem(IssmDouble *T,IssmDouble*xzvectors);
 int         cubic(IssmDouble a, IssmDouble b, IssmDouble c, IssmDouble d, double X[3], int *num);
Index: /issm/trunk-jpl/src/m/classes/basalforcings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/basalforcings.m	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/basalforcings.m	(revision 15128)
@@ -44,6 +44,9 @@
 		end % }}}
 		function marshall(obj,fid) % {{{
-			WriteData(fid,'object',obj,'fieldname','melting_rate','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1);
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'object',obj,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,'object',obj,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1,'scale',1./yts);
 			WriteData(fid,'object',obj,'fieldname','geothermalflux','format','DoubleMat','mattype',1);
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/basalforcings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/basalforcings.py	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/basalforcings.py	(revision 15128)
@@ -47,6 +47,9 @@
 	# }}}
 	def marshall(self,fid):    # {{{
-		WriteData(fid,'object',self,'fieldname','melting_rate','format','DoubleMat','mattype',1)
-		WriteData(fid,'object',self,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1)
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'fieldname','melting_rate','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1,'scale',1./yts)
 		WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1)
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/initialization.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/initialization.m	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/initialization.m	(revision 15128)
@@ -91,7 +91,10 @@
 		end % }}}
 		function marshall(obj,fid) % {{{
-			WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum);
-			WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum);
-			WriteData(fid,'data',obj.vz,'format','DoubleMat','mattype',1,'enum',VzEnum);
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum,'scale',1./yts);
+			WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum,'scale',1./yts);
+			WriteData(fid,'data',obj.vz,'format','DoubleMat','mattype',1,'enum',VzEnum,'scale',1./yts);
 			WriteData(fid,'data',obj.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum);
 			WriteData(fid,'data',obj.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum);
Index: /issm/trunk-jpl/src/m/classes/initialization.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/initialization.py	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/initialization.py	(revision 15128)
@@ -74,7 +74,10 @@
 	# }}}
 	def marshall(self,fid):    # {{{
-		WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum())
-		WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum())
-		WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum())
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum(),'scale',1./yts)
 		WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum())
 		WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
Index: /issm/trunk-jpl/src/m/classes/surfaceforcings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/surfaceforcings.m	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/surfaceforcings.m	(revision 15128)
@@ -101,6 +101,9 @@
 		end % }}}
 		function marshall(obj,fid) % {{{
-			WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1);
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'object',obj,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts);
 			WriteData(fid,'object',obj,'fieldname','ispdd','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','isdelta18o','format','Boolean');
@@ -122,7 +125,7 @@
 			if obj.issmbgradients,
 				WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts);
+				WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts);
+				WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts);
 			end
 
Index: /issm/trunk-jpl/src/m/classes/surfaceforcings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/surfaceforcings.py	(revision 15127)
+++ /issm/trunk-jpl/src/m/classes/surfaceforcings.py	(revision 15128)
@@ -101,6 +101,9 @@
 	# }}}
 	def marshall(self,fid):    # {{{
-		WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1)
-		WriteData(fid,'object',self,'fieldname','mass_balance','format','DoubleMat','mattype',1)
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts)
 		WriteData(fid,'object',self,'fieldname','ispdd','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isdelta18o','format','Boolean')
@@ -123,6 +126,6 @@
 		if self.issmbgradients:
 			WriteData(fid,'object',self,'fieldname','href','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'fieldname','smbref','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts)
 	# }}}
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 15127)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 15128)
@@ -177,4 +177,24 @@
 	if strcmp(fieldname,'BalancethicknessThickeningRate'),
 		field = field*yts;
+	elseif strcmp(fieldname,'Time'),
+		field = field/yts;
+	elseif strcmp(fieldname,'HydrologyWaterVx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'HydrologyWaterVy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vx'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vy'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vz'),
+		field = field*yts;
+	elseif strcmp(fieldname,'Vel'),
+		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalSmb'),
+		field = field*10.^12/yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'SurfaceforcingsMassBalance'),
+		field = field*yts;
 	end
 
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 15127)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 15128)
@@ -191,4 +191,24 @@
 		if strcmp(fieldname,'BalancethicknessThickeningRate'):
 			field = field*yts
+		elif strcmp(fieldname,'Time'):
+			field = field/yts
+		elif strcmp(fieldname,'HydrologyWaterVx'):
+			field = field*yts
+		elif strcmp(fieldname,'HydrologyWaterVy'):
+			field = field*yts
+		elif strcmp(fieldname,'Vx'):
+			field = field*yts
+		elif strcmp(fieldname,'Vy'):
+			field = field*yts
+		elif strcmp(fieldname,'Vz'):
+			field = field*yts
+		elif strcmp(fieldname,'Vel'):
+			field = field*yts
+		elif strcmp(fieldname,'BasalforcingsMeltingRate'):
+			field = field*yts
+		elif strcmp(fieldname,'TotalSmb'):
+			field = field*10.**12./yts #(GigaTon/year)
+		elif strcmp(fieldname,'SurfaceforcingsMassBalance'):
+			field = field*yts
 
 		result=OrderedDict()
