Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16955)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16956)
@@ -195,4 +195,5 @@
 		virtual ElementVector*  NewElementVector(int approximation_enum=NoneApproximationEnum)=0;
 		virtual ElementMatrix*  NewElementMatrix(int approximation_enum=NoneApproximationEnum)=0;
+		virtual ElementMatrix*  NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum)=0;
 		virtual void   InputScale(int enum_type,IssmDouble scale_factor)=0;
 		virtual void   GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16955)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16956)
@@ -2446,4 +2446,9 @@
 ElementMatrix* Penta::NewElementMatrix(int approximation_enum){
 	return new ElementMatrix(nodes,this->NumberofNodes(),this->parameters,approximation_enum);
+}
+/*}}}*/
+/*FUNCTION Penta::NewElementMatrixCoupling{{{*/
+ElementMatrix* Penta::NewElementMatrixCoupling(int number_nodes,int approximation_enum){
+	return new ElementMatrix(nodes,number_nodes,this->parameters,approximation_enum);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16955)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16956)
@@ -250,4 +250,5 @@
 		ElementVector* NewElementVector(int approximation_enum);
 		ElementMatrix* NewElementMatrix(int approximation_enum);
+		ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum);
 		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16955)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16956)
@@ -152,4 +152,5 @@
 		ElementVector* NewElementVector(int approximation_enum);
 		ElementMatrix* NewElementMatrix(int approximation_enum);
+		ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum){_error_("not implemented yet");};
 		int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
 		void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16955)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16956)
@@ -283,4 +283,5 @@
 		ElementVector* NewElementVector(int approximation_enum);
 		ElementMatrix* NewElementMatrix(int approximation_enum);
+		ElementMatrix* NewElementMatrixCoupling(int number_nodes,int approximation_enum){_error_("not implemented yet");};
 		void           NodalFunctions(IssmDouble* basis,Gauss* gauss);
 		void           NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
