Changeset 27773


Ignore:
Timestamp:
05/21/23 20:03:36 (23 months ago)
Author:
inwoo
Message:

CHG: Update SEMIC to enable the output request of SmbRefreeze value. Also, synchronize the SMBsemic class for MATLAB and PYTHON.

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

Legend:

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

    r27717 r27773  
    4242                        IssmDouble *Tamp,
    4343                        IssmDouble *tmin, IssmDouble *tmax, IssmDouble *tmid, IssmDouble *mcrit, IssmDouble *wcrit, IssmDouble *tau_a, IssmDouble* tau_f, IssmDouble *afac, bool *verbose,
    44                         IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out, IssmDouble *qmr_out);
     44                        IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *refr_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out, IssmDouble *qmr_out);
    4545#endif
    4646// _HAVE_SEMIC_
     
    42514251        IssmDouble* saccu_out  =xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42524252        IssmDouble* smelt_out  =xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble));
     4253        IssmDouble* refr_out  =xNew<IssmDouble>(NUM_VERTICES); memset(refr_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42534254        IssmDouble* albedo_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42544255        IssmDouble* albedo_snow_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_snow_out, 0., NUM_VERTICES*sizeof(IssmDouble));
     
    44264427                        Tamp_in,
    44274428                        &tmin, &tmax, &tmid, &mcrit, &wcrit, &tau_a, &tau_f, &afac, &semic_verbose,
    4428                         tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out,albedo_out, albedo_snow_out, hsnow_out, hice_out, qmr_out);
     4429                        tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, refr_out, albedo_out, albedo_snow_out, hsnow_out, hice_out, qmr_out);
    44294430
    44304431        for (int iv = 0; iv<NUM_VERTICES; iv++){
     
    44384439                saccu_out[iv] = saccu_out[iv]*yts; // w.e. m/sec -> m/yr
    44394440        }
     4441        /*
     4442         * unit conversion is not required for smelt and refr_out.
     4443         */
    44404444
    44414445        if(isverbose && this->Sid()==0){
     
    44534457                        //this->AddInput(SmbMassBalanceTotalEnum,&smb_out[0],P1DGEnum);
    44544458                        // water equivalent SMB ice to ice equivalent.
    4455                         this->AddInput(SmbMassBalanceEnum,    &smbi_out[0],P1DGEnum);
    4456                         this->AddInput(SmbMassBalanceIceEnum, &smbi_out[0],P1DGEnum);
    4457                         this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
     4459                        this->AddInput(SmbMassBalanceEnum,     &smbi_out[0],P1DGEnum);
     4460                        this->AddInput(SmbMassBalanceIceEnum,  &smbi_out[0],P1DGEnum);
     4461                        this->AddInput(SmbMassBalanceSnowEnum, &smbs_out[0],P1DGEnum);
    44584462                        this->AddInput(SmbMassBalanceSemicEnum,&smb_out[0],P1DGEnum);
    44594463                        //this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
     
    44624466                        // smelt
    44634467                        this->AddInput(SmbMeltEnum,        &smelt_out[0],P1DGEnum);
     4468                        this->AddInput(SmbRefreezeEnum,    &refr_out[0],P1DGEnum);
    44644469                        this->AddInput(SmbAlbedoEnum,      &albedo_out[0],P1DGEnum);
    44654470                        this->AddInput(SmbAlbedoSnowEnum,  &albedo_snow_out[0],P1DGEnum);
     
    44974502        xDelete<IssmDouble>(saccu_out);
    44984503        xDelete<IssmDouble>(smelt_out);
     4504        xDelete<IssmDouble>(refr_out);
    44994505        xDelete<IssmDouble>(albedo_out);
    45004506        xDelete<IssmDouble>(albedo_snow_out);
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90

    r27646 r27773  
    88      Tamp, &
    99      tmin, tmax, tmid, mcrit, w_crit, tau_a, tau_f, afac, verbose, &
    10       tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, alb_out, &
     10      tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out,  refr_out, alb_out, &
    1111      alb_snow_out,hsnow_out,hice_out,qmr_out) !{{{
    1212
     
    5555   double precision, intent(out), dimension(nx):: saccu_out    ! accumulation [m/s]
    5656   double precision, intent(out), dimension(nx):: smelt_out    ! ablation [m/s]
     57   double precision, intent(out), dimension(nx):: refr_out     ! freezing [m/s]
    5758   double precision, intent(out), dimension(nx):: alb_out      ! grid-averaged albedo [no unit]
    5859   double precision, intent(out), dimension(nx):: alb_snow_out
     
    232233            saccu_out         =surface%now%acc      ! acc      = snowfall - sublimiation - refreezing
    233234            smelt_out         =surface%now%melt     ! potential surface melt = melt_ice + melt_snow
     235            refr_out          =surface%now%refr     ! refreezing values. [m/sec]
    234236            alb_out           =surface%now%alb
    235237            alb_snow_out      =surface%now%alb_snow
  • issm/trunk-jpl/src/m/classes/SMBsemic.m

    r27652 r27773  
    8989                        if self.ismethod == 1
    9090                                list = {'SmbMassBalance','SmbMassBalanceSnow','SmbMassBalanceIce',...
    91                                         'SmbMassBalanceSemic','SmbMelt','SmbAccumulation',...
     91                                        'SmbMassBalanceSemic','SmbMelt','SmbRefreeze','SmbAccumulation',...
    9292                                        'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC',...
    9393                                        'SmbSemicQmr'};
     
    257257                        end
    258258                        % albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
    259                         if self.albedo_scheme == 1
    260                                 disp(sprintf('\n\tSEMIC snow albedo parameters for Slater et al, (1998).'));
     259         if self.albedo_scheme == 0:
     260            disp(sprintf('\n\tSEMIC snow albedo parameter of None.'));
     261                                disp(sprintf('\t   albedo of snow is updated from albedo snow max (alb_smax).'));
     262            disp(sprintf('\t   alb_snow = abl_smax'));
     263                        elseif self.albedo_scheme == 1
     264                                disp(sprintf('\n\tSEMIC snow albedo parameters of Slater et al, (1998).'));
    261265                                disp(sprintf('\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)'))
    262266                                disp(sprintf('\t   tm  = 1 (tsurf > 273.15 K)'));
  • issm/trunk-jpl/src/m/classes/SMBsemic.py

    r27513 r27773  
    113113            s += '{}\n'.format(fielddisplay(self,'albl','background albedo for bare land (default: 0.07)'))
    114114        # albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
    115         if self.albedo_scheme == 1:
    116             s += '\n\tSEMIC snow albedo parameters for Slater et al, (1998).\n'
     115        if self.albedo_scheme == 0:
     116            s += '\n\tSEMIC snow albedo parameter of None.\n'
     117                                s += '\t   albedo of snow is updated from albedo snow max (alb_smax).\n'
     118            s += '\t   alb_snow = abl_smax \n '
     119        elif self.albedo_scheme == 1:
     120            s += '\n\tSEMIC snow albedo parameters of Slater et al, (1998).\n'
    117121            s += '\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)\n'
    118122            s += '\t   tm  = 1 (tsurf > 273.15 K)\n'
     
    123127            s += '{}\n'.format(fielddisplay(self, 'tmax', 'maxmium temperature for which albedo decline become effective. This value should be fixed. (default: 273.15 K)[unit: K])'))
    124128        elif self.albedo_scheme == 2:
    125             s += '\n\tSEMIC snow albedo parameters for ISBA.? where is citation?\n'
     129            s += '\n\tSEMIC snow albedo parameters of ISBA.? where is citation?\n'
    126130            s += '{}\n'.format(fielddisplay(self, 'mcrit', 'critical melt rate (default: 6e-8) [unit: m/sec]'))
    127131            s += '{}\n'.format(fielddisplay(self, 'wcrit', 'critical liquid water content (default: 15) [unit: kg/m2]'))
     
    129133            s += '{}\n'.format(fielddisplay(self, 'tau_f', 'wet albedo decline [unit: 1/day]'))
    130134        elif self.albedo_scheme == 3:
    131             s += '\n\tSEMIC snow albedo parameters for Denby et al. (2002 Tellus)\n'
     135            s += '\n\tSEMIC snow albedo parameters of Denby et al. (2002 Tellus)\n'
    132136            s += '{}\n'.format(fielddisplay(self,'mcrit','critical melt rate (defaut: 6e-8) [unit: m/sec]'))
    133137        elif self.albedo_scheme == 4:
    134             s += '\n\tSEMIC snow albedo parameters for Alex.?\n'
     138            s += '\n\tSEMIC snow albedo parameters of Alex.?\n'
    135139            s += '{}\n'.format(fielddisplay(self,'afac','[unit: ?]'))
    136140            s += '{}\n'.format(fielddisplay(self,'tmid','[unit: ?]'))
     
    167171    def outputlists(self, md):  # {{{
    168172        if self.ismethod:
    169             list = ['SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMelt', 'SmbAccumulation', 'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC']
     173            list = ['SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMassBalanceIce',
     174                  'SmbMassBalanceSecmi', 'SmbMelt', 'SmbRefreeze','SmbAccumulation',
     175                  'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC',
     176                  'SmbSemicQmr']
    170177        else:
    171178            list = ['SmbMassBalance']
Note: See TracChangeset for help on using the changeset viewer.