wiki:DevelopmentActivities/MergeHydro/logz0_note

Version 1 (modified by nvuilsce, 10 years ago) (diff)

--

Fiche logz0

Description

La formulation faisant intervenir le logarithme de z0 (logz0) est une vieille méthode. La formulation faisant intervenir le cdrag moyen a été retravaillé dans la version LMD. Les valeurs de z0_over_height et height_displacement ont également été modifiées.

  • Dans la version 1.9 :
    • z0_over_height = 1/16 (~0.0625)
    • height_displacement = 0.75
  • Dans la version LMD :
    • z0_over_height = 0.046
    • height_displacement = 0.67

Choix

On enlève la formulation avec le logz0 (le flag z0cdrag_ave associé est à supprimer également). La nouvelle formulation de la routine condveg_z0cdrag doit apparaître dans la version merge sous forme d'un flag.La routine condveg_z0cdrag de la version LMD doit être renommée en condveg_z0cdrag_lmd et doit être réécrite pour travailler avec le couple « veget,veget_max » et non le couple « veget,frac_bare ». Proposition de déplacer les déclarations des paramètres z0_over_height et height_displacement et leur initialisation pour en faire des variables locales aux routines « condveg_z0cdrag » et « condveg_z0cdrag_lmd » et non plus des variables du module (de telle sorte que que l'activation du flag z0cdrag_lmd modifie également les valeurs de ces 2 paramètres.

Mise en oeuvre

  • dans condveg.f90
    • On remplace dans les déclarations de variables du module
      LOGICAL, SAVE                     :: z0cdrag_ave=.FALSE.      
      
      par
      LOGICAL, SAVE                     :: z0cdrag_lmd=.FALSE.      
      
    • On remplace dans la routine condveg_var_init
        z0cdrag_ave = .TRUE.
        CALL getin_p('Z0CDRAG_AVE', z0cdrag_ave)
      
      par
        CALL getin_p('Z0CDRAG_LMD', z0cdrag_lmd)
      
    • On remplace dans les routines condveg_var_init et condveg_update
      IF(impaze)
      ...
      ELSE
             IF ( z0cdrag_ave ) THEN
                CALL condveg_z0cdrag(kjpindex, veget, veget_max, frac_nobio, totfrac_nobio, zlev, &
                     &               height, z0, roughheight)
             ELSE
                CALL condveg_z0logz(kjpindex, veget, veget_max, frac_nobio, totfrac_nobio, height, &
                     &              z0, roughheight)
             ENDIF
            !
      ENDIF
      
      par
      IF(impaze)
      ...
      ELSE
             IF ( z0cdrag_lmd ) THEN
                CALL condveg_z0cdrag_lmd(kjpindex, veget, veget_max, frac_nobio, totfrac_nobio, zlev, &
                     &               height, z0, roughheight)
             ELSE
                CALL condveg_z0cdrag(kjpindex, veget, veget_max, frac_nobio, totfrac_nobio, height, &
                     &              z0, roughheight)
             ENDIF
            !
      ENDIF
      

Tests

conclure à l'issu d'une série de tests, sur la meilleure formulation à retenir entre condveg_z0cdrag et condveg_z0cdrag_lmd Test sur sites Fluxnet, autres ?