Model simulated satellite data produced at ECMWF provide unique information about the output from the numerical weather prediction model. Forecasters can use images generated from the simulated satellite data to visualise model forecast cloud and moisture features, while model developers can use the data in their research activities, in particular to validate model developments which affect the temperature and moisture fields.

The simulated satellite data (SSD) are generated using the operational ECMWF high-resolution forecast model output from the 00 UTC and 12 UTC cycles and the same fast radiative transfer model as used in the operational data assimilation (e.g., RTTOV-11). Output from the high-resolution forecast models is used as input to the RTTOV to calculate the cloudy brightness temperatures expected from satellites using the relevant atmospheric model profiles (i.e., temperature, specific humidity, ozone mass mixing ratio, cloud cover, specific cloud liquid water content, specific cloud ice water content, specific rain water content, specific snow water content) and the relevant surface parameters (i.e., skin temperature, 10m u and v wind components, 2m temperature and 2m dewpoint temperature, volumetric soil water layer 1, convective available potential energy).  The data can be visualised to provide a sequence of forecast-generated satellite images showing the evolution of the model-derived cloud or humidity features at 3-hour or 6-hour intervals.

Errors in simulated satellite data can derive from errors in the NWP parameters on which the simulation is based, the resolution of the model and the RTTOV model performance.

Updates to the simulated satellite data at IFS cycle 41r2

The major highlights are:

  • Global satellite images capturing detailed cloud and/or humidity features
    The new simulated satellite data product shows the high-resolution ECMWF forecasts as a weather satellite would see it (e.g. Meteosat-10). The new product includes latitudes greater than 60° north and south, extending the geostationary-type imagery over high-latitude regions.
  • Nadir view for every model grid point
    The new simulated satellite data assume a nadir view (top-down) for every model grid point so the effect of looking slantwise through the atmosphere is neglected.
  • Produced in post-processing within the IFS, with no mapping on satellite grid
    This is a technical advantage of the new simulated satellite data being now produced in the post-processing within the IFS and being part of the research tests for operational release to validate model developments which affect the temperature and moisture fields.
  • Availability of the simulated satellite data in MARS
    The new simulated satellite data products are archived in MARS in GRIB edition 2 and are available at every post-processing step, out to 240 hours: 3 hourly from T+0 to T+144 and 6 hourly from T+150 to T+240.
  • Availability of the simulated satellite data in ECMWF Catalogue and dissemination in the future
    The timeliness of delivery is optimal for dissemination. The addition of the new simulated satellite data products to the ECMWF Catalogue will be proposed. It will not be available to commercial customers / researchers until then.

At present only Meteosat-10-like simulated satellite data are available. The central wavelength of the channels on other geostationary platforms is quite close to those selected to be produced, archived and disseminated based on the Meteosat-10-like data.

Visualising Simulated Satellite Data

The images displayed here have been produced with Metview.

Metview macro for plotting images from simulated satellite data
# Metview Macro - created from Display Window contents

#  **************************** LICENSE START ***********************************
#  Copyright 2015 ECMWF. This software is distributed under the terms
#  of the Apache License version 2.0. In applying this license, ECMWF does not
#  waive the privileges and immunities granted to it by virtue of its status as
#  an Intergovernmental Organization or submit itself to any jurisdiction.
#  ***************************** LICENSE END ************************************
# Date: Thu 17 March 2016
# Author:  ECMWF User Support

format  = "png"
satelliteID  = 57  # Meteosat-10
instrument   = 207 # SEVIRI  
channel = 9        # Channel = 5, 6 or 9
clbt    = 260510   # Cloudy Brightness Temperature

outfile = "ssd_channel" & channel

