2007-08-03:

   * module_sf_noahlsm.F:
	* Correct placement of comments in subroutine TDFCND
        * Removed spaces at the end of lines

2007-08-17
 
   * module_sf_noahlsm.F:
	* Correction of Q2SAT from mixing ratio to specific humidity
	* Addition of POTEVP, SNOPCX accumulation terms
  
2007-10-10

   * module_sf_noahlsm.F:
	* Commented out ETA assignment for ETP<0 in subroutine NOPAC 
 	after call SMFLX
	* Replace DF1 with DF1K in subroutine HRT 
	
2007-12-20

   * Added files (from 2.2.1 release):
        module_sf_urban.F
        GENPARM.TBL
        SOILPARM.TBL
        VEGPARM.TBL
        urban_param.tbl

2008-01-10

   * The module_sf_noahdrv.F, which is the driver for the noah lsm, is separated
     and the subroutine  LSM_PARM_INIT is no longer in use.
   * The module_sf_noahlsm.F is separated from the noah driver and contains
     only the sflx subroutine and below.
   * SMCDRY =0.4 is added for the simple urban model in module_sf_noahlsm.F
   * module_sf_urban.F is upgraded to have the Anthropogenic Heat (AH) effect.    
   * urban_param.tbl has the AH profile.    

2008-02-29

   * In module_sf_noahdrv.F, SFCPRS is replaced with PSFC (surface pressure)
     in the calculation of Q2SATI
   * In module_sf_noahlsm.F, subroutine SNOPAC, duplicate entry of ETNS is removed.
   * In module_sf_noahlsm.F, comments added for FFROZP, EMISSI, SOLNET 
   * In module_sf_noahlsm.F, USE module_sf_urban is moved to module_sf_noahdrv.F 

2008-03-19

   * EMBCK, background emissivity (a function of land-use type), is introduced in the 
     Registry (of WRF) and is treated in Noah similar to albedo. The changes include
     introduction of a local variable EMBRD. The affected subroutines are SFLX, ALCALC,
     CANRES, PENMAN, and SNOPAC.  

2008-04-08

  Make a version exactly the same as the recent WRFV3 release.  These changes should
  be inconsequential to general NOAH users.

   * module_sf_noahlsm.F:  Remove a couple of comments (documenting SOLNET and FFROZP)
     that did not make it into the WRF code.

   * SOILPARM.TBL:  The WRFV3 release has added a section which defines the STAS-RUC table 
     parameters.

   * VEGPARM.TBL:   The WRFV3 release has added a section which defines the USGS-RUC table 
     parameters.

2008-04-08 (again)

   * module_sf_noahlsm.F:  Put back the comments documenting SOLNET and FFROZP, which
     had not made it into the WRFV3 release.  Maybe we can get them into WRFV3.0.1.

