Changeset 25396


Ignore:
Timestamp:
08/14/20 17:08:29 (5 years ago)
Author:
schlegel
Message:

CHG: make bare ice albedo calculation standard for all gemb schemes

Location:
issm/trunk-jpl
Files:
9 edited

Legend:

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

    r25384 r25396  
    39153915
    39163916        /*Allow non-melt densification and determine compaction [m]*/
    3917         if(isdensification)densification(&d,&dz, T, re, denIdx, C, smb_dt, Tmean,rho_ice,m,this->Sid());
     3917        if(isdensification)densification(&d,&dz, T, re, denIdx, aIdx, swIdx, adThresh, C, smb_dt, Tmean,rho_ice,m,this->Sid());
    39183918
    39193919        /*Calculate upward longwave radiation flux [W m-2] not used in energy balance. Calculated for every
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp

    r25379 r25396  
    487487                        // Spectral fractions  (Lefebre et al., 2003)
    488488                        // [0.3-0.8um 0.8-1.5um 1.5-2.8um]
    489                         if (d[0]<dPHC-Dtol){
    490 
    491                                 IssmDouble sF[3] = {0.606, 0.301, 0.093};
    492 
    493                                 // convert effective radius to grain size in meters
    494                                 IssmDouble gsz = (re[0] * 2.0) / 1000.0;
    495 
    496                                 // spectral range:
    497                                 // 0.3 - 0.8um
    498                                 IssmDouble a0 = min(0.98, 1 - 1.58 *pow(gsz,0.5));
    499                                 // 0.8 - 1.5um
    500                                 IssmDouble a1 = max(0., 0.95 - 15.4 *pow(gsz,0.5));
    501                                 // 1.5 - 2.8um
    502                                 IssmDouble a2 = max(0.127, 0.88 + 346.3*gsz - 32.31*pow(gsz,0.5));
    503 
    504                                 // broadband surface albedo
    505                                 a[0] = sF[0]*a0 + sF[1]*a1 + sF[2]*a2;
    506 
    507                                 // In a layer < 10cm, account for mix of ice and snow,
    508                                 // after P. Alexander et al., 2014
    509                                 IssmDouble depthsnow=0.0;
    510                                 IssmDouble aice=0.0;
    511                                 int lice=0;
    512                                 for(int l=0;(l<m & d[l]<dPHC-Dtol);l++){
    513                                         depthsnow=depthsnow+dz[l];
    514                                         lice=l+1;
    515                                 }
    516                                 if (depthsnow<=0.1+Dtol & lice<m & d[lice]>=dPHC-Dtol){
    517                                         aice = ai_max + (as_min - ai_max)*(d[lice]-dIce)/(dPHC-dIce);
    518                                         a[0]= aice + max(a[0]-aice,0.0)*(depthsnow/0.1);
    519                                 }
    520                         }
    521                         else if (d[0]<dIce-Dtol){ //For continuity of albedo in firn i.e. P. Alexander et al., 2014
    522 
    523                                 //ai=ai_max + (as_min - ai_max)*(dI-dIce)/(dC-dIce)
    524                                 //dC is pore close off (830 kg m^-3)
    525                                 //dI is density of the upper firn layer
    526 
    527                                 a[0] = ai_max + (as_min - ai_max)*(d[0]-dIce)/(dPHC-dIce);
    528 
    529                         }
    530                         else{ //surface layer is density of ice
    531 
    532                                 //When density is > dIce (typically 910 kg m^-3, 920 is used by Alexander in MAR),
    533                                 //ai=ai_min + (ai_max - ai_min)*e^(-1*(Msw(t)/K))
    534                                 //K is a scale factor (set to 200 kg m^-2)
    535                                 //Msw(t) is the time-dependent accumulated amount of excessive surface meltwater
    536                                 //  before run-off in kg m^-2 (melt per GEMB timestep, i.e. 3 hourly)
    537                                 IssmDouble M = Msurf+W[0];
    538                                 a[0]=max(ai_min + (ai_max - ai_min)*exp(-1*(M/200)), ai_min);
    539 
     489
     490                        IssmDouble sF[3] = {0.606, 0.301, 0.093};
     491
     492                        // convert effective radius to grain size in meters
     493                        IssmDouble gsz = (re[0] * 2.0) / 1000.0;
     494
     495                        // spectral range:
     496                        // 0.3 - 0.8um
     497                        IssmDouble a0 = min(0.98, 1 - 1.58 *pow(gsz,0.5));
     498                        // 0.8 - 1.5um
     499                        IssmDouble a1 = max(0., 0.95 - 15.4 *pow(gsz,0.5));
     500                        // 1.5 - 2.8um
     501                        IssmDouble a2 = max(0.127, 0.88 + 346.3*gsz - 32.31*pow(gsz,0.5));
     502
     503                        // broadband surface albedo
     504                        a[0] = sF[0]*a0 + sF[1]*a1 + sF[2]*a2;
     505
     506                        // In a layer < 10cm, account for mix of ice and snow,
     507                        // after P. Alexander et al., 2014
     508                        IssmDouble depthsnow=0.0;
     509                        IssmDouble aice=0.0;
     510                        int lice=0;
     511                        for(int l=0;(l<m & d[l]<dPHC-Dtol);l++){
     512                                depthsnow=depthsnow+dz[l];
     513                                lice=l+1;
     514                        }
     515                        if (depthsnow<=0.1+Dtol & lice<m & d[lice]>=dPHC-Dtol){
     516                                aice = ai_max + (as_min - ai_max)*(d[lice]-dIce)/(dPHC-dIce);
     517                                a[0]= aice + max(a[0]-aice,0.0)*(depthsnow/0.1);
    540518                        }
    541519                }
     
    604582                }
    605583                else _error_("albedo method switch should range from 0 to 4!");
     584
     585                //If we do not have fresh snow
     586                if (aIdx<3 && aIdx>0){
     587                        // In a layer < 10cm, account for mix of ice and snow,
     588                        // after P. Alexander et al., 2014
     589                        IssmDouble depthsnow=0.0;
     590                        IssmDouble aice=0.0;
     591                        int lice=0;
     592                        for(int l=0;(l<m & d[l]<dPHC-Dtol);l++){
     593                                depthsnow=depthsnow+dz[l];
     594                                lice=l+1;
     595                        }
     596                        if (depthsnow<=0.1+Dtol & lice<m & d[lice]>=dPHC-Dtol){
     597                                aice = ai_max + (as_min - ai_max)*(d[lice]-dIce)/(dPHC-dIce);
     598                                a[0]= aice + max(a[0]-aice,0.0)*(depthsnow/0.1);
     599                        }
     600
     601                        if (d[0]>=dPHC-Dtol){
     602                                if (d[0]<dIce-Dtol){ //For continuity of albedo in firn i.e. P. Alexander et al., 2014
     603
     604                                        //ai=ai_max + (as_min - ai_max)*(dI-dIce)/(dPHC-dIce);
     605                                        //dPHC is pore close off (830 kg m^-3)
     606                                        //dI is density of the upper firn layer
     607
     608                                        a[0] = ai_max + (as_min - ai_max)*(d[0]-dIce)/(dPHC-dIce);
     609
     610                                }
     611                                else{ //surface layer is density of ice
     612
     613                                        //When density is > dIce (typically 910 kg m^-3, 920 is used by Alexander in MAR),
     614                                        //ai=ai_min + (ai_max - ai_min)*e^(-1*(Msw(t)/K))
     615                                        //K is a scale factor (set to 200 kg m^-2)
     616                                        //Msw(t) is the time-dependent accumulated amount of excessive surface meltwater
     617                                        //  before run-off in kg m^-2 (melt per GEMB timestep, i.e. 3 hourly)
     618                                        IssmDouble M = Msurf+W[0];
     619                                        a[0]=max(ai_min + (ai_max - ai_min)*exp(-1*(M/200)), ai_min);
     620
     621                                }
     622                        }
     623                }
    606624        }
    607625
     
    872890                // calculate the Bulk Richardson Number (Ri)
    873891                Ri = (2.0*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2.0));
     892                //Ri = (2.0*9.81*(Ta - Ts)) / ((Tz - z0)*(Ta + Ts)* pow(V/(Vz - z0),2.0));
    874893
    875894                // calculate Monin-Obukhov stability factors 'coefM' and 'coefH'
    876895
    877                 // do not allow Ri to exceed 0.19
    878                 Ri = min(Ri, 0.19);
     896                // do not allow Ri to exceed 0.16
     897                // Ri = min(Ri, 0.19);
     898                Ri = min(Ri, 0.16); //Ohmura, 1982
    879899
    880900                // calculate momentum 'coefM' stability factor
     
    929949
    930950                // upward longwave contribution
    931                 ulw = - (SB * pow(Ts,4.0)* teValue) * dt; // - deltatest here
     951                //ulw = - (SB * pow(Ts,4.0)* teValue) * dt; // - deltatest here
     952                IssmDouble deltatest=0;
     953                ulw = - (SB * pow(Ts,4.0)* teValue - deltatest) * dt; // - deltatest here
    932954                ulwrf = ulwrf - ulw/dt0;
    933955
     
    9961018
    9971019        // swIdx = 1 : absorbed SW is distributed with depth as a function of:
    998         //   1 : snow density (taken from Bassford, 2004)
    999         //   2 : grain size in 3 spectral bands (Brun et al., 1992)
     1020        //   default  : snow density (taken from Bassford, 2004)
     1021        //   if aIdx=2 : grain size in 3 spectral bands (Brun et al., 1992)
    10001022
    10011023        // Inputs
     
    12541276                case 1: // Density of Antarctica snow
    12551277                        dSnow = 350;
     1278                        //dSnow = 360; //FirnMICE Lundin et al., 2017
    12561279                        break;
    12571280
     
    19301953        xDelete<IssmDouble>(Zcum);
    19311954        xDelete<IssmDouble>(dzMin2);
     1955        xDelete<IssmDouble>(dzMax2);
    19321956
    19331957        /*Assign output pointers:*/
     
    19491973
    19501974} /*}}}*/
    1951 void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/
     1975void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/
    19521976
    19531977        //// THIS NEEDS TO BE DOUBLE CHECKED AS THERE SEAMS TO BE LITTLE DENSIFICATION IN THE MODEL OUTOUT [MAYBE COMPACTION IS COMPENSATED FOR BY TRACES OF SNOW???]
     
    20722096                                c0arth = 0.07 * H;
    20732097                                c1arth = 0.03 * H;
    2074                                 //ERA-5
     2098                                //ERA-5 old
    20752099                                //M0 = max(2.3128 - (0.2480 * log(C)),0.25);
    20762100                                //M1 = max(2.7950 - (0.3318 * log(C)),0.25);
    2077                                 //RACMO
    2078                                 M0 = max(1.6599 - (0.1724 * log(C)),0.25);
    2079                                 M1 = max(2.0102 - (0.2458 * log(C)),0.25);
     2101                                // ERA5 new aIdx=1, swIdx=0
     2102                                if (aIdx==1 && swIdx==0){
     2103                                        if (abs(adThresh - 820) < Dtol){
     2104                                                // ERA5 new aIdx=1, swIdx=0, MODIS 820
     2105                                                M0 = max(1.8785 - (0.1811 * log(C)),0.25);
     2106                                                M1 = max(2.0005 - (0.2346 * log(C)),0.25);
     2107                                        }
     2108                                        else{
     2109                                                // ERA5 new aIdx=1, swIdx=0
     2110                                                //M0 = max(1.8785 - (0.1811 * log(C)),0.25);
     2111                                                //M1 = max(2.0005 - (0.2346 * log(C)),0.25);
     2112                                                // ERA5 new aIdx=1, swIdx=0, bare ice
     2113                                                M0 = max(1.8785 - (0.1811 * log(C)),0.25);
     2114                                                M1 = max(2.0005 - (0.2346 * log(C)),0.25);
     2115                                        }
     2116                                }
     2117                                // ERA5 new aIdx=2, swIdx=1
     2118                                else if (aIdx<3 && swIdx>0){
     2119                                        M0 = max(2.2191 - (0.2301 * log(C)),0.25);
     2120                                        M1 = max(2.2917 - (0.2710 * log(C)),0.25);
     2121                                }
     2122                                // ERA5 new aIdx=2, swIdx=0
     2123                                //else if (aIdx==2){
     2124                                //}
    20802125                                //From Ligtenberg
    20812126                                //H = exp((-60000.0/(Tmean * R)) + (42400.0/(Tmean * R))) * (C * 9.81);
    20822127                                //M0 = max(1.435 - (0.151 * log(C)),0.25);
    20832128                                //M1 = max(2.366 - (0.293 * log(C)),0.25);
     2129                                //RACMO
     2130                                M0 = max(1.6599 - (0.1724 * log(C)),0.25);
     2131                                M1 = max(2.0102 - (0.2458 * log(C)),0.25);
    20842132                                c0 = M0*c0arth;
    20852133                                c1 = M1*c1arth;
     
    20922140                                c0arth = 0.07 * H;
    20932141                                c1arth = 0.03 * H;
    2094                                 // ERA5
     2142                                // ERA5 old
    20952143                                //M0 = max(1.8554 - (0.1316 * log(C)),0.25);
    20962144                                //M1 = max(2.8901 - (0.3014 * log(C)),0.25);
     2145                                // ERA5 new aIdx=1, swIdx=0
     2146                                if (aIdx==1 && swIdx==0){
     2147                                        if (abs(adThresh - 820) < Dtol){
     2148                                                // ERA5 new aIdx=1, swIdx=0, MODIS 820
     2149                                                M0 = max(1.4174 - (0.1037 * log(C)),0.25);
     2150                                                M1 = max(2.2010 - (0.2460 * log(C)),0.25);
     2151                                        }
     2152                                        else{
     2153                                                // ERA5 new aIdx=1, swIdx=0
     2154                                                //M0 = max(1.4574 - (0.1123 * log(C)),0.25);
     2155                                                //M1 = max(2.0238 - (0.2070 * log(C)),0.25);
     2156                                                // ERA5 new aIdx=1, swIdx=0, bare ice
     2157                                                M0 = max(1.4318 - (0.1055 * log(C)),0.25);
     2158                                                M1 = max(2.0453 - (0.2137 * log(C)),0.25);
     2159                                        }
     2160                                }
     2161                                // ERA5 new aIdx=2, swIdx=1
     2162                                else if (aIdx<3 && swIdx>0){
     2163                                        M0 = max(1.7834 - (0.1409 * log(C)),0.25);
     2164                                        M1 = max(1.9260 - (0.1527 * log(C)),0.25);
     2165                                }
     2166                                // ERA5 new aIdx=2, swIdx=0
     2167                                //else if (aIdx==2){
     2168                                //}
     2169                                // From Kuipers Munneke
     2170                                //M0 = max(1.042 - (0.0916 * log(C)),0.25);
     2171                                //M1 = max(1.734 - (0.2039 * log(C)),0.25);
    20972172                                // RACMO
    20982173                                M0 = max(1.6201 - (0.1450 * log(C)),0.25);
    20992174                                M1 = max(2.5577 - (0.2899 * log(C)),0.25);
    2100                                 // From Kuipers Munneke
    2101                                 //M0 = max(1.042 - (0.0916 * log(C)),0.25);
    2102                                 //M1 = max(1.734 - (0.2039 * log(C)),0.25);
    21032175                                c0 = M0*c0arth;
    21042176                                c1 = M1*c1arth;
     
    21902262        // calculate the Bulk Richardson Number (Ri)
    21912263        Ri = (2.0*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2.0));
     2264        //Ri = (2.0*9.81*(Ta - Ts)) / ((Tz - z0)*(Ta + Ts)* pow(V/(Vz - z0),2.0));
    21922265
    21932266        // calculate Monin-Obukhov stability factors 'coefM' and 'coefH'
    21942267
    2195         // do not allow Ri to exceed 0.19
    2196         Ri = min(Ri, 0.19);
     2268        // do not allow Ri to exceed 0.16
     2269        // Ri = min(Ri, 0.19);
     2270        Ri = min(Ri, 0.16); //Ohmura, 1982
    21972271
    21982272        // calculate momentum 'coefM' stability factor
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h

    r24735 r25396  
    3434void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid);
    3535void melt(IssmDouble* pM, IssmDouble* pMs, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble zY, IssmDouble dIce, int sid);
    36 void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
     36void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, int aIdx, int swIdx, IssmDouble adThresh, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
    3737void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid);
    3838#endif  /* _SurfaceMassBalancex_H*/
  • issm/trunk-jpl/src/m/classes/SMBgemb.m

    r24806 r25396  
    6060                              % 0: direct input from aValue parameter
    6161                              % 1: effective grain radius [Gardner & Sharp, 2009]
    62                               % 2: effective grain radius [Brun et al., 2009]
     62                              % 2: effective grain radius [Brun et al., 2009], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)
    6363                              % 3: density and cloud amount [Greuell & Konzelmann, 1994]
    6464                              % 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
    6565
    66                 swIdx  = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
     66                swIdx  = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, with snow density (taken from Bassford, 2004))
    6767
    6868                denIdx = NaN; %densification model to use (default is 2):
     
    227227                        md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1400,'size',size(self.Ta));
    228228                        md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'size',size(self.Ta));
    229                         md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',100,'size',size(self.Ta));
     229                        md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',200,'size',size(self.Ta));
    230230                        md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1,'size',size(self.Ta));
    231231
     
    330330                                            '0: direct input from aValue parameter',...
    331331                                            '1: effective grain radius [Gardner & Sharp, 2009]',...
    332                                             '2: effective grain radius [Brun et al., 2009]',...
     332                                            '2: effective grain radius [Brun et al., 2009], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)',...
    333333                                            '3: density and cloud amount [Greuell & Konzelmann, 1994]',...
    334334                                            '4: exponential time decay & wetness [Bougamont & Bamber, 2005]'})
     
    364364                        end
    365365
    366                         fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1]');
     366                        fielddisplay(self,'swIdx','apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, with snow density (taken from Bassford, 2004)]');
    367367                        fielddisplay(self,'denIdx',{'densification model to use (default is 2):',...
    368368                                            '1 = emperical model of Herron and Langway (1980)',...
  • issm/trunk-jpl/src/m/classes/SMBgemb.py

    r25313 r25396  
    6464        #settings:
    6565        self.aIdx                   = np.nan    # method for calculating albedo and subsurface absorption (default is 1)
    66         self.swIdx                  = np.nan    # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
     66            # 0: direct input from aValue parameter
     67            # 1: effective grain radius [Gardner & Sharp, 2009]
     68            # 2: effective grain radius [Brun et al., 2009], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)
     69            # 3: density and cloud amount [Greuell & Konzelmann, 1994]
     70            # 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
     71
     72        self.swIdx                  = np.nan    # apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1, with snow density (taken from Bassford, 2004))
    6773        self.denIdx                 = np.nan    # densification model to use (default is 2):
     74            # 1 = emperical model of Herron and Langway (1980)
     75            # 2 = semi-emperical model of Anthern et al. (2010)
     76            # 3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)
     77            # 4 = DO NOT USE: emperical model of Li and Zwally (2004)
     78            # 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
     79            # 6 = Antarctica semi-emperical model of Ligtenberg et al. (2011)
     80            # 7 = Greenland semi-emperical model of Kuipers Munneke et al. (2015)
     81
    6882        self.dsnowIdx               = np.nan    # model for fresh snow accumulation density (default is 1):
     83            # 0 = Original GEMB value, 150 kg/m^3
     84            # 1 = Antarctica value of fresh snow density, 350 kg/m^3
     85            # 2 = Greenland value of fresh snow density, 315 kg/m^3, Fausto et al. (2008)
     86            # 3 = Antarctica model of Kaspers et al. (2004)
     87            # 4 = Greenland model of Kuipers Munneke et al. (2015)
     88
    6989        self.zTop                   = np.nan    # depth over which grid length is constant at the top of the snopack (default 10) [m]
    7090        self.dzTop                  = np.nan    # initial top vertical grid spacing (default .05) [m]
     
    155175                                                                 '0: direct input from aValue parameter',
    156176                                                                 '1: effective grain radius [Gardner & Sharp, 2009]',
    157                                                                  '2: effective grain radius [Brun et al., 2009]',
     177                                                                 '2: effective grain radius [Brun et al., 2009], with swIdx=1, SW penetration follows grain size in 3 spectral bands (Brun et al., 1992)',
    158178                                                                 '3: density and cloud amount [Greuell & Konzelmann, 1994]',
    159179                                                                 '4: exponential time decay & wetness [Bougamont & Bamber, 2005]']))
     
    186206            string = "%s\n%s" % (string, fielddisplay(self, 'K', 'time scale temperature coef. (7) [d]'))
    187207
    188         string = "%s\n%s" % (string, fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1]'))
     208        string = "%s\n%s" % (string, fielddisplay(self, 'swIdx', 'apply all SW to top grid cell (0) or allow SW to penetrate surface (1) [default 1, with snow density (taken from Bassford, 2004)]'))
    189209        string = "%s\n%s" % (string, fielddisplay(self, 'denIdx', ['densification model to use (default is 2):',
    190210                                                                   '1 = emperical model of Herron and Langway (1980)',
     
    305325        md = checkfield(md, 'fieldname', 'smb.dswrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 1400, 'size', np.shape(self.Ta))
    306326        md = checkfield(md, 'fieldname', 'smb.dlwrf', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, 'size', np.shape(self.Ta))
    307         md = checkfield(md, 'fieldname', 'smb.P', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 100, 'size', np.shape(self.Ta))
     327        md = checkfield(md, 'fieldname', 'smb.P', 'timeseries', 1, 'NaN', 1, 'Inf', 1, '> = ', 0, '< = ', 200, 'size', np.shape(self.Ta))
    308328        md = checkfield(md, 'fieldname', 'smb.eAir', 'timeseries', 1, 'NaN', 1, 'Inf', 1, 'size', np.shape(self.Ta))
    309329
Note: See TracChangeset for help on using the changeset viewer.