<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" dtd-version="3.0">
  <front>
    <journal-meta>
<journal-id journal-id-type="publisher">AMT</journal-id>
<journal-title-group>
<journal-title>Atmospheric Measurement Techniques</journal-title>
<abbrev-journal-title abbrev-type="publisher">AMT</abbrev-journal-title>
<abbrev-journal-title abbrev-type="nlm-ta">Atmos. Meas. Tech.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1867-8548</issn>
<publisher><publisher-name>Copernicus GmbH</publisher-name>
<publisher-loc>Göttingen, Germany</publisher-loc>
</publisher>
</journal-meta>

    <article-meta>
      <article-id pub-id-type="doi">10.5194/amt-8-1887-2015</article-id><title-group><article-title>The Radio Occultation Processing Package, ROPP</article-title>
      </title-group><?xmltex \runningtitle{The Radio Occultation Processing Package, ROPP}?><?xmltex \runningauthor{I.~D.~Culverwell et~al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Culverwell</surname><given-names>I. D.</given-names></name>
          <email>ian.culverwell@metoffice.gov.uk</email>
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Lewis</surname><given-names>H. W.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Offiler</surname><given-names>D.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Marquardt</surname><given-names>C.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Burrows</surname><given-names>C. P.</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>Met Office, Exeter, UK</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>EUMETSAT, Darmstadt, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">I. D. Culverwell (ian.culverwell@metoffice.gov.uk)</corresp></author-notes><pub-date><day>24</day><month>April</month><year>2015</year></pub-date>
      
      <volume>8</volume>
      <issue>4</issue>
      <fpage>1887</fpage><lpage>1899</lpage>
      <history>
        <date date-type="received"><day>22</day><month>October</month><year>2014</year></date>
           <date date-type="rev-request"><day>6</day><month>January</month><year>2015</year></date>
           <date date-type="rev-recd"><day>16</day><month>March</month><year>2015</year></date>
           <date date-type="accepted"><day>18</day><month>March</month><year>2015</year></date>
      </history>
      <permissions>
<license license-type="open-access">
<license-p>This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit <ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</ext-link></license-p>
</license>
</permissions><self-uri xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015.html">This article is available from https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015.html</self-uri>
<self-uri xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015.pdf">The full text article is available as a PDF file from https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015.pdf</self-uri>


      <abstract>
    <p>This paper describes the Radio Occultation Processing Package, ROPP,
a product of the EUMETSAT Radio Occultation Meteorology Satellite
Application Facility (ROM SAF) developed by a large number of
scientists over many years. A brief review of the concepts,
functionality and structure of ROPP is followed by more detailed
descriptions of its key capabilities. Example results from a full
chain of processing using some of the ROPP tools are presented. Some
current and prospective uses of ROPP are given. Instructions on how to
access the code and its supporting documentation are provided.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <title>Introduction</title>
      <p>Radio occultation (RO) observations are an increasingly important means of
measuring the tropospheric and stratospheric refractivity, and,
indirectly, tropospheric and stratospheric temperature and pressure, and
tropospheric humidity <xref ref-type="bibr" rid="bib1.bibx14 bib1.bibx1" id="paren.1"><named-content content-type="pre">e.g.</named-content></xref>. Their
high vertical resolution, freedom from significant bias and global
coverage are widely recognised <xref ref-type="bibr" rid="bib1.bibx2" id="paren.2"><named-content content-type="pre">e.g.</named-content></xref> and have led
to the extensive use of RO data for atmospheric research
<xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx27" id="paren.3"><named-content content-type="pre">e.g.</named-content></xref>, for assimilation in numerical
weather prediction (NWP) models
<xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx10 bib1.bibx3" id="paren.4"><named-content content-type="pre">e.g.</named-content></xref> and for
climate monitoring  <xref ref-type="bibr" rid="bib1.bibx23 bib1.bibx13" id="paren.5"><named-content content-type="pre">e.g.</named-content></xref>. It follows that
there is a need for widely available, well-supported and fully documented
software packages that provide the tools to undertake common RO data
processing requirements. This paper describes one such package, ROPP.<?xmltex \hack{\newpage}?></p>
      <p>The Radio Occultation Processing Package, ROPP, is provided by
EUMETSAT's<fn id="Ch1.Footn1"><p>European Organisation for the Exploitation of
Meteorological Satellites</p></fn> Radio Occultation Meteorology Satellite
Application Facility (ROM SAF, known as the GRAS SAF before 2012).  It
comprises software (as source code) and supporting build and test
scripts, data files and documentation, which are designed to help users
wishing to process, quality-control and assimilate RO data into their NWP
models. Facilities are provided for the full chain of RO data processing,
from phase delays to bending angles, to refractivities and dry
temperatures, and finally to 1D-Var retrieved temperature and humidity
profiles.</p>
      <p>Although the software is aimed at the GRAS<fn id="Ch1.Footn2"><p>GNSS Receiver for
Atmospheric Sounding</p></fn> instrument on the Metop<fn id="Ch1.Footn3"><p>polar orbiting
satellite operated by EUMETSAT</p></fn> satellites, as far as is possible it is
generic, in that it can handle any other GNSS<fn id="Ch1.Footn4"><p>Global Navigation
Satellite System</p></fn>–LEO<fn id="Ch1.Footn5"><p>low Earth orbit</p></fn> configuration radio
occultation mission (COSMIC<fn id="Ch1.Footn6"><p>Constellation Observing System for Meteorology, Ionosphere, and Climate</p></fn>,
CHAMP<fn id="Ch1.Footn7"><p>Challenging Minisatellite Payload</p></fn>, etc.). We note, however, that
a LEO–LEO configuration is not currently supported.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1" specific-use="star"><caption><p>ROPP-7.0 modules and their main functionalities.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="369.885827pt"/>
     <oasis:thead>
       <oasis:row rowsep="1">  
         <oasis:entry colname="col1">Module</oasis:entry>  
         <oasis:entry colname="col2">Content</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>  
         <oasis:entry colname="col1">UTILS</oasis:entry>  
         <oasis:entry colname="col2">Utility tools; units conversion, low-level interfaces, etc.</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">IO</oasis:entry>  
         <oasis:entry colname="col2">Support for file reading and writing of RO files; RO internal data structure and interfaces; <?xmltex \hack{\hfill\break}?>BUFR encoder/decoder tools; importation of RO data from non-ROPP files; <?xmltex \hack{\hfill\break}?>extraction of background profiles from GRIB2 files; profile thinning; file management</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">PP</oasis:entry>  
         <oasis:entry colname="col2">Preprocessing (from excess phase through to refractivity and dry temperature); <?xmltex \hack{\hfill\break}?>tropopause height diagnostics</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">FM</oasis:entry>  
         <oasis:entry colname="col2">Forward models (and tangent linear, adjoints and gradients), 1-D and 2-D versions</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">1DVAR</oasis:entry>  
         <oasis:entry colname="col2">1D-Var (user-callable subroutines and standalone applications)</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">TEST</oasis:entry>  
         <oasis:entry colname="col2">Standalone test harness for ROPP modules. Not a user module, although subsets of the test system are included with the IO, PP, FM and 1DVAR modules</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p>Prospective users can obtain ROPP from the “ROPP Software” link of the
ROM SAF home page (<uri>http://www.romsaf.org</uri>). They can download the entire ROPP
distribution, or individual modules. They can integrate a subset  of ROPP
code into their own software applications, linking individual  modules to
their own code. Alternatively, they can use the executable tools provided
as part of each module as standalone applications for RO data processing.
Fully documented build scripts are provided. A helpdesk is available, and
it should be the first point of contact for users in need of advice and
information. Support for ROPP is restricted to the current release and
the previous two.</p>
      <p>This paper describes the status of ROPP-7 (v7.0), which was released
in October 2013.</p>
</sec>
<sec id="Ch1.S2">
  <title>Overview of ROPP</title>
<sec id="Ch1.S2.SS1">
  <title>Concept and strategy</title>
      <p>ROPP should not be viewed as a “black box” processor but as a suite
of library functions and example applications (written in Fortran
95). The software was originally intended for users who wish to
combine RO-specific routines with their own code, but by now ROPP has
developed into a package which offers validated standalone tools for
format conversion and RO data processing. Whichever way ROPP is used,
users are welcome to modify or replace components in ROPP to suit
their existing local systems.</p>
      <p>Updates to ROPP – which include new science, modifications in response
to new data or software dependencies, and bug fixes – are regularly
released by the ROM SAF after a period of review and beta-testing by
interested parties.</p>
      <p>ROPP functionality mirrors most aspects of the ROM SAF operational
data production chain (i.e. the generation of NRT<fn id="Ch1.Footn8"><p>near-real
time</p></fn> refractivity profiles from bending angles) but will not be
exactly the same code – although the operational chain will use some
elements of ROPP and vice versa. The publicly available version of
ROPP also contains additional alternative algorithms as
user-switchable options.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1"><caption><p>The modules (bold) and tools (italic) within ROPP-7.0. The module at
the head of an arrow depends directly on the module at its tail.</p></caption>
          <?xmltex \igopts{width=241.848425pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f01.pdf"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS2">
  <title>Main functionality</title>
      <p>ROPP consists of a number of modules, some of which depend on
others. Modules not only contain source code but also build and test
scripts, data, example test results and user documentation. The
ROPP-7.0 modules and their headline functionalities are listed in
Table <xref ref-type="table" rid="Ch1.T1"/>, and the relations between them are
indicated in Fig. <xref ref-type="fig" rid="Ch1.F1"/>. The main purpose and
functionality of each module are discussed in the following sections,
but, in brief, the two service modules and three scientific modules of
ROPP are as follows.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2" specific-use="star"><caption><p>Subroutines in the ROPP UTILS module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">  
         <oasis:entry colname="col1">Name</oasis:entry>  
         <oasis:entry colname="col2">Purpose</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>  
         <oasis:entry colname="col1">GEOMETRIC2GEOPOTENTIAL</oasis:entry>  
         <oasis:entry colname="col2">Converts geometric heights (w.r.t. ellipsoid) to geopotential heights (w.r.t. geoid)</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">GEOPOTENTIAL2GEOMETRIC</oasis:entry>  
         <oasis:entry colname="col2">Converts geopotential heights (w.r.t. geoid) to geometric heights (w.r.t. ellipsoid)</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">DATE_AND_TIME_UTC</oasis:entry>  
         <oasis:entry colname="col2">Calculates current date/time from system clock, adjusted to UTC, from the system time</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">CALTOJUL</oasis:entry>  
         <oasis:entry colname="col2">Converts Julian Day to calendar date and clock time, and vice versa</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">TIMESINCE</oasis:entry>  
         <oasis:entry colname="col2">Converts Julian Day (or calendar date and clock time) to the time since some epoch</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">DATUM_HMSL</oasis:entry>  
         <oasis:entry colname="col2">Converts the height of a point w.r.t. the WGS-84 ellipsoid to the height above the EGM96 geoid</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">DATUM_TRANS</oasis:entry>  
         <oasis:entry colname="col2">Translates (lon, lat, ht) or (<inline-formula><mml:math display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>) between different Earth system co-ordinates</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p><italic>The utilities module</italic> of ROPP includes quality control and
range-checking tools, and a variety of conversion routines, including
co-ordinate transformations (between Earth-centred inertial (ECI) and Earth-centred, Earth-fixed (ECEF) co-ordinates,
geopotential and geometric heights, etc.) and date/time and unit
conversions.</p>
      <p><italic>The input and output module</italic> of ROPP provides access to
a variety of data formats:<?xmltex \hack{\newpage}?>
<list list-type="bullet"><list-item>
      <p>EUMETSAT's EPS CGS<fn id="Ch1.Footn9"><p>European Polar System Core Ground
Segment</p></fn> level 1a NRT products (i.e. excess phase and
POD<fn id="Ch1.Footn10"><p>precise orbit determination data as a function of
time</p></fn> in netCDF<fn id="Ch1.Footn11"><p>Unidata's Network Common Data Form</p></fn>, and
level 1b NRT products (i.e. bending angles as a function of impact
parameter) in BUFR<fn id="Ch1.Footn12"><p>Binary Universal Form for data
Representation</p></fn>;</p></list-item><list-item>
      <p>ROM SAF level 2 NRT and offline products in netCDF and BUFR;</p></list-item><list-item>
      <p>UCAR<fn id="Ch1.Footn13"><p>University Corporation for Atmospheric
Research</p></fn>/CDAAC<fn id="Ch1.Footn14"><p>COSMIC Data Analysis and Archive Center</p></fn> NRT
atmPrf, atmPhs, sonPrf, ecmPrf, ncpPrf and gfsPrf products in netCDF, and
bfrPrf products in BUFR;</p></list-item><list-item>
      <p>GFZ<fn id="Ch1.Footn15"><p>Helmholtz Centre, Potsdam</p></fn> NRT products in dat–dsc text
file pairs;</p></list-item><list-item>
      <p>gridded background field data sets in GRIB2<fn id="Ch1.Footn16"><p>General
Regularly distributed Information in Binary form, Ed 2</p></fn> format.</p></list-item></list></p>
      <p>ROPP handles these diverse data formats by converting them to its own
well-defined RO data structure (in netCDF).</p>
      <p><italic>The preprocessing module</italic> contains tools to undertake the staged
preprocessing from excess phase (i.e. the phase accumulated by the
carrier wave during transit of the atmosphere and ionosphere above that
which would be accumulated along a straight line path in vacuo between
the transmitter and receiver) to bending angle, through to refractivity
and dry temperature <xref ref-type="bibr" rid="bib1.bibx8" id="paren.6"/>. It also contains tools to
diagnose tropopause heights from profiles of bending angle, refractivity,
dry temperature or background model temperature <xref ref-type="bibr" rid="bib1.bibx16 bib1.bibx26" id="paren.7"/>.</p>
      <p><italic>The forward modelling module</italic> contains forward operators
(including tangent linear, adjoint and gradient calculation code) for
pressure-based, height-based and hybrid NWP model vertical grids, to
generate refractivities and bending angles from model state variables
<xref ref-type="bibr" rid="bib1.bibx10" id="paren.8"/>. It also includes a 2-D bending angle
calculation tool <xref ref-type="bibr" rid="bib1.bibx11" id="paren.9"/>.</p>
      <p><italic>The 1D-Var module</italic> contains cost function minimisers that
allow the retrieval of pressure/height, temperature and humidity
profiles from refractivity or bending angle profiles, given colocated
NWP model background profiles <xref ref-type="bibr" rid="bib1.bibx9 bib1.bibx19" id="paren.10"/>.</p>
      <p>ROPP also includes sample reference data files and example output test
files, as well as full user documentation. Further details of its
contents and capabilities can be found in the “ROPP Overview Guide” document
at <uri>http://www.romsaf.org</uri>.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <title>Detailed view of ROPP</title>
      <p>More detailed descriptions of the ROPP modules, and of the third-party
software needed to run them, follow.</p>
<sec id="Ch1.S3.SS1">
  <title>Utility module</title>
      <p>The ROPP UTILS module provides height- and date-conversion routines,
and other general purpose library functions such as string handling,
message output, array manipulation and basic mathematical
routines. These are used by other ROPP modules and would probably not
be called directly by users from their own
programs. Table <xref ref-type="table" rid="Ch1.T2"/> lists some of the routines in
this module.</p>
      <p>ROPP is designed for terrestrial applications. If a user wished to
develop RO tools appropriate to other planetary atmospheres, the ROPP
UTILS module is where the bulk of the changes (to planetary radius,
gravity, rotation rate etc.) would need to be made.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <title>Input/output module</title>
      <p>The ROPP IO module reads radio occultation data from a variety of sources
(EUMETSAT; BUFR; UCAR; GFZ; and, for background profiles, text and GRIB
files) and converts them to ROPP's internal, netCDF-based format for radio
occultation data.  ROPP can also write out such data in BUFR format. Most
of these data-reading tools use data thinning and range-checking routines
which are themselves part of the module. Table <xref ref-type="table" rid="Ch1.T3"/> lists
some of the routines and tools in the IO module.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T3" specific-use="star"><caption><p>Subroutines and standalone executables in the ROPP IO module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">Name</oasis:entry>

         <oasis:entry colname="col3">Purpose</oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry rowsep="1" colname="col1" morerows="4">Subroutines</oasis:entry>

         <oasis:entry colname="col2">ROPP_IO_READ</oasis:entry>

         <oasis:entry colname="col3">Reads ROPP-formatted RO data</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_IO_WRITE</oasis:entry>

         <oasis:entry colname="col3">Writes ROPP-formatted RO data</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_IO_INIT</oasis:entry>

         <oasis:entry colname="col3">Initialises data input and output</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_IO_THIN</oasis:entry>

         <oasis:entry colname="col3">Thins profiles</oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col2">ROPP_IO_RANGECHECK</oasis:entry>

         <oasis:entry colname="col3">Range-checks and validates all ROPP parameters</oasis:entry>

       </oasis:row>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="8">Executables</oasis:entry>

         <oasis:entry colname="col2"><monospace>ropp2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Copies/renames/reformats/range-checks/thins/orders/splits/concatenates ROPP files</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ropp2bufr</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts ROPP-formatted data file to BUFR format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>bufr2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts BUFR-formatted data file to ROPP format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ucar2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts UCAR-formatted data file to ROPP format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>gfz2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts GFZ-formatted data file pair to ROPP format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>grib2bgrasc</monospace></oasis:entry>

         <oasis:entry colname="col3">Extracts Fortran namelist of background model data from GRIB2-formatted gridded data set</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>bgrasc2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts Fortran namelist to ROPP format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>eum2ropp</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts netCDF4-formatted ROPP data to standard ROPP format</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>eum2bufr</monospace></oasis:entry>

         <oasis:entry colname="col3">Converts netCDF4-formatted ROPP data to BUFR format</oasis:entry>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p>Figure <xref ref-type="fig" rid="Ch1.F2"/> shows the results of passing a rising
COSMIC-1 “atmPhs” profile (20.3<inline-formula><mml:math display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> W, 19.5<inline-formula><mml:math display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> S,
01:02 UTC, 1 October 2012) – containing excess phase
and amplitude data, and downloaded from the CDAAC website
(<uri>http://cdaac-www.cosmic.ucar.edu/cdaac</uri>) – through <monospace>ucar2ropp</monospace>. It also shows the
background temperatures and humidities that result when
GRIB2-formatted ECMWF analyses, downloaded from the ECMWF website (<uri>http://www.ecmwf.int</uri>), are passed through <monospace>grib2bgrasc</monospace> and
<monospace>bgrasc2ropp</monospace>.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <title>Preprocessing module</title>
      <p>The ROPP PP module has been largely adopted from the OCC code developed by
Michael Gorbunov at the Institute for Atmospheric Physics, Moscow.
OCC has been shown to generate refractivities that
are in excellent agreement (less than 0.2 % systematic difference) with
those calculated at UCAR and by forward modelling ECMWF
analyses <xref ref-type="bibr" rid="bib1.bibx8" id="paren.11"><named-content content-type="pre"><uri>http://www.ecmwf.int</uri>;</named-content></xref>.</p>
      <p>ROPP PP provides routines to compute L1 and L2 bending angles from excess
phase data by geometrical optics and wave optics methods. Ionospherically
corrected bending angle profiles are derived by combining L1 and L2
bending angles linearly or in a statistically optimised way.
Climatological bending angle profiles are appended above the corrected
ones, in order that refractivity profiles can be calculated by means of an
inverse Abel transform. Dry temperatures are generated from the
refractivities. ROPP PP also contains code to calculate tropopause heights
from a variety of fields in an RO profile. Table <xref ref-type="table" rid="Ch1.T4"/> lists
some of the routines and tools in this module.</p>
      <p>In more detail, the tools in the <monospace>ropp_pp</monospace> module perform the following
tasks.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T4" specific-use="star"><caption><p>Subroutines and standalone executables in the ROPP PP module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">Name</oasis:entry>

         <oasis:entry colname="col3">Purpose</oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry rowsep="1" colname="col1" morerows="5">Subroutines</oasis:entry>

         <oasis:entry colname="col2">ROPP_PP_IONOSPHERIC_ <?xmltex \hack{\hfill\break}?>CORRECTION</oasis:entry>

         <oasis:entry colname="col3">Make ionospheric corrections to L1 and L2 signal</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_PP_INVERT_REFRACTION</oasis:entry>

         <oasis:entry colname="col3">Calculate refractivity profile (inverse Abel transform)</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_PP_ABEL</oasis:entry>

         <oasis:entry colname="col3">Calculate bending angle profile (Abel transform method)</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_PP_BENDING_ANGLE_GO</oasis:entry>

         <oasis:entry colname="col3">Calculate bending angle profile (geometrical optics method)</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_PP_BENDING_ANGLE_WO</oasis:entry>

         <oasis:entry colname="col3">Calculate bending angle profile (wave optics method)</oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col2">ROPP_PP_TDRY</oasis:entry>

         <oasis:entry colname="col3">Calculate dry temperature</oasis:entry>

       </oasis:row>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="3">Executables</oasis:entry>

         <oasis:entry colname="col2"><monospace>ropp_pp_occ_tool</monospace></oasis:entry>

         <oasis:entry colname="col3">Process excess phase data to bending angle to refractivity and dry temperature</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ropp_pp_invert_tool</monospace></oasis:entry>

         <oasis:entry colname="col3">Process bending angle data to refractivity and dry temperature</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ropp_pp_tph_tool</monospace></oasis:entry>

         <oasis:entry colname="col3">Calculate tropopause height from a bending angle, refractivity,</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3">dry temperature or background temperature profile</oasis:entry>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}pp{\_}occ{\_}tool~}}}?>processes excess phase
and amplitude data into refractivity, bending angle and dry temperature
profiles, in the following steps.</p>
      <p><list list-type="bullet">
            <list-item>

      <p>Read “level 1a” data, i.e. satellite positions, L1 and L2
signal amplitudes and phases.</p>
            </list-item>
            <list-item>

      <p>Compute the occultation point and undulation (height of geoid minus
height of ellipsoid).</p>
            </list-item>
            <list-item>

      <p>Filter, quality-control and carry out mission-specific processing of
amplitude and phase data <xref ref-type="bibr" rid="bib1.bibx7" id="paren.12"/>.</p>
            </list-item>
            <list-item>

      <p>Compute bending angles by geometric optics or wave optics (CT2)
<xref ref-type="bibr" rid="bib1.bibx6" id="paren.13"/>. By default, ROPP uses CT2 below 25 km and
geometric optics above. The concatenated bending angles are then
interpolated onto a common (i.e. the same for L1 and L2) uniformly spaced
grid of impact parameters, whose default spacing is 100 m.</p>
            </list-item>
            <list-item>

      <p>Perform “linearly combined” (LC) ionospheric correction
<xref ref-type="bibr" rid="bib1.bibx25" id="paren.14"/> and “statistically optimised” (OPT) ionospheric correction
<xref ref-type="bibr" rid="bib1.bibx5" id="paren.15"/>. The latter requires a background bending angle
profile, which is currently derived from the MSIS climatology <xref ref-type="bibr" rid="bib1.bibx12" id="paren.16"/>.</p>
            </list-item>
            <list-item>

      <p>Compute inverse Abel transform of the ionospherically corrected bending
angle profile to generate a refractivity profile.</p>
            </list-item>
            <list-item>

      <p>Generate a dry temperature profile corresponding to this refractivity profile.</p>
            </list-item>
            <list-item>

      <p>Write results to the RO data structure and thence to the output file.</p>
            </list-item>
          </list></p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2"><caption><p>The results of passing “atmPhs” COSMIC data through some of the tools in the  <monospace>ropp_io</monospace> module. Top
left: L1 and L2 signal-to-noise ratios (unprocessed);  top right: L1 and L2
excess phases (unprocessed); bottom left: colocated background temperatures
extracted from  ECMWF analysis/forecast at 00:00 and
06:00 UTC, and the resulting
simultaneous profile, obtained by linearly  interpolating in time between them,
as produced by <monospace>grib2bgrasc</monospace> and <monospace>bgrasc2ropp</monospace>;  bottom right: as
bottom left but for specific humidity.</p></caption>
          <?xmltex \igopts{width=227.622047pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f02.pdf"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3"><caption><p>The results of passing the “atmPhs” COSMIC phase/amplitude data of
Fig. <xref ref-type="fig" rid="Ch1.F2"/> through <monospace>ropp_pp_occ_tool</monospace>. Top left: L1
and L2 signal-to-noise ratios (preprocessed);  top right: L1 and L2 excess
phases (preprocessed); bottom left: resulting L1 and L2 bending angles;  bottom
right: “linearly combined” (LC) and “statistically optimised” (OPT)
ionospherically corrected bending angles.<?xmltex \hack{\vspace*{8mm}}?></p></caption>
          <?xmltex \igopts{width=227.622047pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f03.pdf"/>

        </fig>

      <p>Figure <xref ref-type="fig" rid="Ch1.F3"/> shows the output of
<monospace>ropp_pp_occ_tool</monospace> when the unprocessed COSMIC excess phase
data shown in Fig. <xref ref-type="fig" rid="Ch1.F2"/> are passed through it. The
derived bending angles are also displayed.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}pp{\_}invert{\_}tool~}}}?>is almost the same as
<monospace>ropp_pp_occ_tool</monospace>, but starts from “level 1b” L1 and L2
bending angles before generating linearly combined bending angles,
statistically optimised bending angles, refractivities and dry
temperature profiles, as before.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}pp{\_}tph{\_}tool~}}}?>diagnoses tropopause heights, as
follows.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T5" specific-use="star"><caption><p>Subroutines and standalone executables in the ROPP FM module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">Name</oasis:entry>

         <oasis:entry colname="col3">Purpose</oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="2">Subroutines</oasis:entry>

         <oasis:entry colname="col2">ROPP_FM_REFRAC_1D</oasis:entry>

         <oasis:entry colname="col3">Forward model state vector to refractivity</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_FM_BANGLE_1D</oasis:entry>

         <oasis:entry colname="col3">Forward model 1-D state vector to bending angle</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_FM_BANGLE_2D</oasis:entry>

         <oasis:entry colname="col3">Forward model 2-D state vector to bending angle</oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="1">Executables</oasis:entry>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ropp_fm_bg2ro_1d</monospace></oasis:entry>

         <oasis:entry colname="col3">Standalone tool to map 1-D model profile into bending angle and refractivity profile</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"><monospace>ropp_fm_bg2ro_2d</monospace></oasis:entry>

         <oasis:entry colname="col3">Standalone tool to map 2-D model section into bending angle profile</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p><list list-type="bullet">
            <list-item>

      <p>Read the bending angle, refractivity, dry temperature or
