Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 22851)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 22852)
@@ -21,5 +21,5 @@
 	
 	int    smb_model;
-	bool   isdelta18o,ismungsm,isd18opd,issetpddfac;
+	bool   isdelta18o,ismungsm,isd18opd,issetpddfac,isprecipscaled,istemperaturescaled;
 	
 	/*Update elements: */
@@ -83,6 +83,5 @@
 				iomodel->FetchDataToInput(elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
 				iomodel->FetchDataToInput(elements,"md.smb.precipitations_lgm",SmbPrecipitationsLgmEnum);
-			}
-			else{
+			}else{
 				iomodel->FetchDataToInput(elements,"md.smb.precipitation",SmbPrecipitationEnum);
 				iomodel->FetchDataToInput(elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
@@ -90,4 +89,6 @@
 			break;
 		case SMBd18opddEnum:
+			iomodel->FindConstant(&istemperaturescaled,"md.smb.istemperaturescaled");
+			iomodel->FindConstant(&isprecipscaled,"md.smb.isprecipscaled");
 			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
 			iomodel->FindConstant(&isd18opd,"md.smb.isd18opd");
@@ -99,4 +100,10 @@
 				iomodel->FetchDataToInput(elements,"md.smb.temperatures_presentday",SmbTemperaturesPresentdayEnum);
 				iomodel->FetchDataToInput(elements,"md.smb.precipitations_presentday",SmbPrecipitationsPresentdayEnum);
+				if(!istemperaturescaled){
+					iomodel->FetchDataToInput(elements,"md.smb.temperatures_reconstructed",SmbTemperaturesReconstructedEnum);
+				}
+				if(!isprecipscaled){
+					iomodel->FetchDataToInput(elements,"md.smb.precipitations_reconstructed",SmbPrecipitationsReconstructedEnum);
+				}
 			}
 			if(issetpddfac){
@@ -220,4 +227,5 @@
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.f",SmbFEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.isprecipscaled",SmbIsprecipscaledEnum));
 				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
 				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22851)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22852)
@@ -535,4 +535,6 @@
 	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
 	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesReconstructed=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsReconstructed=xNew<IssmDouble>(12*numvertices);
 	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
 	IssmDouble Delta18oTime;
@@ -540,4 +542,5 @@
 	IssmDouble time,yts,time_yr,month,time_clim;
 	bool isTemperatureScaled=true;
+	bool isPrecipScaled=true;
 	this->parameters->FindParam(&time,TimeEnum);
 	this->parameters->FindParam(&yts,ConstantsYtsEnum);
@@ -549,7 +552,18 @@
 	dpermil=this->matpar->GetMaterialParameter(SmbDpermilEnum);
 
+	this->parameters->FindParam(&isTemperatureScaled,SmbIstemperaturescaledEnum);
+	this->parameters->FindParam(&isPrecipScaled,SmbIsprecipscaledEnum);
+
 	/*Recover present day temperature and precipitation*/
 	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
 	Input*     input2=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input2);
+	Input*     input3=NULL;
+	if(!isTemperatureScaled){
+		input3=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);           _assert_(input3);
+	}
+	Input*     input4=NULL;
+	if(!isPrecipScaled){
+		input4=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum);         _assert_(input4);
+	}
 	int offset;
 
@@ -566,6 +580,14 @@
 			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,time_clim+month/12.*yts);
 			input2->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,time_clim+month/12.*yts);
-
 			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+
+			if(!isTemperatureScaled){
+				input3->GetInputValue(&TemperaturesReconstructed[iv*12+month],gauss,time_clim+month/12.*yts);
+			}
+			if(!isPrecipScaled){
+				input4->GetInputValue(&PrecipitationsReconstructed[iv*12+month],gauss,time_clim+month/12.*yts);
+				PrecipitationsReconstructed[iv*12+month]=PrecipitationsReconstructed[iv*12+month]*yts;
+			}
+
 		}
 	}
@@ -573,10 +595,10 @@
 	/*Recover interpolation parameters at time t*/
 	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
-	this->parameters->FindParam(&isTemperatureScaled,SmbIstemperaturescaledEnum);
 
 	/*Compute the temperature and precipitation*/
 	for(int iv=0;iv<numvertices;iv++){
-		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,f,
-					&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,isPrecipScaled,
+					f,&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
+					&PrecipitationsReconstructed[iv*12], &TemperaturesReconstructed[iv*12],
 					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
 	}
@@ -623,4 +645,6 @@
 	xDelete<IssmDouble>(TemperaturesPresentday);
 	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(TemperaturesReconstructed);
