wiki:TravailTraceur

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