background model temperature profile.</p>
            </list-item>
            <list-item>

      <p>Compute the covariance transform (COT) <xref ref-type="bibr" rid="bib1.bibx16" id="paren.17"/> of the bending angle or
refractivity, or the lapse rate (LRT) of dry temperature or temperature.</p>
            </list-item>
            <list-item>

      <p>Diagnose the tropopause height (TPH) in the appropriate vertical co-ordinate
from the maximum of
the COT or the value of the LRT.  Also, within the
tropics, diagnose the “cold point” tropopause height (CPT) for the
temperature-based diagnostics.</p>
            </list-item>
            <list-item>

      <p>Diagnose and record a TPH quality control (QC) flag, based on confidence in the
derived TPH.</p>
            </list-item>
            <list-item>

      <p>Write the TPH and its QC flag to the RO data structure and thence to the output file.</p>
            </list-item>
          </list></p>
      <p>Figure <xref ref-type="fig" rid="Ch1.F4"/> shows the tropopause heights for the COSMIC
occultation and colocated/simultaneous ECMWF background profile used
in this paper.  All six are reasonably close, and the four
“observationally” based TPHs are within 400 m after the
impact altitude of the bending-angle-based TPH has been converted to
altitude by dividing by the refractive index at the tropopause (a downward shift of around 200 m).</p>
</sec>
<sec id="Ch1.S3.SS4">
  <title>Forward modelling module</title>
      <p>The ROPP FM module contains forward operators which calculate
