Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 23673)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 23674)
@@ -647,4 +647,30 @@
 
 }/*}}}*/
+void       Penta::CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum){/*{{{*/
+
+	/*Get current field and vertex coordinates*/
+	IssmDouble ls[NUMVERTICES],distance;
+	GetInputListOnVertices(&ls[0],distanceenum);
+
+	/*Get distance from list of segments and reset ls*/
+	for(int j=0;j<NUMVERTICES;j++){
+		distance=distances[this->vertices[j]->Lid()];
+		if(xIsNan<IssmDouble>(distance)) _error_("NaN found in vector");
+		if(xIsInf<IssmDouble>(distance)) _error_("Inf found in vector");
+
+		/*FIXME: do we really need this?*/
+		if(distanceenum==MaskIceLevelsetEnum) if(distance>10000) distance=10000;
+		if(ls[j]>0){
+			ls[j] = distance;
+		}
+		else{
+			ls[j] = - distance;
+		}
+	}
+
+	/*Update Levelset*/
+	this->inputs->AddInput(new PentaInput(distanceenum,&ls[0],P1Enum));
+}
+/*}}}*/
 void       Penta::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 23673)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 23674)
@@ -60,4 +60,5 @@
 		void           ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
 		void           ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
+		void				CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum);
 		ElementMatrix* CreateBasalMassMatrix(void);
 		void           ElementResponse(IssmDouble* presponse,int response_enum);
