Index: /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp
===================================================================
--- /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.cpp	(revision 4974)
@@ -11,5 +11,5 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 
 	/*Intermediary*/
@@ -22,5 +22,5 @@
 	double J=0;
 	double J_sum;
-	
+
 	/*Compute surface area: */
 	SurfaceAreax(&S,elements,nodes,vertices, loads,materials,parameters);
@@ -35,5 +35,5 @@
 	for (i=0;i<elements->Size();i++){
 		element=(Element*)elements->GetObjectByOffset(i);
-		J+=element->CostFunction();
+		J+=element->CostFunction(process_units);
 	}
 
Index: /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.h
===================================================================
--- /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/CostFunctionx/CostFunctionx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void CostFunctionx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MISFITX_H */
Index: /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/DakotaResponsesx/DakotaResponsesx.cpp	(revision 4974)
@@ -20,8 +20,9 @@
 void DakotaResponsesx(double* responses,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,char** responses_descriptors,int numresponses){
 
-	int        i,j;
+	int        i,j,k;
 	int        dummy;
 	int        counter;
 	extern int my_rank;
+	bool       process_units = true;
 
 	/*intermediary: */
@@ -36,38 +37,38 @@
 
 		if(strcmp(response_descriptor,"MinVel")==0){
-			MinVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MinVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxVel")==0){
-			MaxVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxVelx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MinVx")==0){
-			MinVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MinVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxVx")==0){
-			MaxVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxAbsVx")==0){
-			MaxAbsVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxAbsVxx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MinVy")==0){
-			MinVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MinVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxVy")==0){
-			MaxVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxAbsVy")==0){
-			MaxAbsVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxAbsVyx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MinVz")==0){
-			MinVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MinVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxVz")==0){
-			MaxVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"MaxAbsVz")==0){
-			MaxAbsVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			MaxAbsVzx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strcmp(response_descriptor,"Misfit")==0){
-			Misfitx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters);
+			Misfitx( &femmodel_response, elements,nodes, vertices, loads, materials, parameters,process_units);
 		}
 		else if(strlen(response_descriptor)>=8){
@@ -85,5 +86,5 @@
 				/*retrieve qmu_mass_flux_segments: */
 				parameters->FindParam(&array,&M,&mdims_array,&ndims_array,QmuMassFluxSegmentsEnum);
-
+	
 				/*figure out counter after MassFlux: */
 				sscanf(response_descriptor,"MassFlux%i",&counter);
@@ -94,5 +95,5 @@
 
 				/*call mass flux module: */
-				MassFluxx(&femmodel_response,elements,nodes,vertices,loads,materials,parameters,segments,num_segments);
+				MassFluxx(&femmodel_response,elements,nodes,vertices,loads,materials,parameters,segments,num_segments,process_units);
 
 				/*Free ressources:*/
Index: /issm/trunk/src/c/modules/MassFluxx/MassFluxx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MassFluxx/MassFluxx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MassFluxx/MassFluxx.cpp	(revision 4974)
@@ -10,5 +10,5 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,  double* segments,int num_segments){
+void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,  double* segments,int num_segments,bool process_units){
 
 	int i,j;
@@ -32,5 +32,5 @@
 			if (element->Id()==element_id){
 				/*We found the element which owns this segment, use it to compute the mass flux: */
-				mass_flux+=element->MassFlux(segments+5*i+0);
+				mass_flux+=element->MassFlux(segments+5*i+0,process_units);
 				break;
 			}
Index: /issm/trunk/src/c/modules/MassFluxx/MassFluxx.h
===================================================================
--- /issm/trunk/src/c/modules/MassFluxx/MassFluxx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MassFluxx/MassFluxx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double* segments,int num_segments);
+void MassFluxx(double* pmass_flux, Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double* segments,int num_segments,bool process_units);
 
 
Index: /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxabsvx;
 	double node_maxabsvx;
-	bool   process_units=true;
 	double element_maxabsvx;
 