refractivity and bending angle profiles from background model data on
pressure-based, height-based and “hybrid” NWP model vertical
grids. Tangent linear, adjoint and gradient codes of the forward
operators are provided for use in assimilation
processing. Table <xref ref-type="table" rid="Ch1.T5"/> lists some of the routines and
tools in this module.</p>
      <p>In more detail, the tools in the <monospace>ropp_fm</monospace> module perform the
following tasks.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}fm{\_}bg2ro{\_}1d~}}}?>forward models 1-D
background fields into profiles of refractivity and bending angle, in the
following steps.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4"><caption><p>Tropopause heights for the COSMIC occultation of
Figs. <xref ref-type="fig" rid="Ch1.F2"/> and <xref ref-type="fig" rid="Ch1.F3"/>. Top left: bending
angle and its covariance transform. Top right: refractivity and its covariance
transform. Bottom left: dry temperature and its lapse rate. Bottom right:
background temperature and its lapse rate from colocated and simultaneous ECMWF
background.</p></caption>
          <?xmltex \igopts{width=233.312598pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f04.pdf"/>

        </fig>

      <p><list list-type="bullet">
            <list-item>

      <p>Read level 2b input model data (ECMWF pressure-based or Met Office height-based)
and generate a “state vector” <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> of pressure <inline-formula><mml:math display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>, temperature <inline-formula><mml:math display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and humidity <inline-formula><mml:math display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula> as functions
of geopotential height <inline-formula><mml:math display="inline"><mml:mi>Z</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Read or define (if not in input file) the observation levels on which the output
will be calculated.</p>
            </list-item>
            <list-item>

      <p>Compute the refractivity profile, <inline-formula><mml:math display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mi>Z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx14" id="paren.18"/>.</p>
            </list-item>
            <list-item>

      <p>Calculate the bending angle profile, <inline-formula><mml:math display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, from the Abel transform of refractivity
<xref ref-type="bibr" rid="bib1.bibx10" id="paren.19"/>, restricted to non-super-refracting conditions.</p>
            </list-item>
            <list-item>

      <p>If desired, calculate the forward model gradients <inline-formula><mml:math display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>N</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and
<inline-formula><mml:math display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
            </list-item>
          </list></p>
      <p>The “innovation” curves (i.e. observation minus forward modelled
background) in the top two panels of Fig. <xref ref-type="fig" rid="Ch1.F5"/> show
the bending angles and refractivities that result from passing the
background profiles in the bottom two panels of
Fig. <xref ref-type="fig" rid="Ch1.F2"/> through <monospace>ropp_fm_bg2ro_1d</monospace>.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}fm{\_}bg2ro{\_}2d~}}}?>extends the forward modelling of
<monospace>ropp_fm_bg2ro_1d</monospace> by accounting for variation of the
refractivity across the occultation plane, rather than just in the
vertical at the tangent point. This has been found to have
a beneficial effect on O–B differences in the lower troposphere
<xref ref-type="bibr" rid="bib1.bibx11" id="paren.20"/>. It works as follows.</p>
      <p><list list-type="bullet">
            <list-item>

      <p>Read 2-D level 2b input model data (ECMWF pressure-based or Met Office
height-based) and generate a 2-D state vector <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> of pressure <inline-formula><mml:math display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>, temperature
<inline-formula><mml:math display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and humidity <inline-formula><mml:math display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula> as functions of geopotential height <inline-formula><mml:math display="inline"><mml:mi>Z</mml:mi></mml:math></inline-formula> and (uniformly spaced)
horizontal angle <inline-formula><mml:math display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Read or define (if not in input file) observation levels on which the output
will be calculated.</p>
            </list-item>
            <list-item>

      <p>Compute the refractivity section, <inline-formula><mml:math display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mi>Z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx14" id="paren.21"/>.</p>
            </list-item>
            <list-item>

      <p>Calculate the bending angle profile, <inline-formula><mml:math display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, by fourth-order Runge–Kutta
