Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17309)
@@ -1152,5 +1152,5 @@
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Mesh3DEnum: case Mesh2DverticalEnum:
 			if(!element->IsOnBed()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -1353,5 +1353,5 @@
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Mesh3DEnum: case Mesh2DverticalEnum:
 			if(!element->IsOnBed()) return NULL;
 			basalelement = element->SpawnBasalElement();
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17309)
@@ -266,4 +266,90 @@
 	return inputs->GetInput(inputenum);
 }/*}}}*/
+void Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	/*Recover input*/
+	Input* input=this->GetInput(enumtype);
+	if (!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/*Fetch number vertices for this element*/
+	int numvertices = this->GetNumberOfVertices();
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/* Start looping on the number of vertices: */
+	Gauss*gauss=this->NewGauss();
+	for(int iv=0;iv<numvertices;iv++){
+		gauss->GaussVertex(iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+
+	/*clean-up*/
+	delete gauss;
+}
+/*}}}*/
+void Element::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+
+	/*Recover input*/
+	Input* input=this->GetInput(enumtype);
+
+	/*Checks in debugging mode*/
+	_assert_(pvalue);
+
+	/*Fetch number vertices for this element*/
+	int numvertices = this->GetNumberOfVertices();
+
+	/* Start looping on the number of vertices: */
+	if (input){
+		Gauss* gauss=this->NewGauss();
+		for (int iv=0;iv<numvertices;iv++){
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&pvalue[iv],gauss);
+		}
+		delete gauss;
+	}
+	else{
+		for(int iv=0;iv<numvertices;iv++) pvalue[iv]=defaultvalue;
+	}
+}
+/*}}}*/
+void Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){/*{{{*/
+
+	_assert_(pvalue);
+
+	Input *input    = this->GetInput(enumtype);
+	int    numnodes = this->GetNumberOfNodes();
+
+	/* Start looping on the number of vertices: */
+	if(input){
+		Gauss* gauss=this->NewGauss();
+		for(int iv=0;iv<numnodes;iv++){
+			gauss->GaussNode(this->FiniteElement(),iv);
+			input->GetInputValue(&pvalue[iv],gauss);
+		}
+		delete gauss;
+	}
+	else{
+		for(int iv=0;iv<numnodes;iv++) pvalue[iv]=defaultvalue;
+	}
+}
+/*}}}*/
+void Element::GetInputListOnNodes(IssmDouble* pvalue,int enumtype){/*{{{*/
+
+	_assert_(pvalue);
+
+	int    numnodes = this->GetNumberOfNodes();
+	Input *input    = this->GetInput(enumtype);
+	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->FiniteElement(),iv);
+		input->GetInputValue(&pvalue[iv],gauss);
+	}
+	delete gauss;
+}
+/*}}}*/
 void Element::GetVerticesSidList(int* sidlist){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17309)
@@ -64,4 +64,8 @@
 		void	     GetDofListPressure(int** pdoflist,int setenum);
 		Input*     GetInput(int inputenum);
+		void       GetInputListOnNodes(IssmDouble* pvalue,int enumtype);
+		void       GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
+		void       GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
+		void       GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
 		IssmDouble GetMaterialParameter(int enum_in);
 		void       GetPhi(IssmDouble* phi, IssmDouble*  epsilon, IssmDouble viscosity);
@@ -162,8 +166,4 @@
 		virtual void   GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating)=0;
 		virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0;
-		virtual void   GetInputListOnNodes(IssmDouble* pvalue,int enumtype)=0;
-		virtual void   GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue)=0;
-		virtual void   GetInputListOnVertices(IssmDouble* pvalue,int enumtype)=0;
-		virtual void   GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue)=0;
 		virtual void   GetInputValue(IssmDouble* pvalue,Node* node,int enumtype)=0;
 		virtual void   GetInputValue(bool* pvalue,int enum_type)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17309)