Index: /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVxx/MaxAbsVxx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxAbsVxx( double* pmaxabsvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXABSVXX_H */
Index: /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxabsvy;
 	double node_maxabsvy;
-	bool   process_units=true;
 	double element_maxabsvy;
 
Index: /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVyx/MaxAbsVyx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxAbsVyx( double* pmaxabsvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXABSVYX_H */
Index: /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxabsvz;
 	double node_maxabsvz;
-	bool   process_units=true;
 	double element_maxabsvz;
 
Index: /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxAbsVzx/MaxAbsVzx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxAbsVzx( double* pmaxabsvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXABSVZX_H */
Index: /issm/trunk/src/c/modules/MaxVelx/MaxVelx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxVelx/MaxVelx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVelx/MaxVelx.cpp	(revision 4974)
@@ -11,10 +11,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxvel;
 	double node_maxvel;
-	bool   process_units=true;
 	double element_maxvel;
 
Index: /issm/trunk/src/c/modules/MaxVelx/MaxVelx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxVelx/MaxVelx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVelx/MaxVelx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxVelx( double* pmaxvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXVELX_H */
Index: /issm/trunk/src/c/modules/MaxVxx/MaxVxx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxVxx/MaxVxx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVxx/MaxVxx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxvx;
 	double node_maxvx;
-	bool   process_units=true;
 	double element_maxvx;
 
Index: /issm/trunk/src/c/modules/MaxVxx/MaxVxx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxVxx/MaxVxx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVxx/MaxVxx.h	(revision 4974)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxVxx( double* pmaxvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXVXX_H */
Index: /issm/trunk/src/c/modules/MaxVyx/MaxVyx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxVyx/MaxVyx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVyx/MaxVyx.cpp	(revision 4974)
@@ -1,4 +1,4 @@
 /*!\file MaxVyx
- */
+*/
 
 #include "./MaxVyx.h"
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
-	
+void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
+
 	int i;
 	double maxvy;
 	double node_maxvy;
-	bool   process_units=true;
 	double element_maxvy;
 
Index: /issm/trunk/src/c/modules/MaxVyx/MaxVyx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxVyx/MaxVyx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVyx/MaxVyx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxVyx( double* pmaxvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXVYX_H */
Index: /issm/trunk/src/c/modules/MaxVzx/MaxVzx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MaxVzx/MaxVzx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVzx/MaxVzx.cpp	(revision 4974)
@@ -11,10 +11,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double maxvz;
 	double node_maxvz;
-	bool   process_units=true;
 	double element_maxvz;
 
Index: /issm/trunk/src/c/modules/MaxVzx/MaxVzx.h
===================================================================
--- /issm/trunk/src/c/modules/MaxVzx/MaxVzx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MaxVzx/MaxVzx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MaxVzx( double* pmaxvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MAXVZX_H */
Index: /issm/trunk/src/c/modules/MinVelx/MinVelx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MinVelx/MinVelx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVelx/MinVelx.cpp	(revision 4974)
@@ -11,10 +11,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double minvel;
 	double node_minvel;
-	bool   process_units=true;
 	double element_minvel;
 
Index: /issm/trunk/src/c/modules/MinVelx/MinVelx.h
===================================================================
--- /issm/trunk/src/c/modules/MinVelx/MinVelx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVelx/MinVelx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MinVelx( double* pminvel, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MINVELX_H */
Index: /issm/trunk/src/c/modules/MinVxx/MinVxx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MinVxx/MinVxx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVxx/MinVxx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double minvx;
 	double node_minvx;
-	bool   process_units=true;
 	double element_minvx;
 
Index: /issm/trunk/src/c/modules/MinVxx/MinVxx.h
===================================================================
--- /issm/trunk/src/c/modules/MinVxx/MinVxx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVxx/MinVxx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MinVxx( double* pminvx, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MINVX_H */
Index: /issm/trunk/src/c/modules/MinVyx/MinVyx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MinVyx/MinVyx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVyx/MinVyx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double minvy;
 	double node_minvy;
-	bool   process_units=true;
 	double element_minvy;
 
Index: /issm/trunk/src/c/modules/MinVyx/MinVyx.h
===================================================================
--- /issm/trunk/src/c/modules/MinVyx/MinVyx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVyx/MinVyx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MinVyx( double* pminvy, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MINVYX_H */
Index: /issm/trunk/src/c/modules/MinVzx/MinVzx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MinVzx/MinVzx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVzx/MinVzx.cpp	(revision 4974)
@@ -10,10 +10,9 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	int i;
 	double minvz;
 	double node_minvz;
-	bool   process_units=true;
 	double element_minvz;
 
Index: /issm/trunk/src/c/modules/MinVzx/MinVzx.h
===================================================================
--- /issm/trunk/src/c/modules/MinVzx/MinVzx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/MinVzx/MinVzx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void MinVzx( double* pminvz, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MINVZX_H */
Index: /issm/trunk/src/c/modules/Misfitx/Misfitx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Misfitx/Misfitx.cpp	(revision 4973)
+++ /issm/trunk/src/c/modules/Misfitx/Misfitx.cpp	(revision 4974)
@@ -11,5 +11,5 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters){
+void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,bool process_units){
 	
 	/*Intermediary*/
@@ -35,5 +35,5 @@
 	for (i=0;i<elements->Size();i++){
 		element=(Element*)elements->GetObjectByOffset(i);
-		J+=element->Misfit();
+		J+=element->Misfit(process_units);
 	}
 
Index: /issm/trunk/src/c/modules/Misfitx/Misfitx.h
===================================================================
--- /issm/trunk/src/c/modules/Misfitx/Misfitx.h	(revision 4973)
+++ /issm/trunk/src/c/modules/Misfitx/Misfitx.h	(revision 4974)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+void Misfitx( double* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,bool process_units);
 
 #endif  /* _MISFITX_H */
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4973)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4974)
@@ -42,6 +42,6 @@
 		virtual void   GradjDrag(Vec gradient)=0;
 		virtual void   GradjB(Vec gradient)=0;
-		virtual double Misfit(void)=0;
-		virtual double CostFunction(void)=0;
+		virtual double Misfit(bool process_units)=0;
+		virtual double CostFunction(bool process_units)=0;
 		virtual double SurfaceArea(void)=0;
 		virtual void   InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum)=0;
@@ -49,5 +49,5 @@
 		virtual void   ComputePressure(Vec p_g)=0;
 		virtual void   ComputeStrainRate(Vec eps)=0;
-		virtual double MassFlux(double* segment)=0;
+		virtual double MassFlux(double* segment,bool process_units)=0;
 		virtual void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes)=0;
 		virtual void   PatchFill(int* pcount, Patch* patch)=0;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4973)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4974)
@@ -667,5 +667,5 @@
 /*}}}*/
 /*FUNCTION Penta::CostFunction {{{1*/
-double Penta::CostFunction(void){
+double Penta::CostFunction(bool process_units){
 
 	double J;
@@ -698,5 +698,5 @@
 		 * and compute CostFunction*/
 		tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
-		J=tria->CostFunction();
+		J=tria->CostFunction(process_units);
 		delete tria;
 		return J;
@@ -705,5 +705,5 @@
 
 		tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
-		J=tria->CostFunction();
+		J=tria->CostFunction(process_units);
 		delete tria;
 		return J;
@@ -1188,5 +1188,5 @@
 /*}}}*/
 /*FUNCTION Penta::MassFlux {{{1*/
-double Penta::MassFlux( double* segment){
+double Penta::MassFlux( double* segment,bool process_units){
 	ISSMERROR(" not supported yet!");
 }
@@ -1520,5 +1520,5 @@
 /*}}}*/
 /*FUNCTION Penta::Misfit {{{1*/
-double Penta::Misfit(void){
+double Penta::Misfit(bool process_units){
 
 	double J;
@@ -1551,5 +1551,5 @@
 		 * and compute Misfit*/
 		tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria (lower face).
-		J=tria->Misfit();
+		J=tria->Misfit(process_units);
 		delete tria;
 		return J;
@@ -1558,5 +1558,5 @@
 
 		tria=(Tria*)SpawnTria(3,4,5); //grids 3, 4 and 5 make the new tria (upper face).
-		J=tria->Misfit();
+		J=tria->Misfit(process_units);
 		delete tria;
 		return J;
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4973)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4974)
@@ -71,5 +71,5 @@
 		void   Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		void   SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
-		double CostFunction(void);
+		double CostFunction(bool process_units);
 		void   CreateKMatrix(Mat Kgg);
 		void   CreatePVector(Vec pg);
@@ -92,5 +92,5 @@
 		void   InputScale(int enum_type,double scale_factor);
 		void   InputToResult(int enum_type,int step,double time);
-		double MassFlux(double* segment);
+		double MassFlux(double* segment,bool process_units);
 		void   MaxAbsVx(double* pmaxabsvx, bool process_units);
 		void   MaxAbsVy(double* pmaxabsvy, bool process_units);
@@ -104,5 +104,5 @@
 		void   MinVy(double* pminvy, bool process_units);
 		void   MinVz(double* pminvz, bool process_units);
-		double Misfit(void);
+		double Misfit(bool process_units);
 		void   PatchFill(int* pcount, Patch* patch);
 		void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4973)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4974)
@@ -551,5 +551,5 @@
 /*}}}*/
 /*FUNCTION Tria::CostFunction {{{1*/
-double Tria::CostFunction(void){
+double Tria::CostFunction(bool process_units){
 
 	int i;
@@ -608,8 +608,8 @@
 
 	/*First, get Misfit*/
-	Jelem=Misfit();
-
-	  /* Get gaussian points and weights (make this a statically initialized list of points? fstd): */
-	  GaussTria( &num_gauss, &first_gauss_area_coord, &second_gauss_area_coord, &third_gauss_area_coord, &gauss_weights, 2);
+	Jelem=Misfit(process_units);
+
+	/* Get gaussian points and weights (make this a statically initialized list of points? fstd): */
+	GaussTria( &num_gauss, &first_gauss_area_coord, &second_gauss_area_coord, &third_gauss_area_coord, &gauss_weights, 2);
 
 	/* Start  looping on the number of gaussian points: */
@@ -1381,5 +1381,5 @@
 /*}}}*/
 /*FUNCTION Tria::MassFlux {{{1*/
-double Tria::MassFlux( double* segment){
+double Tria::MassFlux( double* segment,bool process_units){
 
 	int i;
@@ -1436,4 +1436,8 @@
 				(ONETHIRD*(h1-h2)*(vy1-vy2)+0.5*h2*(vy1-vy2)+0.5*(h1-h2)*vy2+h2*vy2)*normal[1]
 				);
+
+	/*Process units: */
+	NodalValuesUnitConversion(&mass_flux,1,MassFluxEnum,this->parameters);
+
 	return mass_flux;
 }
@@ -1767,5 +1771,5 @@
 /*}}}*/
 /*FUNCTION Tria::Misfit {{{1*/
-double Tria::Misfit(void){
+double Tria::Misfit(bool process_units){
 
 	int i;
@@ -1787,4 +1791,5 @@
 	double obs_vx_list[numgrids];
 	double obs_vy_list[numgrids];
+	double misfit_square_list[numgrids];
 	double misfit_list[numgrids];
 	double weights_list[numgrids];
@@ -1862,4 +1867,7 @@
 			misfit_list[i]=0.5*(pow((vx_list[i]-obs_vx_list[i]),(double)2)+pow((vy_list[i]-obs_vy_list[i]),(double)2));
 		}
+		/*Process units: */
+		if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters);
+
 	}
 	else if(fit==1){
@@ -1878,4 +1886,8 @@
 			misfit_list[i]=0.5*(scalex*pow((vx_list[i]-obs_vx_list[i]),2)+scaley*pow((vy_list[i]-obs_vy_list[i]),2));
 		}
+
+		/*Process units: */
+		if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters);
+
 	}
 	else if(fit==2){
@@ -1892,7 +1904,11 @@
 			misfit_list[i]=4*pow(meanvel,(double)2)*pow(log(velocity_mag/obs_velocity_mag),(double)2);
 		}
+		
+		/*Process units: */
+		if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters);
+
 	}
 	else if(fit==3){
-		/*We are using an spacially average absolute misfit:
+		/*We are using a spacially average absolute misfit:
 		 *
 		 *      1                    2              2
@@ -1900,7 +1916,11 @@
 		 *      S                obs            obs
 		 */
-		for (i=0;i<numgrids;i++){
-			misfit_list[i]=sqrt(pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2))/S;
-		}
+		for (i=0;i<numgrids;i++) misfit_square_list[i]=pow(vx_list[i]-obs_vx_list[i],2)+pow(vy_list[i]-obs_vx_list[i],2);
+		
+		/*Process units: */
+		if(process_units)NodalValuesUnitConversion(&misfit_square_list[0],numgrids,MisfitEnum,this->parameters);
+	
+		/*Take the square root, and scale by surface: */
+		for (i=0;i<numgrids;i++)misfit_list[i]=pow(misfit_square_list[i],2)/S;
 	}
 	else if(fit==4){
@@ -1917,4 +1937,8 @@
 			  pow(log((fabs(vy_list[i])+epsvel)/(fabs(obs_vy_list[i])+epsvel)),(double)2) );
 		}
+		
+		/*Process units: */
+		if(process_units)NodalValuesUnitConversion(&misfit_list[0],numgrids,MisfitEnum,this->parameters);
+
 	}
 	else{
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4973)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4974)
@@ -68,5 +68,5 @@
 		void   Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		void   SetCurrentConfiguration(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
-		double CostFunction(void);
+		double CostFunction(bool process_units);
 		void   CreateKMatrix(Mat Kgg);
 		void   CreatePVector(Vec pg);
@@ -90,5 +90,5 @@
 		void   DeleteResults(void);
 		void   MaterialUpdateFromTemperature(void){ISSMERROR("not implemented yet");};
-		double MassFlux(double* segment);
+		double MassFlux(double* segment,bool process_units);
 		void   MaxAbsVx(double* pmaxabsvx, bool process_units);
 		void   MaxAbsVy(double* pmaxabsvy, bool process_units);
@@ -102,5 +102,5 @@
 		void   MinVy(double* pminvy, bool process_units);
 		void   MinVz(double* pminvz, bool process_units);
-		double Misfit(void);
+		double Misfit(bool process_units);
 		void   PatchFill(int* pcount, Patch* patch);
 		void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes);
