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

WRF4.3.3 NoahMP irrigation scheme didn't work

yuan

New member
hello, I used the NoahMP irrigation scheme, but the soil moisture and other variables did not change. So I checked the wrfinput file and found that the IRFRACT variables in it were all 0. Why is IRRIGATION successfully generated in met_em files during WPS preprocessing, but IRFRACT cannot be generated when ./real.exe? Below is my namelist.input:

&time_control
io_form_auxinput8 = 2
auxinput8_inname = "trmask_d<domain>"
run_days = 50,
run_hours = 12,
run_minutes = 0,
run_seconds = 0,
start_year = 2014, 2000, 2000,
start_month = 05, 01, 01,
start_day = 01, 24, 24,
start_hour = 00, 12, 12,
start_minute = 00, 00, 00,
start_second = 00, 00, 00,
end_year = 2014, 2000, 2000,
end_month = 06, 01, 01,
end_day = 01, 25, 25,
end_hour = 00, 12, 12,
end_minute = 00, 00, 00,
end_second = 00, 00, 00,
interval_seconds = 10800
input_from_file = .true.,.true.,.true.,
history_interval = 60, 60, 60,
frames_per_outfile = 24, 1000, 1000,
restart = .false.,
restart_interval = 1440,
force_use_old_data = .true.
io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2
debug_level = 0
/

&domains
time_step = 24,
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 1,
e_we = 200,
e_sn = 200,
e_vert = 33,
p_top_requested = 5000,
num_metgrid_levels = 38,
num_metgrid_soil_levels = 4,
dx = 4000,
dy = 4000,
grid_id = 1,
parent_id = 0,
i_parent_start = 1,
j_parent_start = 1,
parent_grid_ratio = 1,
parent_time_step_ratio = 1,
feedback = 0,
smooth_option = 0,
/

&physics
mp_physics = 6,
ra_lw_physics = 1,
ra_sw_physics = 1,
radt = 20,
sf_sfclay_physics = 1,
sf_surface_physics = 4,
bl_pbl_physics = 1,
bldt = 0,
cu_physics = 0,
cudt = 5,
isfflx = 1,
ifsnow = 1,
icloud = 1,
surface_input_source = 1,
num_soil_layers = 4,
num_land_cat = 21,
maxiens = 1,
maxens = 3,
maxens2 = 3,
maxens3 = 16,
ensdim = 144,
sst_update = 0,
sf_urban_physics = 0,
wtddt = 30.,
mp_zero_out = 2,
mp_zero_out_thresh = 0.,
scalar_pblmix = 0,
tracer_pblmix = 0,
/

&noah_mp
opt_irr = 1
opt_irrm = 0
/



&fdda

/

&dynamics
w_damping = 0,
diff_opt = 1,
km_opt = 4,
diff_6th_opt = 0,
diff_6th_factor = 0.12,
base_temp = 290.,
damp_opt = 0,
zdamp = 5000.,
dampcoef = 0.2,
khdif = 0,
kvdif = 0,
non_hydrostatic = .true.,
moist_adv_opt = 4,
scalar_adv_opt = 4,
tracer_adv_opt = 4,
tracer_opt = 4,
tracer2dsource = 1,
tracer3dsource = 0,
tracer3dsink = 0,
/

&bdy_control
spec_bdy_width = 5,
spec_zone = 1,
relax_zone = 4,
specified = .true.,
nested = .false.,
/

&grib2
/

&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/

1663816741339.png(wrfinput IRFRACT)
1663816940772.png(met_em IRRIGATION)
 
