Index: /issm/trunk/src/c/parallel/thermal.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal.cpp	(revision 1829)
+++ /issm/trunk/src/c/parallel/thermal.cpp	(revision 1830)
@@ -27,6 +27,6 @@
 	int   numberofnodes;
 
-	/*Fem models : */
-	FemModel femmodels[2];
+	/*Model: */
+	Model* model=NULL;
 
 	/*initial velocity and pressure: */
@@ -64,16 +64,19 @@
 	fid=pfopen(inputfilename,"rb");
 
+	/*Initialize model structure: */
+	model=new Model();
+
 	_printf_("read and create thermal finite element model:\n");
-	CreateFemModel(&femmodels[0],fid,ThermalAnalysisEnum(),0);
+	CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),0);
 	_printf_("read and create melting finite element model:\n");
-	CreateFemModel(&femmodels[1],fid,MeltingAnalysisEnum(),0);
+	CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),0);
 
 	_printf_("initialize inputs:\n");
-	femmodels[0].parameters->FindParam((void*)&u_g,"u_g");
-	femmodels[0].parameters->FindParam((void*)&p_g,"p_g");
-	femmodels[0].parameters->FindParam((void*)&numberofnodes,"numberofnodes");
-	femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");
-	femmodels[0].parameters->FindParam((void*)&dt,"dt");
-	femmodels[0].parameters->FindParam((void*)&yts,"yts");
+	model->Thermal()->parameters->FindParam((void*)&u_g,"u_g");
+	model->Thermal()->parameters->FindParam((void*)&p_g,"p_g");
+	model->Thermal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
+	model->Thermal()->parameters->FindParam((void*)&waitonlock,"waitonlock");
+	model->Thermal()->parameters->FindParam((void*)&dt,"dt");
+	model->Thermal()->parameters->FindParam((void*)&yts,"yts");
 
 	inputs=new ParameterInputs;
@@ -87,21 +90,21 @@
 
 	//erase velocities and pressure embedded in parameters
-	param=(Param*)femmodels[0].parameters->FindParamObject("u_g");
-	param=(Param*)femmodels[0].parameters->FindParamObject("velocity");
-	femmodels[0].parameters->DeleteObject((Object*)param);
-	param=(Param*)femmodels[0].parameters->FindParamObject("p_g");
-	femmodels[0].parameters->DeleteObject((Object*)param);
-	param=(Param*)femmodels[1].parameters->FindParamObject("u_g");
-	femmodels[1].parameters->DeleteObject((Object*)param);
-	param=(Param*)femmodels[1].parameters->FindParamObject("p_g");
-	femmodels[1].parameters->DeleteObject((Object*)param);
+	param=(Param*)model->Thermal()->parameters->FindParamObject("u_g");
+	param=(Param*)model->Thermal()->parameters->FindParamObject("velocity");
+	model->Thermal()->parameters->DeleteObject((Object*)param);
+	param=(Param*)model->Thermal()->parameters->FindParamObject("p_g");
+	model->Thermal()->parameters->DeleteObject((Object*)param);
+	param=(Param*)model->Melting()->parameters->FindParamObject("u_g");
+	model->Melting()->parameters->DeleteObject((Object*)param);
+	param=(Param*)model->Melting()->parameters->FindParamObject("p_g");
+	model->Melting()->parameters->DeleteObject((Object*)param);
 
 	/*are we running the solutoin sequence, or a qmu wrapper around it? : */
-	femmodels[0].parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");
+	model->Thermal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");
 	if(!qmu_analysis){
 
 		/*run thermal analysis: */
 		_printf_("call computational core:\n");
-		thermal_core(results,femmodels,inputs);
+		thermal_core(results,model,inputs);
 
 	}
@@ -111,5 +114,5 @@
 	
 		#ifdef _HAVE_DAKOTA_ 
-		Qmux(&femmodels[0],inputs,ThermalAnalysisEnum(),NoneAnalysisEnum());
+		Qmux(model,inputs,ThermalAnalysisEnum(),NoneAnalysisEnum());
 	 	#else
 		throw ErrorException(__FUNCT__," Dakota not present, cannot do qmu!");
@@ -122,5 +125,5 @@
 		
 	_printf_("process results:\n");
-	ProcessResults(&results,&femmodels[0],ThermalAnalysisEnum());
+	ProcessResults(&results,model,ThermalAnalysisEnum());
 	
 	_printf_("write results to disk:\n");
@@ -128,5 +131,5 @@
 
 	_printf_("write lock file:\n");
-	femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");
+	model->Thermal()->parameters->FindParam((void*)&waitonlock,"waitonlock");
 
 	if (waitonlock){
