Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 24917)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 24918)
@@ -591,5 +591,4 @@
 	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
 	IssmDouble*    dbasis   = xNew<IssmDouble>(3*numnodes);
-	IssmDouble*    Bprime   = xNew<IssmDouble>(3*numnodes);
 	IssmDouble     K[3][3];
 
@@ -667,9 +666,13 @@
 			for(int i=0;i<3;i++) for(int j=0;j<3;j++) K[i][j] = D_scalar*K[i][j];
 
-			GetBAdvecprime(Bprime,element,xyz_list,gauss);
-			TripleMultiply(Bprime,3,numnodes,1,
-						&K[0][0],3,3,0,
-						Bprime,3,numnodes,0,
-						&Ke->values[0],1);
+			for(int i=0;i<numnodes;i++){
+				for(int j=0;j<numnodes;j++){
+					Ke->values[i*numnodes+j] += (
+								dbasis[0*numnodes+i] *(K[0][0]*dbasis[0*numnodes+j] + K[0][1]*dbasis[1*numnodes+j]+ K[0][2]*dbasis[2*numnodes+j]) +
+								dbasis[1*numnodes+i] *(K[1][0]*dbasis[0*numnodes+j] + K[1][1]*dbasis[1*numnodes+j]+ K[1][2]*dbasis[2*numnodes+j]) +
+								dbasis[2*numnodes+i] *(K[2][0]*dbasis[0*numnodes+j] + K[2][1]*dbasis[1*numnodes+j]+ K[2][2]*dbasis[2*numnodes+j]) 
+								);
+				}
+			}
 		}
 		/*SUPG*/
@@ -715,5 +718,4 @@
 	xDelete<IssmDouble>(basis);
 	xDelete<IssmDouble>(dbasis);
-	xDelete<IssmDouble>(Bprime);
 	delete gauss;
 	return Ke;
@@ -758,9 +760,5 @@
 		D=gauss->weight*Jdet*rho_water*mixed_layer_capacity*thermal_exchange_vel/(heatcapacity*rho_ice);
 		if(reCast<bool,IssmDouble>(dt)) D=dt*D;
-		TripleMultiply(basis,numnodes,1,0,
-					&D,1,1,0,
-					basis,1,numnodes,0,
-					&Ke->values[0],1);
-
+		for(int i=0;i<numnodes;i++) for(int j=0;j<numnodes;j++) Ke->values[i*numnodes+j] += D*basis[i]*basis[j];
 	}
 
