Télécharger trachit.procedur

Retour à la liste

Numérotation des lignes :

  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 forme <nom_comp> <nom_point>
  309. 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.  
  324.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales