Index: /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 24947)
@@ -308,5 +308,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject("md.slr.abstol",SealevelriseAbstolEnum));
 	parameters->AddObject(iomodel->CopyConstantObject("md.slr.maxiter",SealevelriseMaxiterEnum));
-	parameters->AddObject(iomodel->CopyConstantObject("md.slr.loop_increment",SealevelriseLoopIncrementEnum));
 	parameters->AddObject(iomodel->CopyConstantObject("md.slr.rigid",SealevelriseRigidEnum));
 	parameters->AddObject(iomodel->CopyConstantObject("md.slr.horiz",SealevelriseHorizEnum));
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24947)
@@ -379,8 +379,8 @@
 		virtual IssmDouble    OceanAverage(IssmDouble* Sg, SealevelMasks* masks)=0;
 		virtual void          SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks)=0;
-		virtual void          SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea)=0;
+		virtual void          SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks,IssmDouble oceanarea)=0;
 		virtual void          SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0;
-		virtual void          SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius)=0;
-		virtual void          SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz)=0;
+		virtual void          SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0;
+		virtual void          SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks)=0;
 		#endif
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 24947)
@@ -216,7 +216,7 @@
 		void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
 		void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
-		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){_error_("not implemented yet!");};
-		void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius){_error_("not implemented yet!");};
-		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
 		#endif
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 24947)
@@ -175,7 +175,7 @@
 		void    SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");};
 		void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
-		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){_error_("not implemented yet!");};
-		void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius){_error_("not implemented yet!");};
-		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
 		IssmDouble    OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
 #endif
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 24947)
@@ -181,7 +181,7 @@
 		void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
 		void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
-		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){_error_("not implemented yet!");};
-		void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius){_error_("not implemented yet!");};
-		void    SealevelriseGeodetic(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
+		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
+		void    SealevelriseGeodetic(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
 		IssmDouble    OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
 #endif
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24947)
@@ -5753,5 +5753,5 @@
 }
 /*}}}*/
-void    Tria::SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){ /*{{{*/
+void    Tria::SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
 
 	/*Computational flags:*/
@@ -5764,14 +5764,14 @@
 		/*ok, there is ocean in this element, we should compute eustatic loads for the ocean if we have requested
 		 *bottom pressure fingerprints:*/
-		if(bp_compute_fingerprints)this->SealevelriseEustaticBottomPressure(Sgi,peustatic,latitude,longitude,radius,oceanarea);
+		if(bp_compute_fingerprints)this->SealevelriseEustaticBottomPressure(Sgi,peustatic,oceanarea);
 	}
 	//if(!IsIceInElement()){
 		/*there is ice in this eleemnt, let's compute the eustatic response for ice changes:*/
-		this->SealevelriseEustaticIce(Sgi,peustatic,masks, latitude,longitude,radius,oceanarea);
+		this->SealevelriseEustaticIce(Sgi,peustatic,masks, oceanarea);
 	//}
 
 }
 /*}}}*/
-void    Tria::SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){ /*{{{*/
+void    Tria::SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
 
 	/*diverse:*/
@@ -5897,5 +5897,5 @@
 }
 /*}}}*/
-void    Tria::SealevelriseEustaticBottomPressure(IssmDouble* Sgi,IssmDouble* peustatic, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea){ /*{{{*/
+void    Tria::SealevelriseEustaticBottomPressure(IssmDouble* Sgi,IssmDouble* peustatic, IssmDouble oceanarea){ /*{{{*/
 
 	/*diverse:*/
@@ -6010,4 +6010,6 @@
 	/*We do not need to add the bottom pressure component to the eustatic value: */
 	eustatic += 0;
+	IssmDouble* latitude=NULL; //NOT GOING TO WORK!
+	IssmDouble* longitude=NULL; //NOT GOING TO WORK!
 
 	if(computeelastic | computerigid){
@@ -6046,5 +6048,5 @@
 }
 /*}}}*/
-void    Tria::SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius){ /*{{{*/
+void    Tria::SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){ /*{{{*/
 
 	/*diverse:*/
@@ -6090,5 +6092,5 @@
 }
 /*}}}*/
-void    Tria::SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North ,IssmDouble* East,IssmDouble* Sg, SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){ /*{{{*/
+void    Tria::SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North ,IssmDouble* East,IssmDouble* Sg, SealevelMasks* masks){ /*{{{*/
 
 	/*diverse:*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24947)
@@ -167,9 +167,9 @@
 		void    SetSealevelMasks(SealevelMasks* masks);
 		void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
-		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea);
-		void    SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea);
-		void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi, IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea);
-		void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius);
-		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks, IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz);
+		void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
+		void    SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
+		void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi, IssmDouble* peustatic,IssmDouble oceanarea);
+		void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks);
+		void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks);
 		#endif
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 24947)
@@ -4683,5 +4683,5 @@
 }
 /*}}}*/
-void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop) { /*{{{*/
+void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks) { /*{{{*/
 
 	/*serialized vectors:*/
@@ -4713,5 +4713,5 @@
 	for(int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
-		element->SealevelriseEustatic(RSLgi,&eustatic_cpu_e,masks, latitude,longitude,radius,oceanarea);
+		element->SealevelriseEustatic(RSLgi,&eustatic_cpu_e,masks, oceanarea);
 		eustatic_cpu+=eustatic_cpu_e;
 	}
@@ -4736,5 +4736,5 @@
 }
 /*}}}*/
