= 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 -t DEV::SHARE --rev-flag NORMAL --branch-of-branch fcm:ropp_src_tr }}} where 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/ }}} or {{{ fcm co fcm:ropp_src/branches/dev// }}} 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/ }}} 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/ 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/ 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)