Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24925)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24926)
@@ -5644,5 +5644,5 @@
 		lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
 		delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
-		alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+		alpha=2.*asin(sqrt(pow(sin(delPhi/2),2)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
 		indices[i]=reCast<int,IssmDouble>(alpha/PI*reCast<IssmDouble,int>(M-1));
 	}
@@ -5754,5 +5754,5 @@
 
 	/*retrieve indices:*/
-	if(computerigid){this->inputs2->GetArray(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
+	if(computerigid){this->inputs2->GetArrayPtr(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
 
 	/*Compute area of element. Scale it by grounded fraction if not fully grounded: */
@@ -5823,7 +5823,4 @@
 		}
 	}
-
-	/*Free ressources:*/
-	if(computerigid)xDelete<IssmDouble>(indices);
 
 	/*Assign output pointer:*/
@@ -6035,5 +6032,5 @@
 
 	/*retrieve indices:*/
-	if(computerigid){this->inputs2->GetArray(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
+	if(computerigid){this->inputs2->GetArrayPtr(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
 
 	/*From Sg_old, recover water sea level rise:*/
@@ -6074,7 +6071,4 @@
 		}
 	}
-
-	/*Free ressources:*/
-	if(computerigid)xDelete<IssmDouble>(indices);
 
 
@@ -6144,5 +6138,5 @@
 
 	/*retrieve indices:*/
-	if(computerigid){this->inputs2->GetArray(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
+	if(computerigid){this->inputs2->GetArrayPtr(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);}
 
 	/*compute area of element:*/
@@ -6238,5 +6232,4 @@
 
 	/*free ressources:*/
-	if(computerigid)xDelete<IssmDouble>(indices);
 	xDelete<IssmDouble>(U_values);
 	xDelete<IssmDouble>(U_elastic);
Index: /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.cpp	(revision 24925)
+++ /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.cpp	(revision 24926)
@@ -131,2 +131,14 @@
 }
 /*}}}*/
+void ArrayInput2::GetArrayPtr(int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	_assert_(this);
+	_assert_(row>=0 && row<this->numberofelements_local);
+	if(pvalues){
+		*pvalues = this->values[row];
+	}
+	if(pN){
+		*pN = this->N[row];
+	}
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.h	(revision 24925)
+++ /issm/trunk-jpl/src/c/classes/Inputs2/ArrayInput2.h	(revision 24926)
@@ -29,4 +29,5 @@
 		void SetInput(int row,int numinds,IssmDouble* values_in);
 		void GetArray(int row,IssmDouble** pvalues,int* pN);
+		void GetArrayPtr(int row,IssmDouble** pvalues,int* pN);
 
 };
Index: /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp	(revision 24925)
+++ /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp	(revision 24926)
@@ -449,4 +449,21 @@
 	return xDynamicCast<ControlInput2*>(input);
 }/*}}}*/
+void Inputs2::GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
+
+	/*Get input id*/
+	int id = EnumToIndex(enum_in);
+
+	/*Create it if necessary*/
+	if(this->inputs[id]){
+		if(this->inputs[id]->ObjectEnum()!=ArrayInput2Enum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return an array");
+	}
+	else{
+		_error_("Input "<<EnumToStringx(enum_in)<<" not found");
+	}
+
+	/*Set input*/
+	ArrayInput2* input = xDynamicCast<ArrayInput2*>(this->inputs[id]);
+	input->GetArrayPtr(row,pvalues,pN);
+}/*}}}*/
 void Inputs2::GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.h	(revision 24925)
+++ /issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.h	(revision 24926)
@@ -51,4 +51,5 @@
 		void     GetInputsInterpolations(int* pnuminputs,int** pinterpolations,int** penum);
 		void             GetArray(int enum_in,int row,IssmDouble** pvalues,int* pN);
+		void             GetArrayPtr(int enum_in,int row,IssmDouble** pvalues,int* pN);
 		SegInput2*       GetSegInput(int enum_type);
 		TriaInput2*      GetTriaInput(int enum_type);
Index: /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24925)
+++ /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24926)
@@ -351,4 +351,6 @@
 	/*outputs:*/
 	IssmDouble eustatic;
+	
+	if(VerboseSolution()) _printf0_("	  computing eustatic components on ice\n");
 
 	/*recover parameters:*/
@@ -416,4 +418,6 @@
 	IssmDouble			Ixz, Iyz, Izz; 
 	int	                 loop;
+	
+	if(VerboseSolution()) _printf0_("	  converging on ocean components\n");
 
 	/*Recover some parameters: */
@@ -530,4 +534,6 @@
 	int  loop;
 	int  horiz;
+	
+	if(VerboseSolution()) _printf0_("	  computing vertical and horizontal geodetic signatures\n");
 
 	/*retrieve some parameters:*/
@@ -577,4 +583,6 @@
 	int					frequency;
 	IssmDouble          dt;
+	
+	if(VerboseSolution()) _printf0_("	  computing viscous components\n");
 
 	/*retrieve some parameters:*/