-void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old,  SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution,int loop){/*{{{*/
+void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pRSLgo, Vector<IssmDouble>* pRSLg_old,  SealevelMasks* masks, bool verboseconvolution){/*{{{*/
 
 	/*serialized vectors:*/
@@ -4765,5 +4765,5 @@
 		for(int i=0;i<elements->Size();i++){
 			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
-			element->SealevelriseNonEustatic(RSLgo,RSLg_old,masks, latitude,longitude,radius);
+			element->SealevelriseNonEustatic(RSLgo,RSLg_old,masks);
 		}
 	}
@@ -4854,5 +4854,5 @@
 }
 /*}}}*/
-void FemModel::SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop){/*{{{*/
+void FemModel::SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pRSLg, SealevelMasks* masks){/*{{{*/
 
 	/*serialized vectors:*/
@@ -4876,6 +4876,8 @@
 	gsize = this->nodes->NumberOfDofs(GsetEnum);
 	Up=xNewZeroInit<IssmDouble>(gsize);
-	North=xNewZeroInit<IssmDouble>(gsize);
-	East=xNewZeroInit<IssmDouble>(gsize);
+	if(horiz){
+		North=xNewZeroInit<IssmDouble>(gsize);
+		East=xNewZeroInit<IssmDouble>(gsize);
+	}
 	indices=xNew<int>(gsize); for (int i=0;i<gsize;i++)indices[i]=i;
 
@@ -4883,5 +4885,5 @@
 	for(int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
-		element->SealevelriseGeodetic(Up,North,East,RSLg,masks, latitude,longitude,radius,xx,yy,zz);
+		element->SealevelriseGeodetic(Up,North,East,RSLg,masks);
 	}
 
@@ -4897,6 +4899,8 @@
 	/*Free ressources:*/
 	xDelete<IssmDouble>(Up);
-	xDelete<IssmDouble>(North);
-	xDelete<IssmDouble>(East);
+	if(horiz){
+		xDelete<IssmDouble>(North);
+		xDelete<IssmDouble>(East);
+	}
 	xDelete<int>(indices);
 	xDelete<IssmDouble>(RSLg);
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 24947)
@@ -163,9 +163,9 @@
 		#endif
 		#ifdef _HAVE_SEALEVELRISE_
-		void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,int loop);
+		void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks);
 		void SealevelriseGeometry(IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
-		void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old,  SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution,int loop);
+		void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old,  SealevelMasks* masks,bool verboseconvolution);
 		void SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
-		void SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, SealevelMasks* masks, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz,int loop);
+		void SealevelriseElastic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, SealevelMasks* masks);
 		IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg,SealevelMasks* masks, IssmDouble oceanarea);
 		#endif
Index: /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24947)
@@ -337,16 +337,28 @@
 	IssmDouble *longitude = NULL;
 	IssmDouble *radius    = NULL;
+	IssmDouble *xx    = NULL;
+	IssmDouble *yy    = NULL;
+	IssmDouble *zz    = NULL;
+	int  horiz;
 
 	/*Verbose: */
 	if(VerboseSolution()) _printf0_("	  computing geometrical offsets into precomputed Green tables \n");
+	
+	femmodel->parameters->FindParam(&horiz,SealevelriseHorizEnum);
 
 	/*first, recover lat,long and radius vectors from vertices: */
 	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+	if(horiz) VertexCoordinatesx(&xx,&yy,&zz,femmodel->vertices); 
+
 
 	/*call the FemModel geometry module: */
-	femmodel->SealevelriseGeometry(latitude, longitude, radius); 
+	femmodel->SealevelriseGeometry(latitude, longitude, xx,yy,zz,radius); 
 
 	/*Free ressources:*/
-	xDelete<IssmDouble>(latitude);
+	if(horiz){
+		xDelete<IssmDouble>(xx);
+		xDelete<IssmDouble>(yy);
+		xDelete<IssmDouble>(zz);
+	}
 	xDelete<IssmDouble>(longitude);
 	xDelete<IssmDouble>(radius);
