Index: /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 18235)
+++ /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 18236)
@@ -169,11 +169,15 @@
 
 	int        dim;
-	int        *doflist   = NULL;
-	IssmDouble rholambda,un;
+	int        *doflist       = NULL;
+	IssmDouble rholambda,un,vx,vy,vz,sigmann;
 	IssmDouble bed_normal[3];
+	IssmDouble *xyz_list_base = NULL;
 
 	/*Fetch number of nodes and dof for this finite element*/
 	int numnodes       = element->GetNumberOfNodes();
-	int numnodessigma  = element->NumberofNodes(P2Enum);
+	//int numnodessigma  = element->NumberofNodes(P2Enum);
+	int numnodessigma;
+	if(dim==2) numnodessigma=3;
+	else numnodessigma=6;
 	element->FindParam(&dim,DomainDimensionEnum);
 
@@ -196,9 +200,8 @@
 
 	/*Now compute sigmann if on base*/
-	element->GetInputListOnNodes(&sigmann[0],SigmaNNEnum);
-
 	if(element->IsOnBase()){ 
 
-		element->NormalBase(&bed_normal[0],xyz_list_tria);
+		element->GetVerticesCoordinatesBase(&xyz_list_base);
+		element->NormalBase(&bed_normal[0],xyz_list_base);
 		element->FindParam(&rholambda,AugmentedLagrangianRholambdaEnum);
 
@@ -207,20 +210,21 @@
 			gauss->GaussNode(P2Enum,i);
 
+			sigmann_input->GetInputValue(&sigmann, gauss);
 			vx_input->GetInputValue(&vx, gauss);
 			vy_input->GetInputValue(&vy, gauss);
-			un=bed_normal[0]*vx[i] + bed_normal[1]*vy[i];
+			un=bed_normal[0]*vx + bed_normal[1]*vy;
 			if(dim==3){
 			   vz_input->GetInputValue(&vz, gauss);
-				un = un + bed_normal[2]*vz[i];
+				un = un + bed_normal[2]*vz;
 			}
-			values[i] = sigmann[i] + rholambda*un;
-		}
-	}
-	element->AddInput(SigmaNNEnum,values,P2Enum));
+			values[i] = sigmann + rholambda*un;
+		}
+		delete gauss;
+		xDelete<IssmDouble>(xyz_list_base);
+	}
+	element->AddInput(SigmaNNEnum,values,P2Enum);
 
 	/*Free ressources:*/
-	delete gauss;
 	xDelete<IssmDouble>(values);
-	xDelete<IssmDouble>(sigmann);
 	xDelete<IssmDouble>(pressure);
 	xDelete<int>(doflist);
