Télécharger deduadap.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEDUADAP PROCEDUR GOUNAND 18/10/24 21:15:03 9970
  2. ************************************************************************
  3. * NOM : DEDUADAP
  4. *
  5. * Opérateur DEDU option ADAP
  6. * --------------------------
  7. * CHPO2 = 'DEDU' 'ADAP' MAIL (CHAM1) (RIG1 (CHPO1)) ;
  8. *
  9. * Objet :
  10. * _______
  11. *
  12. * Génère un champ de déplacement permettant de régulariser un
  13. * maillage ou de l'adapter suivant une métrique sans changer
  14. * sa topologie.
  15. *
  16. * Commentaire :
  17. * _____________
  18. *
  19. * MAIL : maillage à régulariser ou adapter
  20. *
  21. * CHAM1 : champ par élément aux noeuds donnant une métrique :
  22. * tenseur symétrique de composantes G11,G22,G12,...
  23. * (par défaut, le tenseur unité)
  24. *
  25. * RIG1 : Conditions sur les déplacements
  26. * CHPO1 (par défaut, on bloque les noeuds frontières de MAIL)
  27. *
  28. * CHPO2 : champ de déplacement.
  29. *
  30. * Notes :
  31. * _______
  32. *
  33. * L'option 'ADAP' est censée fonctionner sans conditions sur le
  34. * maillage.
  35. *
  36. * Référence principale :
  37. * ______________________
  38. *
  39. *@Article{huang4,
  40. * author = {Weizhang Huang},
  41. * title = {Variational Mesh Adaptation:
  42. * Isotropy and Equidistribution},
  43. * journal = {JCP},
  44. * year = {2001},
  45. * volume = {174},
  46. * pages = {903-924},
  47. * endroit = {Classeur Mesh Movement (VIIIb)}
  48. *}
  49. *
  50. * Je dois faire également un rapport technique...
  51. *
  52. *
  53. *
  54. * LANGAGE : GIBIANE-CAST3M
  55. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  56. * mél : gounand@semt2.smts.cea.fr
  57. **********************************************************************
  58. * VERSION : v1, 05/04/2006, version initiale
  59. * HISTORIQUE : v1, 05/04/2006, création
  60. * HISTORIQUE :
  61. * HISTORIQUE :
  62. ************************************************************************
  63. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  64. * en cas de modification de ce sous-programme afin de faciliter
  65. * la maintenance !
  66. ************************************************************************
  67. *
  68. *
  69. 'DEBPROC' DEDUADAP ;
  70. *
  71. * Lecture des arguments
  72. *
  73. 'ARGUMENT' mail*'MAILLAGE' ;
  74. *
  75. 'ARGUMENT' rblo/'RIGIDITE' ;
  76. lrb = 'EXISTE' rblo ;
  77. 'SI' lrb ;
  78. 'ARGUMENT' cblo/'CHPOINT' ;
  79. lcb = 'EXISTE' cblo ;
  80. 'SINON' ;
  81. lcb = FAUX ;
  82. 'FINSI' ;
  83. *
  84. lmotcle = 'MOTS' 'METR' 'DISG' 'THET' 'GAMM' 'NITM' 'ACVG' 'METG'
  85. 'IDIR' 'TINV' ;
  86. lchad = FAUX ; lchp = FAUX ;
  87. ldisg = FAUX ;
  88. theta = 0.2D0 ;
  89. gamma = 2.D0 ;
  90. *theta = 0.2D0 ;
  91. *gamma = 2.D0 ;
  92. itmax = 40 ;
  93. acccvg = VRAI ;
  94. lmg = FAUX ;
  95. lidir = FAUX ;
  96. ltinv = FAUX ;
  97. *
  98. 'REPETER' imotcle ;
  99. 'ARGUMENT' motcle/'MOT' ;
  100. 'SI' ('NON' ('EXISTE' motcle)) ;
  101. 'QUITTER' imotcle ;
  102. 'FINSI' ;
  103. lmc = 'EXISTE' lmotcle motcle ;
  104. 'SI' ('NON' lmc) ;
  105. *1052 2
  106. *Mot-cle incorrect "%M1:4". Voici la liste des valeurs admises : %M5:40
  107. 'ERRE' 1052 'AVEC' ('CHAI' motcle
  108. 'METR DISG THET GAMM NITM ACVG METG IDIR TINV') ;
  109. 'FINSI' ;
  110. *
  111. 'SI' ('EGA' motcle 'METR') ;
  112. 'ARGUMENT' chad/'MCHAML' ;
  113. lchad = 'EXISTE' chad ;
  114. 'SI' ('NON' lchad) ;
  115. 'ARGUMENT' chp/'CHPOINT' ;
  116. lchp = 'EXISTE' chp ;
  117. 'ARGUMENT' metdisc*'MOT' ;
  118. 'SINON' ;
  119. lchp = FAUX ;
  120. 'FINSI' ;
  121. 'FINSI' ;
  122. *
  123. 'SI' ('EGA' motcle 'DISG') ;
  124. 'ARGUMENT' gdisc*'MOT' ;
  125. ldisg = VRAI ;
  126. 'FINSI' ;
  127. *
  128. vprec = ('VALE' 'PREC') '**' 0.75 ;
  129. mvprec = '*' vprec -1. ;
  130. 'SI' ('EGA' motcle 'THET') ;
  131. 'ARGUMENT' theta*'FLOTTANT' ;
  132. lok = 'ET' ('>' theta mvprec) ('<' theta ('+' 1. vprec)) ;
  133. 'SI' ('NON' lok) ;
  134. * 42 2 %m1:8 = %r1 non compris entre %r2 et %r3
  135. 'ERRE' 42 'AVEC' 'FLOT1' ('PROG' theta 0. 1.) ;
  136. 'FINSI' ;
  137. 'FINSI' ;
  138. *
  139. 'SI' ('EGA' motcle 'GAMM') ;
  140. 'ARGUMENT' gamma*'FLOTTANT' ;
  141. lok = ('>' gamma ('-' 1.D0 vprec)) ;
  142. 'SI' ('NON' lok) ;
  143. * 41 2 %m1:8 = %r1 inferieur a %r2
  144. 'ERRE' 41 'AVEC' 'FLOT2' ('PROG' gamma 1.) ;
  145. 'FINSI' ;
  146. 'FINSI' ;
  147. *
  148. 'SI' ('EGA' motcle 'NITM') ;
  149. 'ARGUMENT' itmax*'ENTIER' ;
  150. lok = ('>' itmax 0) ;
  151. 'SI' ('NON' lok) ;
  152. * 41 2 %m1:8 = %r1 inferieur a %r2
  153. 'ERRE' 41 'AVEC' 'ENTI1' ('PROG' itmax 1.) ;
  154. 'FINSI' ;
  155. 'FINSI' ;
  156. *
  157. 'SI' ('EGA' motcle 'ACVG') ;
  158. 'ARGUMENT' acccvg*'LOGIQUE' ;
  159. 'FINSI' ;
  160. *
  161. 'SI' ('EGA' motcle 'METG') ;
  162. 'ARGUMENT' methgau*'MOT' ;
  163. lmg = VRAI ;
  164. 'FINSI' ;
  165. *
  166. 'SI' ('EGA' motcle 'IDIR') ;
  167. 'ARGUMENT' idir*'ENTIER' ;
  168. lidir = VRAI ;
  169. 'FINSI' ;
  170. *
  171. 'SI' ('EGA' motcle 'TINV') ;
  172. 'ARGUMENT' tinv*'TABLE' ;
  173. ltinv = VRAI ;
  174. 'FINSI' ;
  175. *
  176. 'FIN' imotcle ;
  177. ladap = 'OU' lchad lchp ;
  178. *
  179. 'ARGUMENT' debug/'LOGIQUE' ;
  180. 'SI' ('NON' ('EXISTE' debug)) ;
  181. debug = FAUX ;
  182. 'FINSI' ;
  183. *
  184. * Initialisations
  185. *
  186. idim = 'VALEUR' 'DIME' ;
  187. imod = 'VALEUR' 'MODE' ;
  188. vdim = DEADUTIL 'DIMM' mail ;
  189. vtyp = DEADUTIL 'TYPM' mail ;
  190. laxi = DEADUTIL 'AXI?' ;
  191. lsph = DEADUTIL 'SPH?' ;
  192. *
  193. 'SI' ('OU' ('<' idim 1) ('>' idim 3)) ;
  194. * 709 2 Fonction indisponible en dimension %i1.
  195. 'ERREUR' 709 'AVEC' idim ;
  196. 'FINSI' ;
  197. 'SI' (('EGA' imod 'AXIS') 'OU' ('EGA' imod 'UNIDAXIS') 'OU'
  198. ('EGA' imod 'FOUR') 'OU' ('EGA' imod 'SPHE')) ;
  199. *-105 0 Mode de calcul actuel %m1:32
  200. 'ERRE' -105 'AVEC' imod ;
  201. * 710 2 Fonction indisponible pour ce mode de calcul
  202. 'ERRE' 710 ;
  203. 'FINSI' ;
  204. *
  205. vquaf = ('EGA' vtyp 'QUAF') ;
  206. 'SI' ('ET' ldisg ('NON' vquaf)) ;
  207. 'MESS' 'DISG option :' ;
  208. * 66 2 L'objet %m1:8 doit etre de type %m9:16
  209. 'ERRE' 66 'AVEC' 'MAIL QUAF' ;
  210. 'FINSI' ;
  211. 'SI' ('ET' lchp ('NON' vquaf)) ;
  212. 'MESS' 'METR+CHPO option :' ;
  213. * 66 2 L'objet %m1:8 doit etre de type %m9:16
  214. 'ERRE' 66 'AVEC' 'MAIL QUAF' ;
  215. 'FINSI' ;
  216. *
  217. * Paramètres du solveur non-linéaire
  218. *
  219. * Evaluation de la matrice tangente
  220. * iktan = 1 : Matrice tangente exact (chère)
  221. * iktan = 2 : " approchée 1 (on néglige les termes extradiagonaux
  222. * (UX,FY)...)
  223. * (par défaut)
  224. * iktan = 3 : " approchée 2 (on néglige en plus les dérivées
  225. * extradiagonales (ddxi, ddeta))
  226. * (ne fonctionne pas)
  227. *
  228. * Accélération de convergence
  229. * acccvg = VRAI : accélération à la PV
  230. *
  231. * Période de recalcul de la matrice tangente
  232. * rktan = i (toutes les i itérations non-linéaires)
  233. *
  234. * itmax : Nombre maxi d'itérations
  235. * rfonc : critère d'arrêt sur la variation de la fonctionnelle
  236. * fback : facteur divisif pour la relaxation lors d'un backtracking
  237. * nback : nombre maxi de backtracking
  238. * fvdet : critère pour le backtracking, variation maxi de la valeur
  239. * du jacobien
  240.  
  241. iktan = 2 ;
  242. *!!!iktan = 1 ;
  243. rktan = 1 ;
  244. 'SI' debug ;
  245. rfonc = 5.D-8 ;
  246. 'SINON' ;
  247. rfonc = 5.D-2 ;
  248. 'FINSI' ;
  249. fback = 2.D0 ; fvdet = 4.D0 ;
  250. nback = 10 ; damp = 1.0D0 ;
  251. *
  252. * Maillage
  253. *
  254. 'SI' vquaf ;
  255. _mt = mail ;
  256. 'SINON' ;
  257. _mt = 'CHANGER' mail 'QUAF' ;
  258. 'FINSI' ;
  259. *
  260. * Inconnus et discrétisation
  261. *
  262. 'SI' ('NON' lmg) ;
  263. 'SI' ('EGA' vtyp 'LINE') ;
  264. methgau = 'GAR1' ;
  265. 'SINON' ;
  266. methgau = 'GAR2' ;
  267. 'FINSI' ;
  268. 'FINSI' ;
  269. 'SI' ('NON' ldisg) ;
  270. gdisc = vtyp ;
  271. 'FINSI' ;
  272. *
  273. 'SI' ('OU' laxi lsph) ;
  274. lu = 'MOTS' 'UR' 'UZ' ;
  275. lf = 'MOTS' 'FR' 'FZ' ;
  276. 'SINON' ;
  277. lu = 'MOTS' 'UX' 'UY' 'UZ' ;
  278. lf = 'MOTS' 'FX' 'FY' 'FZ' ;
  279. 'FINSI' ;
  280. *
  281. lextr = 'LECT' 1 'PAS' 1 idim ;
  282. *
  283. lpr = 'EXTRAIRE' lu lextr ; ldu = 'EXTRAIRE' lf lextr ;
  284. *
  285. * Métrique
  286. *
  287. 'SI' ladap;
  288. 'SI' lchad ;
  289. * $mt = 'MODE' _mt 'NAVIER_STOKES' 'QUAF' ;
  290. * chpmet = 'KCHA' $mt chad 'CHPO' 'QUAF' ;
  291. * metdisc = 'CSTE' ;
  292. $mt = 'MODELISER' mail 'THERMIQUE' ;
  293. chpmet = 'CHANGER' 'CHPO' $mt chad ;
  294. metdisc = gdisc ;
  295. 'FINSI' ;
  296. 'SI' lchp ;
  297. chpmet = chp ;
  298. 'FINSI' ;
  299. 'FINSI' ;
  300. *
  301. * Conditions aux limites sur les déplacements
  302. *
  303. 'SI' ('NON' lrb) ;
  304. 'SI' ('EGA' idim 1) ;
  305. * Faute de mieux : contour ne fonctionne pas en 1D
  306. bord = 'ET' ('POIN' mail 'INITIAL')
  307. ('POIN' mail 'FINAL') ;
  308. 'FINSI' ;
  309. 'SI' ('EGA' idim 2) ;
  310. bord = 'CONTOUR' mail ;
  311. * rblo = 'BLOQUE' 'UX' 'UY' bord ;
  312. 'FINSI' ;
  313. 'SI' ('EGA' idim 3) ;
  314. bord = 'ENVELOPPE' mail ;
  315. * rblo = 'BLOQUE' 'UX' 'UY' 'UZ' bord ;
  316. 'FINSI' ;
  317. rblo = 'BLOQUE' 'DEPL' bord ;
  318. 'FINSI' ;
  319. *
  320. * Initilisations diverses
  321. *
  322. iniform = 'FORME' ;
  323. tres = 'TABLE' ;
  324. dx = 'MANUEL' 'CHPO' mail lpr ('PROG') ;
  325. det0 = DEADJACO _mt gdisc methgau ;
  326. tyde = 'TYPE' det0 ;
  327. 'SI' ('EGA' tyde 'ENTIER') ;
  328. chinfo = 'CHAINE' 'DEDUADAP : the mesh is already skew !' ;
  329. 'MESSAGE' chinfo ;
  330. * 426 2 Maillage incorrect
  331. 'ERRE' 426 ;
  332. 'FINSI' ;
  333. 'SI' ladap ;
  334. fonc0 = DEADFONC _mt gdisc methgau theta gamma
  335. chpmet metdisc 'ELEM' ;
  336. 'SI' lidir ;
  337. res = DEADRESI _mt gdisc methgau theta gamma ldu
  338. chpmet metdisc idir ;
  339. 'SINON' ;
  340. res = DEADRESI _mt gdisc methgau theta gamma ldu
  341. chpmet metdisc ;
  342. 'FINSI' ;
  343. 'SINON' ;
  344. fonc0 = DEADFONC _mt gdisc methgau theta gamma 'ELEM' ;
  345. 'SI' lidir ;
  346. res = DEADRESI _mt gdisc methgau theta gamma ldu idir ;
  347. 'SINON' ;
  348. res = DEADRESI _mt gdisc methgau theta gamma ldu ;
  349. 'FINSI' ;
  350. 'FINSI' ;
  351. dampi = damp ;
  352. fonci = fonc0 ;
  353. deti = det0 ;
  354. 'SI' acccvg ;
  355. znacce = 3 ; itdep = 3 ;
  356. acfp1 = 'COPIER' ('*' res 0.) ; acfp2 = acfp1 ;
  357. acfp3 = acfp1 ; acfep1 = acfp1;
  358. acfep2 = acfp1 ; correc=0.; freap = 0. ;
  359. 'FINSI' ;
  360. *
  361. * Algorithme non linéaire
  362. *
  363. cvgok = FAUX ;
  364. 'REPETER' it itmax ;
  365. dampi = 'MINIMUM' ('PROG' damp ('*' dampi fback)) ;
  366. 'SI' debug ;
  367. ch = 'CHAINE' ' Itération : ' &it ;
  368. 'MESSAGE' ch ;
  369. ch = 'CHAINE' ' dampi=' dampi ;
  370. 'MESSAGE' ch ;
  371. 'FINSI' ;
  372. *
  373. * Calcul du résidu
  374. *
  375. * partie liée à la fonctionnelle
  376. 'SI' ladap ;
  377. 'SI' lidir ;
  378. resf = DEADRESI _mt gdisc methgau theta gamma ldu
  379. chpmet metdisc idir ;
  380. 'SINON' ;
  381. resf = DEADRESI _mt gdisc methgau theta gamma ldu
  382. chpmet metdisc ;
  383. 'FINSI' ;
  384. 'SINON' ;
  385. 'SI' lidir ;
  386. resf = DEADRESI _mt gdisc methgau theta gamma ldu idir ;
  387. 'SINON' ;
  388. resf = DEADRESI _mt gdisc methgau theta gamma ldu ;
  389. 'FINSI' ;
  390. 'FINSI' ;
  391. * partie liée aux blocages
  392. resb = '*' rblo dx ;
  393. 'SI' lcb ;
  394. resb = resb '-' cblo ;
  395. 'FINSI' ;
  396. res = resf '+' resb ;
  397. * acceleration de convergence
  398. 'SI' acccvg ;
  399. correcp = correc; correc = 0;
  400. acfp0 = 'ENLEVER' (res - freap) 'FLX' ;
  401. acfep0 = acfp0;
  402. acfep0 = acfep0 - correcp ;
  403. 'SI' ('MULT' &it znacce) ;
  404. 'SI' ('>' &it itdep) ;
  405. 'SI' ('>' dampi ('*' damp 0.9)) ;
  406. 'SI' debug ;
  407. 'MESSAGE' 'Convergence acceleration' ;
  408. 'FINSI' ;
  409. correc = act3 acfep2 acfep1 acfep0
  410. acfp3 acfp2 acfp1 acfp0 ;
  411. res = '-' res correc;
  412. 'FINSI' ;
  413. 'FINSI' ;
  414. 'FINSI' ;
  415. 'SI' ('>' &it 3) ;
  416. 'DETRUIT' acfp3 ;
  417. 'DETRUIT' acfep2 ;
  418. 'FINSI' ;
  419. acfp3 = acfp2 ; acfp2 = acfp1 ; acfp1 = acfp0 ;
  420. acfep2 = acfep1 ; acfep1 = acfep0 ;
  421. 'MENAGE' ;
  422. 'FINSI' ;
  423. *
  424. * Calcul de la matrice tangente
  425. *
  426. 'SI' ('MULT' ('-' &it 1) rktan) ;
  427. 'SI' ladap ;
  428. 'SI' lidir ;
  429. jac = DEADKTAN _mt gdisc methgau theta gamma
  430. lpr ldu chpmet metdisc iktan idir ;
  431. 'SINON' ;
  432. jac = DEADKTAN _mt gdisc methgau theta gamma
  433. lpr ldu iktan chpmet metdisc ;
  434. 'FINSI' ;
  435. 'SINON' ;
  436. 'SI' lidir ;
  437. jac = DEADKTAN _mt gdisc methgau theta gamma
  438. lpr ldu iktan idir ;
  439. 'SINON' ;
  440. jac = DEADKTAN _mt gdisc methgau theta gamma
  441. lpr ldu iktan ;
  442. 'FINSI' ;
  443. 'FINSI' ;
  444. jact = 'ET' jac rblo ;
  445. 'FINSI' ;
  446. *
  447. * Résolution du problème linéarisé
  448. *
  449. 'SI' ltinv ;
  450. mat smb = jact ('*' -1.D0 res) ;
  451. 'SI' ('EGA' (tinv . 'TYPINV') 0) ;
  452. 'OPTI' impi 0 ;
  453. sol = 'RESOUD' mat smb 'NOID' ;
  454. 'OPTI' impi 0 ;
  455. 'SINON' ;
  456. 'SI' ('EXISTE' tinv 'LTIME') ;
  457. ltime = tinv . 'LTIME' ;
  458. 'SINON' ;
  459. ltime = FAUX ;
  460. 'FINSI' ;
  461. *
  462. 'SI' ('EGA' ltime vrai) ;
  463. sol tt = 'KRES' mat smb 'TYPI' tinv ;
  464. 'LISTE' tt ;
  465. 'SINON' ;
  466. sol = 'KRES' mat smb 'TYPI' tinv ;
  467. 'FINSI' ;
  468. 'FINSI' ;
  469. ddx = sol ;
  470. 'SINON' ;
  471. ddx = 'RESO' jact ('*' -1.D0 res) ;
  472. 'FINSI' ;
  473. * 'LISTE' ddx ;
  474. *
  475. *
  476. *
  477. 'SI' acccvg ;
  478. freap = reac rblo ddx ;
  479. * resx = 'ENLEVER' ('-' res (reac rblo ddx)) 'FLX' ;
  480. * resx2 = 'ENLEVER' (res) 'FLX' ;
  481. 'FINSI' ;
  482. *
  483. * Backtracking
  484. *
  485. backok = FAUX ;
  486. 'REPETER' iback nback ;
  487. 'SI' ('>' &iback 1) ;
  488. dampi = '/' dampi fback ;
  489. 'SI' debug ;
  490. ch = 'CHAINE' ' dampi=' dampi ;
  491. 'MESSAGE' ch ;
  492. 'FINSI' ;
  493. 'FINSI' ;
  494. ddxi = '*' ddx dampi ;
  495. depx = 'EXCO' lpr ddxi lpr 'NOID' ;
  496. * Test si le déplacement calculé inverse un jacobien
  497. * ou le change trop
  498. oldconf = 'FORME' ;
  499. 'FORME' depx ;
  500. detip = DEADJACO _mt gdisc methgau ;
  501. 'FORME' oldconf ;
  502. tyde = 'TYPE' detip ;
  503. 'SI' ('EGA' tyde 'ENTIER') ;
  504. 'SI' debug ;
  505. ch = 'CHAINE' ' Warning : inv. loc. jacobien !' ;
  506. 'MESSAGE' ch ;
  507. 'FINSI' ;
  508. 'SINON' ;
  509. vardet = ('/' detip deti) ;
  510. mivd = 'MINIMUM' vardet ;
  511. mavd = 'MAXIMUM' vardet ;
  512. 'SI' debug ;
  513. 'MESSAGE' ('CHAINE' 'Mini var jaco = ' mivd ) ;
  514. 'MESSAGE' ('CHAINE' 'Maxi var jaco = ' mavd ) ;
  515. 'FINSI' ;
  516. bigvar = 'OU' ('>' mavd fvdet) ('<' mivd ('/' 1.D0 fvdet)) ;
  517. 'SI' bigvar ;
  518. 'SI' debug ;
  519. ch = 'CHAINE'
  520. ' Warn : trop grande variation du jaco !' ;
  521. 'MESSAGE' ch ;
  522. 'FINSI' ;
  523. 'SINON' ;
  524. backok = VRAI ;
  525. 'QUITTER' iback ;
  526. 'FINSI' ;
  527. 'FINSI' ;
  528. 'FIN' iback ;
  529. 'SI' ('NON' backok) ;
  530. chinfo1 = 'CHAINE'
  531. 'DEDUADAP : Backtracking failed to converge !' ;
  532. 'MESSAGE' chinfo1 ;
  533. chinfo2 = 'CHAINE' 'Please check the output displacement'
  534. 'MESSAGE' chinfo2 ;
  535. dep = 'EXCO' lpr dx lpr ;
  536. 'RESPRO' dep ;
  537. 'QUITTER' DEDUADAP ;
  538. 'FINSI' ;
  539. dx = '+' dx ddxi ;
  540. 'FORME' depx ;
  541. 'SI' ladap ;
  542. foncip = DEADFONC _mt gdisc methgau theta gamma
  543. chpmet metdisc 'ELEM' ;
  544. 'SINON' ;
  545. foncip = DEADFONC _mt gdisc methgau theta gamma 'ELEM' ;
  546. 'FINSI' ;
  547. *
  548. * Critère de convergence
  549. *
  550. vrrfon = '/' ('-' foncip fonci) fonci ;
  551. critconv = 'MAXIMUM' vrrfon 'ABS' ;
  552. tres . &it = critconv ;
  553. cvgok = ('<' critconv rfonc) ;
  554. 'SI' debug ;
  555. chmess = 'CHAINE' ' critere = ' critconv ;
  556. 'MESSAGE' chmess ;
  557. 'FINSI' ;
  558. deti = detip ;
  559. fonci = foncip ;
  560. 'SI' debug ;
  561. tit = 'CHAINE' 'Maillage ; it=' &it ' crit=' critconv ;
  562. TRAC 'CACH' mail 'TITR' tit 'NCLK' ;
  563. 'FINSI' ;
  564. 'SI' cvgok ;
  565. 'QUITTER' it ;
  566. 'FINSI' ;
  567. 'FIN' it ;
  568. 'FORME' iniform ;
  569. dep = 'EXCO' lpr dx lpr ;
  570. *
  571. itfin = ('-' &it 1) ;
  572. 'SI' debug ;
  573. ch = 'CHAINE' ' Iteration finale : ' itfin ;
  574. 'MESSAGE' ch ;
  575. lit = 'PROG' 1. 'PAS' 1. 'NPAS' ('-' itfin 1) ;
  576. lres = 'PROG' ;
  577. 'REPETER' it itfin ;
  578. lres = 'ET' lres ('PROG'
  579. ('/' ('LOG' ('+' (tres . &it ) 1.D-16))
  580. ('LOG' 10.D0) )) ;
  581. 'FIN' it ;
  582. titev = 'CHAINE' 'LOG10 Critere (iterations)' ;
  583. evres = 'EVOL' 'MANU' lit lres 'TITR' titev ;
  584. 'DESSIN' evres ;
  585. 'FINSI' ;
  586. *
  587. 'RESPRO' dep ;
  588. *
  589. * End of procedure file DEDUADAP
  590. *
  591. 'FINPROC' ;
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  

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