wiki:UserList/BilanDidier

Version 35 (modified by dsolyga, 11 years ago) (diff)

--

Liste des développements réalisés

Voici la liste de mes travaux :

  • Réorganisation de stomate( juin-septembre 2010) : travail consistant à calquer l'organisation des modules de stomate sur l'organisation des modules de sechiba
    • encapsulation des variables restartées dand les modules où elles sont définies. Actuellement, toutes les variables sont définies dans stomate alors que certaines variables ne sont utilisées que dans un module.
    • création d'une routine init dans chaque module pour l'initialisation des variables
    • j'avais updaté la liste des variables par rapport à ma version de travail originelle (ORCHIDEE AR5 juin 2010)
    • J'explique ce travail sur la page suivante :voir CleanOrchidee
    • Avec le recul, je ne suis pas très satisfait de ce travail. Il est à reprendre et à actualiser. La version est sur le serveur SVN (branche Restruct_Stomate)
    • C'est un travail qui n'est pas spécialement difficile mais long. Les test à faire sont triviaux (comparaison de fichiers restart).
    • QUESTION : Est-ce que le but est bien de supprimer le module stomate_io ?
  • Développement de l'externalisation des paramètres du modèle (septembre 2010 - Avril 2011 puis maintenance jusqu'en mai 2012) :
    • implémentée dans le tag 1.9.6.
    • Outils : script python permettant de construire une carte avec X pfts à partir de la classification de Olson. Il s'agit d'une mise à jour du script de Martial et Nathalie de 2006. Il utilise la librairie CDAT2. Problème : il est utilisable uniquement sur Obelix et n'est donc pas portable. Voir http://forge.ipsl.jussieu.fr/orchidee/browser/trunk/TOOLS/GENERATE_VEGET_MAP
    • J'avais reformaté les etiquettes pour les paramètres dans le code (ajout de Config units) afin qu'ils soient interprétables par un script shell et gawk.
      Ces 2 scripts permettent de génerer 2 fichiers texte orchidee.default et orchidee_wiki. orchidee_wiki génère un fichier texte au format wiki permettant de mettre à jour la page suivante Documentation/OrchideeParameters . Attention, seuls les Config Help écrits sur plusieurs lignes sont gérés. Les autres rubriques doivent tenir obligatoirement sur une ligne.http://forge.ipsl.jussieu.fr/orchidee/browser/trunk/TOOLS/TOOLS_PARAMETERS
    • Tous les scripts sont documentés : il y a un fichier README pour chacun des 2 scripts.
  • Spatialisation :
    • Travail jamais effectué. Il y a eu d'autres priorités, par conséquent pas le temps pour faire la liste des paramètres. Avec la nouvelle hydrologie, c'est peut-être le bon moment pour y réfléchir. Je peux ouvrir un ticket.
    • J'ai écrit un document en août 2011 sur la spatialisation de dpu_cste (maintenant dpu_max) et vcmax_opt. Voir le document suivant en français format doc format pdf
    • J'ai également une version d'ORCHIDEE basée sur la révision 300 de la branche ORCHIDEE-EXT où j'avais ajouté une dimension supplémentaire à dpu_cste et à vcmax_opt. Elle est présente sous le serveur svn dans mon dossier personnel sous le nom TEST_SPATIALIZATION_JULY_2011.
    • Nicolas Viovy a spatialisé la profondeur de sol et vcmax dans sa version (ainsi que le sla).
    • Dans la branche Assimilation, le paramètre ext_coeff a été spatialisé.

  • Spin-up (avril-juin 2011 puis novembre 2011-juilet 2012) :
    • Implémentation réalisée. Permet d'accélerer la convergence des pools de carbone du sol.
    • Travail entièrement documenté : voir Branches/AccelerationSpinup pour la description du développement, la présentation donnée lors de la réunion ORCHIDEE-DEV du 05/07/2012 SPINUP_final_presentation et le document technique de septembre 2012 SPINUP_technical_documentation
    • Extension de la méthode lors des prochains merges : la méthode doit être retravaillée pour le merge avec FM et avec l'azote. Pour FM, il faut rajouter 2 pools de litière et donc augmenter la taille des matrices. Pour FM, j'ai finalement réussi à le faire dans la version MERGE_FORESTRY.
    • Extension de la méthode pour FM et la branche azote : branches/AccelerationSpinup/ExtensionMethod?
    • Si l'écriture des fichiers stomate_Cforcing.nc et stomate_forcing.nc doit être supprimé, il faut toujours pouvoir lire dans le .def le paramètre FORCESOIL_NB_YEAR (::nbyear dans stomate.f90). Ce paramètre est utilisé pour calculer la période de résolution.
  • Performances du modèle :
    • Mon travail sur les performances du modèle se trouvent ici : ParallelismPerformances
    • Tutoriel sur l'utilisation de vampirtrace ici HowTo/OrchideeVampir.
    • Conclusion : les performances d'ORCHIDEE sont correctes jusqu'à 64 processeurs (CRU-NCEP, 0.5°). Pour NCC (1°), l'optimal est 32 processeurs. Pour les forçages intermédiaires, choisir 48 processeurs.
    • Suggestion : une réflexion est à envisager sur le nombre de variables à sortir ou au moins sur le niveau des sorties des variables. Dans un premier temps, on pourrait mettre à 1 les variables nécessaires pour réaliser un spin-up.
  • Cours :
    • J'ai regroupé les dernières versions des fichiers odp sur le DODS dans le dossier WIKI/ORCHIDEE_COURSE.
    • Il y a 5 tutoriels : deux donnés lors des formations ORCHIDEE, un sur les tickets, un quick start guide et le cours SVN.
    • SVN : J'ai remis à jour mon cours en essayant de merger la présentation de Josefine donnée lors de la réunion DEV du 13/11/2012. (voir SVN_course)
    • Quick start guide : écrit avec Sebastiaan et Josefine. Permet d'installer et de lancer ORCHIDEE avec libigcm pour la première fois. (voir quick_start_guide_ORCHIDEE)
    • Formation ORCHIDEE : cours sur la configuration OOL_SEC_STO et libigcm sur Obelix (voir Config_ORCHIDEE)
    • Formation ORCHIDEE sur les sites web et le management du code (Code_and_doc_ORCHIDEE)
    • le tutoriel sur les tickets est accessible sur la page HowTo

  • Maintenance des configurations :
    • Le passage à libigcm 2.0 pour les configurations d'ORCHIDEE s'est fait un peu dans la douleur.
    • Les configurations du trunk actuel, dont le spinup fonctionnent avec toutes les versions de libigcm (rétro-compatibilité)
    • A l'avenir, s'assurer de se tenir au courant de l'évolution de libigcm
  • Tâches secondaires :
    • Compilation ORCHIDEE avec gfortran (pour installation personnelle sur pc portable)
    • Synchronisation de la branche MERGE-OCN avec le trunk pour avoir une version avec l'azote la moins divergente possible. Proposition :intégrer la dimension supplémentaire des variables de carbone dans le trunk (pas de changements dans les résultats). Il s'agit d'ajouter une dimension supplémentaire aux variables suivantes : bm_sapl, litter, bm_to_litter, turnover_daily, turnover_littercalc, turnover_longterm, bm_to_littercalc and biomass.
    • Compilation avec le lf95 sur Obelix : je n'ai mis à jour le script depuis la réorganisation des sources. Le compilateur lf95 est utilisé pour la branche Assimilation. Il est assez strict donc utile pour débugguer. Voir :http://forge.ipsl.jussieu.fr/orchidee/browser/trunk/TOOLS/COMPILATION_LF95.
  • Liste des paramètres de la branche Assimilation (ébauche) :
    • liste des paramètres propres à la branche Assimilation : opti_fstressh, opti_kpheno_crit, opti_thetaleaf, opti_clumping, opti_lai_init, opti_kalbedo_soil, opti_kalbedo_veg et opti_ksoilC
    • Ajout dans ma branche personnelle MERGE_FORESTRY de moistcont_min, maint_resp_c + frac_growthresp est PFT-dépendant comme dans l'assimilation
    • Il faudrait faire un travail de convergence sur les noms de paramètres. Voir le compte-rendu Branches/Assimilation.
    • liste des paramètres communs ou équivalents
