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) : |
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": |
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: |
| 151 | Après fusion ou cumul, la base '''dBase(:)''' n'est plus utile ; elle n'est donc pas accessible en dehors du module de lecture ("PRIVATE"). |
| 152 | Par 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. |
| 153 | La principal est '''getKey(tra, keyn, val[, def_val, t])''', qui permet de récupérer la valeur d'une clef associée à un traceur: |
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). |
| 157 | Les 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(:)". |
| 160 | Parmi 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). |