Télécharger explorer.procedur

Retour à la liste

Numérotation des lignes :

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

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