Parameter name in Assimilation branch Parameter name in trunk Comments
vcmax_opt vcmax_opt
vjmax_opt vjmax_opt
humcste humcste
gsslope gsslope
tphoto_opt_c_tab tphoto_opt_c
tphoto_min_c_tab tphoto_min_c
tphoto_max_c_tab tphoto_max_c
senescence_temp1_tab senescence_temp_c
lai_max lai_max
sla sla
leafagecrit_tab leafagecrit
klaihappy lai_max_to_happy pixel dependent in Assimilation branch (scalar in trunk)
tau_leafinit tau_leafinit pixel dependent in Assimilation branch (scalar in trunk)
z0_over_height z0_over_height
so_capa_wet so_capa_wet
q10 soil_Q10 in Assimilation branch, q10 is pixel dependent and equals 2; In trunk, soil_q10 equals ln(2)
moitscont_a moist_coeff In trunk, moist_coeff values are positive
moitscont_b moist_coeff In trunk, moist_coeff values are positive
moitscont_c moist_coeff In trunk, moist_coeff values are positive
z_decomp z_decomp
maint_resp_slope1_tab maint_resp_slope_c
frac_growthresp frac_growthresp PFT dependent in Assimilation branch; PFT-dependent in trunk after merge of Forestry
dpu_cste dpu_max
ext_coeff ext_coeff pixel and PFT dependent in Assimilation branch
  • Travaux non effectués :
    • Lecture par paquets des fichiers de forçage : Martial a codé dans sa version personnelle la lecture par paquets des fichiers de forçage. Cette version est basée sur la version 1.9.5.2 et le portage sur le trunk actuel nécessite du travail (à cause de l'interpolation journalière). J'ai testé un peu le code et il y a un problème avec les fichiers de restart. J'ai archivé mes tests avec Vampir sous Curie, sur mon $WORKDIR dans MY_WORKS/PERFORMANCES_IO_ORCHIDEE_IMPROVEMENTS_TESTS/RESULTS (prendre l'archive TEST_LECTURE_PAQUETS_FORCING_MM.tar).

