Changeset 22495
- Timestamp:
- 03/02/18 17:57:51 (7 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r22482 r22495 225 225 iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac"); 226 226 if(isd18opd){ 227 parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum)); 227 228 iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2); 228 229 parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M)); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r22482 r22495 539 539 IssmDouble dpermil,f; 540 540 IssmDouble time,yts,time_yr,month,time_clim; 541 bool isTemperatureScaled=true; 541 542 this->parameters->FindParam(&time,TimeEnum); 542 543 this->parameters->FindParam(&yts,ConstantsYtsEnum); … … 572 573 /*Recover interpolation parameters at time t*/ 573 574 this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time); 575 this->parameters->FindParam(&isTemperatureScaled,SmbIstemperaturescaledEnum); 574 576 575 577 /*Compute the temperature and precipitation*/ 576 578 for(int iv=0;iv<numvertices;iv++){ 577 ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil, f,579 ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,f, 578 580 &PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12], 579 581 &monthlytemperatures[iv*12], &monthlyprec[iv*12]); -
issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
r21709 r22495 7 7 #include "../Numerics/numerics.h" 8 8 9 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil, IssmDouble f,10 9 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled, 10 IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday, 11 11 IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){ 12 12 … … 22 22 for (int imonth = 0; imonth<12; imonth++){ 23 23 24 monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp; 24 if (isTemperatureScaled)monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp; 25 else monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth]; 26 25 27 monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp); 26 28 -
issm/trunk-jpl/src/c/shared/Elements/elements.h
r22448 r22495 33 33 IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 34 34 IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout); 35 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil, IssmDouble f,36 35 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled, 36 IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday, 37 37 IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout); 38 38 IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r22482 r22495 494 494 SmbIsmungsmEnum, 495 495 SmbIsd18opdEnum, 496 SmbIstemperaturescaledEnum, 496 497 SmbPrecipitationsPresentdayEnum, 497 498 SmbPrecipitationsLgmEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r22482 r22495 495 495 case SmbIsmungsmEnum : return "SmbIsmungsm"; 496 496 case SmbIsd18opdEnum : return "SmbIsd18opd"; 497 case SmbIstemperaturescaledEnum : return "SmbIstemperaturescaled"; 497 498 case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday"; 498 499 case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r22482 r22495 504 504 else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum; 505 505 else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum; 506 else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum; 506 507 else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum; 507 else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 511 if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum; 512 else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum; 512 513 else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum; 513 514 else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum; … … 628 629 else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum; 629 630 else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum; 630 else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 634 if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum; 635 else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 635 636 else if (strcmp(name,"LambdaS")==0) return LambdaSEnum; 636 637 else if (strcmp(name,"StrainRate")==0) return StrainRateEnum; … … 751 752 else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum; 752 753 else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum; 753 else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum; 757 if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum; 758 else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum; 758 759 else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum; 759 760 else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum; … … 874 875 else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum; 875 876 else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 876 else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"LoveG0")==0) return LoveG0Enum; 880 if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; 881 else if (strcmp(name,"LoveG0")==0) return LoveG0Enum; 881 882 else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; 882 883 else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum; … … 997 998 else if (strcmp(name,"TetraInput")==0) return TetraInputEnum; 998 999 else if (strcmp(name,"Penta")==0) return PentaEnum; 999 else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Vertex")==0) return VertexEnum; 1003 if (strcmp(name,"PentaInput")==0) return PentaInputEnum; 1004 else if (strcmp(name,"Vertex")==0) return VertexEnum; 1004 1005 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 1005 1006 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; … … 1120 1121 else if (strcmp(name,"P1P1")==0) return P1P1Enum; 1121 1122 else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum; 1122 else if (strcmp(name,"MINI")==0) return MINIEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum; 1126 if (strcmp(name,"MINI")==0) return MINIEnum; 1127 else if (strcmp(name,"MINIcondensed")==0) return MINIcondensedEnum; 1127 1128 else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; 1128 1129 else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum; -
issm/trunk-jpl/src/m/classes/SMBd18opdd.m
r22448 r22495 18 18 isd18opd = 0; 19 19 issetpddfac = 0; 20 istemperaturescaled = 0; 20 21 delta18o = NaN; 21 22 delta18o_surface = NaN; … … 65 66 self.ismungsm = 0; 66 67 self.isd18opd = 1; 68 self.istemperaturescaled = 1; 67 69 self.desfac = 0.5; 68 70 self.rlaps = 6.5; … … 112 114 fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated'); 113 115 fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated'); 116 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)'); 114 117 fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated'); 115 118 fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'); … … 145 148 WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 146 149 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); 150 WriteData(fid,prefix,'object',self,'class','smb','fieldname','istemperaturescaled','format','Boolean'); 147 151 WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts); 148 152 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double'); -
issm/trunk-jpl/src/m/classes/SMBd18opdd.py
r22448 r22495 25 25 self.ismungsm = 0 26 26 self.isd18opd = 0 27 self.setpddfac = 0 27 self.issetpddfac = 0 28 self.istemperaturescaled = 0 28 29 self.delta18o = float('NaN') 29 30 self.delta18o_surface = float('NaN') … … 49 50 string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated')) 50 51 string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated')) 52 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)')) 51 53 string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated')) 52 54 string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated')) 55 string="%s\n%s"%(string,fielddisplay(self,'f','precip/temperature scaling factor, required if d18opd is activated')) 53 56 54 57 if self.issetpddfac==1: … … 90 93 self.ismungsm = 0 91 94 self.isd18opd = 1 95 self.istemperaturescaled = 1 92 96 self.desfac = 0.5 93 97 self.rlaps = 6.5 … … 146 150 WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 147 151 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) 152 WriteData(fid,prefix,'object',self,'class','smb','fieldname','istemperaturescaled','format','Boolean') 148 153 WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts) 149 154 WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double')
Note:
See TracChangeset
for help on using the changeset viewer.