LIS Public Release 7.1rp1
Land Information System (LIS) Public Release 7.1rp1 (r5987:6395)
Version: LIS_public_release_7.1rp1
Release date: 12 Jan 2016
The Land Information System Framework (LISF) is released under the terms and conditions of the NASA Open Source Agreement (NOSA) Version 1.3. To download and/or use the LISF software you must agree to the LISF NOSA.
In order to receive breaking news and other important announcements, all users of LIS are encouraged to join the LIS mailing list. (No worries, it's low volume.)
Source Code
- LDT_public_release_7.1rp1
Download: LDT_public_release_7.1rp1 - LIS_public_release_7.1rp1
Download: LIS_public_release_7.1rp1
Change log
This patch release includes updates r5987:6395.
These updates consist of:
-
Add the NOSA for LIS
-
Add licenses for various components within LIS code
-
Updates for compiling
-
Add copyright notice
-
Update existing copyright notice
-
Correct an error regarding compiling with NetCDF3
-
Merge NU-WRF into LIS public 7.1
I merged updates through 3418 from NU-WRF's ^/code/trunk branch into LIS' ^/7/public7.1 branch.
I forgot to include the cpl_wrf_noesmf support for Noah 3.6.
-
Clean up noah271_setwrfexport.F90
I removed an unused variable.
-
Merge NU-WRF into LIS public 7.1
I merged updates through 3418 from NU-WRF's ^/code/trunk branch into LIS' ^/7/public7.1 branch.
These updates consist of:
-
Reintegrates v7_wrflis_fixes branch to trunk.
Captures WRF-LIS coupling fixes:
- Enables coupling to Noah 2.7.1, Noah 3.2, and Noah 3.6. Includes fixes to Noah 2.7.1 and Noah 3.2 export code to handle patches, adds export for Noah 3.6, and adds output support for all three LSMs.
- Now passing pure LWDOWN (w/o multiplying by surface emissivity) from WRF to LIS.
- Changed Noah 2.7.1 to multiply LWDOWN by emissivity internally (already done with newer Noah versions).
- Now copying LIS exported emissivity back to WRF array for input to radiation.
-
-
Correct ProTeX and LaTeX in the in-line documentation
-
Clean up lis.config file
-
Clean up LaTeX in lis.config file
-
Update MERRA-Land testcase
-
Update MERRA-Land documentation
-
Update timing logic in MERRA-Land reader
I ported the updated timing logic from the MERRA2 reader to the MERRA-Land reader.
-
Update MERRA2 documentation
-
Correct timing in MERRA2 reader when running at 15mn timestep
-
Clean up logic MERRA2 reader regarding when to read tomorrow's file
-
Update documentation to MERRA2 reader
-
Lift the time logic out of the copying do-loop
I lifted the logic that determines which hour indices to use and which bookends to use out of the do-loop that copies the local merraforc data into the global LIS_forc%metdata arrays.
-
Correct the merra2time1 and merra2time2 values
When running at an hourly time-step, where the LIS cycle time is on the hour, (00:00z, 01:00z, ...) the MERRA2 reader was incorrectly using weights of 1 and 0, when it should be using weights of 0.5 and 0.5.
-
Correct the bookends for MERRA2 reader
The MERRA2 reader, when running at a 1-hour time-step, was choosing the wrong hours to temporally interpolate between.
-
Add a "timenow" check to prevent copying forcing data at every timestep
-
Fix to MERRA2 reader
One statement was assigning forcing to LIS_forc(n,findex)%metdata1 when it should have used LIS_forc(n,findex)%metdata2.
-
Corrected the definition of ROOTMOIST for CLSM-F2.5.
Previously, the output included the surface soil moisture twice, as the second layer soil moisture already includes the entire root zone (from the top of soil down to the bottom of the root layer).
-
Fixed the VIC-4.1.2.l LSM routing routines.
The previous version incorrectly used the output interval in the conversion of the runoff units. This fix now uses the model timestep.
The other commits included in this revision are only very minor code clean-ups, and there are no changes in the routing output for the other LSMs.
-
Added direct output of Ground Water Storage (GWS) in LIS for the CLSM-F2.5 and Noah-MP-3.6 LSMs.
Note that the output of TWS in Noah-MP.3.6 is also changed in this version. Previously, this value was only the ground water, but now is correctly defined as the ground water, plus soil moisture, plus SWE, plus canopy interception - to equal the total Terrestrial Water Storage.
Also removed/refined a couple Noah-MP-3.6-specific output variables.
-
Updated the MERRA-Land metforcing reader in LIS to correct a problem with it in running a model with an hourly timestep.
Changes were made to the reader to accommodate this correction, not affecting it when running with a sub-hourly timestep.
-
Updated the LIS 7.1 public test cases by removing the obsolete parameter attribute tables (e.g., param_attribs.txt) where no longer needed and updated the text in the README files to reflect that removal, for each test case.
-
Corrected the hourly timestep issue with the MERRA-2 reader in LIS. Before, when running with an hourly model timestep, a problem in the code would cause a whole shift in a MERRA-2 daily file being read in.
This issue is now fixed, and the get_merra2 routine has been reorganized to support the fix. Extensive testing has been performed to make sure that any subhourly model timestep (e.g., 15-min, 30-minute) were not impacted much or not at all by the new code updates.
-
Renamed "routing_nldas" directories to "routing", as they will work with any router, not just the NLDAS router.
-
Update download scripts for the public testcases
-
Update internal testcases
-
A temporary update to the MERRA-Land reader, get_merraland routine, has been incorporated to check for when a LIS model timestep has been selected to be at an hour or greater.
Currently there is an error running at an hourly timestep and correction will be forthcoming in future releases of LIS and LDT.
-
Made update and a fix to the MERRA-2 metforcing reader routines:
- The "merra2files" routine in get_merra2.F90 has been updated to reflect the latest production stream of files (e.g., on discover and GES DISC), and
- reflects updated/corrected MERRA-2 production files, which changed the range of years for 300 and 400 year collections.
-
Update lis.config documentation
-
Update public testcases
-
Update Gaussian T126 testcase
-
bug fix to the pert readrestar routine
-
fixed the perturbation restart reading routine in smoother DA mode
snow update scheme in CLSMDA
fixes to irrigation in ensemble mode
-
Merge branches/jim/d7-mcw into 7/development
I reintegrated branches/jim/d7-mcw into 7/development.
This contains the preliminary MPI_COMM_WORLD related updates that Rocky Dunlap and Dan Rosen made for their NUOPC work.
-
Minor clean-up to the GMAO/GEOS5 seasonal forecast forcing reader.
-
- bug fixes related to the changes in the interpolation library
- changed the local buffers to be different than the global ones in the MPI_ALLGATHER statements
-
Correct length of ansa_filename
I also cleaned up some diagnostic log messages by adding trim around references to ansa_filename.
-
cleanups, renaming, fixes to HYMAP in GRACE-DA and offline modes
-
Made several improvements and fixes to the Noah-MP-3.6 LSM:
- Commented out unsupported Noah-MP-3.6 code to prevent crashes caused by "floating invalid" and "floating divide by zero"
- Added ability to use UMD vegetation with Noah-MP-3.6 LSM
- Added routing to Noah-MP-3.6 LSM
- Corrected output of LWnet - net longwave radiation at the surface
- Added Rainf, Snowf, CanopInt, and SubSnow to output variables
- Moved some Noah-3.6 log messages into the LIS logfile
- Ensured all allocated variables are properly deallocated
- Corrected typos and made small improvements to comments
-
Added routing to the Noah-3.2 LSM.
-
- Correct the output of units of Greenness in percentage.
- For the below list of LSMs, the Greenness should be an output of the LSM, rather than a simple output from the input LDT file: | CLSM F2.5 | HySSIB | Noah.2.7.1 | Noah.3.2 | Noah.3.3 | Noah.3.6 | NoahMP.3.6
-
Move the output of the LeafMass variable earlier, so it's with the other Mass variables for dynamic vegetation.
-
Placed checks in for elevation, slope-aspect and both corrections to see if all correct options are selected by the user.
-
Minor updates to the NLDAS-2 metforcing reader, including replacing trim() in if/then/else blocks, replaced some if/then blocks with case select, and assigned LIS universal undefined values to initialize forcing read variables.
Improved NLDAS-2 rainfall and convective rainfall fields around island/coastal areas, when the dataset is downscaled to higher resolutions.
-
Made additional fix to LIS_metforcing module to make sure undefined values are not factored in to wind-magnitude calculation for units: KM/DAY
-
Minor fix to the Wind magnitude calculated in the LIS_metforcingMod file: whenever the u- or v-wind component is undefined, the wind magnitude is set to undefined, otherwise calculate it.
-
added spatial downscaling capability (using precip climatology) for RFE2gdas
-
bug fix to allow gridded fields to be output when min/max option is turned on in the output attributes table and when the outputs are written in NetCDF format.
-
Minor updates/clean-up to the GDAS forcing files
-
Added fixes to the ECMWF forcing reader, made by Bailing Li and Hiroko Beaudoing.
A memory leak bug was fixed in read_ecmwf.F90 routine. Furthermore, the read routine did not have right handling of missing data, which was causing NaN in precipitation and other fields. A fix for checking NaN's was originally submitted, but actually the root of the problem turned out to be the missing file handling issue.
The code has been checked and tested.
-
Minor update to the LIS LSM irrigation plugin routine
-
- bug fixes to the SMOS reader for CDF matching support and for running in parallel
- bug fixes to the PILDAS forcing reader
- cleanups to the Noah-MP config reading options
-
LIS configuration file has been changed for LIS-Noah-MP interface.
-
Some kludge fixes have been added to Noah-MP code.
Also, LIS-Noah-MP interface has been changed as the following:
-
In NoahMP36_readcrd.F90
"NOAHMP36 dveg_opt" has been replaced with "NOAHMP36 option of vegetation model""NOAHMP36 crs_opt" has been replaced with "NOAHMP36 option of canopy stomatal resistance""NOAHMP36 btr_opt" has been replaced with "NOAHMP36 option of soil moisture factor for stomatal resistance""NOAHMP36 run_opt" has been replaced with "NOAHMP36 option of runoff and groundwater""NOAHMP36 sfc_opt" has been replaced with "NOAHMP36 option of surface layer drag coefficient""NOAHMP36 frz_opt" has been replaced with "NOAHMP36 option of supercooled liquid water""NOAHMP36 inf_opt" has been replaced with "NOAHMP36 option of frozen soil permeability""NOAHMP36 rad_opt" has been replaced with "NOAHMP36 option of radiation transfer""NOAHMP36 alb_opt" has been replaced with "NOAHMP36 option of snow surface albedo""NOAHMP36 snf_opt" has been replaced with "NOAHMP36 option of rainfall and snowfall""NOAHMP36 tbot_opt" has been replaced with "NOAHMP36 option of lower boundary of soil temperature""NOAHMP36 stc_opt" has been replaced with "NOAHMP36 option of snow and soil temperature time scheme"
Please modify your LIS Noah-MP configuration file accordingly.
- Configuration entry "NOAHMP36 st_flag" has been removed, set to 1 by default (1=soil, 2=lake)
- Configuration entry "NOAHMP36 sc_idx" has been replaced with "NOAHMP36 soil color index"
- Configuration entry "NOAHMP36 ice_flag" has been removed, set to 0 by default (no ice)
- Configuration entry "NOAHMP36 iz0tlnd" has been replaced with "NOAHMP36 CZIL option (iz0tlnd)"
- Configuration entry "NOAHMP36 sldpth" has been replaced with "NOAHMP36 soil layer thickness"
- Configuration entry "NOAHMP36 soil_tbl_name" has been replaced with "NOAHMP36 soil parameter table"
- Configuration entry "NOAHMP36 gen_tbl_name" has been replaced with "NOAHMP36 general parameter table"
- Configuration entry "NOAHMP36 noahmp_tbl_name" has been replaced with "NOAHMP36 MP parameter table"
- Configuration entry "NOAHMP36 landuse_tbl_name" has been replaced with "NOAHMP36 landuse parameter table"
- Configuration entry "NOAHMP36 nsoil" has been replaced with "NOAHMP36 number of soil layers"
- Configuration entry "NOAHMP36 nsnow" has been replaced with "NOAHMP36 number of snow layers"
- Configuration entry "NOAHMP36 landuse_scheme_name" has been removed. LIS reads it from LDT parameter file.
- Configuration entry "NOAHMP36 soil_scheme_name" has been removed. LIS reads it from LDT parameter file.
- Configuration entry "NOAHMP36 nslcats" has been removed. LIS reads it from LDT parameter file.
- Configuration entry "NOAHMP36 nlucats" has been removed. LIS reads it from LDT parameter file.
- Configuration entry "NOAHMP36 nslpcats" has been removed. LIS reads it from LDT parameter file.
- Configuration entry "NOAHMP36 urban_vegetype" has been removed. LIS reads it from LDT parameter file.
-
-
Update ldt.config files for NLDAS2-e public testcase
-
GDAS terrain correction
I implemented Hiroko Kato Beaudoing's GDAS elevation correction. The longitudinal resolutions for the various T grids were rounded. Hiroko corrected them with more precise values.
This resolves in issue regarding a slight discontinuity in the GDAS elevation fields occurring near the prime meridian.
See Trac Ticket #126.
-
Merge NU-WRF into LIS public 7.1
I merged updates through 3271 from NU-WRF's ^/code/branches/features/v7_wrflis_quilting branch into LIS' ^/7/public7.1 branch.
These updates consist of:
- Accept MPI communicator from WRF
-
Document the lisconfig_generic routine
-
Remove LIS_DElayout
I removed LIS_DElayout. It was not used.
-
Remove old lisconfig_* routines
-
Combine the lisconfig_* routines into one
I combined the lisconfig_offline, lisconfig_coupled1, and lisconfig_coupled2 routines into lisconfig_generic.
-
Apply the diff file from Rocky Dunlap
-
Remove the diff file from Rocky Dunlap
-
Add the diff file from Rocky Dunlap
This contains the preliminary MPI_COMM_WORLD related updates that Rocky Dunlap and Dan Rosen made for their NUOPC work.
-
Add VIIRS GVF testcase
-
Add sport.ctl file to SPoRT GVF testcase
-
Add SPoRT GVF testcase
-
Add support to diagnose greenness in units of percentage
-
Update ldt.config files for the wrfout testcase
-
Reformat text
-
Add a nest loop to the metForcGen_interp_finalize routine
-
Correct call to read_gfs
The argument findex was missing from the call.
Thanks to Jon Case.
-
Add additional GrADS descriptor files to the Public GeoWRSI2 testcase
-
Update the merra2 testcase
-
Use \newline instead of a double backslash
GNU's cpp treats a backslash character at the end of a line as indicating line continuation; i.e., the backslash at the end of a line escapes the end-of-line marker.
LaTeX uses a double backslash, \\, to indicate a new line. Double backslashes were used throughout the code in the ProTeX (LaTeX) in-line documentation. I replaced the double backslashes with the new line command, newline.
A misplaced backslash character could cause the line following the backslash to be eaten. In the following test program (saved as t.F90), GNU's cpp would see line 4 as
!print*,"hello "
program test ! I want to see 'hello world' ! but this program prints only 'world' !\ print*,"hello " print*,"world" end program test
-
Correct the assignment of the veg_fracs array (in VIC 4.1.1 and 4.1.2.l)
The veg_fracs array is assigned from the LIS_LMLC%landcover array, which is longer than the veg_fracs array. I replaced the implicit extents indicator, :, with an explicit do-loop to filter out water points.
-
Add check for LIS_ARCH=linux_gfortran
-
Remove "warning: implicit declaration of function" messages
When using functions from the C standard library, you must include the appropriate standard header in the source code.
Examples:
For strcpy, strcmp, and strlen, you must include:
#include <string.h>
For puts, perror, and printf, you must include:
#include <stdio.h>
For exit, abs, malloc, free, you must include:
#include <stdlib.h>
-
Adjust logic in geowrsi2_readInputSettings.F90 to prevent gCoords from being deallocated twice
-
Use the "L" edit descriptor for logical variables
-
Use .false./.true. to set a logical variable
Logical variables should be set using .false. or .true. values. Do not use 0 or 1.
Bad:
gCalcSOSmode = 0
Good:
gCalcSOSmode = .false.
-
Bug fix: correct call to reshape function
-
Update big/little endian flags for compiling with gfortran
-
Compile with gfortran
gfortran raised several errors. Please read the rest of this commit message for examples of the errors and corrective actions.
Example 1.:
Message:
../core/LIS_histDataMod.F90:1523.33: n,2,ntiles,(/"kg/m2","mm"/),1,(/"-"/),1,1,1,& 1 Error: Different CHARACTER lengths (5/2) in array constructor at (1)
Correction:
Strings within an array constructor must have the same length. Use spaces to pad the shorter strings.
Bad:
call register_dataEntry(LIS_MOC_LSM_COUNT,LIS_MOC_SNOWICE,& LIS_histData(n)%head_lsm_list,& n,2,ntiles,(/"kg/m2","mm"/),1,(/"-"/),1,1,1,& model_patch=.true.)
Good:
call register_dataEntry(LIS_MOC_LSM_COUNT,LIS_MOC_SNOWICE,& LIS_histData(n)%head_lsm_list,& n,2,ntiles,(/"kg/m2","mm "/),1,(/"-"/),1,1,1,& model_patch=.true.)
Example 2.:
Message:
../rtms/LIS-CMEM3/pe/CMEM3_set_pedecvars.F90:88.39: real :: vdata(LIS_rc%npatch(n,LIS_rc%lsm_index)) 1 Error: Symbol 'n' is used before it is typed at (1)
Correction:
Variables must be declared before they are used. Here n must be declared before vdata because vdata references n.
Bad:
implicit none type(ESMF_State) :: DEC_State character*100 :: vname real :: vdata(LIS_rc%npatch(n,LIS_rc%lsm_index)) integer :: n
Good:
implicit none integer :: n type(ESMF_State) :: DEC_State character*100 :: vname real :: vdata(LIS_rc%npatch(n,LIS_rc%lsm_index))
Example 3.:
Message:
../surfacemodels/land/noahmp.3.6/NoahMP36_readrst.F90:27:0: error: token "." is not valid in preprocessor expressions #if (defined USE_NETCDF3 .OR. defined USE_NETCDF4) ^
Correction:
Do not Fortran syntax for logical operators in preprocessor statements.
Use && for .and.
Use || for .or.
Bad:
#if (defined USE_NETCDF3 .OR. defined USE_NETCDF4)
Good:
#if (defined USE_NETCDF3 || defined USE_NETCDF4)
Example 4.:
Message:
../metforcing/ecmwf/read_ecmwf.F90:546.16: if ( result1 .eq. .true. ) glbdata1(iv,c) = 0.0 1 Error: Logicals at (1) must be compared with .eqv. instead of .eq.
Correction:
Compare logicals with .eqv. not with .eq.
Bad:
if ( result1 .eq. .true. ) glbdata1(iv,c) = 0.0
Good:
if ( result1 .eqv. .true. ) glbdata1(iv,c) = 0.0
-
Light refactoring
-
Update flags for compiling with gfortran
-
Merge 7/development into 7/public7.0
I merged/cherry-picked r6042 from 7/development to 7/public7.1.
bug fixes to merra2
-
Merge NU-WRF updates into 7/public7.1
I manually merged commits r3033:3127 from the v7_lis71merge branch of the NU-WRF repository on progress, svn/nu-wrf/code/branches/features/v7_lis71merge, into LIS' 7/public7.1 branch.
These updates consist of:
- Correct nesting issues within LIS
-
Merge NU-WRF updates into 7/public7.1
I manually merged commits r3026:3032 from the v7_lis71merge branch of the NU-WRF repository on progress, svn/nu-wrf/code/branches/features/v7_lis71merge, into LIS' 7/public7.1 branch.
These updates consist of:
-
Disable the embedded (in LIS) wrf_error_fatal, wrf_message, and wrf_error_fatal3 routines when compiling coupled to NU-WRF.
The source for NoahMP 3.6 within LIS contains wrf_error_fatal, wrf_message, and wrf_error_fatal3 routines. These conflict with the routines contained within the WRF source.
I added a compile-time check to disable these routines within LIS when LIS is compiled with the COUPLED macro defined.
-
-
Remove duplicate rule from Makefile
-
Correct smootherDA running mode output
Due to a check to improve output efficiency, the smootherDA running mode was producing incorrect output for the first daily output (day 2) of each month.
This commit removes the
if(LIS_rc%DAincrMode(n).eq.1) then
statement from around the call to the LIS_surfaceModel_output(n) routine.
See Trac ticket #117.