Index: /issm/trunk-jpl/src/c/analyses/masstransport_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/masstransport_core.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/analyses/masstransport_core.cpp	(revision 16215)
@@ -14,5 +14,5 @@
 	/*parameters: */
 	bool  save_results;
-	bool  issmbgradients,ispdd,isdelta18o,isFS,isfreesurface;
+	bool  issmbgradients,ispdd,isdelta18o,isFS,isfreesurface,dakota_analysis;
 	int   solution_type;
 	int  *requested_outputs = NULL;
@@ -29,7 +29,15 @@
 	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
 	femmodel->parameters->FindParam(&isfreesurface,MasstransportIsfreesurfaceEnum);
+	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&numoutputs,MasstransportNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
+
+	/*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
+	if(dakota_analysis && solution_type==MasstransportSolutionEnum){
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
+	}
 
 	if(issmbgradients){
Index: /issm/trunk-jpl/src/c/analyses/thermal_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/thermal_core.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/analyses/thermal_core.cpp	(revision 16215)
@@ -23,4 +23,10 @@
 
 	if(dakota_analysis && solution_type!=TransientSolutionEnum){
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxMeshEnum,VxMeshEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyMeshEnum,VyMeshEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzMeshEnum,VzMeshEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMeltingEnum,BasalforcingsMeltingRateEnum);
+		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBEnum);
 		femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
 		ResetConstraintsx(femmodel);
Index: /issm/trunk-jpl/src/c/analyses/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/transient_core.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/analyses/transient_core.cpp	(revision 16215)
@@ -59,11 +59,17 @@
 	/*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
 	if(dakota_analysis){
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
-		InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
+		if(isstressbalance){
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzEnum,VzEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuPressureEnum,PressureEnum);
+		}
+		if(ismasstransport | isgroundingline){
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuThicknessEnum,ThicknessEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum);
+			InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskIceLevelsetEnum,MaskIceLevelsetEnum);
+		}
+		if(isgroundingline) InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaskGroundediceLevelsetEnum,MaskGroundediceLevelsetEnum);
 		if(dim==2)InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBbarEnum);
 		if(isthermal && dim==3){
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16215)
@@ -2755,4 +2755,6 @@
 				name==QmuTemperatureEnum ||
 				name==QmuMeltingEnum ||
+				name==QmuMaskGroundediceLevelsetEnum ||
+				name==QmuMaskIceLevelsetEnum ||
 				name==GiaWEnum || 
 				name==GiadWdtEnum ||
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16215)
@@ -1982,4 +1982,6 @@
 				name==QmuTemperatureEnum ||
 				name==QmuMeltingEnum || 
+				name==QmuMaskGroundediceLevelsetEnum ||
+				name==QmuMaskIceLevelsetEnum ||
 				name==GiaWEnum || 
 				name==GiadWdtEnum
@@ -2500,15 +2502,15 @@
 				for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
+				if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(VyEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
+				if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(VzEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
 				this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
+				if(dakota_analysis)this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(PressureEnum)){
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Masstransport/UpdateElementsMasstransport.cpp	(revision 16215)
@@ -16,4 +16,5 @@
 	bool   ispdd;
 	bool   isdelta18o;
+	bool   isgroundingline;
 
 	/*Fetch data needed: */
@@ -23,4 +24,5 @@
 	iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
 	iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
+	iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
 
 	/*Finite element type*/
@@ -58,7 +60,6 @@
 		elements->InputDuplicate(ThicknessEnum,QmuThicknessEnum);
 		elements->InputDuplicate(SurfaceEnum,QmuSurfaceEnum);
-		elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
-		elements->InputDuplicate(VxEnum,QmuVxEnum);
-		elements->InputDuplicate(VyEnum,QmuVyEnum);
+		elements->InputDuplicate(MaskIceLevelsetEnum,QmuMaskIceLevelsetEnum);
+		if(isgroundingline) elements->InputDuplicate(MaskGroundediceLevelsetEnum,QmuMaskGroundediceLevelsetEnum);
 	}
 
@@ -66,18 +67,12 @@
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
-		iomodel->FetchDataToInput(elements,PressureEnum);
 		iomodel->FetchDataToInput(elements,TemperatureEnum);
 		iomodel->FetchDataToInput(elements,VzEnum);
-		if(dakota_analysis){
-			elements->InputDuplicate(PressureEnum,QmuPressureEnum);
-			elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
-			elements->InputDuplicate(VzEnum,QmuVzEnum);
-		}
 	}
 	if(issmbgradients){
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
+		iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
+		iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
+		iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
+		iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
 	}
 	if(ispdd){
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp	(revision 16215)
@@ -101,4 +101,6 @@
 	iomodel->FetchDataToInput(elements,LoadingforceYEnum);
 	iomodel->FetchDataToInput(elements,DamageDEnum);
+	iomodel->FetchDataToInput(elements,PressureEnum);
+	if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum);
 
 	if(iomodel->dim==3){
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 16215)
@@ -48,5 +48,4 @@
 	if(dakota_analysis){
 		elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
-		elements->InputDuplicate(PressureEnum,QmuPressureEnum);
 		elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum);
 	}
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16214)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16215)
@@ -143,4 +143,5 @@
 	InversionVzObsEnum,
 	MaskIceLevelsetEnum,
+	QmuMaskIceLevelsetEnum,
 	MaterialsBetaEnum,
 	MaterialsHeatcapacityEnum,
@@ -577,4 +578,5 @@
 	SubelementMigration2Enum,
 	MaskGroundediceLevelsetEnum,
+	QmuMaskGroundediceLevelsetEnum,
 	/*}}}*/
 	/*Solver{{{*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16215)
@@ -151,4 +151,5 @@
 		case InversionVzObsEnum : return "InversionVzObs";
 		case MaskIceLevelsetEnum : return "MaskIceLevelset";
+		case QmuMaskIceLevelsetEnum : return "QmuMaskIceLevelset";
 		case MaterialsBetaEnum : return "MaterialsBeta";
 		case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
@@ -561,4 +562,5 @@
 		case SubelementMigration2Enum : return "SubelementMigration2";
 		case MaskGroundediceLevelsetEnum : return "MaskGroundediceLevelset";
+		case QmuMaskGroundediceLevelsetEnum : return "QmuMaskGroundediceLevelset";
 		case FSSolverEnum : return "FSSolver";
 		case AdjointEnum : return "Adjoint";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16214)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16215)
@@ -154,4 +154,5 @@
 	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
 	      else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
+	      else if (strcmp(name,"QmuMaskIceLevelset")==0) return QmuMaskIceLevelsetEnum;
 	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
 	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
@@ -259,9 +260,9 @@
 	      else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
 	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
+	      if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
+	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
 	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
 	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
 	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
-	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+	      if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
+	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
 	      else if (strcmp(name,"IceFrontType")==0) return IceFrontTypeEnum;
 	      else if (strcmp(name,"SSA2dIceFront")==0) return SSA2dIceFrontEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
 	      else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
-	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
+	      if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	      else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
 	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
 	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
@@ -573,4 +574,5 @@
 	      else if (strcmp(name,"SubelementMigration2")==0) return SubelementMigration2Enum;
 	      else if (strcmp(name,"MaskGroundediceLevelset")==0) return MaskGroundediceLevelsetEnum;
+	      else if (strcmp(name,"QmuMaskGroundediceLevelset")==0) return QmuMaskGroundediceLevelsetEnum;
 	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
 	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
