Index: issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 12758)
+++ issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 12759)
@@ -21,4 +21,7 @@
 	bool   dakota_analysis;
 	bool   issmbgradients;
+	bool   ispdd;
+	bool   isdelta18o;
+	IssmDouble *size, Delta18oTimeSerie,Delta18oSurfaceTimeSerie ;
 
 	/*Fetch data needed: */
@@ -27,6 +30,8 @@
 	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
+	iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
+	iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
+	iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
 	iomodel->FetchData(1,MeshElementsEnum);
-	iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
 
 	/*Update elements: */
@@ -76,7 +81,22 @@
 	        iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
 	}
-	//else{
-	//	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
-	//}
+	if(ispdd){
+		iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
+		if(isdelta18o){
+			iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oEnum);
+			iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oSurfaceEnum);
+
+			iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oTemperaturesLgmEnum);
+			iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oTemperaturesPresentdayEnum);
+			iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
+		}
+		else{
+			iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
+			iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
+		}
+	}
+	if(~ispdd & ~issmbgradients){
+		iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	}
 
 	/*Free data: */
Index: issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
===================================================================
--- issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 12758)
+++ issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 12759)
@@ -15,34 +15,3 @@
 
 void	UpdateElementsTransient(Elements* elements, Parameters* parameters,IoModel* iomodel,int analysis_counter,int analysis_type){
-
-	bool   ispdd;
-	bool   isdelta18o;
-	IssmDouble *size, Delta18oTimeSerie,Delta18oSurfaceTimeSerie ;
-
-	/*Fetch data needed: */
-	iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
-	iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-	iomodel->FetchData(1,MeshElementsEnum);
-
-	if(ispdd){
-	        iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
-	        if(isdelta18o){
-	                  iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oEnum);
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oSurfaceEnum);
- 
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oTemperaturesLgmEnum);
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsDelta18oTemperaturesPresentdayEnum);
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
-	        }
-	        else{
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
-	        	  iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
-	        }
-	}
-	else{
-		iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
-	}
-
-	/*Free data: */
-	iomodel->DeleteData(1,MeshElementsEnum);
 }
Index: issm/trunk-jpl/src/c/solutions/prognostic_core.cpp
===================================================================
--- issm/trunk-jpl/src/c/solutions/prognostic_core.cpp	(revision 12758)
+++ issm/trunk-jpl/src/c/solutions/prognostic_core.cpp	(revision 12759)
@@ -16,5 +16,5 @@
 	/*parameters: */
 	bool save_results;
-	bool issmbgradients;
+	bool issmbgradients,ispdd,isdelta18o;
 
 	/*activate formulation: */
@@ -24,5 +24,6 @@
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&issmbgradients,SurfaceforcingsIssmbgradientsEnum);
-
+	femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum);
+	femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
 
 	if(issmbgradients){
@@ -30,4 +31,13 @@
 	  SmbGradientsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
 	}
+	if(ispdd){
+		if(isdelta18o){
+			if(VerboseSolution()) _pprintLine_("   call Delta18oParametrization module");
+			Delta18oParameterizationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+		} 
+		if(VerboseSolution()) _pprintLine_("   call positive degree day module");
+		PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+	}
+
 
 	if(VerboseSolution()) _pprintLine_("   call computational core");
Index: issm/trunk-jpl/src/c/solutions/transient_core.cpp
===================================================================
--- issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 12758)
+++ issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 12759)
@@ -24,5 +24,5 @@
 	/*parameters: */
 	IssmDouble starttime,finaltime,dt,yts;
-	bool   isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy,ispdd,isdelta18o;
+	bool   isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy;
 	bool   save_results,dakota_analysis;
 	bool   time_adapt=false;
@@ -53,6 +53,4 @@
 	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
-	femmodel->parameters->FindParam(&ispdd,SurfaceforcingsIspddEnum);
-	femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
 
 	/*initialize: */
@@ -109,13 +107,4 @@
 		}
 		
-		if(ispdd){
-		        if(isdelta18o){
-		                if(VerboseSolution()) _pprintLine_("   call Delta18oParametrization module");
-		                Delta18oParameterizationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-			} 
-		        if(VerboseSolution()) _pprintLine_("   call positive degree day module");
-		        PositiveDegreeDayx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
-		}
-
 		if(isdiagnostic){
 			if(VerboseSolution()) _pprintLine_("   computing new velocity");