Hi, Yuan,
I just explored the codes related to noahmp irrigation. I am sorry to tell that, those irrigation-related variables produced by geogrid ((e.g., IRFRACT, SIFRACT, MIFRACT. etc.) have never been incorporated into the codes, and thus they have never been used in the irrigation scheme.
Instead, the table values of these variables in run/MPTABLE.TBL are read and used when running irrigation. The basic flowchart is:
(1) In phys/module_sf_noahmpdrv.F:
if (iopt_irr >= 1) call read_mp_irrigation_parameters()
(2) in phys/module_sf_noahmplsm.F, find the folloiwng piece of code is activated to read MPTABLE.TBL:
inquire( file='MPTABLE.TBL', exist=file_named)
if ( file_named ) then
open(15, file="MPTABLE.TBL", status='old', form='formatted', action='read', iostat=Kerr
else
open(15, status='old', form='formatted', action='read', iostat=ierr)
.....
.....
read(15,noahmp_irrigation_parameters)
close(15)
IRR_FRAC_TABLE = IRR_FRAC ! irrigation Fraction
IRR_HAR_TABLE = IRR_HAR ! number of days before harvest date to stop irrigation
IRR_LAI_TABLE = IRR_LAI ! Minimum lai to trigger irrigation
.....
.....
(3) The above data are later used in irrigation scheme
 
Hi, Yuan,
I just explored the codes related to noahmp irrigation. I am sorry to tell that, those irrigation-related variables produced by geogrid ((e.g., IRFRACT, SIFRACT, MIFRACT. etc.) have never been incorporated into the codes, and thus they have never been used in the irrigation scheme.
Instead, the table values of these variables in run/MPTABLE.TBL are read and used when running irrigation. The basic flowchart is:
(1) In phys/module_sf_noahmpdrv.F:
if (iopt_irr >= 1) call read_mp_irrigation_parameters()
(2) in phys/module_sf_noahmplsm.F, find the folloiwng piece of code is activated to read MPTABLE.TBL:
inquire( file='MPTABLE.TBL', exist=file_named)
if ( file_named ) then
open(15, file="MPTABLE.TBL", status='old', form='formatted', action='read', iostat=Kerr
else
open(15, status='old', form='formatted', action='read', iostat=ierr)
.....
.....
read(15,noahmp_irrigation_parameters)
close(15)
IRR_FRAC_TABLE = IRR_FRAC ! irrigation Fraction
IRR_HAR_TABLE = IRR_HAR ! number of days before harvest date to stop irrigation
IRR_LAI_TABLE = IRR_LAI ! Minimum lai to trigger irrigation
.....
.....
(3) The above data are later used in irrigation scheme
wow! Thanks for your detailed and swift reply. Dear Ming, if there is any documentation regarding on how the irrigation scheme inside Noah-MP works?
 
Dear Ming, if there is any documentation regarding on how the irrigation scheme inside Noah-MP and Noah LSM works?
 
The only document that is available is WRF USER's Guide. Please see the chapter:
Other than this, I don't know whether there exist other documents to describe the irrigation options in WRF.
I understand that this is kind of less sufficient. Sorry.
 
Hi, Yuan,
I just explored the codes related to noahmp irrigation. I am sorry to tell that, those irrigation-related variables produced by geogrid ((e.g., IRFRACT, SIFRACT, MIFRACT. etc.) have never been incorporated into the codes, and thus they have never been used in the irrigation scheme.
Instead, the table values of these variables in run/MPTABLE.TBL are read and used when running irrigation. The basic flowchart is:
(1) In phys/module_sf_noahmpdrv.F:
if (iopt_irr >= 1) call read_mp_irrigation_parameters()
(2) in phys/module_sf_noahmplsm.F, find the folloiwng piece of code is activated to read MPTABLE.TBL:
inquire( file='MPTABLE.TBL', exist=file_named)
if ( file_named ) then
open(15, file="MPTABLE.TBL", status='old', form='formatted', action='read', iostat=Kerr
else
open(15, status='old', form='formatted', action='read', iostat=ierr)
.....
.....
read(15,noahmp_irrigation_parameters)
close(15)
IRR_FRAC_TABLE = IRR_FRAC ! irrigation Fraction
IRR_HAR_TABLE = IRR_HAR ! number of days before harvest date to stop irrigation
IRR_LAI_TABLE = IRR_LAI ! Minimum lai to trigger irrigation
.....
.....
(3) The above data are later used in irrigation scheme
Hello,Ming.
Recently, I have been studying the irrigation scheme of noahMP and found that IRFRACT, SIFRACT, MIFRACT, etc. are not generated by the geogrid.exe process, but by the real.exe process. After reviewing the module_sf_noahmpdrv.F and module_sf_noahmplsm.F, my understanding is that IRR_FRAC_TABLE = IRR_FRAC, IRR_HAR_TABLE = IRR_HAR, and IRR_LAI_TABLE = IRR_LAI et al fixed parameters in MPTABLE.TBL are used to determine whether irrigation is triggered, while variables generated by real.exe such as IRFRACT, SIFRACT, MIFRACT, etc. determine the amount of water for irrigation.
Even if I misunderstand module_sf_noahmpdrv.F and module_sf_noahmplsm.F, if the variables such as IRFRACT, SIFRACT, MIFRACT, etc. are not used, why does the real.exe process generate these variables?
 
Hello, Yuan,
I'm trying to using the irrigiation too, I found that the IRFRACT was correctedly generated in the geo_em.d01, the FIFRACT (flood irrigation fraction, the opt_irrm = 3 in my namelist,meaning the flood irrigation scheme was chosen), the irrigation amount were all 0?
Did you encounter the similar problem? Any suggestions about the irrigation in Noahmp?
Thanks!
1692151518949.png1692151525511.png
 
Hello, Yuan,
I'm trying to using the irrigiation too, I found that the IRFRACT was correctedly generated in the geo_em.d01, the FIFRACT (flood irrigation fraction, the opt_irrm = 3 in my namelist,meaning the flood irrigation scheme was chosen), the irrigation amount were all 0?
Did you encounter the similar problem? Any suggestions about the irrigation in Noahmp?
Thanks!
View attachment 10242View attachment 10243
您好!看您截图里面是中文我就中文回答了。我也遇到同样的问题,后面我用ncl脚本将geo_em.d01文件里面的IRFRACT写进wrfinput文件中。如果默认浸灌比例与单纯的灌溉比例相同的话,您也可以这么做(将geo_em.d01文件里面的IRFRACT写进wrfinput文件中的FIFRACT),模式可以正常运行。
 
您好!看您截图里面是中文我就中文回答了。我也遇到同样的问题,后面我用ncl脚本将geo_em.d01文件里面的IRFRACT写进wrfinput文件中。如果默认浸灌比例与单纯的灌溉比例相同的话,您也可以这么做(将geo_em.d01文件里面的IRFRACT写进wrfinput文件中的FIFRACT),模式可以正常运行。
Yuan,
您好!
感谢您的解答!有两个小问题再请教您:
(1)关于IRFRACT,我是在./geog运行后,调用默认的下垫面数据生成的。您指的用ncl脚本写入wrfinput文件中,是您后期又做了替换吗?
(2)关于FIFRACT,是否指定了某种灌溉方式(opt_irrm=1/2/3)后,对应这种灌溉方式的灌溉比例数据(如FIFRACT),需要手动写入wrfinput中,才能正常进行灌溉?
期待您的回复!
如果方便,是否通过邮箱加下V,期待您的来信(wangyan891216@126.com)。
祝您生活愉快,科研顺利。
 
Hello, Yuan,
I'm trying to using the irrigiation too, I found that the IRFRACT was correctedly generated in the geo_em.d01, the FIFRACT (flood irrigation fraction, the opt_irrm = 3 in my namelist,meaning the flood irrigation scheme was chosen), the irrigation amount were all 0?
Did you encounter the similar problem? Any suggestions about the irrigation in Noahmp?
Thanks!
View attachment 10242View attachment 10243
您好!我看了一下我的geo_em.d01文件,只有IRRIGATION这个量,没有IRFRACT.不知道什么原因导致这样的差异,是否可以看一下您wps时使用的namelist?
Yuan,
您好!
感谢您的解答!有两个小问题再请教您:
(1)关于IRFRACT,我是在./geog运行后,调用默认的下垫面数据生成的。您指的用ncl脚本写入wrfinput文件中,是您后期又做了替换吗?
(2)关于FIFRACT,是否指定了某种灌溉方式(opt_irrm=1/2/3)后,对应这种灌溉方式的灌溉比例数据(如FIFRACT),需要手动写入wrfinput中,才能正常进行灌溉?
期待您的回复!
如果方便,是否通过邮箱加下V,期待您的来信(wangyan891216@126.com)。
祝您生活愉快,科研顺利。
微信号已发送您的 ,请查收。
 
您好!我看了一下我的geo_em.d01文件,只有IRRIGATION这个量,没有IRFRACT.不知道什么原因导致这样的差异,是否可以看一下您wps时使用的namelist?

微信号已发送您的 ,请查收。
When you modify your WPS/GEOGRID.TBL aobut IRFRACT, add the following:
===============================
name=IRFRACT
priority=1
optional=yes
dest_type=continuous
interp_option=default:average_gcell(4.0)+four_pt+average_4pt
masked = water
fill_missing = 0.
rel_path=default:crop/irrigation_map/

and then re-run geogrid.exe ,you will get :
float IRFRACT(Time, south_north, west_east) ;
IRFRACT:FieldType = 104 ;
IRFRACT:MemoryOrder = "XY " ;
IRFRACT:units = "fraction" ;
IRFRACT:description = "Irrigation area fraction" ;
IRFRACT:stagger = "M" ;
IRFRACT:sr_x = 1 ;
IRFRACT:sr_y = 1 ;
 
When you modify your WPS/GEOGRID.TBL aobut IRFRACT, add the following:
===============================
name=IRFRACT
priority=1
optional=yes
dest_type=continuous
interp_option=default:average_gcell(4.0)+four_pt+average_4pt
masked = water
fill_missing = 0.
rel_path=default:crop/irrigation_map/

and then re-run geogrid.exe ,you will get :
float IRFRACT(Time, south_north, west_east) ;
IRFRACT:FieldType = 104 ;
IRFRACT:MemoryOrder = "XY " ;
IRFRACT:units = "fraction" ;
IRFRACT:description = "Irrigation area fraction" ;
IRFRACT:stagger = "M" ;
IRFRACT:sr_x = 1 ;
IRFRACT:sr_y = 1 ;
Thank you very much!!!
 
When you modify your WPS/GEOGRID.TBL aobut IRFRACT, add the following:
===============================
name=IRFRACT
priority=1
optional=yes
dest_type=continuous
interp_option=default:average_gcell(4.0)+four_pt+average_4pt
masked = water
fill_missing = 0.
rel_path=default:crop/irrigation_map/

and then re-run geogrid.exe ,you will get :
float IRFRACT(Time, south_north, west_east) ;
IRFRACT:FieldType = 104 ;
IRFRACT:MemoryOrder = "XY " ;
IRFRACT:units = "fraction" ;
IRFRACT:description = "Irrigation area fraction" ;
IRFRACT:stagger = "M" ;
IRFRACT:sr_x = 1 ;
IRFRACT:sr_y = 1 ;
Hi haiqingsong:

I've noticed there are several irrigation parameters in geo_em.d01.nc.
such as the IRRIGATION (irrigated land percentage); IRFRACT (irrigation area fraction); FIFRACT (flood irrigation fraction), SIFRACT (sprinkler irrigation fraction), MIFRACT (micro irrigation fraction)

can you helpe me to explain the relationshp and differences of these irrigation parameters?
and how these parameters influence the irrigation?

Looking forward to your reply.
Thanks
 
Top