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

The issue with ungrib.exe processing ERA5 SNOW data.

gouqiukai

New member
Hello,

When I use WPS to process ERA5 data, the met_em files show SNOW and SNOWH over the Tibetan Plateau that are far higher than the actual values, and the SNOWH does not match the original ERA5 data. This further leads to program crashes when I use NoahLSM and NoahMP.

When I was searching for the ungrib.exe program files, I found the following code related to ERA5 SNOW data processing in rrpr.F.

! ECMWF snow depth in meters of water equivalent (Table 128). Convert to kg/m2
!
if (is_there(200100, 'SNOW_EC')) then
call get_dims(200100, 'SNOW_EC')
allocate(scr2d(map%nx,map%ny))
call get_storage(200100, 'SNOW_EC', scr2d, map%nx, map%ny)
scr2d = scr2d * 1000.
call put_storage(200100, 'SNOW', scr2d, map%nx, map%ny)
deallocate(scr2d)
endif

The original data provided by ERA5 is snow depth, and according to the description in rrpr.F, SNOW needs to be calculated through SNOW_EC to further obtain SNOWH. However, "scr2d = scr2d * 1000" shows that the conversion from SNOW_EC (m) to SNOW (kg m-2) involves multiplying by 1000, which is inconsistent with the actual snow density range of 0.1-0.8 × 10³ kg m-3.

Additionally, ERA5 provides snow density data, SNOW_DEN (kg m-3), which might be used to calculate SNOW, or perhaps a more reasonable value could be applied.

I am not sure if my understanding is correct and would greatly appreciate your clarification.

Thanks as always.
Gou
 

Attachments

  • SNOW.png
    SNOW.png
    23.1 KB · Views: 4
Hi,
Apologies for the long delay. It seems that this post was overlooked. Are you still having trouble with this? If so, can you let me know where you get your ERA5 data from? Thanks!
 
Hi,
Apologies for the long delay. It seems that this post was overlooked. Are you still having trouble with this? If so, can you let me know where you get your ERA5 data from? Thanks!

Hi, kwerner

Thank you for your attention to this post.
I have tried to download data from NCAR RDA Dataset d633000 and Copernicus Climate Data Store | Copernicus Climate Data Store respectively.
The data obtained from both of these sources exhibits coherence and rationality, so I don't think it's the data that's causing the problem.

After that, I tried to modify the code according to the previous concept. The model no longer crashes and the results obtained after modifying the code are relatively reasonable.
The modified code is as follows
Code:
! ECMWF snow depth in meters of water equivalent (Table 128). Convert to kg/m2
!
        if (is_there(200100, 'SNOW_EC')) then
           call get_dims(200100, 'SNOW_EC')
           allocate(scr2d(map%nx,map%ny))
           call get_storage(200100, 'SNOW_EC', scr2d, map%nx, map%ny)
              if (is_there(200100, 'SNOW_DEN')) then        ! If we have snow density, use it to compute snowh
              call get_dims(200100, 'SNOW_DEN')
              allocate(tmp2d(map%nx,map%ny))
              call get_storage(200100, 'SNOW_DEN', tmp2d, map%nx, map%ny)
              scr2d = scr2d * tmp2d
              deallocate(tmp2d)
            else
              scr2d = scr2d * 200     ! otherwise, assume a density of 0.2*103 kg/m3
            endif
!scr2d = scr2d * 1000.
           call put_storage(200100, 'SNOW', scr2d, map%nx, map%ny)
           deallocate(scr2d)
        endif

But I'm not sure this is the right way to modify model, or if I'm ignoring other problems.

Looking forward to any suggestions from you, thanks!
 
Hi,
I'm glad to hear that you were able to modify it and get it to work. If your results are reasonable and expected, then I think your modifications are probably okay.
 
Top