Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 6419)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 6420)
@@ -3744,4 +3744,8 @@
 		vx[i+3]=vx[i];
 		vy[i+3]=vy[i];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -3841,4 +3845,8 @@
 		vx[i]=macayeal_values[i*NDOF2+0]+pattyn_values[i*NDOF2+0];
 		vy[i]=macayeal_values[i*NDOF2+1]+pattyn_values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -3934,4 +3942,10 @@
 		vzstokes[i]=stokes_values[i*NDOF4+2];
 		pressure[i]=stokes_values[i*NDOF4+3]*stokesreconditioning;
+
+		/*Check solution*/
+		if(isnan(vx[i]))       _error_("NaN found in solution vector");
+		if(isnan(vy[i]))       _error_("NaN found in solution vector");
+		if(isnan(vzstokes[i])) _error_("NaN found in solution vector");
+		if(isnan(pressure[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4006,4 +4020,8 @@
 		vx[i]=values[i*NDOF2+0];
 		vy[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4092,4 +4110,10 @@
 		vzstokes[i]=stokes_values[i*NDOF4+2];
 		pressure[i]=stokes_values[i*NDOF4+3]*stokesreconditioning;
+
+		/*Check solution*/
+		if(isnan(vx[i]))       _error_("NaN found in solution vector");
+		if(isnan(vy[i]))       _error_("NaN found in solution vector");
+		if(isnan(vzstokes[i])) _error_("NaN found in solution vector");
+		if(isnan(pressure[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4164,4 +4188,8 @@
 		vx[i]=values[i*NDOF2+0];
 		vy[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4242,5 +4270,10 @@
 	/*Use the dof list to index into the solution vector vz: */
 	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
-	for(i=0;i<NUMVERTICES;i++) vz[i]=values[i*NDOF1+0];
+	for(i=0;i<NUMVERTICES;i++){
+		vz[i]=values[i*NDOF1+0];
+
+		/*Check solution*/
+		if(isnan(vz[i])) _error_("NaN found in solution vector");
+	}
 
 	/*Get Vx and Vy*/
@@ -4350,4 +4383,10 @@
 		vz[i]=values[i*NDOF4+2];
 		pressure[i]=values[i*NDOF4+3];
+
+		/*Check solution*/
+		if(isnan(vx[i]))       _error_("NaN found in solution vector");
+		if(isnan(vy[i]))       _error_("NaN found in solution vector");
+		if(isnan(vz[i]))       _error_("NaN found in solution vector");
+		if(isnan(pressure[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4400,4 +4439,10 @@
 		lambdaz[i]=values[i*NDOF4+2];
 		lambdap[i]=values[i*NDOF4+3];
+
+		/*Check solution*/
+		if(isnan(lambdax[i])) _error_("NaN found in solution vector");
+		if(isnan(lambday[i])) _error_("NaN found in solution vector");
+		if(isnan(lambdaz[i])) _error_("NaN found in solution vector");
+		if(isnan(lambdap[i])) _error_("NaN found in solution vector");
 	}
 
@@ -4433,4 +4478,8 @@
 		lambdax[i]=values[i*NDOF2+0];
 		lambday[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(lambdax[i]))       _error_("NaN found in solution vector");
+		if(isnan(lambday[i]))       _error_("NaN found in solution vector");
 	}
 
@@ -4459,5 +4508,12 @@
 
 	/*Use the dof list to index into the solution vector: */
-	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+
+		/*Check solution*/
+		if(isnan(values[i])) _error_("NaN found in solution vector");
+		if(values[i]<0)      _error_("temperature < 0°K found in solution vector");
+		if(values[i]>275)    _error_("temperature > 275°K found in solution vector (Paterson's rheology associated is negative)");
+	}
 
 	this->inputs->GetParameterValue(&converged,ConvergedEnum);
@@ -4491,5 +4547,8 @@
 
 	/*Use the dof list to index into the solution vector: */
-	for(int i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(int i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+		if(isnan(values[i])) _error_("NaN found in solution vector");
+	}
 
 	/*Add input to the element: */
@@ -4520,4 +4579,5 @@
 		values[i]         =solution[doflist[i]];
 		values[i+numdof2d]=values[i];
+		if(isnan(values[i])) _error_("NaN found in solution vector");
 	}
 
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 6419)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 6420)
@@ -3722,5 +3722,8 @@
 
 	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
-	for(i=0;i<numdof;i++) lambda[i]=values[i];
+	for(i=0;i<numdof;i++){
+		lambda[i]=values[i];
+		if(isnan(lambda[i])) _error_("NaN found in solution vector");
+	}
 
 	/*Add vx and vy as inputs to the tria element: */
@@ -3752,4 +3755,8 @@
 		lambdax[i]=values[i*NDOF2+0];
 		lambday[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(lambdax[i])) _error_("NaN found in solution vector");
+		if(isnan(lambday[i])) _error_("NaN found in solution vector");
 	}
 
@@ -3789,4 +3796,8 @@
 		vx[i]=values[i*NDOF2+0];
 		vy[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -3848,4 +3859,8 @@
 		vx[i]=values[i*NDOF2+0];
 		vy[i]=values[i*NDOF2+1];
+
+		/*Check solution*/
+		if(isnan(vx[i])) _error_("NaN found in solution vector");
+		if(isnan(vy[i])) _error_("NaN found in solution vector");
 	}
 
@@ -3901,5 +3916,8 @@
 
 	/*Use the dof list to index into the solution vector: */
-	for(int i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(int i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+		if(isnan(values[i])) _error_("NaN found in solution vector");
+	}
 
 	/*Add input to the element: */
