1 : * TRACHIS PROCEDUR CHAT 12/08/07 21:15:14 7481 2 : ********************************************************************** 3 : 'DEBP' TRACHIS 4 : TAB2*'TABLE' NOMT*'MOT' LIGNE*'MAILLAGE' 5 : LIINDT/'LISTENTI' LIT/'LISTREEL' LICOMP/'LISTMOTS' 6 : LICOMP2/'LISTMOTS' TNOMCOMP/'TABLE' ; 7 : 8 : ********************************************************************** 9 : * 10 : * Pour une fonction (x,t) donnée et pour une ligne donnée, 11 : * on construit une table contenant les évolutions à différents 12 : * temps et différentes composantes. 13 : * 14 : ********************************************************************** 15 : * 16 : * Syntaxe : 17 : * --------- 18 : * 19 : * TAB1 = TRACHIS TAB2 MOT1 GEO1 ('PREF' MOT2) ('UNIT' MOT3 (FLOT1)) 20 : * 21 : * (| LENTI1 |) (LMOTS1) (| LMOTS2 |) ; 22 : * | LREEL1 | | TAB3 | 23 : * 24 : * 25 : ********************************************************************** 26 : * 27 : * Auteur : F. Auriol, TTMF (1998) 28 : * 29 : * ----------------------- 30 : * 31 : * Modifié : P. Maugis, MTMS 8 oct. 2004 32 : * 33 : * ----------------------- 34 : * 35 : * Modifié : P. Maugis, LSCE le 07 août 2007 36 : * - précision des noms humains de composantes par une table, 37 : * ce qui permet d'avoir plus de 4 caractères 38 : * - récupération de la liste des composantes d'après le dernier champ 39 : * fourni plutôt que le premier, qui est parfois bidon. 40 : * - recours à CONVT pour l'écriture avec unité de temps 41 : * 42 : ************************************************************************ 43 : * 44 : * Entrée : 45 : * -------- 46 : * 47 : * TAB2 : Table de données issue d'un calcul DARCY ou CHIMIE 48 : * contenant les indices 'TEMPS' et NOMT, 49 : * auxquels on trouve, aux indices entiers les temps et 50 : * le champ point que l'on souhaite explorer à ces temps-là. 51 : * 52 : * MOT1 : Nom de l'indice de TAB2 indiquant les CHPOs à suivre 53 : * (type MOT) 54 : * 55 : * GEO1 : MAILLAGE de la ligne (SEG2) selon laquelle visualiser 56 : * l'évolution en fonction du temps. 57 : * 58 : * MOT2 : Nom humain du champ (type MOT, Défaut = NOMT) 59 : * 60 : * LENTI1 : Liste des indices des temps à utiliser 61 : * (type LISTENTI, Défaut = tous) 62 : * 63 : * LREEL1 : Liste des temps à utiliser (Défaut = tous), doivent 64 : * correspondre à ceux de TAB2. 65 : * 66 : * LMOTS1 : Liste des composantes des chpos à utiliser (Défaut = toutes) 67 : * 68 : * LMOTS2 : Liste noms humains correspondants (Défaut = LICOMP) [ Obsolète 69 : * ou bien : 70 : * TAB3 : Table contenant, pour chaque indice entier de 71 : * composante, le nom humain correspondant (type MOT, 72 : * défaut = nom de la composante) 73 : * 74 : * MOT3 : Unité de temps à faire figurer en suffixe de légende 75 : * (facultatif, type MOT, possibles=us,ms,s,h,j,a), voir CONVT. 76 : * 77 : * FLOT1 : valeur en secondes de l'unité de temps dans laquelle 78 : * sont données les valeurs de TAB2.'TEMPS' (défaut=1) 79 : * 80 : * Sortie : 81 : * -------- 82 : * 83 : * Table contenant les évolutions le long de la ligne pour 84 : * différentes composantes et pour les différents temps. 85 : * Indicée par des entiers (indice de la ligne), elle contient pour 86 : * chaque cas une table à trois indices : 87 : * 88 : * . 'VALEUR' : L'évolution en fonction du temps le long de la ligne 89 : * pour la composante courante 90 : * . 'LEGEND1': Préfixe de la légende pour toutes les courbes 91 : * . 'LEGEND2': Suffixe de cette légende (variable) 92 : * 93 : ************************************************************************ 94 : 95 : * Vérifications d'usage : 96 : * ----------------------- 97 : 'SI' ( 'NON' ('EXISTE' TAB2 'TEMPS')) ; 98 : 'ERREUR' ' Il manque l indice TEMPS dans la table ' ; 99 : 'QUITTER' TRACHIS ; 100 : 'FINSI' ; 101 : 'SI' ( 'NON' ('EXISTE' TAB2 NOMT )) ; 102 : 'ERREUR' ('CHAINE' ' la table ne contient pas l indice ' NOMT ) ; 103 : 'QUITTER' TRACHIS ; 104 : 'FINSI' ; 105 : 106 : * Lecture des mots : 107 : nomt2 = 'MOT' nomt ; 108 : 'OUBLIER' nunit ; 109 : valunit = 1. ; 110 : 'REPETER' bcl1 ; 111 : 'ARGUMENT' MOT1/'MOT' ; 112 : 'SI' ('NON' ('EXISTE' mot1)) ; 113 : 'QUITTER' bcl1 ; 114 : 'FINSI' ; 115 : 'SI' ('EGA' MOT1 'UNIT') ; 116 : 'ARGUMENT' nunit*'MOT' ; 117 : 'ARGUMENT' FLOT1/'FLOTTANT' ; 118 : 'SI' ('EXISTE' FLOT1) ; 119 : valunit = FLOT1 ; 120 : 'FINSI' ; 121 : 'ITERER' bcl1 ; 122 : 'FINSI' ; 123 : 'SI' ('EGA' MOT1 'PREF') ; 124 : 'ARGUMENT' NOMT2*'MOT' ; 125 : 'ITERER' bcl1 ; 126 : 'FINSI' ; 127 : 'ERREUR' 'Mot' MOT1 'inconnu. On attend PREF ou UNIT' ; 128 : 'FIN' bcl1 ; 129 : 130 : * liste des couleurs : 131 : * -------------------- 132 : licoul = 'MOTS' 'DEFAUT' 'BLEU' 'ROUGE' 'ROSE' 'JAUNE' 'VERT' 'TURQ' 133 : 'AZUR' 'ORANGE' 'VIOLET' 'OCEAN' 'CYAN' 'OLIVE' 'GRIS'; 134 : nc = 'DIME' licoul ; 135 : 136 : * Initialisation liste des composantes 137 : * ------------------------------------ 138 : * Premier et dernier indices. 139 : * NBTP1 = Nb de temps dans la table donnée 140 : TBINDI = 'INDEX' ( TAB2.NOMT ) ; 141 : INDI0 = TBINDI . 1 ; 142 : NBTP1 = 'DIME' TBINDI ; 143 : INDIF = TBINDI . NBTP1 ; 144 : 145 : 'SI' ('EXISTE' LICOMP) ; 146 : NBCOMP = 'DIME' LICOMP ; 147 : 'SINON' ; 148 : LICOMP = 'EXTR' ( TAB2.NOMT. INDIF ) 'COMP' ; 149 : NBCOMP = 'DIME' LICOMP ; 150 : 'FINSI' ; 151 : 152 : * Initialisation légende de chaque composante (par défaut la composante) 153 : * ------------------------------------------- 154 : * Gestion (obsolètes) de la fourniture d'un LISTMOT, qui tronque 155 : * l'information aux 4 premières lettres 156 : 'SI' ('EXISTE' LICOMP2) ; 157 : 'SI'('EXISTE' TNOMCOMP) ; 158 : 'ERREUR' 'Double spécification des légendes de composantes' ; 159 : 'FINSI' ; 160 : 'SI' ('NEG' ('DIME' LICOMP2) NBCOMP) ; 161 : 'ERREUR' 'Mauvaise longueur liste des légendes de composantes' ; 162 : 'FINSI' ; 163 : 164 : TNOMCOMP= 'TABLE' ; 165 : 'REPETER' BOUB NBCOMP ; 166 : I = &BOUB ; 167 : TNOMCOMP.I = 'EXTR' LICOMP2 I ; 168 : 'FIN' BOUB ; 169 : 'SINON' ; 170 : LICOMP2 = LICOMP ; 171 : 'FINSI' ; 172 : 173 : * Gestion normale par table 174 : 'SI' ('NON' ('EXISTE' TNOMCOMP)) ; 175 : TNOMCOMP= 'TABLE' ; 176 : 'FINSI' ; 177 : 'REPETER' BOUB NBCOMP ; 178 : I = &BOUB ; 179 : 'SI' ('NON' ( 'EXISTE' TNOMCOMP I )) ; 180 : TNOMCOMP.I = 'EXTR' LICOMP I ; 181 : 'FINSI' ; 182 : 'FIN' BOUB ; 183 : 184 : * Initialisation liste des indices et des temps : 185 : * ----------------------------------------------- 186 : * NBTP2 = nombre de temps à prendre en compte. 187 : 'SI' ('EXISTE' LIINDT); 188 : * si on fournit une liste des indices, on construit la liste des 189 : * temps correspondants. 190 : NBTP2 = 'DIME' LIINDT ; 191 : LIT = 'PROG' ; 192 : 'REPETER' BOU7 NBTP2 ; 193 : J = &bou7 ; 194 : I = 'EXTR' LIINDT J ; 195 : LIT = LIT 'ET' ('PROG' TAB2.'TEMPS'.I) ; 196 : 'FIN' BOU7 ; 197 : 'SINON' ; 198 : 'SI' ('EXISTE' LIT); 199 : * si on fournit une liste des temps, on construit la liste des 200 : * indices correspondants : 201 : NBTP2 ='DIME' LIT ; 202 : LIINDT = 'LECT' ; 203 : 'REPETER' BOU8 NBTP2 ; 204 : J = &BOU8 ; 205 : VT = 'EXTR' LIT J ; 206 : 'REPETER' BOU9 NBTP1 ; 207 : I = &BOU9 ; 208 : III = TBINDI.I ; 209 : 'SI' (VT 'EGA' TAB2.'TEMPS'.III) ; 210 : 'QUITTER' BOU9 ; 211 : 'FINSI' ; 212 : 'FIN' BOU9 ; 213 : * si on ne l'a pas trouvé, erreur : 214 : 'SI' ('NEG' i &bou9); 215 : 'ERREUR' 'un temps donné ne correspond à aucun indice'; 216 : 'QUITTER' TRACHIT ; 217 : 'FINSI' ; 218 : LIINDT = LIINDT 'ET' ('LECT' III) ; 219 : 'FIN' BOU8 ; 220 : 'SINON' ; 221 : * on n'a donné ni liste d'indices, ni liste des temps, donc on 222 : * les prend tous par défaut. 223 : NBTP2 = NBTP1 ; 224 : LIINDT = 'LECT' ; 225 : LIT = 'PROG' ; 226 : 'REPETER' BOUA NBTP2 ; 227 : I = &boua ; 228 : I1 = TBINDI.I ; 229 : LIINDT = LIINDT 'ET' ('LECT' I1) ; 230 : LIT = LIT 'ET' ('PROG' (TAB2.'TEMPS'.I1)) ; 231 : 'FIN' BOUA ; 232 : 'FINSI' ; 233 : 'FINSI' ; 234 : 235 : * Création des listes de valeur du chpo pour chaque composante 236 : * ------------------------------------------------------------ 237 : * K est l'indice de l'évolution, IC est l'indice de la couleur attribuée. 238 : K = 0 ; 239 : TBR = 'TABLE' ; 240 : 'REPETER' BOU1 NBTP2 ; 241 : * pour chaque indice de temps à traiter : 242 : J = &BOU1 ; 243 : I = 'EXTR' LIINDT J ; 244 : 245 : 'REPETER' BOU2 NBCOMP ; 246 : * pour chaque composante du chpo 247 : L = &bou2 ; 248 : NOM5 = 'EXTR' LICOMP L ; 249 : 250 : * Choix de la couleur de l'évolution 251 : IC = (@MOD K nc) + 1 ; 252 : COUI = 'MOT' ('EXTR' licoul ic) ; 253 : 254 : * Construction de l'évolution 255 : ev1 = 'EVOL' COUI 'CHPO' (TAB2.NOMT.I) NOM5 LIGNE ; 256 : * on retire les commentaires éventuels de points (les petits taquets) : 257 : ev1 = 'EXTR' ev1 'COURBE' 1 ; 258 : 259 : * stockage 260 : K = K + 1 ; 261 : TBR.K = 'TABLE' ; 262 : TBR.K.'VALEUR' = ev1 ; 263 : 264 : * Légende de la courbe (apparaitra à droite) 265 : * se présente sous la forme '' 266 : tps = TAB2.'TEMPS'.I ; 267 : 'SI' ('EXISTE' nunit) ; 268 : NO3 = 'CHAINE' 't=' (CONVT (TPS*valunit) nunit); 269 : *tc la ligne suivante etait un FINSI! remplacement par un SINON 270 : 'SINON' ; 271 : NO3 = 'CHAINE' 't=' (CONVT (TPS*valunit)) ; 272 : 'FINSI' ; 273 : TBR.K.'LEGEND2' = 'MOT' NO3 ; 274 : NO2 = 'EXTR' LICOMP2 L ; 275 : 'SI' ('NEG' NO2 ' ') ; 276 : TBR.K.'LEGEND2' = 'CHAINE' NO2 ' ' TBR.K.'LEGEND2' ; 277 : 'FINSI' ; 278 : 279 : * Adjonction préfixe constant : 280 : TBR.K.'LEGEND1' = 'MOT' NOMT2 ; 281 : 282 : 'FIN' BOU2 ; 283 : 'FIN' BOU1 ; 284 : 285 : 'FINP' TBR ; 286 : 287 :
© Cast3M 2003 - All rights reserved.
Disclaimer