@@ -363,9 +375,4 @@
 	/*parameters: */
 	int  gsize;
-	bool spherical=true;
-	IssmDouble *latitude  = NULL;
-	IssmDouble *longitude = NULL;
-	IssmDouble *radius    = NULL;
-	int         loop;
 	IssmDouble oceanarea;
 
@@ -375,10 +382,5 @@
 	if(VerboseSolution()) _printf0_("	  computing eustatic components on ice\n");
 
-	/*recover parameters:*/
-	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
-
-	/*first, recover lat,long and radius vectors from vertices: */
-	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
-
+	
 	/*Figure out size of g-set deflection vector and allocate solution vector: */
 	gsize = femmodel->nodes->NumberOfDofs(GsetEnum);
@@ -388,5 +390,5 @@
 
 	/*call the eustatic main module: */
-	femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&eustatic, masks, latitude, longitude, radius,loop); //this computes 
+	femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&eustatic, masks); //this computes 
 
 	/*we need to average RSLgi over the ocean: RHS term  4 in Eq.4 of Farrel and clarke. Only the elements can do that: */
@@ -399,9 +401,4 @@
 	/*save eustatic value for results: */
 	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelRSLEustaticEnum,-eustatic));
-
-	/*clean up and return:*/
-	xDelete<IssmDouble>(latitude);
-	xDelete<IssmDouble>(longitude);
-	xDelete<IssmDouble>(radius);
 
 	/*Assign output pointers and return: */
@@ -437,5 +434,4 @@
 	IssmDouble           eustatic;
 	IssmDouble			Ixz, Iyz, Izz; 
-	int	                 loop;
 	
 	if(VerboseSolution()) _printf0_("	  converging on ocean components\n");
@@ -445,5 +441,4 @@
 	femmodel->parameters->FindParam(&eps_rel,SealevelriseReltolEnum);
 	femmodel->parameters->FindParam(&eps_abs,SealevelriseAbstolEnum);
-	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
 
 	/*computational flag: */
@@ -478,5 +473,5 @@
 
 		/*call the non eustatic module: */
-		femmodel->SealevelriseNonEustatic(RSLgo, RSLg_old,  masks, latitude,longitude, radius,verboseconvolution,loop);
+		femmodel->SealevelriseNonEustatic(RSLgo, RSLg_old,  masks, verboseconvolution);
 
 		/*assemble solution vector: */
@@ -552,5 +547,4 @@
 	IssmDouble          *yy     = NULL;
 	IssmDouble          *zz     = NULL;
-	int  loop;
 	int  horiz;
 	
@@ -558,5 +552,4 @@
 
 	/*retrieve some parameters:*/
-	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
 	femmodel->parameters->FindParam(&horiz,SealevelriseHorizEnum);
 
@@ -576,5 +569,5 @@
 
 	/*call the elastic main modlule:*/ 
-	femmodel->SealevelriseElastic(U_esa,U_north_esa,U_east_esa,RSLg, masks, latitude,longitude,radius,xx,yy,zz,loop,horiz);
+	femmodel->SealevelriseElastic(U_esa,U_north_esa,U_east_esa,RSLg, masks);
 
 	/*Assign output pointers:*/
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 24946)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 24947)
@@ -315,5 +315,4 @@
 syn keyword cConstant SealevelriseHElasticEnum
 syn keyword cConstant SealevelriseHorizEnum
-syn keyword cConstant SealevelriseLoopIncrementEnum
 syn keyword cConstant SealevelriseMaxiterEnum
 syn keyword cConstant SealevelriseOceanAreaScalingEnum
@@ -686,4 +685,7 @@
 syn keyword cConstant SealevelriseIndicesEnum
 syn keyword cConstant SealevelriseGEnum
+syn keyword cConstant SealevelriseGUEnum
+syn keyword cConstant SealevelriseGEEnum
+syn keyword cConstant SealevelriseGNEnum
 syn keyword cConstant SedimentHeadEnum
 syn keyword cConstant SedimentHeadOldEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 24946)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 24947)
@@ -309,5 +309,4 @@
 	SealevelriseHElasticEnum,
 	SealevelriseHorizEnum,
-	SealevelriseLoopIncrementEnum,
 	SealevelriseMaxiterEnum,
 	SealevelriseOceanAreaScalingEnum,
@@ -683,4 +682,7 @@
 	SealevelriseIndicesEnum,
 	SealevelriseGEnum,
+	SealevelriseGUEnum,
+	SealevelriseGEEnum,
+	SealevelriseGNEnum,
 	SedimentHeadEnum,
 	SedimentHeadOldEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 24947)
