Hi all,
I’m running WRF v4.7.1 with ERA5 forcing over a small Lambert domain in New South Wales (Australia). geogrid.exe, ungrib.exe, and metgrid.exe all complete successfully, but real.exe fails immediately with:
This happens consistently, even though the &domains block looks standard and ref_lat itself seems fine.
geogrid.exe completes successfully and produces geo_em.d01.nc. The domain extents are:
ungrib.exe runs without errors.
metgrid.exe also completes cleanly:
So WPS appears to be configured correctly, and the met_em files for d01 exist and cover the requested period.
In ~/WRF/WRF/run I run:
And I consistently get:
No wrfinput_d01 or wrfbdy_d01 files are created.
As a sanity check, if I copy an official test namelist from ../test/em_quarter_ss/namelist.input, real.exe does get past &domains and then fails later with a date error (as expected for that test case). So the binary itself seems fine.
I also checked for hidden characters:
cat -vet namelist.input | sed -n '1,120p'
Everything looks normal (only $ at end of lines), no strange characters around ref_lat.
namelist.input (current):
I realise this is difficult to reproduce end-to-end (I can’t easily share all forcing files), but I hope the full namelist and log snippet above are enough to spot what I’m missing.
Any pointers would be greatly appreciated.
Thanks in advance!
I’m running WRF v4.7.1 with ERA5 forcing over a small Lambert domain in New South Wales (Australia). geogrid.exe, ungrib.exe, and metgrid.exe all complete successfully, but real.exe fails immediately with:
Code:
------ ERROR while reading namelist domains ------
Maybe here?:
Maybe here?: ref_lat = -32.678,
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 11700
ERRORS while reading one or more namelists from namelist.input.
This happens consistently, even though the &domains block looks standard and ref_lat itself seems fine.
Setup
- WRF version: 4.7.1 (real.exe and wrf.exe compiled successfully)
- Forcing: ERA5 (pressure + single levels), 3-hourly
- Projection: Lambert conformal, centered roughly over NSW
- WPS and WRF are in ~/WRF/WPS and ~/WRF/WRF/run
What works
1. geogrid.exe
geogrid.exe completes successfully and produces geo_em.d01.nc. The domain extents are:
Code:
# using xarray
lat: -36.6449 to -28.6218
lon: 146.2059 to 156.0697
2. ungrib.exe + metgrid.exe
ungrib.exe runs without errors.
metgrid.exe also completes cleanly:
Code:
*** Successful completion of program metgrid.exe ***
OUTPUT/met_em.d01.2025-07-01_00:00:00.nc
OUTPUT/met_em.d01.2025-07-01_03:00:00.nc
...
So WPS appears to be configured correctly, and the met_em files for d01 exist and cover the requested period.
What fails: real.exe
In ~/WRF/WRF/run I run:
Code:
rm -f rsl.out.0* rsl.error.0*
./real.exe
tail -n 60 rsl.error.0000
And I consistently get:
Code:
starting wrf task 0 of 1
taskid: 0 hostname: <hostname>
module_io_quilt_old.F 2931 T
------ ERROR while reading namelist domains ------
Maybe here?:
Maybe here?: ref_lat = -32.678,
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 11700
ERRORS while reading one or more namelists from namelist.input.
-------------------------------------------
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0
No wrfinput_d01 or wrfbdy_d01 files are created.
As a sanity check, if I copy an official test namelist from ../test/em_quarter_ss/namelist.input, real.exe does get past &domains and then fails later with a date error (as expected for that test case). So the binary itself seems fine.
I also checked for hidden characters:
cat -vet namelist.input | sed -n '1,120p'
Everything looks normal (only $ at end of lines), no strange characters around ref_lat.
My current namelists
namelist.wps
Code:
&share
wrf_core = 'ARW',
max_dom = 1,
start_date = '2025-07-01_00:00:00',
end_date = '2025-10-31_23:00:00',
interval_seconds = 10800,
io_form_geogrid = 2,
opt_output_from_geogrid_path = '/home/rohan/WRF/WPS/OUTPUT/',
/
&geogrid
parent_id = 1,
parent_grid_ratio = 1,
i_parent_start = 1,
j_parent_start = 1,
e_we = 100,
e_sn = 100,
dx = 9000.,
dy = 9000.,
map_proj = 'lambert',
ref_lat = -32.678,
ref_lon = 151.132,
truelat1 = -30.,
truelat2 = -35.,
stand_lon = 151.,
geog_data_res = 'default',
geog_data_path = '/home/rohan/WRF/WPS_GEOG_HIGHRES',
opt_geogrid_tbl_path = './geogrid/',
/
&ungrib
out_format = 'WPS',
prefix = 'ERA5',
/
&metgrid
fg_name = 'ERA5',
io_form_metgrid = 2,
opt_output_from_metgrid_path = '/home/rohan/WRF/WPS/OUTPUT/',
/
namelist.input (current):
Code:
&time_control
run_days = 122,
run_hours = 23,
run_minutes = 0,
run_seconds = 0,
start_year = 2025, 2025, 2025, 2025, 2025,
start_month = 07, 07, 07, 07, 07,
start_day = 01, 01, 01, 01, 01,
start_hour = 00, 00, 00, 00, 00,
end_year = 2025, 2025, 2025, 2025, 2025,
end_month = 10, 10, 10, 10, 10,
end_day = 31, 31, 31, 31, 31,
end_hour = 23, 23, 23, 23, 23,
interval_seconds = 10800,
input_from_file = .true., .true., .true., .true., .true.,
history_interval = 60, 60, 60, 60, 60,
frames_per_outfile = 1, 1, 1, 1, 1,
restart = .false.,
restart_interval = 1440,
io_form_history = 2,
io_form_restart = 2,
io_form_input = 2,
io_form_boundary = 2,
/
&domains
time_step = 45,
max_dom = 1,
e_we = 100, 100, 100, 100, 100,
e_sn = 100, 100, 100, 100, 100,
e_vert = 40, 40, 40, 40, 40,
p_top_requested = 5000.,
num_metgrid_levels = 37,
num_metgrid_soil_levels = 4,
dx = 9000., 3000., 1000., 333.3333, 111.1111,
dy = 9000., 3000., 1000., 333.3333, 111.1111,
grid_id = 1, 2, 3, 4, 5,
parent_id = 1, 1, 2, 3, 4,
parent_grid_ratio = 1, 3, 3, 3, 3,
parent_time_step_ratio = 1, 3, 3, 3, 3,
i_parent_start = 1, 34, 34, 34, 34,
j_parent_start = 1, 34, 34, 34, 34,
feedback = 0,
smooth_option = 0,
ref_lat = -32.678,
ref_lon = 151.132,
truelat1 = -30.,
truelat2 = -35.,
stand_lon = 151.,
/
&physics
mp_physics = 3, 3, 3, 3, 3,
ra_lw_physics = 1, 1, 1, 1, 1,
ra_sw_physics = 1, 1, 1, 1, 1,
radt = 30, 30, 30, 30, 30,
sf_sfclay_physics = 1, 1, 1, 1, 1,
sf_surface_physics = 2, 2, 2, 2, 2,
bl_pbl_physics = 1, 1, 1, 1, 1,
bldt = 0, 0, 0, 0, 0,
cu_physics = 0, 0, 0, 0, 0,
cudt = 0, 0, 0, 0, 0,
isfflx = 1,
ifsnow = 0,
icloud = 1,
surface_input_source = 1,
num_soil_layers = 4,
num_land_cat = 21,
/
&fdda
/
&dynamics
hybrid_opt = 2,
w_damping = 0,
diff_opt = 2, 2, 2,
km_opt = 4, 4, 4,
diff_6th_opt = 0, 0, 0,
diff_6th_factor = 0.12, 0.12, 0.12,
base_temp = 290.,
damp_opt = 3,
zdamp = 5000.,
dampcoef = 0.2,
khdif = 0,
kvdif = 0,
non_hydrostatic = .true., .true., .true., .true., .true.,
moist_adv_opt = 1, 1, 1, 1, 1,
scalar_adv_opt = 1, 1, 1, 1, 1,
gwd_opt = 1, 1, 1, 1, 1,
/
&bdy_control
spec_bdy_width = 5,
specified = .true.,
/
&grib2
/
&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/
What I’ve already tried
- Shorter run (1–2 days) and corresponding shorter WPS period → same ref_lat error.
- Changing max_dom to 1 and removing extra elements in arrays → same error.
- Re-typing the &domains block from scratch, checking with cat -vet.
- Using a test-case namelist from ../test: confirms real.exe itself parses a namelist correctly and then fails for other (expected) reasons.
Questions
- Is there anything obviously wrong or inconsistent in my &domains block that could cause real.exe to fail at “ERROR while reading namelist domains” even though the syntax looks fine?
- Is it a problem that max_dom = 1 but some arrays (e.g. e_we, dx, etc.) still have 5 entries, or should that be acceptable as long as the first value is used?
- Are there any known issues with WRF 4.7.1 + ERA5 where num_metgrid_levels / num_metgrid_soil_levels or the Lambert settings might trigger a namelist parsing error?
I realise this is difficult to reproduce end-to-end (I can’t easily share all forcing files), but I hope the full namelist and log snippet above are enough to spot what I’m missing.
Any pointers would be greatly appreciated.
Thanks in advance!