real.exe "ERROR while reading namelist domains" near ref_lat for simple 1-domain ERA5 run (WRF 4.7.1)

rohan

New member
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:


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​


  1. 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?
  2. 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?
  3. 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!
 
Thanks, ---- I need uploaded namelist.input, which makes it easy for me to check.

Please delete the following options, then try again:

Code:
 ref_lat                 = -32.678,
 ref_lon                 = 151.132,
 truelat1                = -30.,
 truelat2                = -35.,
 stand_lon               = 151.,
 
starting wrf task 0 of 1
taskid: 0 hostname: rohan-Dell-Pro-Slim-Plus-QBS1250
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


I have commented out those variables inside namelist.input, and after running again I got above error.
 
Back
Top