Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
f47fd18
Committing new crop tile capability in LDT, which appends
karsenau Jun 6, 2019
a1b558d
Adding MIRCA2000 crop paramter, AQUASTAT-GRIPC irrigation type, and G…
hkato1 Jun 6, 2019
3218667
Resolved merge confilict by taking Kristi's modifications
hkato1 Jun 6, 2019
147da80
Add Irrigation fraction type option (for GRIPC)
karsenau Jun 10, 2019
aa3bf25
Merge branch 'karsenau/feature/irrigation' into feature/irrigation to…
hkato1 Jun 11, 2019
d5ee1cd
Adding MIRCA2000 crop data, GIA irrigaiton fraction data, and AQUASTA…
hkato1 Jun 29, 2019
0109d82
Commiting irrigation datasets merging and blending land cover types a…
hkato1 May 7, 2020
8a2c277
A bug fix related to using MIRCA as crop type data and turning off cr…
hkato1 May 21, 2020
563c481
clean up and add documentation
hkato1 Jun 9, 2020
4f5683e
Resolved merge conflict by incorporating both suggestions.
hkato1 Jun 9, 2020
5079d8e
minor bug fix
hkato1 Nov 5, 2020
6863bc8
irrigation updates following the new merging of irrigation/crop infor…
hkato1 Jan 11, 2021
5c6c815
Merge branch 'master' into feature/irrigation
hkato1 Jan 11, 2021
ec1d064
bug fix for using cropcalendar flag, if statement has to be in the do…
hkato1 Feb 15, 2021
289013d
bug fix for flood irrigation scheme: reset irrigation rate to zero ou…
hkato1 Feb 25, 2021
2f37df0
Sarith's fix for plant/harvest day determination when more than one s…
hkato1 Mar 9, 2021
5447850
merging with 'master'
hkato1 Mar 12, 2021
3a128d0
Added use of US county irrigation type fraction data when AQUASTAT so…
hkato1 Apr 7, 2021
101b7fe
Merge branch 'master' into feature/irrigation
hkato1 Apr 7, 2021
e64b8e6
Fixed country field to include all 256 countries and assign missing v…
hkato1 Apr 8, 2021
9222725
Added reading County and Country fields from lis_input and prepped fo…
hkato1 Jun 24, 2021
ed9e828
Merge branch 'master' into feature/irrigation to sync up with master
hkato1 Oct 27, 2021
419a95d
Initial implementation of Sarith's code for crop specific irrigation …
hkato1 Nov 29, 2021
d7a65cf
Refinment for Matt's crop irrigation type assignment algorithm by Sar…
hkato1 Dec 22, 2021
0a88376
Resolved conflicts in LDT for Wanshu's groundwater irrigation modific…
hkato1 Jan 14, 2022
bc4fa05
Resolved more conflicts in LDT/LIS for Wanshu's groundwater irrigatio…
hkato1 Jan 24, 2022
cf94d33
Moving Wanshu's GW sections in sprinkler/sprinkler_irrigationMod to t…
hkato1 Jan 24, 2022
6c5f72b
Updating Sarith's latest changes (as of Jan 7, 2021) in getCropIrrigT…
hkato1 Feb 4, 2022
5e5fd3a
Merge branch 'master' into feature/irrigation
hkato1 Feb 4, 2022
2a898a6
Changed irrigation specific variables type from LIS_rc to LIS_irrig_s…
hkato1 Mar 22, 2022
1e8e0a0
Major modification to the irrigation module structure written by Sari…
hkato1 Mar 22, 2022
f503ad5
These routines are not yet updated for the new irrigation model struc…
hkato1 Mar 22, 2022
954b1f6
For sprinkler irrigation, irrigation amount needs to be removed from …
hkato1 Mar 22, 2022
7cfba15
Merge branch 'master' into feature/irrigation
hkato1 Mar 22, 2022
147d379
fixes for accomodating CROPMAP cropclass scheme and backward compatib…
hkato1 Apr 7, 2022
8f40b39
fix and relax root depth and moisture availability check, so that the…
hkato1 Apr 14, 2022
61122d4
removing :q! file
hkato1 Apr 14, 2022
46f14ef
added comments for flood and accounted for irrigation amount added to…
hkato1 May 24, 2022
660194a
Bug fixes for various irrigation options. 1) crop calendar option in …
hkato1 Jun 28, 2022
1f1d631
Irrigation updates for 1) fixing irrigation amount output for flood t…
hkato1 Nov 8, 2022
7832ce6
merged and resolved the conflict and deleted files
hkato1 Nov 9, 2022
1de88c2
Merge branch 'master' into feature/irrigation
hkato1 Nov 9, 2022
39b2703
Fixed schedule option for Flood and Drip to be irrigation event frequ…
hkato1 Feb 2, 2023
34ce91f
Separated irrigated water output to irrigation rate input and amount …
hkato1 Feb 3, 2023
d290e84
Merge branch 'master' into feature/irrigation
hkato1 Mar 7, 2023
f2e1a46
Enable irrigation with Noah3.6 and Noah3.9. Fixed frozen soil tempera…
hkato1 Mar 10, 2023
50ac8af
Replaced the existing frozen temperature check in Noah3.3/3.6/3.9 wit…
hkato1 May 25, 2023
046fc69
Merge branch 'master' into feature/irrigation
hkato1 May 25, 2023
a5163cc
Changed soil moisture availability formula back to the original one. …
hkato1 Jul 10, 2023
ddb23ea
Took care of LIS side of code handling for IRRIGATEDWATER variable cr…
hkato1 Jul 14, 2023
d0c03a6
Sprinkler schedule is changed from keep irrigationg the entire 2.5-da…
hkato1 Nov 21, 2023
de2aca0
Resolved merge conflict (minor)
hkato1 Nov 21, 2023
93d231b
Changes included in the paper submitted on 6/14/2024. LDT modificatio…
hkato1 Jun 18, 2024
eb3e13b
update flood/paddy irrigation application to the soil moisture over t…
hkato1 Aug 31, 2024
f7ef0a7
Merge branch 'master' into feature/irrigation, resolved confilicts
hkato1 Aug 31, 2024
0bef1a7
Changes included in the paper submitted to JAMES. Fixed paddy irriga…
hkato1 Dec 23, 2025
ee42269
Resolved a conflict merging
hkato1 Dec 23, 2025
338d602
Code clean up and update config documentation for the irrigation opti…
hkato1 Jan 9, 2026
58892d2
Merge branch 'master' into feature/irrigation
hkato1 Jan 9, 2026
4b12437
Updated certain character vars to use LDT_CONST_PATH_LEN.
emkemp Jan 13, 2026
137d9fe
Revised some write and print statements; replaced stop with LDT_endrun.
emkemp Jan 13, 2026
c436c9e
Reformatting and removal of dead code.
emkemp Jan 13, 2026
97b97b4
Reformatting, correcting write/print/stop statements, removed dead code.
emkemp Jan 14, 2026
47ae013
Replaced preprocessor macros used for error checking.
emkemp Jan 14, 2026
e648115
Updated copyright blocks for new source code files.
emkemp Jan 14, 2026
de54f4c
Removed environment module file.
emkemp Jan 14, 2026
0655796
Removed unnecessary .pyc files.
emkemp Jan 14, 2026
a0517b1
Removed unnecessary .pyc files.
emkemp Jan 14, 2026
d2697e8
Removed unneeded .pyc files.
emkemp Jan 14, 2026
d559f16
Removed draft copy of plot_utils.py.
emkemp Jan 14, 2026
d60f3b6
Tweaks to pacify Intel Fortran compiler strict checks.
emkemp Jan 15, 2026
445726f
Tweaks to pacify the Intel Fortran compiler strict checks.
emkemp Jan 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
*.o
*.mod
*.d
ldt/**/LDT*
lis/**/LIS*
lvt/**/LVT*
**/**/configure*
lis/make/Filepath
lis/make/user.cfg
lis/runmodes/nuopc_cpl_mode/VERSION
lis/runmodes/nuopc_cpl_mode/liblis_nuopc.a
144 changes: 127 additions & 17 deletions ldt/configs/ldt.config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1156,6 +1156,7 @@ Incorporate crop information: .false.
|UMDCROPMAP |UMD+CROPMAP crop type map. For more info, please refer to Ozdogan et al. (2010; JHM).
|Monfreda08 |FAOSTAT05 crop type maps. For more info, please refer to Monfreda et al. (2008).
|CONSTANT |Ability to set a constant crop type for a set classification.
|MIRCA |MIRCA2000 crop type maps. For more info, please refer to Portmann et al. (2010).
|===

