...
- Sea surface temperature and sea-ice cover (see Table 2 above) are available at the usual times, eg hourly for the HRES, but their content is only updated once daily.
- Mean rates and accumulations at step=0 have values of zero because the length of the processing period is zero.
Expand title ERA5: mixing CDS and MARS data In the ECMWF data archive (MARS), ERA5 data is archived on various native grids. For the CDS disks, ERA5 data have been interpolated and are stored on regular latitude/longitude grids. For more information, see 82870405.
Storing the data on these different grids can cause incompatibilities, particularly when comparing native spherical harmonic, pressure level, MARS data with CDS disk data on a third, coarse grid.
Native spherical harmonic, pressure level parameters are comprised of: Geopotential, Temperature, U component of wind, V component of wind, Vertical velocity, Vorticity, Divergence and Relative humidity. When these parameters are retrieved from MARS and a coarse output grid is specified, the default behaviour is that the spherical harmonics are truncated to prevent aliasing on the output grid. The coarser the output grid, the more severe the truncation. This truncation removes the higher wavenumbers, making the data smoother. However, the CDS disk data has been simply interpolated to the third grid, without smoothing.
This incompatibility is particularly relevant when comparing ERA5.1 data (which are only available from MARS - see 82870405 - and only for 2000-2006) with ERA5 data on the CDS disks.
The simplest means of minimising such incompatibilities is to retrieve the MARS data on the same grid as that used to store the ERA5 CDS disk data.
Expand title ERA5: Land-sea mask for wave variables The land-sea mask in ERA5 is an invariant field.
This parameter is the proportion of land, as opposed to ocean or inland waters (lakes, reservoirs, rivers and coastal waters), in a grid box.
This parameter has values ranging between zero and one and is dimensionless.
In cycles of the ECMWF Integrated Forecasting System (IFS) from CY41R1 (introduced in May 2015) onwards, grid boxes where this parameter has a value above 0.5 can be comprised of a mixture of land and inland water but not ocean. Grid boxes with a value of 0.5 and below can only be comprised of a water surface. In the latter case, the lake cover is used to determine how much of the water surface is ocean or inland water.The ERA5 land-sea mask provided is not suitable for direct use with wave parameters, as the time variability of the sea ice cover needs to be take into account and wave parameters are undefined for non-sea points.
In order to produce a land-sea mask for use with wave parameters, users need to download the following ERA5 data (for the required period):
- the model bathymetry (Model bathymetry. Fig 1)
- the sea ice cover (Sea ice area fraction, Fig 2)
and combine these data to produce the land-sea mask (Fig 3). See attached pictures:
Fig 1: Model bathymetry field Fig 2: Sea ice cover field Fig 3: Combined mask
Note Please note that sea-ice cover is only updated once daily.
Please see the Toolbox workflow below to see a possible way to proceed. The results is a carousel of land-sea mask for each time step requested:
Code Block title Toolbox workflow collapse true import cdstoolbox as ct @ct.application(title='Download data') @ct.output.download() @ct.output.carousel() def download_application(): count = 0 years=['1980'] months = [ '01', #'02', '03', # '04', '05', '06', # '07', '08', '09', # '10', '11', '12' ] # For hourly data hourly=True # For monthly data monthly=True hourly = True monthly = False for yr in years: for mn in months: if hourly == True: mb,si = get_hourly_data(yr, mn) elif monthly == True: mb,si = get_monthly_data(yr, mn) print(mb) # Check values are >= 0.0 in the model bathymetry mask compare_ge_mb = ct.operator.ge(mb, 0.0) print(si) # Check values are > 0.5 in the sea ice mask compare_ge_si = ct.operator.gt(si, 0.500) # Invert model bathymetry mask new = ct.operator.add(compare_ge_mb, -1.0) new1 = ct.operator.mul(new, -1.0) # Add the Bathymetry Mask to the Sea Ice Mask new_all = ct.operator.add(compare_ge_si,new1) # Reset scale to land=1, ocean=0 new_all_final = ct.operator.ge(new_all, 1.0) print(new_all_final) if count == 0: combined_mask = new_all_final else: combined_mask = ct.cube.concat([combined_mask, new_all_final], dim = 'time') count = count + 1 renamed_data = ct.cdm.rename(combined_mask, "wavemask") new_data = ct.cdm.update_attributes(renamed_data, attrs={'long_name': 'Wave Land Sea Mask'}) combined_mask = new_data print("combined_mask") print(combined_mask) # Plot mask for first timestep fig_list = ct.cdsplot.geoseries(combined_mask) return combined_mask, fig_list def get_monthly_data(y,m): m,s = ct.catalogue.retrieve( 'reanalysis-era5-single-levels-monthly-means', { 'product_type': 'monthly_averaged_reanalysis', 'variable': [ 'model_bathymetry', 'sea_ice_cover', ], 'year': y, 'month': m, 'time': '00:00', } ) return m, s def get_hourly_data(y,m): m,s = ct.catalogue.retrieve( 'reanalysis-era5-single-levels', { 'product_type': 'reanalysis', 'variable': [ 'model_bathymetry', 'sea_ice_cover', ], 'year': y, 'month': m, 'day': [ '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', ], 'time': [ '00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', ], } ) return m, s
Known issues
Currently, we are aware of these issues with ERA5:
...