2009-04-14
     Update to WRFV3.1 code:  Noah LSM version 3.1 has a number of changes as compared
     to version 3.0.

     Changes include:  

   * Capability to use MODIS land-use dataset for vegetation categories.  This 
     entailed many changes to make the land-use dataset flexible throughout WRF.
         * Added "NATURAL" category to VEGPARM.TBL, for the land-use category
           to use for the non-urban parts of urban points.  Previously hard-coded as
           category 10 in the Noah driver.
         * String length for strings describing land-use data sets and soil-category
           data sets has been increased from 4 characters to 256 characters.  This 
           allows for more descriptive names for land-use and soil-category data 
           sets.
         * The ISURBAN argument has been added to SFLX.  ISURBAN holds the index 
           number for the land-use category corresponding to urban points.  All 
           checks on the hard-coded USGS urban category 1 have been changed to 
           test on the value of ISURBAN.  ISURBAN now gets passed around to several
           subroutines below SFLX.

   * Snow albedo treatment following Livneh.  This is a major modification to 
     subroutine ALCALC.
        * New argument to SFLX:  SNOTIME1 holds the age of the snow on the ground,
          in seconds. (In-code documentation still needed for this.)
        * Albedo over snow now depends on the age of the snow on the ground.  Ground
          covered with new, fresh snow may have a high albedo; as the snow ages, the
          albedo is reduced.

   * Option for 2d LAI map to be used in Noah ....
        * New argument to SFLX:  RDLAI2D

   * File "urban_param.tbl" has been renamed to "URBPARM.TBL", to be consistent with
     the rest of the tables.

   * BUGFIX:  In subroutine SRT, infiltration calculation takes into account the
     time step in setting INFMAX = MIN (INFMAX,PX/DT).  Older code did not have the
     "/DX" term.

   * Glacial Ice ....  Some fairly significant changes to the treatment, here.
        * The meaning of the ICE flag variable in SFLX has been changed.  Now, 
          the settings are ICE=1 for a sea-ice point, and ICE=-1 for a glacial land
          point, and ICE=0 for a non-glacial land point.
        * Glacial land points and sea-ice points have smil moisture set to 1.0.
          (Both total and liquid values.  Should liquid part be set to 0.0?)
        * At glacial land points and seaice points, snow density is set to 0.2
          for cold permanent ice or new dry snow.
        * snow-cover fraction is unlimited over glacial land points.
        * Albedo of sea-ice is hard-coded to 0.80; emissivity is hard-coded to 
          0.98.  This is probably not good.  In reality, the Arctic and the 
          Antarctic behave quite differently, and each has its own annual trend.
        * Thermal conductivity over sea ice or glacial land points is set to the 
          snow conductivity value.
        * Subroutine HRTICE is modified to manage subsurface temperature tendency
          for both sea ice and glacial land points.  Diffusivities and heat 
          capacities are ajusted depending on whether its a glacial point or a 
          sea-ice point.
        * Call to SMFLX is skipped for sea-ice points or glacial land points.

   * Subroutine SNOPAC:  Potential evapotranspiration (ETP) depends on Richardson 
     Number (RIBB) -- to handle stable regimes a little better.
        * New argument to SFXL:  RIBB (In-code documentation still needed for this)

   * Background (i.e., snow-free) albedo, background emissivity, background 
     roughness-length, and Leaf Area Index are computed in SFLX, by scaling between
     climatological minimum and maximum values based on land-use category (new 
     VEGPARM.TBL), according to where an instantaneous green vegetation fraction 
     falls between a climatological minimum and maximum for GVF.  Values for 
     background emissivity (EMBRD), Leaf-area index (XLAI), background albedo (ALB),
     and background roughness length (Z0BRD) are computed in SFLX just after the 
     call to REDPRM.
        * USEMONALB now has to be passed into SFLX.
        * New arrays defined:  LAIMINTBL, LAIMAXTBL;  Remove LAITBL.
        * New arrays defined:  ALBEDOMINTBL, ALBEDOMAXTBL; remove ALBTBL.
        * New arrays defined:  Z0MINTBL, Z0MAXTBL; remove Z0TBL
        * New arrays defined:  EMISSMINTBL, EMISSMAXTBL
        * Subroutine REDPRM now returns LAIMIN, LAIMAX, ALBEDOMIN, ALBEDOMAX, 
          EMISSMIN, EMISSMAX, Z0MIN, Z0MAX, EMISSMIN, EMISSMAX.  Removed from REDPRM
          are Z0BRD, XLAI, and ALB.
        * The scaling is not applied for albedo if namelist option USEMONALB is set
          to .true.
        * The scaling is not applied for LAI if namelist option RDLAI2D is set to 
          .true.

   * Subroutine SFLX:  If the surface is largely snow covered (more than 97%), use
     the snow diffusivity. (BPRC)  

   * Subroutine PENMAN:  
     Scale latent heat used between snow-covered (latent heat of sublimation) and 
     snow-free (latent heat of vaporization) regions.  For glacial land or sea ice 
     regions, use latent heat of vaporization if Skin temperature T1 is greater than
     freezing

   * BUGFIX:  The code to determine whether the soil-moisture tendency will be
     solved with the single-step or the two-step process had some wrong unit 
     conversions which meant that the two-step process would be used only in 
     extremely heavy rainfall situations.  New code corrects this.  Also adds the
     (FAC2 > FLIMIT) test.
        * Subroutine FAC2MIT added, making FLIMIT dependent on hard-coded SMCMAX
          values.  If SOILPARM.TBL is changed, this will break FAC2MIT.

   * Limit the depth of the snow layer in computing soil heat flux (BPRC)

   * Over sea-ice points and glacial land points, limit the depth of the snow layer
     in computing soil heat flux (BPRC)

   * Test on some trace value of snow, instead of zero value, for computing snow
     density.  This may prevent some crazy values caused by a division by something
     near to zero. (BPRC) (SNEQV)

   * Subroutine WDFCND:  Computation of FACTR1 modified, and the maximum value for 
     FACTR1 is limited:  FACTR1 cannot exceed FACTR2.
               --- What are FACTR1 and FACTR2?
               --- What's a good generic way do describe this change?

   * Runoff updated over non-glacial land points. (RUNOFF3,RUNOFF2 setting in SFLX?)
     Over glacial land or sea ice, runoff goes directly to surface runoff RUNOFF1.

   * Adjustment in NOPAC of ETA setting if ETP <= 0.

   * The "LOCAL" variable (for REDPRM settings) no longer used.

   * FLX3 initialized to zero in the case of shallow snow which sublimates.

   * Subroutine TRANSP:  Dimension for GX no longer hard-coded.

   * module_sf_noahdrv.F

        * Include BEP multi-layer urban routine

        * Change variable UCMCALL to sf_urban_physics (naming convention consistent
          with other WRF options)

        * New arguments to LSM:
              ISURBAN, ISICE, MMINLU, LAI, SNOTIME, XICE_THRESHOLD, RDLAI2D,
              USEMONALB, RIB, NOAHRES, and a large number of arrays for
              BEP Multi-layer urban model.

        * Instead of testing on XICE == 1, or XICE > 0.5, or such, we test on 
          XICE >= XICE_THRESHOLD.  This gives us more flexibility for treating
          sea-ice in this routine and others.

        * Interpretation of the flag variable ICE has changed.  Now:
              ICE == -1 :: glacial (land) ice point
              ICE ==  0 :: land (non-glacial) point
              ICE ==  1 :: sea-ice point

        * Change saturation mixing ratio calculation

        * For urban physics, do not test on VEGTYP == 1, but test on 
          VEGTYP == ISURBAN.  This gives us more flexibility in defining
          our land-use/vegetation categories (e.g., we have the option to 
          use MODIS categories.)

        * Add the option to read XLAI from a 2-dimensional array passed
          into LSM, rather than use tables based on vegetation category.

        * Compute the residual of Noah LSM energy budget.

        * Pass the proper longwave into subroutine urban

        * Read the new, expanded VEGPARM.TBL

   * urban_param.tbl has been completely revised, and renamed to URBPARM.TBL.  A number
     of terms that were set in urban_param.tbl are now computed internally from the 
     settings in URBPARM.TBL

   * module_sf_urban.F
        
        * BB formulation from Inoue (1963)

        * Finish some shortwave calculations for the shadow case.

          
   
