Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17297)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17298)
@@ -1273,5 +1273,5 @@
 	switch(meshtype){
 		case Mesh2DverticalEnum:   dim = 1; bsize = 1; break;
-		case Mesh2DhorizontalEnum: dim = 2; bsize = 1; break;
+		case Mesh2DhorizontalEnum: dim = 2; bsize = 3; break;
 		case Mesh3DEnum:           dim = 2; bsize = 3; break;
 		default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet");
@@ -1295,7 +1295,7 @@
 	Input* vy_input    = NULL;
 	Input* vyold_input = NULL;
-	if(dim==3){
-		vy_input=element->GetInput(VyEnum);          _assert_(vy_input);
-		vyold_input=element->GetInput(VyPicardEnum); _assert_(vyold_input);
+	if(dim==2){
+		vy_input    = element->GetInput(VyEnum);       _assert_(vy_input);
+		vyold_input = element->GetInput(VyPicardEnum); _assert_(vyold_input);
 	}
 	element->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum);
@@ -1316,5 +1316,5 @@
 		newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
 		D_scalar=2.*newviscosity*thickness*gauss->weight*Jdet;
-		for(int i=0;i<3;i++) D[i*3+i]=D_scalar;
+		for(int i=0;i<bsize;i++) D[i*bsize+i]=D_scalar;
 
 		TripleMultiply(B,bsize,numdof,1,
@@ -1322,4 +1322,7 @@
 					Bprime,bsize,numdof,0,
 					&Ke->values[0],1);
+
+		for(int i=0;i<bsize*numdof;i++) if(B[i]==1.) _error_("STREAM");
+		for(int i=0;i<bsize*numdof;i++) if(Bprime[i]==1.) _error_("STREAM");
 	}
 
@@ -1525,9 +1528,4 @@
 	if(dim==2){
 		for(int i=0;i<numnodes;i++){
-			B[i] = dbasis[i];
-		}
-	}
-	else{
-		for(int i=0;i<numnodes;i++){
 			B[2*numnodes*0+2*i+0] = dbasis[0*numnodes+i];
 			B[2*numnodes*0+2*i+1] = 0.;
@@ -1536,4 +1534,9 @@
 			B[2*numnodes*2+2*i+0] = .5*dbasis[1*numnodes+i];
 			B[2*numnodes*2+2*i+1] = .5*dbasis[0*numnodes+i];
+		}
+	}
+	else{
+		for(int i=0;i<numnodes;i++){
+			B[i] = dbasis[i];
 		}
 	}
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17297)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 17298)
@@ -749,5 +749,5 @@
 
 	/*Check that both inputs have been found*/
-	if (!vx_input || !vy_input){
+	if(!vx_input || !vy_input){
 		_error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
 	}
