Changes between Initial Version and Version 1 of AjeterIci/Branches/Assimilation

10/10/11 15:42:45 (10 years ago)



  • AjeterIci/Branches/Assimilation

    v1 v1  
     1= Assimilation of ORCHIDEE model = 
     7== 23/05/2011: E-mail envoye a Thomas Kaminski pour la version actuelle d ORCHIDEE pour Assimilation == 
     9Hello Thomas, 
     11We have now fixed the problem on the compilation of ORCHIDEE model by using the option "--chkglobal" with lf95. The forward run test has also been performed (i.e., call three times the model, the two first ones without the change of the parameters (as priors), and the last one by perturbing the priors). 
     131. The new version of the ORCHIDEE model shaped for TAF can be found from our ftp server here: 
     14 (These documents are only available on this server for a period of 7 days): 
     18Note that the previous provided readme file is still valid. For this new version, some additional netcdf files have been considered for the runing of TAF (see the line 17 in the file AA_make in the directory ORCHIDEE_OL to indicate the right path:, i.e, NETCDF_SRC). 
     202. In parallel, we are working on the generation of the tangent linear codes of the model with TAF and we have experienced some recurrent errors and warnings. Find hereafter some of them: 
     22 - An error on the string length: " INTERNAL ERROR: string too long."  We do not understand this error since we have set the maximum length of the string to 130 throughout ORCHIDEE model and set to 132 in the command line for TAF in the Makefile. For more details on this error and others, see the output file from TAF running (i.e., taf_output_current and taf-tlm-current.log in the directory TANGEANT). 
     24 -  The following recurrent warning for several routines, e.g., : " *WARNING* : model.f90:463 : call of intersurf_main too many arguments (44) defined = 0" (see in the file taf-tlm-current.log). 
     26 - TAF seems to not handle the following fortran command, as e.g., this line in some netcdf files: 
     27 localMap   (:numDims  ) = (/ 1, (product(localCount(:counter)), counter = 1, numDims - 1) /) 
     28We have then made some modifications in such netcdf files and also made compliant some parts of the ORCHIDEE model to proceed further with TAF. For more details, we have provided the netcdf files we are using including both the original and modified files (i.e., netcdf_expanded.f90 and netcdf_text_variables.f90;  see in the directory NETCDF in TANGEANT). 
     30Note: As it is built now the Makefile for the generation of TL codes (exec tlm), one needs to compile the forward model before, otherwise there is an error. This needs to be fixed. 
     323. Issues on the generated TL codes by TAF 
     33As already mentionned, TAF seems to generate TL codes, but we think that these codes are incompleted. However, we have tried to compile them. Hereafter are some problems we encountered: 
     36 - The generated TL codes by TAF  have sometimes string length over 132 characters. Of course, such a length is not allowed by the lf95 when considering the stricted options of this compiler. As an example, the  generated TL code for TL relevant to the module intersurf.f90: 
     38subroutine intersurf_main_2d( kjit, iim, jjm, kjpindex, kindex, xrdt, lrestart_read, lrestart_write, lon, lat, zcontfrac, & 
     39&zneighbours, zresolution, date0, zlev, u, v, qair, temp_air, epot_air, ccanopy, cdrag, petacoef, peqacoef, petbcoef, peqbcoef, & 
     40&precip_rain, precip_snow, lwdown, swnet, swdown, pb, vevapp, fluxsens, fluxlat, co2_flux_tot, coastalflow, riverflow, tsol_rad, & 
     41&temp_sol_new, qsurf, albedo, emis, z0 ) 
     44Can you clarify us on these issues ? Thanks. 
     46Please do not hesitate to contact us for any clarifications and additional questions. 
     48Best regards, 
     50Ernest & Martial 
     56== Reunion du 20/04/2011 sur l etat d avancement du travail sur l assimilation d ORCHIDEE avec TAF == 
     57Presents: Catherine Ottle (CO), Cedric Bacour (CB), Philippe Peylin (PP), Sylvain Kuppel (SK), Abdou Kane (AK), Martial Mancip (MM), Ernest Koffi (EK) 
     59EK presente les objectifs de ce travail et son avancement (voir presentation. Est-ce possible de mettre cette presentation ici ?) 
     61En  resume, il faut adapter ORCHIDEE de telle sorte qu'on puisse l appeler comme une fonction model(n,x,fc):  avec n le nombre de paramatres du modele a optimiser, x le vecteur parametres et fc la fonction cout en fonction des variables pour lesquelles les parametres sont optimises. Ensuite, il faut compiler le modele avec le compilateur lf95 en utilisant les options les plus strictes possibles de ce compilateur, en occurence l option --chkglobal. Ce travail est effecute par EK et MM. 
     63=== Etat d avancement === 
     651. Modele direct 
     66 - Mise en forme du modele telle que decrite ci-dessus effectuee 
     67 - Compilation du modele sans l option --chkglobal: OK 
     68 - Test du modele sans l option --chkglobal: OK. Ce test consiste a appeler ORCHIDEE deux fois de suite sans modifier les parametres et s assurer que la fonction cout est la meme. Ceci suppose que toutes les initialisations/deallocations des tableaux du modele ont ete bien effecuees. Ensuite, un troisieme test suivant les deux precedents en perturbant les parametres. 
     69 - Compilation du modele avec l option --chkgloabl: OK, mais le modele plante a l execution. 
     712. Modele tangeant lineaire (TL) 
     72  - Code TL genere mais ne compile pas. 
     743. Cette version du modele suit la structure de compilation/gestion du modele ORCHIDEE generique 
     764. Une branche Assimilation est cree : 
     785. Discussions: 
     80 - Calcul de la fonction cout 
     81CB pose la question sur la maniere dont on calcule la fonction cout de la nouvelle version d ORCHIDEE pour l assimilation. En effet, la fonction cout considere les observations pour les variables pour lesquelles on optimise les parametres. Dans la version TL qui utilise seulement une partie du modele et qui marche (travail de Francois Delage (FD) et Cedric Bacour), la fonction cout est calcule a partir de toutes les variables modelisees pour lesquelles on cherche a optimiser les parametres. L argument principal justifiant cette deuxieme maniere de calculer la fonction cout est qu'une fois les codes TL generes, on y revient plus sauf s il y a une modification majeure. 
     82EK pense que les 2 options sont equivalentes pour TAF et surtout que la generation des codes TL par TAF ne prend pas de temps (i.e., une fois que les codes ont ete bien generes) . Ainsi, une modification du code avec ajout d autres variables/parametres ne necessite pas un travail supplementaire important. Il est neamoins prevu de considerer les deux options dans le but de comparer les codes TL. 
     84  - Directives TAF 
     85CB demande si les directives TAF utilisees par FD et CB ont ete conservees. En grande partie oui, sauf les directives dans le nouveau model.f90 ont ete enlevees. Une verification faite apres la reunion montre que les codes TL generes par TAF avec ou sans ces directives restent identiques. 
     87  - Option -keep de TAF 
     88EK pense que cette option ne devrait pas etre consideree car TAF analyse les liens entre les entrees et sorties du modele. Cette option utilisee apres la reunion permet neanmoins d avoir un nombre de modules legerement eleve pour lesquels le code TL est cree. Neanmoins ce code TL ne compile toujours pas. 
     94== 23/03/2011 E-mail and ORCHIDEE codes sent to FastOpt in the framework of the work on TL & AD codes of ORCHIDEE by TAF  == 
     96Dear Thomas, 
     98We have now a version of the whole ORCHIDEE model shaped for TAF, which allows keeping the model structure in order to benefit for any improvements of the model. This version: 
     991) considers the main driver of ORCHIDEE as a subroutine called model (n,x,fc) with n the number of the parameters, x the parameters vector and the cost function fc. The parameters are the default values of ORCHIDEE model parameters and obtained during the initialisation of the model. 
     1012) compiles with lf95 
     1033) We have succesfully made the following tests with this version: 
     104- two consecutive calls of model(n,x,fc) with the same set of parameters: the cost function is OK:, ie., the same value as expected 
     105- A third run after the two aboved mentionned with the set of parameters perturbed: the cost function is different as expected. 
     1074) We have started generating the TL codes with TAF with this version without the option -keep, but the work is still ongoing (Note that the reduced version of ORCHIDEE as previously provided to you is working well with TL codes used for our needs). Indeed, with this version, TAF starts to generate the codes and produces some TL codes which are not yet completed. However, to allow you making use of the code, I have put the current version of the code called here "Assimilation.tar.gz" on our ftp server: 
     110(Note that the data are on this ftp server only for one week from now) 
     112( If you wish to take the data from UNIX/LINUX: 
     114Name ( anonymous 
     115Password: just put enter 
     116ftp> cd incoming/y2k01/orchidee 
     117Then you can get the data ) 
     119You will find a readme file (detailled below), which gives the various steps to be followed for both the compilation and the running of the ORCHIDEE code shaped for TAF: 
     121A/ Having the ORCHIDEE model shaped for TAF 
     1221. go to the directory "util" 
     1232) do ins_make -t lf95. This will create automatically the Makefiles in the directories modeles/ORCHIDEE and modeles/ORCHIDEE_OL where are stored the main codes of ORCHIDEE and the directory "modeles/ORCHIDEE_OL/TANGEANT" where the following drivers (i.e. model.f90, prgcost2.f90, etc..) are stored . 
     1242. go to the directory "ORCHIDEE_OL" 
     1253. do gmake tangeant. This will shape all the codes for TAF and put them in the same directory called "TANGEANT". 
     127B/ Compilation of the codes shaped for TAF in forward mode 
     1281. go to the directory "TANGEANT" 
     1292. do gmake. The exec "orchidee_ol_tg" is stored in ../../../bin 
     131Actions A/ and B/ can be executed automatically by using the script shell called "arrange_orchidee_for_taf": do arrange_orchidee_for_taf and the codes are pop on in the directory modeles/ORCHIDEE_OL/TANGEANT. 
     133C/ Running the ORCHIDEE model in forward mode 
     134We have prepared a set of data in the directory "post" (i.e., inputs, ....) for a test run: 
     1351. go to the directory post 
     1362. Before runing the code, ensure that the run parameters are OK for you. The run definition file is called "run.def". For an example, the time length of the run goto about line 498 ( change TIME_LENGTH if necessary , e.g. TIME_LENGTH= 2D for two days of simulation). For the other parameters, you do not need to change them for this test. 
     1373. Ensure that there are not any restart files in the output directory called "output". In case they are some restart files, the run can stop. To avoid this, we have created a script called "lance" which cleans this directory before the run. 
     139Note that in the current configuration of this forward code, we call three times ORCHIDEE: the first and second ones use the same values of the parameters and the third one with a perturbed parameters. 
     141D/ Generating ORCHIDEE TL 
     142For generating TL and other codes from TAF, the Makefile under TANGEANT can be modified if necessary. However, for the current configuration, to generate TL 
     1431. goto the directory TANGEANT 
     1442. do gmake tlm, but it still does not generate a complete TL code as mentionned earlier. 
     146E/ Other details: 
     147NETCDF stuff in the Makefile under the directory TANGEANT needed for TAF. 
     148Give the right netcdf links at lines 54 and 55 of the current Makefile. 
     149NCDF_INC =  
     150NCDF_LIB = . 
     151In the current version, for TAF we use 3 files (netcdf_constants.f90, typSizes.f90, netcdf.f90 in the directory TANGEANT) relevant for netcdf. Note that these files are not in the repository of ORCHIDEE ! 
     152Of course, the link to taf "staf" needs to be provided at line 159 in the current Makefile 
     154Hope that clarifies the matter and thus we can start efficiently work with the code to fulfill our objectives. 
     156Please do not hesitate to ask us (I and/or Martial) for any clarifications/questions about this version. 
     158With our best wishes, 
     160Ernest and Martial 
     164== 08/12/2010 Réunion sur l'externalisation des paramètres d'ORCHIDEE == 
     165(Didier Solyga, Martial Mancip, Ernest Koffi) 
     167Pour l'externalisation des paramètres d'ORCHIDEE, il y a actuellement deux versions du modèle:  
     168 i. version utilisée pour l'assimilation (Delage/Cedric/Ernest: ci-après version DCE) et  
     169 i. la version d'externalisation générique (Didier: version DM). 
     171=== Fusion des versions === 
     172    On a parcouru les modules relatifs à l'externalisation de ces 2 versions citées ci-dessus. Globalement, ces 2 versions peuvent être fusionnées. Néanmoins ceci nécessitera un travail assez important. 
     173 * version CDE: l'externalisation des paramètres se fait dans le module interface_optim.f90 
     174 * version DM: l'externalisation se fait dans 2 modules: constantes.f90 and pft_parameters.f90 
     175 * La version DCE est bien avancée, mais des problèmes restent à résoudre pour la rendre flexible. Particulièrement les deux points suivants ont été discutés: 
     176   1. Le gros du travail concernerait la structure du module interface_optim.f90 
     177   2. En détail, e.g., la structure actuelle de dépendence des paramètres au temps de la version DCE est pour le moment trop rigide. En effet, tout ajout ou modfication de la liste des paramètres nécessitera des modifications à plusieurs endroits du code. 
     179=== Coordination des travaux === 
     180Un nombre de paramètres important a déjà été externalisé pour l'assimilation. On s'est aperçu que certain d'entre eux avaient aussi été externalisés dans la version DM et ne voulaient pas dire la même chose ! [[BR]] 
     181exemple Q10 dans stomate_litter : 
     182 * version DCE : 
     184    !!>ORCHIS 
     185    !!tempfunc_result(:) = EXP( 0.69 * ( temp_in(:) - (ZeroCelsius+30.) ) / 10. ) 
     186    tempfunc_result(:) = EXP( LOG(q10(:)) * ( temp_in(:) - (ZeroCelsius+30.) ) / 10. ) 
     187    !!<ORCHIS 
     189 * version DM : 
     191   tempfunc_result(:) = exp( soil_Q10 * ( temp_in(:) - (ZeroCelsius+tsoil_ref)) / Q10 ) 
     193Il est donc impératif que P. Peylin et N. Viovy tranchent sur les définitions exactes.  
     196 * Didier doit s'assurer qu'il externalise au moins les paramètres utilisés dans l'assimilation 
     198=== Autres: Préparation du code pour l'adjoint === 
     200Pour l'adjoint d'ORCHIDEE, FastOpt veut un code préalablement compilé par le compilateur lf95. Martial n'a réussi à compiler le code qu'en mettant tous les codes sources dans le meme répertoire. Plus particulièrement, les difficultés sont survenues sur les modules parallel.f90 et slowproc.f90. Est-ce un défaut du compilateur? La question reste posée.  
     205== 19/11/2010 == 
     206'''réunion de préparation de l'acceuil de Thomas Kaminski (équipe FastOpt)''' 
     207 * On a constaté le conflit de compilation du code modifier par François Delage pour TAF. On a simplifier cette compilation : travail sur l'initialisation du routage. 
     208   Après demande cette question qui lui a été posée : [[BR]] 
     209   ''Bonjour François, [[BR]] 
     210   Nous poursuivons ton travail et de fois viennent des questions comme celles de Martial formulées ci dessous. Peux-tu nous éclairer urgemment sur ce point car nous recevrons Thomas Kaminski le jeudi 25 novembre pour travailler sur le code.'' [[BR]] 
     211   Une première réponse de sa part a été : [[BR]] 
     212   ''Tout simplement parce que la subroutine routing ne contenais pas de variables independantes et n'etait donc pas une subroutines active que ce soit pour l'adjointisation ou pour la linéarisation. Si je me souviens bien, il existe deux version de routages dans orchidee et j'avais surement decidé de gagner du temps en sortant routing du process.[[BR]] Il y a surement d'autres raisons mais ca me vient pas la naturellement.'' [[BR]] 
     213   Il semble que ce choix est judicieux, car il permet d'incorporer plus simplement les directive pour l'assimilation dans le code SVN de ORCHIDEE.[[BR]] 
     214   * Martial doit faire ces tests d'incorporation et de compilation. 
     215   * Ernest doit tester cette première version modifiée avec TAF. 
     216 * On a analyser les scripts de pré-travail présents dans le répertoire ''bin/preproc''. Pour automatiser la création du modèle modifier, on doit re-travailler le script launch_preproc.ksh. On aura l'arborescence classique après récupération du modèle avec ''util/model'' puis installation standard des Makefiles avec util/ins_make. 
     217 * voir [attachment:REUION_19-11-10] 
     219== 02/08/2009 == 
     220'''Réunion de préparation du voyage vers FastOP'''[[BR]] 
     221Le but est de cette réunion était de comprendre la chaîne de compilation pour fabriquer le tangeant linéaire.[[BR]] 
     222Une simplification de cette chaîne est possible. Les notes succintes concernant cette chaîne et des améliorations 
     223possibles est attaché à cette page : [attachment:COMMENTAIRES_compilation]