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

WRF-UCM problem ./wrf.exe only output the first time period [GFS/FNL used]

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.

lslrsgis

Member
Dear WRF community,

I am using WRF-UCM to do a 24-hour simulation for New York region. GFS/FNL is used to generate boundary condition and initial condition. The nested domains are set as 9km, 3km, 1km.
The option urban was turned on for the 3rd domain: sf_urban_physics = 0, 0, 1,

It goes well when WPS, and ./real.exe. It runs without error for ./wrf.exe, however, it only generates the wrfout output files for 1st, 2nd domains for the initial time period: wrfout_d01_2000-01-24_12:00:00, wrfout_d02_2000-01-24_12:00:00.

Files for the remaining time periods and domain 03 as:

wrfout_d03_2000-01-24_12:00:00
wrfout_d02_2000-01-24_13:00:00
wrfout_d03_2000-01-24_13:00:00
wrfout_d02_2000-01-24_14:00:00
wrfout_d03_2000-01-24_14:00:00
wrfout_d01_2000-01-24_15:00:00

are not generated!

I have recompiled WRF folder with serial option. For serial option, it works well when running ./real.exe. However, after executing ./wrf.exe, it prompted an error as follows. It seems that wrf encountered problem for domain 03 (using urban option.) Any help is appreciated! Thanks.

-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 771
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
mediation_integrate.G 1943 DATASET=HISTORY
mediation_integrate.G 1944 grid%id 1 grid%oid 1
mediation_integrate.G 1943 DATASET=HISTORY
mediation_integrate.G 1944 grid%id 2 grid%oid 2
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 771
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------

What should I do? Thanks in advance.

P.S. WRF log file and namelist.input are attached.
 

Attachments

  • namelist.input
    3.9 KB · Views: 118
  • log.wrf.20190814.txt
    11.1 KB · Views: 86
Hi,
In order to use the urban option, you must set it the same for each domain. So you need to also turn it on for d01 and d02. I'm actually surprised that you didn't get an error for that. Can you change that and see if you are still getting an error? Have you modified any of the code, or is it the original "out-of-the-box" code?
 
Thanks. I am using the out-of-box WRF code.

Sorry, I am using urban options in the previous post above : sf_urban_physics = 1, 1, 1 (all turned on as in attached namelist.input). The namelist.input and log files are corresponding to this configuration.

I am wondering how to solve this error?

-------------------------------------------
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
 
Hi,
This error message essentially means that the urban canopy height is higher than the first model level. You could try one of two things:

1) Increase the height of the first model level by using the namelist parameter "eta_levels" to explicitly declare each of your model levels, making sure that the full urban canopy is beneath the first model level. If you are interested in the levels that were given by the model (without you specifying them), you can use the command:
Code:
ncdump -v ZNW wrfout_d01_YYYY_MM_DD_HH:mm:ss
(obviously using the actual file name, in the place of the wrfout file listed above in the command).

2) As an alternative, you could also try to reduce the value of ZR, found in the URBPARM.TBL.
 
I am still puzzled with the first atmospheric level.

I have looked into ZNW of wrfout through ncview:

Title=ZNW

Legend=(Time) = (0)
bottom_top_stag ZNW ()
0.000000 1.000000
1.000000 0.993815
2.000000 0.985951
3.000000 0.976014
4.000000 0.963558
5.000000 0.948093
6.000000 0.929124
7.000000 0.906191
8.000000 0.878942
9.000000 0.847208
10.000000 0.811078
11.000000 0.770949
12.000000 0.727525
13.000000 0.684031
14.000000 0.642961
15.000000 0.604181
16.000000 0.567563
17.000000 0.532986
18.000000 0.500338
19.000000 0.469509
20.000000 0.440399
21.000000 0.412912
22.000000 0.386957
23.000000 0.362450
24.000000 0.339309
25.000000 0.317458
26.000000 0.296825
27.000000 0.277342
28.000000 0.258946
29.000000 0.241575
30.000000 0.225173
31.000000 0.209685
32.000000 0.195060
33.000000 0.181251
34.000000 0.168212
35.000000 0.155900
36.000000 0.144274
37.000000 0.133296
38.000000 0.122930
39.000000 0.113143
40.000000 0.103901
41.000000 0.095174
42.000000 0.086933
43.000000 0.079152
44.000000 0.071805
45.000000 0.064868
46.000000 0.058317
47.000000 0.052132
48.000000 0.046291
49.000000 0.040776
50.000000 0.035568
51.000000 0.030651
52.000000 0.026008
53.000000 0.021624
54.000000 0.017484
55.000000 0.013575
56.000000 0.009884
57.000000 0.006398
58.000000 0.003107
59.000000 0.000000