.Example _ldt.config_ entry
Expand All @@ -1173,6 +1174,8 @@ Crop type data source: "none"
|CROPMAP |19 classes; named by Ozdogan et al.(2010), used Leff et al.(2004)
|FAOSTAT01 |19 classes; Used by Leff et al.(2004), considered obsolete
|FAOSTAT05 |175 classes; Used by Monfreda et al. (2008)
|MIRCA |26 classes; Used by Portmann et al. (2010)
|MIRCA52 |26 classes for irrigated and rainfed, total of 52 classes.
|===

.Example _ldt.config_ entry
Expand All @@ -1187,27 +1190,24 @@ Crop classification: "FAOSTAT01"
Crop library directory: "../LS_PARAMETERS/crop_params/Crop.Library.Files/"
....

`Assign crop value type:` specifies the type of crop presence, such as a "`single`" crop or "`multiple`" crops given within a gridcell. Currently, only the "`single`" option is supported.
`Assign crop value type:` specifies the type of crop presence, such as a "`single`" crop or "`multiple`" crops given within a gridcell. Currently, only the "`single`" option is supported. "`none`" assigns crop types specified by `Crop type data source:`.

.Example _ldt.config_ entry
....
Assign crop value type: "none"
....

`Assign single crop value:` specifies whether to assign a single crop value from an actual crop library inventory, such as FAOSTAT01, which is also known as the CROPMAP classification used in Ozdogan et al. (2010). By turning on this option (.true.), you can they specify what type of crop you want to assign, like "`maize`" to the user-specified option, `Default crop type:`. If "`maize`" was entered, then wherever the landcover map indicated a generic "`cropland`", the crop type field would be given a dominant "`maize`" type.

