Skip to content
Snippets Groups Projects
TODO 5.96 KiB
Newer Older
Module de clés namelists PHYEX. Des modules sont assez généraux et utilisés ailleurs dans Méso-NH (répertoire aux)
  - Une solution serait de créer un module propre à PHYEX qui contiendrait des clés de contrôle de haut niveau
    pour la physique. Ce module serait initialisé dans Méso-NH à partir de clés actuellement en dehors
    de la physique.
  - Une autre solution serait de supprimer ces modules de PHYEX et de recevoir ces quelques clés en argument (ex modd_lunit?)
  - si certains modules contiennent des clés purement physiques et d'autres purement dynamique, on pourrait scinder le module
Documentation: search for the TODO keys in the *.md files of the docs directory
Intégration de PHYEX dans des cycles/versions officielles:
- Clés de compilation
  - Clé de compilation REPRO48 + REPRO55 ajoutées pour permettre de reproduire le cycle 48 MNH-5.5.0, elles:
      - contournent des corrections de bug
      - modifient l'organisation de calculs
      - REPRO48 reproduit les résultats obtenus avant l'introduction de la fraction précipitante froide dans l'ajustement
  - Utilisation des clés:
        - REPRO48 seule: la version de code qui sera retenue à la fin est celle de Méso-NH 5.5
        - REPRO55 seule: la version de code qui sera retenue à la fin est celle du cycle 48 d'AROME
        - defined(REPRO48) || defined(REPRO55): la version de code qui sera retenue à la fin est nouvelle
  - Ces clés devront être supprimées
- Répertoires ext
  - Répertoire arome/ext et mesonh/ext contiennent les codes non PHYEX qu'il faut modifier dans le pack pour qu'il puisse être compilé.
  - Ce répertoire devra être vidé à la fin du phasage, les modifications nécessaires devront avoir été fournies par ailleurs
- Code AROME:
  - supprimer les répertoires internals et modules de mpa/* qui sont repris par phyex
  - supprimer les codes listés dans le fichier src/arome/gmkpack_ignored_files (ceux qui ne sont pas dans phyex)
  - reprendre le code de src/arome/ext pour mettre à jour le code IAL
  - déplacer dans mpa/conv: aro_convbu
  - déplacer dans un nouveau mpa/aux: aro_startbu, aroini_budget, aro_suintbudget, aro_suintbudget_omp, aroini_cstmnh, aroini_frommpa, modd_spp_type
  - appels à condensation remis dans src/mesonh/micro/radtr_satel.f90,
        src/mesonh/micro/ice_adjust_elec.f90 et src/mesonh/micro/lima_adjust_split.f90
  - arp_shallow_mf non phasé
  - LIMA à faire
  - KFB ?
Pb identifiés à corriger plus tard:
  - LHGRAD non porté sur GPU (mis en commentaire) : trop de gradient horizontaux à traiter et utilisation de XXHAT (domaine carré seulement). A traiter plus tard
  - deposition devrait être déplacée dans ice4_tendencies
  - avec les optimisations de Ryad, les tableaux 3D de precip passés à ice4_tendencies
    lorsque HSUBG_RC_RR_ACCR=='PRFR' ne sont  pas utilisables puisque les K1, K2 et K3
    sont relatifs à la boucle IMICRO et que les calculs faits en debut de routine ne
    concernent qu'une partie des points
         => à corriger
  - seules quelques options sont testées avec les cas test (par exemple, il faudrait tester RMC01 mais
    l'option n'est pas remontée en namelist)
  - th_r_from_thl_rt appelée partout, il faudrait limiter à OTEST
  - sedimentation momentum non branchée
  - si possible, modifier ice4_sedimentation_split* dans le même esprit que stat
  - il faudrait nettoyer les interfaces pour supprimer les clés passées directement
    alors qu'elles sont également disponibles dans les structures (ex: HMF_UPDRAFT)
  - il faudrait harmoniser l'utilisation des variables D% (cad faire IKT=D%NKT en haut ou utiliser directement D%NKT)
  - La taille du buffer utilisé pour th_r_from_thl_rt doit être mise en module et
    utilisée pour déclarer le buffer dans les routines appelantes et dans th_r_from_thl_rt
  - shallow_mf_pack devrait être récrit pour appeler directement shallow_mf sans recopier les tableaux pour les changer de forme
  - rain_ice:
    - séparer l'avance temporelle du découpage en sous-blocs en créant une couche driver supplémentaire. Cette couche pourrait
      avoir différentes implémentations (filtre LLMICRO seul, filtre LLMICRO + découpage en sous-blocs, filtre LLMICR
    - mettre le code des interpolations linéaires et bi-linéaires dans des routines avec deux implémentations: avec et sans packing
  - shuman, turb, shuman_mf, apl_arome
    - peut-on remettre à jour la partie sous le sol des variables pronostiques avant d'entrer dans EDKFi dans Méso-NH? Si oui, on devrait pouvoir
      récrire les shuman_mf pour qu'ils produisent les mêmes résultats qu'aujourd'hui mais sans utiliser les valeurs sous le sol ou dans "l'espace infini"
    - si les shuman_mf sont récrits, on doit pouvoir limiter les calculs à NKTB:NKTE dans EDKF (gain de temps calcul sur Méso-NH)
    - ces nouveaux shuman_mf (renommés phy) pourrait (?) être utilisés dans la turbulence => une seule version de shuman pour toute la physique
    - après ce travail, il serait possible de réétudier la possibilité de limiter les calculs dans la turb à NKTB:NKTE
    - ce qui permettrait de supprimer les variables avec niveaux supplémentaires dans apl_arome
Nettoyage ultérieur :
- Budgets/LES
Une fois toutes les routines de la turbulence ont leur dimension horizontale packée et
utilisent LES_MEAN_SUBGRID_PHY a la place de LES_MEAN_SUBGRID_PHY : renommer les routines arome/turb et mesonh/turb en les_mean_subgrid.F90 et remplacer partout dans le code les appels (enlever le _PHY) + supprimer les anciennes routines

Reprendre les différents outils en deux scripts principaux:
- outil pour reprendre toutes les fonctionnalités sur le code: filepp, MNH_Expand_Array, correct_indent.py, verify_mnh_expand.py et renommage
- outil prep_code débarrassé du renommage pour ne faire que la gestion des commit et lancer la manipulation sur le code
Il restera, à part, les scripts de comparaison des résultats (à moins qu'ils puissent être inlinés dans les check_commit correspondant)