Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3967)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3968)
@@ -1197,27 +1197,4 @@
 }
 /*}}}*/
-/*FUNCTION DataSet::SurfaceArea{{{1*/
-void  DataSet::SurfaceArea(double* pS,int analysis_type,int sub_analysis_type){
-
-	double S=0;
-
-	vector<Object*>::iterator object;
-	Element* element=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if(EnumIsElement((*object)->Enum())){
-
-			element=(Element*)(*object);
-			S+=element->SurfaceArea(analysis_type,sub_analysis_type);
-
-		}
-	}
-
-	/*Assign output pointers:*/
-	*pS=S;
-
-}
-/*}}}*/
 /*FUNCTION DataSet::UpdateInputsFromSolution{{{1*/
 void  DataSet::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 3967)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 3968)
@@ -81,5 +81,4 @@
 		void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type);
 		DataSet* Copy(void);
-		void  SurfaceArea(double* pS, int analysis_type,int sub_analysis_type);
 		void  FieldAverageOntoVertices(Vec fieldsum,Vec connectivity,double* field);
 		void  FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname);
Index: /issm/trunk/src/c/modules/SurfaceAreax/SurfaceAreax.cpp
===================================================================
--- /issm/trunk/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 3967)
+++ /issm/trunk/src/c/modules/SurfaceAreax/SurfaceAreax.cpp	(revision 3968)
@@ -13,6 +13,10 @@
 			int analysis_type,int sub_analysis_type){
 	
+	/*Intermediary*/
+	Element* element=NULL;
+	int i;
+
 	/*output: */
-	double S;
+	double S=0;
 	double S_sum;
 	
@@ -22,5 +26,8 @@
 
 	/*Compute gradients: */
-	elements->SurfaceArea(&S,analysis_type,sub_analysis_type);
+	for (i=0;i<elements->Size();i++){
+		element=(Element*)elements->GetObjectByOffset(i);
+		S+=element->SurfaceArea(analysis_type,sub_analysis_type);
+	}
 
 	/*Sum all J from all cpus of the cluster:*/
