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

real.exe V4.0 surface pressure bug

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

VinceFromFrance

New member
Dear All

on the same topic, I upgraded the WRF/WPS codes from 3.9.1 to 4.0 (intel / linux)

The WPS/WRF codes give all the input and output files.

But the real.exe seems to have a bug in the initial surface pressure values (values > 1050 hPa with GFS as inputs) which seems to affect the WRF runs. with strange propagation in surface winds.

Thanks for any comments on this

VG
 
@VinceFromFrance

Can you send me a couple of GFS data files that have values >1050 hPa, in addition to your namelist.input and namelist.wps?
Can you also let me know what you are seeing in the real initialization that lets you know there is a bug (if you have a figure, that would be useful)?
 
There is a known bug in start_em that has been fixed, but not committed. The workaround is to set "use_theta_m=0". The symptom is bad surface/sea-level pressure fields in the time 0 wrfout file.
 
Thank you dcvz99! That is correct.

We are now aware of an error in the the wrf.exe program, noticeable in the pressure field, related to the usage of the moist potential temperature option (use_theta_m=1). In the WRF/dyn_em/start_em.F file, near line 782, the original code ALWAYS includes the scale factor of 1+Rv/Rd*Qv for the potential temperature. In the case that the incoming potential temperature variable is already moist theta (i.e., the user has set use_theta_m=1, which is now the default), then this is a repeated scaling.

Here is the original code, which is incorrect for use_theta_m=1:

781 #else
782 qvf = 1.+rvovrd*moist(i,k,j,P_QV)
783 grid%p(i,k,j)=p1000mb*( (r_d*(t0+grid%t_1(i,k,j))*qvf)/ &
784 (p1000mb*(grid%al(i,k,j)+grid%alb(i,k,j))) )**cpovcv &
785 -grid%pb(i,k,j)
786 #endif

The code should functionally be:

781 #else
IF(config_flags%use_theta_m == 0 ) THEN
782 qvf = 1.+rvovrd*moist(i,k,j,P_QV)
ELSE
qvf = 1
END IF
783 grid%p(i,k,j)=p1000mb*( (r_d*(t0+grid%t_1(i,k,j))*qvf)/ &
784 (p1000mb*(grid%al(i,k,j)+grid%alb(i,k,j))) )**cpovcv &
785 -grid%pb(i,k,j)
786 #endif
 
Top