[cols="<,<",]
|===
|Value |Description

|.false. |Do not assign a single crop class to the crop type field.
|.true. |Assign a single crop type, like "`maize`" to the crop type field.
|none | no crop type
|single | force single crop type
|multiple | force multiple crop type
|===

.Example _ldt.config_ entry
....
Assign single crop value: .true.
....
By setting `Assign crop value type:` "`single`", you can specify what type of crop you want to assign, like "`maize`" to the user-specified option.
`Default crop type:`. If "`maize`" was entered, then wherever the landcover map indicated a generic "`cropland`", the crop type field would be given a dominant "`maize`" type.


`Default crop type:` specifies the default crop type that the user can enter and can be used in conjunction with assigning a single crop type value (see above).

Expand All @@ -1232,12 +1232,9 @@ Crop type file: ./irrigation/conus_modis/UMD_N125C19.1gd4r
|none |Data is on same grid as LIS output domain
|mode |Upscale by selecting dominant type for each gridcell
|tile |Read in tiled data or upscale by estimating gridcell fractions
|average |Upscale by averaging pixels for each gridcell
|===

NOTE: LIS will be expecting "`mode`" or dominant crop type per
gridcell at this time. Future versions will include landcover-crop tile
options.

.Example _ldt.config_ entry
....
Crop map spatial transform: mode
Expand All @@ -1248,8 +1245,9 @@ Crop map spatial transform: mode
[cols="<,<",]
|===
|Value |Description

|none |not used
|GRIPC |Irrigation map, by Salmon (2013).
|AQUASTAT |Irrigated areas by type (drip, flood, and sprinkler), by FAO.
|===

.Example _ldt.config_ entry
Expand All @@ -1259,7 +1257,7 @@ Irrigation type data source: "none"

`Irrigation type map:` specifies the location of an irrigation type file. This file contains different irrigation categories (types) that can be used in conjunction with an irrigation fraction map.

