problem with ERA-Interim data - missing surface fields

Dataset specific topics involving WPS.

problem with ERA-Interim data - missing surface fields

Postby cgnolte » Tue Jan 03, 2012 5:35 pm

I am trying to run WRF using a 0.75 x 0.75-degree version of the ERA-interim data.
However, I am having a great deal of difficulty getting the ERA-Interim data properly ingested into WRF. REAL crashes immediately, during initialization. Here is the end of the rsl.error file:

d01 1989-01-01_00:00:00 st_levels_input = 3 17 64 177
d01 1989-01-01_00:00:00 sm_levels_input = 3 17 64 177
d01 1989-01-01_00:00:00 sw_levels_input = 3 17 64 177
Missing surface temp, replaced with closest level, use_surface set to false.
Missing surface RH, replaced with closest level, use_surface set to false.
Missing surface u wind, replaced with closest level, use_surface set to false.
Missing surface v wind, replaced with closest level, use_surface set to false.
forrtl: severe (66): output statement overflows record, unit -5, file Internal Formatted Write
Image PC Routine Line Source
real.exe 000000000188654D Unknown Unknown Unknown
real.exe 0000000001885055 Unknown Unknown Unknown
real.exe 0000000001826729 Unknown Unknown Unknown
real.exe 00000000017C509F Unknown Unknown Unknown
real.exe 00000000017C48D2 Unknown Unknown Unknown
real.exe 0000000001804200 Unknown Unknown Unknown
real.exe 0000000000430D3A module_initialize 719 module_initialize_real.f90
real.exe 000000000041E82E module_initialize 28 module_initialize_real.f90
real.exe 000000000040EC53 med_sidata_input_ 418 real_em.f90
real.exe 000000000040DDFA MAIN__ 246 real_em.f90
real.exe 000000000040D2BC Unknown Unknown Unknown 00002B91CE0F8994 Unknown Unknown Unknown
real.exe 000000000040D1C9 Unknown Unknown Unknown

I am using WRF and WPS versions 3.3.1, but I have tried versions 3.2.1 and 3.1.1, all with the same result. I have tried different days, to ensure that this is not due to one corrupted file.

This data set contains Q, T, U, and V on hybrid model levels (GRIB level 109), soil temperature
and moisture for four soil levels, surface geopotential and land-sea mask, and log of surface pressure. There are no near-surface temperature, moisture, or wind fields in the data set.

I am using WRF and WPS v3.3.1, with Vtable.ECMWF_sigma, though I have tried other Vtables and always get the same error. This Vtable has records for near-surface winds, temperature, RH, and SNOW, which are not present in the data I have.

Next, I am running calc_ecmwf_p.exe, using the coefficients provided here: ... ef_60.html
This program appears to run correctly. rd_intermediate.exe shows that the PRES files contain PRESSURE, RH, and GHT fields on levels 1-60, and PRESSURE on level 200100.

Next, I run metgrid using the FILE: and PRES: files as input and the default ARW METGRID.TBL. Metgrid appears to run correctly. There are no obvious problems with the met_em files. num_metgrid_levels is 61. The lowest layer has missing data for fields TT, UU, VV, and SPECHUMD, but the other layers seem okay. The ST and SM fields also seem reasonable.

The problem is when I run real. I get the above "output statement overflows record" error no matter what I do. Increasing the debug_level does not generate anything that I recognize as being useful. I am using Intel Fortran 11.1 on Linux x86_64, with MPI, but I have successfully run WRF using other data sets, so I believe this problem is not due to a compiler or other system configuration issue.

Thinking that the problem may be due to trying to use the surface fields, I am specifying these namelist parameters:
Code: Select all
 force_sfc_in_vinterp                = 0,
 interp_type                         = 2,
 extrap_type                         = 2,
 t_extrap_type                       = 2,
 use_levels_below_ground             = .false.,
 use_surface                         = .false.,
 lowest_lev_from_sfc                 = .false.,
 sfcp_to_sfcp                        = .false.,

Is it possible to run WRF without near-surface Q,T,U,V fields? Does one need to fill in the near-surface data with hybrid level 1 somehow, rather than leave it as missing? A few posters here have said that the surface fields are required, which is also what the online tutorial says here: ... fields.htm
But if that's the case, then I do not understand the purpose of the use_surface namelist parameter, and the warning messages "Missing surface temperature/u wind/v wind/RH, replaced with closest level" would be totally misleading.

I would appreciate any suggestions or guidance as to where I am going wrong.

Chris Nolte
Posts: 4
Joined: Tue Jul 22, 2008 10:05 am

Re: problem with ERA-Interim data - missing surface fields

Postby jychen_2005 » Sat Jan 07, 2012 3:16 am

If u try ERA-interim data, u can take a look of this post:


it should be solve your problem.

for my experience, I would like use p-level data, much straight-forward.

ChihYing Chen
NCU, Taiwan
Posts: 2
Joined: Wed Apr 16, 2008 8:07 am

Re: problem with ERA-Interim data - missing surface fields

Postby cgnolte » Fri Jan 13, 2012 12:29 pm

The "output statement overflows record" crash was because the error message REAL was trying to write is longer than the character array variable that holds the message. To fix this, go to dyn_em/module_initialize_real.F and change this line:
CHARACTER (LEN=80) :: a_message
and increase LEN to 120. (Alternatively, one could break up the error message into two separate calls.)

The root cause of the error was because there was no PSFC field in the met_em files. The calc_ecmwf_p.exe and metgrid programs correctly(?) filled in the surface layer of the PRES field, but did not separately create PSFC, which is needed by REAL. There might be some way of modifying METGRID.TBL to generate PSFC, but we modified ungrib.F in the manner specified in this thread: ... 00883.html

and added this block to rrpr.F:
! Check to see if we need to fill PSFC from LOGSFP.
! (From Jared Bowden, 2012 Jan 10)
if (.not. is_there(200100, 'PSFC') .and. &
is_there(200100, 'LOGSFP')) then
call get_dims(200100, 'LOGSFP')
call get_storage(200100, 'LOGSFP', scr2d, map%nx, map%ny)
scr2d = EXP(scr2d)
call put_storage(200100, 'PSFC', scr2d, map%nx, map%ny)
Posts: 4
Joined: Tue Jul 22, 2008 10:05 am

Return to Working with Various Datasets

Who is online

Users browsing this forum: No registered users and 5 guests