Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 712)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 713)
@@ -20,7 +20,5 @@
 	int i;
 
-	double* vx=NULL;
-	double* vy=NULL;
-	double* vz=NULL;
+	double* melting=NULL;
 
 	/*recover parameters : */
@@ -29,41 +27,27 @@
 	count=parameters->Size();
 
-	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if (!model->ismacayealpattyn)return;
+	/* get initial melting if transient*/
+	if(strcmp(model->sub_analysis_type,"transient")==0){
 
-	/*Get vx and vy: */
-	ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");
-	ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");
-	ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");
+		/*Get melting: */
+		ModelFetchData((void**)&melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
+		if(melting) {
+			for(i=0;i<model->numberofnodes;i++)melting[i]=melting[i]/model->yts;   //m/s instead of m/yr
+		}
+		else{
+			for(i=0;i<model->numberofnodes;i++)melting[i]=0;
+		}
 
-	if(vx) for(i=0;i<model->numberofnodes;i++)vx[i]=vx[i]/model->yts;
-	if(vy) for(i=0;i<model->numberofnodes;i++)vy[i]=vy[i]/model->yts;
-	if(vz) for(i=0;i<model->numberofnodes;i++)vz[i]=vz[i]/model->yts;
+		count++;
+		param= new Param(count,"melting",DOUBLEVEC);
+		if(melting) param->SetDoubleVec(melting,model->numberofnodes);
+		else param->SetDoubleVec(melting,0);
+		parameters->AddObject(param);
 
-	count++;
-	param= new Param(count,"vx",DOUBLEVEC);
-	if(vx) param->SetDoubleVec(vx,model->numberofnodes);
-	else param->SetDoubleVec(vx,0);
-	parameters->AddObject(param);
-
-	count++;
-	param= new Param(count,"vy",DOUBLEVEC);
-	if(vy) param->SetDoubleVec(vy,model->numberofnodes);
-	else param->SetDoubleVec(vy,0);
-	parameters->AddObject(param);
-
-	count++;
-	param= new Param(count,"vz",DOUBLEVEC);
-	if(vz) param->SetDoubleVec(vz,model->numberofnodes);
-	else param->SetDoubleVec(vz,0);
-	parameters->AddObject(param);
-
-	xfree((void**)&vx);
-	xfree((void**)&vy);
-	xfree((void**)&vz);
+		/*Free melting: */
+		xfree((void**)&melting);
+	}
 	
 	/*Assign output pointer: */
 	*pparameters=parameters;
 }
-
-	
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 712)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 713)
@@ -25,5 +25,4 @@
 	double* pressure=NULL;
 	double* temperature=NULL;
-	double* melting=NULL;
 
 	/*recover parameters : */
@@ -75,17 +74,9 @@
 	xfree((void**)&pressure);
 
-	/* get initial temperature and melting if transient*/
+	/* get initial temperature if transient*/
 	if(strcmp(model->sub_analysis_type,"transient")==0){
 
 		/*Get melting and temperature: */
-		ModelFetchData((void**)&melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
-		if(melting) for(i=0;i<model->numberofnodes;i++)melting[i]=melting[i]/model->yts;   //m/s instead of m/yr
 		ModelFetchData((void**)&temperature,NULL,NULL,model_handle,"temperature","Matrix","Mat");
-
-		count++;
-		param= new Param(count,"melting",DOUBLEVEC);
-		if(melting) param->SetDoubleVec(melting,model->numberofnodes);
-		else param->SetDoubleVec(melting,0);
-		parameters->AddObject(param);
 
 		count++;
@@ -95,6 +86,5 @@
 		parameters->AddObject(param);
 
-		/*Free melting and temperature: */
-		xfree((void**)&melting);
+		/*Free temperature: */
 		xfree((void**)&temperature);
 	}
Index: /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp
===================================================================
--- /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 712)
+++ /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 713)
@@ -178,13 +178,10 @@
 
 			parameters->FindParam((void*)&temperature,"temperature"); 
-			parameters->FindParam((void*)&melting,"melting"); 
-
-			/*Now, from temperature and melting, build t_g and m_g, correctly partitioned: */ 
+
+			/*Now, from temperature , build t_g , correctly partitioned: */ 
 			t_g=(double*)xcalloc(numberofnodes,sizeof(double)); 
