Télécharger explorer.procedur

Retour à la liste

Numérotation des lignes :

  1. * EXPLORER PROCEDUR SP204843 25/04/04 21:15:01 12225
  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 : ==> voir notice !!!
  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.  
  29. FLMOT1 = EXIS MOT1;
  30.  
  31. * Option 'ANIM' :
  32. IANIM1 = faux ;
  33. 'SI' FLMOT1 ;
  34. IANIM1 = 'EGA' MOT1 'ANIM' ;
  35. 'FINSI' ;
  36.  
  37. *______________________________________________________________________*
  38. *----------------------------------------------------------------------*
  39. * Options par defaut et CHAR *
  40. *______________________________________________________________________*
  41. *----------------------------------------------------------------------*
  42. * L'option ANIM est traitee en 2 partie :
  43. 'SI' ('NON' IANIM1) ;
  44.  
  45. ARGU LMOC1/'LISTMOTS' ;
  46. ARGU TOPT1/'TABLE' ;
  47.  
  48. * quelques logiques :
  49. FLMOC1 = EXIS LMOC1;
  50. FLOPT1 = EXIS TOPT1;
  51.  
  52. FLTRACX1 = EGA (VALE 'TRAC') 'X';
  53. FLTRACX2 = EGA (VALE 'TRAC') 'OPEN';
  54. FLTRACX = FLTRACX1 'OU' FLTRACX2;
  55. * Le choix est interactif si pas de mot-cles et trace X
  56. FLCHOI = FLTRACX ET (NON FLMOC1);
  57.  
  58. * Quel est le type de resultats a traiter?
  59. SI (EXIS MATAB 'SOUSTYPE');
  60. TYPTAB = MOT MATAB . 'SOUSTYPE';
  61. SINON;
  62. MESS '* SOUSTYPE DE LA TABLE INCONNU :';
  63. MESS '* => ON SUPPOSE QU IL S AGIT D UNE TABLE PASAPAS';
  64. TYPTAB = MOT 'PASAPAS';
  65. FINSI;
  66.  
  67.  
  68. *----------------------------------------------------------------------*
  69. * CAS D'UNE TABLE ISSUE DE VIBR *
  70. *----------------------------------------------------------------------*
  71.  
  72. SI ( (EGA TYPTAB 'BASE_MODALE')
  73. OU (EGA TYPTAB 'LIAISONS_STATIQUES')
  74. OU (EGA TYPTAB 'BASE_DE_MODES') );
  75. * on teste l'existence des arguments
  76. SI (NON FLMOC1);
  77. LMOC1 = MOTS 'TABL' 'DEFO' 'DEF0' 'MAIL';
  78. FINSI;
  79. SI FLOPT1;
  80. POSTVIBR MATAB LMOC1 TOPT1;
  81. SINON;
  82. POSTVIBR MATAB LMOC1;
  83. FINSI;
  84. QUITTER EXPLORER;
  85. FINSI;
  86.  
  87.  
  88. * ON VERIFIE LE TYPE AVANT DE POURSUIVRE
  89. SI (NEG TYPTAB 'PASAPAS');
  90. MESS '* TABLE DE SOUSTYPE PASAPAS, BASE_MODALE OU LIAISONS_STATIQUES';
  91. MESS '* ATTENDUE EN ENTREE D EXPLORER !';
  92. ERRE 21;
  93. FINSI;
  94.  
  95.  
  96. *----------------------------------------------------------------------*
  97. * CAS D'UNE TABLE ISSUE DE PASAPAS *
  98. *----------------------------------------------------------------------*
  99.  
  100. * Si MATAB ne contient pas de resultat ==> proposer option CHAR : *
  101. IDEPL1 = EXIS MATAB 'DEPLACEMENTS' ;
  102. ISIGM1 = EXIS MATAB 'CONTRAINTES' ;
  103. ITHER1 = EXIS MATAB 'TEMPERATURES' ;
  104. SI IDEPL1 ;
  105. IDEPL1 = (DIME MATAB . 'DEPLACEMENTS') '>' 1 ;
  106. FINSI ;
  107. SI ISIGM1 ;
  108. ISIGM1 = (DIME MATAB . 'CONTRAINTES' ) '>' 1 ;
  109. FINSI ;
  110. SI ITHER1 ;
  111. ITHER1 = (DIME MATAB . 'TEMPERATURES') '>' 1 ;
  112. FINSI ;
  113. IRESU1 = (IDEPL1 ET ISIGM1) 'OU' ITHER1 ;
  114. *
  115. MESG00 = ' ' ;
  116. SI (NON IRESU1) ;
  117. SI (NON (EXIS MOT1)) ;
  118. MOT1 = MOT 'CHAR' ;
  119. MESG00 = ' PAS DE RESULTAT => option CHAR : ' ;
  120. FINSI ;
  121. FINSI ;
  122.  
  123. ICHGMOD1 = exis MATAB 'MODELES' ;
  124. ICHGMAT1 = FAUX;
  125. 'SI' ('EXIS' MATAB 'CHARGEMENT');
  126. ICHGMAT1 = exis (MATAB . 'CHARGEMENT') 'MATE' ;
  127. 'FINSI';
  128.  
  129. *----------------------------------------------------------------------*
  130. * SOUS-CAS DU CHARGEMENT D'UNE TABLE PASAPAS *
  131. *----------------------------------------------------------------------*
  132.  
  133. SI (EGA MOT1 'CHAR') ;
  134.  
  135. * Le choix est interactif si pas de table d'options et trace X
  136. FLCHOI = FLTRACX ET (NON FLOPT1);
  137.  
  138. MOD1 = MATAB . 'MODELE' ;
  139. CGT0 = MATAB . 'CHARGEMENT' ;
  140. MAIL1 = EXTR MOD1 'MAIL' ;
  141. *
  142. * Boucle principale :
  143. LCHAR1 = EXTR CGT0 'COMP' ;
  144. REPE BPRIN1 ;
  145. *
  146. * Choix du chargement a vualiser :
  147. SI FLCHOI;
  148. * en interactif
  149. TRAC 'NCLK' MAIL1 ;
  150. MESG0 = CHAI MESG00 'Choisissez le chargement a visualiser ';
  151. MRET1 = MENU MESG0 LCHAR1 ;
  152. MESG00 = ' ' ;
  153. SI (EGA MRET1 'Quitter')
  154. QUITTER BPRIN1 ;
  155. FINSI ;
  156. SINON;
  157. * par defaut
  158. MRET1 = EXTR LCHAR1 1;
  159. * par une table d option
  160. SI FLOPT1;
  161. SI (EXIS TOPT1 'TYPE');
  162. MRET1 = TOPT1 . 'TYPE';
  163. FINSI;
  164. FINSI;
  165. FINSI;
  166. CGI1 = EXTR CGT0 MRET1 ;
  167.  
  168. * Petit travail si chargement est defini par 2 tables
  169. OPTI 'ERRE' 'CONT' ;
  170. EVI1 = EXTR CGI1 'EVOL' ;
  171. OPTI 'ERRE' 'NORM' ;
  172. SI (EGA (TYPE EVI1) 'ANNULE') ;
  173. TX1 TY1 = EXTR CGI1 MRET1 'TABL' ;
  174. LI1 = PROG ;
  175. REPE BX1 (DIME TX1) ;
  176. LI1 = LI1 ET (PROG TX1 . (&BX1 - 1)) ;
  177. FIN BX1 ;
  178. SINON ;
  179. LI1 = EXTR EVI1 'ABSC' ;
  180. FINSI ;
  181. *
  182. * Traitement CHPOINT / MCHAML
  183. I2 = 1 ;
  184. TI2 = EXTR LI1 I2 ;
  185. CH2 = TIRE CGI1 MRET1 TI2 ;
  186. SI (EGA (TYPE CH2 ) 'MCHAML') ;
  187. MM1 = MOD1 ;
  188. SINON ;
  189. SI (EGA (TYPE CH2 ) 'CHPOINT') ;
  190. MM1 = MAIL1 ;
  191. SINON ;
  192. ERRE ' On attend un MCHAML ou un CHPOINT ' ;
  193. FINSI ;
  194. FINSI ;
  195.  
  196. * composante
  197. LCOMP1 = EXTR CH2 'COMP' ;
  198. LCOMP2 = LCOMP1 ;
  199. MCOMP1 = EXTR LCOMP1 1 ;
  200. SI FLOPT1;
  201. SI (EXIS TOPT1 'COMP');
  202. MCOMP1 = TOPT1 . 'COMP';
  203. FINSI;
  204. FINSI;
  205.  
  206. * Boucle sur les instants du chargement
  207. NLI1 = DIME LI1 ;
  208. REPE BINST1 ;
  209. *
  210. * Traitement de l'echelle d'isovaleur
  211. XMIN1 = 'MINI' CH2 'AVEC' ('MOTS' MCOMP1) ;
  212. XMAX1 = 'MAXI' CH2 'AVEC' ('MOTS' MCOMP1) ;
  213. REPE BLEG1 NLI1 ;
  214. TI3 = EXTR LI1 &BLEG1 ;
  215. CHI3 = TIRE CGI1 MRET1 TI3 ;
  216. XMINI1 = 'MINI' CHI3 'AVEC' ('MOTS' MCOMP1) ;
  217. XMAXI1 = 'MAXI' CHI3 'AVEC' ('MOTS' MCOMP1) ;
  218. SI (XMINI1 '<' XMIN1) ; XMIN1 = XMINI1 ; FINSI ;
  219. SI (XMAXI1 '>' XMAX1) ; XMAX1 = XMAXI1 ; FINSI ;
  220. FIN BLEG1 ;
  221. XINT1 = XMAX1 - XMIN1 ;
  222. XPAS1 = XINT1 / 18. ;
  223. SI (XPAS1 NEG 0.) ;
  224. EE1 = ENTI 'INFE' (('LOG' XPAS1) / ('LOG' 10.)) ;
  225. YPAS1 = ENTI 'INFE' (XPAS1 / (10. ** EE1)) ;
  226. YPAS1 = YPAS1 * (10. ** EE1) ;
  227. NN1 = ENTI 'INFE' (XMIN1 / YPAS1) ;
  228. YMIN1 = NN1 * YPAS1 ;
  229. NN1 = ENTI 'INFE' (XINT1 / YPAS1) ;
  230. YMAX1 = YMIN1 + ((NN1 + 1) * YPAS1) ;
  231. LISO1 = PROG YMIN1 'PAS' YPAS1 YMAX1 ;
  232. SINON ;
  233. LISO1 = TEXT ' ' ;
  234. FINSI ;
  235.  
  236. * Cas non-interactif :
  237. SI (NON FLCHOI);
  238. * on itere betement
  239. TI2 = EXTR LI1 I2 ;
  240. CH2 = TIRE CGI1 MRET1 TI2 ;
  241. CH2 = 'EXCO' CH2 MCOMP1 MCOMP1 ;
  242. MESG1 = CHAI ' Chargement ' MRET1 ' a l instant '
  243. (CHAI 'FORMAT' '(E10.2)' TI2) ;
  244. TRAC CH2 MM1 'TITR' MESG1 LISO1 ;
  245. * on itere betement
  246. I2 = I2 + 1 ;
  247. SI (I2 > NLI1); QUITTER BINST1; FINSI;
  248. ITERER BINST1;
  249. FINSI;
  250. *
  251. * Choix des instants a vualiser
  252. TRAC 'NCLK' CH2 MM1 LISO1 ;
  253.  
  254. MESG1 = CHAI ' Chargement ' MRET1 ' a l instant '
  255. (CHAI 'FORMAT' '(E10.2)' TI2) ;
  256. MRET2 = MENU MESG1 ' Visualiser ' ' Composante '
  257. ' <-- ' ' --> ' ' No instant' ;
  258. *
  259. * On quitte pour boucle principale
  260. SI (EGA MRET2 'Quitter') ;
  261. QUITTER BINST1 ;
  262. FINSI ;
  263. *
  264. * On visualise le champ a l'instant demande
  265. SI (EGA MRET2 ' Visualiser ') ;
  266. TRAC CH2 MM1 'TITR' MESG1 LISO1 ;
  267. FINSI ;
  268. *
  269. * Traitement choix instant suivant / precedent
  270. SI (EGA MRET2 ' <-- ') ;
  271. I2 = I2 - 1 ;
  272. I2 = I2 - ((I2 - NLI1) / NLI1 * NLI1) ;
  273. FINSI ;
  274. SI (EGA MRET2 ' --> ') ;
  275. I2 = I2 + 1 - (I2 / NLI1 * NLI1) ;
  276. FINSI ;
  277. *
  278. * Traitement choix No instant
  279. SI (EGA MRET2 ' No instant') ;
  280. MESG2 = CHAI
  281. ' Entrez le No du pas de temps a visualiser (1 a '
  282. 'FORMAT' '(I)' NLI1 ') : ' ;
  283. REPE BSAIS1 ;
  284. I2 = SAIS MESG2 'ENTIER' ;
  285. SI ((I2 '<' 0) 'OU' (I2 '>' NLI1)) ;
  286. MESG2 = CHAI ' Nombre inacceptable !' MESG2 ;
  287. 'ITER' BSAIS1 ;
  288. FINSI ;
  289. QUITTER BSAIS1 ;
  290. FIN BSAIS1 ;
  291. FINSI ;
  292. *
  293. * Champ pour nouvel instant choisi
  294. TI2 = EXTR LI1 I2 ;
  295. CH2 = TIRE CGI1 MRET1 TI2 ;
  296. CH2 = 'REDU' CH2 MM1 ;
  297.  
  298. * Traitement des options d'affichage
  299. * SI (EGA MRET2 ' Options ') ;
  300. * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ;
  301. * MRET3 = MENU ' Choisissez une option d affichage '
  302. * ' Composante ' ;
  303. * FINSI ;
  304. *
  305. * Traitement choix composante
  306. SI (EGA MRET2 ' Composante ') ;
  307. MRET3 = MENU ' Choisissez la composante a afficher '
  308. (LCOMP1 ET ('MOTS' 'Tout')) ;
  309. SI (EXIS LCOMP1 MRET3) ;
  310. LCOMP2 = 'MOTS' MRET3 ;
  311. FINSI ;
  312. SI (EGA MRET3 'Tout') ;
  313. LCOMP2 = LCOMP1 ;
  314. FINSI ;
  315. FINSI ;
  316. SI (NEG LCOMP1 LCOMP2) ;
  317. CH2 = 'EXCO' CH2 LCOMP2 LCOMP2 ;
  318. FINSI ;
  319. MCOMP1 = EXTR LCOMP2 1 ;
  320. *List Resu CH2 ;
  321. *
  322. * Traitement choix vecteur
  323. * SI (EGA MRET3 ' Vecteur ') ;
  324. * TYP3 = EXTR CH2 'TYPE' ;
  325. * SI (EGA (TYPE TYP3) 'LISTMOTS') ;
  326. * MESG1 = CHAI
  327. * ' On attend un CHPOINT !' ;
  328. * FINSI ;
  329. * List TYP3 ;
  330. * SI ((EGA TYP3 'FORCES') 'OU' (EGA TYP3 'DEPLACEM')) ;
  331. * SINON ;
  332. * MESG1 = CHAI
  333. * ' On attend un CHPOINT de FORCES ou DEPLACEMENTS !' ;
  334. * TRAC 'NCLK' CH2 MM1 'TITR' MESG1 ;
  335. * FINSI ;
  336. * FINSI ;
  337. *
  338. FIN BINST1 ;
  339.  
  340. SI (NON FLCHOI); QUITTER BPRIN1; FINSI;
  341.  
  342. FIN BPRIN1 ;
  343. QUITTER EXPLORER ;
  344.  
  345. FINSI ;
  346.  
  347.  
  348. *----------------------------------------------------------------------*
  349. * SOUS-CAS DES RESULTATS D'UNE TABLE PASAPAS *
  350. *----------------------------------------------------------------------*
  351.  
  352. * INITIALISATIONS DES NOMS DES COMPOSANTES DES EFFORTS
  353. leforces = TEXT 'FX FY FZ';
  354. SI (EGA (VALE DIME) 2);
  355. leforces = TEXT 'FX FY';
  356. FINSI;
  357. SI (EGA (VALE 'MODE') 'AXIS');
  358. leforces = TEXT 'FR FZ';
  359. FINSI;
  360. SI (EGA (VALE 'MODE') 'FOUR');
  361. leforces = TEXT 'FR UT FZ';
  362. FINSI;
  363.  
  364. * INITIALISATIONS ------------------------------------------------------
  365.  
  366. * ON COMMENCE PAR TRACER LE MAILLAGE lorsqu'on est en interactif
  367. si ICHGMOD1 ;
  368. MOD0 = MATAB . 'MODELES' . 0 ;
  369. sino ;
  370. MOD0 = MATAB . 'MODELE' ;
  371. fins ;
  372. lemail = EXTR MOD0 'MAIL' ;
  373. lemail22 = EXTR MOD0 'MAIL' 'FROTTEMENT';
  374. * enlever les elements de frottements car les multiplicateurs de lagrange de frottement ne suivent pas la
  375. * deformee
  376. lemail = lemail diff lemail22;
  377. * suite a la demande de CB
  378. SI (EXIS MATAB 'RIGIDITE_CONSTANTE');
  379. SI (EGA (TYPE MATAB . 'RIGIDITE_CONSTANTE') 'RIGIDITE');
  380. lemail = lemail et (EXTR MATAB . 'RIGIDITE_CONSTANTE' 'MAIL');
  381. FINSI;
  382. FINSI;
  383. SI FLCHOI; TRAC 'NCLK' 'CACH' lemail; FINSI;
  384.  
  385. * ON VERIFIE L'EXISTENCE DES CHAMPS -> lopt
  386. lopt = MOTS;
  387. SI (EXIS matab 'DEPLACEMENTS');
  388. tdpl = MATAB . 'DEPLACEMENTS';
  389. lopt = MOTS 'Depl';
  390. FINSI;
  391. SI ( EXIS matab 'CONTRAINTES');
  392. lopt = lopt ET (MOTS 'Cont');
  393. tctr = MATAB . 'CONTRAINTES';
  394. modmec = EXTR MOD0 'FORMULATION' 'MECANIQUE';
  395. matmec = REDU MATAB . WTABLE . 'CARACTERISTIQUES' modmec;
  396. FINSI;
  397. SI ( EXIS matab 'VARIABLES_INTERNES');
  398. tvar = MATAB . 'VARIABLES_INTERNES';
  399. lopt = lopt ET (MOTS 'Var_');
  400. FINSI;
  401. SI ( EXIS matab 'REACTIONS');
  402. trea = MATAB . 'REACTIONS';
  403. lopt = lopt ET (MOTS 'Reac');
  404. FINSI;
  405. SI ( EXIS matab 'TEMPERATURES');
  406. lopt = lopt ET (MOTS 'Temp');
  407. modthe = (EXTR MOD0 'FORMULATION' 'THERMIQUE') extr 'MATE' 'CONDUCTION' ;
  408. maithe = EXTR modthe 'MAILLAGE';
  409. tctem = MATAB . 'TEMPERATURES';
  410. FINSI;
  411. lopt = lopt ET (MOTS 'Quitter');
  412.  
  413. * ON INDEXE LA TABLE DES TEMPS (DES PAS DE CALCUL)
  414. ttem = MATAB . 'TEMPS';
  415. tindex = INDEX ttem;
  416. ltindex = DIME tindex - 1;
  417. ind=0;d1=d1;
  418.  
  419. * VALEUR PAR DEFAUT DES LOGIQUES
  420. evolu = FAUX;
  421. defor = FAUX;
  422. ampdef = TEXT ' ';
  423. contr = FAUX;
  424. react = FAUX;
  425. tempe = FAUX;
  426. evo_esp = FAUX;
  427. evo_tem = FAUX;
  428. depla = FAUX;
  429. var_int= FAUX;
  430. quit = FAUX;
  431.  
  432. * En cas de modele de contact, valeur amplitude deformee = 1 par defaut
  433. si (exis MOD0 form contact) ;
  434. ampdef = 1. ;
  435. fins ;
  436.  
  437. * BOUCLE PRINCIPALE ----------------------------------------------------
  438.  
  439. REPE bouc2;
  440.  
  441. SI (EXIS matab 'DEPLACEMENTS');
  442. SI FLCHOI;
  443. * Par defaut :
  444. si (&bouc2 ega 1) ;
  445. defor = VRAI ;
  446. contr = VRAI ;
  447. fins ;
  448. * Choix interactif :
  449. SI ( EXIS matab 'TEMPERATURES');
  450. defoP contP reacP evolP tempP = defor contr react evolu tempe ;
  451. defor contr react evolu tempe quit= CHOI 'cochez les options désirées'
  452. defor contr react evolu tempe quit;
  453. si (contP et tempe) ; contr = faux ; fins ;
  454. si (contr et tempP) ; contr = vrai ; fins ;
  455. si (react et tempe) ; react = faux ; tempe = faux ; iter bouc2 ; fins ;
  456. SINON ;
  457. defor contr react evolu quit= CHOI 'cochez les options désirées'
  458. defor contr react evolu quit;
  459. FINSI ;
  460. SINON;
  461. SI FLMOC1;
  462. * Choix par un listmots en argument
  463. defor = EXIS LMOC1 'DEPL';
  464. contr = EXIS LMOC1 'CONT';
  465. react = EXIS LMOC1 'REAC';
  466. evolu = EXIS LMOC1 'EVOL';
  467. var_int = EXIS LMOC1 'VAR';
  468. SINON;
  469. * Choix par defaut
  470. defor = VRAI;
  471. contr = VRAI;
  472. FINSI;
  473. SI FLOPT1;
  474. SI (EXIS TOPT1 'AMPL');
  475. ampdef = TOPT1 . 'AMPL';
  476. FINSI;
  477. FINSI;
  478. FINSI;
  479. SINON;
  480. SI ( EXIS matab 'TEMPERATURES');
  481. SI FLCHOI;
  482. tempe evolu quit = CHOI 'cochez les options désirées'
  483. tempe evolu quit;
  484. SINON;
  485. SI FLMOC1;
  486. tempe = EXIS LMOC1 'TEMP';
  487. SINON;
  488. tempe = VRAI;
  489. FINSI;
  490. FINSI;
  491. SINON ;
  492. MESS '* LA TABLE NE CONTIENT NI DEPLACEMENTS NI TEMPERATURES !';
  493. QUITTER EXPLORER;
  494. FINSI;
  495. FINSI;
  496.  
  497. * CHOIX = QUIT --> ON SORT
  498. SI quit ; QUITTER EXPLORER; FINSI;
  499. * 1 seule iteration si pas de choix interactif
  500. SI ((NON FLCHOI) ET (EGA &bouc2 2)); QUITTER EXPLORER; FINSI;
  501.  
  502. * AUCUN CHOIX = QUIT --> ON NE FAIT QUE REPROPOSER UN NOUVEAUX CHOIX
  503. SI ((NON defor) ET (NON contr) ET (NON react)
  504. ET ( NON evolu) ET (NON tempe));
  505. ITERER bouc2;
  506. FINSI;
  507.  
  508. * CHOIX = EVOLU
  509. SI evolu;
  510.  
  511. SI FLCHOI;
  512. * Choix interactif
  513. ret = MENU ' Faites votre choix' 'evo_espace' 'evo_temps' ;
  514. SI ( EGA ret 'Quitter' ) ; QUITTER EXPLORER; FINSI;
  515. SI ( EGA ret 'evo_espace') ;
  516. evo_esp=VRAI; evo_tem=FAUX;
  517. SINON;
  518. evo_esp=FAUX;
  519. SI ( EGA ret 'evo_temps' ); evo_tem=VRAI; FINSI;
  520. FINSI;
  521. SINON;
  522. * Choix par une table d'option en argument
  523. SI (NON FLOPT1);
  524. MESS '* Une table d options est necessaire en argument ';
  525. MESS '* dans le cas du trace d evolutions';
  526. ERRE 21;
  527. FINSI;
  528. SI (NON (EXIS TOPT1 'EVOL'));
  529. MESS '* Une table d options avec l indice EVOL est necessaire ';
  530. MESS '* en argument dans le cas du trace d evolutions';
  531. ERRE 21;
  532. FINSI;
  533. SI (NON (EXIS TOPT1 . 'EVOL' 'TYPE'));
  534. MESS '* Une table d options avec l indice EVOL . TYPE est ' ;
  535. MESS '* necessaire en argument dans le cas du trace d evolutions';
  536. ERRE 21;
  537. FINSI;
  538. evo_esp = EGA TOPT1 . 'EVOL' . 'TYPE' 'ESPA';
  539. evo_tem = EGA TOPT1 . 'EVOL' . 'TYPE' 'TEMP';
  540. * logiques deja affectes + haut
  541. depla = defor;
  542. lret = mots ;
  543. si depla; ret = mot 'Depl'; lret = lret et (mots ret); finsi;
  544. si contr; ret = mot 'Cont'; lret = lret et (mots ret); finsi;
  545. si react; ret = mot 'Reac'; lret = lret et (mots ret); finsi;
  546. si tempe; ret = mot 'Temp'; lret = lret et (mots ret); finsi;
  547. si var_int; ret = mot 'Var_'; lret = lret et (mots ret); finsi;
  548. SI ((dime lret) NEG 1);
  549. MESS '* Champ concerne par l evolution ambigu parmi :';
  550. LIST lret;
  551. MESS '* Veuillez fournir un LISTMOT plus explicite';
  552. ERRE 21;
  553. FINSI;
  554. FINSI;
  555.  
  556. * EVOLUTION SPATIALE
  557. SI evo_esp;
  558. * evolution spatiale sur quelle ligne? et de quelle grandeur?
  559. SI FLCHOI;
  560. * Choix interactif
  561. depla=FAUX; contr=FAUX; react=FAUX; tempe=FAUX; var_int=faux;
  562. List *maillage ligne ;
  563. mai = SAIS ' Nom de la ligne suivant laquelle tracer (voir liste): '
  564. 'MAILLAGE' ;
  565. ret = MENU 'Choisissez le champ concerne' lopt;
  566. * MESS ' retour de menu ' ret;
  567. SI ( EGA ret 'Quitter' ); QUITTER EXPLORER; FINSI;
  568. SI ( EGA ret 'Depl') ; depla=VRAI; FINSI;
  569. SI ( EGA ret 'Cont') ; contr=VRAI; FINSI;
  570. SI ( EGA ret 'Reac') ; react=VRAI; FINSI;
  571. SI ( EGA ret 'Temp') ; tempe=VRAI; FINSI;
  572. SI ( EGA ret 'Var_') ; var_int=VRAI;FINSI;
  573. SINON;
  574. * Choix par une table d'option en argument
  575. SI (EXIS TOPT1 . 'EVOL' 'LIGN');
  576. mai=TOPT1 . 'EVOL' . 'LIGN';
  577. SINON;
  578. MESS '* Une table d options avec l indice EVOL . LIGN est ';
  579. MESS '* necessaire en argument dans le cas du trace ';
  580. MESS '* d evolutions spatiales';
  581. ERRE 21;
  582. FINSI;
  583. FINSI;
  584. SI ( EGA ret 'Depl') ;
  585. ICHPO=VRAI; mot1 = MOT 'DEPLACEMENTS';
  586. FINSI;
  587. SI ( EGA ret 'Cont') ;
  588. ICHPO=FAUX; mot1 = MOT 'CONTRAINTES';
  589. FINSI;
  590. SI ( EGA ret 'Reac') ;
  591. ICHPO=VRAI; mot1 = MOT 'REACTIONS';
  592. FINSI;
  593. SI ( EGA ret 'Temp') ;
  594. ICHPO=VRAI; mot1 = MOT 'TEMPERATURES';
  595. FINSI;
  596. SI ( EGA ret 'Var_') ;
  597. ICHPO=FAUX; mot1 = MOT 'VARIABLES_INTERNES';
  598. FINSI;
  599. lcomp= EXTR (matab . mot1 . 1) 'COMP' ;
  600. SI FLCHOI;
  601. * Choix interactif
  602. compo = MENU 'Composantes?' lcomp;
  603. SINON;
  604. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  605. * Choix par une table d'option en argument
  606. compo = TOPT1 . 'EVOL' . 'COMP';
  607. SINON;
  608. * Choix par defaut
  609. compo = EXTR lcomp 1;
  610. FINSI;
  611. FINSI;
  612. cp= ttem . ind;
  613. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  614. * titre du trace
  615. SI FLCHOI;
  616. * Choix interactif
  617. tit= SAIS 'Donner un titre pour le dessin (entrer quotes) :'
  618. 'MOT';
  619. SINON;
  620. SI (EXIS TOPT1 . 'EVOL' 'TITR');
  621. * Choix par une table d'option en argument
  622. tit = TOPT1 . 'EVOL' . 'TITR';
  623. SINON;
  624. * Choix par defaut
  625. tit = CHAI 'evolution spatiale de' ' ' compo;
  626. FINSI;
  627. FINSI;
  628. tcp = ttem . ind;
  629. ch = CHAI tit ' pour le temps' ' ' tcp;
  630. TITRE ch;
  631. * trace initial
  632. SI ( depla 'OU' tempe 'OU' react );
  633. SI depla; mata=MATAB . 'DEPLACEMENTS';FINSI;
  634. SI tempe; mata=MATAB . 'TEMPERATURES';FINSI;
  635. SI react; mata=MATAB . 'REACTIONS' ;FINSI;
  636. tcp= ttem . ind;
  637.  
  638. * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante
  639. SI ('EXIS' mata . ind compo);
  640. ev = EVOL 'CHPO' mata . ind mai compo;
  641. SINON;
  642. ev ='VIDE' 'EVOLUTION';
  643. FINS;
  644. ichpo=vrai;
  645. * dess ev;
  646. SINON ;
  647. SI var_int; mata = MATAB . 'VARIABLES_INTERNES' ; FINSI;
  648. SI contr ; mata = MATAB . 'CONTRAINTES' ; FINSI;
  649. rdt = CHAN 'CHPO' mata . ind MOD0 ;
  650. ichpo=FAUX;
  651. ev = EVOL 'CHPO' rdt mai compo;
  652. FINSI;
  653. * boucle second niveau sur les pas de temps ......
  654. REPE bouc77 ;
  655. SI FLCHOI;
  656. * Choix interactif
  657. dess ev;
  658. cha= CHAI 'pas courant :' ind;
  659. ret= MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  660. SI (EGA ret 'options') ; QUITTER bouc77 ; FINSI;
  661. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  662. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  663. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  664. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  665. SI (EGA ret 'n°'); ind=SAIS 'Numéro du pas : ' 'ENTIER'; FINS;
  666. SI (ind > ltindex); ind = 0 ; FINSI;
  667. SI (ind < 0); ind = ltindex; FINSI;
  668. FINSI;
  669. tcp = ttem . ind;
  670. ch = CHAI tit ' pour le temps' ' ' tcp;
  671. TITRE ch;
  672. SI ichpo;
  673. * Pour l'indice 0 les reactions sont 'VIDES' ==> Test sur l'existence de la composante
  674. SI ('EXIS' mata . ind compo);
  675. ev = EVOL 'CHPO' mata . ind mai compo;
  676. SINON;
  677. ev ='VIDE' 'EVOLUTION';
  678. FINS;
  679. SINON;
  680. rdt= CHAN 'CHPO' mata . ind MOD0 ;
  681. ev = EVOL 'CHPO' rdt mai compo;
  682. FINSI;
  683. si (&bouc77 ega 1) ; dess ev ; fins ;
  684. SI (NON FLCHOI);
  685. * non interactif : on trace tous les pas de temps
  686. ind = ind + 1;
  687. SI (ind > ltindex); QUITTER bouc77; FINSI;
  688. FINSI;
  689. FIN bouc77;
  690. * fin de la boucle second niveau sur les pas de temps ......
  691. FINSI;
  692.  
  693. * EVOLUTION TEMPORELLE
  694. SI evo_tem;
  695. * evolution temporelle en quel point? et de quelle grandeur?
  696. SI FLCHOI;
  697. * Choix interactif
  698. depla=FAUX;contr=FAUX; react=FAUX; tempe=FAUX;var_int=faux;
  699. * ret = MENU 'Choisissez le champ concerne'
  700. * 'depla' 'contr' 'react' 'tempe' 'var_int';
  701. ret = MENU 'Choisissez le champ concerne' lopt;
  702. SI ( EGA ret 'Quitter' ); QUITTER explorer; FINSI;
  703. FINSI;
  704. SI ( EGA ret 'Depl') ; ichpo=VRAI;
  705. mot1 = MOT 'DEPLACEMENTS';FINSI;
  706. SI ( EGA ret 'Cont') ; ichpo=FAUX;
  707. mot1 = MOT 'CONTRAINTES'; FINSI;
  708. SI ( EGA ret 'Reac') ; ichpo=VRAI;
  709. mot1 = MOT 'REACTIONS';FINSI;
  710. SI ( EGA ret 'Temp') ; ichpo=VRAI;
  711. mot1 = MOT 'TEMPERATURES';FINSI;
  712. SI ( EGA ret 'Var_') ; ichpo=FAUX;
  713. mot1 = MOT 'VARIABLES_INTERNES';FINSI;
  714. lcomp= EXTR matab . mot1 . 1 'COMP';
  715. SI FLCHOI;
  716. * Choix interactif
  717. compo= MENU 'Composantes?' lcomp;
  718. SI ( EGA compo 'Quitter' ); QUITTER EXPLORER; FINSI;
  719. SI ichpo;
  720. List *point ;
  721. P1= SAIS 'Point concerne (voir liste)? : ' 'POINT';
  722. SINON;
  723. N1=SAIS 'Numero de la zone concernee : ' 'ENTIER';
  724. N2=SAIS 'Numero de l element concerne : ' 'ENTIER';
  725. N3=SAIS 'Numero du point de gauss concerne : ' 'ENTIER';
  726. FINSI;
  727. SINON;
  728. SI (EXIS TOPT1 . 'EVOL' 'COMP');
  729. * Choix par une table d'option en argument
  730. compo = TOPT1 . 'EVOL' . 'COMP';
  731. SINON;
  732. * Choix par defaut
  733. compo = EXTR lcomp 1;
  734. FINSI;
  735. SI ichpo;
  736. SI (EXIS TOPT1 . 'EVOL' 'POIN'); p1 = TOPT1 . 'EVOL' . 'POIN';
  737. SINON; MESS '* Le point concerne doit etre fourni a lindice'
  738. 'EVOL . POIN de la table d option';
  739. ERRE 21;
  740. FINSI;
  741. SINON;
  742. SI (EXIS TOPT1 . 'EVOL' 'ZONE'); n1 = TOPT1 . 'EVOL' . 'ZONE';
  743. SINON; n1 = 1;
  744. FINSI;
  745. SI (EXIS TOPT1 . 'EVOL' 'ELEM'); n2 = TOPT1 . 'EVOL' . 'ELEM';
  746. SINON; n2 = 1;
  747. FINSI;
  748. SI (EXIS TOPT1 . 'EVOL' 'PTG' ); n3 = TOPT1 . 'EVOL' . 'PTG' ;
  749. SINON; n3 = 1;
  750. FINSI;
  751. FINSI;
  752. FINSI;
  753. SI ichpo; ev1 = evol 'TEMP' matab mot1 compo p1;
  754. SINON; ev1 = evol 'TEMP' matab mot1 compo n1 n2 n3;
  755. FINSI;
  756. dess ev1;
  757. FINSI;
  758.  
  759. * CHOIX = AUTRE QUE EVOLU
  760. SINON;
  761.  
  762. * boucle second niveau sur les pas de temps ......
  763. REPE bouc1;
  764.  
  765. cha = CHAI 'pas courant :' ind;
  766. SI FLCHOI;
  767. * Choix interactif
  768. ret = MENU cha 'options' 'n°' 'retracer' 'precedent' 'suivant';
  769. SI (EGA ret 'options') ; QUITTER bouc1 ; FINSI;
  770. SI (EGA ret 'precedent') ; ind = ind - 1; FINSI;
  771. SI (EGA ret 'suivant') ; ind = ind + 1; FINSI;
  772. SI (EGA ret 'retracer') ; ind = ind ; FINSI;
  773. SI (EGA ret 'Quitter') ; QUITTER bouc2; FINSI;
  774. SI (EGA ret 'n°') ; ind = SAIS 'Numéro du pas : ' 'ENTIER'; FINSI;
  775. FINSI;
  776.  
  777. * indice du pas
  778. SI (ind > ltindex); ind = 0 ; FINSI;
  779. SI (ind < 0); ind = ltindex; FINSI;
  780.  
  781. * Si le modele evolue au cours du calcul :
  782. SI ICHGMOD1 ;
  783. SI ( EXIS matab 'CONTRAINTES');
  784. modmec = EXTR (MATAB . 'MODELES' . ind) 'FORMULATION' 'MECANIQUE';
  785. lemail = extr modmec 'MAIL' ;
  786. * enlever les contacts
  787. SI ICHGMAT1 ;
  788. mati1 = tire (MATAB . 'CHARGEMENT') 'MATE' (MATAB . 'TEMPS' . ind) ;
  789. SINON ;
  790. mati1 = matmec ;
  791. FINSI ;
  792. matmec = REDU mati1 modmec;
  793. FINSI ;
  794. SI tempe ;
  795. modthe = EXTR (MATAB . 'MODELES' . ind) 'FORMULATION' 'THERMIQUE';
  796. modthe = EXTR modthe 'MATERIAU' 'CONDUCTION' ;
  797. maithe = EXTR modthe 'MAIL' ;
  798. FINSI ;
  799. FINSI ;
  800.  
  801. * objet a tracer
  802. SI defor; dpl = DEFO lemail tdpl.ind ampdef;FINSI;
  803. SI contr;
  804. ctr = tctr.ind;
  805. moctr = mot 'contraintes';
  806. SINON;
  807. SI var_int;
  808. ctr = tvar.ind;
  809. moctr = mot 'variables internes';
  810. FINSI;
  811. FINSI;
  812. SI react; vec = VECT trea.ind leforces;FINSI;
  813. SI (defor ET react);dpv = DEFO lemail tdpl.ind ampdef vec;FINSI;
  814.  
  815. * tracer
  816. SI (defor ET (NON contr) ET (NON react) et (non tempe));
  817. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  818. TRAC lemail dpl;
  819. FINSI;
  820. SI ((NON defor) ET contr ET (NON react));
  821. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  822. TRAC ctr modmec matmec ;
  823. FINSI;
  824. SI (defor ET contr ET (NON react));
  825. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  826. TRAC ctr modmec matmec dpl;
  827. FINSI;
  828. SI ((NON defor) ET (NON contr) ET react);
  829. TITRE 'reactions au temps ' MATAB . 'TEMPS' . ind;
  830. TRAC lemail vec;
  831. FINSI;
  832. SI (defor ET (NON contr) ET react);
  833. TITRE 'deforme au temps ' MATAB . 'TEMPS' . ind;
  834. TRAC dpv lemail;
  835. FINSI;
  836. SI ((NON defor) ET contr ET react);
  837. TITRE moctr ' au temps ' MATAB . 'TEMPS' . ind;
  838. TRAC ctr modmec matmec lemail vec;
  839. FINSI;
  840. SI (defor ET contr ET react);
  841. TITRE 'contraintes au temps ' MATAB . 'TEMPS' . ind;
  842. TRAC ctr modmec matmec dpv ;
  843. FINSI;
  844. SI ((NON defor) et tempe) ;
  845. tctemp=tctem.ind;
  846. TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind;
  847. TRAC tctemp maithe ;
  848. FINSI;
  849. SI (defor et tempe) ;
  850. tctemp=tctem.ind;
  851. TITRE ' Temperatures au temps ' MATAB . 'TEMPS' . ind;
  852. TRAC tctemp dpl ;
  853. FINSI;
  854.  
  855. SI (NON FLCHOI);
  856. ind = ind + 1;
  857. SI (ind > ltindex); QUITTER bouc1; FINSI;
  858. FINSI;
  859.  
  860. FIN bouc1;
  861. * boucle second niveau sur les pas de temps ......
  862.  
  863. FINSI;
  864. * FIN DISTINCTION CHOIX = EVOLU / AUTRE QUE EVOLU
  865.  
  866. FIN bouc2;
  867. * FIN BOUCLE PRINCIPALE ------------------------------------------------
  868.  
  869.  
  870. *______________________________________________________________________*
  871. *----------------------------------------------------------------------*
  872. * Option ANIM *
  873. *______________________________________________________________________*
  874. *----------------------------------------------------------------------*
  875. 'SINON' ;
  876.  
  877. * Lecture arguments option ANIM :
  878. * NB : on a deju lu la table d'option (si fournie) :
  879. 'ARGU' MOT2*'MOT' ;
  880. 'ARGU' MOT3/'MOT' ;
  881. ARGU TOPT1/'TABLE' ;
  882.  
  883. * Indicateurs arguements optionnels :
  884. FLCOMP1 = 'EXIS' MOT3 ;
  885. FLOPT1 = EXIS TOPT1;
  886.  
  887. * Notation locale :
  888. tsim1 = MATAB ;
  889.  
  890. *---------------------- Verification des entrees ----------------------*
  891.  
  892. * Verification table PASAPAS :
  893. si (exis tsim1 'SOUSTYPE') ;
  894. si (neg tsim1.soustype 'PASAPAS') ;
  895. erre '***** La table n''est pas une table de resultats de la procedure PASAPAS' ;
  896. fins ;
  897. sino ;
  898. erre '***** La table n''est pas une table de resultats de la procedure PASAPAS' ;
  899. fins ;
  900.  
  901. * Verification MOT2 :
  902. si (non (exis tsim1 mot2)) ;
  903. erre (chai '*****' ' ' mot2 ' : option indisponible') ;
  904. fins ;
  905.  
  906. * Table des resultats a afficher :
  907. tres1 = tsim1 . mot2 ;
  908.  
  909. * Verification mot3 :
  910. si FLCOMP1 ;
  911. si (non (exis tres1.0 mot3)) ;
  912. erre (chai '*****' ' ' mot3 ' n''est pas un nom composante de' ' ' mot2) ;
  913. fins ;
  914. fins ;
  915.  
  916. *------------------------- Table des options --------------------------*
  917.  
  918. * Table d'options :
  919. ltca1 = prog tabl (tsim1.temps) ;
  920. si FLOPT1 ;
  921.  
  922. ***** Temps affiches :
  923. si (exis topt1 'TEMPS_AFFICHES') ;
  924. ltps1 = topt1 . temps_affiCHES ;
  925. sino ;
  926. ltps1 = prog tabl (tsim1.temps) ;
  927. fins ;
  928.  
  929. ***** Echelle isovaleurs :
  930. si (exis topt1 'ECHELLE_ISOVALEURS') ;
  931. liso1 = topt1 . echelle_isovaleurs ;
  932. sino ;
  933. liso1 = text ' ' ;
  934. fins ;
  935.  
  936. ***** Oeil
  937. ioeil1 = exis topt1 'OEIL' ;
  938. cgoeil1 = faux ;
  939. si ioeil1 ;
  940. * oeil0 = vale oeil ;
  941. oeil1 = topt1 . 'OEIL' ;
  942. si (ega (type oeil1) 'POINT') ;
  943. opti oeil oeil1 ;
  944. sino ;
  945. cgoeil1 = ega (type oeil1) 'CHARGEMENT' 8 ;
  946. si (non cgoeil1) ;
  947. erre '***** Option OEIL : on attent un POINT ou un CHARGEMENT' ;
  948. fins ;
  949. fins ;
  950. fins ;
  951.  
  952. ***** No Click
  953. si (exis topt1 'NCLK') ;
  954. si (topt1 . 'NCLK') ;
  955. mclk1 = text 'NCLK' ;
  956. sino ;
  957. mclk1 = text ' ' ;
  958. fins ;
  959. sino ;
  960. mclk1 = text ' ' ;
  961. fins ;
  962.  
  963. ***** Boite :
  964. ibox1 = exis topt1 'BOITE' ;
  965. cgbox1 = faux ;
  966. si ibox1 ;
  967. boit1 = topt1 . 'BOITE' ;
  968. si (ega (type boit1) 'MAILLAGE') ;
  969. mbox1 = boit1 ;
  970. sino ;
  971. cgbox1 = ega (type boit1) 'CHARGEMENT' 8 ;
  972. si (non cgbox1) ;
  973. erre '***** Option BOITE : on attent un MAILLAGE ou un CHARGEMENT' ;
  974. fins ;
  975. fins ;
  976. * mess '***** Option BOITE' ;
  977. fins ;
  978.  
  979. ***** Avance rapide :
  980. si (exis topt1 'AVANCE_RAPIDE') ;
  981. iacc1 = topt1 . 'AVANCE_RAPIDE' ;
  982. sino ;
  983. iacc1 = faux ;
  984. fins ;
  985. si iacc1 ;
  986. * Critere avance rapide :
  987. si (exis topt1 'CRITERE_AR') ;
  988. evcrit1 = topt1 . 'CRITERE_AR' ;
  989. si (neg (type evcrit1) 'EVOLUTIO') ;
  990. erre '***** CRITERE_AR : on attend un objet de type EVOLUTIO' ;
  991. fins ;
  992. sino ;
  993. erre '***** Il manque la donnee du critere d''avance rapide' ;
  994. fins ;
  995. cmax1 = maxi abs (extr evcrit1 ordo) ;
  996. ctol1 = 1.e-10 * cmax1 ;
  997. * Saut avance :
  998. si (exis topt1 'AMPLITUDE_AR') ;
  999. nsaut1 = topt1 . 'AMPLITUDE_AR' ;
  1000. si (neg (type nsaut1) 'ENTIER') ;
  1001. erre '***** AMPLITUDE_AR : on attend un ENTIER' ;
  1002. fins ;
  1003. sino ;
  1004. nsaut1 = 10 ;
  1005. fins ;
  1006. * mess (chai '***** Option AVANCE_RAPIDE : SAUT =' nsaut1) ;
  1007. fins ;
  1008.  
  1009. ***** Deformee :
  1010. idefo1 = exis topt1 'DEFORMEE' ;
  1011. si idefo1 ;
  1012. idefo1 = idefo1 et (topt1 . 'DEFORMEE') ;
  1013. fins ;
  1014. si idefo1 ;
  1015. si ((non (exis tsim1 'DEPLACEMENTS')) et (non (exis topt1 'DEPLACEMENTS'))) ;
  1016. erre '***** Il manque la donnee des deplacements pour la deformee' ;
  1017. fins ;
  1018. si (exis topt1 'AMPLITUDE_DEFORMEE') ;
  1019. kdefo1 = topt1 . 'AMPLITUDE_DEFORMEE' ;
  1020. sino ;
  1021. kdefo1 = 1. ;
  1022. fins ;
  1023. conf0 = form ;
  1024. fins ;
  1025.  
  1026. ***** MPA :
  1027. iMPa1 = exis topt1 'MPA' ;
  1028. si iMPa1 ;
  1029. iMPa1 = iMPa1 et (topt1 . 'MPA') et (ega mot2 'CONTRAINTES') ;
  1030. fins ;
  1031.  
  1032. ***** Celcius :
  1033. idegC1 = exis topt1 'CELSIUS' ;
  1034. si idegC1 ;
  1035. idegC1 = idegC1 et (topt1 . 'CELSIUS') et (ega mot2 'TEMPERATURES') ;
  1036. fins ;
  1037.  
  1038. sino ;
  1039. ltps1 = ltca1 ;
  1040. liso1 = text ' ' ;
  1041. ioeil1 = faux ;
  1042. cgoeil1 = faux ;
  1043. mclk1 = text ' ' ;
  1044. ibox1 = faux ;
  1045. cgbox1 = faux ;
  1046. iacc1 = faux ;
  1047. idefo1 = faux ;
  1048. iMPa1 = faux ;
  1049. idegc1 = faux ;
  1050.  
  1051. fins ;
  1052.  
  1053. *-------------------------- Initialisations ---------------------------*
  1054.  
  1055. * Indicateur si TEMPERATURES :
  1056. itemper1 = ega mot2 'TEMPERATURES' ;
  1057.  
  1058. * Indicateur resultat CHPOINT :
  1059. igeo1 = ega (type tres1.0) 'CHPOINT' ;
  1060.  
  1061. * Modele evolutif ?
  1062. imodes1 = exis tsim1 modeles ;
  1063. si (non imodes1) ;
  1064. modi1 = tsim1.modele ;
  1065. si igeo1 ;
  1066. si itemper1 ;
  1067. geoi1 = (extr modi1 mate conduction) extr maillage ;
  1068. sino ;
  1069. geoi1 = extr modi1 maillage ;
  1070. fins ;
  1071. modi1 = geoi1 ;
  1072. fins ;
  1073. fins ;
  1074.  
  1075. *----------------------------- Affichages ------------------------------*
  1076.  
  1077. * Boucle d'affichages ;
  1078. nb1 = dime ltps1 ;
  1079. tpsmin1 = mini ltca1 ;
  1080. tpsmax1 = maxi ltca1 ;
  1081. ic1 = 1 ;
  1082. repe b1 nb1 ;
  1083. nacc1 = 1 ;
  1084. tpsi1 = ltps1 extr ic1 ;
  1085. si (tpsi1 < tpsmin1) ; iter b1 ; fins ;
  1086. si (tpsi1 > tpsmax1) ; quit b1 ; fins ;
  1087.  
  1088. * Gestion avance rapide :
  1089. si iacc1 ;
  1090. criti1 = ipol evcrit1 tpsi1 ;
  1091. si ((abs criti1) &lt;EG ctol1) ;
  1092. repe bs1 (nsaut1 - 1) ;
  1093. ic1 = ic1 + 1 ;
  1094. nacc1 = nacc1 + 1 ;
  1095. si (ic1 > nb1) ; quit b1 ; fins ;
  1096. tpsi1 = ltps1 extr ic1 ;
  1097. criti1 = ipol evcrit1 tpsi1 ;
  1098. si ((abs criti1) > ctol1) ; quit bs1 ; fins ;
  1099. fin bs1 ;
  1100. fins ;
  1101. fins ;
  1102.  
  1103. * On peche le resultat :
  1104. resi1 = peche tsim1 mot2 tpsi1 ipol ;
  1105. si FLCOMP1 ;
  1106. resi1 = resi1 exco mot3 mot3 ;
  1107. fins ;
  1108. si iMPa1 ;
  1109. resi1 = 1.e-6 * resi1 ;
  1110. fins ;
  1111. si idegC1 ;
  1112. resi1 = resi1 - 273.15 ;
  1113. fins ;
  1114. si imodes1 ;
  1115. modi1 = peche tsim1 modeles tpsi1 ipol ;
  1116. si igeo1 ;
  1117. si itemper1 ;
  1118. geoi1 = (extr modi1 mate conduction) extr maillage ;
  1119. sino ;
  1120. geoi1 = extr modi1 maillage ;
  1121. fins ;
  1122. modi1 = geoi1 ;
  1123. fins ;
  1124. fins ;
  1125. si cgoeil1 ;
  1126. oeili1 = tire oeil1 oeil tpsi1 ;
  1127. opti oeil oeili1 ;
  1128. fins ;
  1129. si idefo1 ;
  1130. si (exis tsim1 deplacements) ;
  1131. depi1 = peche tsim1 deplacements tpsi1 ipol ;
  1132. sino ;
  1133. depi1 = tire (topt1 . deplacements) depl tpsi1 ;
  1134. fins ;
  1135. form (kdefo1 * depi1) ;
  1136. fins ;
  1137.  
  1138. * Affichage (titre + appel a TRAC) :
  1139. si idefo1 ;
  1140. moti1 = chai mot2 ' au temps : ' tpsi1 ' (deformee x' (enti kdefo1) ')' ;
  1141. sino ;
  1142. moti1 = chai mot2 ' au temps : ' tpsi1 ;
  1143. fins ;
  1144. si (iacc1 et (nacc1 > 1)) ;
  1145. moti1 = chai moti1 ' (>>> FFWD x' nacc1 ')' ;
  1146. sino ;
  1147. moti1 = chai moti1 ;
  1148. fins ;
  1149. titr moti1 ;
  1150. si ibox1 ;
  1151. si cgbox1 ;
  1152. mbox1 = tire boit1 boit tpsi1 ;
  1153. fins ;
  1154. trac mclk1 liso1 resi1 modi1 boit mbox1 ;
  1155. sino ;
  1156. trac mclk1 liso1 resi1 modi1 ;
  1157. fins ;
  1158. si idefo1 ;
  1159. form conf0 ;
  1160. fins ;
  1161.  
  1162.  
  1163. ic1 = ic1 + 1 ;
  1164. si (ic1 > nb1) ; quit b1 ; fins ;
  1165. fin b1 ;
  1166.  
  1167. * Si option OEIL, on remet l'oeil initial :
  1168. si ioeil1 ;
  1169. * opti oeil oeil0 ;
  1170. fins ;
  1171.  
  1172. *-------------------------- Fin option ANIM ---------------------------*
  1173. 'FINSI' ;
  1174.  
  1175. *----------------------------------------------------------------------*
  1176. * FIN EXPLORER *
  1177. *----------------------------------------------------------------------*
  1178. FINPROC ;
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  

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