Is that "1.000000 0.993815" represent the first atmosphere level?

Further, in log.real file after executing ./real.exe:

Full level index = 1 Height = 0.0 m
Full level index = 2 Height = 50.0 m Thickness = 50.0 m
Full level index = 3 Height = 113.9 m Thickness = 63.9 m
Full level index = 4 Height = 195.2 m Thickness = 81.3 m
Full level index = 5 Height = 298.0 m Thickness = 102.8 m
Full level index = 6 Height = 427.2 m Thickness = 129.1 m
Full level index = 7 Height = 587.8 m Thickness = 160.7 m
Full level index = 8 Height = 785.5 m Thickness = 197.7 m
Full level index = 9 Height = 1025.6 m Thickness = 240.0 m
Full level index = 10 Height = 1312.6 m Thickness = 287.0 m
Full level index = 11 Height = 1649.6 m Thickness = 337.0 m
Full level index = 12 Height = 2037.7 m Thickness = 388.2 m
Full level index = 13 Height = 2475.6 m Thickness = 437.9 m
Full level index = 14 Height = 2934.7 m Thickness = 459.1 m
Full level index = 15 Height = 3388.9 m Thickness = 454.3 m
Full level index = 16 Height = 3838.4 m Thickness = 449.4 m
Full level index = 17 Height = 4283.0 m Thickness = 444.6 m
Full level index = 18 Height = 4722.8 m Thickness = 439.8 m
Full level index = 19 Height = 5157.8 m Thickness = 435.0 m
Full level index = 20 Height = 5588.0 m Thickness = 430.2 m
Full level index = 21 Height = 6013.4 m Thickness = 425.4 m
Full level index = 22 Height = 6434.0 m Thickness = 420.6 m
Full level index = 23 Height = 6849.7 m Thickness = 415.8 m
Full level index = 24 Height = 7260.7 m Thickness = 410.9 m
Full level index = 25 Height = 7666.8 m Thickness = 406.1 m
Full level index = 26 Height = 8068.1 m Thickness = 401.3 m
Full level index = 27 Height = 8464.6 m Thickness = 396.5 m
Full level index = 28 Height = 8856.3 m Thickness = 391.7 m
Full level index = 29 Height = 9243.2 m Thickness = 386.9 m
Full level index = 30 Height = 9625.2 m Thickness = 382.1 m
Full level index = 31 Height = 10002.5 m Thickness = 377.3 m
Full level index = 32 Height = 10374.9 m Thickness = 372.4 m
Full level index = 33 Height = 10742.6 m Thickness = 367.6 m
Full level index = 34 Height = 11105.4 m Thickness = 362.8 m
Full level index = 35 Height = 11463.4 m Thickness = 358.0 m
Full level index = 36 Height = 11816.6 m Thickness = 353.2 m
Full level index = 37 Height = 12165.0 m Thickness = 348.4 m
Full level index = 38 Height = 12508.5 m Thickness = 343.6 m
Full level index = 39 Height = 12847.3 m Thickness = 338.8 m
Full level index = 40 Height = 13182.8 m Thickness = 335.6 m
Full level index = 41 Height = 13518.4 m Thickness = 335.6 m
Full level index = 42 Height = 13854.0 m Thickness = 335.6 m
Full level index = 43 Height = 14189.5 m Thickness = 335.6 m
Full level index = 44 Height = 14525.1 m Thickness = 335.6 m
Full level index = 45 Height = 14860.7 m Thickness = 335.6 m
Full level index = 46 Height = 15196.2 m Thickness = 335.6 m
Full level index = 47 Height = 15531.8 m Thickness = 335.6 m
Full level index = 48 Height = 15867.4 m Thickness = 335.6 m
Full level index = 49 Height = 16202.9 m Thickness = 335.6 m
Full level index = 50 Height = 16538.5 m Thickness = 335.6 m
Full level index = 51 Height = 16874.0 m Thickness = 335.6 m
Full level index = 52 Height = 17209.6 m Thickness = 335.6 m
Full level index = 53 Height = 17545.2 m Thickness = 335.6 m
Full level index = 54 Height = 17880.7 m Thickness = 335.6 m
Full level index = 55 Height = 18216.3 m Thickness = 335.6 m
Full level index = 56 Height = 18551.9 m Thickness = 335.6 m
Full level index = 57 Height = 18887.4 m Thickness = 335.6 m
Full level index = 58 Height = 19223.0 m Thickness = 335.6 m
Full level index = 59 Height = 19558.6 m Thickness = 335.6 m
Full level index = 60 Height = 19894.1 m Thickness = 335.6 m


