Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 18283)
@@ -172,4 +172,5 @@
 		virtual void   NodalFunctions(IssmDouble* basis,Gauss* gauss)=0;
 		virtual void   NodalFunctionsP1(IssmDouble* basis,Gauss* gauss)=0;
+		virtual void   NodalFunctionsP2(IssmDouble* basis,Gauss* gauss)=0;
 		virtual void   NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss)=0;
 		virtual void   NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss)=0;
@@ -194,4 +195,5 @@
 		virtual int    GetNodeIndex(Node* node)=0;
 		virtual int    GetNumberOfNodes(void)=0;
+		virtual int    GetNumberOfNodes(int enum_type)=0;
 		virtual int    GetNumberOfVertices(void)=0;
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 18283)
@@ -852,4 +852,8 @@
 int        Penta::GetNumberOfNodes(void){/*{{{*/
 	return this->NumberofNodes(this->element_type);
+}
+/*}}}*/
+int        Penta::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
 }
 /*}}}*/
@@ -1625,4 +1629,11 @@
 	_assert_(gauss->Enum()==GaussPentaEnum);
 	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Penta::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussPentaEnum);
+	this->GetNodalFunctions(basis,(GaussPenta*)gauss,P2Enum);
 
 }
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 18283)
@@ -74,4 +74,5 @@
 		int    GetNodeIndex(Node* node);
 		int    GetNumberOfNodes(void);
+		int    GetNumberOfNodes(int enum_type);
 		int    GetNumberOfVertices(void);
 		void   GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
@@ -163,4 +164,5 @@
 		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
 		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 18283)
@@ -109,4 +109,11 @@
 }
 /*}}}*/
+void       Seg::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussSegEnum);
+	this->GetNodalFunctions(basis,(GaussSeg*)gauss,P2Enum);
+
+}
+/*}}}*/
 int        Seg::GetNumberOfNodes(void){/*{{{*/
 	return this->NumberofNodes(this->element_type);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 18283)
@@ -68,4 +68,5 @@
 		int         GetNodeIndex(Node* node){_error_("not implemented yet");};
 		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
 		int         GetNumberOfVertices(void);
 		void        GetVerticesCoordinates(IssmDouble** pxyz_list);
@@ -83,4 +84,5 @@
 		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
 		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
 		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 18283)
@@ -71,4 +71,5 @@
 		int         GetNodeIndex(Node* node);
 		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
 		int         GetNumberOfVertices(void);
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
@@ -87,4 +88,5 @@
 		void        NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void        NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
+		void        NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
 		void        NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
 		void        NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 18283)
@@ -887,4 +887,8 @@
 }
 /*}}}*/
+int        Tria::GetNumberOfNodes(int enum_type){/*{{{*/
+	return this->NumberofNodes(enum_type);
+}
+/*}}}*/
 int        Tria::GetNumberOfVertices(void){/*{{{*/
 	return NUMVERTICES;
@@ -1444,4 +1448,11 @@
 	_assert_(gauss->Enum()==GaussTriaEnum);
 	this->GetNodalFunctions(basis,(GaussTria*)gauss,P1Enum);
+
+}
+/*}}}*/
+void       Tria::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/
+
+	_assert_(gauss->Enum()==GaussTriaEnum);
+	this->GetNodalFunctions(basis,(GaussTria*)gauss,P2Enum);
 
 }
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 18282)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 18283)
@@ -69,4 +69,5 @@
 		int         GetNodeIndex(Node* node);
 		int         GetNumberOfNodes(void);
+		int         GetNumberOfNodes(int enum_type);
 		int         GetNumberOfVertices(void);
 		bool        IsOnBase();
@@ -165,4 +166,5 @@
 		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
+		void           NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
 		void           NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