+	xDelete<IssmDouble>(PrecipitationsReconstructed);
 	xDelete<IssmDouble>(tmp);
 	
Index: /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 22851)
+++ /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 22852)
@@ -8,6 +8,7 @@
 
 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
-			             IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
-					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
+			bool isPrecipScaled, IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+			IssmDouble* PrecipitationReconstructed,IssmDouble* TemperatureReconstructed, IssmDouble* monthlytemperaturesout, 
+			IssmDouble* monthlyprecout){
   
   IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
@@ -23,8 +24,12 @@
     
 	 if (isTemperatureScaled)monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
-	 else monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth];
+	 else{
+		 monthlytemperaturestmp[imonth] = TemperatureReconstructed[imonth];
+		 deltaTemp=TemperatureReconstructed[imonth]-TemperaturePresentday[imonth];
+	 }
 
-    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
-    
+	 if (isPrecipScaled)monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
+	 else monthlyprectmp[imonth] = PrecipitationReconstructed[imonth];
+	  
     /*Assign output pointer*/
     *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
Index: /issm/trunk-jpl/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 22851)
+++ /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 22852)
@@ -34,6 +34,7 @@
 					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
-			             IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
-					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);  
+			bool isPrecipScaled, IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+			IssmDouble* PrecipitationReconstructed,IssmDouble* TemperatureReconstructed, IssmDouble* monthlytemperaturesout,
+			IssmDouble* monthlyprecout);
 IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
 IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness);
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22851)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22852)
@@ -279,4 +279,5 @@
 	SmbIsshortwaveEnum,
 	SmbIstemperaturescaledEnum,
+	SmbIsprecipscaledEnum,
 	SmbIsthermalEnum,
 	SmbIsturbulentfluxEnum,
@@ -533,4 +534,5 @@
 	SmbPrecipitationsLgmEnum,
 	SmbPrecipitationsPresentdayEnum,
+	SmbPrecipitationsReconstructedEnum,
 	SmbReEnum,
 	SmbRefreezeEnum,
@@ -544,4 +546,5 @@
 	SmbTemperaturesLgmEnum,
 	SmbTemperaturesPresentdayEnum,
+	SmbTemperaturesReconstructedEnum,
 	SmbTEnum,
 	SmbTeValueEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22851)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22852)
@@ -287,4 +287,5 @@
 		case SmbIsshortwaveEnum : return "SmbIsshortwave";
 		case SmbIstemperaturescaledEnum : return "SmbIstemperaturescaled";
+		case SmbIsprecipscaledEnum : return "SmbIsprecipscaled";
 		case SmbIsthermalEnum : return "SmbIsthermal";
 		case SmbIsturbulentfluxEnum : return "SmbIsturbulentflux";
@@ -539,4 +540,5 @@
 		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
 		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
+		case SmbPrecipitationsReconstructedEnum : return "SmbPrecipitationsReconstructed";
 		case SmbReEnum : return "SmbRe";
 		case SmbRefreezeEnum : return "SmbRefreeze";
@@ -550,4 +552,5 @@
 		case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm";
 		case SmbTemperaturesPresentdayEnum : return "SmbTemperaturesPresentday";
+		case SmbTemperaturesReconstructedEnum : return "SmbTemperaturesReconstructed";
 		case SmbTEnum : return "SmbT";
 		case SmbTeValueEnum : return "SmbTeValue";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22851)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22852)
@@ -293,4 +293,5 @@
 	      else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum;
 	      else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
+	      else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum;
 	      else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
 	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
 	      else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum;
-	      else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"BasalforcingsPicoSubShelfOceanOverturning")==0) return BasalforcingsPicoSubShelfOceanOverturningEnum;
+	      if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum;
+	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanOverturning")==0) return BasalforcingsPicoSubShelfOceanOverturningEnum;
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum;
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanTemp")==0) return BasalforcingsPicoSubShelfOceanTempEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
 	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
-	      else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
+	      if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
+	      else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
 	      else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
 	      else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum;
@@ -551,4 +552,5 @@
 	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
 	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
+	      else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum;
 	      else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
 	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
@@ -562,4 +564,5 @@
 	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
 	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum;
 	      else if (strcmp(name,"SmbT")==0) return SmbTEnum;
 	      else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum;
@@ -626,11 +629,11 @@
 	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
 	      else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
-	      else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
-	      else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
-	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
+	      if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
+	      else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
+	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	      else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
 	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
 	      else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
