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

does WRF needs TSK from global data

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.

davidwrf

Member
Hi,

I'm trying to run WRF using ERA5 data.
I understand that WRF does not need a TSK field from ERA 5. Is that correct?

If it is correct, how does wrf produces an initial TSK field for the wrfinput?

David
 
TSK is skintemp and it is a required variable. Please see https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V3.9/users_guide_chap3.html#_Required_Meteorological_Fields

I am curious why you think WRF doesn't need TSK from ERA5?
 
Thanks.

There are several reasons why I thought WRF does not need a TSK field from ERA5:
1. It does not appear in the Vtable, only skin temp. of sea.
2. I tried running WPS and real.exe without the TSK field in the ERA5, and I could get wrfinput files, and even run wrf.exe.

What do I miss...?
 
I just checked the ERA5 data NCAR CISL provided in their website. One dataset WRF/WPS needs is (just an example):
e5.oper.an.sfc.128_235_skt.regn320sc.2013080100_2013083123.grb
this dataset provides skin temperature, which serves as TSK at the initial time of model run.
If this data is not available, then SST over land is taken as skin temp.

When we ungird ERA5 data, we use Vatble.ECMWF. Note that this table does include skin temp:

235 | 1 | 0 | | SKINTEMP | K | Sea-Surface Temperature |
 
Thanks for the detailed answer.

I now realized the skin temperature line in the Vtable.
I am still struggling with two points:
1. When I plot the SST field from the ERA5 raw data, it does not cover land areas.
2. When I omit the skin temperature field from ERA5, and then run WPS and real.exe, the TSK field in wrfinput shows
a very "nice" and detailed field that follows the detailed complex topography. It does not look like a field that in any sense
resembles an SST over land. Moreover, I tried it for 3 different events, and it turns out that the TSK fields produced in this way (in wrfinput) for the three cases are the same over land.
 
David,
Please take a look at the code dyn_em/module_initialize_real.F, in which you will find the piece of codes below:
Code:
     IF ( config_flags%use_tavg_for_tsk ) THEN
         IF ( we_have_tsk .OR. we_have_tavgsfc ) THEN
           !  we are OK
         ELSE
            CALL wrf_error_fatal ( 'We either need TSK or TAVGSFC, verify these fields are coming from WPS' )
         END IF

It indicates that WRF needs TSK as input.

In cases the input data doesn't have this variable, REAL tries to use SST to represent TSK:
Code:
      !  Fix grid%tmn and grid%tsk.

      fix_tsk_tmn : SELECT CASE ( model_config_rec%sf_surface_physics(grid%id) )

         CASE ( SLABSCHEME , LSMSCHEME , NOAHMPSCHEME , RUCLSMSCHEME, PXLSMSCHEME,CLMSCHEME, SSIBSCHEME )
            DO j = jts, MIN(jde-1,jte)
               DO i = its, MIN(ide-1,ite)
                  IF ( skip_middle_points_t ( ids , ide , jds , jde , i , j , em_width , hold_ups ) ) CYCLE
                  IF ( ( grid%landmask(i,j) .LT. 0.5 ) .AND. ( flag_sst .EQ. 1 ) .AND. &
                       ( grid%sst(i,j) .GT. 170. ) .AND. ( grid%sst(i,j) .LT. 400. ) ) THEN
                     grid%tmn(i,j) = grid%sst(i,j)
                     grid%tsk(i,j) = grid%sst(i,j)
                  ELSE IF ( grid%landmask(i,j) .LT. 0.5 ) THEN
                     grid%tmn(i,j) = grid%tsk(i,j)
                  END IF
               END DO
            END DO
      END SELECT fix_tsk_tmn

If SST is not available, then t2 is used to represent TSK:

Code:
     !  Is the grid%tsk reasonable?

      IF ( internal_time_loop .NE. 1 ) THEN
         DO j = jts, MIN(jde-1,jte)
            DO i = its, MIN(ide-1,ite)
               IF ( skip_middle_points_t ( ids , ide , jds , jde , i , j , em_width , hold_ups ) ) CYCLE
               IF ( grid%tsk(i,j) .LT. 170 .or. grid%tsk(i,j) .GT. 400. ) THEN
                  grid%tsk(i,j) = grid%t_2(i,1,j)
               END IF
            END DO
         END DO
