Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp	(revision 7832)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp	(revision 7833)
@@ -16,4 +16,6 @@
 	int i;
 	int element;
+	int penpair_ids[2];
+	int count=0;
 
 	/*DataSet*/
@@ -54,4 +56,31 @@
 	}
 
+	/*Create Penpair for penalties: */
+	IoModelFetchData(&iomodel->penalties,&iomodel->numpenalties,NULL,iomodel_handle,"penalties");
+
+	for(i=0;i<iomodel->numpenalties;i++){
+
+		if(iomodel->my_vertices[(int)iomodel->penalties[2*i+0]-1]){
+
+			/*In debugging mode, check that the second node is in the same cpu*/
+			_assert_(iomodel->my_vertices[(int)iomodel->penalties[2*i+1]-1]);
+
+			/*Get node ids*/
+			penpair_ids[0]=iomodel->nodecounter+(int)iomodel->penalties[2*i+0];
+			penpair_ids[1]=iomodel->nodecounter+(int)iomodel->penalties[2*i+1];
+
+			/*Create Load*/
+			loads->AddObject(new Penpair(
+							iomodel->loadcounter+count+1,
+							&penpair_ids[0],
+							PrognosticAnalysisEnum));
+			count++;
+		}
+	}
+
+	/*free ressources: */
+	xfree((void**)&iomodel->penalties);
+
+
 	/*Assign output pointer: */
 	*ploads=loads;
Index: /issm/trunk/src/c/objects/Loads/Penpair.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 7832)
+++ /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 7833)
@@ -223,4 +223,7 @@
 		case DiagnosticHorizAnalysisEnum:
 			Ke=PenaltyCreateKMatrixDiagnosticHoriz(kmax);
+			break;
+		case PrognosticAnalysisEnum:
+			Ke=PenaltyCreateKMatrixPrognostic(kmax);
 			break;
 		default:
@@ -365,2 +368,24 @@
 }
 /*}}}1*/
+/*FUNCTION Penpair::PenaltyCreateKMatrixPrognostic {{{1*/
+ElementMatrix* Penpair::PenaltyCreateKMatrixPrognostic(double kmax){
+
+	const int numdof=NUMVERTICES*NDOF1;
+	double penalty_offset;
+
+	/*Initialize Element vector and return if necessary*/
+	ElementMatrix* Ke=new ElementMatrix(nodes,NUMVERTICES,this->parameters);
+
+	/*recover parameters: */
+	parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+
+	//Create elementary matrix: add penalty to 
+	Ke->values[0*numdof+0]=+kmax*pow((double)10.0,penalty_offset);
+	Ke->values[0*numdof+1]=-kmax*pow((double)10.0,penalty_offset);
+	Ke->values[1*numdof+0]=-kmax*pow((double)10.0,penalty_offset);
+	Ke->values[1*numdof+1]=+kmax*pow((double)10.0,penalty_offset);
+
+	/*Clean up and return*/
+	return Ke;
+}
+/*}}}1*/
Index: /issm/trunk/src/c/objects/Loads/Penpair.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 7832)
+++ /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 7833)
@@ -69,4 +69,5 @@
 		ElementMatrix* PenaltyCreateKMatrixDiagnosticMacAyealPattyn(double kmax);
 		ElementMatrix* PenaltyCreateKMatrixDiagnosticStokes(double kmax);
+		ElementMatrix* PenaltyCreateKMatrixPrognostic(double kmax);
 		/*}}}*/
 };
