Index: /issm/trunk/src/m/solutions/adjointdiagnostic_core.m
===================================================================
--- /issm/trunk/src/m/solutions/adjointdiagnostic_core.m	(revision 8396)
+++ /issm/trunk/src/m/solutions/adjointdiagnostic_core.m	(revision 8397)
@@ -15,5 +15,5 @@
 	issmprintf(VerboseSolution,'   computing velocities');
 	femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
-	femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads);
+	femmodel=solver_nonlinear(femmodel,conserve_loads);
 
 	%Call SurfaceAreax, because some it might be needed by PVector
Index: /issm/trunk/src/m/solutions/diagnostic_core.m
===================================================================
--- /issm/trunk/src/m/solutions/diagnostic_core.m	(revision 8396)
+++ /issm/trunk/src/m/solutions/diagnostic_core.m	(revision 8397)
@@ -49,5 +49,5 @@
 		issmprintf(VerboseSolution,'\n%s',['   computing horizontal velocities']);
 		femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum);
-		femmodel=solver_diagnostic_nonlinear(femmodel,modify_loads); 
+		femmodel=solver_nonlinear(femmodel,modify_loads); 
 	end
 	
Index: /issm/trunk/src/m/solutions/objectivefunctionC.m
===================================================================
--- /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 8396)
+++ /issm/trunk/src/m/solutions/objectivefunctionC.m	(revision 8397)
@@ -23,5 +23,5 @@
 %Run diagnostic with updated inputs:
 if (solution_type==DiagnosticSolutionEnum)
-	femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads);  %true means we conserve loads at each diagnostic run
+	femmodel=solver_nonlinear(femmodel,conserve_loads);  %true means we conserve loads at each diagnostic run
 elseif (solution_type==SteadystateSolutionEnum)
 	femmodel=diagnostic_core(femmodel);  %We need a 3D velocity!! (vz is required for the next thermal run)
