Télécharger waam.procedur

Retour à la liste

Numérotation des lignes :

  1. * WAAM PROCEDUR SP204843 25/03/12 21:15:08 12193
  2. DEBP WAAM TAB1*'TABLE' ;
  3.  
  4. *-------------------------- Initialisations ---------------------------*
  5.  
  6. * Lecture des options :
  7. argu MOT1*'MOT' ;
  8.  
  9. * icas1 = 1 / 2 pour MAIL / VISU
  10. * Si 0 in fine : erreur.
  11. icas1 = 0 ;
  12.  
  13. *----------------------------------------------------------------------*
  14. * Option MAIL
  15. *----------------------------------------------------------------------*
  16.  
  17. si (ega mot1 'MAIL') ;
  18. icas1 = 1 ;
  19.  
  20. *----------------- Lecture des arguments de l'option ------------------*
  21.  
  22. imot1 = faux ; imot2 = faux ; imot3 = faux ; imot4 = faux ;
  23. repe b1 4 ;
  24. argu moti1/'MOT' ;
  25. si (non (exis moti1)) ; quit b1 ; fins ;
  26.  
  27. * Arguments option MAIL :
  28. si (ega moti1 'PAS') ;
  29. imot1 = vrai ;
  30. argu lpas1/'LISTREEL' ;
  31. si (exis lpas1) ;
  32. npas1 = dime lpas1 ;
  33. si (npas1 ega 0) ;
  34. erre '***** ERREUR : le LISTREEL fourni est de dimension nulle.' ;
  35. quit waam ;
  36. fins ;
  37. pas1 = extr lpas1 1 ;
  38. sino ;
  39. argu pas1*'FLOTTANT' ;
  40. lpas1 = prog pas1 ;
  41. npas1 = 1 ;
  42. fins ;
  43. fins ;
  44. si (ega moti1 'LARG') ;
  45. imot2 = vrai ;
  46. argu larg1*'FLOTTANT' ;
  47. fins ;
  48. si (ega moti1 'DENS') ;
  49. imot3 = vrai ;
  50. argu dens1*'FLOTTANT' ;
  51. fins ;
  52.  
  53. * Arguments option TEMP :
  54. si (ega moti1 'TEMP') ;
  55. imot4 = vrai ;
  56. argu dtca1/'FLOTTANT' ;
  57. si (non (exis dtca1)) ;
  58. dtca1 = -1. ;
  59. fins ;
  60. * argu dtca2/'FLOTTANT' ;
  61. * si (non (exis dtca2)) ;
  62. * dtca2 = -1. ;
  63. * fins ;
  64. fins ;
  65. fin b1 ;
  66. si (non imot1) ;
  67. erre '***** ERREUR : il manque la donnee du PAS de discretisation du depot' ;
  68. quit waam ;
  69. fins ;
  70. si (non imot2) ;
  71. si (exis tab1 'LARGEUR_DE_PASSE') ;
  72. larg1 = tab1.largeur_de_passe ;
  73. sino ;
  74. erre '***** ERREUR : il manque la donnee de la LARGeur du depot' ;
  75. quit waam ;
  76. fins ;
  77. fins ;
  78. si (non imot3) ;
  79. argu N1/'ENTIER' ;
  80. si (exis N1) ;
  81. N1 = maxi (lect N1 1) ;
  82. sino ;
  83. N1 = 1 ;
  84. fins ;
  85. dens1 = pas1 / (flot N1) ;
  86. fins ;
  87.  
  88. *------------------- MAILLAGE des passes de soudage -------------------*
  89.  
  90. si (non (exis tab1 passes)) ;
  91. erre '***** ERREUR : la table de SOUDAGE en entree n"a pas d"indice PASSES' ;
  92. quit waam ;
  93. fins ;
  94.  
  95. * Definition d'une tolerance geometrique :
  96. tol1 = 1.e-4 * dens1 ;
  97.  
  98. * Maillage d'une section de cordon :
  99. lsi1 = (0 0 0) droi (0 larg1 0) dini dens1 dfin dens1 ;
  100.  
  101. * Initialisattion sorties (MAIL) :
  102. tab2 = table ;
  103. ttps1 = table ;
  104. tmai1 = table ;
  105. indi1 = 0 ;
  106.  
  107. * On parcourt la trajectoire :
  108. mtraj1 = tab1.trajectoire ;
  109. mail2 = vide maillage ;
  110. idebui1 = vrai ;
  111. ibouci1 = faux ;
  112.  
  113. * Boucle sur elements de la trajectoire :
  114. nb1 = nbel mtraj1 ;
  115. repe b1 nb1 ;
  116.  
  117. * Lecture ieme element de la trajectoire :
  118. eli1 = mtraj1 elem &b1 ;
  119. Pi1 = eli1 poin 1 ;
  120. Pi2 = eli1 poin 2 ;
  121. vai1 = Pi2 moin Pi1 ;
  122. vni1 = vai1 / (norm vai1) ;
  123. mcouli1 = (eli1 elem coul) extr 1 ;
  124. imaili1 = ega mcouli1 'ROUG' ;
  125. idepli1 = ega mcouli1 'VERT' ;
  126. *
  127. * Segment VERT : deplacement
  128. si idepli1 ;
  129. idebui1 = vrai ;
  130. ibouci1 = faux ;
  131. iter b1 ;
  132. fins ;
  133. *
  134. * Segment ROUGE : maillage
  135. si imaili1 ;
  136.  
  137. * Si debut nouvelle passe :
  138. si idebui1 ;
  139.  
  140. * Identification de la passe :
  141. npassi1 = 0 ;
  142. repe bp1 (dime tab1.passes) ;
  143. mailpss1 = (tab1.passes.&bp1).maillage ;
  144. pps1 pps2 = (mailpss1 poin 1) (mailpss1 poin 2) ;
  145. si ((Pi1 ega pps1) et (Pi2 ega pps2)) ;
  146. tpassi1 = tab1.passes.&bp1 ;
  147. npassi1 = &bp1 ;
  148. mess '***** WAAM : maillage de la passe :' npassi1 ;
  149. quit bp1 ;
  150. fins ;
  151. fin bp1 ;
  152. si (npassi1 ega 0) ;
  153. erre '***** WAAM : passe non identifiee' ;
  154. quit waam ;
  155. fins ;
  156.  
  157. * Hauteur de cordon :
  158. debi1 = tpassi1 . debit ;
  159. vite1 = tpassi1 . vitesse ;
  160. haut1 = debi1 / vite1 / larg1 ;
  161. mess (chai '***** WAAM : hauteur de la passe :' npassi1 ' =' haut1) ;
  162.  
  163. * Maillage :
  164. * si1 : maillage section courante :
  165. * vnsi1 : normale a la section
  166. si1 = lsi1 tran (0 0 haut1) dini dens1 dfin dens1 ;
  167. vnsi1 = 1 0 0 ;
  168.  
  169. * Positionnement extremite initiale (Pi1 au centre de l'arete superieure) :
  170. Pmsup1 = 0 (0.5*larg1) haut1 ;
  171. si1 = si1 plus (Pi1 moin Pmsup1) ;
  172.  
  173. * Initialisation section extremite finale :
  174. si2 = si1 plus vai1 ;
  175. vnsi2 = vnsi1 ;
  176. angl2 = 0. ;
  177. *
  178. * Orientation sections de maillage :
  179. * Par defaut, selon vni1 :
  180. vnsmai1 = vni1 ;
  181. vnsmai2 = vnsmai1 ;
  182.  
  183. * Detection suite segments rouges et boucle :
  184. si (&b1 neg nb1) ;
  185. elip1 = mtraj1 elem (&b1 + 1) ;
  186. mcoulip1 = (elip1 elem coul) extr 1 ;
  187. isuiti1 = ega mcoulip1 'ROUG' ;
  188. si isuiti1 ;
  189. * idebui1 = faux ;
  190. vai2 = (elip1 poin 2) moin (elip1 poin 1) ;
  191. vni2 = vai2 / (norm vai2) ;
  192. vasmai2 = vni1 plus vni2 ;
  193. vnsmai2 = vasmai2 / (norm vasmai2) ;
  194. elfini1 = elip1 ;
  195. pfini1 = elip1 poin 2 ;
  196. nb2 = nb1 - (&b1 + 1) ;
  197. i2 = &b1 + 2 ;
  198. * Rq : si nb2 = 0, le bloc n'est pas execute
  199. repe b2 nb2 ;
  200. eli2 = mtraj1 elem i2 ;
  201. mcoul2 = (eli2 elem coul) extr 1 ;
  202. si (neg mcoul2 'ROUG') ; quit b2 ; fins ;
  203. pfini1 = eli2 poin 2 ;
  204. elfini1 = eli2 ;
  205. vafini1 = pfini1 moin (eli2 poin 1) ;
  206. vnfini1 = vafini1 / (norm vafini1) ;
  207. i2 = i2 + 1 ;
  208. fin b2 ;
  209. ibouci1 = (norm (pfini1 moin pi1)) < tol1 ;
  210. si ibouci1 ;
  211. mess '***** WAAM : boucle fermee detectee' ;
  212. * On definit la normale a la section de maillage (SMA) :
  213. vasmai1 = vni1 plus vnfini1 ;
  214. vnsmai1 = vasmai1 / (norm vasmai1) ;
  215. fins ;
  216. fins ;
  217. fins ;
  218.  
  219. * Orientation de si1 selon vnsmai1 :
  220. *list vnsmai1 ; list vnsi1 ;
  221. *trac (0 -0 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) ;
  222. vnnz1 = pvec vnsi1 vnsmai1 ;
  223. lvnnz1 = norm vnnz1 ;
  224. * Si sinus non nul a tol1 pres, on oriente la section :
  225. si (lvnnz1 neg 0. (tol1 / dens1)) ;
  226. si (lvnnz1 ega 1. (vale prec)) ; lvnnz1 = 1. ; fins ;
  227. angl1 = asin lvnnz1 ;
  228. *list vnsi1 ; list vnsmai1 ; list angl1 ;
  229. si ((psca vnsmai1 vnsi1) < 0.) ;
  230. angl1 = 180. - angl1 ;
  231. *mess ' on prend (180.-angl1)' ;
  232. fins ;
  233. si1 = si1 tour angl1 pi1 (pi1 plus vnnz1) ;
  234. vnsi1 = vnsmai1 ;
  235. si2 = si1 plus vai1 ;
  236. vnsi2 = vnsi1 ;
  237. angl2 = 0. ;
  238. sino ;
  239. si ((psca vnsmai1 vnsi1) < 0.) ;
  240. vnsi1 = vnsmai1 ;
  241. si2 = si1 plus vai1 ;
  242. vnsi2 = vnsi1 ;
  243. angl2 = 0. ;
  244. fins ;
  245. fins ;
  246. *list vnsi1 ; list angl1 ;
  247. titr 'Debut de passe, apres orientation de si1' ;
  248. *trac (0 0 100) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2) ;
  249.  
  250. * Si boucle, on garde la section de maillage du debut :
  251. si ibouci1 ;
  252. sfini1 = si1 ;
  253. vnfini1 = vnsmai1 ;
  254. fins ;
  255.  
  256. sino ;
  257.  
  258. * On a deja si1 correctement orientee.
  259. * On doit orienter si2.
  260. * Par defaut, orientation de si1 :
  261. si2 = si1 plus vai1 ;
  262. vnsi2 = vnsi1 ;
  263. angl2 = 0. ;
  264. vnsmai2 = vnsi2 ;
  265.  
  266. * Si fin d'une boucle, orientation si2 connue :
  267. si (ibouci1 et (pi2 ega pfini1)) ;
  268. vnsmai2 = vnfini1 ;
  269. sino ;
  270. si (&b1 neg nb1) ;
  271. elip1 = mtraj1 elem (&b1 + 1) ;
  272. mcoulip1 = (elip1 elem coul) extr 1 ;
  273. isuiti1 = ega mcoulip1 'ROUG' ;
  274. si isuiti1 ;
  275. vai2 = (elip1 poin 2) moin (elip1 poin 1) ;
  276. vni2 = vai2 / (norm vai2) ;
  277. vasmai2 = vni1 plus vni2 ;
  278. vnsmai2 = vasmai2 / (norm vasmai2) ;
  279. fins ;
  280. fins ;
  281. fins ;
  282.  
  283. * Fin "Si idebui1 / sinon" :
  284. fins ;
  285. *
  286. * Orientation de si2 selon vnsmai2 :
  287. *list vnsmai2 ; list vnsi2 ;
  288. *trac (0 0 100) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2 et (pi1 droi 1 (pi1 plus (0.01*vnsi1))) et (pi2 droi 1 (pi2 plus (0.01*vnsi2)))) titr 'Avant orientation si2' ;
  289. vnnz1 = pvec vnsi2 vnsmai2 ;
  290. lvnnz1 = norm vnnz1 ;
  291. * Si sinus non nul a tol1 pres, on oriente la section :
  292. si (lvnnz1 neg 0. (tol1 / dens1)) ;
  293. si (lvnnz1 ega 1. (vale prec)) ; lvnnz1 = 1. ; fins ;
  294. angl2 = asin lvnnz1 ;
  295. si ((psca vnsi2 vnsmai2) < 0.) ;
  296. *mess ' on prend (180.-angl2)' ; saut 1 lign ;
  297. angl2 = 180. - angl2 ;
  298. fins ;
  299. si2 = si2 tour angl2 pi2 (pi2 plus vnnz1) ;
  300. vnsi2 = vnsi2 tour angl2 (0 0 0) vnnz1 ;
  301. sino ;
  302. * Pas sur que ça serve a quelque chose...
  303. si ((psca vnsi2 vnsmai2) < 0.) ;
  304. vnsi2 = vnsmai2 ;
  305. angl2 = 180. ;
  306. fins ;
  307. fins ;
  308. titr 'En cours de passe, apres orientation de si2' ;
  309. *trac (0 0 100) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et pi1 et pi2 et (pi1 droi 1 (pi1 plus (0.01*vnsi1))) et (pi2 droi 1 (pi2 plus (0.01*vnsi2)))) ;
  310. *si (ibouci1 et (pi2 ega pfini1)) ;
  311. *trac (5 -2 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et (si22 coul oran) et pi1 et pi2) ;
  312. *fins ;
  313.  
  314. *---- Maillage du segment :
  315.  
  316. llpas1 = somm (lpas1 enle npas1) ;
  317. leli1 = mesu eli1 ;
  318. si (leli1 &lt;EG llpas1) ;
  319. erre '***** ERREUR : somme pas de discretisation > long. ' &b1 'e passe' ;
  320. quit waam ;
  321. fins ;
  322.  
  323. * Boucle sur les pas de discretisation :
  324.  
  325. * pasi1 : pas de discretisation courant
  326. * nei1 : nb maillages pour ce pas de discretisation du segment
  327. * pami1 : pas de maillage courant
  328. * nei2 : nbel crees par pas de maillage
  329.  
  330. si idebui1 ;
  331. tpsi2 = tpassi1.instants extr 1 ;
  332. fins ;
  333. idebui1 = non isuiti1 ;
  334. repe bp1 npas1 ;
  335. pasi1 = extr lpas1 &bp1 ;
  336. si (&bp1 neg npas1) ;
  337. nei1 = 1 ;
  338. pami1 = pasi1 ;
  339. sino ;
  340. llmi1 = leli1 - llpas1 ;
  341. nei1 = llmi1 / pasi1 + 0.5 ;
  342. nei1 = maxi (lect (enti nei1) 1) ;
  343. *mess 'nei1=' nei1 ;
  344. pami1 = llmi1 / (flot nei1) ;
  345. fins ;
  346.  
  347. vtrani1 = pami1 * vni1 ;
  348. ltrani1 = norm vtrani1 ;
  349. nei2 = enti (ltrani1 / dens1 + 0.5) ;
  350. nei2 = maxi (lect (enti nei2) 1) ;
  351. *mess 'nei2=' nei2 ;
  352. itouri1 = (abs angl2) > 0. ;
  353. *list itouri1 ;
  354. *list angl2 ;
  355. angli2 = angl2 / (flot nei1) ;
  356. vnsi22 = vnsi1 ;
  357. si22 = si1 ;
  358. dti2 = ltrani1 / vite1 ;
  359. repe b2 nei1 ;
  360. pi22 = pi1 plus vtrani1 ;
  361. si itouri1 ;
  362. vnsi22 = vnsi22 tour angli2 (0 0 0) vnnz1 ;
  363. pi33 = pi22 plus vnnz1 ;
  364. pi44 = pi22 plus (pvec vnsi22 vnnz1) ;
  365. si22 = si22 proj dire vtrani1 plan pi22 pi33 pi44 ;
  366. sino ;
  367. si22 = si1 plus vtrani1 ;
  368. fins ;
  369. maili2 = si1 volu si22 nei2 ;
  370. si1 = si22 ;
  371. pi1 = pi22 ;
  372. maili2 = maili2 coul (indi1+1) ;
  373. mail2 = mail2 et maili2 ;
  374. tmai1 . indi1 = mail2 ;
  375. ttps1 . indi1 = tpsi2 ;
  376. tpsi2 = tpsi2 + dti2 ;
  377. indi1 = indi1 + 1 ;
  378. fin b2 ;
  379.  
  380. fin bp1 ;
  381.  
  382. *trac (5 -2 3) (mtraj1 et mail2 et (si1 coul rose) et (si2 coul turq) et (si22 coul oran) et pi1 et pi2) ;
  383.  
  384. vnsi1 = vnsi2 ;
  385. vnsmai1 = vnsmai2 ;
  386.  
  387. * Fin si imail1 (segment rouge) ;
  388. sino ;
  389. erre '***** ERREUR : pb definition trajectoire, couleur segment inconnue' ;
  390. quit waam ;
  391. fins ;
  392.  
  393. * Fin boucle segments trajectoire
  394. fin b1 ;
  395. * elim mail2 tol1 ;
  396.  
  397. * Verification list des temps de tttps1 bien ordonnee :
  398. ltps1 = prog table ttps1 ;
  399. ltps2 = ordo ltps1 ;
  400. si (((ltps2 - ltps1) maxi abs) > (1.e-3*dti2)) ;
  401. erre '***** la liste des TEMPS de l''evolution du maillage est mal ordonnee' ;
  402. fins ;
  403. * Enregistrement des sorties :
  404. tab2.maillage = mail2 ;
  405. tab2.evolution_maillage = table ;
  406. tab2.evolution_maillage.temps = ttps1 ;
  407. tab2.evolution_maillage.maillage = tmai1 ;
  408.  
  409. *-------------------------- Sous-option TEMP --------------------------*
  410.  
  411. si imot4 ;
  412.  
  413. * Valeurs par defaut dtca1 :
  414. si (dtca1 < 0.) ;
  415. dtca1 = pas1 / (tab1.vitesse_de_soudage) / pi / 3. ;
  416. fins ;
  417. * si (dtca2 < 0.) ;
  418. * dtca2 = dtca1 ;
  419. * fins ;
  420.  
  421. * Redecoupage de la liste des temps de l'evolution de la puissance thermique :
  422. evqt1 = tab1.evolution_puissance ;
  423. ltqt1 = extr evqt1 absc ;
  424. lqqt1 = extr evqt1 ordo ;
  425. tol2 = 1.e-6 * (maxi lqqt1) ;
  426. tol3 = 0.001 * tab1.temps_de_coupure ;
  427.  
  428. * Gestion des evenements :
  429. ieve1 = exis tab1 evenements ;
  430. Si ieve1 ;
  431. lteve1 = prog ;
  432. lieve1 = lect ;
  433. repe beve1 (dime tab1.evenements) ;
  434. ie1 = &beve1 ;
  435. lteve1 = lteve1 et tab1.evenements.ie1.temps ;
  436. lieve1 = lieve1 et (lect (dime (tab1.evenements.ie1.temps)) * ie1) ;
  437. fin beve1 ;
  438. lpeve1 = posi ltqt1 dans lteve1 tol3 ;
  439. *list lteve1 ;
  440. *list lieve1 ;
  441. *list lpeve1 ;
  442. sino ;
  443. lpeve1 = lect (dime ltqt1) * 0 ;
  444. fins ;
  445.  
  446. * Sous-decoupage de l'historique de puissance :
  447. nb1 = dime ltqt1 ;
  448. t0 = extr ltqt1 1 ;
  449. q0 = extr lqqt1 1 ;
  450.  
  451. * Gestion evenements :
  452. peve0 = extr lpeve1 1 ;
  453. si (peve0 neg 0) ;
  454. neve0 = extr lieve1 peve0 ;
  455. si ((peve0 + 1) &lt;EG (dime lieve1)) ;
  456. neve1 = extr lieve1 (peve0 + 1) ;
  457. sino ;
  458. neve1 = -1 ;
  459. fins ;
  460. idtev1 = neve0 ega neve1 ;
  461. si idtev1 ;
  462. tev1 = lteve1 extr (peve0 + 1) ;
  463. dtev1 = tev1 - t0 ;
  464. *mess (chai 'Even. = ' neve0 ', dtev1 =' dtev1) ;
  465. fins ;
  466. sino ;
  467. idtev1 = faux ;
  468. fins ;
  469.  
  470. * Boucle sur les piquets de temps :
  471. ltca1 = prog t0 ;
  472. repe b1 (nb1 - 1) ;
  473. ip1 = &b1 + 1 ;
  474. t1 = extr ltqt1 ip1 ;
  475. q1 = extr lqqt1 ip1 ;
  476. peve1 = extr lpeve1 ip1 ;
  477. dt1 = t1 - t0 ;
  478. si (&b1 ega 1) ; dt0 = dt1 ; fins ;
  479. * Avec evements :
  480. si idtev1 ;
  481. si (dt1 &lt;EG dtca1) ;
  482. si (dtev1 &lt;EG dtca1) ;
  483. si (dt1 ega dtev1 tol3) ;
  484. ltca1 = ltca1 et (prog t1) ;
  485. sino ;
  486. si (dt1 < dtev1) ;
  487. ltca1 = ltca1 et (prog t1) et (prog tev1) ;
  488. t1 = tev1 ;
  489. sino ;
  490. ltca1 = ltca1 et (prog tev1) et (prog t1) ;
  491. fins ;
  492. fins ;
  493. sino ;
  494. ltca1 = ltca1 et (prog t1) ;
  495. si ((q0 > tol2) ou (q1 > tol2)) ;
  496. ltca1 = ltca1 et ((prog t1 pas dtca1 tev1) enle 1) ;
  497. sino ;
  498. ltca1 = ltca1 et ((prog t1 pas dt1 geom 2. tev1) enle 1) ;
  499. fins ;
  500. t1 = tev1 ;
  501. fins ;
  502. sino ;
  503. si (dt1 ega dtev1 tol3) ;
  504. si ((q0 > tol2) ou (q1 > tol2)) ;
  505. ltca1 = ltca1 et ((prog t0 pas dtca1 t1) enle 1) ;
  506. sino ;
  507. ltca1 = ltca1 et ((prog t0 pas dtev1 geom 2. t1) enle 1) ;
  508. fins ;
  509. sino ;
  510. si (dtev1 < dt1) ;
  511. si (dtev1 < dtca1) ;
  512. ltca1 = ltca1 et (prog tev1) ;
  513. sino ;
  514. si ((q0 > tol2) ou (q1 > tol2)) ;
  515. *mess '############ Ici 1' ;
  516. ltca1 = ltca1 et ((prog t0 pas dtca1 tev1) enle 1) ;
  517. ltca1 = ltca1 et ((prog tev1 pas dtca1 t1) enle 1) ;
  518. sino ;
  519. ltca1 = ltca1 et (prog tev1 pas dtev1 geom 2. t1) ;
  520. fins ;
  521. fins ;
  522. sino ;
  523. si ((q0 > tol2) ou (q1 > tol2)) ;
  524. *mess '############ Ici 2' ;
  525. ltca1 = ltca1 et ((prog t0 pas dtca1 tev1) enle 1) ;
  526. sino ;
  527. ltca1 = ltca1 et ((prog t0 pas dt0 geom 2. tev1) enle 1) ;
  528. fins ;
  529. t1 = tev1 ;
  530. fins ;
  531. fins ;
  532. fins ;
  533. * Pas d'evenement :
  534. sino ;
  535. si (dt1 &lt;EG dtca1) ;
  536. ltca1 = ltca1 et (prog t1) ;
  537. sino ;
  538. si ((q0 > tol2) ou (q1 > tol2)) ;
  539. ltca1 = ltca1 et ((prog t0 pas dtca1 t1) enle 1) ;
  540. sino ;
  541. ltca1 = ltca1 et ((prog t0 pas dt0 geom 2. t1) enle 1) ;
  542. fins ;
  543. fins ;
  544. fins ;
  545. t0 = t1 ;
  546. q0 = q1 ;
  547. ntca1 = dime ltca1 ;
  548. dt0 = (ltca1 extr ntca1) - (ltca1 extr (ntca1-1)) ;
  549. * Gestion evenement suivant :
  550. peve0 = peve1 ;
  551. si (peve0 neg 0) ;
  552. neve0 = extr lieve1 peve0 ;
  553. si ((peve0 + 1) &lt;EG (dime lieve1)) ;
  554. neve1 = extr lieve1 (peve0 + 1) ;
  555. sino ;
  556. neve1 = -1 ;
  557. fins ;
  558. idtev1 = neve0 ega neve1 ;
  559. si idtev1 ;
  560. tev1 = lteve1 extr (peve0 + 1) ;
  561. dtev1 = tev1 - t0 ;
  562. *mess (chai 'Even. = ' neve0 ', dtev1 =' dtev1) ;
  563. fins ;
  564. sino ;
  565. idtev1 = faux ;
  566. fins ;
  567. fin b1 ;
  568.  
  569. * Verification si liste temps calcules bien ordonnee :
  570. ltca2 = ordo ltca1 ;
  571. si (((ltca2 - ltca1) maxi abs) > (1.e-3*dtca1)) ;
  572. erre '***** La liste des TEMPS_CALCULES est mal ordonnee' ;
  573. quit waam ;
  574. fins ;
  575.  
  576. tab2.temps_calcules = ltca1 ;
  577.  
  578. * Sorties si evenements :
  579. si ieve1 ;
  580. tab2.temps_evenements = lteve1 ;
  581. tab2.index_evenements = lieve1 ;
  582. fins ;
  583.  
  584. * Fin sous-option TEMP :
  585. fins ;
  586.  
  587. resp tab2 ;
  588. quit waam ;
  589. * Fin option MAILLAGE :
  590. fins ;
  591.  
  592. *----------------------------------------------------------------------*
  593. * Option VISU *
  594. *----------------------------------------------------------------------*
  595.  
  596. si (ega mot1 'VISU') ;
  597. icas1 = 2 ;
  598. *
  599. * Lecture MOT CACH / FACE :
  600. argu mot1/'MOT' ;
  601. si (exis mot1) ;
  602. cle1 = text mot1 ;
  603. sino ;
  604. cle1 = text ' ' ;
  605. fins ;
  606.  
  607. * Lecture maillage complementaire a afficher :
  608. argu mail2/maillage ;
  609. si (non (exis mail2)) ;
  610. mail2 = vide maillage ;
  611. fins ;
  612.  
  613. mail1 = tab1.maillage ;
  614. tmai1 = tab1.evolution_maillage.maillage ;
  615. dep0 = manu chpo (mail1 et mail2) 3 ux 0 uy 0 uz 0 ;
  616. def0 = vide deforme ;
  617. i1 = 0 ;
  618. repe b2 (dime tmai1) ;
  619. maili1 = tmai1.i1 ;
  620. maili1 = maili1 et mail2 ;
  621. defi1 = defo maili1 dep0 0. ;
  622. def0 = def0 et defi1 ;
  623. i1 = i1 + 1 ;
  624. fin b2 ;
  625. trac cle1 anim def0 ;
  626.  
  627. quit waam ;
  628. * Fin option VISU :
  629. fins ;
  630.  
  631. *----------------------------------------------------------------------*
  632. * FIN *
  633. *----------------------------------------------------------------------*
  634. *
  635. * MOT1 n'est pas un des mots-cles des options de la procedure :
  636. si (icas1 ega 0) ;
  637. erre '***** ERREUR WAAM : MOT-cle option WAAM non reconnu.' ;
  638. quit waam ;
  639. fins ;
  640.  
  641. FINP ;
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  

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