Conditions aux limites ouvertes specifiques pour le module ECOMARS¶
Lorsqu’on utilise la clé key_biolo, l’utilisation des conditions aux limites ouvertes (obc) est un peu différente de celle utilisée avec la clé key_substance seule.
Dans le cas général de la simulation de substances dissoutes et particulaires (key_substance), la concentration de chaque variable transportée est donnée dans la maille limite de chaque frontière ouverte. Elle est utilisée seulement lorsque le courant entre dans la zone. Dans le cas contraire, lorsque le courant sort, la concentration à la limite est égale à une combinaison des valeurs dans les 2 mailles voisines en amont du courant, perpendiculaire à la limite.
La valeur prescrite lorsque le courant rentre dans la zone peut provenir de plusieurs sources :- soit l_obc_ogcm_rc=.false. (dans parasubs.txt) :
- pas de fichier obc pour les substances.
- les valeurs aux limites pour chaque variable tendent vers une constante égale à la valeur donnée en condition initiale dans variable.dat
- soit l_obc_ogcm_rc=.true. (dans parasubs.txt) :
- fichier obc qui donne les valeurs aux limites pour une au moins des variables d’état du modèle.
- Pour les variables à lire dans le fichier des conditions aux limites, donner leur nom dans le fichier variable.dat (“name of substance read from obc file”). La valeur aux limites pour ces variables tendra alors vers la valeur lue dans le fichier obc.
- Pour les variables qui n’existent pas dans le fichier des conditions aux limites, il faut mettre none dans le fichier variable.dat. La valeur aux limites pour ces variables tendra alors vers une valeur constante et égale à la valeur donnée en condition initiale (dans variable.dat)
- Dans les 2 cas, la vitesse à laquelle la condition à la limite tend vers la valeur prescrite à la limite dépend du coefficient obc_coefrel, donné dans paraspec.txt. (terme de relaxation en s-1).
- Si obc_coefrel=0 : les concentrations aux limites sont égales aux conditions prescrites (lues ou valeurs initiales)
- Si obc_coefrel petit : les concentrations aux limites tendent lentement vers les conditions prescrites (lues ou valeurs initiales). Exemple : temps de relaxation de 10 jours : obc_coefrel=1/10j=1.1e-6 s-1
- Si obc_coefrel grand : les concentrations aux limites tendent rapidement vers les conditions prescrites (lues ou valeurs initiales). Exemple : temps de relaxation de 1 heure : obc_coefrel=1/1h=2.8e-4 s-1
- obc_coefrel ne doit pas être supérieur à 2/dt
Dans le cas du module ECOMARS, avec la clé key_biolo, on utilise une autre possibilité : le “gradient nul” si la valeur n’est pas connue. Plusieurs choix sont donc possibles en fonction du nom donné dans variable.dat pour “name of substance read from obc file” :
- pour les variables “none” : La valeur aux limites pour ces variables sera constante et égale à la valeur donnée en condition initiale (dans variable.dat)
- pour les variables “zerograd” : la concentration à la limite lorsque le courant rentre est égale à la concentration voisine, en aval du courant (“gradient nul”)[exemple : limite ouest en imin+1: c(imin+1)=c(imin+2)]
- pour les variables “name of obc variable” : la concentration à la limite est celle lue dans la fichier obc si l_obc_ogcm_rc=.true. (sinon ce sera la valeur initiale)
- ATTENTION il semble que cette option “gradient nul” introduise, pour les variables particulaires notamment, des instabilités dans certains cas. Ce problème est contourné actuellement en donnant à ces variables des valeurs constantes; mais une étude plus poussée devra être menée pour comprendre son origine.
- Dans tous les cas, il est maintenant possible aussi d’utiliser l’option de relaxation classique, qui permet, comme pour la température et la salinité, de faire un rappel sur la zone proche des limites (de largeur obc_width) pour que les mailles voisines tendent également vers la condition aux limites de façon plus lisse.
- pour cela, il faut mettre l_obc_ogcm_relax=.true. et donner une valeur à obc_coefrel différente de 0 dans paraspec.txt
- ATTENTION : ne pas mettre l-obc_ogcm_relax=.true. et obc_coefrel=0.
- Dans la zone de largeur obc_width, on injecte un flux de matière pour faire tendre les concentrations dans l’eau vers la condition à la limite. (sflxsurf.F90)
- A la limite pour les substances dont le “name of substance read from obc file” dans le fichier variable.dat est différent de zerograd, le même obc_coefrel est utilisé pour faire tendre les concentrations à la limite vers la concentration prescrite par le fichier obc ou vers la valeur initiale.
Dans les cas de l’application MANGA, et pour l’option 1, si l_obc_ogcm_rc=.false., les concentrations aux limites prescrites pour les trois sels nutritifs : nitrate, silicate et phosphate dissous sont calculées avec un gradient vertical dépendant de la profondeur.