@@ -892,88 +892,4 @@
 	_assert_(node_number<this->NumberofNodes()); 
 	return this->nodes[node_number];
-}
-/*}}}*/
-/*FUNCTION Penta::GetInputListOnVertices(IssmDouble* pvalue,int enumtype) {{{*/
-void Penta::GetInputListOnVertices(IssmDouble* pvalue,int enumtype){
-
-	/*Recover input*/
-	Input* input=inputs->GetInput(enumtype);
-	if (!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
-
-	/*Checks in debugging mode*/
-	_assert_(pvalue);
-
-	/* Start looping on the number of vertices: */
-	GaussPenta *gauss=new GaussPenta();
-	for (int iv=0;iv<NUMVERTICES;iv++){
-		gauss->GaussVertex(iv);
-		input->GetInputValue(&pvalue[iv],gauss);
-	}
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
-/*FUNCTION Penta::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue) {{{*/
-void Penta::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){
-
-	/*Recover input*/
-	Input* input=inputs->GetInput(enumtype);
-
-	/*Checks in debugging mode*/
-	_assert_(pvalue);
-
-	/* Start looping on the number of vertices: */
-	if (input){
-		GaussPenta *gauss=new GaussPenta();
-		for (int iv=0;iv<NUMVERTICES;iv++){
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&pvalue[iv],gauss);
-		}
-		delete gauss;
-	}
-	else{
-		for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
-	}
-}
-/*}}}*/
-/*FUNCTION Penta::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue) {{{*/
-void Penta::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){
-
-	_assert_(pvalue);
-
-	Input *input    = inputs->GetInput(enumtype);
-	int    numnodes = this->NumberofNodes();
-
-	/* Start looping on the number of vertices: */
-	if(input){
-		GaussPenta* gauss=new GaussPenta();
-		for(int iv=0;iv<this->NumberofNodes();iv++){
-			gauss->GaussNode(this->element_type,iv);
-			input->GetInputValue(&pvalue[iv],gauss);
-		}
-		delete gauss;
-	}
-	else{
-		for(int iv=0;iv<numnodes;iv++) pvalue[iv]=defaultvalue;
-	}
-}
-/*}}}*/
-/*FUNCTION Penta::GetInputListOnNodes(IssmDouble* pvalue,int enumtype) {{{*/
-void Penta::GetInputListOnNodes(IssmDouble* pvalue,int enumtype){
-
-	_assert_(pvalue);
-
-	/*Recover input*/
-	Input* input=inputs->GetInput(enumtype);
-	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
-
-	/* Start looping on the number of vertices: */
-	GaussPenta* gauss=new GaussPenta();
-	for(int iv=0;iv<this->NumberofNodes();iv++){
-		gauss->GaussNode(this->element_type,iv);
-		input->GetInputValue(&pvalue[iv],gauss);
-	}
-	delete gauss;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17309)
@@ -202,8 +202,4 @@
 		void	         GetVertexPidList(int* doflist);
 		int            GetElementType(void);
-		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
-		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
-		void           GetInputListOnNodes(IssmDouble* pvalue,int enumtype);
-		void           GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
 		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
 		void           GetInputValue(bool* pvalue,int enum_type);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 17309)
@@ -143,4 +143,9 @@
 }
 /*}}}*/