# Device Description 
File_ps = ps_output(  
                OUTPUT_NAME : outfile
File_png = png_output(  
                OUTPUT_NAME : outfile

if format = "png" then
   File = File_png
   File = File_ps
end if

# Checks running mode  
mode = runmode()  
if mode = 'batch' or mode = 'execute' then  
end if  

# Call function to build layout (defined at end of macro)
display_window = build_layout()

# Importing : /usd/EMOSLIB/SSD/get_ssd.mars

ssd_common = (
    stream     : "OPER",
    class      : "od",
    expver     : 0001,
    date       : 0,
    time       : 0,
    type       : "ssd",
    ident      : satelliteID,
    instrument : instrument,
    param      : clbt,
    channel    : channel

ssd_3h = retrieve ( 
    step       : [0,"to",144,"by",3]
ssd_6h = retrieve ( 
    step       : [150,"to",240,"by",6]

ssd = ssd_3h & ssd_6h

# Countours for IR channel / clouds

ir_clouds = mcont(
    legend                           : "on",
    contour                          : "off",
    contour_level_selection_type     : "level_list",
    contour_level_list               : [185,187,189,191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229,231,233,235,237,239,241,243,245,247,249,251,253,255,257,259,261,263,265,267,269,271,273,275,277,279,281,283,285,287,289,291,293,295,297,299,301,303,305,307,310,315,320,325],
    contour_label_frequency          : 5,
    contour_shade                    : "on",
    contour_shade_technique          : "cell_shading",
    contour_shade_colour_method      : "list",
    contour_shade_cell_resolution    : 40,
    contour_shade_colour_list        : ["RGB(0.28,0.76,1)","RGB(0.35,0.78,1)","RGB(0.41,0.8,1)","RGB(0.48,0.83,1)","RGB(0.55,0.85,1)","RGB(0.62,0.87,1)","RGB(0.69,0.9,1)","RGB(0.76,0.92,1)","RGB(0.83,0.94,1)","RGB(0.9,0.97,1)","white","RGB(0.99,0.99,0.99)","RGB(0.98,0.98,0.98)","RGB(0.98,0.98,0.98)","RGB(0.97,0.97,0.97)","RGB(0.97,0.97,0.97)","RGB(0.97,0.97,0.97)","RGB(0.97,0.97,0.97)","RGB(0.96,0.96,0.96)","RGB(0.96,0.96,0.96)","RGB(0.96,0.96,0.96)","RGB(0.95,0.95,0.95)","RGB(0.95,0.95,0.95)","RGB(0.95,0.95,0.95)","RGB(0.94,0.94,0.94)","RGB(0.94,0.94,0.94)","RGB(0.93,0.93,0.93)","RGB(0.93,0.93,0.93)","RGB(0.92,0.92,0.92)","RGB(0.91,0.91,0.91)","RGB(0.9,0.9,0.9)","RGB(0.89,0.89,0.89)","RGB(0.87,0.87,0.87)","RGB(0.86,0.86,0.86)","RGB(0.84,0.84,0.84)","RGB(0.82,0.82,0.82)","RGB(0.81,0.81,0.81)","RGB(0.78,0.78,0.78)","RGB(0.76,0.76,0.76)","RGB(0.74,0.74,0.74)","RGB(0.71,0.71,0.71)","RGB(0.69,0.69,0.69)","RGB(0.66,0.66,0.66)","RGB(0.63,0.63,0.63)","RGB(0.6,0.6,0.6)","RGB(0.57,0.57,0.57)","RGB(0.54,0.54,0.54)","RGB(0.51,0.51,0.51)","RGB(0.48,0.48,0.48)","RGB(0.44,0.44,0.44)","RGB(0.41,0.41,0.41)","RGB(0.38,0.38,0.38)","RGB(0.35,0.35,0.35)","RGB(0.32,0.32,0.32)","RGB(0.29,0.29,0.29)","RGB(0.26,0.26,0.26)","RGB(0.23,0.23,0.23)","RGB(0.21,0.21,0.21)"],
    contour_shade_max_level_density  : 25,
    grib_scaling_of_retrieved_fields : "off"

# Contours for Water Vaopour channels

wv_image_common = (
    legend                           : "on",
    contour                          : "off",
    contour_level_selection_type     : "level_list",
    contour_label                    : "off",
    contour_shade                    : "on",
    contour_shade_technique          : "cell_shading",
    contour_shade_colour_method      : "list",
    contour_shade_label_blanking     : "off",
    contour_shade_cell_resolution    : 40,
    contour_shade_colour_list        : ["rgb(1,1,1)","rgb(0.971428571429,0.971428571429,0.971428571429)","rgb(0.942857142857,0.942857142857,0.942857142857)","rgb(0.914285714286,0.914285714286,0.914285714286)","rgb(0.885714285714,0.885714285714,0.885714285714)","rgb(0.857142857143,0.857142857143,0.857142857143)","rgb(0.828571428571,0.828571428571,0.828571428571)","rgb(0.8,0.8,0.8)","rgb(0.771428571429,0.771428571429,0.771428571429)","rgb(0.742857142857,0.742857142857,0.742857142857)","rgb(0.714285714286,0.714285714286,0.714285714286)","rgb(0.685714285714,0.685714285714,0.685714285714)","rgb(0.657142857143,0.657142857143,0.657142857143)","rgb(0.628571428571,0.628571428571,0.628571428571)","rgb(0.6,0.6,0.6)","rgb(0.571428571429,0.571428571429,0.571428571429)","rgb(0.542857142857,0.542857142857,0.542857142857)","rgb(0.514285714286,0.514285714286,0.514285714286)","rgb(0.485714285714,0.485714285714,0.485714285714)","rgb(0.457142857143,0.457142857143,0.457142857143)","rgb(0.428571428571,0.428571428571,0.428571428571)","rgb(0.4,0.4,0.4)","rgb(0.371428571429,0.371428571429,0.371428571429)","rgb(0.342857142857,0.342857142857,0.342857142857)","rgb(0.314285714286,0.314285714286,0.314285714286)","rgb(0.285714285714,0.285714285714,0.285714285714)","rgb(0.257142857143,0.257142857143,0.257142857143)","rgb(0.228571428571,0.228571428571,0.228571428571)","rgb(0.2,0.2,0.2)","rgb(0.171428571429,0.171428571429,0.171428571429)","rgb(0.142857142857,0.142857142857,0.142857142857)","rgb(0.114285714286,0.114285714286,0.114285714286)","rgb(0.0857142857143,0.0857142857143,0.0857142857143)","rgb(0.0571428571429,0.0571428571429,0.0571428571429)","rgb(0.0285714285714,0.0285714285714,0.0285714285714)","rgb(0,0,0)"],
    grib_scaling_of_retrieved_fields : "off"

wv_image_shade5 = mcont(
    contour_level_list               : [221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,270]
wv_image_shade6 = mcont(
    contour_level_list               : [220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,295]

if channel = 5 then
  image_contour = wv_image_shade5
else if channel = 6 then
  image_contour = wv_image_shade6
else if channel = 9 then
  image_contour = ir_clouds
end if
# Plot command  
plot ( display_window[1], ssd, image_contour) 

# End of main program

# Function to build the layout.
function build_layout( )
    full_globe = geoview()
    _Page_ = plot_page(  
                TOP        : 0, 
                BOTTOM     : 100, 
                LEFT       : 0, 
                RIGHT      : 100, 
                ROWS       : 1, 
                COLUMNS    : 1, 
                PAGE_X_GAP : 0, 
                PAGE_Y_GAP : 0, 
                VIEW       : full_globe 
    # SuperPageDescription 
    _Display_Window_ = plot_superpage(  
                LAYOUT_SIZE        : "A4", 
                CUSTOM_WIDTH       : 29.7, 
                CUSTOM_HEIGHT      : 21.0, 
                PAGES                    : [ _Page_ ] 
    # plot_superpage returns a list of drop identifiers. 
    # Index 1 is for first page, and so on. 
    # end of superpage definition  
    return _Display_Window_ 

end build_layout

48-hour global simulated Meteosat-10 SEVIRI imagery at 10.8 μm (channel 9) from the ECMWF model cycle 41r2 at TCO1279 / O1280 horizontal resolution with 137 vertical levels run on 1 March 2016 at 00 UTC.

48-hour global simulated Meteosat-10 SEVIRI imagery at  6.30 μm (channel 5)from the ECMWF model cycle 41r2 at TCO1279 / O1280 horizontal resolution with 137 vertical levels run on 1 March 2016 at 00 UTC.
Animation of 10 day global simulated Meteosat-10 SEVIRI imagery at 10.8 μm (channel 9) from the ECMWF model cycle 41r2 at TCO1279 / O1280 horizontal resolution with 137 vertical levels run on 1 March 2016 at 00 UTC.Animation of 10 day global simulated Meteosat-10 SEVIRI imagery at  6.30 μm (channel 5)from the ECMWF model cycle 41r2 at TCO1279 / O1280 horizontal resolution with 137 vertical levels run on 1 March 2016 at 00 UTC.

Simulated satellite data as ECMWF web charts

Images produced from the simulated satellite data are available as ECMWF medium-range forecast charts on the web as Model simulated satellite images (Authorisation required).

Availability of the simulated satellite data in MARS

The simulated satellite data are archived in MARS under TYPE=SSD (Simulated Satellite Data).  They can be viewed in the MARS Catalogue at:

A sample MARS request for retrieving the fields at all post-processing time steps of a single forecast is:

MARS request for simulated satellite data
    STREAM     = OPER,
    CLASS      = OD,
    EXPVER     = 0001,
    DATE       = -1,
    TIME       = 12,
    TYPE       = SSD,
    IDENT      = 57,
    INSTRUMENT = 207,
    PARAM      = 260510,
    CHANNEL    = 9,
    STEP       = 0/TO/144/BY/3,
    TARGET     = "meteosat-10.channel9.grib2"
    STEP       = 150/TO/240/BY/6,
    TARGET     = "meteosat-10.channel9.grib2"

The fields are stored on the model O1280 octahedral reduced Gaussian grid.  Any MARS post-processing keywords, such as AREA or GRID can be applied to the request to interpolate the fields to lower resolutions or geographical sub-areas.

Availability of the simulated satellite data in dissemination

The simulated satellite data will be available in dissemination.  Initially, the products will be made available to ECMWF Member and Co-operating States.  Availability in the real-time catalogue will need to be discussed and possibly agreed by ECMWF Committees.

Further reading

  • Hocking, J., Rayer, P., Rundle, D., Saunders, R., Matricardi, M., Geer, A., Brunel, P. and Vidot J., 2013: RTTOV v11 Users Guide , NWP SAF report, Met Office, 107 pp.
  • Lupu C. and A. J. Geer, 2015: Evaluation and operational implementation of the RTTOV-11 in the IFS, ECMWF Tech. Memo., 748, ECMWF, Reading, UK.
  • Lupu, C. and T. Wilhelmsson, 2016: A guide to simulated satellite images in the IFS, ECMWF Research Department Memorandum RD16-064, 10 pp

Technical information

The simulated satellite data are specified using the satellite identifier, instrument, channel number and central wavelength as given in the WMO Manual on codes:

  • COMMON CODE TABLE C–5: Satellite identifier
  • COMMON CODE TABLE C–8: Satellite instruments

.  For the simulated satellite data based on Meteosat-10 these are as in the table below:

SatelliteInstrumentSatellite IDInstrument TypeChannelCentral wavelength (μm)Description

SEVIRI (Spinning Enhanced Visible and InfraRed Imager)

5720756.30Water Vapour at ~300 hPa
67.36Water Vapour at ~500 hPa
910.79Atmospheric Window channel ~clouds, surface

GRIB encoding

The simulated satellite data fields are encoded in GRIB edition 2 with the parameter set to Cloudy brightness temperature:

paramIdshortNamenameunitsGRIB edition
260510clbtCloudy brightness temperatureKelvin2

The product description uses productDefinitionTemplateNumber=32 (analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data.  The relevant GRIB API keys are encoded as:

GRIB  key name
scaleFactorOfCentralWaveNumberscaledValueOfCentralWaveNumber (units: m-1)

Other GRIB API keys describing the product are:

discipline   3Space products
parameterCategory1Quantitative products



 Cloudy brightness temperature

GRIB API version at least 1.14.5 needs to be used in order to decode the simulated satellite data products.

History of simulated satellite images at ECMWF

Since 2005, ECMWF has generated model-simulated satellite images out to five days from the 00 UTC and 12 UTC  cycles of the operational HRES forecast for all operational geostationary satellites  operated by EUMETSAT (e.g., Meteosat-7/8/9/10), NOAA (e.g., GOES-8/10/11/12/13/15) and JMA (e.g., MTSAT-1R/2). The simulated images are archived in MARS as GRIB edition 1 files and have been presented on the ECMWF website as image files. The forecast-generated satellite images have been based on the resolution of the HRES global model with 3-hourly output from T+0 to T+48 and 6-hourly output to T+120.

Up to and including IFS cycle 41r1, the satellite images in both the atmospheric window and water vapour regions were simulated over each of the 5 geostationary satellite’s disk.  

Prior to the implementation of IFS cycle 41r2, the simulated satellite image data were stored in MARS with TYPE=SIM and REPRES=SV (Space View) for the IDENT, INSTRUMENT and CHANNEL as specified in the table below.


Instrument Type

MARS availability

 MARS KeywordsNominal central
Indian OceanMeteosat-7EUMETSAT54.5° EMVIRI2009-03-102016-03-085420516.342500x25001250x1250

East Atlantic




Meteosat-10  EUMETSAT  0°  SEVIRI

2013-01-24  2016-03-08  56 207  56.301856x1856  928x928  

East Pacific

GOES-11NOAA135.0° W


GOES-15  NOAA  135.0° WImager 2012-01-18  2016-03-08  259  615  36.551250x1250  625x625  

West Atlantic

GOES-12NOAA75.0° W


GOES-13NOAA75.0° WImager2011-05-182016-03-0825761536.541250x1250625x625

West Pacific 

MTSAT-1R JMA 140.2° E JAMI2009-03-10 2011-05-17  171294 210.81250x1250 625x625 
MTSAT-2JMA145.0° EImager2011-05-182016-03-08172294210.81250x1250625x625

These products have been encoded using GRIB edition 1.

An example MARS request for retrieving the old-style (pre-IFS cy41r2) simulated satellite images at all post-processing time steps to day 5 and for a forecast date "YYYYMMDD" prior to 20160308 is:

    CLASS = OD, 
    TYPE = SIM,
    EXPVER = 0001,
    REPRES = SV,
    TIME = 0000,
    STEP = 0/3/6/9/12/15/18/21/24/27/30/33/36/39/42/45/48/54/60/66/72/78/84/90/96/102/108/114/120,
    DOMAIN = G,
    CHANNEL = 9,
    IDENT = 57,
    INSTRUMENT = 207,
    TARGET = ”old_simulated_meteosat-10.channel9.grib”