Index: /issm/trunk/src/m/solutions/jpl/prognostic.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/prognostic.m	(revision 3884)
+++ /issm/trunk/src/m/solutions/jpl/prognostic.m	(revision 3885)
@@ -17,13 +17,4 @@
 	md.dof=modelsize(models);
 
-	%initialize inputs
-	displaystring(md.verbose,'\n%s',['setup inputs...']);
-	inputs=inputlist;
-	inputs=add(inputs,'velocity',models.p.parameters.u_g,'doublevec',3,models.p.parameters.NumberOfNodes);
-	inputs=add(inputs,'thickness',models.p.parameters.h_g,'doublevec',1,models.p.parameters.NumberOfNodes);
-	inputs=add(inputs,'melting',models.p.parameters.m_g,'doublevec',1,models.p.parameters.NumberOfNodes);
-	inputs=add(inputs,'accumulation',models.p.parameters.a_g,'doublevec',1,models.p.parameters.NumberOfNodes);
-	inputs=add(inputs,'dt',models.p.parameters.Dt*models.p.parameters.Yts,'double');
-
 	displaystring(md.verbose,'\n%s',['call computational core:']);
 	results=prognostic_core(models,PrognosticAnalysisEnum(),NoneAnalysisEnum());
Index: /issm/trunk/src/m/solutions/jpl/prognostic_core.m
===================================================================
--- /issm/trunk/src/m/solutions/jpl/prognostic_core.m	(revision 3884)
+++ /issm/trunk/src/m/solutions/jpl/prognostic_core.m	(revision 3885)
@@ -3,22 +3,26 @@
 %
 %   Usage:
-%      h_g=prognostic_core(m,analysis_type,sub_analysis_type)
+%      results=prognostic_core(m,analysis_type,sub_analysis_type)
 
 	%get FE model
-	m=models.p;
+	verbose=models.p.parameters.Verbose;
 	results.time=0;
 	results.step=1;
 
-	displaystring(m.parameters.Verbose,'\n%s',['depth averaging velocity...']);
-	%Take only the first two dofs of m.parameters.u_g
-	u_g=get(inputs,'velocity',[1 1 0 0]);
-	u_g=FieldDepthAverage(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,u_g,'velocity');
-	inputs=add(inputs,'velocity_average',u_g,'doublevec',2,m.parameters.NumberOfNodes);
+	displaystring(verbose,'\n%s',['depth averaging velocity...']);
+	[models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters]=DepthAverageInput(models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters,VxEnum);
+	[models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters]=DepthAverageInput(models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters,VyEnum);
 
-	displaystring(m.parameters.Verbose,'\n%s',['call computational core:']);
-	results.h_g=diagnostic_core_linear(m,analysis_type,sub_analysis_type);
+	displaystring(verbose,'\n%s',['call computational core:']);
+	h_g=diagnostic_core_linear(models.p,analysis_type,sub_analysis_type);
 
-	displaystring(m.parameters.Verbose,'\n%s',['extrude computed thickness on all layers:']);
-	results.h_g=FieldExtrude(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,results.h_g,'thickness',0);
+	%Update
+	models.p.elements=UpdateInputsFromSolution(models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters,h_g,PrognosticAnalysisEnum,NoneAnalysisEnum);
+
+	displaystring(verbose,'\n%s',['extrude computed thickness on all layers:']);
+	models.p.elements=ExtrudeInput(models.p.elements,models.p.nodes,models.p.vertices,models.p.loads,models.p.materials,models.p.parameters,ThicknessEnum);
+
+	%NEED TO BE CLEANED
+	results.h_g=h_g;
 
 end %end function
