Changeset 28036


Ignore:
Timestamp:
12/25/23 00:04:06 (15 months ago)
Author:
inwoo
Message:

CHG: The SMBsemic module uses the surface mass balance = SMB_ice + SMB_snow, not solely SMB_ice. Also, the term "SurfaceMassBalanceSemicEnum" is removed from Enum field.

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r27962 r28036  
    48314831                 w.e. : water equivalenet.
    48324832                 */
    4833                 smb_out[iv]  = smb_out[iv]*yts;  // w.e. m/sec -> m/yr
    4834                 smbi_out[iv] = smbi_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
    4835                 smbs_out[iv] = smbs_out[iv]*yts; // w.e. m/sec -> m/yr
    4836                 saccu_out[iv] = saccu_out[iv]*yts; // w.e. m/sec -> m/yr
     4833                smb_out[iv]  = smb_out[iv]*rho_water/rho_ice;      // w.e. m/sec -> ice m/yr
     4834                smbi_out[iv] = smbi_out[iv]*rho_water/rho_ice*yts; // w.e. m/sec -> ice m/yr
     4835                smbs_out[iv] = smbs_out[iv]*rho_water/rho_ice*yts; // w.e. m/sec -> ice m/yr
     4836                saccu_out[iv] = saccu_out[iv]*rho_water/rho_ice*yts; // w.e. m/sec -> ice m/yr
    48374837                smelt_out[iv] = smelt_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
    48384838                refr_out[iv]  = refr_out[iv]*rho_water/rho_ice; // w.e. m/sec -> ice m/yr
     
    48534853                        //this->AddInput(SmbMassBalanceTotalEnum,&smb_out[0],P1DGEnum);
    48544854                        // water equivalent SMB ice to ice equivalent.
    4855                         this->AddInput(SmbMassBalanceEnum,     &smbi_out[0],P1DGEnum);
     4855                        this->AddInput(SmbMassBalanceEnum,     &smb_out[0],P1DGEnum);
    48564856                        this->AddInput(SmbMassBalanceIceEnum,  &smbi_out[0],P1DGEnum);
    48574857                        this->AddInput(SmbMassBalanceSnowEnum, &smbs_out[0],P1DGEnum);
    4858                         this->AddInput(SmbMassBalanceSemicEnum,&smb_out[0],P1DGEnum);
    48594858                        //this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
    48604859                        // saccu - accumulation of snow.
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r27960 r28036  
    11151115syn keyword cConstant SmbMassBalanceSnowEnum
    11161116syn keyword cConstant SmbMassBalanceIceEnum
    1117 syn keyword cConstant SmbMassBalanceSemicEnum
    11181117syn keyword cConstant SmbMassBalanceSubstepEnum
    11191118syn keyword cConstant SmbMassBalanceTransientEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27960 r28036  
    11111111        SmbMassBalanceSnowEnum,
    11121112        SmbMassBalanceIceEnum,
    1113         SmbMassBalanceSemicEnum,
    11141113   SmbMassBalanceSubstepEnum,
    11151114   SmbMassBalanceTransientEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r27960 r28036  
    11171117                case SmbMassBalanceSnowEnum : return "SmbMassBalanceSnow";
    11181118                case SmbMassBalanceIceEnum : return "SmbMassBalanceIce";
    1119                 case SmbMassBalanceSemicEnum : return "SmbMassBalanceSemic";
    11201119                case SmbMassBalanceSubstepEnum : return "SmbMassBalanceSubstep";
    11211120                case SmbMassBalanceTransientEnum : return "SmbMassBalanceTransient";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r27960 r28036  
    11081108syn keyword juliaConstC SmbMassBalanceSnowEnum
    11091109syn keyword juliaConstC SmbMassBalanceIceEnum
    1110 syn keyword juliaConstC SmbMassBalanceSemicEnum
    11111110syn keyword juliaConstC SmbMassBalanceSubstepEnum
    11121111syn keyword juliaConstC SmbMassBalanceTransientEnum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r27960 r28036  
    11441144              else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
    11451145              else if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
    1146               else if (strcmp(name,"SmbMassBalanceSemic")==0) return SmbMassBalanceSemicEnum;
    11471146              else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
    11481147              else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
     
    12441243              else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
    12451244              else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
     1245              else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
    1250               else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
     1249              if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
    12511250              else if (strcmp(name,"Surface")==0) return SurfaceEnum;
    12521251              else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum;
     
    13671366              else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
    13681367              else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
     1368              else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
    1373               else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
     1372              if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
    13741373              else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
    13751374              else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
     
    14901489              else if (strcmp(name,"DataSet")==0) return DataSetEnum;
    14911490              else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
     1491              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    14921492         else stage=13;
    14931493   }
    14941494   if(stage==13){
    1495               if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    1496               else if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum;
     1495              if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum;
    14971496              else if (strcmp(name,"DebrisSolution")==0) return DebrisSolutionEnum;
    14981497              else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
     
    16131612              else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
    16141613              else if (strcmp(name,"Loads")==0) return LoadsEnum;
     1614              else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
    16151615         else stage=14;
    16161616   }
    16171617   if(stage==14){
    1618               if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
    1619               else if (strcmp(name,"LoveHf")==0) return LoveHfEnum;
     1618              if (strcmp(name,"LoveHf")==0) return LoveHfEnum;
    16201619              else if (strcmp(name,"LoveHt")==0) return LoveHtEnum;
    16211620              else if (strcmp(name,"LoveKernelsImag")==0) return LoveKernelsImagEnum;
     
    17361735              else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
    17371736              else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
     1737              else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
    17381738         else stage=15;
    17391739   }
    17401740   if(stage==15){
    1741               if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
    1742               else if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
     1741              if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
    17431742              else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
    17441743              else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
  • issm/trunk-jpl/src/m/classes/SMBsemic.m

    r28025 r28036  
    9090                        if self.ismethod == 1
    9191                                list = {'default','SmbMassBalance','SmbMassBalanceSnow','SmbMassBalanceIce',...
    92                                         'SmbMassBalanceSemic','SmbMelt','SmbRefreeze','SmbAccumulation',...
     92                                        'SmbMelt','SmbRefreeze','SmbAccumulation',...
    9393                                        'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC',...
    9494                                        'SmbSemicQmr','TotalSmb','TotalSmbMelt','TotalSmbRefreeze'};
     
    172172                                md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
    173173                                md = checkfield(md,'fieldname','smb.rdl','>=',0,'numel',1);
    174                                 md = checkfield(md,'fieldname','smb.dailysnowfall','timeseries',1,'NaN',1,'Inf',1);
    175                                 md = checkfield(md,'fieldname','smb.dailyrainfall','timeseries',1,'NaN',1,'Inf',1);
    176                                 md = checkfield(md,'fieldname','smb.dailydsradiation','timeseries',1,'NaN',1,'Inf',1);
    177                                 md = checkfield(md,'fieldname','smb.dailydlradiation','timeseries',1,'NaN',1,'Inf',1);
    178                                 md = checkfield(md,'fieldname','smb.dailywindspeed','timeseries',1,'NaN',1,'Inf',1);
    179                                 md = checkfield(md,'fieldname','smb.dailypressure','timeseries',1,'NaN',1,'Inf',1);
    180                                 md = checkfield(md,'fieldname','smb.dailyairdensity','timeseries',1,'NaN',1,'Inf',1);
    181                                 md = checkfield(md,'fieldname','smb.dailyairhumidity','timeseries',1,'NaN',1,'Inf',1);
    182                                 md = checkfield(md,'fieldname','smb.dailytemperature','timeseries',1,'NaN',1,'Inf',1);
     174                                md = checkfield(md,'fieldname','smb.dailysnowfall','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     175                                md = checkfield(md,'fieldname','smb.dailyrainfall','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     176                                md = checkfield(md,'fieldname','smb.dailydsradiation','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     177                                md = checkfield(md,'fieldname','smb.dailydlradiation','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     178                                md = checkfield(md,'fieldname','smb.dailywindspeed','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     179                                md = checkfield(md,'fieldname','smb.dailypressure','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     180                                md = checkfield(md,'fieldname','smb.dailyairdensity','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     181                                md = checkfield(md,'fieldname','smb.dailyairhumidity','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     182                                md = checkfield(md,'fieldname','smb.dailytemperature','timeseries',1,'NaN',1,'Inf',1,'>=',0);
    183183
    184184                                % TODO: transient model should be merged with SEMIC developed by Ruckamp et al. (2018)
  • issm/trunk-jpl/src/m/classes/SMBsemic.py

    r28025 r28036  
    173173        if self.ismethod:
    174174            list = ['default','SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMassBalanceIce',
    175                   'SmbMassBalanceSemic', 'SmbMelt', 'SmbRefreeze','SmbAccumulation',
     175                  'SmbMelt', 'SmbRefreeze','SmbAccumulation',
    176176                  'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC',
    177177                  'SmbSemicQmr', 'TotalSmb', 'TotalSmbMelt', 'TotalSmbRefreeze']
     
    237237            md = checkfield(md, 'fieldname', 'smb.desfac', '<=', 1, 'numel', 1)
    238238            md = checkfield(md, 'fieldname', 'smb.s0gcm', '>=', 0, 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices, 1])
    239             md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1)
    240             md = checkfield(md, 'fieldname', 'smb.rdl', '>=', 0, 'numel', 1)
    241             md = checkfield(md, 'fieldname', 'smb.dailysnowfall', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    242             md = checkfield(md, 'fieldname', 'smb.dailyrainfall', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    243             md = checkfield(md, 'fieldname', 'smb.dailydsradiation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    244             md = checkfield(md, 'fieldname', 'smb.dailydlradiation', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    245             md = checkfield(md, 'fieldname', 'smb.dailywindspeed', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    246             md = checkfield(md, 'fieldname', 'smb.dailypressure', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    247             md = checkfield(md, 'fieldname', 'smb.dailyairdensity', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    248             md = checkfield(md, 'fieldname', 'smb.dailyairhumidity', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
    249             md = checkfield(md, 'fieldname', 'smb.dailytemperature', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
     239            md = checkfield(md, 'fieldname', 'smb.rlaps', '>=', 0, 'numel', 1);
     240            md = checkfield(md, 'fieldname', 'smb.rdl', '>=', 0, 'numel', 1);
     241            md = checkfield(md, 'fieldname', 'smb.dailysnowfall','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     242            md = checkfield(md, 'fieldname', 'smb.dailyrainfall','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     243            md = checkfield(md, 'fieldname', 'smb.dailydsradiation','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     244            md = checkfield(md, 'fieldname', 'smb.dailydlradiation','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     245            md = checkfield(md, 'fieldname', 'smb.dailywindspeed','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     246            md = checkfield(md, 'fieldname', 'smb.dailypressure','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     247            md = checkfield(md, 'fieldname', 'smb.dailyairdensity','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     248            md = checkfield(md, 'fieldname', 'smb.dailyairhumidity','timeseries',1,'NaN',1,'Inf',1,'>=',0);
     249            md = checkfield(md, 'fieldname', 'smb.dailytemperature','timeseries',1,'NaN',1,'Inf',1,'>=',0);
    250250
    251251            # TODO: transient model should be merged with SEMIC developed by Ruckamp et al. (2018)
Note: See TracChangeset for help on using the changeset viewer.