Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

(Solved) WRF(V4.3)-Noahmp with irrigation doesn't work?

wangyan891216

New member
Hello, everyone.
I'm trying to implement the irrigation in WRF-Noahmp, but it seems that the irrigation does not work for the wrfout with 0 irrigation amount.
Firstly, I've run the geog.exe with the irrigation related data in geog.
Here are the IRRIGATION, IRFRACT in the geo_em.d01.nc, they are successfully included in the geo_em.d01.nc.
1692090657939.png1692090711113.png
Then I've set the irrigation parameters in namelist.input according to the README.namelist.
I've set the sf_surface_physics = 4 (using the Noahmp),
and in noahmp, opt_irr = 3 (irrigation trigger based on LAI threshold), opt_irrm = 3 (surface flooding)
Here is the detailed namelist.input I applied in the WRF:
&time_control
start_year = 2018, 2019,
start_month = 01, 09,
start_day = 02, 04,
start_hour = 00, 12,
end_year = 2018, 2019,
end_month = 12, 09,
end_day = 31, 06,
end_hour = 00, 00,
interval_seconds = 21600
input_from_file = .true.,.true.,
history_interval = 180, 60,
frames_per_outfile = 1, 1,
restart = .false.,
restart_interval = 1440,
io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2
auxinput4_inname = "wrflowinp_d<domain>",
auxinput4_interval = 360,
io_form_auxinput4 = 2,
/
&domains
time_step = 180,
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 1,
e_we = 90, 220,
e_sn = 90, 214,
e_vert = 35, 45,
auto_levels_opt =1,
p_top_requested = 5000,
num_metgrid_levels = 32,
num_metgrid_soil_levels = 4,
dx = 9000,
dy = 9000,
grid_id = 1, 2,
parent_id = 1, 1,
i_parent_start = 1, 53,
j_parent_start = 1, 25,
parent_grid_ratio = 1, 3,
parent_time_step_ratio = 1, 3,
feedback = 1,
smooth_option = 0
use_adaptive_time_step =.true.,
step_to_output_time = .false.,
target_cfl = 1.2,1.2,
target_hcfl = .84,.84 ,
max_step_increase_pct = 5,51 ,
starting_time_step = -1,-1,
starting_time_step_den = 0,
max_time_step = -1,-1 ,
max_time_step_den = 0,
min_time_step = -1,-1,
min_time_step_den = 0,
adaptation_domain = 1,
/

&physics
physics_suite = 'CONUS'
mp_physics = 6, -1,
cu_physics = 1, -1,
ra_lw_physics = 1, -1,
ra_sw_physics = 1, -1,
bl_pbl_physics = 1, -1,
sf_sfclay_physics = 1, -1,
sf_surface_physics = 4, -1,
radt = 15, 15,
bldt = 0, 0,
cudt = 0, 0,
icloud = 1,
num_land_cat = 21,
sf_urban_physics = 0, 0,
fractional_seaice = 1,
sst_update = 1,
/

&noahmp
opt_irr = 3,
opt_irrm = 3,

/

&fdda
/

&dynamics
hybrid_opt = 2,
w_damping = 0,
diff_opt = 2, 2,
km_opt = 4, 4,
diff_6th_opt = 0, 0,
diff_6th_factor = 0.12, 0.12,
base_temp = 290.
damp_opt = 3,
zdamp = 5000., 5000.,
dampcoef = 0.2, 0.2,
khdif = 0, 0,
kvdif = 0, 0,
non_hydrostatic = .true., .true.,
moist_adv_opt = 1, 1,
scalar_adv_opt = 1, 1,
gwd_opt = 1, 0,
/

&bdy_control
spec_bdy_width = 5,
specified = .true.
/

&grib2
/

&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/

But the result were not satisfactory, in wrfout the accumulated irrigation amount are 0 as displayed below:
1692091278787.png1692091313746.png1692091337718.png

My questions are:
(1) Is the namelist.input used correctly set to trigger the irrigation as I wished to? Any suggestions that I can do to trigger irrigation successfully?
As reference, the soil moisture are also posted,
1692093023097.png

