Télécharger deduadap.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEDUADAP PROCEDUR GOUNAND 26/01/12 21:15:03 12448
  2. ************************************************************************
  3. * NOM : DEDUADAP
  4. *
  5. * Operateur DEDU option ADAP
  6. * --------------------------
  7. * CHPO2 = 'DEDU' 'ADAP' MAIL (CHAM1) (RIG1 (CHPO1)) ;
  8. *
  9. * Objet :
  10. * _______
  11. *
  12. * Genere un champ de deplacement permettant de regulariser un
  13. * maillage ou de l'adapter suivant une metrique sans changer
  14. * sa topologie.
  15. *
  16. * Commentaire :
  17. * _____________
  18. *
  19. * MAIL : maillage a regulariser ou adapter
  20. *
  21. * CHAM1 : champ par element aux noeuds donnant une metrique :
  22. * tenseur symetrique de composantes G11,G22,G12,...
  23. * (par defaut, le tenseur unite)
  24. *
  25. * RIG1 : Conditions sur les deplacements
  26. * CHPO1 (par defaut, on bloque les noeuds frontieres de MAIL)
  27. *
  28. * CHPO2 : champ de deplacement.
  29. *
  30. * Notes :
  31. * _______
  32. *
  33. * L'option 'ADAP' est censee fonctionner sans conditions sur le
  34. * maillage.
  35. *
  36. * Reference 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 egalement un rapport technique...
  51. *
  52. *
  53. *
  54. * LANGAGE : GIBIANE-CAST3M
  55. * AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  56. * mel : gounand@semt2.smts.cea.fr
  57. **********************************************************************
  58. * VERSION : v1, 05/04/2006, version initiale
  59. * HISTORIQUE : v1, 05/04/2006, creation
  60. * HISTORIQUE :
  61. * HISTORIQUE :
  62. ************************************************************************
  63. * Priere de PRENDRE LE TEMPS de completer 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' 'THET' 'GAMM' 'NITM' 'ACVG' 'IDIR' 'TINV' 'DENS' ;
  85. lchad = FAUX ; lchpo = FAUX ;
  86. theta = 0.2D0 ;
  87. gamma = 2.D0 ;
  88. itmax = 40 ;
  89. acccvg = VRAI ;
  90. lidir = FAUX ;
  91. ltinv = FAUX ;
  92. *
  93. 'REPETER' imotcle ;
  94. 'ARGUMENT' motcle/'MOT' ;
  95. 'SI' ('NON' ('EXISTE' motcle)) ;
  96. 'QUITTER' imotcle ;
  97. 'FINSI' ;
  98. lmc = 'EXISTE' lmotcle motcle ;
  99. 'SI' ('NON' lmc) ;
  100. *1052 2
  101. *Mot-cle incorrect "%M1:4". Voici la liste des valeurs admises : %M5:40
  102. 'ERRE' 1052 'AVEC' motcle 'METR THET GAMM NITM ACVG IDIR TINV DENS' ;
  103. 'FINSI' ;
  104. *
  105. 'SI' ('EGA' motcle 'METR') ;
  106. 'ARGUMENT' chad/'MCHAML' ;
  107. lchad = 'EXISTE' chad ;
  108. 'SI' ('NON' lchad) ;
  109. 'ARGUMENT' chp/'CHPOINT' ;
  110. lchpo = 'EXISTE' chp ;
  111. 'SINON' ;
  112. argu kmodl1*'MMODEL' ;
  113. lchpo = FAUX ;
  114. 'FINSI' ;
  115. 'SINON' ;
  116. 'SI' ('EGA' motcle 'DENS') ;
  117. 'ARGUMENT' chp*'CHPOINT' ;
  118. chp = 'REDU' chp mail ;
  119. chp = (chp ** -2) 'NOMC' 'G11' ;
  120. 'SI' (('VALE' DIME) '>' 1) ;
  121. chp0 = 0.*chp ;
  122. chp = chp 'ET' (chp 'NOMC' 'G22') 'ET' (chp0 'NOMC' 'G21') ;
  123. 'FINS' ;
  124. 'SI' (('VALE' DIME) '>' 2) ;
  125. chp = chp 'ET' (chp 'NOMC' 'G33') 'ET' (chp0 'NOMC' 'G31') 'ET' (chp0 'NOMC' 'G32') ;
  126. 'FINS' ;
  127. lchad = FAUX ;
  128. lchpo = VRAI ;
  129. 'FINSI' ;
  130. 'FINSI' ;
  131. *
  132. vprec = ('VALE' 'PREC') '**' 0.75 ;
  133. mvprec = '*' vprec -1. ;
  134. 'SI' ('EGA' motcle 'THET') ;
  135. 'ARGUMENT' theta*'FLOTTANT' ;
  136. lok = 'ET' ('>' theta mvprec) ('<' theta ('+' 1. vprec)) ;
  137. 'SI' ('NON' lok) ;
  138. * 42 2 %m1:8 = %r1 non compris entre %r2 et %r3
  139. 'ERRE' 42 'AVEC' 'FLOT1' ('PROG' theta 0. 1.) ;
  140. 'FINSI' ;
  141. 'FINSI' ;
  142. *
  143. 'SI' ('EGA' motcle 'GAMM') ;
  144. 'ARGUMENT' gamma*'FLOTTANT' ;
  145. lok = ('>' gamma ('-' 1.D0 vprec)) ;
  146. 'SI' ('NON' lok) ;
  147. * 41 2 %m1:8 = %r1 inferieur a %r2
  148. 'ERRE' 41 'AVEC' 'FLOT2' ('PROG' gamma 1.) ;
  149. 'FINSI' ;
  150. 'FINSI' ;
  151. *
  152. 'SI' ('EGA' motcle 'NITM') ;
  153. 'ARGUMENT' itmax*'ENTIER' ;
  154. lok = ('>' itmax 0) ;
  155. 'SI' ('NON' lok) ;
  156. * 41 2 %m1:8 = %r1 inferieur a %r2
  157. 'ERRE' 41 'AVEC' 'ENTI1' ('PROG' itmax 1.) ;
  158. 'FINSI' ;
  159. 'FINSI' ;
  160. *
  161. 'SI' ('EGA' motcle 'ACVG') ;
  162. 'ARGUMENT' acccvg*'LOGIQUE' ;
  163. 'FINSI' ;
  164. *
  165. 'SI' ('EGA' motcle 'IDIR') ;
  166. 'ARGUMENT' idir*'ENTIER' ;
  167. lidir = VRAI ;
  168. 'FINSI' ;
  169. *
  170. 'SI' ('EGA' motcle 'TINV') ;
  171. 'ARGUMENT' tinv*'TABLE' ;
  172. ltinv = VRAI ;
  173. 'FINSI' ;
  174. *
  175. 'FIN' imotcle ;
  176. ladap = 'OU' lchad lchpo ;
  177. *
  178. 'ARGUMENT' debug/'LOGIQUE' ;
  179. 'SI' ('NON' ('EXISTE' debug)) ;
  180. debug = FAUX ;
  181. 'FINSI' ;
  182. *
  183. * Initialisations
  184. *
  185. idim = 'VALEUR' 'DIME' ;
  186. imod = 'VALEUR' 'MODE' ;
  187. vdim = DEADUTIL 'DIMM' mail ;
  188. vtyp = DEADUTIL 'TYPM' mail ;
  189. laxi = DEADUTIL 'AXI?' ;
  190. lsph = DEADUTIL 'SPH?' ;
  191. *
  192. 'SI' ('OU' ('<' idim 1) ('>' idim 3)) ;
  193. * 709 2 Fonction indisponible en dimension %i1.
  194. 'ERREUR' 709 'AVEC' idim ;
  195. 'FINSI' ;
  196. 'SI' (('EGA' imod 'AXIS') 'OU' ('EGA' imod 'UNIDAXIS') 'OU'
  197. ('EGA' imod 'FOUR') 'OU' ('EGA' imod 'SPHE')) ;
  198. *-105 0 Mode de calcul actuel %m1:32
  199. 'ERRE' -105 'AVEC' imod ;
  200. * 710 2 Fonction indisponible pour ce mode de calcul
  201. 'ERRE' 710 ;
  202. 'FINSI' ;
  203. *
  204. * Parametres du solveur non-lineaire
  205. *
  206. * Evaluation de la matrice tangente
  207. * iktan = 1 : Matrice tangente exact (chere)
  208. * iktan = 2 : " approchee 1 (on neglige les termes extradiagonaux
  209. * (UX,FY)...)
  210. * (par defaut)
  211. * iktan = 3 : " approchee 2 (on neglige en plus les derivees
  212. * extradiagonales (ddxi, ddeta))
  213. * (ne fonctionne pas)
  214. *
  215. * Acceleration de convergence
  216. * acccvg = VRAI : acceleration a la PV
  217. *
  218. * Periode de recalcul de la matrice tangente
  219. * rktan = i (toutes les i iterations non-lineaires)
  220. *
  221. * itmax : Nombre maxi d'iterations
  222. * rfonc : critere d'arret sur la variation de la fonctionnelle
  223. * fback : facteur divisif pour la relaxation lors d'un backtracking
  224. * nback : nombre maxi de backtracking
  225. * fvdet : critere pour le backtracking, variation maxi de la valeur
  226. * du jacobien
  227. iktan = 2 ;
  228. *!!!iktan = 1 ;
  229. rktan = 1 ;
  230. 'SI' debug ;
  231. rfonc = 5.D-8 ;
  232. 'SINON' ;
  233. rfonc = 5.D-2 ;
  234. 'FINSI' ;
  235. *fback = 2.D0 ; fvdet = 1.75D0 ;
  236. fback = 2.D0 ; fvdet = 4.D0 ;
  237. nback = 10 ; damp = 1.0D0 ;
  238. *
  239. * Inconnus et discretisation
  240. *
  241. 'SI' ('OU' laxi lsph) ;
  242. lu = 'MOTS' 'UR' 'UZ' ;
  243. lf = 'MOTS' 'FR' 'FZ' ;
  244. 'SINON' ;
  245. lu = 'MOTS' 'UX' 'UY' 'UZ' ;
  246. lf = 'MOTS' 'FX' 'FY' 'FZ' ;
  247. 'FINSI' ;
  248. *
  249. lextr = 'LECT' 1 'PAS' 1 idim ;
  250. *
  251. lpr = 'EXTRAIRE' lu lextr ; ldu = 'EXTRAIRE' lf lextr ;
  252. *
  253. * Metrique
  254. *
  255. 'SI' ladap;
  256. 'SI' lchad ;
  257. chpmet = 'CHANGER' 'CHPO' kmodl1 chad ;
  258. 'FINSI' ;
  259. 'SI' lchpo ;
  260. chpmet = chp ;
  261. 'FINSI' ;
  262. 'FINSI' ;
  263. *
  264. * Conditions aux limites sur les deplacements
  265. *
  266. 'SI' ('NON' lrb) ;
  267. 'SI' ('EGA' idim 1) ;
  268. * Faute de mieux : contour ne fonctionne pas en 1D
  269. bord = 'ET' ('POIN' mail 'INITIAL')
  270. ('POIN' mail 'FINAL') ;
  271. 'FINSI' ;
  272. 'SI' ('EGA' idim 2) ;
  273. bord = 'CONTOUR' mail ;
  274. * rblo = 'BLOQUE' 'UX' 'UY' bord ;
  275. 'FINSI' ;
  276. 'SI' ('EGA' idim 3) ;
  277. bord = 'ENVELOPPE' mail ;
  278. * rblo = 'BLOQUE' 'UX' 'UY' 'UZ' bord ;
  279. 'FINSI' ;
  280. rblo = 'BLOQUE' 'DEPL' bord ;
  281. 'FINSI' ;
  282. *
  283. * Maillage
  284. *
  285. *'MESS' 'metdisc' metdisc '' 'lchad' lchad 'lchpo' lchpo 'ladap' ladap 'debug' debug ;
  286. *'LIST' chpmet ;
  287. *
  288. * Initialisations diverses
  289. *
  290. iniform = 'FORME' ;
  291. tres = 'TABLE' ;
  292. dx = 'MANUEL' 'CHPO' mail lpr ('PROG') ;
  293. det0 = DEADJACO mail 'ERRJ' ;
  294. *'LIST' det0 ;
  295. tyde = 'TYPE' det0 ;
  296. 'SI' ('EGA' tyde 'ENTIER') ;
  297. chinfo = 'CHAINE' 'DEDUADAP : the mesh is already skew !' ;
  298. 'MESSAGE' chinfo ;
  299. * 426 2 Maillage incorrect
  300. 'ERRE' 426 ;
  301. 'FINSI' ;
  302. 'SI' ladap ;
  303. fonc0 = DEADFONC mail theta gamma chpmet 'ELEM' ;
  304. 'SI' lidir ;
  305. res = DEADRESI mail theta gamma ldu chpmet idir ;
  306. 'SINON' ;
  307. res = DEADRESI mail theta gamma ldu chpmet ;
  308. 'FINSI' ;
  309. 'SINON' ;
  310. fonc0 = DEADFONC mail theta gamma 'ELEM' ;
  311. 'SI' lidir ;
  312. res = DEADRESI mail theta gamma ldu idir ;
  313. 'SINON' ;
  314. res = DEADRESI mail theta gamma ldu ;
  315. 'FINSI' ;
  316. 'FINSI' ;
  317. dampi = damp ;
  318. fonci = fonc0 ;
  319. deti = det0 ;
  320. 'SI' acccvg ;
  321. znacce = 3 ; itdep = 3 ;
  322. acfp1 = 'COPIER' ('*' res 0.) ; acfp2 = acfp1 ;
  323. acfp3 = acfp1 ; acfep1 = acfp1;
  324. acfep2 = acfp1 ; correc=0.; freap = 0. ;
  325. 'FINSI' ;
  326. *
  327. * Algorithme non lineaire
  328. *
  329. cvgok = FAUX ;
  330. 'REPETER' it itmax ;
  331. dampi = 'MINIMUM' ('PROG' damp ('*' dampi fback)) ;
  332. 'SI' debug ;
  333. ch = 'CHAINE' ' Iteration : ' &it ;
  334. 'MESSAGE' ch ;
  335. ch = 'CHAINE' ' dampi=' dampi ;
  336. 'MESSAGE' ch ;
  337. 'FINSI' ;
  338. *
  339. * Calcul du residu
  340. *
  341. * partie liee a la fonctionnelle
  342. 'SI' ladap ;
  343. 'SI' lidir ;
  344. resf = DEADRESI mail theta gamma ldu chpmet idir ;
  345. 'SINON' ;
  346. resf = DEADRESI mail theta gamma ldu chpmet ;
  347. 'FINSI' ;
  348. 'SINON' ;
  349. 'SI' lidir ;
  350. resf = DEADRESI mail theta gamma ldu idir ;
  351. 'SINON' ;
  352. resf = DEADRESI mail theta gamma ldu ;
  353. 'FINSI' ;
  354. 'FINSI' ;
  355. * partie liee aux blocages
  356. resb = '*' rblo dx ;
  357. 'SI' lcb ;
  358. resb = resb '-' cblo ;
  359. 'FINSI' ;
  360. res = resf '+' resb ;
  361. * acceleration de convergence
  362. 'SI' acccvg ;
  363. correcp = correc; correc = 0;
  364. acfp0 = 'ENLEVER' (res - freap) 'FLX' ;
  365. acfep0 = acfp0;
  366. acfep0 = acfep0 - correcp ;
  367. 'SI' ('MULT' &it znacce) ;
  368. 'SI' ('>' &it itdep) ;
  369. 'SI' ('>' dampi ('*' damp 0.9)) ;
  370. 'SI' debug ;
  371. 'MESSAGE' 'Convergence acceleration' ;
  372. 'FINSI' ;
  373. correc = act3 acfep2 acfep1 acfep0
  374. acfp3 acfp2 acfp1 acfp0 ;
  375. res = '-' res correc;
  376. 'FINSI' ;
  377. 'FINSI' ;
  378. 'FINSI' ;
  379. 'SI' ('>' &it 3) ;
  380. 'DETRUIT' acfp3 ;
  381. 'DETRUIT' acfep2 ;
  382. 'FINSI' ;
  383. acfp3 = acfp2 ; acfp2 = acfp1 ; acfp1 = acfp0 ;
  384. acfep2 = acfep1 ; acfep1 = acfep0 ;
  385. 'MENAGE' ;
  386. 'FINSI' ;
  387. *
  388. * Calcul de la matrice tangente
  389. *
  390. 'SI' ('MULT' ('-' &it 1) rktan) ;
  391. 'SI' ladap ;
  392. 'SI' lidir ;
  393. jac = DEADKTAN mail theta gamma lpr ldu chpmet iktan idir ;
  394. 'SINON' ;
  395. jac = DEADKTAN mail theta gamma lpr ldu iktan chpmet ;
  396. 'FINSI' ;
  397. 'SINON' ;
  398. 'SI' lidir ;
  399. jac = DEADKTAN mail theta gamma lpr ldu iktan idir ;
  400. 'SINON' ;
  401. jac = DEADKTAN mail theta gamma lpr ldu iktan ;
  402. 'FINSI' ;
  403. 'FINSI' ;
  404. jact = 'ET' jac rblo ;
  405. 'FINSI' ;
  406. *
  407. * Resolution du probleme linearise
  408. *
  409. 'SI' ltinv ;
  410. mat smb = jact ('*' -1.D0 res) ;
  411. 'SI' ('EGA' (tinv . 'TYPINV') 0) ;
  412. 'OPTI' impi 0 ;
  413. sol = 'RESOUD' mat smb 'NOID' ;
  414. 'OPTI' impi 0 ;
  415. 'SINON' ;
  416. 'SI' ('EXISTE' tinv 'LTIME') ;
  417. ltime = tinv . 'LTIME' ;
  418. 'SINON' ;
  419. ltime = FAUX ;
  420. 'FINSI' ;
  421. *
  422. 'SI' ('EGA' ltime vrai) ;
  423. sol tt = 'KRES' mat smb 'TYPI' tinv ;
  424. 'LISTE' tt ;
  425. 'SINON' ;
  426. sol = 'KRES' mat smb 'TYPI' tinv ;
  427. 'FINSI' ;
  428. 'FINSI' ;
  429. ddx = sol ;
  430. 'SINON' ;
  431. ddx = 'RESO' jact ('*' -1.D0 res) ;
  432. 'FINSI' ;
  433. * 'LISTE' ddx ;
  434. *
  435. *
  436. *
  437. 'SI' acccvg ;
  438. freap = reac rblo ddx ;
  439. * resx = 'ENLEVER' ('-' res (reac rblo ddx)) 'FLX' ;
  440. * resx2 = 'ENLEVER' (res) 'FLX' ;
  441. 'FINSI' ;
  442. *
  443. * Backtracking
  444. *
  445. backok = FAUX ;
  446. 'REPETER' iback nback ;
  447. 'SI' ('>' &iback 1) ;
  448. dampi = '/' dampi fback ;
  449. 'SI' debug ;
  450. ch = 'CHAINE' ' dampi=' dampi ;
  451. 'MESSAGE' ch ;
  452. 'FINSI' ;
  453. 'FINSI' ;
  454. ddxi = '*' ddx dampi ;
  455. depx = 'EXCO' lpr ddxi lpr 'NOID' ;
  456. * Test si le deplacement calcule inverse un jacobien
  457. * ou le change trop
  458. oldconf = 'FORME' ;
  459. 'FORME' depx ;
  460. detip = DEADJACO mail 'ERRJ' ;
  461. 'FORME' oldconf ;
  462. tyde = 'TYPE' detip ;
  463. 'SI' ('EGA' tyde 'ENTIER') ;
  464. 'SI' debug ;
  465. ch = 'CHAINE' ' Warning : inv. loc. jacobien !' ;
  466. 'MESSAGE' ch ;
  467. 'FINSI' ;
  468. 'SINON' ;
  469. * 'MESS' 'Avant vardet' ;
  470. * 'LIST' deti ;
  471. vardet = ('/' detip deti) ;
  472. * 'MESS' 'Apres vardet' ;
  473. mivd = 'MINIMUM' vardet ;
  474. mavd = 'MAXIMUM' vardet ;
  475. 'SI' debug ;
  476. 'MESSAGE' ('CHAINE' 'Mini var jaco = ' mivd ) ;
  477. 'MESSAGE' ('CHAINE' 'Maxi var jaco = ' mavd ) ;
  478. 'FINSI' ;
  479. bigvar = 'OU' ('>' mavd fvdet) ('<' mivd ('/' 1.D0 fvdet)) ;
  480. 'SI' bigvar ;
  481. 'SI' debug ;
  482. ch = 'CHAINE' ' Warn : trop grande variation du jaco !' ;
  483. 'MESSAGE' ch ;
  484. 'FINSI' ;
  485. 'SINON' ;
  486. backok = VRAI ;
  487. 'QUITTER' iback ;
  488. 'FINSI' ;
  489. 'FINSI' ;
  490. 'FIN' iback ;
  491. 'SI' ('NON' backok) ;
  492. chinfo1 = 'CHAINE' 'DEDUADAP : Backtracking failed to converge !' ;
  493. 'MESSAGE' chinfo1 ;
  494. chinfo2 = 'CHAINE' 'Please check the output displacement'
  495. 'MESSAGE' chinfo2 ;
  496. dep = 'EXCO' lpr dx lpr ;
  497. 'RESPRO' dep ;
  498. 'QUITTER' DEDUADAP ;
  499. 'FINSI' ;
  500. dx = '+' dx ddxi ;
  501. 'FORME' depx ;
  502. 'SI' ladap ;
  503. foncip = DEADFONC mail theta gamma chpmet 'ELEM' ;
  504. 'SINON' ;
  505. foncip = DEADFONC mail theta gamma 'ELEM' ;
  506. 'FINSI' ;
  507. *
  508. * Critere de convergence
  509. *
  510. vrrfon = '/' ('-' foncip fonci) fonci ;
  511. critconv = 'MAXIMUM' vrrfon 'ABS' ;
  512. tres . &it = critconv ;
  513. cvgok = ('<' critconv rfonc) ;
  514. 'SI' debug ;
  515. chmess = 'CHAINE' ' critere = ' critconv ;
  516. 'MESSAGE' chmess ;
  517. 'FINSI' ;
  518. deti = detip ;
  519. fonci = foncip ;
  520. 'SI' debug ;
  521. tit = 'CHAINE' 'Maillage ; it=' &it ' crit=' critconv ;
  522. TRAC 'CACH' mail 'TITR' tit 'NCLK' ;
  523. 'FINSI' ;
  524. 'SI' cvgok ;
  525. 'QUITTER' it ;
  526. 'FINSI' ;
  527. 'FIN' it ;
  528. 'FORME' iniform ;
  529. dep = 'EXCO' lpr dx lpr ;
  530. *
  531. itfin = ('-' &it 1) ;
  532. 'SI' debug ;
  533. ch = 'CHAINE' ' Iteration finale : ' itfin ;
  534. 'MESSAGE' ch ;
  535. lit = 'PROG' 1. 'PAS' 1. 'NPAS' ('-' itfin 1) ;
  536. lres = 'PROG' ;
  537. 'REPETER' it itfin ;
  538. lres = 'ET' lres ('PROG'
  539. ('/' ('LOG' ('+' (tres . &it ) 1.D-16))
  540. ('LOG' 10.D0) )) ;
  541. 'FIN' it ;
  542. titev = 'CHAINE' 'LOG10 Critere (iterations)' ;
  543. evres = 'EVOL' 'MANU' lit lres 'TITR' titev ;
  544. 'DESSIN' evres ;
  545. 'FINSI' ;
  546. *
  547. 'RESPRO' dep ;
  548. *
  549. * End of procedure file DEDUADAP
  550. *
  551. 'FINPROC' ;
  552.  
  553.  

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