Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 17183)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 17184)
@@ -64,9 +64,9 @@
 
 	/*Intermediaries */
-	int         meshtype,dim;
 	IssmDouble  Jdet,D;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get dimension*/
+	int dim,meshtype;
 	element->FindParam(&meshtype,MeshTypeEnum);
 	switch(meshtype){
@@ -116,6 +116,15 @@
 
 	/*Intermediaries */
-	IssmDouble  Jdet,D,normal[2];
+	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_top = NULL;
+
+	/*Get dimension*/
+	int dim,meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	switch(meshtype){
+		case Mesh2DverticalEnum: dim = 2; break;
+		case Mesh3DEnum:         dim = 3; break;
+		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
+	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -137,5 +146,5 @@
 		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
 		element->NodalFunctions(basis,gauss);
-		D = - gauss->weight*Jdet*normal[1]; 
+		D = - gauss->weight*Jdet*normal[dim-1]; 
 
 		TripleMultiply(basis,1,numnodes,1,
@@ -157,6 +166,15 @@
 
 	/*Intermediaries */
-	IssmDouble  Jdet,D,normal[2];
+	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_base = NULL;
+
+	/*Get dimension*/
+	int dim,meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	switch(meshtype){
+		case Mesh2DverticalEnum: dim = 2; break;
+		case Mesh3DEnum:         dim = 3; break;
+		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
+	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -178,5 +196,5 @@
 		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
 		element->NodalFunctions(basis,gauss);
-		D = - gauss->weight*Jdet*normal[1]; 
+		D = - gauss->weight*Jdet*normal[dim-1]; 
 
 		TripleMultiply(basis,1,numnodes,1,
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 17183)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 17184)
@@ -119,4 +119,13 @@
 	IssmDouble *xyz_list_top = NULL;
 
+	/*Get dimension*/
+	int dim,meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	switch(meshtype){
+		case Mesh2DverticalEnum: dim = 2; break;
+		case Mesh3DEnum:         dim = 3; break;
+		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
+	}
+
 	/*Fetch number of nodes and dof for this finite element*/
 	int numnodes = element->GetNumberOfNodes();
@@ -137,5 +146,5 @@
 		element->JacobianDeterminantTop(&Jdet,xyz_list_top,gauss);
 		element->NodalFunctions(basis,gauss);
-		D = - gauss->weight*Jdet*normal[1]; 
+		D = - gauss->weight*Jdet*normal[dim-1]; 
 
 		TripleMultiply(basis,1,numnodes,1,
@@ -157,6 +166,15 @@
 
 	/*Intermediaries */
-	IssmDouble  Jdet,D,normal[2];
+	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_base = NULL;
+
+	/*Get dimension*/
+	int dim,meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	switch(meshtype){
+		case Mesh2DverticalEnum: dim = 2; break;
+		case Mesh3DEnum:         dim = 3; break;
+		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
+	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -178,5 +196,5 @@
 		element->JacobianDeterminantBase(&Jdet,xyz_list_base,gauss);
 		element->NodalFunctions(basis,gauss);
-		D = - gauss->weight*Jdet*normal[1]; 
+		D = - gauss->weight*Jdet*normal[dim-1]; 
 
 		TripleMultiply(basis,1,numnodes,1,