(2) In wrfout, do the IRFIVOL, IRSIVOL, IRMICOL represent the irrigation amount?

(3) I also want to run the noahmp_dveg, and I set the dveg= 5 in noah_mp section (LAI predicted; FVEG = maximum veg. fraction),
but the LAI in wrfout remain unchanged as the wrfout result withou setting the devg, the LAI are from the MPTABLE.TBLas displayed below.
How can I use the dynamic vegetation option in noahmp?
1692092844977.png

Looking forward to any useful reply and disscussion.
Thanks in advance!
 
Hi there,
1. First, the WRF-NoahMP irrigation scheme works successfully based on other users' test and application. Your setup for irrigation looks correct to me. If you use opt_irrm=3 and opt_irr=3, then the only required input data is the IRFRACT. To trigger the irrigation, here are the few conditions: (1) grid needs to be crop land type; (2) IRFRACT > 0.1; (3) rain rate < 1/3600 mm/s. Can you please check: (1) IFRACT variable in your wrfinput_d01 also has valid values and >0.1; (2) if your domain includes crop land type (check wrfinput file for LU_INDEX variable); (3) if rain rate is lower than the threshold within your simulation time period. IRFIVOL, IRSIVOL, IRMICOL are the irrigation amount. In your case, because you only use flooding irrigation, so you should see positive IRFIVOL and zero for IRSIVOL and IRMIVOL.
2. To activate the dynamic vegetation scheme, you are correct that set dveg=5 and also OPT_CRS=1. This should be sufficient. Not sure why you did not see dynamcally varying LAI. You may want to check more locations. What is the simulation season?
 
Hi cenlinhe,
Thank you for your answer.
(1) for irrigation :
I've checked the landuse are cropland and the IRFRACT > 0.1 (as you can see in the following figures), how could I check the rain rate? whcih file (met_*, wrfinput, wrfbdy, wrfout) should I refer to? For reference, the gfs.FNL data were used as the forcing data.
1692243664436.png 1692243719941.png
(2) for dynamic vegetation:
I've set the dveg=5 but the OPT_CRS was not specificlly set in the namelist, and I will try to rerun the wrf.exe with dveg=5 as well as the OPT_CRS=1. 1692245335033.png
The time period was the whole year of 2018.

Looking forward to your reply.
 
Your input data look good to me. I assume the zero irrigation amount netcdf file you showed above is for the entire year or just a specific time period? If this time period is in the first ~750 time slots (based on your LAI time series, LAI=0), then the irrigation has not been triggered yet, so you would not see any values for irrigation amount. But if you are showing the time period after growing season, then there is indeed some issue with the output irrigation amount.

For the rainrate, it is in the standard wrfout file named as: RAINC and RAINNC.

