Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dynamic irrigation management practices to Noah-MP #1372

Merged
merged 10 commits into from
Feb 23, 2021

Conversation

prasanthvkrishna
Copy link
Contributor

@prasanthvkrishna prasanthvkrishna commented Jan 19, 2021

TYPE: enhancement, new feature

KEYWORDS: Noah-MP dynamic irrigation scheme, Sprinkler, micro, and flood irrigation

SOURCE: Prasanth Valayamkunnath (NCAR)

DESCRIPTION OF CHANGES:
Problem: Current version of Noah-MP missing agriculture water management practices.

Solution:
A new dynamic irrigation scheme is implemented to estimate irrigation water requirements and apply water in the irrigated croplands. This new scheme irrigates the croplands based on sprinkler, micro, or surface flooding methods.

The various options are selected from the namelist, and are described in the run/README.namelist file.

You may have part of the domain do one kind of irrigation (for example, flood) and another part of the domain use a different kind of irrigation (for example, sprinkler). This can be done with the geo_em option that provides a map. So far, the only map for different methods is the USA. There is a global map of irrigated fraction that can be used outside the US, but then the irrigation method has to be selected.

The irrigation option only operates on the cropland landuse category.

As expected, effects of irrigation show up longer term. It is usually run at least seasonally not just for a few days.

LIST OF MODIFIED FILES:
M Registry/Registry.EM_COMMON
M Registry/Registry.NMM
M Registry/registry.noahmp
M dyn_em/module_first_rk_step_part1.F
M dyn_em/start_em.F
M dyn_nmm/module_PHYSICS_CALLS.F
M dyn_nmm/start_domain_nmm.F
M phys/module_physics_init.F
M phys/module_sf_noahmpdrv.F
M phys/module_sf_noahmplsm.F
M phys/module_surface_driver.F
M run/MPTABLE.TBL
M run/README.namelist
M share/output_wrf.F

TESTS CONDUCTED:

  1. Conducted compilation and official em_real simulation tests with successful results in Cheyenne (by Prasanth Valayamkunnath, NCAR)
  2. Jenkins regression tests are OK.

RELEASE NOTE: A new dynamic irrigation scheme is implemented to estimate irrigation water requirements and apply water in the irrigated croplands. This new scheme irrigates the croplands based on sprinkler, micro, or surface flooding methods. The various options are selected from the namelist, and are described in the run/README.namelist file.

@prasanthvkrishna prasanthvkrishna requested review from a team as code owners January 19, 2021 14:32
@dudhia
Copy link
Collaborator

dudhia commented Jan 19, 2021 via email

@davegill
Copy link
Contributor

@prasanthvkrishna @dudhia @weiwangncar
Prasanth,
Are you receiving the jenkins testing status emails? If not please see the wiki: https://github.com/wrf-model/WRF/wiki/How-to-Get-Jenkins-Emails

The code does not appear to be compiling for ARW, NMM, Chemistry, idealized, real-data, real*8, serial, openmp, or MPI.

Please find result of the WRF regression test cases in the attachment. This build is for Commit ID: be99bbe5124409cd21d0f63b7a956847c67c16e5, requested by: prasanthvkrishna for PR: https://github.com/wrf-model/WRF/pull/1372. For any query please send e-mail to David Gill.

    Test Type              | Expected  | Received |  Failed
    = = = = = = = = = = = = = = = = = = = = = = = =  = = = =
    Number of Tests        : 19           18
    Number of Builds       : 48           46
    Number of Simulations  : 166           164         164
    Number of Comparisons  : 105           0         0

    Failed Simulations are: 
    output_1:2 = STATUS test_001s em em_real 32 3dtke
