Changeset 27511
- Timestamp:
- 01/11/23 20:51:48 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/SMBsemic.m
r27504 r27511 32 32 33 33 % 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; 37 37 alb_smax = NaN; 38 38 alb_smin = NaN; … … 40 40 albl = NaN; 41 41 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 42 59 % method 43 ismethod 60 ismethod = 0; 44 61 end 45 62 methods … … 68 85 list = {'SmbMassBalance'}; 69 86 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 % }}} 70 95 function self = initialize(self,md) % {{{ 71 96 … … 75 100 end 76 101 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); 79 104 self.hice = zeros(md.mesh.numberofvertices,1); 80 105 self.hsnow = 5*ones(md.mesh.numberofvertices,1); … … 82 107 function self = setdefaultparameters(self) % {{{ 83 108 109 % albedo parameters 84 110 self.albedo_scheme = 0; 85 111 self.alb_smax = 0.79; … … 87 113 self.albi = 0.41; 88 114 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; 89 129 90 130 self.hcrit = 0.028;% from Krapp et al. (2017) … … 181 221 fielddisplay(self,'albi','background albeod for bare ice (default: 0.41)'); 182 222 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)) 183 249 end 184 250 … … 229 295 WriteData(fid,prefix,'object',self,'class','smb','fieldname','alb_smin','format','Double'); 230 296 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'); 231 311 end 232 312
Note:
See TracChangeset
for help on using the changeset viewer.