1) dans src_assimiliation
deplacement du repertoire src_assimilation dans le les sources ORCHIDEE
supression des fichiers redondants pour avoir des modules communs a tangent/vect_tangent/adjoint
un seul module par fichier
pas de 4Dvar :
- plusieurs routines de même nom dans différents modules
=> dans mo_model.f90
- renommer model_allocate() en model_allocate_ijl()
- renommer model_deallocate() en initmodel_clear()
- créer routine process_clear() appelant notamment appelant notamment initmodel_clear()
- renommer module en optim4D_init
- stomate_fapar.f90, juld2value.f90, mo_model.f90, mo_process.f90 : non appellés
=> modules désactivés en modifiant leur extension
stomate_fapar.f90 -> stomate_fapar.f90_uncalled
juld2value.f90 -> juld2value.f90_uncalled
optim4D_init.f90 -> optim4D_init.f90_uncalled
mo_process.f90 -> process.f90_uncalled
renommer les "tangeant" en "tangent" partout (fichiers, modules, routines), dont Makefiles
mo_cost :
=> fichier et module renommés en "cost", dont Makefiles
renommer 'lobs en 'l_first_cost'
prepost : numbmod() inclut l'initialisation forçage & mémoire
=> la renommer en doit_init()
timing : création de ce module à partir de l'extraction des routines inittiming(), btiming(),
etiming() hors des modules adjoint, tangent, tangent_vtl
initmodel :
"first_call" n'est pas un vrai drapeau d'initalisation car il ne contrôle pas un bloc init. mais
seulement le chargement du forçage. Ici, l'init. doit être refaite à chaque appel de model(),
donc des routines du module initmodel, car par ex. un fichier de forçage différent doit
être lu.
=> suppression du flag, et utilisation de la variable locale "lrestart_read"
idem "last_call", puisque la routine n'est appelée qu'une fois par run
=> suppression du flag, et utilisation de la variable locale "lrestart_write"
2) dans src_sechiba, src_stomate, src_driver
qsat_moisture: renommer le 'l_qsat_first' global en 'l_first_qsat'
Créer une routine qsat_clear() PUBLIC
y remettre le 'l_first_qsat à .TRUE. en cas de restart
La faire appeler par la routine clear commune : en l'occurrence sechiba_clear car
l'initialisation du module peut être commandée à la fois via enerbil et diffuco.
lpj_constrains:
renommer le 'firstcall' global en 'firstcall_constrains'
weather :
renommer 'firstcall' en 'firstcall_daily' 'firstcall_diurnal' et 'firstcall_gatherw'
respectivement selon les routines
teststomate :
renommer l'appel à forcing_read() en forcing_read_stom()