+/*FUNCTION Seg::GetNumberOfVertices;{{{*/
+int Seg::GetNumberOfVertices(void){
+	return NUMVERTICES;
+}
+/*}}}*/
 /*FUNCTION Seg::GetVerticesCoordinates(IssmDouble** pxyz_list){{{*/
 void Seg::GetVerticesCoordinates(IssmDouble** pxyz_list){
@@ -152,4 +157,37 @@
 	*pxyz_list = xyz_list;
 
+}/*}}}*/
+/*FUNCTION Seg::IsIceInElement {{{*/
+bool   Seg::IsIceInElement(){
+
+	/*Get levelset*/
+	IssmDouble ls[NUMVERTICES];
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/*If the level set on one of the nodes is <0, ice is present in this element*/
+	if(ls[0]<0. || ls[1]<0.) 
+	 return true;
+	else
+	 return false;
+}
+/*}}}*/
+bool Seg::IsIcefront(void){/*{{{*/
+
+	bool isicefront;
+	int i,nrice;
+	IssmDouble ls[NUMVERTICES];
+
+	/*Retrieve all inputs and parameters*/
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+
+	/* If only one vertex has ice, there is an ice front here */
+	isicefront=false;
+	if(IsIceInElement()){
+		nrice=0;       
+		for(i=0;i<NUMVERTICES;i++)
+		 if(ls[i]<0.) nrice++;
+		if(nrice==1) isicefront= true;
+	}
+	return isicefront;
 }/*}}}*/
 /*FUNCTION Seg::JacobianDeterminant{{{*/
@@ -161,4 +199,9 @@
 }
 /*}}}*/
+/*FUNCTION Seg::NewGauss(){{{*/
+Gauss* Seg::NewGauss(void){
+	return new GaussSeg();
+}
+/*}}}*/
 /*FUNCTION Seg::NewGauss(int order){{{*/
 Gauss* Seg::NewGauss(int order){
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17309)
@@ -79,6 +79,4 @@
 	  	Element*    GetSurfaceElement(void){_error_("not implemented yet");};
 		Element*    GetBasalElement(void){_error_("not implemented yet");};
-		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype){_error_("not implemented yet");};
-		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){_error_("not implemented yet");};
 		int         GetNodeIndex(Node* node){_error_("not implemented yet");};
 		void        GetNodesSidList(int* sidlist){_error_("not implemented yet");};
@@ -87,5 +85,5 @@
 		int         GetNumberOfNodesVelocity(void){_error_("not implemented yet");};
 		int         GetNumberOfNodesPressure(void){_error_("not implemented yet");};
-		int         GetNumberOfVertices(void){_error_("not implemented yet");};
+		int         GetNumberOfVertices(void);
 		void        GetVerticesCoordinates(IssmDouble** pxyz_list);
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");};
@@ -110,5 +108,5 @@
 		void        NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
 		void        NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
-		bool        IsIceInElement(){_error_("not implemented yet");};
+		bool        IsIceInElement();
 		void        NormalSection(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
 		void        NormalTop(IssmDouble* normal,IssmDouble* xyz_list){_error_("not implemented yet");};
@@ -126,6 +124,4 @@
 		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
 		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
-		void        GetInputListOnVertices(IssmDouble* pvalue,int enumtype){_error_("not implemented yet");};
-		void        GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){_error_("not implemented yet");};
 		void        GetInputValue(IssmDouble* pvalue,Node* node,int enumtype){_error_("not implemented yet");};
 		void        GetInputValue(bool* pvalue,int enum_type){_error_("not implemented yet");};
@@ -138,5 +134,5 @@
 		IssmDouble  GetZcoord(Gauss* gauss){_error_("not implemented yet");};
 		int         GetElementType(void){_error_("not implemented yet");};
-		Gauss*      NewGauss(void){_error_("not implemented yet");};
+		Gauss*      NewGauss(void);
 		Gauss*      NewGauss(int order);
       Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
@@ -153,7 +149,7 @@
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
 		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
-		bool		IsIcefront(void){_error_("not implemented yet");};
+		bool		   IsIcefront(void);
 		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
-		void		GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
+		void		   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
 		void        GetNormalFromLSF(IssmDouble *pnormal){_error_("not implemented yet");};
 
