Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 22990)
@@ -319,5 +319,4 @@
 		virtual void       ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input)=0;
 		virtual void       WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){_error_("not implemented yet");};
-		virtual void       ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0;
 
 		#ifdef _HAVE_GIAIVINS_
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 22990)
@@ -3470,159 +3470,4 @@
 }
 /*}}}*/
-void       Penta::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
-	/*Compute portion of the element that is grounded*/ 
-
-	int         normal_orientation=0;
-	IssmDouble  s1,s2;
-	IssmDouble  levelset[NUMVERTICES];
-	IssmDouble* xyz_zero = xNew<IssmDouble>(4*3);
-
-	/*Recover parameters and values*/
-	GetInputListOnVertices(&levelset[0],levelsetenum);
-
-	if(levelset[0]*levelset[1]>0.){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
-		/*Portion of the segments*/
-		s1=levelset[2]/(levelset[2]-levelset[1]);
-		s2=levelset[2]/(levelset[2]-levelset[0]);
-
-		if(levelset[2]<0.) normal_orientation=1; //orientation of quadrangle at base and top, depending on distribution of levelsetfunction
-		/*New point 1*/
-		xyz_zero[3*normal_orientation+0]=xyz_list[2*3+0]+s1*(xyz_list[1*3+0]-xyz_list[2*3+0]);
-		xyz_zero[3*normal_orientation+1]=xyz_list[2*3+1]+s1*(xyz_list[1*3+1]-xyz_list[2*3+1]);
-		xyz_zero[3*normal_orientation+2]=xyz_list[2*3+2]+s1*(xyz_list[1*3+2]-xyz_list[2*3+2]);
-
-		/*New point 0*/
-		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[2*3+0]+s2*(xyz_list[0*3+0]-xyz_list[2*3+0]);
-		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[2*3+1]+s2*(xyz_list[0*3+1]-xyz_list[2*3+1]);
-		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[2*3+2]+s2*(xyz_list[0*3+2]-xyz_list[2*3+2]);
-
-		/*New point 3*/
-		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[5*3+0]+s1*(xyz_list[4*3+0]-xyz_list[5*3+0]);
-		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[5*3+1]+s1*(xyz_list[4*3+1]-xyz_list[5*3+1]);
-		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[5*3+2]+s1*(xyz_list[4*3+2]-xyz_list[5*3+2]);
-
-		/*New point 4*/
-		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[5*3+0]+s2*(xyz_list[3*3+0]-xyz_list[5*3+0]);
-		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[5*3+1]+s2*(xyz_list[3*3+1]-xyz_list[5*3+1]);
-		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[5*3+2]+s2*(xyz_list[3*3+2]-xyz_list[5*3+2]);
-	}
-	else if(levelset[1]*levelset[2]>0.){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
-		/*Portion of the segments*/
-		s1=levelset[0]/(levelset[0]-levelset[2]);
-		s2=levelset[0]/(levelset[0]-levelset[1]);
-
-		if(levelset[0]<0.) normal_orientation=1;
-		/*New point 1*/
-		xyz_zero[3*normal_orientation+0]=xyz_list[0*3+0]+s1*(xyz_list[2*3+0]-xyz_list[0*3+0]);
-		xyz_zero[3*normal_orientation+1]=xyz_list[0*3+1]+s1*(xyz_list[2*3+1]-xyz_list[0*3+1]);
-		xyz_zero[3*normal_orientation+2]=xyz_list[0*3+2]+s1*(xyz_list[2*3+2]-xyz_list[0*3+2]);
-
-		/*New point 2*/
-		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[0*3+0]+s2*(xyz_list[1*3+0]-xyz_list[0*3+0]);
-		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[0*3+1]+s2*(xyz_list[1*3+1]-xyz_list[0*3+1]);
-		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[0*3+2]+s2*(xyz_list[1*3+2]-xyz_list[0*3+2]);
-
-		/*New point 3*/
-		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[3*3+0]+s1*(xyz_list[5*3+0]-xyz_list[3*3+0]);
-		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[3*3+1]+s1*(xyz_list[5*3+1]-xyz_list[3*3+1]);
-		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[3*3+2]+s1*(xyz_list[5*3+2]-xyz_list[3*3+2]);
-
-		/*New point 4*/
-		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[3*3+0]+s2*(xyz_list[4*3+0]-xyz_list[3*3+0]);
-		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[3*3+1]+s2*(xyz_list[4*3+1]-xyz_list[3*3+1]);
-		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[3*3+2]+s2*(xyz_list[4*3+2]-xyz_list[3*3+2]);
-	}
-	else if(levelset[0]*levelset[2]>0.){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
-		/*Portion of the segments*/
-		s1=levelset[1]/(levelset[1]-levelset[0]);
-		s2=levelset[1]/(levelset[1]-levelset[2]);
-
-		if(levelset[1]<0.) normal_orientation=1;
-		/*New point 0*/
-		xyz_zero[3*normal_orientation+0]=xyz_list[1*3+0]+s1*(xyz_list[0*3+0]-xyz_list[1*3+0]);
-		xyz_zero[3*normal_orientation+1]=xyz_list[1*3+1]+s1*(xyz_list[0*3+1]-xyz_list[1*3+1]);
-		xyz_zero[3*normal_orientation+2]=xyz_list[1*3+2]+s1*(xyz_list[0*3+2]-xyz_list[1*3+2]);
-
-		/*New point 2*/
-		xyz_zero[3*(1-normal_orientation)+0]=xyz_list[1*3+0]+s2*(xyz_list[2*3+0]-xyz_list[1*3+0]);
-		xyz_zero[3*(1-normal_orientation)+1]=xyz_list[1*3+1]+s2*(xyz_list[2*3+1]-xyz_list[1*3+1]);
-		xyz_zero[3*(1-normal_orientation)+2]=xyz_list[1*3+2]+s2*(xyz_list[2*3+2]-xyz_list[1*3+2]);
-
-		/*New point 3*/
-		xyz_zero[3*(2+1-normal_orientation)+0]=xyz_list[4*3+0]+s1*(xyz_list[3*3+0]-xyz_list[4*3+0]);
-		xyz_zero[3*(2+1-normal_orientation)+1]=xyz_list[4*3+1]+s1*(xyz_list[3*3+1]-xyz_list[4*3+1]);
-		xyz_zero[3*(2+1-normal_orientation)+2]=xyz_list[4*3+2]+s1*(xyz_list[3*3+2]-xyz_list[4*3+2]);
-
-		/*New point 4*/
-		xyz_zero[3*(2+normal_orientation)+0]=xyz_list[4*3+0]+s2*(xyz_list[5*3+0]-xyz_list[4*3+0]);
-		xyz_zero[3*(2+normal_orientation)+1]=xyz_list[4*3+1]+s2*(xyz_list[5*3+1]-xyz_list[4*3+1]);
-		xyz_zero[3*(2+normal_orientation)+2]=xyz_list[4*3+2]+s2*(xyz_list[5*3+2]-xyz_list[4*3+2]);
-	}
-	else if(levelset[0]==0. && levelset[1]==0.){ //front is on point 0 and 1
-		xyz_zero[3*0+0]=xyz_list[0*3+0];
-		xyz_zero[3*0+1]=xyz_list[0*3+1];
-		xyz_zero[3*0+2]=xyz_list[0*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[1*3+0];
-		xyz_zero[3*1+1]=xyz_list[1*3+1];
-		xyz_zero[3*1+2]=xyz_list[1*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[4*3+0];
-		xyz_zero[3*2+1]=xyz_list[4*3+1];
-		xyz_zero[3*2+2]=xyz_list[4*3+2];
-
-		/*New point 4*/
-		xyz_zero[3*3+0]=xyz_list[3*3+0];
-		xyz_zero[3*3+1]=xyz_list[3*3+1];
-		xyz_zero[3*3+2]=xyz_list[3*3+2];
-	}
-	else if(levelset[0]==0. && levelset[2]==0.){ //front is on point 0 and 1
-		xyz_zero[3*0+0]=xyz_list[2*3+0];
-		xyz_zero[3*0+1]=xyz_list[2*3+1];
-		xyz_zero[3*0+2]=xyz_list[2*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[0*3+0];
-		xyz_zero[3*1+1]=xyz_list[0*3+1];
-		xyz_zero[3*1+2]=xyz_list[0*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[3*3+0];
-		xyz_zero[3*2+1]=xyz_list[3*3+1];
-		xyz_zero[3*2+2]=xyz_list[3*3+2];
-
-		/*New point 4*/
-		xyz_zero[3*3+0]=xyz_list[5*3+0];
-		xyz_zero[3*3+1]=xyz_list[5*3+1];
-		xyz_zero[3*3+2]=xyz_list[5*3+2];
-	}
-	else if(levelset[1]==0. && levelset[2]==0.){ //front is on point 0 and 1
-		xyz_zero[3*0+0]=xyz_list[1*3+0];
-		xyz_zero[3*0+1]=xyz_list[1*3+1];
-		xyz_zero[3*0+2]=xyz_list[1*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[2*3+0];
-		xyz_zero[3*1+1]=xyz_list[2*3+1];
-		xyz_zero[3*1+2]=xyz_list[2*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[5*3+0];
-		xyz_zero[3*2+1]=xyz_list[5*3+1];
-		xyz_zero[3*2+2]=xyz_list[5*3+2];
-
-		/*New point 4*/
-		xyz_zero[3*3+0]=xyz_list[4*3+0];
-		xyz_zero[3*3+1]=xyz_list[4*3+1];
-		xyz_zero[3*3+2]=xyz_list[4*3+2];
-	}
-	else _error_("Case not covered");
-
-	/*Assign output pointer*/
-	*pxyz_zero= xyz_zero;
-}
-/*}}}*/
 
 #ifdef _HAVE_GIAIVINS_
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 22990)
@@ -179,5 +179,4 @@
 		void           VerticalSegmentIndicesBase(int** pindices,int* pnumseg);
 		void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
-		void           ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
 
 		#ifdef _HAVE_DAKOTA_
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 22990)
@@ -165,5 +165,4 @@
 		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
-		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
 		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
 		IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 22990)
@@ -1029,77 +1029,2 @@
 }
 /*}}}*/
-void     Tetra::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
-	/*Compute portion of the element that is grounded*/ 
-
-	IssmDouble  levelset[NUMVERTICES];
-	IssmDouble* xyz_zero = xNew<IssmDouble>(3*3);
-
-	/*Recover parameters and values*/
-	GetInputListOnVertices(&levelset[0],levelsetenum);
-
-	if(levelset[0]==0. && levelset[1]==0. && levelset[2]==0.){ 
-		xyz_zero[3*0+0]=xyz_list[0*3+0];
-		xyz_zero[3*0+1]=xyz_list[0*3+1];
-		xyz_zero[3*0+2]=xyz_list[0*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[1*3+0];
-		xyz_zero[3*1+1]=xyz_list[1*3+1];
-		xyz_zero[3*1+2]=xyz_list[1*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[2*3+0];
-		xyz_zero[3*2+1]=xyz_list[2*3+1];
-		xyz_zero[3*2+2]=xyz_list[2*3+2];
-	}
-	else if(levelset[0]==0. && levelset[1]==0. && levelset[3]==0.){ 
-		xyz_zero[3*0+0]=xyz_list[0*3+0];
-		xyz_zero[3*0+1]=xyz_list[0*3+1];
-		xyz_zero[3*0+2]=xyz_list[0*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[1*3+0];
-		xyz_zero[3*1+1]=xyz_list[1*3+1];
-		xyz_zero[3*1+2]=xyz_list[1*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[3*3+0];
-		xyz_zero[3*2+1]=xyz_list[3*3+1];
-		xyz_zero[3*2+2]=xyz_list[3*3+2];
-	}
-	else if(levelset[1]==0. && levelset[2]==0. && levelset[3]==0.){ 
-		xyz_zero[3*0+0]=xyz_list[1*3+0];
-		xyz_zero[3*0+1]=xyz_list[1*3+1];
-		xyz_zero[3*0+2]=xyz_list[1*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[2*3+0];
-		xyz_zero[3*1+1]=xyz_list[2*3+1];
-		xyz_zero[3*1+2]=xyz_list[2*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[3*3+0];
-		xyz_zero[3*2+1]=xyz_list[3*3+1];
-		xyz_zero[3*2+2]=xyz_list[3*3+2];
-	}
-	else if(levelset[2]==0. && levelset[0]==0. && levelset[3]==0.){ 
-		xyz_zero[3*0+0]=xyz_list[2*3+0];
-		xyz_zero[3*0+1]=xyz_list[2*3+1];
-		xyz_zero[3*0+2]=xyz_list[2*3+2];
-
-		/*New point 2*/
-		xyz_zero[3*1+0]=xyz_list[0*3+0];
-		xyz_zero[3*1+1]=xyz_list[0*3+1];
-		xyz_zero[3*1+2]=xyz_list[0*3+2];
-
-		/*New point 3*/
-		xyz_zero[3*2+0]=xyz_list[3*3+0];
-		xyz_zero[3*2+1]=xyz_list[3*3+1];
-		xyz_zero[3*2+2]=xyz_list[3*3+2];
-	}
-	else _error_("Case not covered");
-
-	/*Assign output pointer*/
-	*pxyz_zero= xyz_zero;
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 22990)
@@ -174,5 +174,4 @@
 		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
-		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
 
 #ifdef _HAVE_GIAIVINS_
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 22990)
@@ -4119,53 +4119,4 @@
 }
 /*}}}*/
-void       Tria::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
-	/* Return coordinates where levelset intersects element edges.
-	 * Attention: In case that no intersection exists, NULL pointer is returned.*/
-
-	/*Intermediaries*/
-	int         numiceverts;
-	int         i,n,e,counter;
-	IssmDouble  s[2];
-	int        *indices  = NULL;
-	IssmDouble *xyz_zero = NULL;
-
-	this->GetLevelsetIntersection(&indices, &numiceverts, s,levelsetenum,0.);
-	
-	printf("numiceverts = %i\n",numiceverts);
-	if(numiceverts>0) xyz_zero=xNew<IssmDouble>(2*3);
-
-	if((numiceverts>0) && (numiceverts<NUMVERTICES)){
-		counter=0;
-		for(i=0;i<numiceverts;i++){
-			for(n=numiceverts;n<NUMVERTICES;n++){ // iterate over no-ice vertices
-				for(e=0;e<3;e++){ // spatial direction
-					int ind_ice   = 3 *indices[i]+e;
-					int ind_noice = 3 *indices[n]+e;
-					int ind       = 3 *counter+e;
-					xyz_zero[ind]=xyz_list[ind_ice]+s[counter]*(xyz_list[ind_noice]-xyz_list[ind_ice]);
-				}
-				counter++;
-			}
-		}
-	}
-	else if(numiceverts==NUMVERTICES){ //NUMVERTICES ice vertices: calving front lies on element edge
-		IssmDouble lsf[NUMVERTICES];
-		this->GetInputListOnVertices(&lsf[0],levelsetenum);
-		counter=0;
-		for(i=0;i<NUMVERTICES;i++){
-			if(lsf[indices[i]]==0.){
-				for(e=0;e<3;e++)	xyz_zero[3*counter+e]=xyz_list[3*indices[i]+e];
-				counter++;
-			}
-			if(counter==2) break;
-		}
-	}
-	_assert_(counter==2);
-
-	/*Cleanup & return*/
-	xDelete<int>(indices);
-	*pxyz_zero=xyz_zero;
-}
-/*}}}*/
 
 #ifdef _HAVE_GIAIVINS_
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 22990)
@@ -144,5 +144,4 @@
 		void        VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
 		void			WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue);
-		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
 
 		#ifdef _HAVE_GIAIVINS_
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 22989)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 22990)
@@ -2067,5 +2067,4 @@
 	}
 
-
 	/*Extrude if necessary*/
 	int elementtype;
