rmnlib est une bibliothèque de fonctions pour la prévision numérique du temps utilisée principalement par Environnement et Changement climatique Canada.
Ses principaux composants sont les fichiers Standard RPN et l'interpolateur EZ.
- Référence des fonctions accessible à partir d'Internet (Anglais)
- Documentation plus complète sur le Wiki du CMC
Le projet est hébergé à l'adresse https://gitlab.science.gc.ca/RPN-SI/librmn Le code est disponible via Git aux adresses suivantes:
- Sur le réseau ECCC: git@gitlab.science.gc.ca:RPN-SI/librmn.git
- Pour les utilisateurs à l'extérieur d'ECCC: https://github.com/ECCC-ASTD-MRD/librmn.git
cmake_rpn
est inclus via un sous-module de Git. Veuillez cloner avec l'option --recursive
ou bien exécuter la commande suivante après avoir cloné le dépôt, pour récupérer les sous-modules:
git submodule update --init --recursive
mkdir $build_dir_path
cd $build_dir_path
Les options pour configurer la compilation doivent être ajoutées lors de
l'appel de la commande cmake
avec le préfixe -D
.
CMAKE_BUILD_TYPE
: (Release|RelWithDebInfo|Debug)
Mode de compilation. Défaut: RelWithDebInfo
CMAKE_INSTALL_PREFIX
: Chemin d'accès du répertoire pour l'installation (make install
)
COMPILER_SUITE
: (gnu|intel|xl|nvhpc|...)
Suite de compilateurs à utiliser. Sur les systèmes d'ECCC,
le compilateur chargé sera utilisé. Si les variables d'environnement propres à
ECCC ne sont pas trouvées, la valeur par défaut est gnu
.
WITH_OMPI
: (yes|no)
Indique si le support OpenMP/MPI est activé. Défaut: yes
cmake \
-DCMAKE_INSTALL_PREFIX=$install_dir_path \
-DWITH_OMPI=no \
$src_dir_path
make -j $a_resonable_number
make install
Les scripts CMake de cmake_rpn
vont automatiquement détecter le compilateur
chargé via la variable d'environnement EC_ARCH
. Il n'est donc pas nécessaire
de spécifier explicitement la suite de compilateurs à utiliser
(-DCOMPILER_SUITE=...
). Vous devez toutefois charger le compilateur désiré
avant d'effectuer la configuration de la compilation.
Utilisez le bon fichier à partir de la variable ECCI_ENV
, selon
l'architecture souhaitée, afin de charger le compilateur spécifié, définir
la variable ECCI_DATA_DIR
pour la série de tests et définir la variable
EC_CMAKE_MODULE_PATH
pour les modules cmake_rpn.
- Exemple pour PPP5:
. $ECCI_ENV/latest/ppp5/inteloneapi-2022.1.2.sh
- Example pour le réseau CMC et gnu 11.4.0:
. $ECCI_ENV/latest/ubuntu-22.04-amd-64/gnu.sh
Puisque la version par défaut de CMake disponible sur les systèmes
d'ECCC est probablement trop vieille, vous devez charger une version
plus récente que 3.20. Par exemple: . ssmuse-sh -d main/opt/cmake/cmake-3.21.1
.
git clone -b dev https://github.com/ECCC-ASTD-MRD/librmn.git
cd librmn
git submodule update --init --recursive
cd ..
mkdir librmn_build
cd librmn_build
cmake ../librmn -DCMAKE_INSTALL_PREFIX=~/opt/
make -j4 install
Une cible doc
est créée par cmake pour générer la documentation. Ceci nécessite cependant
Doxygen et graphviz.
make doc
Étant donné que la bibliothèque de fonctions contient un module Fortran, il faut utiliser le même compilateur qui a produit la biliothèque pour les applications clientes.
Ainsi, il faut nettoyer le répertoire de compilation et ré-exécuter les
instructions de compilation en spécifiant un répertoire d'installation
(-DCMAKE_INSTALL_PREFIX=$install_dir_path
) différent.
Nous avons développé un exemple très simple d'application qui utilise librmn. Il peut être utilisé comme référence pour construire un projet CMake qui utilise la librmn.
Il peut être consulté aux adresses suivantes:
- https://gitlab.science.gc.ca/RPN-SI/librmn-client-example (Sur le réseau d'ECCC)
- https://github.com/ECCC-ASTD-MRD/librmn-client-example (Public)
La version statique de la librairie sera celle utilisée par défaut lors de la recherche du package rmn, à moins de le spécifier. Exemples:
find_package(rmn [version] REQUIRED)
find_package(rmn [version] REQUIRED COMPONENTS shared)