Changeset 27511


Ignore:
Timestamp:
01/11/23 20:51:48 (2 years ago)
Author:
inwoo
Message:

CHG: update SMBsemic.m.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/SMBsemic.m

    r27504 r27511  
    3232
    3333                % albedo
    34                 albedo            = 0;
    35                 albedo_snow       = 0;
    36                 albedo_scheme     = 0;
     34                albedo            = 0; % required for first energy balance calculation of SEMIC.
     35                albedo_snow       = 0; % required for ISBA method.
     36                albedo_scheme     = 0; 
    3737                alb_smax = NaN;
    3838                alb_smin = NaN;
     
    4040                albl = NaN;
    4141
     42                % albedo parameters depending on albedo_scheme
     43                % for slater
     44                tmin = NaN;
     45                tmax = NaN;
     46
     47                % for isba & denby method
     48                mcrit = NaN;
     49
     50                % for isba
     51                tau_a = NaN;
     52                tau_f = NaN;
     53                wcrit = NaN;
     54
     55                % for alex
     56                tmid = NaN;
     57                afac = NaN;
     58
    4259                % method
    43                 ismethod          = 0;
     60                ismethod  = 0;
    4461        end
    4562        methods
     
    6885                        list = {'SmbMassBalance'};
    6986                end % }}}
     87                function list = outputlists(self,md) % {{{
     88                        if self.ismethod == 1
     89                                list = {'SmbMassBalance','SmbMassBalanceSnow','SmbMelt','SmbAccumulation',...
     90                                        'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC'};
     91                        else
     92                                list = {'SmbMassBalance'};
     93                        end
     94                end % }}}
    7095                function self = initialize(self,md) % {{{
    7196
     
    75100                        end
    76101                        self.Tamp       = 3*ones(md.mesh.numberofvertices,1);
    77                         self.albedo     = 0.8*ones(md.mesh.numberofvertices,1);
    78                         self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1);
     102                        %self.albedo     = 0.8*ones(md.mesh.numberofvertices,1);
     103                        %self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1);
    79104                        self.hice       = zeros(md.mesh.numberofvertices,1);
    80105                        self.hsnow      = 5*ones(md.mesh.numberofvertices,1);
     
    82107                function self = setdefaultparameters(self) % {{{
    83108
     109                        % albedo parameters
    84110                        self.albedo_scheme   = 0;
    85111                        self.alb_smax = 0.79;
     
    87113                        self.albi = 0.41;
    88114                        self.albl = 0.07;
     115
     116                        % albedo parameters for?
     117                        % for slater
     118                        self.tmin  = 263.15;
     119                        self.tmax  = 273.15;
     120                        % for isba & denby
     121                        self.mcrit = 6e-8;
     122                        % for isba
     123                        self.tau_a = 0.008;
     124                        self.tau_f = 0.24;
     125                        self.wcrit = 15.0;
     126                        % for alex
     127                        self.tmid  = 273.35;
     128                        self.afac  = -0.18;
    89129
    90130                        self.hcrit = 0.028;% from Krapp et al. (2017)
     
    181221                                fielddisplay(self,'albi','background albeod for bare ice (default: 0.41)');
    182222                                fielddisplay(self,'albl','background albeod for bare land (default: 0.07)');
     223                        end
     224                        % albeod_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
     225                        if self.albedo_scheme == 1
     226                                disp(sprintf('\n\tSEMIC snow albedo parameters for Slater et al, (1998).'));
     227                                disp(sprintf('\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)'))
     228                                disp(sprintf('\t   tm  = 1 (tsurf > 273.15 K)'));
     229                                disp(sprintf('\t         tm = f*(tsurf-tmin) (tmin <= tsurf < 273.15)'));
     230                                disp(sprintf('\t         0 (tsurf < tmin)'));
     231                                disp(sprintf('\t   f = 1/(273.15-tmin)'));
     232                                fielddisplay(self,'tmin','minimum temperature for which albedo decline become effective. (default: 263.15 K)[unit: K])');
     233                                fielddisplay(self,'tmax','maxmium temperature for which albedo decline become effective. This value should be fixed. (default: 273.15 K)[unit: K])');
     234                        elseif self.albedo_scheme == 2,
     235                                disp(sprintf('\n\tSEMIC snow albedo parameters for ISBA.? where is citation?'));
     236                                fielddisplay(self,'mcrit','critical melt rate (defaut: 6e-8) [unit: m/sec]');
     237                                fielddisplay(self,'wcrit','critical liquid water content (defaut: 15) [unit: kg/m2]');
     238                                fielddisplay(self,'tau_a','dry albedo decline [unit: 1/day]');
     239                                fielddisplay(self,'tau_f','wet albedo decline [unit: 1/day]');
     240                        elseif self.albedo_scheme == 3,
     241                                disp(sprintf('\n\tSEMIC snow albedo parameters for Denby et al. (2002 Tellus)'));
     242                                fielddisplay(self,'mcrit','critical melt rate (defaut: 6e-8) [unit: m/sec]');
     243                        elseif self.albedo_scheme == 4,
     244                                disp(sprintf('\n\tSEMIC snow albedo parameters for Alex.?'));
     245                                fielddisplay(self,'afac','[unit: ?]');
     246                                fielddisplay(self,'tmid','[unit: ?]');
     247                        else
     248                                error(sprintf('ERROR: %d is not supported albedom scheme.',self.albedo_scheme))
    183249                        end
    184250
     
    229295                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smin','format','Double');
    230296                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smax','format','Double');
     297
     298                                %abledo parameters for ?
     299                                %for slater
     300                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmin','format','Double');
     301                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmax','format','Double');
     302                                %for isba & denby
     303                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','mcrit','format','Double');
     304                                %for isba
     305                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','wcrit','format','Double');
     306                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','tau_a','format','Double');
     307                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','tau_f','format','Double');
     308                                %for alex
     309                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','tmid','format','Double');
     310                                WriteData(fid,prefix,'object',self,'class','smb','fieldname','afac','format','Double');
    231311                        end
    232312
Note: See TracChangeset for help on using the changeset viewer.