Index: /issm/trunk/src/m/solutions/jpl/diagnostic_core_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/diagnostic_core_nonlinear.m	(revision 3842)
+++ /issm/trunk/src/m/solutions/jpl/diagnostic_core_nonlinear.m	(revision 3843)
@@ -1,17 +1,14 @@
-function [u_g varargout]=diagnostic_core_nonlinear(fem,input_loads,analysis_type,sub_analysis_type)
+function [u_g varargout]=diagnostic_core_nonlinear(m,input_loads,analysis_type,sub_analysis_type)
 %DIAGNOSTIC_CORE_NONLINEAR - core solution of diagnostic non-linear
 %
 %   Usage:
-%      [u_g varargout]=diagnostic_core_nonlinear(fem,analysis_type,sub_analysis_type)
+%      [u_g varargout]=diagnostic_core_nonlinear(m,inputs_loads,analysis_type,sub_analysis_type)
 	
-%   first off! We are going to modify the loads dataset. We need to shield the loads from those changes once we return;
-	loads=fem.loads;
-
 %	stiffness and load generation only:
-	fem.parameters.Kflag=1; fem.parameters.Pflag=1;
+	m.parameters.Kflag=1; m.parameters.Pflag=1;
 
 %	Were loads requested as outputs ?
-	if isempty(loads),
-		loads=fem.loads;
+	if isempty(input_loads),
+		loads=m.loads;
 	else
 		loads=input_loads;
@@ -21,8 +18,8 @@
 	converged=0; count=1;
 
-	ug=GetSolutionFromInputs(fem.elements, fem.nodes, fem.vertices, fem.loads, fem.materials, fem.parameters, analysis_type, sub_analysis_type);
-	uf=Reducevectorgtof( ug, fem.nodesets);
+	ug=GetSolutionFromInputs(m.elements, m.nodes, m.vertices, m.loads, m.materials, m.parameters, analysis_type, sub_analysis_type);
+	uf=Reducevectorgtof( ug, m.nodesets);
 
-	displaystring(fem.parameters.Verbose,'\n%s',['   starting direct shooting method']);
+	displaystring(m.parameters.Verbose,'\n%s',['   starting direct shooting method']);
 	while(~converged),
 		
@@ -31,5 +28,5 @@
 		
 		%system matrices 
-		[K_gg_nopenalty , p_g_nopenalty]=SystemMatrices(fem.elements,fem.nodes,fem.vertices,loads,fem.materials,fem.parameters,analysis_type,sub_analysis_type);
+		[K_gg_nopenalty , p_g_nopenalty]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
 	
 		%penalties
@@ -52,8 +49,5 @@
 
 		%Update elements with new solution
-		[m.elements]=UpdateInputs(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,soln(count).u_g,analysis_type,sub_analysis_type);
-		
-		%Deal with penalty loads
-		inputs=add(inputs,'velocity',soln(count).u_g,'doublevec',m.parameters.NumberOfDofsPerNode,m.parameters.NumberOfNodes);
+		m=UpdateInputsFromSolution(m,soln(count).u_g,analysis_type,sub_analysis_type);
 		
 		%penalty constraints