integration of the 2-D ray equations <xref ref-type="bibr" rid="bib1.bibx21" id="paren.22"/>.</p>
            </list-item>
            <list-item>

      <p>Compute the 1-D bending angle profile at the centre of the 2-D occultation
slice, using the Abel transform method of <monospace>ropp_fm_bg2ro_1d</monospace>, for
comparison.</p>
            </list-item>
          </list><?xmltex \hack{\newpage}?></p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5"><caption><p>The results of passing COSMIC bending angles and refractivities, and the
colocated/simultaneous ECMWF background fields, through
<monospace>ropp_1dvar_bangle</monospace> and <monospace>ropp_1dvar_refrac</monospace>. Top
left: observed bending angle profile <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">o</mml:mi></mml:math></inline-formula>, as generated by
<monospace>ropp_pp_occ_tool</monospace> (see Fig. <xref ref-type="fig" rid="Ch1.F3"/>), and its
fractional difference from the background <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">b</mml:mi></mml:math></inline-formula> and 1D-Var solution
<inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">a</mml:mi></mml:math></inline-formula>, after forward modelling (effectively) by
<monospace>ropp_fm_bg2ro_1d</monospace>.  Also included: fractional difference to
UCAR-generated bending angle <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>. Top right: same but for refractivity.
Bottom left: background temperatures, as generated by <monospace>grib2bgrasc</monospace> and
<monospace>bgrasc2ropp</monospace> (see Fig. <xref ref-type="fig" rid="Ch1.F3"/>), and the difference from
the solution temperatures, as returned by <monospace>ropp_1dvar_bangle</monospace>.  Bottom
right: as bottom left but for specific humidities.</p></caption>
          <?xmltex \igopts{width=241.848425pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f05.pdf"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS5">
  <title>1D-Var retrieval module</title>
      <p>The ROPP 1DVAR module provides quality control, minimisation and
diagnostic routines for the retrieval of pressure, geopotential
height, temperature and humidity profiles from profiles of
refractivity or bending angle and (colocated, simultaneous) NWP
background profiles, together with error covariance matrices of the
observation and background. Table <xref ref-type="table" rid="Ch1.T6"/> lists some of
the routines and tools in this module.</p>

<table-wrap id="Ch1.T6" specific-use="star"><caption><p>Subroutines and standalone executables in the ROPP 1DVAR module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="justify" colwidth="284.527559pt"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">Name</oasis:entry>

         <oasis:entry colname="col3">Purpose</oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="1">Subroutines</oasis:entry>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2">ROPP_1DVAR_SOLVE</oasis:entry>

         <oasis:entry colname="col3">Quasi-Newton cost function minimiser</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2">ROPP_1DVAR_LEVMARQ</oasis:entry>

         <oasis:entry colname="col3">Levenberg–Marquardt  cost function minimiser</oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>
       <?xmltex \rotentry?>
         <oasis:entry colname="col1" morerows="1">Executables</oasis:entry>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col2"><monospace>ropp_1dvar_refrac</monospace></oasis:entry>

         <oasis:entry colname="col3">Standalone 1D-Var retrieval application using refractivity observations</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"><monospace>ropp_1dvar_bangle</monospace></oasis:entry>

         <oasis:entry colname="col3">Standalone 1D-Var retrieval application using bending angle observations</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1"/>

         <oasis:entry colname="col2"/>

         <oasis:entry colname="col3"/>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p>In more detail, the tools in the <monospace>ropp_1dvar</monospace> module perform the following tasks.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}1dvar{\_}bangle~}}}?>carries out a 1D-Var minimisation of the usual cost function <inline-formula><mml:math display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>, where
            <disp-formula id="Ch1.E1" content-type="numbered"><mml:math display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{8.5}{8.5}\selectfont$\displaystyle}?><mml:mn mathvariant="normal">2</mml:mn><mml:mi>J</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">b</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">b</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">o</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-script">H</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">O</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">o</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-script">H</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><?xmltex \hack{$\egroup}?></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> is the state vector, <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">b</mml:mi></mml:math></inline-formula> is the background state