Could you please do the following test (does not have to run for the entire year, but just run during the growing season/month in the middle of the year:
1. use dveg = 4, opt_irr = 3, opt_irrm = 3, to see how the results look like;
2. use dveg = 5, opt_irr = 3, opt_irrm = 1 or 2, to see how the results look like;
3. use dveg = 5, opt_irr = 1, opt_irrm = 3, to see how the results look like;

Currently, I am not sure why this zero irrigation happens, which seems weird to me.
 
Hi cenlin he,

Thank you for your reply and suggestions.
I've run the whole year of 2018 from 01-01 to 12-31.
Here are the the RAINC and RAINNC in wrfout (I've used the ncrcat to merge all the wrfout at each timestep together).
1692351243926.png 1692351261208.png

For the dynamic vegetion:
I've tried the following tests before:
(1) dveg = 4 (the default setting in noah_mp) , opt_irr = 3, opt_irrm = 3
(2) dveg = 5, opt_crs=1, opt_irr = 3, opt_irrm = 3
(3) dveg = 2, opt_crs=1, opt_irr = 3, opt_irrm = 3
(4) dveg = 6, opt_crs=1, opt_irr = 1, opt_irrm = 3
the results seemed the same with the LAI in wrfout from the MPTABLE (same as LAI present in the top post)
and the irrigation amount all 0.

For reference, the version of WRF is the 4.3.
Any suggestions what might be wrong?

Looking forward to your reply.
Thanks.
 
Last edited:
Thank you for the updates. Let me check with the original developer of this irrigation scheme to see what might be the reason. I never saw this issue before. In our group, we have used this irrigation scheme with the NoahMP-crop scheme for application over the US, which works perfectly.
 
Hi Wang, Your model setup looks good to me. Could you please confirm the vegetation fraction values in the output are not zero?
 
Last edited:
Hello, I have used the WRFV4.3 with crop and irrigation in the US and didn't have this issue.
But I used the opt_irrm=0, selecting the irrigation method based on their fractions.
As the you are using opt_irrm = 3 (all flooding irrigation), it will set flooding fraction to 1 and other two method fractions to 0.

So far I don't see any problem with the setup and namelist.
Maybe a better way to diagnose the issue would be to put in some print functions near calling TRIGGER_IRRIGATION and FLOOD_IRRIGATION subroutine in , so that it can tell if the irrigation scheme is correctly triggered or there is something missing at the setup.
 
Thank you for the updates. Let me check with the original developer of this irrigation scheme to see what might be the reason. I never saw this issue before. In our group, we have used this irrigation scheme with the NoahMP-crop scheme for application over the US, which works perfectly.
Thank you cenlinhe.
I've tried to simplify my namelist.input according to other researcher's, and the irrigation amount seemed successfully simulated in the wrfout. So, maybe some unexpected mistakes are in my original namelist.input. Anyway, thank you for your suggestions and reply. Hope you have a good day!

1692859493260.png
 

Attachments

  • namelist.input_new.txt
    4.6 KB · Views: 30
Hello, I have used the WRFV4.3 with crop and irrigation in the US and didn't have this issue.
But I used the opt_irrm=0, selecting the irrigation method based on their fractions.
As the you are using opt_irrm = 3 (all flooding irrigation), it will set flooding fraction to 1 and other two method fractions to 0.

So far I don't see any problem with the setup and namelist.
Maybe a better way to diagnose the issue would be to put in some print functions near calling TRIGGER_IRRIGATION and FLOOD_IRRIGATION subroutine in , so that it can tell if the irrigation scheme is correctly triggered or there is something missing at the setup.
Hi zhezhang:
Thank you for your reply.
I've read several papers of yours.
The problem have been solved.
 
Thank you cenlinhe.
I've tried to simplify my namelist.input according to other researcher's, and the irrigation amount seemed successfully simulated in the wrfout. So, maybe some unexpected mistakes are in my original namelist.input. Anyway, thank you for your suggestions and reply. Hope you have a good day!

View attachment 10345
为什么累积灌溉量那么大,这是跑了多久呀?
 
Your input data look good to me. I assume the zero irrigation amount netcdf file you showed above is for the entire year or just a specific time period? If this time period is in the first ~750 time slots (based on your LAI time series, LAI=0), then the irrigation has not been triggered yet, so you would not see any values for irrigation amount. But if you are showing the time period after growing season, then there is indeed some issue with the output irrigation amount.

For the rainrate, it is in the standard wrfout file named as: RAINC and RAINNC.

Could you please do the following test (does not have to run for the entire year, but just run during the growing season/month in the middle of the year:
1. use dveg = 4, opt_irr = 3, opt_irrm = 3, to see how the results look like;
2. use dveg = 5, opt_irr = 3, opt_irrm = 1 or 2, to see how the results look like;
3. use dveg = 5, opt_irr = 1, opt_irrm = 3, to see how the results look like;

Currently, I am not sure why this zero irrigation happens, which seems weird to me.
Hi, Dr He

I have some questions about the irrigation parameters setting. I used the WRF 4.7.0 (Noah-MP 4.7.0)

According to the offical guidance, There are two types of irrigation parameters setting in Namelist variables. i.e. &physics (left figure below) and &noah_mp (right figure below).

Q1: What is the function of parameter sf_surf_irr_scheme? It says that it is an option to turn on surface irrigation scheme. However, opt_irr is also irrigation option. What is the difference between sf_surf_irr_scheme and opt_irr?

Q2: In my namelist.input, the parameters are as follow:
&noah_mp
dveg = 4
opt_irr = 1
opt_irrm = 3
opt_crop = 1
opt_crs = 2
...
What does opt_irr =1 mean? I know opt_irr = 2 and 3 represent irrigation trigger based on LAI and crop seasons. If it means irrigation trigger based on soil moisture threshold? I saw the calculation of irrigation amount is based on soil moisture threshold in many papers. If it is not, how I choose irrigation trigger based on soil moisture threshold?

Q3: My namelist.input is set as mentioned above , in this case, need I set sf_surf_irr_scheme? Should they be used at the same time?
Q4: Under what circumstances should irr_daily_amount ,irr_start_hour, irr_num_hours, irr_start_hour, irr_num_hours, irr_start/end_julianday be used? I think if I calculate the irrigation amount based on soil moistur threshold, the parameters mentioned above are not necessary, right?

Look forward to your reply :)
1753869946048.png1753870128597.png
 

Attachments

  • 1753869790954.png
    1753869790954.png
    40.6 KB · Views: 2
  • 1753869818910.png
    1753869818910.png
    36.8 KB · Views: 2
Last edited:
1. sf_surf_irr_scheme and opt_irr are two entirely different irrigation schemes. opt_irr is embedded inside Noah-MP land surface model and has to be used together with Noah-MP. sf_surf_irr_scheme was developed by people outside Noah-MP model community to increase precipitation to represent the irrigation water, which however I am not vary familiar with.
2. opt_irr = 1 means the irrigation is always on (i.e., no trigger based on LAI or growing season) but still relies on the soil moisture deficit and rain condition.
3. sf_surf_irr_scheme and opt_irr should not be used at the same time. opt_crs has to use 1 rather than 2 for opt_crop = 1.
4. I am not familiar with those sf_surf_irr_scheme namelist options.
 
1. sf_surf_irr_scheme and opt_irr are two entirely different irrigation schemes. opt_irr is embedded inside Noah-MP land surface model and has to be used together with Noah-MP. sf_surf_irr_scheme was developed by people outside Noah-MP model community to increase precipitation to represent the irrigation water, which however I am not vary familiar with.
2. opt_irr = 1 means the irrigation is always on (i.e., no trigger based on LAI or growing season) but still relies on the soil moisture deficit and rain condition.
3. sf_surf_irr_scheme and opt_irr should not be used at the same time. opt_crs has to use 1 rather than 2 for opt_crop = 1.
4. I am not familiar with those sf_surf_irr_scheme namelist options.
I see, thanks:)
 
1. sf_surf_irr_scheme and opt_irr are two entirely different irrigation schemes. opt_irr is embedded inside Noah-MP land surface model and has to be used together with Noah-MP. sf_surf_irr_scheme was developed by people outside Noah-MP model community to increase precipitation to represent the irrigation water, which however I am not vary familiar with.
2. opt_irr = 1 means the irrigation is always on (i.e., no trigger based on LAI or growing season) but still relies on the soil moisture deficit and rain condition.
3. sf_surf_irr_scheme and opt_irr should not be used at the same time. opt_crs has to use 1 rather than 2 for opt_crop = 1.
4. I am not familiar with those sf_surf_irr_scheme namelist options.
Hi, Dr He

I have another question. I used the NCEP GFS ds084.1 data as the initial and lateral boundary condition at resolution of 0.25 degree.

My question is how should I set the grid resolution (i.e. dx and dy) if no nest domain is set. Can I set the grid size arbitrarily? Or must the grid size correspond to the size of forcing data?

I concluded the grid size setting in several papers, e.g. with ERA-I (0.75 degree) as initial and lateral boundary condition, the grid size was set as 30km, 20km, 18 km in previous papers.
with NCEP FNL (1 degree) as initial and lateral boundary condition, the grid size was set as 4km, 3km in previous papers. Note that there is no nest domain for above settings. I am confused how to set the grid size.

Look forward to your reply!
 
Top