It seems that Height of the level index = 2 is 50m.

---------------------------------------------------------------------------------------------------
in URBPARM.TBL file, the max ZR=10m:
#
# ZR: Roof level (building height) [ m ]
# (sf_urban_physics=1)

ZR: 5.0, 7.5, 10.0
--------------------------------------------------------------------------------------------------

Thus, ZDC+Z0C+2m = 1/5 ZR + 1/10 ZR + 2m <=1/5*10m+1/10*10m+2m = 2m+1m+2m = 5m

ZA=first atmospheric level height = 50m

Why should ZDC+Z0C+2m > ZA ?
 
Hi,
In your list above, "1.000000 0.993815" means that 0.993815 is the eta value at the first level above the ground.

As for the value of ZDC+Z0C+2, and ZA, you could try adding some print statements in your code to see what values you are getting to see if it makes sense.
 
Thanks for the helpful reply. I have printed the variables out through recompiling.

WRF TILE 1 IS 1 IE 283 JS 1 JE 280
WRF NUMBER OF TILES = 1
ZDC 29.5920773
Z0C 2.86320090
ZA 23.3346367
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C

It is true that ZDC (29.59) + Z0C (2.86) + 2m > ZA (23.33).

The question is that how to make ZA (the first model level) larger? I have checked the User's Guide (4-9, Setting Model Vertical Levels), but not very clear with the options. It seems that one can adjust e_vert, p_top_requested in the namelist.input. Currently, e_vert=60, p_top_requested=5000 in the namelist.input.

(1) Would you specify a little more with what to do with ZA?
(2) I am wondering why ZA (23.33m) is not 50m as indicated by the printing information of ./real.exe (see above post).

Thanks in advance.
 
Hi,
I would recommend trying to decrease the number of vertical levels you are using. You are currently using 60. The standard number of levels used is between 40 and 60, and as your domain is an average size domain, perhaps setting e_vert to the upper limit of 60 is a bit much. I believe if you decreased that number, then perhaps the lowest model level would be thicker.

As for the explanation of ZA having a value less than the first model level of 50, I'm not exactly sure. We did not write these urban routines in our group, and therefore I don't have any expertise on this. From what I can gather from the code, the Noah driver calls the urban subroutine and renames ZA to za_urb, and then:
za_urb = ZLVL
ZLVL = 0.5 * DZ8W
In the surface driver, in subroutine phy_prep, DZ8W is defined as:
DZ8W = z_at_w(i,k+1,j) - z_at_w(i,k,j)

