Changes between Version 26 and Version 27 of DevelopmentActivities/Assimilation


Ignore:
Timestamp:
2012-06-13T10:49:19+02:00 (12 years ago)
Author:
ekoffi
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevelopmentActivities/Assimilation

    v26 v27  
    22 
    33----------------------------------- 
    4  
    54 
    65== 6/06/2012: Réunion de travail == 
     
    2019 
    2120 - lancer la commande util/model pour une nouvelle configuration spécifique à l'ASSIMILATION dans le fichier mod.def (à éditer au préalable pour choisir le type d'optimisation et les tags ORCHIDEE/IOIPSL): 
    22   - Récupére un tag/trunk d’ORCHIDEE/ORCHIDEE_OL pertinente à l’optimisation qu’on veut réaliser 
    23   - Récupére aussi les drivers/sources spécifiques pour l’optimisation qu’on veut réaliser dans le répertoire ASSIMILATION. Il s'agit e.g., des initialisations des paramètres pour TAF etc.. 
     21  - Récupère un tag/trunk d’ORCHIDEE/ORCHIDEE_OL pertinente à l’optimisation qu’on veut réaliser 
     22  - Récupère aussi les drivers/sources spécifiques pour l’optimisation qu’on veut réaliser dans le répertoire ASSIMILATION. Il s'agit e.g., des initialisations des paramètres pour TAF etc.. 
    2423 
    2524  - lancer ORCHIDEE/makeorchidee_fcm qui effectue les étapes suivantes : 
    2625  - Copie les sources du répertoire NETCDF nécessaire pour TAF dans modeles/ASSIMILATION 
    27   - Crée un répertoire de travail temporaire modele_optim_temp à partir du répertoire modeles. 
    28   - Met les différents répertoires du code d’ORCHIDEE (i.e., ORCHIDEE, ORCHIDE_OL) et le répertoire IOIPSL dans le répertoire modele_optim_temp en respectant la même arborescence de modeles.  
     26  - Crée un répertoire de travail temporaire modeles_optim_temp à partir du répertoire modeles. 
     27  - Met les différents répertoires du code d’ORCHIDEE (i.e., ORCHIDEE, ORCHIDE_OL) et le répertoire IOIPSL dans le répertoire modeles_optim_temp en respectant la même arborescence de modeles.  
    2928 
    3029 
     
    4948   - Entre IMPLICIT NONE et CONTAINS : 
    5049     - Garder les INTERFACE. Gestion particulière ? En effet, TAF n’arrive pas à les gérer proprement sans l’utilisation de directives. 
    51        En particulier, la gestion des INTERFACE des codes IOIPSL se fait via le fichier taf_directives.f90 qui est inclus dans model.f90  
     50       En particulier, la gestion des INTERFACE des codes IOIPSL se fait via le fichier taf_directives.f90 qui est inclus dans model.f90 et dans le Makefile dans TANEGANT 
    5251     - Couper les variables globales SAVE. Mettre ces variables dans le fichier $rep_init_alloc. 
    5352       Il faut noter que pour l’assimilation, toutes ces variables sont désormais PUBLIC.      
     
    112111     pour conserver les optimisations dans les futures développements)  
    113112  
    114    - Gestion des « includes » des directives TAF:  
    115      Il faut noter que cela se fait dans model.f90 mais doit être spécifique à chaque version pour l’optimisation et aussi à la version de IOSPL. 
    116      Ce n'est pas simple de gérer automatiquement les directives TAF parce qu'on ne sait pas de façon claire les raisons pour lesquelles certaines variables SAVE ou fonctions/subroutines ne sont pas analysées par TAF. Pour l'instant, nous gérons ces directives à la main dans le fichier taf_directives.f90 et ceci en fonction des problèmes rencontrés lors de l'exécution des codes dérivés générés par TAF. 
    117      On pourrait faire une gestion automatique en appliquant des directives à toutes les fonctions/subroutines dans le fichier taf_directives.f90 !!!  
    118      A titre d'exemple, voici ci-après les directives pour le cas simple de la subroutine ymds2ju du module calendar.f90 de la librairie IOIPSL. Il faut noter que sans ces directives, TAF ne considère pas l'appel de la subroutine ymds2ju dans le code dérivé e.g., model_tl.f90. On note les numéros des argumens d'entrée de la subroutine dans la commande INPUT et dans OUTPUT ceux des arguments de sortie. Enfin, la commande REQUIRED permet de dire à TAF de considérer cette subroutine lors de la génération des codes dérivés. Après une analyse approfondie de ce cas, nous n'avons pas compris les raisons pour lesquelles TAF ne considère pas cette subroutine dans le code dérivé model_tl.f90. Pour plus de détails sur les directives TAF,il faut consulter la documentation d'utilisation du logiciel qui est fourni.    
     113    
     114   - Gestion des « includes » des directives TAF: Il faut noter que cela se fait dans model.f90 mais doit être spécifique à chaque version pour l’optimisation et aussi à la version de IOSPL. Ce n'est pas simple de gérer automatiquement les directives TAF parce qu'on ne sait pas de façon claire les raisons pour lesquelles certaines variables SAVE ou fonctions/subroutines ne sont pas analysées par TAF. Pour l'instant, nous gérons ces directives à la main dans le fichier taf_directives.f90 et ceci en fonction des problèmes rencontrés lors de l'exécution des codes dérivés générés par TAF. On pourrait faire une gestion automatique en appliquant des directives à toutes les fonctions/subroutines dans le fichier taf_directives.f90 !!! A titre d'exemple, voici ci-après les directives pour le cas simple de la subroutine ymds2ju du module calendar.f90 de la librairie IOIPSL. Il faut noter que sans ces directives, TAF ne considère pas l'appel de la subroutine ymds2ju dans le code dérivé e.g., model_tl.f90. On note les numéros des argumens d'entrée de la subroutine dans la commande INPUT et dans OUTPUT ceux des arguments de sortie. Enfin, la commande REQUIRED permet de dire à TAF de considérer cette subroutine lors de la génération des codes dérivés. Après une analyse approfondie de ce cas, nous n'avons pas compris les raisons pour lesquelles TAF ne considère pas cette subroutine dans le code dérivé model_tl.f90. Pour plus de détails sur les directives TAF, il faut consulter la documentation d'utilisation du logiciel qui est fourni.  
    119115{{{ 
    120116!$TAF SUBROUTINE calendar::ymds2ju INPUT  = 1,2,3,4 
     
    124120 
    125121   - Gestion de l’interdépendance des USE:  
     122          
     123 
    126124     
    127    - Copie des « INTERFACE » d’initialisation  
     125   - Gestion des INTERFACE: TAF n'arrive pas à les gérer donc on les gère à la main dans le fichier taf_directives.f90 ou on considère directement dans  
     126    le code ORCHIDEE la subroutine/fonction qui est effectivement utilisée pour l'assimilation. A titre d'exemple, on a remplacé l'INTERFACE suivante: 
     127    {{{ 
     128    INTERFACE intersurf_main 
     129    MODULE PROCEDURE intersurf_main_2d, intersurf_main_1d, intersurf_gathered, intersurf_gathered_2m 
     130    END INTERFACE 
     131    }}} 
     132 
     133     par l'expression suivante ou la subroutine intersurf_main_2d qui est principalement utilisée dans model.f90 lors de l'assimilation est rendue PUBLIC: 
     134 
     135    {{{ 
     136 
     137   PUBLIC :: intersurf_main_2d, stom_define_history, intsurf_time, intsurf_restart,l_first_intersurf 
     138 
     139    }}} 
     140        
     141 
    128142   - Gestion de  la liste des modules. Le faire dans le AA_make de TANGEANT ? 
    129143   - Conformité aux règles de programmation 
    130    - les sources NetCDF 
    131  
     144 
     145   - les sources NetCDF: TAF a besoin de certaines sources NEtCDF. On met ces sources dans le répertoire ASSIMILTION/NETCDF tel que décrit à l'étape 1. Pour leurs utilisations par TAF, voir le Makefile dans TANGEANT. Voici la liste de ces sources: 
     146    {{{ 
     147    netcdf_attributes.f90 
     148    netcdf_dims.f90 
     149    netcdf_expanded_modif.f90 
     150    netcdf.f90 
     151    netcdf_overloads.f90 
     152    netcdf_text_variables_modif.f90 
     153    netcdf_visibility.f90 
     154    netcdf_constants.f90 
     155    netcdf_expanded.f90 
     156    netcdf_externals.f90 
     157    netcdf_file.f90 
     158    netcdf_text_variables.f90 
     159    netcdf_variables.f90 
     160    typeSizes.f90 
     161    }}} 
     162   
     163 Comment gérer cela? Les commettre ces sources ? 
     164[[BR]] 
     165[[BR]] 
    132166 
    133167