vector, <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">o</mml:mi></mml:math></inline-formula> is the vector of bending angle observations,
<inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-script">H</mml:mi></mml:math></inline-formula> is the (non-linear) forward model
(Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>), <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> is the background error
covariance matrix and <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">O</mml:mi></mml:math></inline-formula> is the covariance matrix of the
combined measurement and forward model error. It works as follows.</p>
      <p><list list-type="bullet">
            <list-item>

      <p>Read input model data (ECMWF pressure-based or Met Office height-based)  and
generate the background state vector <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">b</mml:mi></mml:math></inline-formula> of temperature <inline-formula><mml:math display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and humidity <inline-formula><mml:math display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula>
as functions of geopotential height <inline-formula><mml:math display="inline"><mml:mi>Z</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Read the background error matrix <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>. The correlations usually come from an
auxiliary file. The diagonal elements, the variances, can also be supplied
externally or profile-by-profile in the background file.</p>
            </list-item>
            <list-item>

      <p>Read the bending angles on impact parameters to generate the observation vector
<inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">o</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Read the bending angle error covariance matrix <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">O</mml:mi></mml:math></inline-formula>. The correlations
usually come from an auxiliary file. (The bending angle correlation matrix is
usually assumed to be the identity.) The diagonal elements, the variances, can
also be supplied externally or profile-by-profile in the observation file.</p>
            </list-item>
            <list-item>

      <p>Carry out quality control based on range-checking, O–B (i.e. <inline-formula><mml:math display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">o</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-script">H</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">b</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>)  and probability of gross error, and generate diagnostics if
desired.</p>
            </list-item>
            <list-item>

      <p>Minimise the cost function in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), either using  an
ROPP-specific minimiser based on a quasi-Newton method <xref ref-type="bibr" rid="bib1.bibx18" id="paren.23"/>  or
a Levenberg–Marquardt minimiser <xref ref-type="bibr" rid="bib1.bibx17" id="paren.24"/>. The “solution” <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">a</mml:mi></mml:math></inline-formula>
equals <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> at the minimum <inline-formula><mml:math display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Forward model bending angles from solution state vector <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold-italic">a</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Generate O–A (i.e. <inline-formula><mml:math display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">o</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-script">H</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">a</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>) and analysis error covariance matrix <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula>.</p>
            </list-item>
            <list-item>

      <p>Write to RO data structure and thence to output file.</p>
            </list-item>
          </list></p>
      <p>Figure <xref ref-type="fig" rid="Ch1.F5"/> shows the result of passing the (LC)
bending angle profile shown in Fig. <xref ref-type="fig" rid="Ch1.F3"/> and the
colocated ECMWF background profile shown in
Fig. <xref ref-type="fig" rid="Ch1.F2"/> through <monospace>ropp_1dvar_bangle</monospace>.
The retrieval has generally pulled the background towards the
observations, as expected. Temperature increments of around
1 K and specific humidity increments of around 1 g kg<inline-formula><mml:math display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> near the surface
result.</p>
      <p>Figure <xref ref-type="fig" rid="Ch1.F5"/> also compares the ROPP-derived bending
angles and refractivities with those in the corresponding “atmPrf” file,
as processed by UCAR. Below 40 km the ROPP
refractivities are closer to those of UCAR than they are to the forward
modelled ECMWF background, which lends confidence to the integrity of the
ROPP refractivities for this occultation. Above 40 km the ROPP
refractivities are up to 5 % larger than those of UCAR. This may be due to
different statistical optimisation (blending of noisy bending angles with
smoother climatology) applied in the two codes. ROPP is closer to the
ECMWF background in this regime.</p>

<table-wrap id="Ch1.T7" specific-use="star"><caption><p>Elements of the ROPP TEST module.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">  
         <oasis:entry colname="col1">Name</oasis:entry>  
         <oasis:entry colname="col2">Purpose</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>  
         <oasis:entry colname="col1">CC</oasis:entry>  
         <oasis:entry colname="col2">Compile and link all modules on a variety of compilers and platforms</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">IO</oasis:entry>  
         <oasis:entry colname="col2">Convert between various RO data formats; compare against references</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">PP</oasis:entry>  
         <oasis:entry colname="col2">Test consistency between Abel and inverse Abel transforms; compare ROPP-generated refractivities and bending angles</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1"/>  
         <oasis:entry colname="col2">against NRT profiles; check processing of raw sampling data. Compare calculated TPHs with reference values</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">FM</oasis:entry>  
         <oasis:entry colname="col2">Forward model ECMWF and Met Office backgrounds; compare to GRAS, CHAMP and COSMIC observations</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1"/>  
         <oasis:entry colname="col2">FASCOD/ducting examples. Test 2-D operator</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">1DVAR</oasis:entry>  
         <oasis:entry colname="col2">Test refractivity and bending angle retrieval tools by analysing O–A and O–B</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p>The UCAR and ROPP bending angles are also closer to each other than either
is to the forward modelled ECMWF background between 10 and 40 km.
Below 10 km the difference between UCAR and ROPP is possibly due
to different treatments of the open loop data in this regime. Above
40 km the differences may again be due to different statistical
optimisation in the two codes.</p>
      <p><?xmltex \hack{\textbf{\texttt{ropp{\_}1dvar{\_}refrac~}}}?>does the same as
