Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5861)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5862)
@@ -708,8 +708,12 @@
 			break;
 		case BedSlopeXAnalysisEnum: case SurfaceSlopeXAnalysisEnum: case BedSlopeYAnalysisEnum: case SurfaceSlopeYAnalysisEnum:
-			CreateKMatrixSlope( Kgg);
+			Ke=CreateKMatrixSlope();
+			if(Ke) Ke->AddToGlobal(Kgg,NULL,NULL);
+			delete Ke;
 			break;
 		case PrognosticAnalysisEnum:
-			CreateKMatrixPrognostic( Kgg);
+			Ke=CreateKMatrixPrognostic();
+			if(Ke) Ke->AddToGlobal(Kgg,NULL,NULL);
+			delete Ke;
 			break;
 		case BalancedthicknessAnalysisEnum:
@@ -2831,14 +2835,7 @@
 /*}}}*/
 /*FUNCTION Penta::CreateKMatrixPrognostic {{{1*/
-void  Penta::CreateKMatrixPrognostic(Mat Kgg){
-
-	/*Collapsed formulation: */
-	Tria*  tria=NULL;
-
-	/*If on water, skip: */
-	if(IsOnWater())return;
-
-	/*Is this element on the bed? :*/
-	if(!IsOnBed())return;
+ElementMatrix* Penta::CreateKMatrixPrognostic(void){
+
+	if (!IsOnBed() || IsOnWater()) return NULL;
 
 	/*Depth Averaging Vx and Vy*/
@@ -2846,7 +2843,6 @@
 	this->InputDepthAverageAtBase(VyEnum,VyAverageEnum);
 
-	/*Spawn Tria element from the base of the Penta: */
-	tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
-	tria->CreateKMatrix(Kgg,NULL,NULL);
+	Tria* tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
+	ElementMatrix* Ke=tria->CreateKMatrixPrognostic();
 	delete tria->matice; delete tria;
 
@@ -2855,26 +2851,19 @@
 	this->inputs->DeleteInput(VyAverageEnum);
 
-	return;
-
+	/*clean up and return*/
+	return Ke;
 }
 /*}}}*/
 /*FUNCTION Penta::CreateKMatrixSlope {{{1*/
-void  Penta::CreateKMatrixSlope(Mat Kgg){
-
-	/*Collapsed formulation: */
-	Tria*  tria=NULL;
-
-	/*If on water, skip: */
-	if(IsOnWater())return;
-
-	/*Is this element on the bed? :*/
-	if(!IsOnBed())return;
-
-	/*Spawn Tria element from the base of the Penta: */
-	tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
-	tria->CreateKMatrix(Kgg,NULL,NULL);
+ElementMatrix* Penta::CreateKMatrixSlope(void){
+
+	if (!IsOnBed() || IsOnWater()) return NULL;
+
+	Tria* tria=(Tria*)SpawnTria(0,1,2); //grids 0, 1 and 2 make the new tria.
+	ElementMatrix* Ke=tria->CreateKMatrixSlope();
 	delete tria->matice; delete tria;
-	return;
-
+
+	/*clean up and return*/
+	return Ke;
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5861)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5862)
@@ -141,6 +141,6 @@
 		void	  CreateKMatrixDiagnosticVert( Mat Kgg);
 		ElementMatrix* CreateKMatrixMelting(void);
-		void	  CreateKMatrixPrognostic(Mat Kggg);
-		void	  CreateKMatrixSlope(Mat Kggg);
+		ElementMatrix* CreateKMatrixPrognostic(void);
+		ElementMatrix* CreateKMatrixSlope(void);
 		void	  CreateKMatrixThermal(Mat Kggg);
 		void	  CreatePVectorBalancedthickness( Vec pg);