------------------------------------------------------------------------------
2010-05-19:  Changes to Noah LSM version 3.2 since version 3.1
------------------------------------------------------------------------------

   * Z0 for snow cover

       - Roughness length Z0 over snow-covered surfaces has been modified
         (subroutine SNOWZ0) to account for the accumulation of snow
         burying the surface features which contribute to roughness.

         An "effective" roughness length for the snow-covered surface is
         computed, Z0EFF.  For deep snow, Z0EFF is set to 0.001 (deep snow
         covering the roughness features of the surface).  For shallower
         snow, Z0EFF is set to the snow-free roughness length, Z0BRD,
         reduced by SNOWH/7.

         To account for fractional snow cover, the final Z0 term is
         computed as a weighted average between the snow-free Z0BRD value
         and the effective snow albedo, Z0EFF.

   * LVCOEF:

       - The surface albedo in the presence of snowcover (subroutine
         ALCALC) is computed following Livneh.  In version 3.2, this has
         been implemented with a user-definable coefficient, LVCOEF, set
         in file GENPARM.TBL.  LVCOEF should range between zero and one.

         The Livneh scheme boosts the snow albedo toward 85%, then reduces
         it according to the age of the snow.  LVCOEF controls how much
         the albedo is boosted toward 85%.  A default value LVCOEF=0.5
         will have the same results as in version 3.1, i.e., an average of
         the input SNOALB (which tends to range from around 50% to around
         75%) and 85%.  Values lower than 0.5 will tune this more toward
         the incoming SNOALB (and ultimately lower albedos).  Values
         greater than 0.5 will tune this more toward 85% (and ultimately
         higher albedos).

   * SMAV:

       - SMAV: Soil moisture availability at each soil layer, computed as a
         fraction between the wilting point SMCWLT (SMAV=0.0) and
         saturation soil moisture SMCMAX (SMAV=1.0).  No effect on model
         results.  Diagnostic field output in WRF as "SMCREL: Relative soil
         moisture".

   * FLX1:

       - The FLX1 term needs to account for the exchange of heat required
         to change the temperature of falling precipitation from air
         temperature to skin temperature.  This exchange is considered in
         computing fluxes and skin temperature, but for rain events, was
         not included in the budget term FLX1.  So the energy budget would
         show large residual values for rain events.  This correction has
         no effect on the model integration, but will make the budget
         calculations which use FLX1 more accurate.

   * DTOT:

       - Polar modification: over sea/land ice points, DTOT is limited so
         as not to effectively shut off heat exchange between soil (i.e.,
         ice) layers and the surface.  In SNOPAC, this limit was applied
         regardless of surface type (ice or land).  In Version 3.2, this
         has been corrected to apply only to sea/land ice points.  Could
         have some effect on results in areas of deep snow.

   * RC:

       - Canopy Resistance, RC, normally set in the call to subroutine
         CANRES, is set to zero if CANRES is not called because SHDFAC is
         0.  This change should have no effect on model integration, but
         since RC is an output variable, this change insures that the field
         is initialized where there is no vegetation.  This was not an
         issue for Noah as coupled to WRF, but was causing troubles in some
         standalone applications of Noah LSM.