@@ -749,11 +752,11 @@
 	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
-	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
-	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
-	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+	      if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
+	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
+	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
 	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
 	      else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
@@ -872,11 +875,11 @@
 	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
 	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
-	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
-	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
-	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	      if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
 	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
@@ -995,11 +998,11 @@
 	      else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum;
 	      else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
-	      else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
-	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
-	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
+	      if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
+	      else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
+	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
 	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
 	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
@@ -1118,11 +1121,11 @@
 	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
 	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
-	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
-	      else if (strcmp(name,"Tria")==0) return TriaEnum;
-	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
+	      if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      else if (strcmp(name,"Tria")==0) return TriaEnum;
+	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
+	      else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
 	      else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
 	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 22851)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 22852)
@@ -18,9 +18,12 @@
 		isd18opd                  = 0;
 		issetpddfac               = 0;
-		istemperaturescaled       = 0;
+		istemperaturescaled       = 1;
+		isprecipscaled            = 1;
 		delta18o                  = NaN;
 		delta18o_surface          = NaN;
 		temperatures_presentday   = NaN;
 		precipitations_presentday = NaN;
+		temperatures_reconstructed = NaN;
+		precipitations_reconstructed = NaN;
 		pddfac_snow               = NaN;
 		pddfac_ice                = NaN;
@@ -39,4 +42,6 @@
 			if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
 			if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			if(self.istemperaturescaled==0),self.temperatures_reconstructed=project3d(md,'vector',self.temperatures_reconstructed,'type','node');end
+			if(self.isprecipscaled),self.precipitations_reconstructed=project3d(md,'vector',self.precipitations_reconstructed,'type','node');end
 			if(self.issetpddfac), self.pddfac_snow=project3d(md,'vector',self.pddfac_snow,'type','node');end
 			if(self.issetpddfac), self.pddfac_ice=project3d(md,'vector',self.pddfac_ice,'type','node');end
@@ -67,4 +72,5 @@
 		  self.isd18opd   = 1;
 		  self.istemperaturescaled = 1;
+		  self.isprecipscaled = 1;
 		  self.desfac     = 0.5;
 		  self.rlaps      = 6.5;
@@ -93,4 +99,14 @@
 					md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',1);
 				   md = checkfield(md,'fieldname','smb.f','>=',0,'numel',1);
+					if(self.istemperaturescaled==0)
+						lent=size(self.temperatures_reconstructed,2);
+						multt=ceil(lent/12)*12;
+						md = checkfield(md,'fieldname','smb.temperatures_reconstructed','size',[md.mesh.numberofvertices+1 multt],'NaN',1,'Inf',1,'timeseries',1);
+					end
+					if(self.isprecipscaled==0)
+						lenp=size(self.temperatures_reconstructed,2);
+						multp=ceil(lent/12)*12;
+						md = checkfield(md,'fieldname','smb.precipitations_reconstructed','size',[md.mesh.numberofvertices+1 multt],'NaN',1,'Inf',1,'timeseries',1);
+					end
 				end
 				if(self.issetpddfac==1)
@@ -114,5 +130,12 @@
 				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated');
 				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated');
-				fielddisplay(self,'istemperaturescaled','if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 0)');
+				fielddisplay(self,'istemperaturescaled','if delta18o parametrisation from present day temperature and precipitation is activated, is temperature scaled to delta18o value? (0 or 1, default is 1)');
+				fielddisplay(self,'isprecipscaled','if delta18o parametrisation from present day temperature and precipitation is activated, is precip scaled to delta18o value? (0 or 1, default is 1)');
+				if(self.istemperaturescaled==0)
+					fielddisplay(self,'temperatures_reconstructed','monthly historical surface temperatures [K], required if delta18o/mungsm/d18opd is activated and istemperaturescaled is not activated');
+				end
+				if(self.isprecipscaled==0)
+					fielddisplay(self,'precipitations_reconstructed','monthly historical precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated and isprecipscaled is not activated');
+				end
 				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated');  
 				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                            
@@ -149,7 +172,14 @@
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','istemperaturescaled','format','Boolean');
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','isprecipscaled','format','Boolean');
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double');
 			   WriteData(fid,prefix,'object',self,'class','smb','fieldname','f','format','Double');
+				if self.istemperaturescaled==0
+					WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_reconstructed','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				end
+				if self.isprecipscaled==0
+					WriteData(fid,prefix,'object',self,'class','smb','fieldname','precipitations_reconstructed','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				end
 			end
 			if self.issetpddfac==1
