Index: /issm/trunk/src/c/parallel/transient.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient.cpp	(revision 901)
+++ /issm/trunk/src/c/parallel/transient.cpp	(revision 902)
@@ -87,7 +87,7 @@
 	if(dim==3){
 		_printf_("read and create thermal finite element model:\n");
-		CreateFemModel(&femmodels[6],fid,"thermal",NULL);
+		CreateFemModel(&femmodels[6],fid,"thermal","transient");
 		_printf_("read and create melting finite element model:\n");
-		CreateFemModel(&femmodels[7],fid,"melting",NULL);
+		CreateFemModel(&femmodels[7],fid,"melting","transient");
 	}
 
@@ -145,5 +145,4 @@
 	PetscFinalize(); 
 	
-
 	/*end module: */
 	MODULEEND();
Index: /issm/trunk/src/c/parallel/transient_core_3d.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient_core_3d.cpp	(revision 901)
+++ /issm/trunk/src/c/parallel/transient_core_3d.cpp	(revision 902)
@@ -48,4 +48,5 @@
 	Vec t_g_average=NULL;
 	double* t_g_serial=NULL;
+	double melting_offset;
 	Vec m_g=NULL;
 	double* m_g_serial=NULL;
@@ -55,5 +56,4 @@
 	double dt;
 	double yts;
-	DataSet* temperature_results=NULL;
 	DataSet* diagnostic_results=NULL;
 	DataSet* prognostic_results=NULL;
@@ -139,10 +139,9 @@
 		//Deal with temperature first 
 		if(debug)_printf_("%s\n","computing temperature");
-		temperature_results=new DataSet(ResultsEnum()); 
-		thermal_core(results,fems+6, inputs);
-		
-		//extract t_g and m_g from thermal, and erase thermal results;
-		temperature_results->FindResult(&t_g,"t_g");
-		temperature_results->FindResult(&m_g,"m_g");
+		thermal_core_nonlinear(&t_g,&melting_offset,fem_t,inputs,ThermalAnalysisEnum(),TransientAnalysisEnum());
+		if(debug)_printf_("%s\n","computing melting");
+		inputs->Add("temperature",t_g,1,numberofnodes);
+		inputs->Add("melting_offset",melting_offset);
+		diagnostic_core_linear(&m_g,fem_m,inputs,MeltingAnalysisEnum(),TransientAnalysisEnum());
 
 		//Compute depth averaged temperature and add to inputs
@@ -165,5 +164,5 @@
 		if(debug)_printf_("%s\n","computing new thickness");
 		
-		inputs->Add("velocity",u_g,2,numberofnodes);
+		inputs->Add("velocity",u_g,3,numberofnodes);
 		prognostic_results=new DataSet(ResultsEnum()); prognostic_core(prognostic_results,fem_p, inputs);
 	
@@ -185,5 +184,4 @@
 		UpdateNodePositionsx( fem_sl->elements,fem_sl->nodes,fem_sl->loads,fem_sl->materials,h_g,b_g);
 		UpdateNodePositionsx( fem_p->elements,fem_p->nodes,fem_p->loads,fem_p->materials,h_g,b_g);
-		UpdateNodePositionsx( fem_p->elements,fem_p->nodes,fem_p->loads,fem_p->materials,h_g,b_g);
 		UpdateNodePositionsx( fem_t->elements,fem_t->nodes,fem_t->loads,fem_t->materials,h_g,b_g);
 		UpdateNodePositionsx( fem_m->elements,fem_m->nodes,fem_m->loads,fem_m->materials,h_g,b_g);
@@ -195,4 +193,6 @@
 		result=new Result(results->Size()+1,time,step,"s_g",s_g); results->AddObject(result);
 		result=new Result(results->Size()+1,time,step,"b_g",b_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"t_g",t_g); results->AddObject(result);
+		result=new Result(results->Size()+1,time,step,"m_g",m_g); results->AddObject(result);
 	}
 