------------------------------------------------------------------------------
2011-04-27:  Changes to Noah LSM version 3.3 since version 3.2
------------------------------------------------------------------------------

      * module_sf_noahlsm.F

       - Apply DF1 conductivity change only for permanent land ice, 
         not for both land ice and sea ice.

       - SHDFAC becomes INTENT (INOUT) in subroutine REDPRM, because
         some compilers can be very disturbed if an INTENT(OUT) variable
         is not necessarily set in the subroutine.

     * module_sf_noahdrv.F

       - Activate time-varying roughness length, which had been deactivated.

       - Correct the output of underground runoff, which had been double
         counting a term.

    * URBPARM.TBL

       - Revert to earlier version of URBPARM.TBL

------------------------------------------------------------------------------
2012-04:  Changes to Noah LSM version 3.4 since version 3.3
------------------------------------------------------------------------------

   * Removed sea-ice code from Noah LSM.  Not a physics change but a
     code-reorganization move.  

       - module_sf_noahlsm.F

            + Removed code blocs that are active only for sea-ice
              points; replaced the sea-ice and glacial ice HRTICE
              routine with HRTICE_GLACIAL specific for glacial ice.

       - module_sf_noahdrv.F

            + Skip the call to SFLX for sea-ice points.

       - new source-code files "module_sf_noah_seaice_drv.F" and
         "module_sf_noah_seaice.F" contain the driver layer and the
         physics layer for the sea-ice code that used to be in
         module_sf_noahdrv.F and module_sf_noahlsm.F

------------------------------------------------------------------------------
2012-08:  Changes to Noah LSM version 3.4.1 since version 3.4
------------------------------------------------------------------------------

   * Removed glacial-ice code from the Noah LSM SFLX routines.  Not a
   * physics change but a further code-reorganization move.  Glacial
     ice is now its own module called from the Noah Driver code at
     glacial points.

     - module_sf_noahdrv.F:

          + At glacial points, skip the subroutine call to SFLX, and
            call new subroutine SFLX_GLACIAL instead.

     - module_sf_noahlsm.F

          + Remove glacial-specific blocks of code.  Glacial-specific
            code has been moved to new module
            module_sf_noahlsm_glacial_only.F

     - new source-code file module_sf_noahlsm_glacial_only.F contains
       glacial-specific code that used to be in module_sf_noahlsm.F
