Télécharger waam.procedur

Retour à la liste

Numérotation des lignes :

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

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