| Version 3 (modified by , 6 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
