MOR - Modèle Océanique Régional
Historique
Le modèle MOR utilise la base d’un modèle nommé GF8. Le modèle GF8 est la 8e version d'un modèle développé pour la région du détroit de Georgia, de Juan de Fuca et le Puget Sound près de Vancouver (Stronach, 1993). Ce système est nommé Georgia-Fuca, d'où le nom du modèle. L’évolution du modèle MOR entraîne plusieurs différences par rapport à GF8, que ce soit au niveau du traitement du mélange, de la présence d’un modèle de glace couplé ou bien du transport des scalaires. Cependant, les équations de base ainsi que la technique de résolution restent quasiment les mêmes. Pour plus de détails sur la section suivante, veuillez consulter Stronach (1993).
Description du modèle
Le modèle 3D glace de mer - océan calcule simultanément l'évolution spatiale et temporelle de l'énergie cinétique turbulente, des niveaux d'eau, des courants, des champs de température et de salinité des masses d'eau, de l'étendue et de l'épaisseur de la couverture de glace de mer. Le modèle océanique est à niveau-z entièrement pronostique, hydrostatique et basé sur les équations du mouvement en milieu peu profond modifiées de Backhaus (1983; 1985) et Stronach et coll. (1993). Il utilise une solution semi-implicite pour l'élévation de surface, un schéma de transport corrigé pour les flux («flux-corrected», Zalezak, 1979) pour les grandeurs scalaires (température, salinité, énergie cinétique turbulente, variables biologiques), un mélange horizontal de faible valeur, et un modèle d'énergie turbulente d'ordre 2.5 (e.g. BURCHARD et BOLDING, 2001; SMITH et coll., 2006b) employant les fonctions de stabilité de Canuto et coll. (2001). Le modèle d'énergie turbulente est complété par une équation diagnostique pour la balance d’échelle principale turbulente (utilisant le minimum entre la loi parabolique du mur et la longueur d'Ozmidov). Le modèle océanique est couplé à une couverture dynamique (Hunke et Dukowicz, 1997) et thermodynamique (Semtner, 1976) de glace de mer à deux couches, représentées par les distributions d'épaisseur d’après Thorndike et coll. (1975) et une couche de neige. Les flux glace-océan, atmosphère-océan, et glace-atmosphère de la chaleur, du sel, et du momentum sont représentés par les formules aérodynamiques de Parkinson et Washington (1979).
Implémentation du modèle numérique
Modèle de Hambourg
La technique utilisée pour solutionner les équations est celle de Backhaus (1985), le modèle Hambourg. Les modes externes et internes sont traités de façon implicite et n'impose pas de restriction sur le pas de temps autre que la précision de la propagation de l'onde de marée. Voici quelques caractéristiques clés de ce modèle:
- La discrétisation dans le temps est partagée entre le mode implicite et explicite, habituellement moitié-moitié, ce qui en fait donc une méthode du second degré dans le temps. Augmenté ce facteur (donc plus implicite) permettrait de plus long pas de temps, mais au prix d'un amortissement de l’amplitude des ondes de courte période.
- La solution implicite des ondes gravitationnelles de surface est résolue par la technique SOR (Successive Over-Relaxation) appliquée à l’équation de continuité. Dans cette équation, la divergence du temps présent est combinée à la divergence du temps futur dans une proportion déterminée par le ratio de la contribution explicite et implicite discutée précédemment, pour déterminer la variation du niveau d’eau sur un pas de temps. La divergence du pas de temps futur est basée sur le niveau d’eau future, ce qui en fait une méthode implicite. L’équation de continuité est ultimement résolue comme une équation elliptique pour le champ de niveau d’eau du pas de temps futur.
- L'épaisseur des couches, bien que constante sur l'horizontale, peut varier sur la verticale.
Différences finies
Les équations moyennées sur les couches sont résolues sur une grille tridimensionnelle où l'indice k croit avec l'axe des x, l'indice i croit avec l'axe des y et l'indice j décroît avec l'axe des z. La résolution horizontale est constante, mais la résolution verticale est habituellement choisie afin de résoudre les gradients verticaux de densité et de courant. Les variables sont distribuées sur une grille Arakawa C montrée à la Figure 1 (Arakawa & Lamb, 1977). L’unité fondamentale de calcul, la cellule, peut-être considérée comme un cube. Les courants sont calculés au centre des faces du cube et la salinité et la température sont définies au centre du cube. Les densités et les vitesses sont décalées dans l’espace afin que les gradients de densité soient centrés sur les vitesses.
Figure 1: Grille Arakawa-c horizontale
La forme du bassin est contrainte à avoir un nombre entier de cellules. La condition de transport nul à travers les parois du bassin est facilement respectée en imposant les vitesses sur la face de ces cellules formant la paroi à zéro. Le trait de côte détermine donc si la cellule sera dite mouillée, contenant de l’eau, ou bien sèche. Par la suite, c’est la profondeur en ce point mouillé qui détermine de nombre de cellules nécessaires. Nous ajoutons des cellules jusqu’à ce que la colonne d’eau soit égale à la profondeur. La cellule de surface et celle du fond sont d’épaisseur variable. Nous en discuterons plus en détail dans la section de construction d’une grille.
Méthode de solution
La solution d’un système complet d’équation de différence finie comporte 5 étapes.
1.L’équation de conservation est résolue afin de trouver le champ de vitesse verticale.
2.Le champ de densité est résolu en utilisant les vitesses verticales et horizontales au temps (0).
3.Les termes explicites des équations du mouvement sont évalués et ajoutés à une valeur intermédiaire des champs de vitesse u et v.
4.L’intégral vertical de l’équation de conservation est transformé en équation elliptique et résolue en utilisant SOR.
5.Les champs de niveau d’eau et de courant sont mis à jour à l’aide de la partie implicite des équations appropriées.
Comment utiliser MOR sur Mingan
Voici les quelques étapes nécessaires pour lancer une simulation de MOR sur Mingan. Dans un premier temps, il faut générer la structure des répertoires pour le code, l'exécutable et les solutions. Cette structure est donnée à titre d'exemple. Elle peut changer selon les besoins de chaque utilisateur.
Créer un répertoire SRC dans votre environnement de travail
Ce répertoire contient le code pour créer l'exécutable. Ce code est actuellement archivé sur un dépôt SVN. Ce code est disponible auprès de Simon Senneville. Vous modifierez très certainement ce code, il vous est suggéré d'utiliser GIT ou SVN pour gérer les différentes versions de votre code. Il est important de garder en tête qu'une fois votre développement terminé, il serait intéressant que les modifications puissent être traçables afin d'être récupérées et conservées pour les versions subséquentes du simulateur.
Générer l'exécutable
Le code source inclut un script qui génère une Makefile selon les options choisies du répertoire de configuration configure. Ce script se nomme make.comp. Il est appelé avec deux paramètres: le premier en fonction du serveur où il est utilisé et le second, en fonction du domaine voulu. Les configurations disponibles se retrouvent dans le répertoire configure. Pour ajouter de nouvelle configuration, elles doivent être ajoutées dans ce répertoire. Par exemple make.comp Cluster STLAW5KM produira le fichier Makefile afin générer le simulateur du golfe du Saint-Laurent à 5km de résolution pour Mingan. Ensuite, il suffit de taper la commande make pour générer l'exécutable selon les instructions du Makefile.
Créer un répertoire RUN dans votre environnement de travail
Ce répertoire doit contenir l'exécutable et les fichiers nécessaires au lancement de MOR. L'exécutable est le résultat de la compilation de votre code. Si le fichier parrun est présent, cet exécutable pourrait être lancé directement, mais certaines variables d’environnement doivent préalablement être définies. De plus, certains scripts ont été développés pour traiter des aspects: interactif vs arrière-plan et l'utilisation des différents nœuds de la grappe. Habituellement, les modifications du code et la compilation se font sur le nœud de login de Mingan login-0-4. Cependant, le simulateur NE DOIT PAS être lancé sur ce nœud. Le fichier parrun est essentiel au lancement du modèle. Ce fichier contient les paramètres essentiels du modèle ainsi que les informations sur les sorties voulues de la simulation. Un exemple de fichier parrun est fourni. Si le modèle de glace CICE5 est utilisé, vous devez également avoir le fichier ice_in et deux répertoire vide soit restart et history.
Lancer la simulation sur un(des) nœud(s) interactif(s)
Sur la grappe de calcul Mingan, afin d'obtenir un nœud interactif vous devez utiliser qsub -I suivie de -l nodes=1:ppn=10 pour déterminer le nombre de nœuds et de processeurs voulu. Dans le cas suivant, votre demande pour 10 processeurs sur un nœud de calcul serait soumis. Par défaut, 10 Gig de mémoire sont allouées.
qsub -I -l nodes=1:ppn=10
Une fois sur votre nœud interactif, vous devez tout d’abord retourner dans votre répertoire RUN. Par défaut, vous serez dans votre home. Avant de lancer la simulation, des variables environnement doivent être définie, c'est fait à l'aide de module et de script. Vous devez donc charger les modules et script suivants:
module load dot
module load netcdf/ifort
source /share/apps/intel/parrallel_studio_xe_2015/bin/psxevars.sh
Maintenant vous pouvez lancer une simulation en mode interactif. Les sorties défileront à l'écran. Ce peut être utile pour le développent afin de suivre des trace dans le code. Cependant pour de longue simulations il est préférable de les lancer en arrière plan.
Lancer la simulation sur un(des) nœud(s) en arrière-plan
De façon générale, voici les instruction pour soumettre une tâche sur Mingan. Notre fichier pbs devra contenir quelques instructions supplémentaire. Voici une exemple de lance_job.pbs
Créer un répertoire OUT dans votre environnement d'archivage
Ce répertoire contient les fichiers de sorties de la simulation.
Traitement des fichiers de sortie de MOR sur Mingan
Fichier NetCDF
Les fichiers de sortie, également la plupart des fichiers d'intrant, de MOR sont en format NetCDF. Par souci d'espace disque, ces fichiers ont été compressés sur un axe afin de ne conserver que les points mouillés. Le fichier NetCDF contient toutes les informations pour redistribuer ce vecteur sur la matrice 2D ou 3D du domaine.
Traitement à l'aide des librairies NetCDF
Instructions pour décompresser le vecteur en matrice
Traitement en Matlab
Des m-files ont été développés en Matlab pour lire et écrire dans ce format de fichier NetCDF.