...


Please take a look at the code and let me know if you still have questions.
 
davidwrf said:
Thanks for the detailed answer.

I now realized the skin temperature line in the Vtable.
I am still struggling with two points:
1. When I plot the SST field from the ERA5 raw data, it does not cover land areas.
2. When I omit the skin temperature field from ERA5, and then run WPS and real.exe, the TSK field in wrfinput shows
a very "nice" and detailed field that follows the detailed complex topography. It does not look like a field that in any sense
resembles an SST over land. Moreover, I tried it for 3 different events, and it turns out that the TSK fields produced in this way (in wrfinput) for the three cases are the same over land.
Hi david,

I encountered a similar problem, I took era5 and fnl data as input respectively for the same case, when I examine the TSK of their wrfinput, however, the TSK of fnl wrfinput shows "a very 'nice' and detailed field that follows the detailed complex topography" just like you said, but era5 wrfinput's TSK got a pretty low resolution.

Taking a further look, the TSK of fnl wrfinput is the same as SST of fnl wrfinput but era wrfinput's SST field is filled with zero value(because it does not cover land areas as you mentioned). Both real.exe ran with the same namelist.input options except for the necessary modifications like num_metgrid_levels. Do you got any ideas about what happened to the era5 wrfinput's TSK field? Is this normal for era5?
 
Ming Chen said:
David,
Please take a look at the code dyn_em/module_initialize_real.F, in which you will find the piece of codes below:
Code:
     IF ( config_flags%use_tavg_for_tsk ) THEN
         IF ( we_have_tsk .OR. we_have_tavgsfc ) THEN
           !  we are OK
         ELSE
            CALL wrf_error_fatal ( 'We either need TSK or TAVGSFC, verify these fields are coming from WPS' )
         END IF

It indicates that WRF needs TSK as input.

In cases the input data doesn't have this variable, REAL tries to use SST to represent TSK:
Code:
      !  Fix grid%tmn and grid%tsk.

      fix_tsk_tmn : SELECT CASE ( model_config_rec%sf_surface_physics(grid%id) )

         CASE ( SLABSCHEME , LSMSCHEME , NOAHMPSCHEME , RUCLSMSCHEME, PXLSMSCHEME,CLMSCHEME, SSIBSCHEME )
            DO j = jts, MIN(jde-1,jte)
               DO i = its, MIN(ide-1,ite)
                  IF ( skip_middle_points_t ( ids , ide , jds , jde , i , j , em_width , hold_ups ) ) CYCLE
                  IF ( ( grid%landmask(i,j) .LT. 0.5 ) .AND. ( flag_sst .EQ. 1 ) .AND. &
                       ( grid%sst(i,j) .GT. 170. ) .AND. ( grid%sst(i,j) .LT. 400. ) ) THEN
                     grid%tmn(i,j) = grid%sst(i,j)
                     grid%tsk(i,j) = grid%sst(i,j)
                  ELSE IF ( grid%landmask(i,j) .LT. 0.5 ) THEN
                     grid%tmn(i,j) = grid%tsk(i,j)
                  END IF
               END DO
            END DO
      END SELECT fix_tsk_tmn

If SST is not available, then t2 is used to represent TSK:

Code:
     !  Is the grid%tsk reasonable?

      IF ( internal_time_loop .NE. 1 ) THEN
         DO j = jts, MIN(jde-1,jte)
            DO i = its, MIN(ide-1,ite)
               IF ( skip_middle_points_t ( ids , ide , jds , jde , i , j , em_width , hold_ups ) ) CYCLE
               IF ( grid%tsk(i,j) .LT. 170 .or. grid%tsk(i,j) .GT. 400. ) THEN
                  grid%tsk(i,j) = grid%t_2(i,1,j)
               END IF
            END DO
         END DO
...


Please take a look at the code and let me know if you still have questions.
Hi Ming,

I described my question in my reply to david, could you please take a look? And does real.exe do different things to era5 and fnl met files?
 
Top