Index: /issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp	(revision 368)
+++ /issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp	(revision 369)
@@ -60,8 +60,7 @@
 	loads=fem->loads->Copy();
 	
-	/*recover input velocities if present: */
+	/*Initialize ug and ug_old */
 	if (numberofdofspernode>=3)dofs[2]=1;//only keep vz if running with more than 3 dofs per node
 	ug=inputs->Get("velocity",&dofs[0],3);
-
 	VecDuplicate(ug,&old_ug);
 	VecCopy(ug,old_ug);
@@ -128,32 +127,30 @@
 
 		//Figure out if convergence is reached.
-		if(count>=2){
-			VecDuplicate(old_ug,&dug);VecCopy(old_ug,dug); VecAYPX(dug,-1.0,ug);
-			VecNorm(dug,NORM_2,&ndu);VecNorm(old_ug,NORM_2,&nu);VecNorm(dug,NORM_INFINITY,&nduinf); VecFree(&dug);
+		VecDuplicate(old_ug,&dug);VecCopy(old_ug,dug); VecAYPX(dug,-1.0,ug);
+		VecNorm(dug,NORM_2,&ndu);VecNorm(old_ug,NORM_2,&nu);VecNorm(dug,NORM_INFINITY,&nduinf); VecFree(&dug);
 
-			//relative criterion
-			if((ndu/nu)<eps_rel){
-				if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: norm(du)/norm(u)=",ndu/nu," < ",eps_rel);
-				converged=1;
-				}
-			else{ 
-				if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: norm(du)/norm(u)=",ndu/nu," > ",eps_rel);
+		//relative criterion
+		if((ndu/nu)<eps_rel){
+			if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: norm(du)/norm(u)=",ndu/nu," < ",eps_rel);
+			converged=1;
+		}
+		else{ 
+			if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: norm(du)/norm(u)=",ndu/nu," > ",eps_rel);
+			converged=0;
+		}
+
+		//Absolute criterion (Optional)
+		if (!isnan(eps_abs)){
+			if ((nduinf*yts)<eps_abs){
+				if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: max(du)=",nduinf*yts," < ",eps_abs);
+			}
+			else{
+				if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: max(du)=",nduinf*yts," > ",eps_abs);
 				converged=0;
 			}
+		}
 
-			//Absolute criterion (Optional)
-			if (!isnan(eps_abs)){
-				if ((nduinf*yts)<eps_abs){
-					if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: max(du)=",nduinf*yts," < ",eps_abs);
-				}
-				else{
-					if (debug) _printf_("%s%g%s%g\n","   Convergence criterion: max(du)=",nduinf*yts," > ",eps_abs);
-					converged=0;
-				}
-			}
-
-			//rift convergence
-			if (!constraints_converged) converged=0;
-		}
+		//rift convergence
+		if (!constraints_converged) converged=0;
 
 		/*Increase count: */