output_1:2 = STATUS test_001s em em_real 32 conus
output_1:2 = STATUS test_001s em em_real 32 rap
output_1:2 = STATUS test_001s em em_real 32 tropical
output_1:2 = STATUS test_001o em em_real 33 3dtke
output_1:2 = STATUS test_001o em em_real 33 conus
output_1:2 = STATUS test_001o em em_real 33 rap
output_1:2 = STATUS test_001o em em_real 33 tropical
output_1:2 = STATUS test_001m em em_real 34 3dtke
output_1:2 = STATUS test_001m em em_real 34 conus
output_1:2 = STATUS test_001m em em_real 34 rap
output_1:2 = STATUS test_001m em em_real 34 tropical
output_10:2 = STATUS test_010s hill em_hill2d_x 32 01
output_11:2 = STATUS test_011s em em_real 32 03
output_11:2 = STATUS test_011s em em_real 32 03DF
output_11:2 = STATUS test_011s em em_real 32 03FD
output_11:2 = STATUS test_011s em em_real 32 06
output_11:2 = STATUS test_011s em em_real 32 07NE
output_11:2 = STATUS test_011o em em_real 33 03
output_11:2 = STATUS test_011o em em_real 33 03DF
output_11:2 = STATUS test_011o em em_real 33 03FD
output_11:2 = STATUS test_011o em em_real 33 06
output_11:2 = STATUS test_011o em em_real 33 07NE
output_11:2 = STATUS test_011m em em_real 34 03
output_11:2 = STATUS test_011m em em_real 34 03DF
output_11:2 = STATUS test_011m em em_real 34 03FD
output_11:2 = STATUS test_011m em em_real 34 06
output_11:2 = STATUS test_011m em em_real 34 07NE
output_12:2 = STATUS test_012s em em_real 32 10
output_12:2 = STATUS test_012s em em_real 32 11
output_12:2 = STATUS test_012s em em_real 32 14
output_12:2 = STATUS test_012s em em_real 32 16
output_12:2 = STATUS test_012o em em_real 33 10
output_12:2 = STATUS test_012o em em_real 33 11
output_12:2 = STATUS test_012o em em_real 33 14
output_12:2 = STATUS test_012o em em_real 33 16
output_12:2 = STATUS test_012m em em_real 34 10
output_12:2 = STATUS test_012m em em_real 34 11
output_12:2 = STATUS test_012m em em_real 34 14
output_12:2 = STATUS test_012m em em_real 34 16
output_13:2 = STATUS test_013s em em_real 32 17
output_13:2 = STATUS test_013s em em_real 32 17AD
output_13:2 = STATUS test_013s em em_real 32 18
output_13:2 = STATUS test_013s em em_real 32 20
output_13:2 = STATUS test_013s em em_real 32 20NE
output_13:2 = STATUS test_013o em em_real 33 17
output_13:2 = STATUS test_013o em em_real 33 17AD
output_13:2 = STATUS test_013o em em_real 33 18
output_13:2 = STATUS test_013o em em_real 33 20
output_13:2 = STATUS test_013o em em_real 33 20NE
output_13:2 = STATUS test_013m em em_real 34 17
output_13:2 = STATUS test_013m em em_real 34 17AD
output_13:2 = STATUS test_013m em em_real 34 18
output_13:2 = STATUS test_013m em em_real 34 20
output_13:2 = STATUS test_013m em em_real 34 20NE
output_14:2 = STATUS test_014s em em_real 32 38
output_14:2 = STATUS test_014s em em_real 32 48
output_14:2 = STATUS test_014s em em_real 32 49
output_14:2 = STATUS test_014s em em_real 32 50
output_14:2 = STATUS test_014s em em_real 32 51
output_14:2 = STATUS test_014o em em_real 33 38
output_14:2 = STATUS test_014o em em_real 33 48
output_14:2 = STATUS test_014o em em_real 33 49
output_14:2 = STATUS test_014o em em_real 33 50
output_14:2 = STATUS test_014o em em_real 33 51
output_14:2 = STATUS test_014m em em_real 34 38
output_14:2 = STATUS test_014m em em_real 34 48
output_14:2 = STATUS test_014m em em_real 34 49
output_14:2 = STATUS test_014m em em_real 34 50
output_14:2 = STATUS test_014m em em_real 34 51
output_15:2 = STATUS test_015s em em_real 32 52
output_15:2 = STATUS test_015s em em_real 32 52DF
output_15:2 = STATUS test_015s em em_real 32 52FD
output_15:2 = STATUS test_015s em em_real 32 60
output_15:2 = STATUS test_015s em em_real 32 60NE
output_15:2 = STATUS test_015o em em_real 33 52
output_15:2 = STATUS test_015o em em_real 33 52DF
output_15:2 = STATUS test_015o em em_real 33 52FD
output_15:2 = STATUS test_015o em em_real 33 60
output_15:2 = STATUS test_015o em em_real 33 60NE
output_15:2 = STATUS test_015m em em_real 34 52
output_15:2 = STATUS test_015m em em_real 34 52DF
output_15:2 = STATUS test_015m em em_real 34 52FD
output_15:2 = STATUS test_015m em em_real 34 60
output_15:2 = STATUS test_015m em em_real 34 60NE
output_16:2 = STATUS test_016s em em_real 32 65DF
output_16:2 = STATUS test_016s em em_real 32 66FD
output_16:2 = STATUS test_016s em em_real 32 71
output_16:2 = STATUS test_016s em em_real 32 78
output_16:2 = STATUS test_016s em em_real 32 79
output_16:2 = STATUS test_016o em em_real 33 65DF
output_16:2 = STATUS test_016o em em_real 33 66FD
output_16:2 = STATUS test_016o em em_real 33 71
output_16:2 = STATUS test_016o em em_real 33 78
output_16:2 = STATUS test_016o em em_real 33 79
output_16:2 = STATUS test_016m em em_real 34 65DF
output_16:2 = STATUS test_016m em em_real 34 66FD
output_16:2 = STATUS test_016m em em_real 34 71
output_16:2 = STATUS test_016m em em_real 34 78
output_16:2 = STATUS test_016m em em_real 34 79
output_17:2 = STATUS test_017s em em_real 32 kiaps1NE
output_17:2 = STATUS test_017s em em_real 32 kiaps2
output_17:2 = STATUS test_017o em em_real 33 kiaps1NE
output_17:2 = STATUS test_017o em em_real 33 kiaps2
output_17:2 = STATUS test_017m em em_real 34 kiaps1NE
output_17:2 = STATUS test_017m em em_real 34 kiaps2
output_18:2 = STATUS test_018s em em_real 32 cmt
output_18:2 = STATUS test_018s em em_real 32 solaraNE
output_18:2 = STATUS test_018s em em_real 32 urb3bNE
output_18:2 = STATUS test_018m em em_real 34 cmt
output_18:2 = STATUS test_018m em em_real 34 solaraNE
output_18:2 = STATUS test_018m em em_real 34 urb3bNE
output_2:2 = STATUS test_002m hwrf nmm_real 34 1NE
output_2:2 = STATUS test_002m hwrf nmm_real 34 2NE
output_2:2 = STATUS test_002m hwrf nmm_real 34 3NE
output_3:2 = STATUS test_003s chem em_real 32 1
output_3:2 = STATUS test_003s chem em_real 32 2
output_3:2 = STATUS test_003s chem em_real 32 5
output_3:2 = STATUS test_003m chem em_real 34 1
output_3:2 = STATUS test_003m chem em_real 34 2
output_3:2 = STATUS test_003m chem em_real 34 5
output_4:2 = STATUS test_004s qss em_quarter_ss 32 02NE
output_4:2 = STATUS test_004s qss em_quarter_ss 32 03
output_4:2 = STATUS test_004s qss em_quarter_ss 32 03NE
output_4:2 = STATUS test_004s qss em_quarter_ss 32 04
output_4:2 = STATUS test_004o qss em_quarter_ss 33 02NE
output_4:2 = STATUS test_004o qss em_quarter_ss 33 03
output_4:2 = STATUS test_004o qss em_quarter_ss 33 03NE
output_4:2 = STATUS test_004o qss em_quarter_ss 33 04
output_4:2 = STATUS test_004m qss em_quarter_ss 34 02NE
output_4:2 = STATUS test_004m qss em_quarter_ss 34 03
output_4:2 = STATUS test_004m qss em_quarter_ss 34 03NE
output_4:2 = STATUS test_004m qss em_quarter_ss 34 04
output_5:2 = STATUS test_005s bwave em_b_wave 32 1NE
output_5:2 = STATUS test_005s bwave em_b_wave 32 2
output_5:2 = STATUS test_005s bwave em_b_wave 32 2NE
output_5:2 = STATUS test_005s bwave em_b_wave 32 3
output_5:2 = STATUS test_005o bwave em_b_wave 33 1NE
output_5:2 = STATUS test_005o bwave em_b_wave 33 2
output_5:2 = STATUS test_005o bwave em_b_wave 33 2NE
output_5:2 = STATUS test_005o bwave em_b_wave 33 3
output_5:2 = STATUS test_005m bwave em_b_wave 34 1NE
output_5:2 = STATUS test_005m bwave em_b_wave 34 2
output_5:2 = STATUS test_005m bwave em_b_wave 34 2NE
output_5:2 = STATUS test_005m bwave em_b_wave 34 3
output_6:2 = STATUS test_006s real8 em_real 32 14
output_6:2 = STATUS test_006s real8 em_real 32 17AD
output_6:2 = STATUS test_006o real8 em_real 33 14
output_6:2 = STATUS test_006o real8 em_real 33 17AD
output_6:2 = STATUS test_006m real8 em_real 34 14
output_6:2 = STATUS test_006m real8 em_real 34 17AD
output_7:2 = STATUS test_007s qss8 em_quarter_ss 32 06
output_7:2 = STATUS test_007s qss8 em_quarter_ss 32 08
output_7:2 = STATUS test_007s qss8 em_quarter_ss 32 09
output_7:2 = STATUS test_007o qss8 em_quarter_ss 33 06
output_7:2 = STATUS test_007o qss8 em_quarter_ss 33 08
output_7:2 = STATUS test_007o qss8 em_quarter_ss 33 09
output_7:2 = STATUS test_007m qss8 em_quarter_ss 34 06
output_7:2 = STATUS test_007m qss8 em_quarter_ss 34 08
output_7:2 = STATUS test_007m qss8 em_quarter_ss 34 09
output_8:2 = STATUS test_008m move em_real 34 01
output_9:2 = STATUS test_009s fire em_fire 32 01
output_9:2 = STATUS test_009o fire em_fire 33 01
output_9:2 = STATUS test_009m fire em_fire 34 01
    Which comparisons are not bit-for-bit: 
    None