<monospace>ropp_1dvar_bangle</monospace> but uses refractivity observations
instead of bending angles. Naturally, different observation background
errors <inline-formula><mml:math display="inline"><mml:mi mathvariant="bold">O</mml:mi></mml:math></inline-formula> are needed.</p>
      <p>The O–B and O–A profiles of a retrieval based on the refractivities
generated (automatically) by <monospace>ropp_pp_occ_tool</monospace>, by inverse
Abel transform of the bending angles of Fig. <xref ref-type="fig" rid="Ch1.F3"/>,
are shown in the top right element of
Fig. <xref ref-type="fig" rid="Ch1.F5"/>. Again, the 1D-Var retrieval procedure has drawn the
background to the observations. (Note that the temperature and humidity
increments in this figure come from the bending angle retrieval.)</p>
</sec>
<sec id="Ch1.S3.SS6">
  <title>Testing module</title>
      <p>The ROPP TEST module comprises a comprehensive suite of test routines,
and associated test data sets, which can be run on a range of compilers
and platforms.  This “Test Folder” is one of the main ways of
formally validating the ROPP code prior to public release of a new
major version of the package. Table <xref ref-type="table" rid="Ch1.T7"/> lists some of
the elements of this module.</p>
      <p>Note that the complete <monospace>ropp_test</monospace> suite is not
intended for users but for internal validation of the ROPP code,
although some functionality of <monospace>ropp_test</monospace> is included in
<monospace>ropp_io</monospace>, <monospace>ropp_pp</monospace>, <monospace>ropp_fm</monospace> and
<monospace>ropp_1dvar</monospace> for users to verify that the code has been
correctly built.</p>
</sec>
<sec id="Ch1.S3.SS7">
  <title>Third-party software</title>
      <p>Full implementation of ROPP requires the installation of some standard
freely available third-party software packages, principal among which is
the netCDF library for general data input and output. Some tools need
access to a BUFR library for reading or writing NWP data in that format.
Another uses routines in a GRIB library to extract background profiles
from a gridded data set. The ROPP documentation clearly indicates which
packages are needed by which modules and tools. Naturally, any licence
restrictions associated with these packages must be adhered to by ROPP
users.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <title>Uses of ROPP</title>
      <p>It is important to realise that ROPP is designed to be used both as
a research tool and for operational processing.</p>
      <p>The following organisations use, or intend shortly to use, ROPP in
their operational systems, where its main use is in the assimilation
of RO data.</p>
      <p><list list-type="bullet">
          <list-item>

      <p>The ROM SAF uses ROPP algorithms to generate operational refractivity profiles