Index: sm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m	(revision 8396)
+++ 	(revision )
@@ -1,79 +1,0 @@
-function femmodel=solver_diagnostic_nonlinear(femmodel,conserve_loads)
-%SOLVER_DIAGNOSTIC_NONLINEAR - core solver of diagnostic run
-%
-%   Usage:
-%      [femmodel]=solver_diagnostic_nonlinear(femmodel,conserve_loads)
-
-	%Branch on partitioning schema requested
-	kffpartitioning=femmodel.parameters.Kff;
-	min_mechanical_constraints=femmodel.parameters.MinMechanicalConstraints;
-
-	%keep a copy of loads for now
-	loads=femmodel.loads;
-
-	%initialize solution vector
-	converged=0; count=1;
-
-	%Start non-linear iteration using input velocity: 
-	ug=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, loads, femmodel.materials, femmodel.parameters);
-	uf=Reducevectorgtof( ug, femmodel.nodesets,femmodel.parameters);
-
-	%Update the solution to make sure that vx and vxold are similar
-	[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
-
-	while(~converged),
-
-		%save pointer to old velocity
-		old_ug=ug;
-		old_uf=uf;
-
-		if kffpartitioning,
-			[K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);
-			p_f = Reduceload( p_f, K_fs, femmodel.ys);
-		else
-			[K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);
-			[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 
-			p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
-			df=Reducevectorgtof( dg, femmodel.nodesets,femmodel.parameters);
-		end
-
-		uf=Solver(K_ff,p_f,old_uf,df,femmodel.parameters);
-		ug= Mergesolutionfromftog( uf, femmodel.ys, femmodel.nodesets); 
-
-		[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
-		[loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints( femmodel.elements,femmodel.nodes,femmodel.vertices,loads, femmodel.materials,femmodel.parameters);
-
-		issmprintf(VerboseConvergence(),'%s%i','      number of unstable constraints: ',num_unstable_constraints);
-
-		%Figure out if convergence have been reached
-		converged=convergence(K_ff,p_f,uf,old_uf,femmodel.parameters);
-
-		%add convergence status into  status
-		[femmodel.elements loads]=InputUpdateFromConstant(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,double(converged),ConvergedEnum);
-
-		%rift convergence
-		if ~constraints_converged,
-			if converged,
-				if num_unstable_constraints <= min_mechanical_constraints,
-					converged=1;
-				else 
-					converged=0;
-				end
-			end
-		end
-
-		%increase count
-		count=count+1;
-		if(converged==1)break;
-			if(count>max_nonlinear_iterations),
-				issmprintf(true,'%s%i%s','      maximum number of iterations ',max_nonlinear_iterations,' exceeded');
-			end
-		end
-
-	end
-
-	%deal with loads:
-	if conserve_loads==false,
-		femmodel.loads=loads;
-	end
-end
Index: /issm/trunk/src/m/solvers/solver_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_nonlinear.m	(revision 8397)
+++ /issm/trunk/src/m/solvers/solver_nonlinear.m	(revision 8397)
@@ -0,0 +1,79 @@
+function femmodel=solver_nonlinear(femmodel,conserve_loads)
+%SOLVER_NONLINEAR - core solver of diagnostic run
+%
+%   Usage:
+%      [femmodel]=solver_nonlinear(femmodel,conserve_loads)
+
+	%Branch on partitioning schema requested
+	kffpartitioning=femmodel.parameters.Kff;
+	min_mechanical_constraints=femmodel.parameters.MinMechanicalConstraints;
+
+	%keep a copy of loads for now
+	loads=femmodel.loads;
+
+	%initialize solution vector
+	converged=0; count=1;
+
+	%Start non-linear iteration using input velocity: 
+	ug=GetSolutionFromInputs(femmodel.elements, femmodel.nodes, femmodel.vertices, loads, femmodel.materials, femmodel.parameters);
+	uf=Reducevectorgtof( ug, femmodel.nodesets,femmodel.parameters);
+
+	%Update the solution to make sure that vx and vxold are similar
+	[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
+
+	while(~converged),
+
+		%save pointer to old velocity
+		old_ug=ug;
+		old_uf=uf;
+
+		if kffpartitioning,
+			[K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);
+			p_f = Reduceload( p_f, K_fs, femmodel.ys);
+		else
+			[K_gg,K_ff,K_fs,p_g,p_f,dg,df,kmax]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters);
+			[K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets); 
+			p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
+			df=Reducevectorgtof( dg, femmodel.nodesets,femmodel.parameters);
+		end
+
+		uf=Solver(K_ff,p_f,old_uf,df,femmodel.parameters);
+		ug= Mergesolutionfromftog( uf, femmodel.ys, femmodel.nodesets); 
+
+		[femmodel.elements,femmodel.materials]=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
+		[loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints( femmodel.elements,femmodel.nodes,femmodel.vertices,loads, femmodel.materials,femmodel.parameters);
+
+		issmprintf(VerboseConvergence(),'%s%i','      number of unstable constraints: ',num_unstable_constraints);
+
+		%Figure out if convergence have been reached
+		converged=convergence(K_ff,p_f,uf,old_uf,femmodel.parameters);
+
+		%add convergence status into  status
+		[femmodel.elements loads]=InputUpdateFromConstant(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,double(converged),ConvergedEnum);
+
+		%rift convergence
+		if ~constraints_converged,
+			if converged,
+				if num_unstable_constraints <= min_mechanical_constraints,
+					converged=1;
+				else 
+					converged=0;
+				end
+			end
+		end
+
+		%increase count
+		count=count+1;
+		if(converged==1)break;
+			if(count>max_nonlinear_iterations),
+				issmprintf(true,'%s%i%s','      maximum number of iterations ',max_nonlinear_iterations,' exceeded');
+			end
+		end
+
+	end
+
+	%deal with loads:
+	if conserve_loads==false,
+		femmodel.loads=loads;
+	end
+end
