Télécharger explorer.procedur

Retour à la liste

Numérotation des lignes :

  1. * EXPLORER PROCEDUR PASCAL 16/10/13 21:15:09 9125
  2. DEBPROC EXPLORER ;
  3. *=======================================================================
  4. *
  5. * PROCEDURE DONT LE BUT EST D'EXPLORER LES RESULTATS ISSUS DE :
  6. * - PASAPAS
  7. * - VIBR (ajout bp, 2016-02)
  8. *
  9. * SYNTAXE :
  10. * EXPLORER MATAB | (LMOC1) | (TOPT1) ;
  11. * | 'CHAR' |
  12. * avec :
  13. * -MATAB : table de resultats issues de PASAPAS ou de VIBR
  14. * -CHAR : mot-cle si l'on souhaite visualiser le chargement
  15. * -LMOC1 : mots-cles definissant les actions a produire
  16. * -TOPT1 : table d'options
  17. *
  18. *=======================================================================
  19.  
  20. MESS '============== DEBUT DE LA PROCEDURE EXPLORER ==============';
  21.  
  22. *----------------------------------------------------------------------*
  23. * RECUP et VERIF DES DONNEES D'ENTREE *
  24. *----------------------------------------------------------------------*
  25.  
  26. ARGU MATAB*'TABLE' ;
  27. ARGU MOT1/'MOT' ;
  28. ARGU LMOC1/'LISTMOTS' ;
  29. ARGU TOPT1/'TABLE' ;
  30.  
  31. * quelques logiques :
  32. FLMOT1 = EXIS MOT1;
  33. FLMOC1 = EXIS LMOC1;
  34. FLOPT1 = EXIS TOPT1;
  35. FLTRACX= EGA (VALE 'TRAC') 'X';
  36. * Le choix est interactif si pas de mot-cles et trace X
  37. FLCHOI = FLTRACX ET (NON FLMOC1);
  38.  
  39.  
  40. * Quel est le type de resultats a traiter?
  41. SI (EXIS MATAB 'SOUSTYPE');
  42. TYPTAB = MOT MATAB . 'SOUSTYPE';
  43. SINON;
  44. MESS '* SOUSTYPE DE LA TABLE INCONNU :';
  45. MESS '* => ON SUPPOSE QU IL S AGIT D UNE TABLE PASAPAS';
  46. TYPTAB = MOT 'PASAPAS';
  47. FINSI;
  48.  
  49.  
  50. *----------------------------------------------------------------------*
  51. * CAS D'UNE TABLE ISSUE DE VIBR *
  52. *----------------------------------------------------------------------*
  53.  
  54. SI ( (EGA TYPTAB 'BASE_MODALE')
  55. OU (EGA TYPTAB 'LIAISONS_STATIQUES')
  56. OU (EGA TYPTAB 'BASE_DE_MODES') );
  57. * on teste l'existence des arguments
  58. SI (NON FLMOC1);
  59. LMOC1 = MOTS 'TABL' 'DEFO' 'DEF0' 'MAIL';
  60. FINSI;
  61. SI FLOPT1;
  62. POSTVIBR MATAB LMOC1 TOPT1;
  63. SINON;
  64. POSTVIBR MATAB LMOC1;
  65. FINSI;
  66. QUITTER EXPLORER;
  67. FINSI;
  68.  
  69.  
  70. * ON VERIFIE LE TYPE AVANT DE POURSUIVRE
  71. SI (NEG TYPTAB 'PASAPAS');
  72. MESS '* TABLE DE SOUSTYPE PASAPAS, BASE_MODALE OU LIAISONS_STATIQUES';
  73. MESS '* ATTENDUE EN ENTREE D EXPLORER !';
  74. ERRE 21;
  75. FINSI;
  76.  
  77.  
  78. *----------------------------------------------------------------------*
  79. * CAS D'UNE TABLE ISSUE DE PASAPAS *
  80. *----------------------------------------------------------------------*
  81.  
  82. * Si MATAB ne contient pas de resultat ==> proposer option CHAR : *
  83. IDEPL1 = EXIS MATAB 'DEPLACEMENTS' ;
  84. ISIGM1 = EXIS MATAB 'CONTRAINTES' ;
  85. ITHER1 = EXIS MATAB 'TEMPERATURES' ;
  86. SI IDEPL1 ;
  87. IDEPL1 = (DIME MATAB . 'DEPLACEMENTS') '>' 1 ;
  88. FINSI ;
  89. SI ISIGM1 ;
  90. ISIGM1 = (DIME MATAB . 'CONTRAINTES' ) '>' 1 ;
  91. FINSI ;
  92. SI ITHER1 ;
  93. ITHER1 = (DIME MATAB . 'TEMPERATURES') '>' 1 ;
  94. FINSI ;
  95. IRESU1 = (IDEPL1 ET ISIGM1) 'OU' ITHER1 ;
  96. *
  97. MESG00 = ' ' ;
  98. SI (NON IRESU1) ;
  99. SI (NON (EXIS MOT1)) ;
  100. MOT1 = MOT 'CHAR' ;
  101. MESG00 = ' PAS DE RESULTAT => option CHAR : ' ;
  102. FINSI ;
  103. FINSI ;
  104.  
  105.  
  106. *----------------------------------------------------------------------*
  107. * SOUS-CAS DU CHARGEMENT D'UNE TABLE PASAPAS *
  108. *----------------------------------------------------------------------*
  109.  
  110. SI (EGA MOT1 'CHAR') ;
  111.  
  112. * Le choix est interactif si pas de table d'options et trace X
  113. FLCHOI = FLTRACX ET (NON FLOPT1);
  114.  
  115. MOD1 = MATAB . 'MODELE' ;
  116. CGT0 = MATAB . 'CHARGEMENT' ;
  117. MAIL1 = EXTR MOD1 'MAIL' ;
  118. *
  119. * Boucle principale :
  120. LCHAR1 = EXTR CGT0 'COMP' ;
  121. REPE BPRIN1 ;
  122. *
  123. * Choix du chargement a vualiser :
  124. SI FLCHOI;
  125. * en interactif
  126. TRAC 'NCLK' MAIL1 ;
  127. MESG0 = CHAI MESG00 'Choisissez le chargement a visualiser ';
  128. MRET1 = MENU MESG0 LCHAR1 ;
  129. MESG00 = ' ' ;
  130. SI (EGA MRET1 'Quitter')
  131. QUITTER BPRIN1 ;
  132. FINSI ;
  133. SINON;
  134. * par defaut
  135. MRET1 = EXTR LCHAR1 1;
  136. * par une table d option
  137. SI FLOPT1;
  138. SI (EXIS TOPT1 'TYPE');
  139. MRET1 = TOPT1 . 'TYPE';
  140. FINSI;
  141. FINSI;
  142. FINSI;
  143. CGI1 = EXTR CGT0 MRET1 ;
  144.  
  145. * Petit travail si chargement est defini par 2 tables
  146. OPTI 'ERRE' 'CONT' ;
  147. EVI1 = EXTR CGI1 'EVOL' ;
  148. OPTI 'ERRE' 'NORM' ;
  149. SI (EGA (TYPE EVI1) 'ANNULE') ;
  150. TX1 TY1 = EXTR CGI1 MRET1 'TABL' ;
  151. LI1 = PROG ;
  152. REPE BX1 (DIME TX1) ;
  153. LI1 = LI1 ET (PROG TX1 . (&BX1 - 1)) ;
  154. FIN BX1 ;
  155. SINON ;
  156. LI1 = EXTR EVI1 'ABSC' ;
  157. FINSI ;
  158. *
  159. * Traitement CHPOINT / MCHAML
  160. I2 = 1 ;
  161. TI2 = EXTR LI1 I2 ;
  162. CH2 = TIRE CGI1 MRET1 TI2 ;
  163. SI (EGA (TYPE CH2 ) 'MCHAML') ;
  164. MM1 = MOD1 ;
  165. SINON ;
  166. SI (EGA (TYPE CH2 ) 'CHPOINT') ;
  167. MM1 = MAIL1 ;
  168. SINON ;
  169. ERRE ' On attend un MCHAML ou un CHPOINT ' ;
  170. FINSI ;
  171. FINSI ;
  172.  
  173. * composante
  174. LCOMP1 = EXTR CH2 'COMP' ;
  175. LCOMP2 = LCOMP1 ;
  176. MCOMP1 = EXTR LCOMP1 1 ;
  177. SI FLOPT1;
  178. SI (EXIS TOPT1 'COMP');
  179. MCOMP1 = TOPT1 . 'COMP';
  180. FINSI;
  181. FINSI;
  182.  
  183. * Boucle sur les instants du chargement
  184. NLI1 = DIME LI1 ;
  185. REPE BINST1 ;
  186. *
  187. * Traitement de l'echelle d'isovaleur
  188. XMIN1 = 'MINI' CH2 'AVEC' ('MOTS' MCOMP1) ;
  189. XMAX1 = 'MAXI' CH2 'AVEC' ('MOTS' MCOMP1) ;
  190. REPE BLEG1 NLI1 ;
  191. TI3 = EXTR LI1 &BLEG1 ;
  192. CHI3 = TIRE CGI1 MRET1 TI3 ;
  193. XMINI1 = 'MINI' CHI3 'AVEC' ('MOTS' MCOMP1) ;
  194. XMAXI1 = 'MAXI' CHI3 'AVEC' ('MOTS' MCOMP1) ;
  195. SI (XMINI1 '<' XMIN1) ; XMIN1 = XMINI1 ; FINSI ;
  196. SI (XMAXI1 '>' XMAX1) ; XMAX1 = XMAXI1 ; FINSI ;
  197. FIN BLEG1 ;
  198. XINT1 = XMAX1 - XMIN1 ;
  199. XPAS1 = XINT1 / 18. ;
  200. SI (XPAS1 NEG 0.) ;
  201. EE1 = ENTI 'INFE' (('LOG' XPAS1) / ('LOG' 10.)) ;
  202. YPAS1 = ENTI 'INFE' (XPAS1 / (10. ** EE1)) ;
  203. YPAS1 = YPAS1 * (10. ** EE1) ;
  204. NN1 = ENTI 'INFE' (XMIN1 / YPAS1) ;
  205. YMIN1 = NN1 * YPAS1 ;
  206. NN1 = ENTI 'INFE' (XINT1 / YPAS1) ;
  207. YMAX1 = YMIN1 + ((NN1 + 1) * YPAS1) ;
  208. LISO1 = PROG YMIN1 'PAS' YPAS1 YMAX1 ;
  209. SINON ;
  210. LISO1 = TEXT ' ' ;
  211. FINSI ;
  212.  
  213. * Cas non-interactif :
  214. SI (NON FLCHOI);
  215. * on itere betement
  216. TI2 = EXTR LI1 I2 ;
  217. CH2 = TIRE CGI1 MRET1 TI2 ;
  218. CH2 = 'EXCO' CH2 MCOMP1 MCOMP1 ;
  219. MESG1 = CHAI ' Chargement ' MRET1 ' a l instant '
  220. (CHAI 'FORMAT' '(E10.2)' TI2) ;
  221. TRAC CH2 MM1 'TITR' MESG1 LISO1 ;
  222. * on itere betement
  223. I2 = I2 + 1 ;
  224. SI (I2 > NLI1); QUITTER BINST1; FINSI;
  225. ITERER BINST1;
  226. FINSI;
  227. *
  228. * Choix des instants a vualiser
  229. TRAC 'NCLK' CH2 MM1 LISO1 ;
  230.  
  231. MESG1 = CHAI ' Chargement ' MRET1 ' a l instant '
  232. (CHAI 'FORMAT' '(E10.2)' TI2) ;
  233. MRET2 = MENU MESG1 ' Visualiser ' ' Composante '
  234. ' <-- ' ' --> ' ' No instant' ;
  235. *
  236. * On quitte pour boucle principale
  237. SI (EGA MRET2 'Quitter') ;
  238. QUITTER BINST1 ;
  239. FINSI ;
  240. *
  241. * On visualise le champ a l'instant demande
  242. SI (EGA MRET2 ' Visualiser ') ;
  243. TRAC CH2 MM1 'TITR' MESG1 LISO1 ;
  244. FINSI ;
  245. *
  246. * Traitement choix instant suivant / precedent
  247. SI (EGA MRET2 ' <-- ') ;
  248. I2 = I2 - 1 ;
  249. I2 = I2 - ((I2 - NLI1) / NLI1 * NLI1) ;
  250. FINSI ;
  251. SI (EGA MRET2 ' --> ') ;
  252. I2 = I2 + 1 - (I2 / NLI1 * NLI1) ;
  253. FINSI ;
  254. *
  255. * Traitement choix No instant
  256. SI (EGA MRET2 ' No instant') ;
  257. MESG2 = CHAI
  258. ' Entrez le No du pas de temps a visualiser (1 a '
  259. 'FORMAT' '(I)' NLI1 ') : ' ;
  260. REPE BSAIS1 ;
  261. I2 = SAIS MESG2 'ENTIER' ;
  262. SI ((I2 '<' 0) 'OU' (I2 '>' NLI1)) ;
  263. MESG2 = CHAI ' Nombre inacceptable !' MESG2 ;
  264. 'ITER' BSAIS1 ;
  265. FINSI ;
  266. QUITTER BSAIS1 ;
  267. FIN BSAIS1 ;
  268. FINSI ;
  269. *
  270. * Champ pour nouvel instant choisi
  271. TI2 = EXTR LI1 I2 ;
  272. CH2 = TIRE CGI1 MRET1 TI2 ;
  273. CH2 = 'REDU' CH2 MM1 ;
  274.  
  275. * Traitement des options d'affichage
  276. * SI (EGA MRET2 ' Options ') ;
  277. * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ;
  278. * MRET3 = MENU ' Choisissez une option d affichage '
  279. * ' Composante ' ;
  280. * FINSI ;
  281. *
  282. * Traitement choix composante
  283. SI (EGA MRET2 ' Composante ') ;
  284. MRET3 = MENU ' Choisissez la composante a afficher '
  285. (LCOMP1 ET ('MOTS' 'Tout')) ;
  286. SI (EXIS LCOMP1 MRET3) ;
  287. LCOMP2 = 'MOTS' MRET3 ;
  288. FINSI ;
  289. SI (EGA MRET3 'Tout') ;
  290. LCOMP2 = LCOMP1 ;
  291. FINSI ;
  292. FINSI ;
  293. SI (NEG LCOMP1 LCOMP2) ;
  294. CH2 = 'EXCO' CH2 LCOMP2 LCOMP2 ;
  295. FINSI ;
  296. MCOMP1 = EXTR LCOMP2 1 ;
  297. *List Resu CH2 ;
  298. *
  299. * Traitement choix vecteur
  300. * SI (EGA MRET3 ' Vecteur ') ;
  301. * TYP3 = EXTR CH2 'TYPE' ;
  302. * SI (EGA (TYPE TYP3) 'LISTMOTS') ;
  303. * MESG1 = CHAI
  304. * ' On attend un CHPOINT !' ;
  305. * FINSI ;
  306. * List TYP3 ;
  307. * SI ((EGA TYP3 'FORCES') 'OU' (EGA TYP3 'DEPLACEM')) ;
  308. * SINON ;
  309. * MESG1 = CHAI
  310. * ' On attend un CHPOINT de FORCES ou DEPLACEMENTS !' ;
  311. * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ;
  312. * FINSI ;
  313. * FINSI ;
  314. *
  315. FIN BINST1 ;
  316.  
  317. SI (NON FLCHOI); QUITTER BPRIN1; FINSI;
  318.  
  319. FIN BPRIN1 ;
  320. QUITTER EXPLORER ;
  321.  
  322. FINSI ;
  323.  
  324.  
  325. *----------------------------------------------------------------------*
  326. * SOUS-CAS DES RESULTATS D'UNE TABLE PASAPAS *
  327. *----------------------------------------------------------------------*
  328.  
  329. * INITIALISATIONS DES NOMS DES COMPOSANTES DES EFFORTS
  330. leforces = TEXT 'FX FY FZ';
  331. SI (EGA (VALE DIME) 2);
  332. leforces = TEXT 'FX FY';
  333. FINSI;
  334. SI (EGA (VALE 'MODE') 'AXIS');
  335. leforces = TEXT 'FR FZ';
  336. FINSI;
  337. SI (EGA (VALE 'MODE') 'FOUR');
  338. leforces = TEXT 'FR UT FZ';
  339. FINSI;
  340.  
  341. * INITIALISATIONS ------------------------------------------------------
  342.  
  343. * ON COMMENCE PAR TRACER LE MAILLAGE lorsqu'on est en interactif
  344. lemail = EXTR MATAB . 'MODELE' 'MAIL';
  345. * suite a la demande de CB
  346. SI (EXIS MATAB 'RIGIDITE_CONSTANTE');
  347. SI (EGA (TYPE MATAB . 'RIGIDITE_CONSTANTE') 'RIGIDITE');
  348. lemail = lemail et (EXTR MATAB . 'RIGIDITE_CONSTANTE' 'MAIL');
  349. FINSI;
  350. FINSI;
  351. SI FLCHOI; TRAC 'NCLK' 'CACH' lemail; FINSI;
  352.  
  353. * ON VERIFIE L'EXISTENCE DES CHAMPS -> lopt
  354. lopt = MOTS;
  355. SI (EXIS matab 'DEPLACEMENTS');
  356. tdpl = MATAB . 'DEPLACEMENTS';
  357. lopt = MOTS 'Depl';
  358. FINSI;
  359. SI ( EXIS matab 'CONTRAINTES');
  360. lopt = lopt ET (MOTS 'Cont');
  361. tctr = MATAB . 'CONTRAINTES';
  362. modmec = EXTR MATAB . 'MODELE' 'FORMULATION' 'MECANIQUE';
  363. matmec = REDU MATAB . 'CARACTERISTIQUES' modmec;
  364. FINSI;
  365. SI ( EXIS matab 'VARIABLES_INTERNES');
  366. tvar = MATAB . 'VARIABLES_INTERNES';
  367. lopt = lopt ET (MOTS 'Var_');
  368. FINSI;
  369. SI ( EXIS matab 'REACTIONS');
  370. trea = MATAB . 'REACTIONS';
  371. lopt = lopt ET (MOTS 'Reac');
  372. FINSI;
  373. SI ( EXIS matab 'TEMPERATURES');
  374. lopt = lopt ET (MOTS 'Temp');
  375. modthe = EXTR MATAB . 'MODELE' 'FORMULATION' 'THERMIQUE';
  376. maithe = EXTR modthe 'MAILLAGE';
  377. tctem = MATAB . 'TEMPERATURES';
  378. FINSI;
  379. lopt = lopt ET (MOTS 'Quitter');
  380.  
  381. * ON INDEXE LA TABLE DES TEMPS (DES PAS DE CALCUL)
  382. ttem = MATAB . 'TEMPS';
  383. tindex = INDEX ttem;
  384. ltindex = DIME tindex - 1;
  385. ind=0;d1=d1;
  386.  
  387. * VALEUR PAR DEFAUT DES LOGIQUES
  388. evolu = FAUX;
  389. defor = FAUX;
  390. ampdef = TEXT ' ';
  391. contr = FAUX;
  392. react = FAUX;
  393. tempe = FAUX;
  394. evo_esp = FAUX;
  395. evo_tem = FAUX;
  396. depla = FAUX;
  397. var_int= FAUX;
  398. quit = FAUX;
  399.  
  400. * En cas de modele de contact, valeur amplitude deformee = 1 par defaut
  401. si (exis MATAB.modele form contact) ;
  402. ampdef = 1. ;
  403. fins ;
  404.  
  405. * BOUCLE PRINCIPALE ----------------------------------------------------
  406.  
  407. REPE bouc2;
  408.  
  409. SI (EXIS matab 'DEPLACEMENTS');
  410. SI FLCHOI;
  411. * Choix interactif
  412. defor contr react evolu quit= CHOI 'cochez les options désirées'
  413. defor contr react evolu quit;
  414. SINON;
  415. SI FLMOC1;
  416. * Choix par un listmots en argument
  417. defor = EXIS LMOC1 'DEPL';
  418. contr = EXIS LMOC1 'CONT';
  419. react = EXIS LMOC1 'REAC';
  420. evolu = EXIS LMOC1 'EVOL';
  421. var_int = EXIS LMOC1 'VAR';
  422. SINON;
  423. * Choix par defaut
  424. defor = VRAI;
  425. contr = VRAI;
  426. FINSI;
  427. SI FLOPT1;
  428. SI (EXIS TOPT1 'AMPL');
  429. ampdef = TOPT1 . 'AMPL';
  430. FINSI;
  431. FINSI;
  432. FINSI;
  433. SINON;
  434. SI ( EXIS matab 'TEMPERATURES');
  435. SI FLCHOI;
  436. tempe evolu quit = CHOI 'cochez les options désirées'
  437. tempe evolu quit;
  438. SINON;
  439. SI FLMOC1;
  440. tempe = EXIS LMOC1 'TEMP';
  441. SINON;
  442. tempe = VRAI;
  443. FINSI;
  444. FINSI;
  445. SINON ;
  446. MESS '* LA TABLE NE CONTIENT NI DEPLACEMENTS NI TEMPERATURES !';
  447. QUITTER EXPLORER;
  448. FINSI;
  449. FINSI;
  450.  
  451. * CHOIX = QUIT --> ON SORT
  452. SI quit ; QUITTER EXPLORER; FINSI;
  453. * 1 seule iteration si pas de choix interactif
  454. SI ((NON FLCHOI) ET (EGA &bouc2 2)); QUITTER EXPLORER; FINSI;
  455.  
  456. * AUCUN CHOIX = QUIT --> ON NE FAIT QUE REPROPOSER UN NOUVEAUX CHOIX
  457. SI ((NON defor) ET (NON contr) ET (NON react)
  458. ET ( NON evolu) ET (NON tempe));
  459. ITERER bouc2;
  460. FINSI;
  461.  
  462. * CHOIX = EVOLU
  463. SI evolu;
  464.  
  465. SI FLCHOI;
  466. * Choix interactif
  467. ret = MENU ' Faites votre choix' 'evo_espace' 'evo_temps' ;
  468. SI ( EGA ret 'Quitter' ) ; QUITTER EXPLORER; FINSI;
  469. SI ( EGA ret 'evo_espace') ;
  470. evo_esp=VRAI; evo_tem=FAUX;
  471. SINON;
  472. evo_esp=FAUX;
  473. SI ( EGA ret 'evo_temps' ); evo_tem=VRAI; FINSI;
  474. FINSI;
  475. SINON;
  476. * Choix par une table d'option en argument
  477. SI (NON FLOPT1);
  478. MESS '* Une table d options est necessaire en argument ';
  479. MESS '* dans le cas du trace d evolutions';
  480. ERRE 21;
  481. FINSI;
  482. SI (NON (EXIS TOPT1 'EVOL'));
  483. MESS '* Une table d options avec l indice EVOL est necessaire ';
  484. MESS '* en argument dans le cas du trace d evolutions';
  485. ERRE 21;
  486. FINSI;
  487. SI (NON (EXIS TOPT1 . 'EVOL' 'TYPE'));
  488. MESS '* Une table d options avec l indice EVOL . TYPE est ' ;
  489. MESS '* necessaire en argument dans le cas du trace d evolutions';
  490. ERRE 21;
  491. FINSI;
  492. evo_esp = EGA TOPT1 . 'EVOL' . 'TYPE' 'ESPA';
  493. evo_tem = EGA TOPT1 . 'EVOL' . 'TYPE' 'TEMP';
  494. * logiques deja affectes + haut
  495. depla = defor;
  496. lret = mots ;
  497. si depla; ret = mot 'Depl'; lret = lret et (mots ret); finsi;
  498. si contr; ret = mot 'Cont'; lret = lret et (mots ret); finsi;
  499. si react; ret = mot 'Reac'; lret = lret et (mots ret); finsi;
  500. si tempe; ret = mot 'Temp'; lret = lret et (mots ret); finsi;
  501. si var_int; ret = mot 'Var_'; lret = lret et (mots ret); finsi;
  502. SI ((dime lret) NEG 1);
  503. MESS '* Champ concerne par l evolution ambigu parmi :';
  504. LIST lret;
  505. MESS '* Veuillez fournir un LISTMOT plus explicite';
  506. ERRE 21;
  507. FINSI;
  508. FINSI;
  509.  
  510. * EVOLUTION SPATIALE
  511. SI evo_esp;
  512. * evolution spatiale sur quelle ligne? et de quelle grandeur?
  513. SI FLCHOI;
  514. * Choix interactif
  515. depla=FAUX; contr=FAUX; react=FAUX; tempe=FAUX; var_int=faux;
  516. mai = SAIS ' Nom de la ligne suivant laquelle tracer : '
  517. 'MAILLAGE' ;
  518. ret = MENU 'Choisissez le champ concerne' lopt;
  519. MESS ' retour de menu ' ret;
  520. SI ( EGA ret 'Quitter' ); QUITTER EXPLORER; FINSI;
  521. SI ( EGA ret 'Depl') ; depla=VRAI; FINSI;
  522. SI ( EGA ret 'Cont') ; contr=VRAI; FINSI;
  523. SI ( EGA ret 'Reac') ; react=VRAI; FINSI;
  524. SI ( EGA ret 'Temp') ; tempe=VRAI; FINSI;
  525. SI ( EGA ret 'Var_') ; var_int=VRAI;FINSI;
  526. SINON;
  527. * Choix par une table d'option en argument
  528. SI (EXIS TOPT1 . 'EVOL' 'LIGN');
  529. mai=TOPT1 . 'EVOL' . 'LIGN';
  530. SINON;
  531. MESS '* Une table d options avec l indice EVOL . LIGN est ';
  532. MESS '* necessaire en argument dans le cas du trace ';
  533. MESS '* d evolutions spatiales';
  534. ERRE 21;
  535. FINSI;
  536. FINSI;
  537. SI ( EGA ret 'Depl') ;
  538. ICHPO=VRAI; mot1 = MOT 'DEPLACEMENTS';
  539. FINSI;
  540. SI ( EGA ret 'Cont') ;
  541. ICHPO=FAUX; mot1 = MOT 'CONTRAINTES';
  542. FINSI;
  543. SI ( EGA ret 'Reac') ;
  544. ICHPO=VRAI; mot1 = MOT 'REACTIONS';
  545. FINSI;
  546. SI ( EGA ret 'Temp') ;
  547. ICHPO=VRAI; mot1 = MOT 'TEMPERATURES';
  548. FINSI;
  549. SI ( EGA ret 'Var_') ;
  550. ICHPO=FAUX; mot1 = MOT 'VARIABLES_INTERNES';
  551. FINSI;
  552. lcomp= EXTR matab . mot1 . 1 'COMP';
  553. SI FLCHOI;
  554. * Choix interactif
  555. compo = MENU 'Composantes?' lcomp;
  556. SINON;
  557. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  558. * Choix par une table d'option en argument
  559. compo = TOPT1 . 'EVOL' . 'COMP';
  560. SINON;
  561. * Choix par defaut
  562. compo = EXTR lcomp 1;
  563. FINSI;
  564. FINSI;
  565. cp= ttem . ind;
  566. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  567. * titre du trace
  568. SI FLCHOI;
  569. * Choix interactif
  570. tit= SAIS 'Donner un titre pour le dessin (entrer quotes) :'
  571. 'MOT';
  572. SINON;
  573. SI (EXIS TOPT1 . 'EVOL' 'TITR');
  574. * Choix par une table d'option en argument
  575. tit = TOPT1 . 'EVOL' . 'TITR';
  576. SINON;
  577. * Choix par defaut
  578. tit = CHAI 'evolution spatiale de ' compo;
  579. FINSI;
  580. FINSI;
  581. tcp = ttem . ind;
  582. ch = CHAI tit ' pour le temps ' tcp;
  583. TITRE ch;
  584. * trace initial
  585. SI ( depla 'OU' tempe 'OU' react );
  586. SI depla; mata=MATAB . 'DEPLACEMENTS';FINSI;
  587. SI tempe; mata=MATAB . 'TEMPERATURES';FINSI;
  588. SI react; mata=MATAB . 'REACTIONS';FINSI;
  589. tcp= ttem . ind;
  590. ev = EVOL 'CHPO' mata . ind mai compo;
  591. ichpo=vrai;
  592. * dess ev;
  593. SINON ;
  594. SI var_int; mata = MATAB . 'VARIABLES_INTERNES' ;FINSI;
  595. SI contr; mata= MATAB . 'CONTRAINTES'; FINSI;
  596. rdt = CHAN 'CHPO' mata . ind MATAB . 'MODELE';
  597. ichpo=FAUX;
  598. ev = EVOL 'CHPO' rdt mai compo;
  599. FINSI;
  600. * boucle second niveau sur les pas de temps ......
  601. REPE bouc77 ;
  602. SI FLCHOI;
  603. * Choix interactif
  604. dess ev;
  605. cha= CHAI 'pas courant :' ind;
  606. ret= MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  607. SI (EGA ret 'options') ; QUITTER bouc77 ; FINSI;
  608. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  609. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  610. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  611. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  612. SI (EGA ret 'n°'); ind=SAIS 'Numéro du pas : ' 'ENTIER'; FINS;
  613. SI (ind > ltindex); ind = 0 ; FINSI;
  614. SI (ind < 0); ind = ltindex; FINSI;
  615. FINSI;
  616. tcp = ttem . ind;
  617. ch = CHAI tit ' pour le temps ' tcp;
  618. TITRE ch;
  619. SI ichpo;
  620. ev = EVOL 'CHPO' mata . ind mai compo;
  621. SINON;
  622. rdt= CHAN 'CHPO' mata . ind MATAB . 'MODELE';
  623. ev = EVOL 'CHPO' rdt mai compo;
  624. FINSI;
  625. dess ev;
  626. SI (NON FLCHOI);
  627. * non interactif : on trace tous les pas de temps
  628. ind = ind + 1;
  629. SI (ind > ltindex); QUITTER bouc77; FINSI;
  630. FINSI;
  631. FIN bouc77;
  632. * fin de la boucle second niveau sur les pas de temps ......
  633. FINSI;
  634.  
  635. * EVOLUTION TEMPORELLE
  636. SI evo_tem;
  637. * evolution temporelle en quel point? et de quelle grandeur?
  638. SI FLCHOI;
  639. * Choix interactif
  640. depla=FAUX;contr=FAUX; react=FAUX; tempe=FAUX;var_int=faux;
  641. * ret = MENU 'Choisissez le champ concerne'
  642. * 'depla' 'contr' 'react' 'tempe' 'var_int';
  643. ret = MENU 'Choisissez le champ concerne' lopt;
  644. SI ( EGA ret 'Quitter' ); QUITTER explorer; FINSI;
  645. FINSI;
  646. SI ( EGA ret 'Depl') ; ichpo=VRAI;
  647. mot1 = MOT 'DEPLACEMENTS';FINSI;
  648. SI ( EGA ret 'Cont') ; ichpo=FAUX;
  649. mot1 = MOT 'CONTRAINTES'; FINSI;
  650. SI ( EGA ret 'Reac') ; ichpo=VRAI;
  651. mot1 = MOT 'REACTIONS';FINSI;
  652. SI ( EGA ret 'tempe') ; ichpo=VRAI;
  653. mot1 = MOT 'TEMPERATURES';FINSI;
  654. SI ( EGA ret 'Var_') ; ichpo=FAUX;
  655. mot1 = MOT 'VARIABLES_INTERNES';FINSI;
  656. lcomp= EXTR matab . mot1 . 1 'COMP';
  657. SI FLCHOI;
  658. * Choix interactif
  659. compo= MENU 'Composantes?' lcomp;
  660. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  661. SI ichpo;
  662. P1= SAIS 'Point concerne? : ' 'POINT';
  663. SINON;
  664. N1=SAIS 'Numero de la zone concernee : ' 'ENTIER';
  665. N2=SAIS 'Numero de l element concerne : ' 'ENTIER';
  666. N3=SAIS 'Numero du point de gauss concerne : ' 'ENTIER';
  667. FINSI;
  668. SINON;
  669. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  670. * Choix par une table d'option en argument
  671. compo = TOPT1 . 'EVOL' . 'COMP';
  672. SINON;
  673. * Choix par defaut
  674. compo = EXTR lcomp 1;
  675. FINSI;
  676. SI ichpo;
  677. SI (EXIS TOPT1 . 'EVOL' 'POIN'); p1 = TOPT1 . 'EVOL' . 'POIN';
  678. SINON; MESS '* Le point concerne doit etre fourni a lindice'
  679. 'EVOL . POIN de la table d option';
  680. ERRE 21;
  681. FINSI;
  682. SINON;
  683. SI (EXIS TOPT1 . 'EVOL' 'ZONE'); n1 = TOPT1 . 'EVOL' . 'ZONE';
  684. SINON; n1 = 1;
  685. FINSI;
  686. SI (EXIS TOPT1 . 'EVOL' 'ELEM'); n2 = TOPT1 . 'EVOL' . 'ELEM';
  687. SINON; n2 = 1;
  688. FINSI;
  689. SI (EXIS TOPT1 . 'EVOL' 'PTG' ); n3 = TOPT1 . 'EVOL' . 'PTG' ;
  690. SINON; n3 = 1;
  691. FINSI;
  692. FINSI;
  693. FINSI;
  694. SI ichpo; ev1 = evol 'TEMP' matab mot1 compo p1;
  695. SINON; ev1 = evol 'TEMP' matab mot1 compo n1 n2 n3;
  696. FINSI;
  697. dess ev1;
  698. FINSI;
  699.  
  700. * CHOIX = AUTRE QUE EVOLU
  701. SINON;
  702.  
  703. * boucle second niveau sur les pas de temps ......
  704. REPE bouc1;
  705.  
  706. cha = CHAI 'pas courant :' ind;
  707. SI FLCHOI;
  708. * Choix interactif
  709. ret = MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  710. SI (EGA ret 'options') ; QUITTER bouc1 ; FINSI;
  711. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  712. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  713. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  714. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  715. SI (EGA ret 'n°') ; ind = SAIS 'Numéro du pas : ' 'ENTIER'; FINSI;
  716. FINSI;
  717.  
  718. * indice du pas
  719. SI (ind > ltindex); ind = 0 ; FINSI;
  720. SI (ind < 0); ind = ltindex; FINSI;
  721.  
  722. * objet a tracer
  723. SI defor; dpl = DEFO lemail tdpl.ind ampdef;FINSI;
  724. SI contr;
  725. ctr = tctr.ind;
  726. moctr = mot 'contraintes';
  727. SINON;
  728. SI var_int;
  729. ctr = tvar.ind;
  730. moctr = mot 'variables internes';
  731. FINSI;
  732. FINSI;
  733. SI react; vec = VECT trea.ind leforces;FINSI;
  734. SI (defor ET react);dpv = DEFO lemail tdpl.ind ampdef vec;FINSI;
  735.  
  736. * tracer
  737. SI (defor ET (NON contr) ET (NON react));
  738. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  739. TRAC lemail dpl;
  740. FINSI;
  741. SI ((NON defor) ET contr ET (NON react));
  742. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  743. TRAC ctr modmec matmec ;
  744. FINSI;
  745. SI (defor ET contr ET (NON react));
  746. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  747. TRAC ctr modmec matmec dpl;
  748. FINSI;
  749. SI ((NON defor) ET (NON contr) ET react);
  750. TITRE 'reactions au temps ' MATAB . 'TEMPS' . ind;
  751. TRAC lemail vec;
  752. FINSI;
  753. SI (defor ET (NON contr) ET react);
  754. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  755. TRAC dpv lemail;
  756. FINSI;
  757. SI ((NON defor) ET contr ET react);
  758. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  759. TRAC ctr modmec matmec lemail vec;
  760. FINSI;
  761. SI (defor ET contr ET react);
  762. TITRE 'contraintes au temps ' MATAB . 'TEMPS' . ind;
  763. TRAC ctr modmec matmec dpv ;
  764. FINSI;
  765. SI tempe;
  766. tctemp=tctem.ind;
  767. TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind;
  768. TRAC tctemp maithe ;
  769. FINSI;
  770.  
  771. SI (NON FLCHOI);
  772. ind = ind + 1;
  773. SI (ind > ltindex); QUITTER bouc1; FINSI;
  774. FINSI;
  775.  
  776. FIN bouc1;
  777. * boucle second niveau sur les pas de temps ......
  778.  
  779. FINSI;
  780. * FIN DISTINCTION CHOIX = EVOLU / AUTRE QUE EVOLU
  781.  
  782. FIN bouc2;
  783. * FIN BOUCLE PRINCIPALE ------------------------------------------------
  784.  
  785.  
  786. FINPROC ;
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  

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