Télécharger explorer.procedur

Retour à la liste

Numérotation des lignes :

  1. * EXPLORER PROCEDUR PASCAL 22/04/14 21:15:02 11341
  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. si ICHGMOD1 ;
  352. MOD0 = MATAB . 'MODELES' . 0 ;
  353. sino ;
  354. MOD0 = MATAB . 'MODELE' ;
  355. fins ;
  356. lemail = EXTR MOD0 'MAIL' ;
  357. lemail22 = EXTR MOD0 'MAIL' 'FROTTEMENT';
  358. * enlever les elements de frottements car les multiplicateurs de lagrange de frottement ne suivent pas la
  359. * deformee
  360. lemail = lemail diff lemail22;
  361. * suite a la demande de CB
  362. SI (EXIS MATAB 'RIGIDITE_CONSTANTE');
  363. SI (EGA (TYPE MATAB . 'RIGIDITE_CONSTANTE') 'RIGIDITE');
  364. lemail = lemail et (EXTR MATAB . 'RIGIDITE_CONSTANTE' 'MAIL');
  365. FINSI;
  366. FINSI;
  367. SI FLCHOI; TRAC 'NCLK' 'CACH' lemail; FINSI;
  368.  
  369. * ON VERIFIE L'EXISTENCE DES CHAMPS -> lopt
  370. lopt = MOTS;
  371. SI (EXIS matab 'DEPLACEMENTS');
  372. tdpl = MATAB . 'DEPLACEMENTS';
  373. lopt = MOTS 'Depl';
  374. FINSI;
  375. SI ( EXIS matab 'CONTRAINTES');
  376. lopt = lopt ET (MOTS 'Cont');
  377. tctr = MATAB . 'CONTRAINTES';
  378. modmec = EXTR MOD0 'FORMULATION' 'MECANIQUE';
  379. matmec = REDU MATAB . WTABLE . 'CARACTERISTIQUES' modmec;
  380. FINSI;
  381. SI ( EXIS matab 'VARIABLES_INTERNES');
  382. tvar = MATAB . 'VARIABLES_INTERNES';
  383. lopt = lopt ET (MOTS 'Var_');
  384. FINSI;
  385. SI ( EXIS matab 'REACTIONS');
  386. trea = MATAB . 'REACTIONS';
  387. lopt = lopt ET (MOTS 'Reac');
  388. FINSI;
  389. SI ( EXIS matab 'TEMPERATURES');
  390. lopt = lopt ET (MOTS 'Temp');
  391. modthe = EXTR MOD0 'FORMULATION' 'THERMIQUE';
  392. maithe = EXTR modthe 'MAILLAGE';
  393. tctem = MATAB . 'TEMPERATURES';
  394. FINSI;
  395. lopt = lopt ET (MOTS 'Quitter');
  396.  
  397. * ON INDEXE LA TABLE DES TEMPS (DES PAS DE CALCUL)
  398. ttem = MATAB . 'TEMPS';
  399. tindex = INDEX ttem;
  400. ltindex = DIME tindex - 1;
  401. ind=0;d1=d1;
  402.  
  403. * VALEUR PAR DEFAUT DES LOGIQUES
  404. evolu = FAUX;
  405. defor = FAUX;
  406. ampdef = TEXT ' ';
  407. contr = FAUX;
  408. react = FAUX;
  409. tempe = FAUX;
  410. evo_esp = FAUX;
  411. evo_tem = FAUX;
  412. depla = FAUX;
  413. var_int= FAUX;
  414. quit = FAUX;
  415.  
  416. * En cas de modele de contact, valeur amplitude deformee = 1 par defaut
  417. si (exis MOD0 form contact) ;
  418. ampdef = 1. ;
  419. fins ;
  420.  
  421. * BOUCLE PRINCIPALE ----------------------------------------------------
  422.  
  423. REPE bouc2;
  424.  
  425. SI (EXIS matab 'DEPLACEMENTS');
  426. SI FLCHOI;
  427. * Par defaut :
  428. si (&bouc2 ega 1) ;
  429. defor = VRAI ;
  430. contr = VRAI ;
  431. fins ;
  432. * Choix interactif :
  433. SI ( EXIS matab 'TEMPERATURES');
  434. defoP contP reacP evolP tempP = defor contr react evolu tempe ;
  435. defor contr react evolu tempe quit= CHOI 'cochez les options désirées'
  436. defor contr react evolu tempe quit;
  437. si (contP et tempe) ; contr = faux ; fins ;
  438. si (contr et tempP) ; contr = vrai ; fins ;
  439. si (react et tempe) ; react = faux ; tempe = faux ; iter bouc2 ; fins ;
  440. SINON ;
  441. defor contr react evolu quit= CHOI 'cochez les options désirées'
  442. defor contr react evolu quit;
  443. FINSI ;
  444. SINON;
  445. SI FLMOC1;
  446. * Choix par un listmots en argument
  447. defor = EXIS LMOC1 'DEPL';
  448. contr = EXIS LMOC1 'CONT';
  449. react = EXIS LMOC1 'REAC';
  450. evolu = EXIS LMOC1 'EVOL';
  451. var_int = EXIS LMOC1 'VAR';
  452. SINON;
  453. * Choix par defaut
  454. defor = VRAI;
  455. contr = VRAI;
  456. FINSI;
  457. SI FLOPT1;
  458. SI (EXIS TOPT1 'AMPL');
  459. ampdef = TOPT1 . 'AMPL';
  460. FINSI;
  461. FINSI;
  462. FINSI;
  463. SINON;
  464. SI ( EXIS matab 'TEMPERATURES');
  465. SI FLCHOI;
  466. tempe evolu quit = CHOI 'cochez les options désirées'
  467. tempe evolu quit;
  468. SINON;
  469. SI FLMOC1;
  470. tempe = EXIS LMOC1 'TEMP';
  471. SINON;
  472. tempe = VRAI;
  473. FINSI;
  474. FINSI;
  475. SINON ;
  476. MESS '* LA TABLE NE CONTIENT NI DEPLACEMENTS NI TEMPERATURES !';
  477. QUITTER EXPLORER;
  478. FINSI;
  479. FINSI;
  480.  
  481. * CHOIX = QUIT --> ON SORT
  482. SI quit ; QUITTER EXPLORER; FINSI;
  483. * 1 seule iteration si pas de choix interactif
  484. SI ((NON FLCHOI) ET (EGA &bouc2 2)); QUITTER EXPLORER; FINSI;
  485.  
  486. * AUCUN CHOIX = QUIT --> ON NE FAIT QUE REPROPOSER UN NOUVEAUX CHOIX
  487. SI ((NON defor) ET (NON contr) ET (NON react)
  488. ET ( NON evolu) ET (NON tempe));
  489. ITERER bouc2;
  490. FINSI;
  491.  
  492. * CHOIX = EVOLU
  493. SI evolu;
  494.  
  495. SI FLCHOI;
  496. * Choix interactif
  497. ret = MENU ' Faites votre choix' 'evo_espace' 'evo_temps' ;
  498. SI ( EGA ret 'Quitter' ) ; QUITTER EXPLORER; FINSI;
  499. SI ( EGA ret 'evo_espace') ;
  500. evo_esp=VRAI; evo_tem=FAUX;
  501. SINON;
  502. evo_esp=FAUX;
  503. SI ( EGA ret 'evo_temps' ); evo_tem=VRAI; FINSI;
  504. FINSI;
  505. SINON;
  506. * Choix par une table d'option en argument
  507. SI (NON FLOPT1);
  508. MESS '* Une table d options est necessaire en argument ';
  509. MESS '* dans le cas du trace d evolutions';
  510. ERRE 21;
  511. FINSI;
  512. SI (NON (EXIS TOPT1 'EVOL'));
  513. MESS '* Une table d options avec l indice EVOL est necessaire ';
  514. MESS '* en argument dans le cas du trace d evolutions';
  515. ERRE 21;
  516. FINSI;
  517. SI (NON (EXIS TOPT1 . 'EVOL' 'TYPE'));
  518. MESS '* Une table d options avec l indice EVOL . TYPE est ' ;
  519. MESS '* necessaire en argument dans le cas du trace d evolutions';
  520. ERRE 21;
  521. FINSI;
  522. evo_esp = EGA TOPT1 . 'EVOL' . 'TYPE' 'ESPA';
  523. evo_tem = EGA TOPT1 . 'EVOL' . 'TYPE' 'TEMP';
  524. * logiques deja affectes + haut
  525. depla = defor;
  526. lret = mots ;
  527. si depla; ret = mot 'Depl'; lret = lret et (mots ret); finsi;
  528. si contr; ret = mot 'Cont'; lret = lret et (mots ret); finsi;
  529. si react; ret = mot 'Reac'; lret = lret et (mots ret); finsi;
  530. si tempe; ret = mot 'Temp'; lret = lret et (mots ret); finsi;
  531. si var_int; ret = mot 'Var_'; lret = lret et (mots ret); finsi;
  532. SI ((dime lret) NEG 1);
  533. MESS '* Champ concerne par l evolution ambigu parmi :';
  534. LIST lret;
  535. MESS '* Veuillez fournir un LISTMOT plus explicite';
  536. ERRE 21;
  537. FINSI;
  538. FINSI;
  539.  
  540. * EVOLUTION SPATIALE
  541. SI evo_esp;
  542. * evolution spatiale sur quelle ligne? et de quelle grandeur?
  543. SI FLCHOI;
  544. * Choix interactif
  545. depla=FAUX; contr=FAUX; react=FAUX; tempe=FAUX; var_int=faux;
  546. List *maillage ligne ;
  547. mai = SAIS ' Nom de la ligne suivant laquelle tracer (voir liste): '
  548. 'MAILLAGE' ;
  549. ret = MENU 'Choisissez le champ concerne' lopt;
  550. * MESS ' retour de menu ' ret;
  551. SI ( EGA ret 'Quitter' ); QUITTER EXPLORER; FINSI;
  552. SI ( EGA ret 'Depl') ; depla=VRAI; FINSI;
  553. SI ( EGA ret 'Cont') ; contr=VRAI; FINSI;
  554. SI ( EGA ret 'Reac') ; react=VRAI; FINSI;
  555. SI ( EGA ret 'Temp') ; tempe=VRAI; FINSI;
  556. SI ( EGA ret 'Var_') ; var_int=VRAI;FINSI;
  557. SINON;
  558. * Choix par une table d'option en argument
  559. SI (EXIS TOPT1 . 'EVOL' 'LIGN');
  560. mai=TOPT1 . 'EVOL' . 'LIGN';
  561. SINON;
  562. MESS '* Une table d options avec l indice EVOL . LIGN est ';
  563. MESS '* necessaire en argument dans le cas du trace ';
  564. MESS '* d evolutions spatiales';
  565. ERRE 21;
  566. FINSI;
  567. FINSI;
  568. SI ( EGA ret 'Depl') ;
  569. ICHPO=VRAI; mot1 = MOT 'DEPLACEMENTS';
  570. FINSI;
  571. SI ( EGA ret 'Cont') ;
  572. ICHPO=FAUX; mot1 = MOT 'CONTRAINTES';
  573. FINSI;
  574. SI ( EGA ret 'Reac') ;
  575. ICHPO=VRAI; mot1 = MOT 'REACTIONS';
  576. FINSI;
  577. SI ( EGA ret 'Temp') ;
  578. ICHPO=VRAI; mot1 = MOT 'TEMPERATURES';
  579. FINSI;
  580. SI ( EGA ret 'Var_') ;
  581. ICHPO=FAUX; mot1 = MOT 'VARIABLES_INTERNES';
  582. FINSI;
  583. lcomp= EXTR (matab . mot1 . 1) 'COMP' ;
  584. SI FLCHOI;
  585. * Choix interactif
  586. compo = MENU 'Composantes?' lcomp;
  587. SINON;
  588. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  589. * Choix par une table d'option en argument
  590. compo = TOPT1 . 'EVOL' . 'COMP';
  591. SINON;
  592. * Choix par defaut
  593. compo = EXTR lcomp 1;
  594. FINSI;
  595. FINSI;
  596. cp= ttem . ind;
  597. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  598. * titre du trace
  599. SI FLCHOI;
  600. * Choix interactif
  601. tit= SAIS 'Donner un titre pour le dessin (entrer quotes) :'
  602. 'MOT';
  603. SINON;
  604. SI (EXIS TOPT1 . 'EVOL' 'TITR');
  605. * Choix par une table d'option en argument
  606. tit = TOPT1 . 'EVOL' . 'TITR';
  607. SINON;
  608. * Choix par defaut
  609. tit = CHAI 'evolution spatiale de' ' ' compo;
  610. FINSI;
  611. FINSI;
  612. tcp = ttem . ind;
  613. ch = CHAI tit ' pour le temps' ' ' tcp;
  614. TITRE ch;
  615. * trace initial
  616. SI ( depla 'OU' tempe 'OU' react );
  617. SI depla; mata=MATAB . 'DEPLACEMENTS';FINSI;
  618. SI tempe; mata=MATAB . 'TEMPERATURES';FINSI;
  619. SI react; mata=MATAB . 'REACTIONS' ;FINSI;
  620. tcp= ttem . ind;
  621.  
  622. * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante
  623. SI ('EXIS' mata . ind compo);
  624. ev = EVOL 'CHPO' mata . ind mai compo;
  625. SINON;
  626. ev ='VIDE' 'EVOLUTION';
  627. FINS;
  628. ichpo=vrai;
  629. * dess ev;
  630. SINON ;
  631. SI var_int; mata = MATAB . 'VARIABLES_INTERNES' ; FINSI;
  632. SI contr ; mata = MATAB . 'CONTRAINTES' ; FINSI;
  633. rdt = CHAN 'CHPO' mata . ind MOD0 ;
  634. ichpo=FAUX;
  635. ev = EVOL 'CHPO' rdt mai compo;
  636. FINSI;
  637. * boucle second niveau sur les pas de temps ......
  638. REPE bouc77 ;
  639. SI FLCHOI;
  640. * Choix interactif
  641. dess ev;
  642. cha= CHAI 'pas courant :' ind;
  643. ret= MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  644. SI (EGA ret 'options') ; QUITTER bouc77 ; FINSI;
  645. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  646. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  647. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  648. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  649. SI (EGA ret 'n°'); ind=SAIS 'Numéro du pas : ' 'ENTIER'; FINS;
  650. SI (ind > ltindex); ind = 0 ; FINSI;
  651. SI (ind < 0); ind = ltindex; FINSI;
  652. FINSI;
  653. tcp = ttem . ind;
  654. ch = CHAI tit ' pour le temps' ' ' tcp;
  655. TITRE ch;
  656. SI ichpo;
  657. * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante
  658. SI ('EXIS' mata . ind compo);
  659. ev = EVOL 'CHPO' mata . ind mai compo;
  660. SINON;
  661. ev ='VIDE' 'EVOLUTION';
  662. FINS;
  663. SINON;
  664. rdt= CHAN 'CHPO' mata . ind MOD0 ;
  665. ev = EVOL 'CHPO' rdt mai compo;
  666. FINSI;
  667. si (&bouc77 ega 1) ; dess ev ; fins ;
  668. SI (NON FLCHOI);
  669. * non interactif : on trace tous les pas de temps
  670. ind = ind + 1;
  671. SI (ind > ltindex); QUITTER bouc77; FINSI;
  672. FINSI;
  673. FIN bouc77;
  674. * fin de la boucle second niveau sur les pas de temps ......
  675. FINSI;
  676.  
  677. * EVOLUTION TEMPORELLE
  678. SI evo_tem;
  679. * evolution temporelle en quel point? et de quelle grandeur?
  680. SI FLCHOI;
  681. * Choix interactif
  682. depla=FAUX;contr=FAUX; react=FAUX; tempe=FAUX;var_int=faux;
  683. * ret = MENU 'Choisissez le champ concerne'
  684. * 'depla' 'contr' 'react' 'tempe' 'var_int';
  685. ret = MENU 'Choisissez le champ concerne' lopt;
  686. SI ( EGA ret 'Quitter' ); QUITTER explorer; FINSI;
  687. FINSI;
  688. SI ( EGA ret 'Depl') ; ichpo=VRAI;
  689. mot1 = MOT 'DEPLACEMENTS';FINSI;
  690. SI ( EGA ret 'Cont') ; ichpo=FAUX;
  691. mot1 = MOT 'CONTRAINTES'; FINSI;
  692. SI ( EGA ret 'Reac') ; ichpo=VRAI;
  693. mot1 = MOT 'REACTIONS';FINSI;
  694. SI ( EGA ret 'Temp') ; ichpo=VRAI;
  695. mot1 = MOT 'TEMPERATURES';FINSI;
  696. SI ( EGA ret 'Var_') ; ichpo=FAUX;
  697. mot1 = MOT 'VARIABLES_INTERNES';FINSI;
  698. lcomp= EXTR matab . mot1 . 1 'COMP';
  699. SI FLCHOI;
  700. * Choix interactif
  701. compo= MENU 'Composantes?' lcomp;
  702. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  703. SI ichpo;
  704. List *point ;
  705. P1= SAIS 'Point concerne (voir liste)? : ' 'POINT';
  706. SINON;
  707. N1=SAIS 'Numero de la zone concernee : ' 'ENTIER';
  708. N2=SAIS 'Numero de l element concerne : ' 'ENTIER';
  709. N3=SAIS 'Numero du point de gauss concerne : ' 'ENTIER';
  710. FINSI;
  711. SINON;
  712. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  713. * Choix par une table d'option en argument
  714. compo = TOPT1 . 'EVOL' . 'COMP';
  715. SINON;
  716. * Choix par defaut
  717. compo = EXTR lcomp 1;
  718. FINSI;
  719. SI ichpo;
  720. SI (EXIS TOPT1 . 'EVOL' 'POIN'); p1 = TOPT1 . 'EVOL' . 'POIN';
  721. SINON; MESS '* Le point concerne doit etre fourni a lindice'
  722. 'EVOL . POIN de la table d option';
  723. ERRE 21;
  724. FINSI;
  725. SINON;
  726. SI (EXIS TOPT1 . 'EVOL' 'ZONE'); n1 = TOPT1 . 'EVOL' . 'ZONE';
  727. SINON; n1 = 1;
  728. FINSI;
  729. SI (EXIS TOPT1 . 'EVOL' 'ELEM'); n2 = TOPT1 . 'EVOL' . 'ELEM';
  730. SINON; n2 = 1;
  731. FINSI;
  732. SI (EXIS TOPT1 . 'EVOL' 'PTG' ); n3 = TOPT1 . 'EVOL' . 'PTG' ;
  733. SINON; n3 = 1;
  734. FINSI;
  735. FINSI;
  736. FINSI;
  737. SI ichpo; ev1 = evol 'TEMP' matab mot1 compo p1;
  738. SINON; ev1 = evol 'TEMP' matab mot1 compo n1 n2 n3;
  739. FINSI;
  740. dess ev1;
  741. FINSI;
  742.  
  743. * CHOIX = AUTRE QUE EVOLU
  744. SINON;
  745.  
  746. * boucle second niveau sur les pas de temps ......
  747. REPE bouc1;
  748.  
  749. cha = CHAI 'pas courant :' ind;
  750. SI FLCHOI;
  751. * Choix interactif
  752. ret = MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  753. SI (EGA ret 'options') ; QUITTER bouc1 ; FINSI;
  754. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  755. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  756. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  757. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  758. SI (EGA ret 'n°') ; ind = SAIS 'Numéro du pas : ' 'ENTIER'; FINSI;
  759. FINSI;
  760.  
  761. * indice du pas
  762. SI (ind > ltindex); ind = 0 ; FINSI;
  763. SI (ind < 0); ind = ltindex; FINSI;
  764.  
  765. * Si le modele evolue au cours du calcul :
  766. SI ICHGMOD1 ;
  767. SI ( EXIS matab 'CONTRAINTES');
  768. modmec = EXTR (MATAB . 'MODELES' . ind) 'FORMULATION' 'MECANIQUE';
  769. lemail = extr modmec 'MAIL' ;
  770. * enlever les contacts
  771. SI ICHGMAT1 ;
  772. mati1 = tire (MATAB . 'CHARGEMENT') 'MATE' (MATAB . 'TEMPS' . ind) ;
  773. SINON ;
  774. mati1 = matmec ;
  775. FINSI ;
  776. matmec = REDU mati1 modmec;
  777. FINSI ;
  778. SI tempe ;
  779. modthe = EXTR (MATAB . 'MODELES' . ind) 'FORMULATION' 'THERMIQUE';
  780. modthe = EXTR modthe 'MATERIAU' 'CONDUCTION' ;
  781. maithe = EXTR modthe 'MAIL' ;
  782. FINSI ;
  783. FINSI ;
  784.  
  785. * objet a tracer
  786. SI defor; dpl = DEFO lemail tdpl.ind ampdef;FINSI;
  787. SI contr;
  788. ctr = tctr.ind;
  789. moctr = mot 'contraintes';
  790. SINON;
  791. SI var_int;
  792. ctr = tvar.ind;
  793. moctr = mot 'variables internes';
  794. FINSI;
  795. FINSI;
  796. SI react; vec = VECT trea.ind leforces;FINSI;
  797. SI (defor ET react);dpv = DEFO lemail tdpl.ind ampdef vec;FINSI;
  798.  
  799. * tracer
  800. SI (defor ET (NON contr) ET (NON react) et (non tempe));
  801. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  802. TRAC lemail dpl;
  803. FINSI;
  804. SI ((NON defor) ET contr ET (NON react));
  805. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  806. TRAC ctr modmec matmec ;
  807. FINSI;
  808. SI (defor ET contr ET (NON react));
  809. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  810. TRAC ctr modmec matmec dpl;
  811. FINSI;
  812. SI ((NON defor) ET (NON contr) ET react);
  813. TITRE 'reactions au temps ' MATAB . 'TEMPS' . ind;
  814. TRAC lemail vec;
  815. FINSI;
  816. SI (defor ET (NON contr) ET react);
  817. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  818. TRAC dpv lemail;
  819. FINSI;
  820. SI ((NON defor) ET contr ET react);
  821. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  822. TRAC ctr modmec matmec lemail vec;
  823. FINSI;
  824. SI (defor ET contr ET react);
  825. TITRE 'contraintes au temps ' MATAB . 'TEMPS' . ind;
  826. TRAC ctr modmec matmec dpv ;
  827. FINSI;
  828. SI ((NON defor) et tempe) ;
  829. tctemp=tctem.ind;
  830. TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind;
  831. TRAC tctemp maithe ;
  832. FINSI;
  833. SI (defor et tempe) ;
  834. tctemp=tctem.ind;
  835. TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind;
  836. TRAC tctemp dpl ;
  837. FINSI;
  838.  
  839. SI (NON FLCHOI);
  840. ind = ind + 1;
  841. SI (ind > ltindex); QUITTER bouc1; FINSI;
  842. FINSI;
  843.  
  844. FIN bouc1;
  845. * boucle second niveau sur les pas de temps ......
  846.  
  847. FINSI;
  848. * FIN DISTINCTION CHOIX = EVOLU / AUTRE QUE EVOLU
  849.  
  850. FIN bouc2;
  851. * FIN BOUCLE PRINCIPALE ------------------------------------------------
  852.  
  853.  
  854. FINPROC ;
  855.  
  856.  
  857.  
  858.  

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