Version 3 (modified by 5 years ago) (diff) | ,
---|
Suivi du projet amélioration de la gestion des traceurs
David est sur le coup; dernier commentaire transmit à Frédéric (13 sept 2019) :
Voici une proposition que je suis en train de coder pour les traceurs.def, qui les généralise un peu et les compacte. Provisoire car il n'y a pas encore les sections pour différents modèles, avec décision de fusionner ou cumuler les listes (cf. propositions de Thibaut, avec qui j'en rediscuterai). * ajouter 2 colonnes pour les espèces de génération 1: - colonne 5: le numéro de génération - colonne 6: les phases, dont les générations suivantes héritent. À choisir, je préférerais "-g"as "-l"iquid et "-s"olid plutôt que les actuels "v"apour "l"iquid et "i"ce, très connoté eau. Le tiret, c'est pour éviter de possibles ambigüités avec des espèces chimiques (par exemple - ridicule, mais ça illustre: Cl pourrait être du carbone liquide ou du chlore). * préfacer les noms d'espèces de tagging ("traceurs d'isotopes", ou couleurs, ou régions) par un préfixe dédié (par exemple "t#") pour bien les identifier, et pouvoir indiquer "all" à la place du nom du fluide porteur (colonne 4) ou encore une liste d'espèces (séparées par "/" par exemple) => plus pratique si on veut suivre beaucoup d'espèces dans les mêmes régions. * ne pas préciser la génération de tagging en partant du principe qu'il s'agit toujours de la dernière. Ce serait tordu de faire du tagging géographique de traceurs de tagging. Autant alors choisir de tagger avec le découpage le plus fin directement, quitte à sommer ensuite. Voilà un exemple. On a 4 traceurs de génération 1 (vapeur + eau liquide +Rn +Pb), des isotopes de l'eau (génération 2) et du tagging bleu et rouge pour les isotopes de l'eau (génération 3) et pour le radon (génération 2). Avec ce format, qui entraîne une reconstruction en interne (donc sans erreurs) de la liste "ancien format", on passe de ceci: 24 14 14 H2O-vAir 10 10 H2O-lAir 10 10 Rn Air 10 10 Pb Air 10 10 H2O-v_eauH2O-v 10 10 H2O-l_eauH2O-l 10 10 H2O-v_HDO H2O-v 10 10 H2O-l_HDO H2O-l 10 10 H2O-v_O18 H2O-v 10 10 H2O-l_O18 H2O-l 10 10 H2O-v_eau_blue H2O-v_eau 10 10 H2O-v_eau_red H2O-v_eau 10 10 H2O-l_eau_blue H2O-l_eau 10 10 H2O-l_eau_red H2O-l_eau 10 10 H2O-v_HDO_blue H2O-v_HDO 10 10 H2O-v_HDO_red H2O-v_HDO 10 10 H2O-l_HDO_blue H2O-l_HDO 10 10 H2O-l_HDO_red H2O-l_HDO 10 10 H2O-v_O18_blue H2O-v_O18 10 10 H2O-v_O18_red H2O-v_O18 10 10 H2O-l_O18_blue H2O-l_O18 10 10 H2O-l_O18_red H2O-l_O18 10 10 Rn_blueRn 10 10 Rn_red Rn à ceci: 24 14 14 H2O Air 1 vl 10 10 Rn Air 1 v 10 10 Pb Air 1 v 10 10 eau H2O 2 10 10 HDO H2O 2 10 10 O18 H2O 2 10 10 t#blue H2O/Rn 10 10 t#red H2O/Rn Seules vérifications (il y en a bien plus actuellement): * détecter d'éventuelles générations manquantes. Par exemple, si on rajoutait la ligne suivante, ça coincerait, car Pb n'a pas de descendants de génération 2: 10 10 ZZZ Pb 3 * Vérifier que le chiffre en première ligne correspond bien au nombre de traceurs de la liste une fois "décompactée". Camille et Slimane ont trouvé l'idée acceptable (il manquait un ou deux détails dans ce que je leur avais envoyé, mais rien d'essentiel) ; et toi ? Bon week-end, David PS: Ce serait moins général, mais on peut éventuellement simplifier les noms de la liste "décompactée": on peut renoncer aux chaînes complètes (type A_B_C_D...), sauf pour les phases (-> tag -g/-l/-s) et les tags (génération précédente nécessaire). Exemple: * H2O-l_O18_red => O18-l_red * H2O-v_HDO => HDO-v Pour l'exemple de départ, ça donnerait des noms de traceurs plus compacts, mais sans ambigüité: 24 14 14 H2O-v Air 10 10 H2O-l Air 10 10 Rn Air 10 10 Pb Air 10 10 eau-v H2O-v 10 10 eau-l H2O-l 10 10 HDO-v H2O-v 10 10 HDO-l H2O-l 10 10 O18-v H2O-v 10 10 O18-l H2O-l 10 10 eau-v_blue eau-v 10 10 eau-v_red eau-v 10 10 eau-l_blue eau-l 10 10 eau-l_red eau-l 10 10 HDO-v_blue HDO-v 10 10 HDO-v_red HDO-v 10 10 HDO-l_blue HDO-l 10 10 HDO-l_red HDO-l 10 10 O18-v_blue O18-v 10 10 O18-v_red O18-v 10 10 O18-l_blue O18-l 10 10 O18-l_red O18-l 10 10 Rn_blue Rn 10 10 Rn_red Rn Bon, ce serait encore mieux je pense avec par exemple "H2(O16)", "H2(O17)", "H2(O18)", "(H2)HO", "(H3)HO" plutôt que "eau", "O17", "O18", "DHO" et "THO". Car O18 pourrait servir à d'autres espèces (H2SO4 par exemple), auquel cas garder H2SO4_O18 et H2O_O18 serait nécessaire.
Pour mémoire, il y a aussi le ticket #32 (sur la conservation des traceurs)
Suite de l'affaire: mail de David du 27/09/2019
Comme annoncé l'autre jour, voici une proposition mise à jour pour "traceur.def". La précédente n'allait pas car il fallait une valeur de hconv/vconv par phase. Ma version d'"infotrac.f90" qui fait le parsing correspondant, doit encore être débugée. Thibaut, ça me semble compatible avec ce que tu avais dit le jour de la réunion, sachant que l'on pourrait ajouter d'autres colonnes (ou noter plutôt comme ça: <mot clef>=<valeur>, comme dans les fichiers *.def) Bonne journée, David Proposition pour "traceur.def" Plutôt que: <nombre de traceurs> (ligne 1) <hadv> <vadv> <traceur> <fluide transporteur> (autres lignes) ... Utiliser: &<nom de section 1> <traceur> <fluide transporteur> <phases> <hadv1[,hadv2[,hadv3]]> <vadv1[,vadv2[,vadv3]]> (generation 1) ... <traceur> <fluide transporteur> (generations >1) ... &<nom de section 2> ... Un mot-clef de run.def précise les noms des composantes voulues ; on lit les sections correspondantes (le "&" est inspiré des namelists fortran, pas si souples en fait :/). Un second mot-clef indique si l’on veut fusionner ou cumuler les listes (en cas de traceurs de noms identiques). Exemple: trac_models = inca, reprobus trac_usage = merge Précisions: * Pour les phases, on utilise g/l/s pour "g"as / "l"iquid / "s"olid. Le décompactage ajoute un suffixe "-g", "-l" ou "-s" au nom de traceur. Exemple: H2O gl donne: H2O-g et H2O-l * On préface les noms destinés au tagging régional par "t#" et on peut stocker plusieurs fluides transporteurs séparés par "/" (ou "all" si le tag s'applique à toutes les traceurs). * Le tagging ne s'applique qu'à la dernière génération d'un arbre (car sinon autant choisir des régions plus fine en une seule génération, quitte à les sommer ensuite). * Le format permet d'identifier directement la génération 1, sans recours à un nom de fluide transporteur de base ("air") en dur. Ça pourrait donc aussi marcher dans l'eau. * Avec ces notations, on hérite des hconv et vconv de la première génération. Pour l'instant, pour l'eau, Camille force en dur 10 au lieu de 14 pour les générations >1. On peut continuer comme ça, ou bien l'indiquer avec une clef dédiée dans run.def, au cas où on serait amener à faire autre chose. EXEMPLE (pour une seule section): - 4 traceurs de génération 1 (eau liquide+vapeur, radon, plomb). - 3 isotopes de l'eau: eau, HDO, O18 (ou H2(O16), H(H2)O, H2(O18) - notation plus claire il me semble). - tagging "bleu" et "rouge" pour l'eau (-> generation 3) et le radon (-> génération 2). On passe de ceci: 24 14 14 H2O-v Air 10 10 H2O-l Air 10 10 Rn Air 10 10 Pb Air 10 10 H2O-v_eau H2O-v 10 10 H2O-l_eau H2O-l 10 10 H2O-v_HDO H2O-v 10 10 H2O-l_HDO H2O-l 10 10 H2O-v_O18 H2O-v 10 10 H2O-l_O18 H2O-l 10 10 H2O-v_eau_blue H2O-v_eau 10 10 H2O-v_eau_red H2O-v_eau 10 10 H2O-l_eau_blue H2O-l_eau 10 10 H2O-l_eau_red H2O-l_eau 10 10 H2O-v_HDO_blue H2O-v_HDO 10 10 H2O-v_HDO_red H2O-v_HDO 10 10 H2O-l_HDO_blue H2O-l_HDO 10 10 H2O-l_HDO_red H2O-l_HDO 10 10 H2O-v_O18_blue H2O-v_O18 10 10 H2O-v_O18_red H2O-v_O18 10 10 H2O-l_O18_blue H2O-l_O18 10 10 H2O-l_O18_red H2O-l_O18 10 10 Rn_blue Rn 10 10 Rn_red Rn à cela: H2O air gl 14,10 14,10 Rn air g 10 10 Pb air s 10 10 eau H2O HDO H2O O18 H2O t#blue H2O/Rn t#red H2O/Rn NB: Pour les sorties, on peut peut-être se contenter de noms tronqués en ne gardant que la dernière génération + le tag régional + la phase. Par exemple: H2O-l_O18_blue devient: O18-l_blue. Comme on connaît les dépendances (O18-l descend de H2O-l...), ça peut suffire pour s'y retrouver sans ambiguïté.
=> Prévoir une réunion (Bocal jeudi 3 octobre?) pour en discuter