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. |
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 | |