Liste des versions dans mon dossier personnel SVN :

  • Il existe 3 versions d'ORCHIDEE dans mon dossier personnel.
    • MERGE_FORESTRY : basée sur la branche MERGE-OCN (trunk + dimension supplémentaire pour les variables du carbone). Cette version intègre la branche orchidee_FM.
    • TEST_NEW_EXTERNALIZATION : basée sur une relative ancienne version du trunk. Utilisée pour améliorer l'externalisation (lecture des paramètres sous la forme beech%vcmax_opt par exemple). Problème pour l'interfacer avec setvar_p.
    • TEST_SPATIALIZATION_JULY_2011 : basée sur une ancienne révision de la branche ORCHIDEE_EXT. Utilisée pour modifier les dimensions de vcmax et dpu_cste (maintenant dpu_max).

  • Sur l'intégration de forest management dans le trunk :
    • j'ai externalisé les paramètres propres à FM et renommé certains paramètres PFTs (voir le paragraphe suivant)
    • ajout du flag FOREST_MANAGEMENT
    • Prise en compte des commentaires de Valentin (cf stomate_forestry de la branche orchidee_FM) + prise en compte du point de Toon (cf FMCleanUp) + prise en compte des remarques de Fabienne (idem FMCleanUp)
    • simplification de stomate_alloc
    • Suppression de la partie validation de forestry sur site (pas assez générique)
    • ajout de 2 paramètres de l'assimilation moistcont_min et maint_resp_c (n'impacte pas les résultats)
    • extension du spin-up analytique à 9 pools de carbone
    • Inclusion de quelques éléments d'O-CN : pour le module de feu, prise en compte du réservoir woody; ajout des calculs de mise à jour de lignin_struc et lignin_wood dans lpj_cover et stomate_lcchange.
    • Nettoyage et cosmétique
    • Modules à merger : tous les modules de src_parameters (sauf constantes_soil) + tous les modules de src_stomate (AA_make + stomate_io a été mis aux normes de la doc) + intersurf (également aux normes de la doc). Autres modifications : src_global (tous, mise aux normes de la doc), src_driver (dim2_driver et readdim2, mise aux normes de la doc).
    • ATTENTION : il faut penser au problème de la fermeture du bilan de carbone à cause des modifications de stock de carbone (cf variable bm_export, impact sur la nbp).

Externalisation Forest management :

J'ai fait la liste des paramètres PFT pour forest management. Avec Nicolas (Viovy), nous avons renommé certains paramètres qui n'étaient pas très explicites (comme a, c, d, etc). Voici la liste des nouveaux noms (concerne le module forestry) :

