Index: /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp
===================================================================
--- /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 612)
+++ /issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp	(revision 613)
@@ -56,7 +56,9 @@
 	int     numberofnodes;
 	int     analysis_type;
+	int     sub_analysis_type;
 	int     count;
 
 	parameters->FindParam((void*)&analysis_type,"analysis_type");
+	parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");
 	count=parameters->Size();
 		
@@ -84,5 +86,4 @@
 				}
 			}
-
 			if(vy){
 				for(i=0;i<numberofnodes;i++){
@@ -96,5 +97,4 @@
 			}
 
-
 			/*Now, create new parameters: */
 			count++;
@@ -113,7 +113,5 @@
 			parameters->DeleteObject((Object*)param);
 		}
-
-	}
-
+	}
 
 	if(analysis_type==ControlAnalysisEnum()){
@@ -154,35 +152,18 @@
 		param=(Param*)parameters->FindParamObject("control_parameter");
 		parameters->DeleteObject((Object*)param);
-
 	}
 
 	if(analysis_type==ThermalAnalysisEnum()){
 
-		parameters->FindParam((void*)&temperature,"temperature"); 
-		parameters->FindParam((void*)&melting,"melting"); 
 		parameters->FindParam((void*)&pressure,"pressure");
 
 		/*Now, from temperature and melting, build t_g and m_g, correctly partitioned: */ 
-		t_g=(double*)xcalloc(numberofnodes,sizeof(double)); 
-		m_g=(double*)xcalloc(numberofnodes,sizeof(double)); 
 		p_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]; 
 			p_g[(int)(partition[i])]= pressure[i];  
 		} 
 
 		/*Now, create new parameter: */ 
-		count++; 
-		param= new Param(count,"t_g",DOUBLEVEC); 
-		param->SetDoubleVec(t_g,numberofnodes); 
-		parameters->AddObject(param); 
-
-		count++; 
-		param= new Param(count,"m_g",DOUBLEVEC); 
-		param->SetDoubleVec(m_g,numberofnodes); 
-		parameters->AddObject(param); 
-
 		count++;
 		param= new Param(count,"p_g",DOUBLEVEC);
@@ -191,12 +172,39 @@
 
 		/*erase old parameter: */ 
-		param=(Param*)parameters->FindParamObject("temperature"); 
-		parameters->DeleteObject((Object*)param); 
-
-		param=(Param*)parameters->FindParamObject("melting"); 
-		parameters->DeleteObject((Object*)param); 
-
 		param=(Param*)parameters->FindParamObject("pressure");
 		parameters->DeleteObject((Object*)param);
+
+		if (sub_analysis_type==TransientAnalysisEnum()){
+
+			parameters->FindParam((void*)&temperature,"temperature"); 
+			parameters->FindParam((void*)&melting,"melting"); 
+
+			/*Now, from temperature and melting, build t_g and m_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]; 
+			} 
+
+			/*Now, create new parameter: */ 
+			count++; 
+			param= new Param(count,"t_g",DOUBLEVEC); 
+			param->SetDoubleVec(t_g,numberofnodes); 
+			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); 
+		}
 	}
 
@@ -260,4 +268,3 @@
 	xfree((void**)&h_g); 
 	xfree((void**)&m_g); 
-
 }
