Changes between Version 6 and Version 7 of TravailTraceur


Ignore:
Timestamp:
Dec 17, 2019, 3:32:42 PM (4 years ago)
Author:
dcugnet
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TravailTraceur

    v6 v7  
    1717Ce format permet de compacter fortement les listes et d'éviter des erreurs.
    1818Il laisse la possibilité d'ajouter d'autres clefs par la suite (les coefficients de fractionnement notamment).
    19  * on peut utiliser la clef "trac_type" de "run.def" pour lister les composantes qu'il faut lire et fusionner les sections. Exemple: trac_type=merge:repro,inca[[br]]
     19 * on peut utiliser la clef "trac_type" de "run.def" pour lister les composantes qu'il faut lire et fusionner les sections. Exemple: trac_type=merge:repro,inca
    2020Par défaut, les listes sont fusionnées ("merge"): les traceurs de même noms sont fusionnés.
    2121Avec plutôt trac_type=cumulate:..., on choisit de les cumuler: le nom de section est ajouté en suffixe aux noms de traceurs identiques dans plusieurs sections.
     
    110110=== 16/12/2019: MISE À JOUR ===
    111111=== Les deux points à ajouter l'ont été:===
    112  * Possibilté de cumuler plutôt que fusionner des sections de traceurs. Le nom de section est alors ajouté en suffixe (avant l'éventuel suffixe de phase) pour permettre de distinguer les différents traceurs homonymes. Activation en valorisant la clef booléenne tracs_merge à FALSE plutôt qu'à TRUE. Cette clef est un paramètre "en dur" de readTracFiles_Mod.f90 pour l'instant. À reporter sans les fichiers de configuration *.def éventuellement.
    113  * Gestion de base de données OK:
    114   - En l'état, par mesure de simplicité (discuté avec Laurent Fairhead), on ne lit qu'une section de type "traceur" par fichier (on pourra en lire plusieurs si nécessaire), du nom de la clef "type_trac". Exemple: type_trac=lmdz,inca: on lit les sections "&lmdz" et "&inca" respectivement dans "tracer_lmdz.def" et "tracer_inca.def", puis on les fusionne.
    115   - L'ancienne gestion de traceurs (un seul fichier nommé "traceur.def") n'est a priori plus utile que pour INCA ; le nouveau format s'appliquera indifféremment à INCA, compte tenu qu'Anne Cozic est d'accord pour produire dans la suite un fichier de type traceur plus standard, sans recours à une initialisation spécifique à INCA.
    116   - Chaque fichier est lu sous la forme d'une composante de type dérivé "db" (pour database) stockée dans dBase (la base de données privée):
     112 * Possibilité de cumuler plutôt que fusionner des sections de traceurs. Le nom de section est alors ajouté en suffixe (avant l'éventuel suffixe de phase) pour permettre de distinguer les différents traceurs homonymes. Activation avec tracs_merge=.FALSE. (.TRUE. par défaut), paramètre "en dur" de readTracFiles_Mod.f90, qui peut être transformé si nécessaire en clef de fichier de configuration *.def.
     113 * Gestion de base de données:
     114  - Le parseur peut gérer plusieurs sections de traceurs par fichier, mais par mesure de simplicité (question tranchée avec Laurent Fairhead), on n'en lit qu'une, en fonction de la clef "type_trac". \\
     115  Exemple: pour type_trac=lmdz,inca: on lit les sections "&lmdz" et "&inca" respectivement dans "tracer_lmdz.def" et "tracer_inca.def", puis on les fusionne ou les cumule.
     116  - L'ancienne gestion de traceurs (un seul fichier nommé "traceur.def") n'est a priori plus utile que pour INCA et pourra peut-être être supprimée, car le nouveau format s'appliquera indifféremment à INCA: Anne Cozic est d'accord pour passer à un fichier de traceurs standard, sans nécessité d'une initialisation spécifique à INCA.
     117  - L'information lue dans chaque fichier est stockée dans une composante de dBase(:) (la base de données privée), vecteur de type dérivé "db" (pour database) :
    117118{{{
    118119  TYPE db                                                  !--- Type for tracers sections
     
    122123  TYPE(db), ALLOCATABLE, TARGET, SAVE :: dBase(:)          !--- Private sections database
    123124}}}
    124  La section "default" est stockée comme un "traceur virtuel" du même nom.
    125   Les autres traceurs sont stockés à la suite, décompactés (phases, parents, enfants) et vérifiés.
    126   On procède ensuite à la fusion ou au cumul en fonction de la valeur de "tracs_merge".
    127 /!\ La fusion n'est pas effectuée sur les sections "default": chaque section ne sert qu'à déterminer les valeurs par défaut de la liste de traceurs du même fichier tracer_*.def.
    128   Le résultat finale est stocké dans la variable publique "tracers":
     125  La section "default", en première position, est stockée sous la forme d'un "traceur virtuel" du même nom.
     126  Les autres traceurs sont stockés à la suite, décompactés (parents, enfants et phases) et vérifiés.
     127  On procède ensuite à la fusion ou au cumul en fonction de la valeur de "tracs_merge". \\
     128  /!\ La fusion n'est pas effectuée sur les sections "default", utiles uniquement pour déterminer les valeurs par défaut de la liste de traceurs de leur fichier tracer_*.def.
     129  Le résultat final (sans aucune section "default") est stocké dans la variable publique "tracers":
    129130{{{
    130131  TYPE(tr), ALLOCATABLE, TARGET, SAVE :: tracers(:)        !--- Public tracers list
     
    148149  END TYPE tr
    149150}}}
    150 Après fusion ou cumul, la base dBase n'est plus utile ; elle n'est donc pas accessible en externe.
    151 Par contre, tracers(:) l'est. On peut l'interroger via quelques outils visibles dans readTracFiles.
    152 Le principal est la commande getKey(tra, keyn, val, def_val, t), qui permet de récupérer la valeur d'une clef associée à un traceur:
     151Après fusion ou cumul, la base '''dBase(:)''' n'est plus utile ; elle n'est donc pas accessible en dehors du module de lecture ("PRIVATE").
     152Par contre, la base après fusion/cumul et vérification '''tracers(:)''' l'est et peut être l'interrogée grâce à quelques routines visibles dans readTracFiles.
     153La principal est '''getKey(tra, keyn, val[, def_val, t])''', qui permet de récupérer la valeur d'une clef associée à un traceur:
    153154 - "tra" indique le traceur, soit son indice dans la liste "tracers(:)", soit son nom.
    154155 - "keyn" indique le nom de la clef voulue.
    155156 - "val" est le résultat (chaîne, entier ou réel ; routine générique).
    156  - on peut indiquer dans def_val une valeur par défaut, au cas oùm rien ne soit trouvé (donc aucune valeur spécifiéer dans le fichier *.def, ni aucune valeur dans la section "default" pour cette clef).
    157  - par défaut, on va chercher l'information dans "traceurs", mais "t" permet d'aller la chercher dans un autre vecteur de type "tr" (surtout utile en interne quand on manipule dBase).
    158 On peut aussi créer un alias (pointeur) vers un traceur particulier (aliasTracer) ou obtenir les indices d'un ou plusieurs traceurs (idxTracer).
    159  - À noter que le module "strings_mod.f90" contient des outils couramment utiles pour les chaînes et les affichages, en particulier un équivalent de "find" dans matlab (indices d'un ou plusieurs éléments dans un vecteur), ou une routine d'affichage "propre" de tableaux (chaînes, entiers ou réels).
     157Les deux derniers arguments sont optionnels:
     158 - "def_val" est une valeur par défaut, au cas où la clef n'apparaîtrait pas dans le fichier tracer_*.def, ni dans la section de traceurs, ni dans la section "default".
     159 - "t" est la base de données (vecteur de type "tr") dans laquelle chercher l'information (par défaut "tracers(:)"). Cela ne sert en principe qu'en interne pour manipuler "dBase(:)".
     160Parmi les autres outils, on trouve '''aliasTracer''' pour créer un pointeur de traceur en fonction de son nom et '''idxTracer''' pour obtenir le(s) indice(s) d'un ou plusieurs traceurs.
     161 - À noter que le module "strings_mod.f90" regroupe des outils couramment utiles pour les chaînes et les affichages, en particulier un équivalent du "find" de matlab (indices d'un ou plusieurs éléments dans un vecteur) et une routine d'affichage "propre" de tableaux (chaînes, entiers ou réels).
    160162
    161163'''SUITE PROBABLE''':