Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 22494)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 22495)
@@ -225,4 +225,5 @@
 			iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
 			if(isd18opd){
+				parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum));
 				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 22494)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 22495)
@@ -539,4 +539,5 @@
 	IssmDouble dpermil,f;
 	IssmDouble time,yts,time_yr,month,time_clim;
+	bool isTemperatureScaled=true;
 	this->parameters->FindParam(&time,TimeEnum);
 	this->parameters->FindParam(&yts,ConstantsYtsEnum);
@@ -572,8 +573,9 @@
 	/*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,f,
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,f,
 					&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
 					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
Index: /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 22494)
+++ /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 22495)
@@ -7,6 +7,6 @@
 #include "../Numerics/numerics.h"
 
-void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
-					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
+			             IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
 					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
   
@@ -22,5 +22,7 @@
   for (int imonth = 0; imonth<12; imonth++){
     
-    monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
+	 if (isTemperatureScaled)monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
+	 else monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth];
+
     monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
     
Index: /issm/trunk-jpl/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 22494)
+++ /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 22495)
@@ -33,6 +33,6 @@
 					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
 					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
-void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
-					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
+			             IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
 					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);  
 IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22494)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22495)
@@ -494,4 +494,5 @@
 	SmbIsmungsmEnum,
 	SmbIsd18opdEnum,
+	SmbIstemperaturescaledEnum,
 	SmbPrecipitationsPresentdayEnum,
 	SmbPrecipitationsLgmEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22494)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22495)
@@ -495,4 +495,5 @@
 		case SmbIsmungsmEnum : return "SmbIsmungsm";
 		case SmbIsd18opdEnum : return "SmbIsd18opd";
+		case SmbIstemperaturescaledEnum : return "SmbIstemperaturescaled";
 		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
 		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22494)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22495)
@@ -504,10 +504,11 @@
 	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
 	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+	      else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
 	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
-	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
+	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
 	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
 	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
 	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
-	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
+	      if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
+	      else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
 	      else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
 	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
@@ -751,9 +752,9 @@
 	      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 stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
+	      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;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum;
 	      else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
-	      else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"LoveG0")==0) return LoveG0Enum;
+	      if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
+	      else if (strcmp(name,"LoveG0")==0) return LoveG0Enum;
 	      else if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
 	      else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
 	      else if (strcmp(name,"Penta")==0) return PentaEnum;
-	      else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"Vertex")==0) return VertexEnum;
+	      if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
+	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
 	      else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum;
 	      else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum;
@@ -1120,9 +1121,9 @@
 	      else if (strcmp(name,"P1P1")==0) return P1P1Enum;
 	      else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
-	      else if (strcmp(name,"MINI")==0) return MINIEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
+	      if (strcmp(name,"MINI")==0) return MINIEnum;
+	      else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
 	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
 	      else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 22494)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 22495)
@@ -18,4 +18,5 @@
 		isd18opd                  = 0;
 		issetpddfac               = 0;
+		istemperaturescaled       = 0;
 		delta18o                  = NaN;
 		delta18o_surface          = NaN;
@@ -65,4 +66,5 @@
 		  self.ismungsm   = 0;
 		  self.isd18opd   = 1;
+		  self.istemperaturescaled = 1;
 		  self.desfac     = 0.5;
 		  self.rlaps      = 6.5;
@@ -112,4 +114,5 @@
 				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,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated');  
 				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                            
@@ -145,4 +148,5 @@
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
 				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','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double');
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 22494)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 22495)
@@ -25,5 +25,6 @@
 		self.ismungsm                  = 0
 		self.isd18opd                  = 0
-		self.setpddfac                 = 0
+		self.issetpddfac               = 0
+		self.istemperaturescaled       = 0
 		self.delta18o                  = float('NaN')
 		self.delta18o_surface          = float('NaN')
@@ -49,6 +50,8 @@
 			string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
 			string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+			string="%s\n%s"%(string,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)'))
 			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
 			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'f','precip/temperature scaling factor, required if d18opd is activated'))
 
 		if self.issetpddfac==1:
@@ -90,4 +93,5 @@
 		self.ismungsm   = 0
 		self.isd18opd   = 1
+		self.istemperaturescaled = 1
 		self.desfac     = 0.5
 		self.rlaps      = 6.5 
@@ -146,4 +150,5 @@
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
 			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','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double')
