Changeset 22495


Ignore:
Timestamp:
03/02/18 17:57:51 (7 years ago)
Author:
schlegel
Message:

CHG: add option to turn off temperature scaling for the d18opdd scheme

Location:
issm/trunk-jpl/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r22482 r22495  
    225225                        iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
    226226                        if(isd18opd){
     227                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.istemperaturescaled",SmbIstemperaturescaledEnum));
    227228                                iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
    228229                                parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r22482 r22495  
    539539        IssmDouble dpermil,f;
    540540        IssmDouble time,yts,time_yr,month,time_clim;
     541        bool isTemperatureScaled=true;
    541542        this->parameters->FindParam(&time,TimeEnum);
    542543        this->parameters->FindParam(&yts,ConstantsYtsEnum);
     
    572573        /*Recover interpolation parameters at time t*/
    573574        this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
     575        this->parameters->FindParam(&isTemperatureScaled,SmbIstemperaturescaledEnum);
    574576
    575577        /*Compute the temperature and precipitation*/
    576578        for(int iv=0;iv<numvertices;iv++){
    577                 ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,f,
     579                ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,isTemperatureScaled,f,
    578580                                        &PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
    579581                                        &monthlytemperatures[iv*12], &monthlyprec[iv*12]);
  • issm/trunk-jpl/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp

    r21709 r22495  
    77#include "../Numerics/numerics.h"
    88
    9 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
    10                                               IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
     9void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
     10                                     IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
    1111                                               IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
    1212 
     
    2222  for (int imonth = 0; imonth<12; imonth++){
    2323   
    24     monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
     24         if (isTemperatureScaled)monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
     25         else monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth];
     26
    2527    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((f/dpermil)*deltaTemp);
    2628   
  • issm/trunk-jpl/src/c/shared/Elements/elements.h

    r22448 r22495  
    3333                                           IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday,
    3434                                           IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
    35 void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,IssmDouble f,
    36                                               IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
     35void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,bool isTemperatureScaled,
     36                                     IssmDouble f, IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
    3737                                               IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout); 
    3838IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r22482 r22495  
    494494        SmbIsmungsmEnum,
    495495        SmbIsd18opdEnum,
     496        SmbIstemperaturescaledEnum,
    496497        SmbPrecipitationsPresentdayEnum,
    497498        SmbPrecipitationsLgmEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r22482 r22495  
    495495                case SmbIsmungsmEnum : return "SmbIsmungsm";
    496496                case SmbIsd18opdEnum : return "SmbIsd18opd";
     497                case SmbIstemperaturescaledEnum : return "SmbIstemperaturescaled";
    497498                case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
    498499                case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r22482 r22495  
    504504              else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
    505505              else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
     506              else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum;
    506507              else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
    507               else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
    508508         else stage=5;
    509509   }
    510510   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;
    512513              else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
    513514              else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
     
    628629              else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
    629630              else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
    630               else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
    631631         else stage=6;
    632632   }
    633633   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;
    635636              else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
    636637              else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
     
    751752              else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum;
    752753              else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum;
    753               else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum;
    754754         else stage=7;
    755755   }
    756756   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;
    758759              else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
    759760              else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
     
    874875              else if (strcmp(name,"LoveFrequencies")==0) return LoveFrequenciesEnum;
    875876              else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
    876               else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
    877877         else stage=8;
    878878   }
    879879   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;
    881882              else if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
    882883              else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
     
    997998              else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
    998999              else if (strcmp(name,"Penta")==0) return PentaEnum;
    999               else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;
    10001000         else stage=9;
    10011001   }
    10021002   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;
    10041005              else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum;
    10051006              else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum;
     
    11201121              else if (strcmp(name,"P1P1")==0) return P1P1Enum;
    11211122              else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
    1122               else if (strcmp(name,"MINI")==0) return MINIEnum;
    11231123         else stage=10;
    11241124   }
    11251125   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;
    11271128              else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
    11281129              else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
  • issm/trunk-jpl/src/m/classes/SMBd18opdd.m

    r22448 r22495  
    1818                isd18opd                  = 0;
    1919                issetpddfac               = 0;
     20                istemperaturescaled       = 0;
    2021                delta18o                  = NaN;
    2122                delta18o_surface          = NaN;
     
    6566                  self.ismungsm   = 0;
    6667                  self.isd18opd   = 1;
     68                  self.istemperaturescaled = 1;
    6769                  self.desfac     = 0.5;
    6870                  self.rlaps      = 6.5;
     
    112114                                fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated');
    113115                                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)');
    114117                                fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated'); 
    115118                                fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                           
     
    145148                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    146149                                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');
    147151                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
    148152                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double');
  • issm/trunk-jpl/src/m/classes/SMBd18opdd.py

    r22448 r22495  
    2525                self.ismungsm                  = 0
    2626                self.isd18opd                  = 0
    27                 self.setpddfac                 = 0
     27                self.issetpddfac               = 0
     28                self.istemperaturescaled       = 0
    2829                self.delta18o                  = float('NaN')
    2930                self.delta18o_surface          = float('NaN')
     
    4950                        string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
    5051                        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)'))
    5153                        string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
    5254                        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'))
    5356
    5457                if self.issetpddfac==1:
     
    9093                self.ismungsm   = 0
    9194                self.isd18opd   = 1
     95                self.istemperaturescaled = 1
    9296                self.desfac     = 0.5
    9397                self.rlaps      = 6.5
     
    146150                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    147151                        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')
    148153                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts)
    149154                        WriteData(fid,prefix,'object',self,'class','smb','fieldname','dpermil','format','Double')
Note: See TracChangeset for help on using the changeset viewer.