-			m_g=(double*)xcalloc(numberofnodes,sizeof(double)); 
 
 			for(i=0;i<numberofnodes;i++){ 
 				t_g[(int)(partition[i])]=temperature[i]; 
-				m_g[(int)(partition[i])]=melting[i]; 
 			} 
 
@@ -195,16 +192,30 @@
 			parameters->AddObject(param); 
 
-			count++; 
-			param= new Param(count,"m_g",DOUBLEVEC); 
-			param->SetDoubleVec(m_g,numberofnodes); 
-			parameters->AddObject(param); 
-
 			/*erase old parameter: */ 
 			param=(Param*)parameters->FindParamObject("temperature"); 
 			parameters->DeleteObject((Object*)param); 
-
-			param=(Param*)parameters->FindParamObject("melting"); 
-			parameters->DeleteObject((Object*)param); 
-		}
+		}
+	}
+
+	if(analysis_type==MeltingAnalysisEnum() && sub_analysis_type==TransientAnalysisEnum()){
+
+		parameters->FindParam((void*)&melting,"melting"); 
+
+		/*Now, from melting , build m_g , correctly partitioned: */ 
+		m_g=(double*)xcalloc(numberofnodes,sizeof(double)); 
+
+		for(i=0;i<numberofnodes;i++){ 
+			m_g[(int)(partition[i])]=melting[i]; 
+		} 
+
+		/*Now, create new parameter: */ 
+		count++; 
+		param= new Param(count,"m_g",DOUBLEVEC); 
+		param->SetDoubleVec(m_g,numberofnodes); 
+		parameters->AddObject(param); 
+
+		/*erase old parameter: */ 
+		param=(Param*)parameters->FindParamObject("melting"); 
+		parameters->DeleteObject((Object*)param); 
 	}
 
Index: /issm/trunk/src/c/parallel/prognostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/prognostic.cpp	(revision 712)
+++ /issm/trunk/src/c/parallel/prognostic.cpp	(revision 713)
@@ -27,10 +27,10 @@
 	char* qmuerrname=NULL;
 	int   numberofnodes;
-	int waitonlock=0;
+	int   waitonlock=0;
 
 	FemModel fem;
 
-	Vec h_g=NULL;
-	Vec u_g=NULL;
+	Vec     h_g=NULL;
+	Vec     u_g=NULL;
 	double* u_g_serial=NULL;
 	double* h_g_initial=NULL;
@@ -43,7 +43,6 @@
 	DataSet* results=NULL;
 
-	
 	ParameterInputs* inputs=NULL;
-	Param*  param=NULL;
+	Param*   param=NULL;
 
 	MODULEBOOT();
Index: /issm/trunk/src/c/parallel/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal_core.cpp	(revision 712)
+++ /issm/trunk/src/c/parallel/thermal_core.cpp	(revision 713)
@@ -29,17 +29,19 @@
 	Vec*    m_g=NULL;
 	double* time=NULL;
+	double* t_g_serial=NULL;
+	double* m_g_serial=NULL;
 
 	/*flags: */
-	int     debug=0;
-	int     numberofdofspernode;
-	int     numberofnodes;
-	int     nsteps;
-	double  dt;
-	double  ndt;
+	int    debug=0;
+	int    numberofdofspernode;
+	int    numberofnodes;
+	int    nsteps;
+	double dt;
+	double ndt;
 
 	int    sub_analysis_type;
 	double melting_offset;
 	
-	Param*           param=NULL;
+	Param* param=NULL;
 
 	/*recover fem models: */
@@ -82,6 +84,10 @@
 
 		//initialize temperature and melting
-		fem_t->parameters->FindParam((void*)&t_g[0],"t_g");
-		fem_m->parameters->FindParam((void*)&m_g[0],"m_g");
+		fem_t->parameters->FindParam((void*)&t_g_serial,"t_g");
+		t_g[0]=SerialToVec(t_g_serial,numberofnodes);
+		xfree((void**)&t_g_serial);
+		fem_m->parameters->FindParam((void*)&m_g_serial,"m_g");
+		m_g[0]=SerialToVec(m_g_serial,numberofnodes);
+		xfree((void**)&m_g_serial);
 
 		//erase temperature and melting embedded in parameters
@@ -123,4 +129,3 @@
 		}
 	}
-
 }
Index: /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 712)
+++ /issm/trunk/src/c/parallel/thermal_core_nonlinear.cpp	(revision 713)
@@ -53,4 +53,5 @@
 	count=1;
 	converged=0;
+
 	for(;;){
 