Index: /issm/trunk-jpl/src/c/classes/Elements/SegRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/SegRef.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/SegRef.cpp	(revision 17309)
@@ -157,4 +157,8 @@
 
 	switch(finiteelement){
+		case P0Enum:
+			/*Nodal function 1*/
+			dbasis[0] = 0.;
+			break;
 		case P1Enum: case P1DGEnum:
 			/*Nodal function 1*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17309)
@@ -165,4 +165,20 @@
 			this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));
 			break;
+		case Mesh2DverticalEnum:{
+			if(interpolation_enum==P1Enum){
+				IssmDouble values2[NUMVERTICES]={0.};
+				int        numindices;
+				int       *indices = NULL;
+				int        index = this->EdgeOnBedIndex();
+				NodeOnEdgeIndices(&numindices,&indices,index,this->FiniteElement());
+				for(int i=0;i<numindices;i++){
+					values2[indices[i]] = values[i];
+				}
+				this->inputs->AddInput(new TriaInput(input_enum,values2,interpolation_enum));
+				xDelete<int>(indices);
+			}
+			else _error_("not implemented yet");
+			}
+			break;
 		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
 	}
@@ -936,109 +952,4 @@
 int Tria::GetNumberOfVertices(void){
 	return NUMVERTICES;
-}
-/*}}}*/
-/*FUNCTION Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype) {{{*/
-void Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype){
-
-	/*Recover input*/
-	Input* input=inputs->GetInput(enumtype);
-	if (!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
-
-	/*Checks in debugging mode*/
-	_assert_(pvalue);
-
-	/* Start looping on the number of vertices: */
-	GaussTria* gauss=new GaussTria();
-	for (int iv=0;iv<NUMVERTICES;iv++){
-		gauss->GaussVertex(iv);
-		input->GetInputValue(&pvalue[iv],gauss);
-	}
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
-/*FUNCTION Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue) {{{*/
-void Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){
-
-	Input     *input = inputs->GetInput(enumtype);
-
-	/*Checks in debugging mode*/
-	_assert_(pvalue);
-
-	/* Start looping on the number of vertices: */
-	if (input){
-		GaussTria* gauss=new GaussTria();
-		for (int iv=0;iv<NUMVERTICES;iv++){
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&pvalue[iv],gauss);
-		}
-		delete gauss;
-	}
-	else{
-		for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
-	}
-}
-/*}}}*/
-/*FUNCTION Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue,int index) TO BE REMOVED{{{*/
-void Tria::GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue,int index){
-
-	Input     *input = inputs->GetInput(enumtype);
-
-	/*Checks in debugging mode*/
-	_assert_(pvalue);
-
-	/* Start looping on the number of vertices: */
-	if (input){
-		GaussTria* gauss=new GaussTria();
-		for (int iv=0;iv<NUMVERTICES;iv++){
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&pvalue[iv],gauss,index);
-		}
-		delete gauss;
-	}
-	else{
-		for (int iv=0;iv<NUMVERTICES;iv++) pvalue[iv]=defaultvalue;
-	}
-}
-/*}}}*/
-/*FUNCTION Tria::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue) {{{*/
-void Tria::GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){
-
-	_assert_(pvalue);
-
-	Input *input    = inputs->GetInput(enumtype);
-	int    numnodes = this->NumberofNodes();
-
-	/* Start looping on the number of vertices: */
-	if(input){
-		GaussTria* gauss=new GaussTria();
-		for(int iv=0;iv<this->NumberofNodes();iv++){
-			gauss->GaussNode(this->element_type,iv);
-			input->GetInputValue(&pvalue[iv],gauss);
-		}
-		delete gauss;
-	}
-	else{
-		for(int iv=0;iv<numnodes;iv++) pvalue[iv]=defaultvalue;
-	}
-}
-/*}}}*/
-/*FUNCTION Tria::GetInputListOnNodes(IssmDouble* pvalue,int enumtype) {{{*/
-void Tria::GetInputListOnNodes(IssmDouble* pvalue,int enumtype){
-
-	_assert_(pvalue);
-
-	/*Recover input*/
-	Input* input=inputs->GetInput(enumtype);
-	if(!input) _error_("Input " << EnumToStringx(enumtype) << " not found in element");
-
-	/* Start looping on the number of vertices: */
-	GaussTria* gauss=new GaussTria();
-	for (int iv=0;iv<this->NumberofNodes();iv++){
-		gauss->GaussNode(this->element_type,iv);
-		input->GetInputValue(&pvalue[iv],gauss);
-	}
-	delete gauss;
 }
 /*}}}*/
