wiki:WikiStart

Version 8 (modified by Huw Lewis, 17 years ago) ( diff )

--

ROPP

This is the feature request, issue and bug tracking web site for the Radio Occultation Processing Package (ROPP). ROPP is a sofware package designed to assist NWP users to assimilate radio occultation data from any RO mission such as CHAMP, COSMIC or GRAS. The package is being developed through the EUMETSAT GRAS SAF.

The ROPP deliverable source code is sub-divided into modules:

  • ropp_tools : low-level utility routines
  • ropp_io : I/O support for RO data in plain text, netCDF and BUFR files
  • ropp_pp : pre-processor (e.g. to derive refractivity profiles from bending angle profiles)
  • ropp_qc : quality control routines
  • ropp_fm : forward models (and associated tangent linear, adjoint & gradient code)
  • ropp_1dvar : 1D-Var retrieval & minimiser
  • ropp_test : test harness

Not all of these modules have been implemented for the first release (ROPP-1), but will be added for later releases.

In addition there are ROPP areas for documentation, external web page content and a comprehensive Test Folder suite.

The ROPP Repository

The repository for ROPP can be accessed via the Subversion server at the URL

svn://fcm7/ROPP_svn/...

For example, checking out the latest development (trunk) versions:

svn co svn://fcm7/ROPP_svn/ropp_src/trunk ropp_src
svn co svn://fcm7/ROPP_svn/ropp_doc/trunk ropp_doc
svn co svn://fcm7/ROPP_svn/ropp_web/trunk ropp_web
svn co svn://fcm7/ROPP_svn/ropp_test/trunk ropp_test

will check out the source code, documentation, web presentation, and test folder, respectively.

With FCM (see below), the above checkout commands would be somewhat simpler:

fcm co fcm:ropp_src_tr ropp_src
fcm co fcm:ropp_doc_tr ropp_doc
fcm co fcm:ropp_web_tr ropp_web
fcm co fcm:ropp_test_tr ropp_test

Branches

It is recommended that developments to ROPP are conducted and committed to a branch rather than directly to the latest trunk version. This allows for changes to be tested before merging the required changes back into the trunk. The trunk therefore represents the 'next release' state for ROPP.

To create a branch of ropp_src from the trunk use the command:

fcm branch -c -n <branch name> -t DEV::SHARE --rev-flag NORMAL --branch-of-branch fcm:ropp_src_tr

where <branch name> is a name of your choice which should reflect what you are working on. To create a branch for sole use by the user, specify -t DEV::USER in the branch command. Similar branches can be created to store user versions of ropp_doc, ropp_test and ropp_web as required.

To make developments, the branch needs to be checked out as above, specifying the path name for the required branch as

fcm co fcm:ropp_src/branches/dev/Share/<branch name>

or

fcm co fcm:ropp_src/branches/dev/<user id>/<branch name>

if using a private user branch.

When all the changes you require to your branch have been committed and the ROPP development team are satisfied that it will be part of the next release, these changes will be merged back into the trunk by using merge. To do this, you must first change directory to your working copy of the trunk (create one using checkout if you don't already have it). Then enter the following:

cd ${HOME}/FCM/ropp_src
fcm merge fcm:ropp_src/branches/dev/Share/<branch name> 

After the merge, you will get a list of changes and your working copy of the main trunk will be updated. Nothing will change in the repository until you commit your working copy of the main trunk back into the repository. If everything has gone smoothly, you should delete your branch by using the following commands:

cd ${HOME}/FCM/<branch name>
fcm branch --delete 

While you are working on your branch, you may want to bring in the changes that have been made to the main trunk. This can be done using the merge command. You must first change directory to your branch's working copy:

cd ${HOME}/FCM/<branch name>
fcm merge fcm:ropp_src_tr

When you do this, you should see the list of updates that have been made to the trunk since you last brought in any changes (or since you branched). Again, this only results in changes to your working copy so you might want to commit them.

FCM

ROPP uses FCM only for code management; the build part is based on GNU's autotools since the package is designed to be portable and independent of any particular code management system.

The advantages of using FCM is a simpler front-end to Subversion commands (see the checkout examples above), and also the availability graphical diff and merge utilities (but noting that latest versions of TkCVS also supports SVN).

In order to support ROPP, the following abbreviations/keywords are implemented within the central FCM configuration:

set::repos::ropp_doc         svn://fcm7/ROPP_svn/ropp_doc
set::repos::ropp_doc_tr      svn://fcm7/ROPP_svn/ropp_doc/trunk
set::repos::ropp_doc_br      svn://fcm7/ROPP_svn/ropp_doc/branches
set::repos::ropp_doc_tg      svn://fcm7/ROPP_svn/ropp_doc/tags
set::repos::ropp_src         svn://fcm7/ROPP_svn/ropp_src
set::repos::ropp_src_tr      svn://fcm7/ROPP_svn/ropp_src/trunk
set::repos::ropp_src_br      svn://fcm7/ROPP_svn/ropp_src/branches
set::repos::ropp_src_tg      svn://fcm7/ROPP_svn/ropp_src/tags
set::repos::ropp_test        svn://fcm7/ROPP_svn/ropp_test
set::repos::ropp_test_tr     svn://fcm7/ROPP_svn/ropp_test/trunk
set::repos::ropp_test_br     svn://fcm7/ROPP_svn/ropp_test/branches
set::repos::ropp_test_tg     svn://fcm7/ROPP_svn/ropp_test/tags
set::repos::ropp_web         svn://fcm7/ROPP_svn/ropp_web
set::repos::ropp_web_tr      svn://fcm7/ROPP_svn/ropp_web/trunk
set::repos::ropp_web_br      svn://fcm7/ROPP_svn/ropp_web/branches
set::repos::ropp_web_tg      svn://fcm7/ROPP_svn/ropp_web/tags

set::trac::ropp_doc          http://fcm7/projects/ROPP/browser/ropp_doc
set::trac::ropp_src          http://fcm7/projects/ROPP/browser/ropp_src
set::trac::ropp_test         http://fcm7/projects/ROPP/browser/ropp_test
set::trac::ropp_web          http://fcm7/projects/ROPP/browser/ropp_web

(See the FCM configuration file at ~fcm/FCM/work/FCM/src/etc/fcm.cfg)

Note: See TracWiki for help on using the wiki.