Index: /issm/trunk/src/m/solutions/cielo/diagnostic_core_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/diagnostic_core_nonlinear.m	(revision 1666)
+++ /issm/trunk/src/m/solutions/cielo/diagnostic_core_nonlinear.m	(revision 1667)
@@ -9,7 +9,5 @@
 
 %   initialize solution vector
-	count=1;
-	converged=0;
-
+	converged=0; count=1;
 	soln(count).u_g=get(inputs,'velocity',[1 1 (m.parameters.numberofdofspernode>=3) (m.parameters.numberofdofspernode>=3)]); %only keep vz if running with more than 3 dofs per node
 	soln(count).u_f= Reducevectorgtof(soln(count).u_g,m.nodesets);
@@ -35,5 +33,4 @@
 		[K_gg , p_g, kmax]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,m.elements,m.nodes,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
 
-
 		%Reduce tangent matrix from g size to f size
 		[K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets); 
@@ -46,5 +43,4 @@
 
 		%Solve	
-		displaystring(m.parameters.debug>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
 		[soln(count).u_f]=Solver(K_ff,p_f,[],m.parameters);
 
@@ -59,42 +55,5 @@
 
 		%Figure out if convergence have been reached
-
-		%Solver
-		solver_residue=norm(K_ff*soln(count).u_f-p_f,2)/norm(p_f,2);
-		displaystring(m.parameters.debug>1,'%-60s%g','      convergence criterion: norm(K[n]U[n]-F)/norm(F)',solver_residue);
-
-		%Force equilibrium
-		res=norm(K_ff*soln(count-1).u_f-p_f,2)/norm(p_f,2);
-		if (res<=m.parameters.eps_res),
-			displaystring(m.parameters.debug,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' < ',m.parameters.eps_res*100,' %');
-			converged=1;
-		else
-			displaystring(m.parameters.debug,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' > ',m.parameters.eps_res*100,' %');
-			converged=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ATTTENETIONHiohfiow 
-		end
-
-		%Relative criterion
-		dug=soln(count).u_g-soln(count-1).u_g; 
-		ndu=norm(dug,2); 
-		nu=norm(soln(count-1).u_g,2); 
-		if (ndu/nu<=m.parameters.eps_rel),
-			displaystring(m.parameters.debug,'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' < ',m.parameters.eps_rel*100,' %');
-			converged=1;
-		else
-			displaystring(m.parameters.debug,'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' > ',m.parameters.eps_rel*100,' %');
-			converged=0;
-		end
-
-		%Absolute criterion
-		nduinf=norm(dug,inf)*m.parameters.yts; 
-		if ~isnan(m.parameters.eps_abs),
-			if (nduinf<=m.parameters.eps_abs),
-				displaystring(m.parameters.debug,'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' < ',m.parameters.eps_abs,' m/yr');
-			else
-				displaystring(m.parameters.debug,'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' > ',m.parameters.eps_abs,' m/yr');
-				converged=0;
-			end
-		end
-		disp(' ')
+		converged=convergence(K_ff,p_f,soln(count).u_f,soln(count-1).u_f,m.parameters);
 
 		%rift convergence criterion
