wiki:DevelopmentActivities/MergeHydro/lai_note

Simplification du traitement du LAI dans ORCHIDEE

Objectif

Le but de cette modification est d'assurer un traitement correct du LAI dans ORCHIDEE en intégrant les différentes modifications faites ces dernières années. On désire aussi simplifier le code en abandonnant du codes caduque. Les évolutions envisagées sont :

  • L'évolution du LAI en fonction de la température est caduque et n'a plus de raison d'être.
  • Il faut assurer que le LAI évolue toujours entre llaimax et llaimin
  • Correction de l'interpolation spatiale du LAI lors de sa lecture
  • Pour l'interpolation temporelle faut il revoir le calcule de la date ? Il y a toute une gymnastique pour déterminer si l'année a changé. Il suffit de regarder si year a changé dans le module grid.f90.
  • Annoncer à l'utilisateur la carte de LAI qu'il utilise et créer une bibliothèque de cartes.
  • Vérifier la cohérence des options choisi par l'utilisateur.

Modules concernés

  • Slowproc : slowproc_lai, slowproc_interlai
  • constantes_veg

Étapes

  • Enlever tout le code lié aux fonctions de température.
    • Dans slowproc_lai
    • Dans constantes_veg
    • Les variables lu du run.def : SLOWPROC_LAI_TEMPDIAG
    • Rajouter un test pour que laimap est bien lu si STOMATE=.FALSE.
  • Corriger l'interpolation spatiale et rajouter la normalisation des valeurs lu entre llaimax et llaimin.
  • simplifier la gestion du temps pour l'interpolation temporelle
  • Rajouter des vérification des cartes (lire les attributs de la carte de LAI lu et garder l'information). Faut il rajouter l'info dans les restarts ?

Vérifications

  • Vérifier l'interpolation spatiale (comparer la carte du restart (laimap)avec celle obtenu par une interpolation indépendante (logiciel graphique).
  • Vérifier l'interpolation temporelle : dans un run comparer les valeurs journalières (lai) avec les mensuelles lu dans la carte de départ (laimap).
  • Vérifier l'évolution des variables day, month et EndOfYear? dans plusieurs configurations.
  • Vérifier le suivit de l'information de la carte de LAI lu et interpolée.
  • Comparer avec ce que donne le modèle sur le LAI avec STOMATE=OK.

Note de Martial sur le LAI

Il y a plusieurs définitions de laimax dans ORCHIDEE :

  • dans constantes_veg :
     ! laimax for maximum lai see also type of lai interpolation
      REAL(r_std),DIMENSION(nvm),SAVE :: llaimax = &
     & (/ 0., 8., 8., 4., 4.5, 4.5, 4., 4.5, 4., 2., 2., 2., 2./)
    
  • dans diffuco :
         REAL(r_std), PARAMETER                :: laimax = 12.
    
  • dans stomate_constants :
    ! maximum LAI, PFT-specific
      lai_max(:) =   &
     & (/     undef, &
     &          7.,     7.,      5.,      5.,      5.,     4.5, &
     &        4.5,    3.0,     2.5,     2.5,     5.,     5.  /)
    

On doit donc encore trancher sur les bonnes valeurs à prendre.

De plus, la correction de la projection proposée dans la version LMD :

    !
    ! Normelize the read LAI by the values SECHIBA is used to
    !
    DO ib=1,nbpt
        DO jv=1,nvm
           lmax = MAXVAL(laimap(ib,jv,:))
           lmin = MINVAL(laimap(ib,jv,:))
           ldelta = lmax-lmin
           IF (jv==2) THEN
              WRITE(numout,*) "lmin,lmax,ldelta",lmin,lmax,ldelta
              WRITE(numout,*) "1 laimap(ib,jv,:)",laimap(ib,jv,:)
           ENDIF
           IF ( ldelta < min_sechiba) THEN
              ! LAI constante ... keep it constant
              laimap(ib,jv,:) = (laimap(ib,jv,:)-lmin)+(llaimax(jv)+llaimin(jv))/deux
           ELSE
              laimap(ib,jv,:) = (laimap(ib,jv,:)-lmin)/(lmax-lmin)*(llaimax(jv)-llaimin(jv))+llaimin(jv)
           ENDIF
           IF (jv==2) THEN
              WRITE(numout,*) "2 laimap(ib,jv,:)",laimap(ib,jv,:)
           ENDIF
        ENDDO
    ENDDO

pose un problème pour les PFTs pour lesquels llaimin = llaimax.
On a alors plus du tout de variation saisonnière de ces PFTs et on ne tient plus compte de la valeur de LAI du fichier. C'est le cas dans cette version où :

! laimin for minimum lai see also type of lai interpolation
  REAL(r_std),DIMENSION(nvm),SAVE :: llaimin = &
 & (/ 0., 8., 0., 4., 4.5, 0., 4., 0., 0., 0., 0., 0., 0./)

Les llaimin des PFTs 2,4,5 et 7 sont égales aux llaimax (voir leur définition plus haut). Aussi quelles sont les valeurs admissibles des llaimin pour normaliser ?

Last modified 10 years ago Last modified on 11/07/11 11:18:24