Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16758)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16759)
@@ -92,10 +92,13 @@
 
 	/*Initialize values*/
-	IssmDouble* vvalues = xNew<IssmDouble>(vnumdof);
-	IssmDouble* pvalues = xNew<IssmDouble>(pnumdof);
+	IssmDouble* values  = xNew<IssmDouble>(vnumdof+pnumdof);
 	IssmDouble* lambdax = xNew<IssmDouble>(vnumnodes);
 	IssmDouble* lambday = xNew<IssmDouble>(vnumnodes);
 	IssmDouble* lambdaz = xNew<IssmDouble>(vnumnodes);
 	IssmDouble* lambdap = xNew<IssmDouble>(pnumnodes);
+
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++) cs_list[i] = XYZEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
 
 	/*Get dof list: */
@@ -104,18 +107,18 @@
 
 	/*Use the dof list to index into the solution vector: */
-	for(i=0;i<vnumdof;i++) vvalues[i]=solution[vdoflist[i]];
-	for(i=0;i<pnumdof;i++) pvalues[i]=solution[pdoflist[i]];
+	for(i=0;i<vnumdof;i++) values[i]        =solution[vdoflist[i]];
+	for(i=0;i<pnumdof;i++) values[vnumdof+i]=solution[pdoflist[i]];
 
 	/*Transform solution in Cartesian Space*/
-	element->TransformSolutionCoord(&vvalues[0],XYZEnum);
+	element->TransformSolutionCoord(values,cs_list);
 
 	/*fill in all arrays: */
 	for(i=0;i<vnumnodes;i++){
-		lambdax[i] = vvalues[i*NDOF3+0]; if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
-		lambday[i] = vvalues[i*NDOF3+1]; if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
-		lambdaz[i] = vvalues[i*NDOF3+2]; if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector");
+		lambdax[i] = values[i*NDOF3+0]; if(xIsNan<IssmDouble>(lambdax[i])) _error_("NaN found in solution vector");
+		lambday[i] = values[i*NDOF3+1]; if(xIsNan<IssmDouble>(lambday[i])) _error_("NaN found in solution vector");
+		lambdaz[i] = values[i*NDOF3+2]; if(xIsNan<IssmDouble>(lambdaz[i])) _error_("NaN found in solution vector");
 	}
 	for(i=0;i<pnumnodes;i++){
-		lambdap[i] = pvalues[i]; if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector");
+		lambdap[i] = values[vnumdof+i]; if(xIsNan<IssmDouble>(lambdap[i])) _error_("NaN found in solution vector");
 	}
 
@@ -133,9 +136,9 @@
 	xDelete<int>(vdoflist);
 	xDelete<int>(pdoflist);
+	xDelete<int>(cs_list);
 	xDelete<IssmDouble>(lambdap);
 	xDelete<IssmDouble>(lambdaz);
 	xDelete<IssmDouble>(lambday);
 	xDelete<IssmDouble>(lambdax);
-	xDelete<IssmDouble>(vvalues);
-	xDelete<IssmDouble>(pvalues);
+	xDelete<IssmDouble>(values);
 }/*}}}*/