Ancien nom Nouveau nom
a fm_allo_a
c fm_allo_c
d fm_allo_d
p fm_allo_p
q fm_allo_q
a0 allo_crown_a0
a1 allo_crown_a1
a2 allo_crown_a2

Voilà la liste complète des paramètres PFTs :

  !
  ! Forest Management
  !
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: fm_allo_a_mtc = &
  & (/ undef,   19.42,   19.42,     9.3,   19.42,   19.42,   9.3,  &        
  &    19.42,     9.3,   undef,   undef,   undef,   undef   /)   
    
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: fm_allo_c_mtc = &
  & (/ undef,    0.11,   0.11,     0.35,   0.11,    0.11,   0.35,  &        
  &    0.11,     0.35,   undef,   undef,   undef,   undef   /)     
  
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: fm_allo_d_mtc = &
  & (/ undef,    0.13,   0.13,     0.3,   0.13,    0.13,   0.3,  &        
  &    0.13,     0.3,   undef,   undef,   undef,   undef   /)     
  
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: fm_allo_p_mtc = &
  & (/ undef,    0.75,   0.75,     0.69,   0.75,    0.75,   0.69,  &        
  &    0.75,     0.69,   undef,   undef,   undef,   undef   /) 
      
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: fm_allo_q_mtc = &
  & (/ undef,    -0.12,   -0.12,     -0.32,   -0.12,    -0.12,   -0.32,  &        
  &    -0.12,    -0.32,    undef,    undef,   undef,    undef   /)
       
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: allo_crown_a0_mtc = &
  & (/   undef,   -0.7602,   -0.7602,     -1.019,   -0.7602,   -0.7602,   -1.019,  &        
  &    -0.7602,    -1.019,     undef,      undef,     undef,      undef   /) 
  
  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: allo_crown_a1_mtc = &
  & (/   undef,   0.6672,   0.6672,     0.887,   0.6672,   0.6672,   0.887,  &        
  &    0.6672,     0.887,     undef,      undef,     undef,      undef   /)   

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: allo_crown_a2_mtc = &
  & (/   undef,   0.12646,   0.12646,     0.188,   0.12646,   0.12646,   0.188,  &        
  &    0.12646,     0.188,     undef,      undef,     undef,      undef   /)   

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: h_first_mtc = &
  & (/   0.0,   10.0,   10.0,   10.0,   10.0,   10.0,  10.0,   &
  &     10.0,   10.0,    0.0,    0.0,    0.0,    0.0   /)

  LOGICAL, PARAMETER, DIMENSION(nvmc) :: plantation_mtc = & 
  & (/  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  &
  &     .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.,  .FALSE.  /)

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: nmaxtrees_mtc = & 
  & (/  10000.,  10000.,  10000.,  10000.,  10000.,  10000.,  10000.,  &
  &     10000.,  10000.,  10000.,  10000.,  10000.,  10000.  /)

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: dens_target_mtc =  &
  & (/   0.0,   100.0,   100.0,   200.0,   100.0,   100.0,   200.0,  &
  &    100.0,   200.0,     0.0,     0.0,     0.0,     0.0   /) 

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: branch_ratio_mtc =  & 
  & (/  0.0,   0.38,   0.38,   0.25,   0.38,   0.38,   0.25,  & 
  &    0.38,   0.25,    0.0,    0.0,    0.0,    0.0 /)

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: frac_growthresp_mtc = &
  &(/  0.28,   0.28,   0.28,   0.28,   0.28,   0.28,   0.28, &
  &    0.28,   0.28,   0.28,   0.28,   0.28,   0.28 /) 

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: pipe_density_mtc = &      !! Density (gC/m3) (source: AFOCEL 2006
  &(/   0.0,   3.e5,   3.e5,   2.e5,   3.e5,   3.e5,   2.e5,  &
  &    3.e5,  2.e5,    2.e5,   2.e5,   2.e5,   2.e5  /)  

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: decl_factor_mtc = &
  & (/     0.0,   0.0005,   0.0005,   0.0007,   0.0005,   0.0005,   0.0009, & 
  &    0.00075,   0.0005,      1.0,      1.0,      1.0,      1.0 /)    

  REAL(r_std), PARAMETER, DIMENSION(nvmc) :: opt_factor_mtc = & 
  & (/  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  &
  &     1.0,  1.0,  1.0,  1.0,  1.0,  1.0  /)

Le bout de code est disponible dans mon répertoire perso, dans le dossier MERGE_FORESTRY.

Liste paramètres O-CN

Voilà la liste pour les paramètres de l'azote (fait rapidement) :

  ! CN ratio of leaves if nitrogen is not calculated dynamically
  REAL(r_std), SAVE, DIMENSION(nvm)                  :: cn_leaf_prescribed
  cn_leaf_prescribed(2:nvm) = &
 & (/         25.,       25.,       42.,       25.,       25.,     42.,  &
 &                     25.,       25.,      25.,       25.,      25.,     25.   /)

  ! minimum CN ratio of leaves in dynamic mode
  REAL(r_std), SAVE, DIMENSION(nvm)                        :: cn_leaf_min
  cn_leaf_min(2:nvm) =   &
 & (/         16.,       16.,       28.,       16.,       16.,     28.,  & 
 &                     16.,       16.,       16.,      16.,      16.,     16.   /)

  ! maximum CN ratio of leaves in dynamic mode 
  REAL(r_std), SAVE, DIMENSION(nvm)                        :: cn_leaf_max 
  cn_leaf_max(2:nvm) =   &
 & (/         45.,       45.,       75.,       45.,       45.,     75.,  & 
 &                     45.,       45.,       45.,      45.,      45.,     45.   /)

!!$  ! leaf CN parameter for allocation
!!$  REAL(r_std), DIMENSION(nvm)                        :: cn_leaf_crit 

  ! CN of "wood" for allocation relative to leaf CN
  REAL(r_std), DIMENSION(nvm)                        :: fcn_wood
  fcn_wood(2:nvm) = &
 & (/        .145,      .145,      .145,      .145,      .145,    .145,  & 
 &                    .145,       .145,       .86,      .86,      .86,     .86   /)

  ! CN of "root" for allocation relative to leaf CN
  REAL(r_std), DIMENSION(nvm)                        :: fcn_root
  fcn_root(2:nvm) = &
 & (/         .86,       .86,       .86,       .86,       .86,     .86,  & 
 &                     .86,       .86,       .86,      .86,      .86,     .86   /)

!!$  ! size of reserve in standard allocation (frac times LAI)
!!$  REAL(r_std), DIMENSION(nvm)                        :: reserve_frac 

  ! root conductance for water [units?], c.f. Hickler et al., 2006
  REAL(r_std), DIMENSION(nvm)                        :: k_root
  k_root(2:nvm) = & 
 & (/           4.,       4.,        4.,        4.,         4.,     4.,  & 
 &                      4.,        4.,         4.,      4.,       4.,     4.    /)*1.e-7

  ! sapwood specific conductance for water [units], c.f. Hickler et al., 2006
  REAL(r_std), DIMENSION(nvm)                        :: k_sap

  k_sap(2:nvm) = & 
 & (/          30.,      30.,        30.,       30.,        30.,     30.,  & 
 &                      30.,        30.,        .1,      .1,       .1,     .1    /)*1.e-4 * 0.67 

  ! root to sapwood tradeoff parameter (calculated from the above parameters)
  REAL(r_std), DIMENSION(nvm)                        :: c0_alloc  

  ! leaf to sapwood area at zero height and no water stress (calculated from the above parameters)
  REAL(r_std), DIMENSION(nvm)                        :: k_latosa_zero

! relative photosynthetic capacity of plant functional types (fraction)
! for CEXCHANGE (Friend and Kiang, 2005) photsynthesis calculations 
  REAL(r_std), DIMENSION(nvm),SAVE :: &  
 &  nf_fix = (/ 1.0, 1.1, 1.5, 0.75, 1.1, 1.5, 0.75, 1.5, 1.5, 1.5, 0.5, 1.5, 0.5 /) 
! minimum conductance associated with cuticular transpiration (m/s)
! for CEXCHANGE (Friend and Kiang, 2005) photsynthesis calculations 
  REAL(r_std), DIMENSION(nvm),SAVE :: & 
 &  gs_min = (/ 0.00006, 0.00006, 0.00006, 0.00003, 0.00006, 0.00006, & 
 &                  0.00003, 0.00006, 0.00003, 0.00006, 0.00006, 0.00006, 0.00006 /)    
! maximum conductance associated with full stomatal overture (m/s)
! for CEXCHANGE (Friend and Kiang, 2005) photsynthesis calculations 
  REAL(r_std), DIMENSION(nvm),SAVE :: & 
 &  gs_max = (/ 0.006, 0.006, 0.006, 0.006, 0.006, 0.006, & 
 &                  0.006, 0.006, 0.006, 0.006, 0.01, 0.006, 0.01 /)
! slope of gs response to photosynthesis at CO2 saturation
! for CEXCHANGE (Friend and Kiang, 2005) photsynthesis calculations 
  REAL(r_std), DIMENSION(nvm),SAVE :: & 
 &  gsslope_fix = (/ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.5, 1., 1.5 /)

  ! below this lai, the carbohydrate reserve is used
!!  REAL(r_std), DIMENSION(nvm)                               :: lai_happy

    ! pft parameters
    REAL(r_std), DIMENSION(nvm) :: max_soil_n_bnf = &
    &  (/ 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 2., 2., 2., 2. /)

!!$    ! Kompensation point of CN on nitrogen uptake
!!$    REAL(r_std), DIMENSION(nvm) :: up_b 
!!$    REAL(r_std), DIMENSION(nvm) :: up_m 
!!$    REAL(r_std), DIMENSION(nvm) :: Kcn 
!!$    REAL(r_std), DIMENSION(nvm,2) :: vmax_uptake

Suggestions, remarques

  • Simplification du code : on peut éliminer quelques paramètres redondants comme maint_resp_slope, pheno_gdd_cri et senescence_temp. Par exemple, maint_resp_slope est défini comme ceci :
  REAL(r_std), ALLOCATABLE, SAVE, DIMENSION(:,:) :: maint_resp_slope  !! slope of maintenance respiration coefficient 
                                                                      !! (1/K, 1/K^2, 1/K^3), used in the code

    maint_resp_slope(:,1) = maint_resp_slope_c(:)              
    maint_resp_slope(:,2) = maint_resp_slope_b(:)
    maint_resp_slope(:,3) = maint_resp_slope_a(:)

On l'utilise dans l'équation suivante dan stomate_npp et stomate_resp :

       slope(:) = maint_resp_slope(j,1) + tl(:) * maint_resp_slope(j,2) + &
            tl(:)*tl(:) * maint_resp_slope(j,3)

alors que l'on pourrait utiliser directement maint_resp_slope_a, maint_resp_slope_b et maint_resp_slope_c :

       slope(:) = maint_resp_slope_c(j) + tl(:) * maint_resp_slope_b(j) + &
            tl(:)*tl(:) * maint_resp_slope_a(j)
  • Documentation : Martial a converti en latex les documents techniques que Fabienne et lui avaient écrits. Ils sont disponibles dans sa version personnelle sur svn. Il faudrait qu'ils soient mis à jour.
  • Tickets à créer : spatialisation, lecture fichier CO2 par les scripts, ajout des flags liés aux COV dans sechiba.card.
  • La partie de code suivante dans stomate n'est pas conforme aux normes FORTRAN et donc pas très portable (après discussion avec P.Corde de l'IDRIS) :
   !! 1.4.6.1 Calculate steps that can be stored in memory
   ! Action for the root processor only (parallel computing)  
   IF (is_root_prc) CALL SYSTEM ('rm -f '//TRIM(forcing_name))
   WRITE(numout,*) 'writing a forcing file for STOMATE.'

on pourrait remplacer cette instruction par :

    OPEN(unit=1, filename=TRIM(forcing_name),...)
    CLOSE(unit=1, status=delete)

ou mieux encore :

    logical :: is_forcing

    INQUIRE(FILE=TRIM(forcing_name), EXIST=is_forcing)
    IF (is_forcing) THEN
       OPEN(unit=1, filename=TRIM(forcing_name))
       CLOSE(unit=1, status=delete)
  • Les paramètres Tetens1 et Tetens2 pourraient être simplifiés (Tetens2 = 1 -Tetens1 de mémoire) et remplacés dans d'autres endroits du code. (voir avce Nicolas Vui)

Commentaires sur le module forestry

Lors du merge avec Forestry, j'ai remarqué un bout de code vraiment bizarre :

                IF ( forest_managed(i,j) == 4 ) lai_max_calc(i,j) = MIN(REAL(0+1)**2/4.,1.)*lai_max(j)

Pour moi cela revient à diviser le lai par 4. Pourquoi cette formule?