Opened 8 months ago
#157 new plantage / defect
Plantage interpolation aérosols
Reported by: | fcheruy | Owned by: | Laurent Fairhead |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | LMDZ | Keywords: | |
Cc: |
Description
Pour les simulations en temps réels de plus de LMDZ de 1 jour, le modèle crash lorsque la période est à cheval sur 2 années avec le message suivant :« abort_physic, readaerosol_interp, error in interpolation ». Pour l’interpolation, on utilise un tableau indicé en jour juliens calculés pour année Y (année du début de la simulation), pour le mois de Janvier de l’année les indices se refèrent à l’année Y+1. Ainsi pour pour Janvier on cherche à interpoler avec des valeurs de Janvier Y, mais des indices de Y+1.
Dans le code original (readaerosol_interp.F90), ce bogue se trouve dans les lignes 300-337 où on calcule les indices im, im2 et les valeurs des abscisses day1 et day2 qui sont ensuite utilisées dans la boucle d’interpolation dans les lignes 364-372.
Nous pouvons proposer deux solutions (voir en PJ) : 1) On peut déplacer l’initialisation du tableau des jours juliens de sous-module 1, «Read the data » qui commence par « IF ( (first .OR. iday==0) .AND. lnewday ) THEN » à module 2 qui commence par « IF (lnewday) THEN ! only if new day ». Dans ce cas, les calculs du tableau ne sont répétés qu’une fois par jour et le reste du code ne sera pas modifié.
2) Si on veut garder une seule initialisation du tableau month_mid, on peut juste définir une seule année pour l’axe d’abscisses basée sur son type (normal ou bissexte). Dans ce cas, l’échelle temporelle reste fixée et les calculs pour Y+1 seront effectués sans décalage d’un an (le code prendra janvier et décembre comme les valeurs de base).
De plus, nous avons remarqué que la variable nbr_tsteps est codée en dur (nbr_tsteps = 12, ligne 302). Probablement, c’est fait comme ça, car les fichiers d’aérosols de 14 mois ne sont plus utilisés. Dans les versions en PJ, nous avons enlevé les parties liées à cette variable pour alléger le code et sa compréhension.
Artem, Frédérique