Index: /issm/trunk/src/c/solutions/objectivefunctionC.cpp
===================================================================
--- /issm/trunk/src/c/solutions/objectivefunctionC.cpp	(revision 4973)
+++ /issm/trunk/src/c/solutions/objectivefunctionC.cpp	(revision 4974)
@@ -37,4 +37,5 @@
 	bool  isstokes=false;
 	bool    conserve_loads=true;
+	bool    process_units=false;
 	
 	/*Recover finite element model: */
@@ -64,5 +65,5 @@
 	/*Compute misfit for this velocity field.*/
 	InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,(int)fit[n],FitEnum);
-	CostFunctionx( &J, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
+	CostFunctionx( &J, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters,process_units);
 
 	/*Free ressources:*/
Index: /issm/trunk/src/mex/CostFunction/CostFunction.cpp
===================================================================
--- /issm/trunk/src/mex/CostFunction/CostFunction.cpp	(revision 4973)
+++ /issm/trunk/src/mex/CostFunction/CostFunction.cpp	(revision 4974)
@@ -14,4 +14,5 @@
 	Materials* materials=NULL;
 	Parameters* parameters=NULL;
+	bool process_units=false;
 
 	/* output datasets: */
@@ -38,5 +39,5 @@
 
 	/*!Call core code: */
-	CostFunctionx(&J, elements,nodes,vertices, loads,materials,parameters);
+	CostFunctionx(&J, elements,nodes,vertices, loads,materials,parameters,process_units);
 
 	/*write output : */
Index: /issm/trunk/src/mex/MassFlux/MassFlux.cpp
===================================================================
--- /issm/trunk/src/mex/MassFlux/MassFlux.cpp	(revision 4973)
+++ /issm/trunk/src/mex/MassFlux/MassFlux.cpp	(revision 4974)
@@ -14,4 +14,5 @@
 	Materials* materials=NULL;
 	Parameters* parameters=NULL;
+	bool process_units=false;
 
 	double*  segments=NULL;
@@ -42,5 +43,5 @@
 
 	/*!Compute mass flux along the profile: */
-	MassFluxx(&mass_flux, elements,nodes,vertices,loads,materials,parameters,segments,num_segments);
+	MassFluxx(&mass_flux, elements,nodes,vertices,loads,materials,parameters,segments,num_segments,process_units);
 
 
Index: /issm/trunk/src/mex/Misfit/Misfit.cpp
===================================================================
--- /issm/trunk/src/mex/Misfit/Misfit.cpp	(revision 4973)
+++ /issm/trunk/src/mex/Misfit/Misfit.cpp	(revision 4974)
@@ -14,4 +14,6 @@
 	Materials* materials=NULL;
 	Parameters* parameters=NULL;
+
+	bool process_units=false;
 
 	/* output datasets: */
@@ -38,5 +40,5 @@
 
 	/*!Call core code: */
-	Misfitx(&J, elements,nodes,vertices,loads,materials,parameters);
+	Misfitx(&J, elements,nodes,vertices,loads,materials,parameters,process_units);
 
 	/*write output : */
Index: /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/Square.par
===================================================================
--- /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/Square.par	(revision 4973)
+++ /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/Square.par	(revision 4974)
@@ -38,4 +38,9 @@
 md.waitonlock=30;
 
+%spc everything
+md.spcvelocity(:,1:3)=1;
+md.spcvelocity(:,4)=0;
+md.spcvelocity(:,5)=100;
+md.spcvelocity(:,6)=0;
 
 %Dakota:
Index: /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/testpostsolve.m
===================================================================
--- /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/testpostsolve.m	(revision 4973)
+++ /issm/trunk/test/Verification/test28_IceSheetIceFrontM2dDakotaPartition/testpostsolve.m	(revision 4974)
@@ -1,2 +1,2 @@
 md=tres(md,'dakota');
-md.results.dakota.importancefactors=importancefactors(md,'DragCoefficient','MaxVel')';
+%md.results.dakota.importancefactors=importancefactors(md,'DragCoefficient','MaxVel')';
