Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 21708) +++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 21709) @@ -526,10 +526,11 @@ IssmDouble* PrecipitationsPresentday=xNew(12*numvertices); IssmDouble* tmp=xNew(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; /*Get some pdd parameters*/ @@ -555,7 +556,7 @@ /*Compute the temperature and precipitation*/ for(int iv=0;ivDeleteData(temp,"md.smb.delta18o"); parameters->AddObject(iomodel->CopyConstantObject("md.smb.dpermil",SmbDpermilEnum)); + parameters->AddObject(iomodel->CopyConstantObject("md.smb.f",SmbFEnum)); } break; case SMBgradientsEnum: Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 21708) +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 21709) @@ -457,6 +457,7 @@ SmbSealevEnum, SMBd18opddEnum, SmbDpermilEnum, + SmbFEnum, SMBgradientsEnum, SmbMonthlytemperaturesEnum, SmbHrefEnum, Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 21708) +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 21709) @@ -458,6 +458,7 @@ case SmbSealevEnum : return "SmbSealev"; case SMBd18opddEnum : return "SMBd18opdd"; case SmbDpermilEnum : return "SmbDpermil"; + case SmbFEnum : return "SmbF"; case SMBgradientsEnum : return "SMBgradients"; case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures"; case SmbHrefEnum : return "SmbHref"; Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 21708) +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 21709) @@ -467,6 +467,7 @@ else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 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; else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; @@ -504,11 +505,11 @@ else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 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; else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; @@ -627,11 +628,11 @@ else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum; 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; else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum; @@ -750,11 +751,11 @@ else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 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; else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; @@ -873,11 +874,11 @@ else if (strcmp(name,"StringParam")==0) return StringParamEnum; 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; else if (strcmp(name,"Penta")==0) return PentaEnum; @@ -996,11 +997,11 @@ else 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; 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; else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum; Index: ../trunk-jpl/src/c/shared/Elements/elements.h =================================================================== --- ../trunk-jpl/src/c/shared/Elements/elements.h (revision 21708) +++ ../trunk-jpl/src/c/shared/Elements/elements.h (revision 21709) @@ -32,7 +32,7 @@ IssmDouble* PrecipitationsLgm,IssmDouble* PrecipitationsPresentday, 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); IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.); Index: ../trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp =================================================================== --- ../trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp (revision 21708) +++ ../trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp (revision 21709) @@ -6,7 +6,7 @@ #include "./elements.h" #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){ @@ -22,7 +22,7 @@ for (int imonth = 0; imonth<12; imonth++){ 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*/ *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];