* TRACHIT PROCEDUR JC220346 12/09/12 21:15:09 7501 ********************************************************************** 'DEBPROC' TRACHIT LIINDT/'LISTENTI' LIT/'LISTREEL' LICOMP/'LISTMOTS' TNOMCOMP/'TABLE' TNOMPT/'TABLE' ; ********************************************************************** * * Pour une fonction (x,t) donnée et pour un maillage de points donnés, * on construit une table contenant les évolutions en ces points au * cours du temps, pour les différentes composantes. * * ********************************************************************** * * Syntaxe : * --------- * * TAB1 = TRACHIT TAB2 MOT1 GEO1 * * (| LENTI1 |) (LMOTS1) (TAB3) (TAB4) (('PREF') MOT2) * (| LREEL1 |) * ********************************************************************** * * Auteur : F. Auriol, TTMF (1998) * * ----------------------- * * Modifié : P. Maugis, MTMS 24 août 1999 * * ----------------------- * * Modifié : P. Maugis, LSCE le 07 août 2007 * - récupération de la liste des composantes d'après le dernier champ * fourni plutôt que le premier, qui est parfois bidon. * ************************************************************************ * * Entrée : * -------- * * TAB2 : Table de données issue d'un calcul DARCY ou CHIMIE * contenant les indices 'TEMPS' et NOMT, * auxquels on trouve, aux indices entiers les temps et * le champ point que l'on souhaite explorer à ces temps-là. * * NOMT : Nom de l'indice de TAB2 indiquant les CHPOs à suivre * (type MOT) * * LIGNE : MAILLAGE des points où l'on souhaite visualiser * l'évolution en fonction du temps. * * NOMT2 : Nom humain du champ (type MOT, Défaut = NOMT) * * LIINDT : Liste des indices des temps à utiliser * (type LISTENTI, Défaut = tous) * * LIT : Liste des temps à utiliser (Défaut = tous), doivent * correspondre à ceux de TAB2. * * LICOMP : Liste des composantes des chpos à utiliser (Défaut = toutes) * * TNOMCOMP : Table de SOUSTYPE 'NOM_COMPOSANTE' contenant, pour * chaque indice entier de composante, le nom humain * correspondant (type MOT, défaut = nom de la composante) * * TNOMPT : Table de SOUSTYPE 'NOM_POINT' contenant, pour * chaque indice entier de point, le texte que l'on * souhaite mettre (type MOT, défaut = 'PT' N° du point) * * Sortie : * -------- * * Table contenant les évolutions aux points choisis au cours du * temps, pour les différentes composantes. * Indicée par des entiers (indice du point), elle contient pour * chaque cas une table à trois indices : * * . 'VALEUR' : L'évolution en fonction du temps au point courant * pour la composante courante * . 'LEGEND1': Préfixe de la légende pour toutes les courbes * . 'LEGEND2': Suffixe de cette légende (variable) * ************************************************************************ * * Remarques * --------- * * LES SOUSTYPES DE TNOMCOMP ET TNOMPT SONT OBLIGATOIRES SI ON NE * DONNE QU'UNE SEULE TABLE. * ************************************************************************ * Vérifications d'usage : * ----------------------- 'SI' ( 'NON' ('EXISTE' TAB2 'TEMPS') ) ; 'ERREUR' ' Il manque l indice TEMPS dans la table ' ; 'FINSI' ; 'SI' ( 'NON' ('EXISTE' TAB2 NOMT) ) ; 'ERREUR' ('CHAINE' ' la table ne contient pas l indice ' NOMT ) ; 'FINSI' ; * Lecture des mots : 'REPETER' bcl1 ; 'SI' ('NON' ('EXISTE' mot1)) ; 'QUITTER' bcl1 ; 'FINSI' ; 'SI' ('EGA' MOT1 'PREF') ; 'SINON' ; * comme il n'y a pas d'ambiguïté, on accepte aussi un mot seul, * s'il est le dernier argument NOMT2 = MOT1 ; * 'ERREUR' 'Mot' MOT1 'inconnu. On attend PREF' ; 'FINSI' ; 'FIN' bcl1 ; * On différencie TNOMCOMP et TNOMPT par leur sous-type : * par défaut on a affaire à la table des noms de composante. 'SI' (('EXISTE' TNOMCOMP) 'ET' ('EXISTE' TNOMPT)); 'SI' ( ('NON' ('EXISTE' TNOMCOMP 'SOUSTYPE')) 'OU' ('NON' ('EXISTE' TNOMPT 'SOUSTYPE')) ) ; 'ERREUR' 'Il faut préciser le soustype des tables de noms' ; 'FINSI' ; 'SI' ('EGA' TNOMCOMP.'SOUSTYPE' 'NOM_POINT') ; TB = TNOMPT ; TNOMPT = TNOMCOMP ; TNOMCOMP= TB ; 'SINON' ; 'SI' ('NEG' TNOMCOMP.'SOUSTYPE' 'NOM_COMPOSANTE') ; 'ERREUR' 'Il faut préciser le soustype des tables de noms' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SI' (('EXISTE' TNOMCOMP) 'ET' ('NON' ('EXISTE' TNOMPT))) ; 'SI' ('EXISTE' TNOMCOMP 'SOUSTYPE'); 'SI' ('EGA' TNOMCOMP.'SOUSTYPE' 'NOM_POINT'); TNOMPT = TNOMCOMP; 'OUBLIER' TNOMCOMP; 'SINON' ; 'SI' ('NEG' TNOMCOMP.'SOUSTYPE' 'NOM_COMPOSANTE'); 'ERREUR' 'L indice SOUSTYPE vaut soit NOM_POINT, soit NOM_COMPOSANTE'; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; * liste des couleurs : * -------------------- licoul = 'MOTS' 'DEFAUT' 'BLEU' 'ROUGE' 'ROSE' 'JAUNE' 'VERT' 'TURQ' 'AZUR' 'ORANGE' 'VIOLET' 'OCEAN' 'CYAN' 'OLIVE' 'GRIS'; * Initialisation liste des composantes * ------------------------------------ * Premier et dernier indices. * NBTP1 = Nb de temps dans la table donnée TBINDI = 'INDEX' ( TAB2.NOMT ) ; INDI0 = TBINDI . 1 ; INDIF = TBINDI . NBTP1 ; 'SI' ('EXISTE' LICOMP) ; 'SINON' ; 'FINSI' ; * Initialisation légende de chaque composante (par défaut la composante) * ------------------------------------------- 'SI' ('NON' ('EXISTE' TNOMCOMP)) ; TNOMCOMP= 'TABLE' ; 'FINSI' ; 'REPETER' BOUB NBCOMP ; I = &BOUB ; 'SI' ('NON' ( 'EXISTE' TNOMCOMP I )) ; 'FINSI' ; 'FIN' BOUB ; * initialisation légende de chaque point (par défaut est le N° du point) * -------------------------------------- 'SI' ('NON' ( 'EXISTE' TNOMPT)) ; TNOMPT = 'TABLE' ; 'FINSI' ; 'REPETER' BOUB NBPT ; I = &boub ; 'SI' ('NON' ( 'EXISTE' TNOMPT I )) ; TNOMPT.I = 'CHAINE' 'PT ' I ; 'FINSI' ; 'FIN' BOUB ; * Initialisation liste des indices et des temps : * ----------------------------------------------- * NBTP2 = nombre de temps à prendre en compte. 'SI' ('EXISTE' LIINDT); * si on fournit une liste des indices, on construit la liste des * temps correspondants. 'REPETER' BOU7 NBTP2 ; J = &bou7 ; 'FIN' BOU7 ; 'SINON' ; 'SI' ('EXISTE' LIT); * si on fournit une liste des temps, on construit la liste des * indices correspondants : 'REPETER' BOU8 NBTP2 ; J = &BOU8 ; 'REPETER' BOU9 NBTP1 ; I = &BOU9 ; III = TBINDI.I ; 'SI' (VT 'EGA' TAB2.'TEMPS'.III) ; 'QUITTER' BOU9 ; 'FINSI' ; 'FIN' BOU9 ; * si on ne l'a pas trouvé, erreur : 'SI' ('NEG' i &bou9); 'ERREUR' 'un temps donné ne correspond à aucun indice'; 'FINSI' ; 'FIN' BOU8 ; 'SINON' ; * on n'a donné ni liste d'indices, ni liste des temps, donc on * les prend tous par défaut. NBTP2 = NBTP1 ; 'REPETER' BOUA NBTP2 ; I = &boua ; I1 = TBINDI.I ; 'FIN' BOUA ; 'FINSI' ; 'FINSI' ; * Création des listes de valeur du chpo pour chaque composante et pour chaque p * ----------------------------------------------------------------------------- * K est l'indice de l'évolution TBR = 'TABLE' ; 'REPETER' BOU1 NBTP2 ; * pour chaque indice de temps à traiter : J = &BOU1 ; K = 0 ; 'REPETER' BOU3 NBPT ; * pour chaque point du maillage donné LM = &bou3 ; PPC = 'POINT' LIGNE LM ; 'REPETER' BOU2 NBCOMP ; * pour chaque composante du chpo L = &bou2 ; K = K + 1 ; 'SI' ('NON' ('EXISTE' TBR K)); TBR.K = 'TABLE' ; 'FINSI' ; 'FIN' BOU2 ; 'FIN' BOU3 ; 'FIN' BOU1 ; * K est l'indice de l'évolution, IC est l'indice de la couleur attribuée. K = 0 ; IC = 0 ; 'REPETER' BOU6 NBPT ; * pour chaque point du maillage donné LM = &bou6 ; 'REPETER' BOU5 NBCOMP ; * pour chaque composante du chpo L = &bou5 ; K = K + 1 ; IC = IC + 1 ; * Choix de la couleur de l'évolution * Construction et ordonnancement de l'évolution ('CHAINE' K) TBR.K.'VALEUR' ; ev1 = 'ORDONNER' ev1 ; TBR.K.'VALEUR' = ev1 ; * Légende de la courbe (apparaitra à droite) * se présente sous la forme <nom_comp> <nom_point> MOMO1 = 'CHAINE' NO2 ' ' NO3 ; * Adjonction préfixe constant : 'FIN' BOU5 ; 'FIN' BOU6 ; 'FINP' TBR ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales