Installation et compilation du code CROCO

Le site officiel de CROCO contient de nombreuses informations et est accessible ici: https://www.croco-ocean.org/. il contient notamment un onglet Documentation/.

Librairies nécessaires

Sous Ubuntu

Dans un terminal, lancer les commandes!

sudo apt-get install aptitude
sudo aptitude install git gfortran libnetcdff-dev
sudo aptitude install libopenmpi-dev openmpi-bin

Sous MAC

pas de documentation forcément nécessaire. Le plus simple est de compiler CROCO sur un calculateur, une station avec linux.

Mais si besoin, je conseillerai:

  • une installation via HomeBrew

  • création d’un docker ubuntu dans lequel on réalise une installation croco

Téléchargement de CROCO et des CROCOTOOLS

La page officielle de téléchargement propose de récupérer le code via des répertoires compressés tar.gz ou via git:

git clone --branch v2.1.0 https://gitlab.inria.fr/croco-ocean/croco.git croco
git clone --branch v2.1.0 https://gitlab.inria.fr/croco-ocean/croco_tools.git croco_tools

Création d’une configuration et compilation

Création d’une configuration

Il est conseillé de créer un répertoire qui contiendra toutes vos configurations CONFIGS, au même niveau que là où vous avez vos répertoires croco et croco_tools. Le script create_config.bash dans le répertoire croco permettra de créer des répertoires de configurations de CROCO automatiquement. Il est possible de modifier le chemin des crocotools, de croco, le nom de la config (Run par défault). Pour commencer, vous pouvez laisser les propositions telles quelles.

mkdir CONFIGS
cd CONFIGS
cp ../croco/create_config.bash .
bash create_config.bash

Vous avez alors un répertoire Run créé dans votre répertoire CONFIGS.

Compilation

Aller dans le répertoire Run:

cd Run

Le script de compilation a évolué à partir de cette version de croco pour qu’il ne soit plus nécessaire de le modifier directement. Le choix du compilateur, des librairies netcdf, … se fait en arguments dans le cas où nous ne sommes pas dans une configuration standard de style ubuntu.

./jobcomp --help

Si vous n’êtes pas dans un cas standard, vous pouvez indiquer des arguments. Dans ce cas, il est plus simple de sauvegarder la ligne de commande dans un fichier nommé compil.sh par ex (toujours dans Run), que nous lancerons ensuite.

Dans notre arborescence (CONFIGS/Run), avec les librairies netcdf système, et le compilateur gfortran, le fichier compil.sh sera ainsi:

#!/bin/bash
./jobcomp --src ../../croco/OCEAN

Si on veut choisir quelles librairies netcdf utiliser, on peut forcer leur utilisation en indiquant leur chemin. Le chemin de netcdf-inc est le répertoire contenant le fichier netcdf.inc, et le chemin de netcdf est le répertoire contenant libnetcdff.so par ex ( à identifier avec locate):

#!/bin/bash
./jobcomp --src ../../croco/OCEAN --netcdf-inc "-I/usr/include" --netcdf-lib "-L/usr/lib/x86_64-linux-gnu -lnetcdff -lnetcdf"

Sur le cluster de l’OSU, le fichier compil.sh sera :

#!/bin/bash
./jobcomp --fc ifort --mpif90 mpiifort --netcdf-lib "-L/libraries/libcalcul/netcdf/netcdf_parallel/lib/ -lnetcdf -lnetcdff" --netcdf-inc "-I/libraries/libcalcul/netcdf/netcdf_parallel/include"

on peut donner les droits d’exécution au fichier compil.sh en lançant une fois cette ligne de commande:

chmod +x compil.sh 

Puis la compilation se fait avec:

./compil.sh