Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 21708)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 21709)
@@ -219,4 +219,5 @@
 				
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.dpermil",SmbDpermilEnum));
+			   parameters->AddObject(iomodel->CopyConstantObject("md.smb.f",SmbFEnum));
 			}
 			break;
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21708)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 21709)
@@ -527,8 +527,9 @@
 	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
 	IssmDouble Delta18oTime;
-	IssmDouble dpermil;
+	IssmDouble dpermil,f;
 	IssmDouble time,yts,time_yr,month;
 	this->parameters->FindParam(&time,TimeEnum);
 	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&f,SmbFEnum);
 	time_yr=floor(time/yts)*yts;
 
@@ -556,5 +557,5 @@
 	/*Compute the temperature and precipitation*/
 	for(int iv=0;iv<numvertices;iv++){
-		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,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 21708)
+++ /issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 21709)
@@ -7,5 +7,5 @@
 #include "../Numerics/numerics.h"
 
-void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
 					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
 					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
@@ -23,5 +23,5 @@
     
     monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
-    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((0.169/dpermil)*deltaTemp);
+    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
     
     /*Assign output pointer*/
Index: /issm/trunk-jpl/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 21708)
+++ /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 21709)
@@ -33,5 +33,5 @@
 					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
 					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
-void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
 					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
 					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);  
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21708)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21709)
@@ -458,4 +458,5 @@
 	SMBd18opddEnum,
 	SmbDpermilEnum,
+	SmbFEnum,
 	SMBgradientsEnum,
 	SmbMonthlytemperaturesEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21708)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21709)
@@ -459,4 +459,5 @@
 		case SMBd18opddEnum : return "SMBd18opdd";
 		case SmbDpermilEnum : return "SmbDpermil";
+		case SmbFEnum : return "SmbF";
 		case SMBgradientsEnum : return "SMBgradients";
 		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21708)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21709)
@@ -468,4 +468,5 @@
 	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
 	      else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
+	      else if (strcmp(name,"SmbF")==0) return SmbFEnum;
 	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
 	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
 	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+	      if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
 	      else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum;
-	      else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;
+	      if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
+	      else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;
 	      else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum;
 	      else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
-	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"Separate")==0) return SeparateEnum;
+	      if (strcmp(name,"Scaled")==0) return ScaledEnum;
+	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
 	      else if (strcmp(name,"Dense")==0) return DenseEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"Seg")==0) return SegEnum;
 	      else if (strcmp(name,"SegInput")==0) return SegInputEnum;
-	      else if (strcmp(name,"Tria")==0) return TriaEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
+	      if (strcmp(name,"Tria")==0) return TriaEnum;
+	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
 	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum;
 	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
-	      else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
+	      if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
+	      else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
 	      else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum;
 	      else if (strcmp(name,"CrouzeixRaviart")==0) return CrouzeixRaviartEnum;
