Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9125)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9126)
@@ -546,5 +546,6 @@
 	NumRequestedOutputsEnum,
 	BasalFrictionEnum,
-	ViscousHeatingEnum
+	ViscousHeatingEnum,
+	QmuTemperatureEnum
 };
 
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9125)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9126)
@@ -488,4 +488,5 @@
 		case BasalFrictionEnum : return "BasalFriction";
 		case ViscousHeatingEnum : return "ViscousHeating";
+		case QmuTemperatureEnum : return "QmuTemperature";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9125)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9126)
@@ -53,4 +53,6 @@
 	IoModelToInputsx(elements,iomodel,iomodel_handle,VzEnum);
 	
+	if(iomodel->qmu_analysis)elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
+
 	/*Free data: */
 	xfree((void**)&iomodel->elements);
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9125)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9126)
@@ -486,4 +486,5 @@
 	else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
 	else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/solutions/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 9125)
+++ /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 9126)
@@ -24,4 +24,5 @@
 	bool control_analysis;
 	int solution_type;
+	bool   qmu_analysis         = false;
 
 	//first recover parameters common to all solutions
@@ -30,4 +31,5 @@
 	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&qmu_analysis,QmuAnalysisEnum);
 
 	/*Compute number of time steps: */
@@ -37,4 +39,10 @@
 	}
 	else nsteps=(int)(ndt/dt);
+
+	/*for qmu analysis, reinitialize temperature so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
+	if(qmu_analysis){
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum);
+	}
+
 
 	/*Loop through time: */