@@ -317,5 +317,4 @@
 		case SealevelriseHElasticEnum : return "SealevelriseHElastic";
 		case SealevelriseHorizEnum : return "SealevelriseHoriz";
-		case SealevelriseLoopIncrementEnum : return "SealevelriseLoopIncrement";
 		case SealevelriseMaxiterEnum : return "SealevelriseMaxiter";
 		case SealevelriseOceanAreaScalingEnum : return "SealevelriseOceanAreaScaling";
@@ -688,4 +687,7 @@
 		case SealevelriseIndicesEnum : return "SealevelriseIndices";
 		case SealevelriseGEnum : return "SealevelriseG";
+		case SealevelriseGUEnum : return "SealevelriseGU";
+		case SealevelriseGEEnum : return "SealevelriseGE";
+		case SealevelriseGNEnum : return "SealevelriseGN";
 		case SedimentHeadEnum : return "SedimentHead";
 		case SedimentHeadOldEnum : return "SedimentHeadOld";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 24946)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 24947)
@@ -323,5 +323,4 @@
 	      else if (strcmp(name,"SealevelriseHElastic")==0) return SealevelriseHElasticEnum;
 	      else if (strcmp(name,"SealevelriseHoriz")==0) return SealevelriseHorizEnum;
-	      else if (strcmp(name,"SealevelriseLoopIncrement")==0) return SealevelriseLoopIncrementEnum;
 	      else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum;
 	      else if (strcmp(name,"SealevelriseOceanAreaScaling")==0) return SealevelriseOceanAreaScalingEnum;
@@ -383,9 +382,9 @@
 	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
 	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+	      else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
-	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
+	      if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
 	      else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
 	      else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
@@ -506,9 +505,9 @@
 	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
 	      else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
+	      else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
-	      else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
+	      if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
 	      else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
 	      else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
@@ -629,9 +628,9 @@
 	      else if (strcmp(name,"Ice")==0) return IceEnum;
 	      else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
+	      else if (strcmp(name,"Input")==0) return InputEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Input")==0) return InputEnum;
-	      else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
+	      if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
 	      else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
 	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
@@ -703,4 +702,7 @@
 	      else if (strcmp(name,"SealevelriseIndices")==0) return SealevelriseIndicesEnum;
 	      else if (strcmp(name,"SealevelriseG")==0) return SealevelriseGEnum;
+	      else if (strcmp(name,"SealevelriseGU")==0) return SealevelriseGUEnum;
+	      else if (strcmp(name,"SealevelriseGE")==0) return SealevelriseGEEnum;
+	      else if (strcmp(name,"SealevelriseGN")==0) return SealevelriseGNEnum;
 	      else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
 	      else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
@@ -750,10 +752,10 @@
 	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
 	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
-	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
-	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"SmbMassBalanceClimate")==0) return SmbMassBalanceClimateEnum;
+	      if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
+	      else if (strcmp(name,"SmbMassBalanceClimate")==0) return SmbMassBalanceClimateEnum;
 	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
 	      else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
@@ -873,10 +875,10 @@
 	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
 	      else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
-	      else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
-	      else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
+	      if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
+	      else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
+	      else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
 	      else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
 	      else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
@@ -996,10 +998,10 @@
 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
 	      else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
-	      else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum;
-	      else if (strcmp(name,"BasalforcingsIsmip6")==0) return BasalforcingsIsmip6Enum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum;
+	      if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6")==0) return BasalforcingsIsmip6Enum;
+	      else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum;
 	      else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum;
 	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
@@ -1119,10 +1121,10 @@
 	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
 	      else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
-	      else if (strcmp(name,"Hydrologyshakti")==0) return HydrologyshaktiEnum;
-	      else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"IceMass")==0) return IceMassEnum;
+	      if (strcmp(name,"Hydrologyshakti")==0) return HydrologyshaktiEnum;
+	      else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
+	      else if (strcmp(name,"IceMass")==0) return IceMassEnum;
 	      else if (strcmp(name,"IceMassScaled")==0) return IceMassScaledEnum;
 	      else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
@@ -1242,10 +1244,10 @@
 	      else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
 	      else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
-	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
-	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"Penpair")==0) return PenpairEnum;
+	      if (strcmp(name,"Paterson")==0) return PatersonEnum;
+	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
+	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
 	      else if (strcmp(name,"Penta")==0) return PentaEnum;
 	      else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
@@ -1365,7 +1367,10 @@
 	      else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
 	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
-	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+         else stage=12;
+   }
+   if(stage==12){
+	      if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
 	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
-         else stage=12;
+         else stage=13;
    }
 	/*If we reach this point, the string provided has not been found*/
