The ECMWF OpenIFS model has become publicly available for download under the Apache 2.0 open-source licence. This page provides an overview how to work with the new git repository on GitHub.
The source code for the OpenIFS model, inclusive of the OpenIFS single-column model and the latest documentation, can be downloaded free from this repository on GitHub:
Please refer to the Readme document for a description of how to clone the release branch.
Users of previous OpenIFS releases (also including OpenIFS 48r1) should note that only the release available on GitHub is distributed under the open-source Apache 2.0 licence.
This open-source licence does not apply retroactively, so the usage of all previous releases of OpenIFS (obtained from the ECMWF download site, ftp server, or Bitbucket git repository) is only permitted under the conditions of the old ECMWF OpenIFS software licence.
Please note that the git merge of earlier model developments into the new open-source git repository may result in the inclusion of older git history which is not part of the open-source release. Such an inclusion into the git history will void the open-source licence of the resulting code package. Therefore we strongly recommend to carry out a "clean start" and manually implement any earlier code changes without merging in older git commits. |
In order to benefit from the latest model developments, upgrades and new model cycles, including the benefits of the open-source licence, all model users are strongly encouraged to upgrade to the new open-source release as soon as possible.
Any new model development will only take place on the open-source git repository.
OpenIFS versions are named after their corresponding parent IFS cycle. For example OpenIFS 48r1 is named after IFS CY48R1.1.
The main branch on the OpenIFS git repository contains the continuous OpenIFS development history. This ensures the traceability of all changes and developments. For practical usage, model users should not work from the main branch but select one of the release branches which represent different model cycle versions.
For example, to use OpenIFS 48r1 select the OpenIFS release branch that corresponds to the IFS cycle CY48R1.
The naming convention for OpenIFS release branches is:
openifs-<support-level>/CY<cycle-number>.<dot-release> |
Example: openifs-lts/CY48R1.1 is the release branch of OpenIFS 48r1
<support-level>The release branch name also contains an indication of support duration for this particular release:
<cycle-number>The IFS cycle number (e.g., 48R1, 49R1). These cycle numbers generally relate to operational cycles, with the exception being cycles for ERA.
<dot-release>An additional distinction of IFS model releases from a given cycle are their "dot-release" numbers (e.g. CY48R1.0, CY48R1.1, etc). This number identifies a scientifically stable, bit-comparable release. A change in the dot-release number signifies a change in scientific answers. It is important to note that the dot-release number should relate to an IFS dot-release.
OpenIFS code is always derived from a specific dot-release of the IFS cycle. To ensure traceability from which dot-release OpenIFS was created, the IFS dot-release number forms part of the branch name in the OpenIFS repository.
To specify a specific version of the model within a release branch git tags are used. The naming convention for git tags is:
openifs-<cycle-number>.<dot-release>.<version> |
Example: openifs-48r1.1.0
<cycle-number> and <dot-release>As defined for the branch naming above, except the cycle name is lower-case to match with previous OpenIFS naming convention.
<version>Represents a sequentially numbered change to OpenIFS that is scientifically bit-comparable, e.g., bit-comparable bug fixes or changes to the scripts. If a change leads to a change in scientific output, then the dot-release number will increase.
The latest documentation for OpenIFS is included in the git repository, in the README.md and in the docs directory.
This documentation supersedes the existing user guides on ECMWF Confluence which will no longer be maintained. This also ensures that the documentation remains aligned with the respective model version.
![]()