A special land-use/irrigation-related map, known as the Global Rain-Fed, Irrigated, and Paddy Croplands (GRIPC) Dataset (Salmon, 2013), has also been implemented as an option to LDT. Currently, no models in LIS utilize this map but opportunities exist for the user community to utilize for their landcover and irrigation modeling needs.
A special land-use/irrigation-related map, known as the Global Rain-Fed, Irrigated, and Paddy Croplands (GRIPC) Dataset (Salmon, 2013), has also been implemented as an option to LDT. GRIPC provides crop water resources whose pixels are labeled as 1 = Rain-fed croplands, 2 = Irrigated croplands, 3 = Paddy croplands, and 4 = Not cropped. The Irrigated croplands need to be mapped into irrigation method types via `Assign irrigation type:` and `Assign sprinkler fraction:`.

.Example _ldt.config_ entry
....
Expand All @@ -1283,7 +1281,29 @@ Irrigation type map: ../LS_PARAMETERS/irrigation/irrigtype_map.bin
Irrigation type spatial transform: mode
....

`Irrigation fraction data source:` specifies the irrigation method type dataset source to be read in. Current source options include:
`Assign irrigation type:` specifies irrigation types of sprinkler, drip, and flood for corresponding crop water source information provided by GRIPC. Applicable when GRIPC is chosen for `Irrigation type data source:`.

[cols="<,<",]
|===
|Value |Description
|sprinkler | assign as sprinkler
|drip | assign as drip
|sprinkler+drip | assign a fraction as sprinkler specified in `Assign sprinkler fraction`
|===

.Example _ldt.config_ entry
....
Assign irrigation type: "sprinkler"
....

`Assign sprinkler fraction:` specifies a fraction of sprinkler+drip, ranging 0-1.

.Example _ldt.config_ entry
....
Assign sprinkler fraction: 0.5
....

`Irrigation fraction data source:` specifies the irrigation area dataset source to be read in. Current source options include:

[cols="<,<",]
|===
Expand All @@ -1292,6 +1312,7 @@ Irrigation type spatial transform: mode
|MODIS_OG |Irrigation area fraction map by Ozdogan and Gutman (2008)
|GRIPC |Irrigation area fraction map by Salmon (2013)
|UserDerived |User derived irrigation fraction map
|GIA |Irrigation area fraction map by Meier et al (2018)
|===

.Example _ldt.config_ entry
Expand Down Expand Up @@ -1349,6 +1370,22 @@ Irrigation fraction resolution (dx): 0.2500
Irrigation fraction resolution (dy): 0.2500
....

`Irrigation fraction type option:` specifies the irrigation method type if GRIPC is selected as `Irrigation fraction data source`. GRIPC pixels are labeled as 1 = Rain-fed croplands, 2 = Irrigated croplands, 3 = Paddy croplands, and 4 = Not cropped. Irrigation fraction is computed based on the fraction of Irrigated croplands (= sprinkler), Paddy Croplands (= paddy), or a sum of Irrigated and Paddy croplands ove the total pixels.

[cols="<,<",]
|===
|Value |Description

|sprinkler |sprinkler irrigation type, default.
|paddy |paddy irrigation type.
|sprinkler+paddy |a sum of sprinkler and paddy irrigation types.
|===

.Example _ldt.config_ entry
....
Irrigation fraction type option: "sprinkler+paddy"
....

`Groundwater irrigation ratio map:` specifies the location of a groundwater irrigation fraction map file. This file contains the ratio (gridcell-based) that partitions the simulated irrigation water amount into groundwater source.

.Example ldt.config entry
Expand All @@ -1373,6 +1410,79 @@ Groundwater irrigation ratio map: ./params/irrigGWratio2000.asc
Groundwater irrigation ratio spatial transform: bilinear
....

`Merge crop and irrigation information:` specifies whether to enable adding another dataset to be merged with those currently selected for `Irrigation fraction data source` and `Crop type data source` (i.e. merge GRIPC with GIA and MIRCA). The primary irrigation fraction is separated into irrigated and paddy fractions. Further, non-rice crops and rice fractions are adjusted to match irrigation and paddy, as well as rainfed crops are adjusted to rainfed area fractions. In older code logic, irrigation map was independent of land cover/crop data, thus irrigation fraction had to be scaled and assigned for appropriate vegetation tiles in LIS. This “Merge” step replaces it and is now done in LDT. If additional source to be merged is not present, it aligns Irrigation fraction data source with crop type data source and landcover data source via “Crop irrigation merge data source:”.