@davegill davegill changed the base branch from master to develop January 22, 2021 22:06
@davegill davegill changed the title Dynamic irrigation Add dynamic irrigation management practices to Noah-MP Jan 22, 2021
@davegill
Copy link
Contributor

@prasanthvkrishna

This new scheme irrigates the croplands based on sprinkler, micro, or surface flooding methods.

Is this a gridded data set, so there are sprinkler portions of the domain and flooding is an option for other portions? Is this completely driven by a namelist option? Is this is uniform irrigation styles, is this recommended for small regional domain? Is this primarily for continental US? Can you provide some before and after figures that demonstrate the effectiveness of the scheme?

Please add information into the run/README.namelist and test/em_real/examples.namelist files to give users suggestions for use and best practices.

Send a couple of paragraphs to Kelly for inclusion in the WRF User's Guide. Something that would fit into this doc: https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.2/users_guide_chap5.pdf (citations are appropriate here).

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Jan 26, 2021 via email

@davegill
Copy link
Contributor

@prasanthvkrishna
Prasanth,
Could you try the GNU compiler on cheyenne for the ARW build?
I will also try on our MMM classroom cluster. I can usually replicate errors.

@davegill
Copy link
Contributor

davegill commented Jan 26, 2021

@prasanthvkrishna
Prasanth,
These sorts of lines:

