Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4477)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4478)
@@ -374,4 +374,7 @@
 		InputUpdateFromSolutionAdjointHoriz( solution);
 	}
+	else if (analysis_type==AdjointStokesAnalysisEnum){
+		InputUpdateFromSolutionAdjointStokes( solution);
+	}
 	else if (analysis_type==BedSlopeXAnalysisEnum){
 		InputUpdateFromBedSlopeX( solution);
@@ -979,9 +982,8 @@
 	bool onbed;
 	bool shelf;
-	int analysis_type,sub_analysis_type;
+	int analysis_type;
 
 	/*retrieve parameters: */
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	parameters->FindParam(&sub_analysis_type,AnalysisTypeEnum);
 
 	/*retrieve inputs :*/
@@ -999,5 +1001,5 @@
 	if (!onbed) return;
 
-	if (sub_analysis_type==HorizAnalysisEnum){
+	if (analysis_type==AdjointHorizAnalysisEnum){
 
 		/*MacAyeal or Pattyn*/
@@ -1006,5 +1008,5 @@
 		delete tria;
 	}
-	else if (sub_analysis_type==StokesAnalysisEnum){
+	else if (analysis_type==AdjointStokesAnalysisEnum){
 
 		/*Stokes*/
@@ -1013,5 +1015,5 @@
 		delete tria;
 	}
-	else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
+	else ISSMERROR("analysis %s not supported yet",EnumAsString(analysis_type));
 
 
@@ -2441,4 +2443,46 @@
 	/*Add surfaceslopey as inputs to the tria element: */
 	this->inputs->AddInput(new PentaVertexInput(SurfaceSlopeYEnum,values));
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromSolutionAdjointStokes {{{1*/
+void  Penta::InputUpdateFromSolutionAdjointStokes(double* solution){
+
+	int i;
+
+	const int    numvertices=6;
+	const int    numdofpervertex=4;
+	const int    numdof=numdofpervertex*numvertices;
+
+	int          doflist[numdof];
+	double       values[numdof];
+	double       lambdax[numvertices];
+	double       lambday[numvertices];
+	double       lambdaz[numvertices];
+	double       lambdap[numvertices];
+
+	int          dummy;
+
+	/*Get dof list: */
+	GetDofList(&doflist[0],&dummy);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+	}
+
+	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
+	for(i=0;i<numvertices;i++){
+		lambdax[i]=values[i*numdofpervertex+0];
+		lambday[i]=values[i*numdofpervertex+1];
+		lambdaz[i]=values[i*numdofpervertex+2];
+		lambdap[i]=values[i*numdofpervertex+3];
+	}
+
+	/*Add vx and vy as inputs to the tria element: */
+	this->inputs->AddInput(new PentaVertexInput(AdjointxEnum,lambdax));
+	this->inputs->AddInput(new PentaVertexInput(AdjointyEnum,lambday));
+	this->inputs->AddInput(new PentaVertexInput(AdjointzEnum,lambdaz));
+	this->inputs->AddInput(new PentaVertexInput(AdjointpEnum,lambdap));
+
 }
 /*}}}*/