@@ -2469,5 +2380,4 @@
 	return isicefront;
 }/*}}}*/
-
 /*FUNCTION Tria::AverageOntoPartition {{{*/
 void  Tria::AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){
@@ -4429,5 +4339,4 @@
 }
 /*}}}*/
-
 /*FUNCTION Tria::CreateHydrologyWaterVelocityInput {{{*/
 void Tria::CreateHydrologyWaterVelocityInput(void){
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17309)
@@ -212,9 +212,4 @@
 		void           NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
 		void           NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
-		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
-		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
-		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue,int index); //TO BE REMOVED
-		void           GetInputListOnNodes(IssmDouble* pvalue,int enumtype);
-		void           GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
 		void           GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
 		void           GetInputValue(bool* pvalue,int enum_type);
Index: /issm/trunk-jpl/src/c/classes/Inputs/SegInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/SegInput.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Inputs/SegInput.cpp	(revision 17309)
@@ -118,2 +118,14 @@
 }
 /*}}}*/
+/*FUNCTION SegInput::Min{{{*/
+IssmDouble SegInput::Min(void){
+
+	const int  numnodes=this->NumberofNodes();
+	IssmDouble min=values[0];
+
+	for(int i=1;i<numnodes;i++){
+		if(values[i]<min) min=values[i];
+	}
+	return min;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/SegInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/SegInput.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/Inputs/SegInput.h	(revision 17309)
@@ -66,5 +66,5 @@
 		IssmDouble Max(void){_error_("not implemented yet");};
 		IssmDouble MaxAbs(void){_error_("not implemented yet");};
-		IssmDouble Min(void){_error_("not implemented yet");};
+		IssmDouble Min(void);
 		IssmDouble MinAbs(void){_error_("not implemented yet");};
 		void Extrude(void){_error_("not supported yet");};
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 17309)
@@ -12,4 +12,16 @@
 
 /*GaussSeg constructors and destructors:*/
+/*FUNCTION GaussSeg::GaussSeg() {{{*/
+GaussSeg::GaussSeg(){
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords1=NULL;
+
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
 /*FUNCTION GaussSeg::GaussSeg(int order) {{{*/
 GaussSeg::GaussSeg(int order){
@@ -89,5 +101,13 @@
 void GaussSeg::GaussVertex(int iv){
 
-	_error_("not supported");
+	/*in debugging mode: check that the default constructor has been called*/
+	_assert_(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0: coord1=-1.; break;
+		case 1: coord1=+1.; break;
+		default: _error_("vertex index should be in [0 1]");
+	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h	(revision 17308)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h	(revision 17309)
@@ -23,4 +23,5 @@
 
 		/*GaussSeg constructors, destructors*/
+		GaussSeg();
 		GaussSeg(int order);
 		~GaussSeg();
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 17308)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 17309)
@@ -55,10 +55,10 @@
 			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
 			switch(iomodel->meshtype){
-				case Mesh2DhorizontalEnum:
+				case Mesh2DhorizontalEnum: case Mesh2DverticalEnum:
 					elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
 					elements->InputDuplicate(DamageDEnum,DamageDbarEnum);
 					if(dakota_analysis) elements->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum);
 					break;
-				case Mesh3DEnum: case Mesh2DverticalEnum:
+				case Mesh3DEnum:
 					if(dakota_analysis) elements->InputDuplicate(MaterialsRheologyBEnum,QmuMaterialsRheologyBEnum); 
 					break;
