Note |
---|
The information on this page is not complete |
Modifications to OpenIFS
There are several ways in which code changes to OpenIFS could be managed:
- Edit code in the
oifs/src
directory directly. This is not recommended. It has a disadvantage that code changes can be hard to track and would make integrating new versions of the model difficult. - Place the OpenIFS source in a version control system (e.g. subversion or git) and edit the code in
oifs/src
. This improves tracking and integrating since branches of the code could be maintained. - Leave the code in
oifs/src
'as-is' and place modified or new code in separate directories. When not using version control software this has the advantage that multiple code developments can be maintained in separate directories; code changes are easy to see and integrating new versions of the model source straightforward. A version control system can also be used.
The 3rd option is recommended. It makes use of a facility provided by FCM called 'inherited builds'. This is explained below in a series of examples.
Inherited builds
In essence an inherited build is where the build (i.e. compilation) settings for OpenIFS are not altered but are used or inherited by a new FCM configuration file placed in a separate directory. The new FCM configuration file only needs to specify what's different about the build, either the sources or compilation settings. The rest of the information is obtained by telling FCM to look at the OpenIFS configuration. A user may have a number of these separate configuration files each in separate directories for developing or testing independent code changes.
Modifying compilation options
In HowTo customise compiling OpenIFS, it's explained how environment variables and editing the configuration files can alter the compiler settings for OpenIFS. In this simple example, an inherited build is used to alter the compilation of some source code.
Recall the layout of the OpenIFS directories in the directory 'oifs':
Code Block |
---|
% cd oifs
% ls
COPYING ChangeLog INSTALL LICENSE NOTICE README html make src t21test |
The source code is in 'src' with the compilation configurations files used by the FCM build software in 'make/fcmcfg
'.
HTML |
---|
<script type="text/javascript" src="https://software.ecmwf.int/issues/s/en_UKet2vtj/787/12/1.2.5/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?collectorId=5fd84ec6"></script> |
...