.Example _ldt.config_ entry
....
Merge crop and irrigation information: .false.
....

`Crop irrigation merge data source:` specifies the additional dataset to be merged with the irrigation fraction and crop type data.

[cols="<,<",]
|===
|Value |Description
|GRIPC | originally designed for merging GIA, GRIPC, and MIRCA datasets.
|===

.Example _ldt.config_ entry
....
Crop irrigation merge data source: "GRIPC"
....

`Crop irrigation merge data map:` specifies the additional irrigation map file.

.Example _ldt.config_ entry
....
Crop irrigation merge data map: ./irrigtype_salmon2013_gia_ricemask.flt
....

`Crop irrigation merge data spatial transform:` specifies spatial trasformation method for the additional irrigation map file. Currently, tile is the default.

.Example _ldt.config_ entry
....
Crop irrigation merge data spatial trasform: tile
....

`Crop Calendar information:` specifies whether to enable processing crop calendar information.

.Example _ldt.config_ entry
....
Crop Calendar information: .false.
....

`Crop Calendar data source:` specifies crop calendar data to be processed. Currently, only MIRCA is supported.

.Example _ldt.config_ entry
....
Crop Calendar data source: "MIRCA"
....

`Crop Calendar data map:` specifies crop calendar map to be read in. It is a place holder for future option.

.Example _ldt.config_ entry
....
Crop Calendar data map: "none"
....

`Crop Calendar data spatial transform:` specifies spatial transformation method for crop calendar data processing. It is a place holder for future option.

.Example _ldt.config_ entry
....
Crop Calendar data spatial transform: "average"
....

`Multiple Cropping Max Seasons:` specifies the number of seasons for multiple cropping. Currently, the routine is hard-coded for 2 seasons.

.Example _ldt.config_ entry
....
Multiple Cropping Max Seasons: 2
....

[[ssec-soilspecparams]]
=== Soil Parameters

Soils maps

[[ssec-soilspecparams]]
=== Soil Parameters
Expand Down
11 changes: 7 additions & 4 deletions ldt/core/LDT_LMLCMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,6 @@ subroutine LMLC_init_LISHydro(flag)

! _____________________LU_INDEX_____________________________
nlctypes= LDT_LSMparam_struc(n)%landcover%num_bins !size(landcover,3)
!print*, "nlctypes:", nlctypes
allocate(luindex(LDT_rc%lnc(n),LDT_rc%lnr(n)))
allocate(landcover1(LDT_rc%lnc(n),LDT_rc%lnr(n),nlctypes))
landcover1 = LDT_LSMparam_struc(n)%landcover%value
Expand Down Expand Up @@ -863,8 +862,13 @@ subroutine LMLC_writeHeader_LIS(n,ftn,dimID)
LDT_LSMparam_struc(n)%regmask)
endif

call LDT_verify(nf90_put_att(ftn,NF90_GLOBAL,"LANDCOVER_SCHEME", &
LDT_rc%lc_type(n)))
if( LDT_rc%crop_classification(1) .eq. "none" ) then
call LDT_verify(nf90_put_att(ftn,NF90_GLOBAL,"LANDCOVER_SCHEME", &
LDT_rc%lc_type(n)))
else
call LDT_verify(nf90_put_att(ftn,NF90_GLOBAL,"LANDCOVER_SCHEME", &
(trim(LDT_rc%lc_type(n))//"+"//LDT_rc%crop_classification(1))))
endif

! Attributes serving Noah-MP only (at this time):
if ((LDT_rc%lsm.eq."Noah-MP.3.6").or.(LDT_rc%lsm.eq."Noah-MP.4.0.1")) then
Expand Down Expand Up @@ -1223,7 +1227,6 @@ subroutine LMLC_writeData_LISHydro(n,ftn,flag)

nr=size(LDT_LSMparam_struc(n)%luindex%value,1)
nc=size(LDT_LSMparam_struc(n)%luindex%value,2)
!print *, "nr and nc", nr, nc
call LDT_verify(nf90_put_var(ftn,&
LDT_LSMparam_struc(n)%luindexId, LDT_LSMparam_struc(n)%luindex%value(:,:,1),&
(/1,1/),(/nr, nc/)),&
Expand Down
Loading