which looks like layer thickness. So because ZLVL (which is ZA) is the value of 50% the thickness, ZA should be 1/2 of the actual thickness. As to why it should be this way, and why it's not exactly 25, and is actually giving you a value of 23.33, I'm not sure. If it's helpful at all, documentation and other information can be found here:
https://ral.ucar.edu/solutions/products/urban-canopy-model
Perhaps you can contact someone in that group to get some more solid answers. I can also ask around here to see if anyone knows. I'll let you know if I get any better answers.
 
Thanks for the detailed information.

I have changed e_vert=40 in namelist.input and redo ./real.exe and ./wrf.exe, however, ZA does not change much (the first 6 digitals are the same as e_vert=60).

------------------------------------------------------------------------------------------------------------------------------------------------------------
./wrf log prompted on the screen when e_vert = 60
------------------------------------------------------------------------------------------------------------------------------------------------------------
WRF TILE 1 IS 1 IE 283 JS 1 JE 280
WRF NUMBER OF TILES = 1
ZDC 29.5920773
Z0C 2.86320090
ZA 23.3346367
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------





------------------------------------------------------------------------------------------------------------------------------------------------------------
./wrf log prompted on the screen when e_vert = 40
------------------------------------------------------------------------------------------------------------------------------------------------------------
mediation_integrate.G 1943 DATASET=HISTORY
mediation_integrate.G 1944 grid%id 2 grid%oid 2
Timing for Writing wrfout_d02_2000-01-24_12:00:00 for domain 2: 3.00157 elapsed seconds
Tile Strategy is not specified. Assuming 1D-Y
WRF TILE 1 IS 1 IE 283 JS 1 JE 280
WRF NUMBER OF TILES = 1
ZDC 29.5920773
Z0C 2.86320090
ZA 23.3346291
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 778
ZDC + Z0C + 2m is larger than the 1st WRF level Stop in subroutine urban - change ZDC and Z0C
-------------------------------------------
 
Hi,
Okay, the next suggestion is to explicitly specify eta_levels, making the first model level higher.

Also, to address some of the questions I wasn't able to answer in my previous post, I asked a colleague who said that
ZNW is the height of the full model level. ZA is the height of the half model level. For the first layer above ground, ZA = 0.5 * ZNW.

For your case, the average ZA=25m. But in the location you printed, you get a value of ZA=23.33 because the terrain height is different at different grid points, and as a result, the model level height could also be different. Additionally, the calculation of
ZDC+Z0C+2m = 1/5 ZR + 1/10 ZR + 2m
is not correct because ZDC and Z0C are both dependent on other scale factors, as is shown below (from phys/module_sf_urban.F):
ZDC = ZR * ( 1.0 + ( alpha_macd ** ( -R ) ) * ( R - 1.0 ) )
Z0C = ZR * ( 1.0 - ZDC/ZR ) * &
exp (-(0.5 * beta_macd * Cd / (VonK**2) * ( 1.0-ZDC/ZR) * lambda_f )**(-0.5))
 
kwerner said:
Hi,
In your list above, "1.000000 0.993815" means that 0.993815 is the eta value at the first level above the ground.

As for the value of ZDC+Z0C+2, and ZA, you could try adding some print statements in your code to see what values you are getting to see if it makes sense.

Hi,
I have faced a similar error. How do I add the print statements? Which module needs the modifications?
 
@EeshanBasu,
The WRF code is written in Fortran code. To add a print statement, you use the syntax:

print *, "string of words you want printed", variable

So if you wanted to print out the value of ZDC, you could add something like
Code:
print *, "ZDC = ", ZDC

Regarding to which module you would add the code, when you get an error, try searching for that error in any of the *.F files. So for this particular error, you could say (from the top-level WRF directory)
Code:
grep "ZDC + Z0C + 2m" */*.F
This is asking for any occurrences of that string in any directory inside the WRF/ directory, and in any file with the suffix ".F"

You can search a page for fortran language to learn about any other components about fortran.
 
Top