1 : * TRACHIT PROCEDUR JC220346 12/09/12 21:15:09 7501 2 : ********************************************************************** 3 : 'DEBPROC' TRACHIT 4 : TAB2*'TABLE' NOMT*'MOT' LIGNE*'MAILLAGE' 5 : LIINDT/'LISTENTI' LIT/'LISTREEL' LICOMP/'LISTMOTS' 6 : TNOMCOMP/'TABLE' TNOMPT/'TABLE' ; 7 : 8 : ********************************************************************** 9 : * 10 : * Pour une fonction (x,t) donnée et pour un maillage de points donnés, 11 : * on construit une table contenant les évolutions en ces points au 12 : * cours du temps, pour les différentes composantes. 13 : * 14 : * 15 : ********************************************************************** 16 : * 17 : * Syntaxe : 18 : * --------- 19 : * 20 : * TAB1 = TRACHIT TAB2 MOT1 GEO1 21 : * 22 : * (| LENTI1 |) (LMOTS1) (TAB3) (TAB4) (('PREF') MOT2) 23 : * (| LREEL1 |) 24 : * 25 : ********************************************************************** 26 : * 27 : * Auteur : F. Auriol, TTMF (1998) 28 : * 29 : * ----------------------- 30 : * 31 : * Modifié : P. Maugis, MTMS 24 août 1999 32 : * 33 : * ----------------------- 34 : * 35 : * Modifié : P. Maugis, LSCE le 07 août 2007 36 : * - récupération de la liste des composantes d'après le dernier champ 37 : * fourni plutôt que le premier, qui est parfois bidon. 38 : * 39 : ************************************************************************ 40 : * 41 : * Entrée : 42 : * -------- 43 : * 44 : * TAB2 : Table de données issue d'un calcul DARCY ou CHIMIE 45 : * contenant les indices 'TEMPS' et NOMT, 46 : * auxquels on trouve, aux indices entiers les temps et 47 : * le champ point que l'on souhaite explorer à ces temps-là. 48 : * 49 : * NOMT : Nom de l'indice de TAB2 indiquant les CHPOs à suivre 50 : * (type MOT) 51 : * 52 : * LIGNE : MAILLAGE des points où l'on souhaite visualiser 53 : * l'évolution en fonction du temps. 54 : * 55 : * NOMT2 : Nom humain du champ (type MOT, Défaut = NOMT) 56 : * 57 : * LIINDT : Liste des indices des temps à utiliser 58 : * (type LISTENTI, Défaut = tous) 59 : * 60 : * LIT : Liste des temps à utiliser (Défaut = tous), doivent 61 : * correspondre à ceux de TAB2. 62 : * 63 : * LICOMP : Liste des composantes des chpos à utiliser (Défaut = toutes) 64 : * 65 : * TNOMCOMP : Table de SOUSTYPE 'NOM_COMPOSANTE' contenant, pour 66 : * chaque indice entier de composante, le nom humain 67 : * correspondant (type MOT, défaut = nom de la composante) 68 : * 69 : * TNOMPT : Table de SOUSTYPE 'NOM_POINT' contenant, pour 70 : * chaque indice entier de point, le texte que l'on 71 : * souhaite mettre (type MOT, défaut = 'PT' N° du point) 72 : * 73 : * Sortie : 74 : * -------- 75 : * 76 : * Table contenant les évolutions aux points choisis au cours du 77 : * temps, pour les différentes composantes. 78 : * Indicée par des entiers (indice du point), elle contient pour 79 : * chaque cas une table à trois indices : 80 : * 81 : * . 'VALEUR' : L'évolution en fonction du temps au point courant 82 : * pour la composante courante 83 : * . 'LEGEND1': Préfixe de la légende pour toutes les courbes 84 : * . 'LEGEND2': Suffixe de cette légende (variable) 85 : * 86 : ************************************************************************ 87 : * 88 : * Remarques 89 : * --------- 90 : * 91 : * LES SOUSTYPES DE TNOMCOMP ET TNOMPT SONT OBLIGATOIRES SI ON NE 92 : * DONNE QU'UNE SEULE TABLE. 93 : * 94 : ************************************************************************ 95 : 96 : * Vérifications d'usage : 97 : * ----------------------- 98 : 'SI' ( 'NON' ('EXISTE' TAB2 'TEMPS') ) ; 99 : 'ERREUR' ' Il manque l indice TEMPS dans la table ' ; 100 : 'QUITTER' TRACHIT ; 101 : 'FINSI' ; 102 : 'SI' ( 'NON' ('EXISTE' TAB2 NOMT) ) ; 103 : 'ERREUR' ('CHAINE' ' la table ne contient pas l indice ' NOMT ) ; 104 : 'QUITTER' TRACHIT ; 105 : 'FINSI' ; 106 : 107 : * Lecture des mots : 108 : nomt2 = 'MOT' nomt ; 109 : 'REPETER' bcl1 ; 110 : 'ARGUMENT' MOT1/'MOT' ; 111 : 'SI' ('NON' ('EXISTE' mot1)) ; 112 : 'QUITTER' bcl1 ; 113 : 'FINSI' ; 114 : 'SI' ('EGA' MOT1 'PREF') ; 115 : 'ARGUMENT' NOMT2*'MOT' ; 116 : 'SINON' ; 117 : * comme il n'y a pas d'ambiguïté, on accepte aussi un mot seul, 118 : * s'il est le dernier argument 119 : NOMT2 = MOT1 ; 120 : * 'ERREUR' 'Mot' MOT1 'inconnu. On attend PREF' ; 121 : 'FINSI' ; 122 : 'FIN' bcl1 ; 123 : 124 : * On différencie TNOMCOMP et TNOMPT par leur sous-type : 125 : * par défaut on a affaire à la table des noms de composante. 126 : 'SI' (('EXISTE' TNOMCOMP) 'ET' ('EXISTE' TNOMPT)); 127 : 'SI' ( ('NON' ('EXISTE' TNOMCOMP 'SOUSTYPE')) 'OU' 128 : ('NON' ('EXISTE' TNOMPT 'SOUSTYPE')) ) ; 129 : 'ERREUR' 'Il faut préciser le soustype des tables de noms' ; 130 : 'FINSI' ; 131 : 'SI' ('EGA' TNOMCOMP.'SOUSTYPE' 'NOM_POINT') ; 132 : TB = TNOMPT ; 133 : TNOMPT = TNOMCOMP ; 134 : TNOMCOMP= TB ; 135 : 'SINON' ; 136 : 'SI' ('NEG' TNOMCOMP.'SOUSTYPE' 'NOM_COMPOSANTE') ; 137 : 'ERREUR' 'Il faut préciser le soustype des tables de noms' ; 138 : 'FINSI' ; 139 : 'FINSI' ; 140 : 'FINSI' ; 141 : 142 : 'SI' (('EXISTE' TNOMCOMP) 'ET' ('NON' ('EXISTE' TNOMPT))) ; 143 : 'SI' ('EXISTE' TNOMCOMP 'SOUSTYPE'); 144 : 'SI' ('EGA' TNOMCOMP.'SOUSTYPE' 'NOM_POINT'); 145 : TNOMPT = TNOMCOMP; 146 : 'OUBLIER' TNOMCOMP; 147 : 'SINON' ; 148 : 'SI' ('NEG' TNOMCOMP.'SOUSTYPE' 'NOM_COMPOSANTE'); 149 : 'ERREUR' 150 : 'L indice SOUSTYPE vaut soit NOM_POINT, soit NOM_COMPOSANTE'; 151 : 'FINSI' ; 152 : 'FINSI' ; 153 : 'FINSI' ; 154 : 'FINSI' ; 155 : 156 : * liste des couleurs : 157 : * -------------------- 158 : licoul = 'MOTS' 'DEFAUT' 'BLEU' 'ROUGE' 'ROSE' 'JAUNE' 'VERT' 'TURQ' 159 : 'AZUR' 'ORANGE' 'VIOLET' 'OCEAN' 'CYAN' 'OLIVE' 'GRIS'; 160 : ncoul = 'DIME' licoul ; 161 : 162 : * Initialisation liste des composantes 163 : * ------------------------------------ 164 : * Premier et dernier indices. 165 : * NBTP1 = Nb de temps dans la table donnée 166 : TBINDI = 'INDEX' ( TAB2.NOMT ) ; 167 : INDI0 = TBINDI . 1 ; 168 : NBTP1 = 'DIME' TBINDI ; 169 : INDIF = TBINDI . NBTP1 ; 170 : 171 : 'SI' ('EXISTE' LICOMP) ; 172 : NBCOMP = 'DIME' LICOMP ; 173 : 'SINON' ; 174 : LICOMP = 'EXTR' ( TAB2.NOMT. INDIF ) 'COMP' ; 175 : NBCOMP = 'DIME' LICOMP ; 176 : 'FINSI' ; 177 : 178 : * Initialisation légende de chaque composante (par défaut la composante) 179 : * ------------------------------------------- 180 : 'SI' ('NON' ('EXISTE' TNOMCOMP)) ; 181 : TNOMCOMP= 'TABLE' ; 182 : 'FINSI' ; 183 : 'REPETER' BOUB NBCOMP ; 184 : I = &BOUB ; 185 : 'SI' ('NON' ( 'EXISTE' TNOMCOMP I )) ; 186 : TNOMCOMP.I = 'MOT' ('EXTR' LICOMP I) ; 187 : 'FINSI' ; 188 : 'FIN' BOUB ; 189 : 190 : * initialisation légende de chaque point (par défaut est le N° du point) 191 : * -------------------------------------- 192 : NBPT = 'NBNO' LIGNE ; 193 : 'SI' ('NON' ( 'EXISTE' TNOMPT)) ; 194 : TNOMPT = 'TABLE' ; 195 : 'FINSI' ; 196 : 'REPETER' BOUB NBPT ; 197 : I = &boub ; 198 : 'SI' ('NON' ( 'EXISTE' TNOMPT I )) ; 199 : TNOMPT.I = 'CHAINE' 'PT ' I ; 200 : 'FINSI' ; 201 : 'FIN' BOUB ; 202 : 203 : * Initialisation liste des indices et des temps : 204 : * ----------------------------------------------- 205 : * NBTP2 = nombre de temps à prendre en compte. 206 : 'SI' ('EXISTE' LIINDT); 207 : * si on fournit une liste des indices, on construit la liste des 208 : * temps correspondants. 209 : NBTP2 = 'DIME' LIINDT ; 210 : LIT = 'PROG' ; 211 : 'REPETER' BOU7 NBTP2 ; 212 : J = &bou7 ; 213 : I = 'EXTR' LIINDT J ; 214 : LIT = LIT 'ET' ('PROG' TAB2.'TEMPS'.I) ; 215 : 'FIN' BOU7 ; 216 : 'SINON' ; 217 : 'SI' ('EXISTE' LIT); 218 : * si on fournit une liste des temps, on construit la liste des 219 : * indices correspondants : 220 : NBTP2 ='DIME' LIT ; 221 : LIINDT = 'LECT' ; 222 : 'REPETER' BOU8 NBTP2 ; 223 : J = &BOU8 ; 224 : VT = 'EXTR' LIT J ; 225 : 'REPETER' BOU9 NBTP1 ; 226 : I = &BOU9 ; 227 : III = TBINDI.I ; 228 : 'SI' (VT 'EGA' TAB2.'TEMPS'.III) ; 229 : 'QUITTER' BOU9 ; 230 : 'FINSI' ; 231 : 'FIN' BOU9 ; 232 : * si on ne l'a pas trouvé, erreur : 233 : 'SI' ('NEG' i &bou9); 234 : 'ERREUR' 'un temps donné ne correspond à aucun indice'; 235 : 'QUITTER' TRACHIT ; 236 : 'FINSI' ; 237 : LIINDT = LIINDT 'ET' ('LECT' III) ; 238 : 'FIN' BOU8 ; 239 : 'SINON' ; 240 : * on n'a donné ni liste d'indices, ni liste des temps, donc on 241 : * les prend tous par défaut. 242 : NBTP2 = NBTP1 ; 243 : LIINDT = 'LECT' ; 244 : LIT = 'PROG' ; 245 : 'REPETER' BOUA NBTP2 ; 246 : I = &boua ; 247 : I1 = TBINDI.I ; 248 : LIINDT = LIINDT 'ET' ('LECT' I1) ; 249 : LIT = LIT 'ET' ('PROG' (TAB2.'TEMPS'.I1)) ; 250 : 'FIN' BOUA ; 251 : 'FINSI' ; 252 : 'FINSI' ; 253 : 254 : * Création des listes de valeur du chpo pour chaque composante et pour chaque p 255 : * ----------------------------------------------------------------------------- 256 : * K est l'indice de l'évolution 257 : TBR = 'TABLE' ; 258 : 'REPETER' BOU1 NBTP2 ; 259 : * pour chaque indice de temps à traiter : 260 : J = &BOU1 ; 261 : I = 'EXTR' LIINDT J ; 262 : K = 0 ; 263 : 264 : 'REPETER' BOU3 NBPT ; 265 : * pour chaque point du maillage donné 266 : LM = &bou3 ; 267 : PPC = 'POINT' LIGNE LM ; 268 : 'REPETER' BOU2 NBCOMP ; 269 : * pour chaque composante du chpo 270 : L = &bou2 ; 271 : K = K + 1 ; 272 : 'SI' ('NON' ('EXISTE' TBR K)); 273 : TBR.K = 'TABLE' ; 274 : TBR.K.'VALEUR' = 'PROG'; 275 : 'FINSI' ; 276 : NOM5 = 'MOT' ('EXTR' LICOMP L) ; 277 : VV = 'EXTR' TAB2.NOMT.I NOM5 PPC ; 278 : TBR.K.'VALEUR' = TBR.K.'VALEUR' 'ET' ('PROG' VV) ; 279 : 'FIN' BOU2 ; 280 : 'FIN' BOU3 ; 281 : 'FIN' BOU1 ; 282 : 283 : * K est l'indice de l'évolution, IC est l'indice de la couleur attribuée. 284 : K = 0 ; 285 : IC = 0 ; 286 : 'REPETER' BOU6 NBPT ; 287 : * pour chaque point du maillage donné 288 : LM = &bou6 ; 289 : 290 : 'REPETER' BOU5 NBCOMP ; 291 : * pour chaque composante du chpo 292 : L = &bou5 ; 293 : NOM5 = 'MOT' ('EXTR' LICOMP L) ; 294 : K = K + 1 ; 295 : IC = IC + 1 ; 296 : 297 : * Choix de la couleur de l'évolution 298 : IC = (@MOD K ncoul) + 1 ; 299 : COUI = 'MOT' ('EXTR' licoul ic) ; 300 : 301 : * Construction et ordonnancement de l'évolution 302 : ev1 = 'EVOL' COUI 'MANU' 'TEMPS' LIT 303 : ('CHAINE' K) TBR.K.'VALEUR' ; 304 : ev1 = 'ORDONNER' ev1 ; 305 : TBR.K.'VALEUR' = ev1 ; 306 : 307 : * Légende de la courbe (apparaitra à droite) 308 : * se présente sous la forme309 : NO2 = 'MOT' TNOMCOMP.L ; 310 : NO3 = 'MOT' TNOMPT.LM ; 311 : MOMO1 = 'CHAINE' NO2 ' ' NO3 ; 312 : TBR.K.'LEGEND2'= 'MOT' MOMO1 ; 313 : 314 : * Adjonction préfixe constant : 315 : TBR.K.'LEGEND1' = 'MOT' NOMT2 ; 316 : 317 : 'FIN' BOU5 ; 318 : 'FIN' BOU6 ; 319 : 320 : 'FINP' TBR ; 321 : 322 : 323 :
© Cast3M 2003 - All rights reserved.
Disclaimer