Télécharger explorer.procedur

Retour à la liste

Numérotation des lignes :

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

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