from bending angles provided by EUMETSAT, and code based on ROPP to generate
retrieved temperature and humidity profiles from those refractivities
<xref ref-type="bibr" rid="bib1.bibx15" id="paren.25"/>.  ROPP is also used in the ROM SAF's offline
operational processing of gridded climate products, which starts from excess
phase and amplitude data (<uri>http://www.romsaf.org</uri>).</p>
          </list-item>
          <list-item>

      <p>EUMETSAT uses ROPP for validation and monitoring of GRAS data. The ROPP FM
module is used to forward model  ECMWF background data to bending angles, and
the ROPP IO module is used to put GRAS and COSMIC data in the same format.
EUMETSAT will also use ROPP for the generation of BUFR data in the next
operational processor (A. von Engeln, personal communication, 2014).</p>
          </list-item>
          <list-item>

      <p>The Naval Research Laboratory (NRL, Monterey,
USA) implemented the ROPP bending  angle forward model in the operational
variational assimilation system run by the Fleet Numerical Meteorology and
Oceanography Center (FNMOC) (B. Ruston, personal communication, 2014).</p>
          </list-item>
          <list-item>

      <p>The Japanese Meteorological Agency (JMA) use ROPP operationally to assimilate
bending angles (H. Owada, personal communication, 2014).</p>
          </list-item>
          <list-item>

      <p>The Korea Institute of Atmospheric Prediction Systems (KIAPS) intend to use
ROPP to assimilate bending angles into their new data assimilation system  (H. Kwon, personal communication, 2014).</p>
          </list-item>
          <list-item>

      <p>The Centro de Previsão de Tempo e Estudos Climáticos (CPTEC, Brazil)
use ROPP's forward modelling and quality control tools for the assimilation of
refractivities in their research data assimilation system.  They hope to start
pre-operational testing soon (L. Sapucci, personal communication, 2014).</p>
          </list-item>
          <list-item>

      <p>The Chinese Academy of Sciences (CAS) are considering whether to use ROPP in
the  preprocessing of data from the GNOS instrument (W. Bai, personal communication, 2014).</p>
          </list-item>
        </list></p>
      <p>Forward models based on the implementations in ROPP are also used
operationally at the Met Office and ECMWF (S. Healy, personal communication, 2014).</p>
      <p>Although ROPP is used extensively within the ROM SAF as a research
tool, it is beginning to be used more widely, as in the following
examples.</p>
      <p><list list-type="bullet">
          <list-item>

      <p><xref ref-type="bibr" rid="bib1.bibx27" id="text.26"/> used ROPP to examine the effect of ionospheric correction
on radio occultation measurements over Australia.</p>
          </list-item>
          <list-item>

      <p><xref ref-type="bibr" rid="bib1.bibx28" id="text.27"/> investigated the properties of the ROSA GNSS
receiver with ROPP.</p>
          </list-item>
          <list-item>

      <p><xref ref-type="bibr" rid="bib1.bibx20" id="text.28"/> investigated climatological trends in
bending angle using the ROPP forward model algorithms.</p>
          </list-item>
          <list-item>

      <p>Von Engeln et al. <xref ref-type="bibr" rid="bib1.bibx24" id="year.29"/> compared bending angle observations made by
the GRAS instrument to ECMWF forecasts which were forward modelled with (effectively) ROPP.</p>
          </list-item>
        </list></p>
      <p>As ROPP is developed, new functionality will be introduced, which, it
is hoped, will be of interest to researchers in a range of areas.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6"><caption><p>Data flow in the “full chain” of processing described in this paper.
Analogous flowcharts would apply if starting from, for example, CHAMP RO data
from GFZ and background data from the Met Office NWP model. For brevity,
<inline-formula><mml:math display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and “bangle” denote bending angle, while <inline-formula><mml:math display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> and “refrac” denote
refractivity.</p></caption>
        <?xmltex \igopts{width=241.848425pt}?><graphic xlink:href="https://amt.copernicus.org/articles/8/1887/2015/amt-8-1887-2015-f06.pdf"/>

      </fig>

<?xmltex \hack{\newpage}?>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <title>Conclusions</title>
      <p>This paper has given a brief overview of the Radio Occultation
Processing Package. Its structure and functionality have been
briefly described, and details of its key software tools have been
given.  Results have been shown of a “full chain” of ROPP
processing, from COSMIC data files and ECMWF background fields to
ionospherically corrected bending angles and refractivities, to
1D-Var retrievals of temperature and humidity. Example tropopause
height diagnostics of the resulting profiles have also been
shown. Figure <xref ref-type="fig" rid="Ch1.F6"/> summarises the full data flow.</p>
      <p>Past, present and future examples of the use of ROPP have been given.
The hope is that this paper may encourage other radio
occultation scientists to try using ROPP to process their data.</p>
      <p>Further information on the use of ROPP within the ROM SAF can be found
from the “Publications” link of the ROM SAF home page (<uri>http://www.romsaf.org</uri>). This page also has links to ROM SAF reports,
conference proceedings, articles and other publications of interest to
those in the field of radio occultation.
<?xmltex \hack{\clearpage}?></p>
</sec>

      
      </body>
    <back><app-group><app id="App1.Ch1.S1">
  <title/>

<?xmltex \floatpos{h!}?><table-wrap id="App1.Ch1.T1" position="anchor"><?xmltex \hack{\hsize\textwidth}?><caption><p>Contributors to ROPP.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="99.584646pt"/>
     <oasis:colspec colnum="3" colname="col3" align="justify" colwidth="256.074803pt"/>
     <oasis:thead>
       <oasis:row rowsep="1">  
         <oasis:entry colname="col1">Name</oasis:entry>  
         <oasis:entry colname="col2">Current institute</oasis:entry>  
         <oasis:entry colname="col3">Contribution</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>  
         <oasis:entry colname="col1">Christian Marquardt</oasis:entry>  
         <oasis:entry colname="col2">EUMETSAT</oasis:entry>  
         <oasis:entry colname="col3">Author of majority of ROPP-1 code in UTILS, IO, FM and 1DVAR modules, and much personal, pre-existing software</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Huw Lewis</oasis:entry>  
         <oasis:entry colname="col2">Met Office</oasis:entry>  
         <oasis:entry colname="col3">1st ROPP development manager; FM and 1DVAR extensions, <?xmltex \hack{\hfill\break}?>PP module</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Dave Offiler</oasis:entry>  
         <oasis:entry colname="col2">Met Office</oasis:entry>  
         <oasis:entry colname="col3">ROPP project manager; IO application code and IO extensions, <?xmltex \hack{\hfill\break}?>BUFR format/template</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Sean Healy</oasis:entry>  
         <oasis:entry colname="col2">ECMWF</oasis:entry>  
         <oasis:entry colname="col3">Original 1-D FM code, 2-D FM operator code, introduction of <?xmltex \hack{\hfill\break}?>compressibility factors</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Michael Gorbunov</oasis:entry>  
         <oasis:entry colname="col2">Russian Academy<?xmltex \hack{\hfill\break}?>of Sciences</oasis:entry>  
         <oasis:entry colname="col3">Original PP code</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Axel von Engeln</oasis:entry>  
         <oasis:entry colname="col2">EUMETSAT</oasis:entry>  
         <oasis:entry colname="col3">Author of original Test Folder system and of EUMETSAT-formatted RO data reader</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Stig Syndergaard</oasis:entry>  
         <oasis:entry colname="col2">DMI</oasis:entry>  
         <oasis:entry colname="col3">Original spectral version of MSIS model (expansion in spherical <?xmltex \hack{\hfill\break}?>harmonics and Chebyshev polynomials), PP module developments</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Ian Culverwell</oasis:entry>  
         <oasis:entry colname="col2">Met Office</oasis:entry>  
         <oasis:entry colname="col3">2nd ROPP development manager; documentation, testing, <?xmltex \hack{\hfill\break}?>consolidation, IO development, GRIB2 reader, <?xmltex \hack{\hfill\break}?>implementation of tropopause height diagnostics</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Carlo Buontempo</oasis:entry>  
         <oasis:entry colname="col2">Met Office</oasis:entry>  
         <oasis:entry colname="col3">Savitzky–Golay thinner code</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Michael Rennie</oasis:entry>  
         <oasis:entry colname="col2">ECMWF</oasis:entry>  
         <oasis:entry colname="col3">1st ROPP test manager; Test Folder developments</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Kjartan Kinch</oasis:entry>  
         <oasis:entry colname="col2">DMI</oasis:entry>  
         <oasis:entry colname="col3">Elements of ropp_pp</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Hans Gleisner</oasis:entry>  
         <oasis:entry colname="col2">DMI</oasis:entry>  
         <oasis:entry colname="col3">Elements of ropp_pp, prototype GRIB2 reader</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Torsten Schmidt</oasis:entry>  
         <oasis:entry colname="col2">GFZ</oasis:entry>  
         <oasis:entry colname="col3">Guidance on tropopause height diagnostics</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Chris Burrows</oasis:entry>  
         <oasis:entry colname="col2">Met Office</oasis:entry>  
         <oasis:entry colname="col3">2nd ROPP test manager; Test Folder developments</oasis:entry>
       </oasis:row>
       <oasis:row>  
         <oasis:entry colname="col1">Kent Bærkgaard Lauritsen</oasis:entry>  
         <oasis:entry colname="col2">DMI</oasis:entry>  
         <oasis:entry colname="col3">Code reviews; liaison with EUMETSAT <?xmltex \hack{\hfill\break}?>(licences, beta tester contracts)</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<?xmltex \hack{\clearpage}?>
</app>
  </app-group><ack><title>Acknowledgements</title><p>This work was carried out as part of EUMETSAT's Radio Occultation
Meteorology Satellite Application Facility (ROM SAF), which is a decentralised
operational RO processing centre under EUMETSAT. I. D. Culverwell,
D. Offiler and C. P. Burrows are members of
the ROM SAF.</p><p>We thank UCAR/CDAAC for providing the COSMIC excess phase data and ECMWF for the
gridded background fields that were used in the ROPP data processing example.</p><p>Many people, inside and outside the ROM SAF, have contributed to the development
of ROPP.  The principal authors are listed in Table <xref ref-type="table" rid="App1.Ch1.T1"/>.
The ROM SAF extends its sincere appreciation for their efforts.<?xmltex \hack{\newline}?><?xmltex \hack{\newline}?>
Edited by: A. K. Steiner</p></ack><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Anthes(2011)</label><mixed-citation>Anthes, R. A.: Exploring Earth's atmosphere with radio occultation: contributions to weather,
climate and space weather, Atmos. Meas. Tech., 4, 1077–1103, <ext-link xlink:href="http://dx.doi.org/10.5194/amt-4-1077-2011" ext-link-type="DOI">10.5194/amt-4-1077-2011</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Anthes et al.(2008)</label><mixed-citation>Anthes, R. A., Bernhardt, P. A., Chen, Y., Cucurull, L., Dymond, K. F., Ector, D., Healy, S. B.,
Ho, S.-P., Hunt, D. C., Kuo, Y.-H., Liu, H., Manning, K., McCormick, C., Meehan, T. K.,
Randel, W. J., Rocken, C., Schreiner, W. S., Sokolovskiy, S. V., Syndergaard, S.,
Thompson, D. C., Trenberth, K. E., Wee, T.-K., Yen, N. L., and Zeng, Z.: The
COSMIC/FORMOSAT-3 Mission: Early Results, B. Am. Meteorol. Soc., 89, 313–333,
<ext-link xlink:href="http://dx.doi.org/10.1175/BAMS-89-3-313" ext-link-type="DOI">10.1175/BAMS-89-3-313</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Aparicio and Deblonde(2008)</label><mixed-citation>Aparicio, J. M. and Deblonde, G., 2008:  Impact of the Assimilation of CHAMP
Refractivity Profiles on Environment Canada Global Forecasts. Mon. Weather Rev.,
136, 257–275, <ext-link xlink:href="http://dx.doi.org/10.1175/2007MWR1951.1" ext-link-type="DOI">10.1175/2007MWR1951.1</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Cucurull and Derber(2008)</label><mixed-citation>Cucurull, L. and Derber, J. C.: Operational implementation of COSMIC
observations into NCEP's Global Data Assimilation System, Weather Forecast., 23,
702–711, <ext-link xlink:href="http://dx.doi.org/10.1175/2008WAF2007070.1" ext-link-type="DOI">10.1175/2008WAF2007070.1</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Gorbunov(2002)</label><mixed-citation>Gorbunov, M. E.: Ionospheric correction and statistical optimization of radio
occultation data, Radio Sci., 37, 1084,
<ext-link xlink:href="http://dx.doi.org/10.1029/2000RS002370" ext-link-type="DOI">10.1029/2000RS002370</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Gorbunov and Lauritsen(2004)</label><mixed-citation>Gorbunov, M. E. and Lauritsen, K. B.: Analysis of wave fields by Fourier Integral
Operators and their application for radio occultations, Radio Sci., 39, RS4010,
<ext-link xlink:href="http://dx.doi.org/10.1029/2003RS002971" ext-link-type="DOI">10.1029/2003RS002971</ext-link>, 2004.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Gorbunov et al.(2006)</label><mixed-citation>Gorbunov, M. E., Lauritsen, K. B., Rhodin, A., Tomassini, M., and Kornblueh, L.:
Radio holographic filtering, error estimation, and quality control of
radio occultation data, J. Geophys. Res., 111, D10105,
<ext-link xlink:href="http://dx.doi.org/10.1029/2005JD006427" ext-link-type="DOI">10.1029/2005JD006427</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Gorbunov et al.(2011)</label><mixed-citation>Gorbunov, M. E., Shmakov, A. V., Leroy, S. S., and Lauritsen, K. B.: COSMIC Radio
Occultation Processing: Cross-Center
Comparison and Validation, J. Atmos. Ocean. Tech., 28, 737–751,
<ext-link xlink:href="http://dx.doi.org/10.1175/2011JTECHA1489.1" ext-link-type="DOI">10.1175/2011JTECHA1489.1</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Healy and Eyre(2000)</label><mixed-citation>Healy, S. B. and Eyre, J. R.: Retrieving temperature, water vapor and surface
pressure information from refractive-index profiles derived by radio
occultation: A simulation study, Q. J. Roy. Meteor. Soc., 126, 1661–1683,
<ext-link xlink:href="http://dx.doi.org/10.1002/qj.49712656606" ext-link-type="DOI">10.1002/qj.49712656606</ext-link>, 2000.</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx10"><label>Healy and Thépaut(2006)</label><mixed-citation>Healy, S. B. and Thépaut, J.-N.: Assimilation experiments with CHAMP GPS
radio occultation measurements, Q. J. Roy. Meteor. Soc., 132, 605–623,
<ext-link xlink:href="http://dx.doi.org/10.1256/qj.04.182" ext-link-type="DOI">10.1256/qj.04.182</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Healy et al.(2007)</label><mixed-citation>Healy, S. B., Eyre, J. R., Hamrud, M., and Thépaut, J.-N.: Assimilating
GPS radio occultation measurements with two-dimensional bending angle
observation operators, Q. J. Roy. Meteor. Soc., 133, 1213–1227,
<ext-link xlink:href="http://dx.doi.org/10.1002/qj.63" ext-link-type="DOI">10.1002/qj.63</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Hedin(1991)</label><mixed-citation>Hedin, A. E.: Extension of the MSIS thermosphere model into the middle and lower
atmosphere, J. Geophys. Res., 96, 1159–1172, <ext-link xlink:href="http://dx.doi.org/10.1029/90JA02125" ext-link-type="DOI">10.1029/90JA02125</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Ho et al.(2012)</label><mixed-citation>Ho, S.-P., Hunt, D., Steiner, A. K., Mannucci, A. J., Kirchengast, G.,
Gleisner, H., Heise, S., von Engeln, A., Marquardt C., Sokolovskiy, S.,
Schreiner, W., Scherllin-Pirscher, B., Ao, C., Wickert, J., Syndergaard, S.,
Lauritsen, K., Leroy, S., Kursinski, E. R., Kuo, Y.-H., Foelsche, U.,
Schmidt, T., Gorbunov, M., Reproducibility of GPS radio occultation data for
climate monitoring: Profile-to-profile inter-comparison of CHAMP climate records
2002 to 2008 from six data centers, J. Geophys. Res., 117, D18111,
<ext-link xlink:href="http://dx.doi.org/10.1029/2012JD017665" ext-link-type="DOI">10.1029/2012JD017665</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Kursinski et al.(1997)</label><mixed-citation>Kursinski, E. R., Hajj, G. A., Schofield, J. T., Linfield, R. P., and Hardy, K. R.:
Observing earth's atmosphere with radio occultation measurements using the Global
Positioning System, J. Geophys. Res., 102, D19, 23429–23465, <ext-link xlink:href="http://dx.doi.org/10.1029/97JD01569" ext-link-type="DOI">10.1029/97JD01569</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Lauritsen et al.(2011)</label><mixed-citation>Lauritsen, K. B., Syndergaard, S., Gleisner, H., Gorbunov, M. E., Rubek, F.,
Sørensen, M. B., and Wilhelmsen, H.: Processing and validation of refractivity
from GRAS radio occultation data, Atmos. Meas. Tech., 4, 2065–2071, <ext-link xlink:href="http://dx.doi.org/10.5194/amt-4-2065-2011" ext-link-type="DOI">10.5194/amt-4-2065-2011</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Lewis(2009)Lewis</label><mixed-citation>Lewis, H. W.: A robust method for tropopause altitude identification using GPS
radio occultation data, Geophys. Res. Lett., 36, L12808,
<ext-link xlink:href="http://dx.doi.org/10.1029/2009GL039231" ext-link-type="DOI">10.1029/2009GL039231</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Marquardt(1963)Marquardt</label><mixed-citation>
Marquardt, D.: An Algorithm for Least-Squares Estimation of Nonlinear
Parameters, SIAM J. Appl. Math., 11, 431–441, 1963.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Nocedal(1980)Nocedal</label><mixed-citation>
Nocedal, J.: Updating Quasi-Newton Matrices with Limited Storage, Math. Comput., 35, 773–782, 1980.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Rennie(2010)Rennie</label><mixed-citation>Rennie, M. P.: The impact of GPS radio occultation assimilation at the Met Office,
Q. J. Roy. Meteor. Soc., 136, 646, A, 116–131, <ext-link xlink:href="http://dx.doi.org/10.1002/qj.521" ext-link-type="DOI">10.1002/qj.521</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Ringer and Healy(2008)</label><mixed-citation>Ringer, M. A. and Healy, S. B.: Monitoring twenty-first century climate using
GPS radio occultation bending angles, Geophys. Res. Lett., 35, L05708,
<ext-link xlink:href="http://dx.doi.org/10.1029/2007GL032462" ext-link-type="DOI">10.1029/2007GL032462</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Rodgers(2000)Rodgers</label><mixed-citation>
Rodgers, C. D.: Inverse Methods for Atmospheric Sounding: Theory and Practice,
World Scientific Publishing, Singapore, New Jersey, London, Hong Kong, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Schmidt et al.(2010)</label><mixed-citation>Schmidt, T., Wickert, J. and Haser, A.: Variability of the upper troposphere
and lower stratosphere observed with GPS radio occultation bending angles and
temperatures, Adv. Space Res., 46, 150–161,
<ext-link xlink:href="http://dx.doi.org/10.1016/j.asr.2010.01.021" ext-link-type="DOI">10.1016/j.asr.2010.01.021</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Steiner et al.(2011)</label><mixed-citation>Steiner, A. K., Lackner, B. C., Ladstädter, F., Scherllin-Pirscher, B.,
Foelsche, U., Kirchengast, G.,  GPS radio occultation for climate monitoring and
change detection,  Radio Sci., 46, RS0D24, <ext-link xlink:href="http://dx.doi.org/10.1029/2010RS004614" ext-link-type="DOI">10.1029/2010RS004614</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>von Engeln et al.(2009)</label><mixed-citation>von Engeln, A., Healy, S., Marquardt, C., Andres, Y., and Sancho, F.: Validation of
operational GRAS radio occultation data, Geophys. Res. Lett., 36, L17809,
<ext-link xlink:href="http://dx.doi.org/10.1029/2009GL039968" ext-link-type="DOI">10.1029/2009GL039968</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Vorob'ev and Krasil'nikova(1994)</label><mixed-citation>
Vorob'ev, V. V. and Krasil'nikova, T. G.:  Estimation of the Accuracy of the Atmospheric Refractive
Index Recovery from Doppler Shift Measurements at Frequencies Used in the
NAVSTAR System, Physics of the Atmosphere and Ocean, 29, 602–609, 1994 (English translation).</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>WMO(1957)</label><mixed-citation>
World Meteorological Organisation: Definition of the tropopause, WMO Bull., 6, 136, 1957.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Zhang et al.(2010)</label><mixed-citation>Zhang, K., Le Marshall, J., Norman, R., Wang, C.-S., Fu, E., Li, Y., and Kuleshov, Y.:
A study on the relationship between ionospheric correction and data control for GPS
radio occultation in Australia, in: Proceedings of Geoscience and Remote Sensing
Symposium (IGARSS), Honolulu, Hawaii, 25–30 July 2010, 2940–2943,
doi:<ext-link xlink:href="http://dx.doi.org/10.1109/IGARSS.2010.5650216">10.1109/IGARSS.2010.5650216</ext-link>, 2010.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx28"><label>Zin et al.(2012)</label><mixed-citation>Zin, A., Zago, S., Mangolini, E., Landenna, S., Marradi, L.,
Notarpietro, R., Radicella, S., Nava, B., and Catalano, V.: The ROSA
radio occultation project, in Proceedings of Satellite Navigation
Technologies and European Workshop on GNSS Signals and Signal
Processing, (NAVITEC), Nordwijk, the Netherlands, 5–7 December 2012, 1–8,
<ext-link xlink:href="http://dx.doi.org/10.1109/NAVITEC.2012.6423096" ext-link-type="DOI">10.1109/NAVITEC.2012.6423096</ext-link>, 2012.</mixed-citation></ref>

  </ref-list><app-group content-type="float"><app><title/>

    </app></app-group></back>
    </article>