IF((CROPLU == .TRUE.) blah blah blah

need to be

IF((CROPLU) blah blah blah

There are four occurrences in phys/module_sf_noahmplsm.F. This is a Fortran-ism that some compilers allow to go outside the standard. This is likely why GNU fails and Intel is OK.

@davegill
Copy link
Contributor

@prasanthvkrishna
I edited the above to be correct: module_sf_noahmplsm.F

@smileMchen
Copy link
Collaborator

I downloaded code from this branch and tried to build it in cheyenne. I still get the error message like:

module_sf_noahmplsm.f90:5992:8:

 5992 |     IF((CROPLU == .TRUE.) .AND. (IRAMTFI .GT. 0.0) .AND. ((OPT_IRRM .EQ. 0) .OR. (OPT_IRRM .EQ. 3)))THEN
      |        1
Error: Logicals at (1) must be compared with .eqv. instead of ==
.....

I download the code yesterday and it seems that the code is not modified based on Dave's suggestion ?

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Jan 27, 2021 via email

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Jan 28, 2021 via email

@davegill
Copy link
Contributor

davegill commented Feb 9, 2021

@prasanthvkrishna @dudhia @weiwangncar

There are a few things that we would like to see.

  1. Please add more to the testing issue in the commit message. "Conducted compilation and official em_real simulation tests with successful results in Cheyenne" does not mean much. Can you show a couple of figures where we see before vs after, a comparison of the various water management practices to each other?
  2. Are there seasonal regulations, or assumptions about the location (for example, this is for the central US).
  3. As Jimy mentioned, a publication would be appropriate in the release notes.
  4. There should be an explanation of how to use this option, and recommendations. Is there an input map that defines areas of various watering practices? How does one choose which option to activate?

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Feb 9, 2021 via email

@@ -1213,6 +1215,23 @@ state integer pgsxy ij - 1 - rh

state real gecros_state i{gecros}j - 1 Z rhd=(interp_mask_land_field:lu_index)u=(UpNear) "gecros" "gecros state array" "-"

#Noah-MP Irrigation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it true that we need these items from the noahmp registry also in Registry.NMM. Doesn't it just include the NoahMP registry? We need to mimic how other NoahMP variables are handled if NMM supports NoahMP.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

answering my own comment, yes, the noahmp registry variables are duplicated in the NMM Registry. Seems like an include could replace a lot of duplication, but that is beyond this PR and to do later.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem is that the interpolation/feedback keyword part is different for EM and NMM.

@smileMchen
Copy link
Collaborator

@prasanthvkrishna,
Would you please send Kelly and me the document about the dynamic irrigation option? Since this scheme involves three options, we need to know which option is appropriate for what condition and whether there is any limitation for their use. Thanks.

@davegill
Copy link
Contributor

@prasanthvkrishna @weiwangncar @dudhia
How do we determine "where" to do the irrigating? Is there a land category flag to determine which input source and then to assign a flag based on the landuse category / categories?

  1. The OLD 13 category landuse has "agricultural".
  2. USGS has 'Dryland Cropland and Pasture', 'Irrigated Cropland and Pasture', 'Mixed Dryland/Irrigated Cropland and Pasture', 'Cropland/Grassland Mosaic', 'Cropland/Woodland Mosaic'.
  3. IGBP and MODIS have 'Croplands', 'cropland/natural vegetation mosaic'
  4. SiB has 'Agriculture or C3 Grassland'
  5. SSIB has 'Mixed Dryland/Irrigated Cropland and Pasture'
  6. NLCD40 has 'Croplands', 'cropland/natural vegetation mosaic', 'Pasture/Hay', 'Cultivated Crops'

Where is this binning handled in the code?

@davegill
Copy link
Contributor

@prasanthvkrishna @dudhia @weiwangncar
Jimy pointed out that MPTABLE.TBL is to be used.

The "ISCROP" index is a single value, for example = 2 for USGS. But that ignores other crop locations:

 !  2: Dryland Cropland and Pasture
 !  3: Irrigated Cropland and Pasture
 !  4: Mixed Dryland/Irrigated Cropland and Pasture
 !  5: Cropland/Grassland Mosaic
 !  6: Cropland/Woodland Mosaic

SImilarly for the other input sources that have multiple categories for agricultural or cropland.

@davegill
Copy link
Contributor

@prasanthvkrishna
Looks like your last mod broke the NMM build

Please find result of the WRF regression test cases in the attachment. This build is for Commit ID: 2eb2decf0d8eb9312bfac486dd367d544cd3620d, requested by: prasanthvkrishna for PR: https://github.com/wrf-model/WRF/pull/1372. For any query please send e-mail to David Gill.

    Test Type              | Expected  | Received |  Failed
    = = = = = = = = = = = = = = = = = = = = = = = =  = = = =
    Number of Tests        : 19           18
    Number of Builds       : 48           46
    Number of Simulations  : 163           161         3
    Number of Comparisons  : 103           102         0

    Failed Simulations are: 
    output_2:2 = STATUS test_002m hwrf nmm_real 34 1NE
output_2:2 = STATUS test_002m hwrf nmm_real 34 2NE
output_2:2 = STATUS test_002m hwrf nmm_real 34 3NE
    Which comparisons are not bit-for-bit: 
    None

@davegill
Copy link
Contributor

@prasanthvkrishna
OK, back in business. The jenkins tests are good!

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Feb 19, 2021 via email

@davegill davegill merged commit a128d0c into wrf-model:develop Feb 23, 2021
state real IRMIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRMIVOL" "Micro Irrigation Water Accumulated" "mm"
state real IRFIVOL ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRFIVOL" "Flood Irrigation Water Accumulated" "mm"
state real IRELOSS ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRELOSS" "Sprinkler Evaporation Loss Accumulated" "mm"
state real IRRSPLH ij - 1 - i02rhd=(interp_mask_field:lu_index,iswater)u=(copy_fcnm) "IRRSPLH" "Sprinkler Evaporation Loss Accumulated" "Joules m^-2"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the new variables be packaged?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are 2d, but ideally yes we need to check if that is safe to do.

@smileMchen
Copy link
Collaborator

A few late spring cases (May 4, 7, 10, 13) have been run successfully with the options of opt_irr = 1 and opt_irrm=1.
Most of the variables listed below are zero. Not sure yet how to check the impact of irrigation.
state real IRFRACT
state real SIFRACT
state real MIFRACT
state real FIFRACT
state integer IRNUMSI
state integer IRNUMMI
state integer IRNUMFI
state real IRWATSI
state real IRWATMI
state real IRWATFI
state real IRSIVOL
state real IRMIVOL
state real IRFIVOL
state real IRELOSS
state real IRRSPLH

@dudhia
Copy link
Collaborator

dudhia commented Feb 25, 2021 via email

@weiwangncar
Copy link
Collaborator

weiwangncar commented Feb 25, 2021 via email

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Feb 26, 2021 via email

@weiwangncar
Copy link
Collaborator

@prasanthvkrishna The new fields added to this option should be packaged, even just with NoahMP option.

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Apr 3, 2021 via email

@weiwangncar
Copy link
Collaborator

@prasanthvkrishna You can do it now - we are still testing. Clone the latest WRF code, and then checkout release-v4.3, and start from there. Thanks!

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Apr 4, 2021 via email

@prasanthvkrishna
Copy link
Contributor Author

prasanthvkrishna commented Apr 4, 2021 via email

vlakshmanan-scala pushed a commit to scala-computing/WRF that referenced this pull request Apr 4, 2024
TYPE: enhancement, new feature

KEYWORDS: Noah-MP dynamic irrigation scheme, Sprinkler, micro, and flood irrigation

SOURCE: Prasanth Valayamkunnath (NCAR)

DESCRIPTION OF CHANGES:
Problem: Current version of Noah-MP missing agriculture water management practices. 

Solution:
A new dynamic irrigation scheme is implemented to estimate irrigation water requirements and apply water in the 
irrigated croplands. This new scheme irrigates the croplands based on sprinkler, micro, or surface flooding methods.

The various options are selected from the namelist, and are described in the run/README.namelist file.

You may have part of the domain do one kind of irrigation (for example, flood) and another part of the domain use 
a different kind of irrigation (for example, sprinkler). This can be done with the geo_em option that provides a map. 
So far, the only map for different methods is the USA. There is a global map of irrigated fraction that can be used 
outside the US, but then the irrigation method has to be selected.

The irrigation option only operates on the cropland landuse category.

As expected, effects of irrigation show up longer term. It is usually run at least seasonally not just for a few days.

LIST OF MODIFIED FILES: 
M       Registry/Registry.EM_COMMON
M       Registry/Registry.NMM
M       Registry/registry.noahmp
M       dyn_em/module_first_rk_step_part1.F
M       dyn_em/start_em.F
M       dyn_nmm/module_PHYSICS_CALLS.F
M       dyn_nmm/start_domain_nmm.F
M       phys/module_physics_init.F
M       phys/module_sf_noahmpdrv.F
M       phys/module_sf_noahmplsm.F
M       phys/module_surface_driver.F
M       run/MPTABLE.TBL
M       run/README.namelist
M       share/output_wrf.F

TESTS CONDUCTED: 
1. Conducted compilation and official em_real simulation tests with successful results in Cheyenne (by Prasanth Valayamkunnath, NCAR)
2. Jenkins regression tests are OK.

RELEASE NOTE: A new dynamic irrigation scheme is implemented to estimate irrigation water requirements and apply water in the irrigated croplands. This new scheme irrigates the croplands based on sprinkler, micro, or surface flooding methods. The various options are selected from the namelist, and are described in the run/README.namelist file.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants