wiki:INCAbugs

Version 15 (modified by acosce, 13 years ago) (diff)

--

BUGS référencés dans INCA

Problèmes sur les émissions de seasalt (2 février 2011)

Il faut faire attention le code aerosol_meteo_calc est écrit de telle façon que la simulation ne plante pas si vous fournissez des fichiers de vents à  10m avec une mauvaise résolution. Exemple : fichiers en 96x72 pour un code compilé en 96x95. Cela se voit dans les fichiers de sorties avec des émissions de seasalt (emi_csssm) nulles.
J'ai corrigé le code dans la révision 212 de INCA3 et 211 de INCA4 pour qu'il s'arrête dans ce cas là .

radlwsw_inca (19 janvier 2011)

Le commentaire sur la variable feedb n'est pas bon. Il faut lire :

 INTEGER feedb ! HEAT fluxes computed with feedback corresponding to
                ! 1: the aerosol effects selected by ok_ade;ok_aie
                ! 0: no aerosol effects
                ! 2: (only with ok_ade=y) direct natural+antro
                ! 3: (only with ok_ade=y) direct natural

fichiers de vents à 10m en 320x160 (19 janvier)

Les fichiers de vents à 10m 165_...nc, 166_....nc ou u10...nc, v10...nc pour les années 2007 2008 2009 2010 n'étaient pas au bon format (short au lieu de double ou float). Cela n’entraînait pas un bug dans la simulation, mais celle-ci lisait des valeurs absurdes. Ces fichiers ont été modifié. Les anciens sont systématiquement sauvegardés dans des répertoires 165_166_short ou u10_v10_short (sous p24data/ECMWF320x160/AN../).

utilisation de Adjust (17 janvier 2011)

l'option adjust introduit des erreurs dans le code. Il faut lancer une pré-simulation avec l'option adjust et ensuite la mettre à zéro et pointer vers le fichier BandResol de la pré-simulation.

ptrop (17 janvier 2011)

Depuis le passage à une parallélisation mixte mpi/openMP le calcul de la variable ptrop dans set_ub_vals était à zéro.

ptrop=ptrop_glo(nbbeg_loc:nbend_loc)

commit 197 sur INCA3

Exp_slv (17 janvier 2011)

Dans toutes les versions de exp_slv on arrête le calcul de base_sol à 2 espÚces de la fin. Les deux derniÚres sont systématiquement considérées comme étant O3I et O3S. Or ces espÚces n'existent pas dans les configurations AER et GES. Dans ce cas là il vous faut modifier le calcul de base_sol (enlever le "-2") et commenter les lignes qui suivent.
Commit 200 sur INCA3

aeropt_5wv.F90 (16 décembre 2010)

ProblÚme? apparu lors de l'optimisation du code pour la machine SX9. Cela entraine une erreur sur le diagnostique ec550aer.

Il faut remplacer la ligne 

used_tau(spsol)=.TRUE.

par 

 IF (soluble) then
      used_tau(spsol)=.TRUE.
       ELSE
      used_tau(naero_soluble+spinsol)=.TRUE.
  ENDIF


SETHET (30 janvier 2009)

Sur la machine platine du CCRT il y a un problÚme de compilation dans la routine sethet du modÚle. Il s'agit d'enlever un espace lors de la déclaration de la variable mapping1

integer :: mapping1 = (/ &
....
   26/ ) 

devient 

integer :: mapping1 = (/ &
....

   26/) 





DIURNAL_GEOM (14 janvier 2009)

Dans diurnal_geom les variables sunon et sunoff ne sont pas initialisées ce qui peut poser problÚme car leurs calculs dépendent de conditions IF qui ne sont pas toujours vérifiées. Il faut donc rajouter en début de routine

 sunon(:)  = 0. 
 sunoff(:) = 0. 





Config NMHC : EXP_SLV & IMP_SLV (05 décembre 2008)

Dans les routines exp_sol, imp_sol les réactions sont représentées par leurs numéros. Cependant ces numéros sont indiqués en dur dans le code et quelques erreurs se sont glissées dans leur ordre.

EXP_SLV.F90
Les réactions c2h4 et c3h6 sont inversées.

      + reaction_rates(:,177+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,178+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,179+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,180+compt)*base_sol(:,id_c2h4)             &
      + reaction_rates(:,181+compt)*base_sol(:,id_c2h4)             &

devient

      + reaction_rates(:,179+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,180+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,181+compt)*base_sol(:,id_c3h6)             &
      + reaction_rates(:,177+compt)*base_sol(:,id_c2h4)             &
      + reaction_rates(:,178+compt)*base_sol(:,id_c2h4)             &


IMP_SLV.F90
Pour les pertes de O3 la réaction O3+c2h2 n'existe pas, il faut la modifier par o3+c2h4. De plus de nouveau les numéros des réactions sont inversés entre c2h4 et c3h6

             + reaction_rates(k,177+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,178+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,179+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,180+compt) * base_sol(k,id_C2H2)      &
             + reaction_rates(k,181+compt) * base_sol(k,id_C2H2)      &

devient

             + reaction_rates(k,179+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,180+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,181+compt) * base_sol(k,id_C3H6)      &
             + reaction_rates(k,177+compt) * base_sol(k,id_C2H4)      &
             + reaction_rates(k,178+compt) * base_sol(k,id_C2H4)      &

Pour la production du co2 il y a une erreur sur le numéro de réaction MVK+O3

               +  reaction_rates(k,242+compt) * base_sol(k,id_MACR) * 0.42    &
               +  reaction_rates(k,246+compt) * base_sol(k,id_MVK)  * 0.48    &
               )

devient

               +  reaction_rates(k,242+compt) * base_sol(k,id_MACR) * 0.42    &
               +  reaction_rates(k,245+compt) * base_sol(k,id_MVK)  * 0.48    &
               )

Pour la production de hno3 il manque une équation (onitr + oh -> M.CO3 + 0.75.HNO3 + 0.25.NO2 +0.25.H2O) et un facteur 0.4 pour l'équation onitr + no3 -> M.CO3 +0.4.HNO3 + 0.8.NO2 + 0.5.NO

             + reaction_rates(k,279+compt) * base_sol(k,id_onitu) * base_sol(k,id_oh) * 0.5   &
             + reaction_rates(k,287+compt) * base_sol(k,id_onitr) * base_sol(k,id_no3)        &

devient

             + reaction_rates(k,279+compt) * base_sol(k,id_onitu) * base_sol(k,id_oh) * 0.5   &
             + reaction_rates(k,287+compt) * base_sol(k,id_onitr) * base_sol(k,id_no3)* 0.4   &
             + reaction_rates(k,286+compt) * base_sol(k,id_onitr) * base_sol(k,id_oh) * 0.75  &





BCPOMSOURCE (le 18 novembre 2008)

Dans bcpomsource il manquait le calcul des variables fdistBC et fdistPOM permettant de calculer les champs AIN et ASN.
Il faut donc rajouter le calcul suivant :

! Source size distribution is always the same 
fdistBC= 1./3.141592654*6./rop(id_ASBCM) &
    /srcmmd_id_ASBCM**3 *EXP(4.5*srcsigmaln(asmode)**2)
  
fdistPOM=1./3.141592654*6./rop(id_ASPOMM) &
    /srcmmd_id_ASPOMM**3 *EXP(4.5*srcsigmaln(asmode)**2)

Ce calcul a disparu lors du changement de version : lecture de BC et POM dans un fichier texte et lecture dans le fichier sflx.nc

Ce bug peut impliquer des différences de 30% et plus sur les variables AIN et ASN (et les varibles en dépendant)

ATTENTION : dans certaines versions ces variables sont calculées à l'intérieur d'une boucle "IF (.not. bcpom_through_sflx) " dans laquelle on n'entre pas par défaut




MESSAGES d'erreurs dans INCA

nciop (04 decembre 2008)

Assertion failed: nciop != NULL, file posixio.c, line 1762 

Ce message est du au fait que le programme essaie d'ouvrir un fichier netcdf qui n'existe pas.
La solution est d'utiliser la routine fortran inquire permettant de tester l'existence de ce fichier.