Télécharger equ_chaleur3D_VF2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : equ_chaleur3D_VF2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ***********************************************************************
  5. * NOM : equ_chaleur3D_VF2.dgibi
  6. * ___
  7. *
  8. * DESCRIPTION : Solution stationnaire de l'équation de la chaleur (3D)
  9. * ___________
  10. *
  11. * GEOMETRIE : Un cube de côté 1 maillé avec 'VOLU'.
  12. * ----------
  13. *
  14. *
  15. * EQUATIONS :
  16. * ----------
  17. *
  18. * - Equations :
  19. *
  20. * mu Laplacien(T) = 0 avec mu = 1 ici
  21. *
  22. * - Conditions aux limites :
  23. *
  24. * conditions de Dirichlet sur une face
  25. * condition de von Neumann sur le reste de l'enveloppe.
  26. *
  27. * - Solution exacte :
  28. *
  29. * T(x,y)= alpha x + beta y gamma z + eta xyz + delta
  30. *
  31. *
  32. * DISCRETISATION : une méthode de Volume Finis d'ordre 2 en espace.
  33. * ______________
  34. *
  35. *
  36. *
  37. *
  38. * Le maillage est construit avec l'opérateur VOLU, il est perturbé
  39. * par un bruit blanc gaussien.
  40. *
  41. * Opérateurs utilisés : PENT ('DIAMAN2')
  42. * LAPN (option VF implicite)
  43. *
  44. * RESOLUTION : - Solveur BiCGStab
  45. * __________ - Préconditionneur ILU(0)
  46. *
  47. * TESTS EFFECTUES : Vérification de l'ordre 2 en espace de la méthode
  48. * _______________ (utilisation d'une norme pseudo-L2) et de la
  49. * précision absolue sur le maillage le plus fin.
  50. *
  51. *
  52. *
  53. * LANGAGE : GIBIANE-CASTEM 2000
  54. * AUTEUR : A. Beccantini
  55. * Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  56. * mél : gounand@semt2.smts.cea.fr
  57. ************************************************************************
  58. * VERSION : v1, 15/04/02, version initiale
  59. * HISTORIQUE : v1, 25/02/03, création
  60. * HISTORIQUE :
  61. ************************************************************************
  62. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  63. * en cas de modification de ce sous-programme afin de faciliter
  64. * la maintenance !
  65. ************************************************************************
  66. interact= FAUX ;
  67. complet = FAUX ;
  68. graph = FAUX ;
  69. logxmgr = FAUX ;
  70. logreg = FAUX ;
  71.  
  72. TYPEL = 'CUB8' ;
  73. 'OPTION' 'DIME' 3 'ELEM' TYPEL 'MODE' 'PLAN' ;
  74. 'OPTION' 'ISOV' 'SULI' ;
  75. 'OPTION' 'ECHO' 0 ;
  76. nbisov = 15 ;
  77. 'SI' ('NON' interact) ;
  78. 'OPTION' 'TRAC' 'PS' ;
  79. 'OPTION' 'ISOV' 'LIGNE' ;
  80. 'FINSI' ;
  81. *
  82. ** Erreur Linfini entre deux Champoints.
  83. *
  84. DEBPROC CALCERR vitp1*'CHPOINT' vit*'CHPOINT' ;
  85. err = MAXI (vitp1 - vit) 'ABS' ;
  86. FINPROC err ;
  87. *
  88. ** Erreur Pseudo L2 entre deux Champoints.
  89. *
  90. *
  91. * L2 = \sqrt{\frac{1}{vol} .
  92. * \sum_{i} err_i^2 vol_i}
  93. *
  94. DEBPROC CALCERR2 vitp1*'CHPOINT' vit*'CHPOINT' vol*'CHPOINT' ;
  95. er2 = vitp1 '-' vit ;
  96. compv = 'EXTRAIRE' er2 'COMP' ;
  97. er2 = 'PSCAL' er2 er2 compv compv ;
  98. suppv = 'EXTRAIRE' vol 'MAIL' ;
  99. chpun = 'MANUEL' 'CHPO' suppv 1 'SCAL' 1 ;
  100. voltot = 'XTY' chpun ('MOTS' 'SCAL') vol ('MOTS' 'SCAL') ;
  101. error = 'XTY' er2 ('MOTS' 'SCAL') vol ('MOTS' 'SCAL') ;
  102. error = error '/' voltot ;
  103. error = error '**' 0.5 ;
  104. FINPROC error ;
  105. *
  106. * Procédure paramétrée (raffinement)
  107. * renvoyant l'erreur en norme L2 sur la température.
  108. * On calcule une solution de l'équation de Laplace
  109. * (équations de la chaleur) ;
  110. *
  111. 'DEBPROC' CALCUL nraff*'ENTIER' ;
  112. *nraff=2 ;
  113. *
  114. * titre global pour les dessins
  115. *
  116. titglob = 'CHAINE' ' ; nraff=' nraff ;
  117. *
  118. * Paramètres physiques
  119. *
  120. *
  121. cv= 1.0 ;
  122. mu = 0.0 ;
  123. kappa = 1.0 ;
  124. rho = 1.0 ;
  125. *
  126. * Conditions aux limites et solution exacte:
  127. *
  128. * solex = (alpha '*' x) '+' (beta '*' y) '+' (gamma '*' z) '+'
  129. * (eta '*' x '*' y '*' z) '+' delta
  130. *
  131. alpha = (** 2. 0.5) ;
  132. beta = (** 3. 0.5) ;
  133. gamma = (** 5. 0.5) ;
  134. eta = (** 7. 0.5) ;
  135. delta = (** 1.5 0.5) ;
  136. *
  137. * Géométrie
  138. *
  139. pA = 0. 0. 0. ;
  140. pB = 1. 0. 0. ;
  141. pC = 1. 1. 0. ;
  142. pD = 0. 1. 0. ;
  143. pE = 0. 0. 1. ;
  144. pF = 1. 0. 1. ;
  145. pG = 1. 1. 1. ;
  146. pH = 0. 1. 1. ;
  147. *
  148. * Paramètres de la discrétisation de base
  149. *
  150. nAB = (nraff '+' 1) ;
  151. nBC = (nraff '+' 1) ;
  152. nCD = (nraff '+' 1) ;
  153. nDA = (nraff '+' 1) ;
  154. nH = (nraff '+' 1) ;
  155. *
  156. * Géométrie discrétisée
  157. *
  158. bas = 'DROIT' nAB pA pB ;
  159. droite = 'DROIT' nBC pB pC ;
  160. haut = 'DROIT' nCD pC pD ;
  161. gauche = 'DROIT' nDA pD pA ;
  162. spourt = bas 'ET' droite 'ET' haut 'ET' gauche ;
  163. sbas = 'SURFACE' spourt 'PLAN' ;
  164. mt = 'VOLUME' sbas 'TRAN' nH pE ;
  165. *
  166. 'SI' ('NON' logreg) ;
  167. *
  168. * TET4
  169. *
  170. f1 f2 f3 = 'FACE' mt ;
  171. f1 = 'CHANGER' f1 'TRI3' ;
  172. f2 = 'CHANGER' f2 'TRI3' ;
  173. f3 = 'CHANGER' f3 'TRI3' ;
  174. ss = (f1 'ET' f2 'ET' f3) ;
  175. mt = 'VOLUME' ss ;
  176. 'SINON' ;
  177. f1 = sbas ;
  178. 'FINSI' ;
  179. *
  180. * Eventuellement, on trace le résultat
  181. *
  182. 'SI' graph ;
  183. titgeo = 'CHAINE' 'mt ' 'NBPO=' ('NBNO' mt)
  184. ' NBELEM=' ('NBEL' mt) titglob ;
  185. 'TRACER' mt 'TITRE' titgeo ;
  186. 'FINSI' ;
  187. *
  188. * Definition des cotés gauche et bas
  189. *
  190. cnt = 'ENVE' mt 'COULEUR' 'VERT' ;
  191. 'SI' (graph ET FAUX) ;
  192. 'TRACER' (mt 'ET' cnt) 'TITRE' 'Enveloppe' ;
  193. 'FINSI' ;
  194. *
  195. * Creation des modèles
  196. *
  197. * MODELS
  198. $mt = 'MODE' mt 'EULER' ;
  199. $cnt = 'MODE' cnt 'EULER' ;
  200. $f1 = 'MODE' f1 'EULER' ;
  201. *
  202. Tmt = 'DOMA' $mt 'VF' ;
  203. Tcnt = 'DOMA' $cnt 'VF' ;
  204. Tf1 = 'DOMA' $f1 'VF' ;
  205. * QUAF
  206. Mmt = Tmt . 'QUAF' ;
  207. Mcnt = Tcnt . 'QUAF' ;
  208. Mf1 = Tf1 . 'QUAF' ;
  209. 'ELIM' (Mmt 'ET' Mcnt 'ET' Mf1) 1.E-8 ;
  210. * CHAMPOINT vide et MATRIK vide
  211. chvid matvid = 'KOPS' 'MATRIK' ;
  212. *
  213. * Solution exacte bilinéaire (sur le centre du contour)
  214. *
  215. xx yy zz = 'COORDONNEE' ('DOMA' $cnt 'CENTRE') ;
  216. solex = (xx '*' alpha) '+' (yy '*' beta) '+'
  217. (zz '*' gamma) '+'
  218. (xx '*' yy '*' zz '*' eta) '+' delta ;
  219. *
  220. * Solution exacte aux centres
  221. *
  222. xxc yyc zzc = 'COORDONNEE' ('DOMA' $mt 'CENTRE') ;
  223. solexc = (xxc '*' alpha) '+' (yyc '*' beta) '+'
  224. (zzc '*' gamma) '+'
  225. (xxc '*' yyc '*' zzc '*' eta) '+' delta ;
  226. *
  227. * Gradient exact (aux faces)
  228. *
  229. xxf yyf zzf = 'COORDONNEE' ('DOMA' $mt 'FACE') ;
  230. gradtx = 'NOMC' 'UX' (alpha '+' (yyf '*' zzf '*' eta)) 'NATU'
  231. 'DISCRET' ;
  232. gradty = 'NOMC' 'UY' (beta '+' (xxf '*' zzf '*' eta)) 'NATU'
  233. 'DISCRET' ;
  234. gradtz = 'NOMC' 'UZ' (gamma '+' (xxf '*' yyf '*' eta)) 'NATU'
  235. 'DISCRET' ;
  236. *
  237. * Mise en place du calcul numérique
  238. *
  239. * Mise en place du calcul numérique
  240. *
  241. * équation de Laplace
  242. *
  243. * on utilise une méthode de Newton pour résoudre :
  244. * - \Delta T = 0 (\Delta opérateur laplacien)
  245. * - avec T donné sur gauche (CL de Dirichlet)
  246. * grad(T) \cdot next donné ailleurs
  247. *
  248. * T_0 : estimation initiale de la solution
  249. * On a T_1 = T_0 - {\Delta'}^{-1} (\Delta T_0)
  250. *
  251. * L'opérateur 'LAPN' 'VF' nous donne la matrice \Delta' et le
  252. * résidu \Delta T_0.
  253. * On n'inverse bien évidemment pas \Delta' mais on résoud le système:
  254. * \Delta' IncT = \Delta T_0
  255. * => IncT = {\Delta'}^{-1} (\Delta T_0)
  256. *
  257. * La méthode de Newton doit converger en un pas (on vérifie que le
  258. * résidu (\Delta T_1) est nul après le premier pas.
  259. *
  260. *
  261. rho0 = 'MANUEL' 'CHPO' ('DOMA' $mt 'CENTRE') 1 'SCAL' 1.0 ;
  262. v0 = 'MANUEL' 'CHPO' ('DOMA' $mt 'CENTRE') 3 'UX' 0.0 'UY' 0.0
  263. 'UZ' 0.0 ;
  264. cdirv = 'MANUEL' 'POI1' ('POIN' 1 ('DOMA' $cnt 'CENTRE')) ;
  265. cvnv = 'DIFF' ('DOMA' $cnt 'CENTRE') cdirv ;
  266. v0li1 = 'MANUEL' 'CHPO' cdirv 3 'UX' 0.0 'UY' 0.0 'UZ' 0.0 ;
  267. v0li2 = 'MANUEL' 'CHPO' cvnv 9 'P1DX' 0.0 'P1DY' 0.0 'P1DZ' 0.0
  268. 'P2DX' 0.0 'P2DY' 0.0 'P2DZ' 0.0
  269. 'P3DX' 0.0 'P3DY' 0.0 'P3DZ' 0.0 ;
  270. taulim = 'MANUEL' 'CHPO' cvnv 6 'TXX' 0.0 'TYY' 0.0 'TXY' 0.0
  271. 'TZZ' 0.0 'TXZ' 0.0 'TYZ' 0.0 ;
  272. gradv0 mchamv = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'UX' 'UY' 'UZ')
  273. ('MOTS' 'P1DX' 'P1DY' 'P1DZ' 'P2DX' 'P2DY' 'P2DZ'
  274. 'P3DX' 'P3DY' 'P3DZ') v0 v0li1 v0li2 ;
  275. *
  276. t0 = 'MANU' 'CHPO' ('DOMA' $mt 'CENTRE') 1 'SCAL' 0.D0 ;
  277. *
  278. * We impose Dirichlet boundary conditions on cdir
  279. *
  280. cdir = ('DOMA' $f1 'CENTRE') ;
  281. * cvn = set of FACE centers where we impose von Neumann boundary
  282. * conditions
  283. cvn = ('DIFF' ('DOMA' $cnt 'CENTRE') cdir) 'COUL' 'TURQ' ;
  284. 'SI' graph ;
  285. 'TRACER' (cnt et cvn) 'TITRE' 'Von Neumann B.C.' ;
  286. 'TRACER' (cnt et cdir) 'TITRE' 'Dirichlet B.C.' ;
  287. 'FINSI' ;
  288. tlim1 = 'REDU' solex cdir ;
  289. gradtl = 'REDU' (gradtx 'ET' gradty 'ET' gradtz) cvn ;
  290. tlim2 = 'NOMC' ('MOTS' 'UX' 'UY' 'UZ') ('MOTS' 'P1DX' 'P1DY' 'P1DZ')
  291. gradtl ;
  292. gradt0 mchamt = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
  293. ('MOTS' 'P1DX' 'P1DY' 'P1DZ') t0 tlim1 tlim2 ;
  294. * Jacobian
  295. * We use the 'NS' jacobian
  296. listinco = 'MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN' 'RETN' ;
  297. qchal = -1.0 '*' kappa '*' (gradtx 'ET' gradty 'ET' gradtz) ;
  298. qlim = 'REDU' qchal cvn ;
  299. jaco chpres dt = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  300. $mt mu kappa cv rho0 v0 t0 gradv0 gradt0 mchamv mchamt
  301. 'VIMP' v0li1 'TAUI' taulim 'QIMP' qlim 'TIMP' tlim1 listinco ;
  302. mamat = 'KOPS' 'MULT' -1.0D0 jaco ;
  303. * Identity matrix for momentum and density contribution
  304. mati = 'KOPS' 'MATIDE' ('MOTS' 'RN' 'RUXN' 'RUYN' 'RUZN')
  305. ('DOMA' $mt 'CENTRE') 'MATRIK' ;
  306. matot = 'ET' mamat mati ;
  307. *
  308. rv = 'EQEX' ;
  309. rv . 'METHINV' . 'TYPINV' = 3 ;
  310. rv . 'METHINV' . 'PRECOND' = 3 ;
  311. rv . 'METHINV' . 'MATASS' = matot ;
  312. rv . 'METHINV' . 'MAPREC' = matot ;
  313. deltat = 'KRES' matot 'TYPI' (rv . 'METHINV')
  314. 'SMBR' ('EXCO' chpres 'RETN' 'RETN')
  315. 'IMPR' 0 ;
  316. t1 = t0 '+' ('EXCO' deltat 'RETN' 'SCAL') ;
  317. gradt1 mchamt = 'PENT' $mt 'FACE' 'DIAMAN2' ('MOTS' 'SCAL')
  318. ('MOTS' 'P1DX' 'P1DY' 'P1DZ') t1 tlim1 tlim2 ;
  319. * We check that the residuum is 0 if computed with
  320. * gradt1 and t1
  321. jaco chpres1 dt1 = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  322. $mt mu kappa cv rho0 v0 t1 gradv0 gradt1 mchamv mchamt
  323. 'VIMP' v0li1 'TAUI' taulim 'QIMP' qlim 'TIMP' tlim1 listinco ;
  324. * jacbid chpres1 dt = 'LAPN' 'VF' 'PROPCOST' 'RESI' 'IMPL'
  325. * $mt mu kappa cv rho0 v0 t1 gradv0 gradt1 mchamv mchamt
  326. * 'QIMP' qlim 'TIMP' tlim1 listinco ;
  327. mres1 = 'MAXIMUM' ('EXCO' chpres1 'RETN') 'ABS' ;
  328. 'MESSAGE' ('CHAINE' 'Maxi. chpres1 =' mres1) ;
  329. 'SI' ('>' mres1 1.e-5) ;
  330. 'MESSAGE' 'La méthode de Newton na pas converge en un pas.' ;
  331. chm_err = 'KCHA' $mt 'CHAM' (chpres1 '-' chpres) ;
  332. titt = 'CHAINE' 'Erreur sur le residu ' titglob ;
  333. 'TRACER' chm_err $mt 'TITRE' titt ;
  334. 'ERREUR' 5 ;
  335. 'FINSI' ;
  336. *
  337. * Résultats
  338. *
  339. 'SI' graph ;
  340. *
  341. * solutions exactes
  342. *
  343. tn = solexc ;
  344. chm_tnex = 'KCHA' $mt 'CHAM' tn ;
  345. titt = 'CHAINE' 'Température exacte' titglob ;
  346. 'TRACER' chm_tnex $mt nbisov 'TITRE' titt ;
  347. *
  348. * graphe de convergence de la méthode itérative
  349. *
  350. conver = (rv . 'METHINV' . 'CONVINV') ;
  351. dimcon = 'DIME' conver ;
  352. labs = 'PROG' 1.D0 'PAS' 1.D0 dimcon ;
  353. lord = ('LOG' conver) '/' ('LOG' 10.D0) ;
  354. evtot = 'EVOL' 'MANU' 'ITER' labs 'RESID' lord ;
  355. titev = 'CHAINE' 'Historique de convergence' titglob ;
  356. 'DESSIN' evtot 'TITR' titev 'LEGE' ;
  357. *
  358. * solutions calculées
  359. *
  360. tn = t1 ;
  361. chm_tn = 'KCHA' $mt 'CHAM' tn ;
  362. titt = 'CHAINE' 'Température calculée' titglob ;
  363. 'TRACER' chm_tn $mt nbisov 'TITRE' titt ;
  364. *
  365. * erreur
  366. *
  367. titt = 'CHAINE' 'Abs (Température calculée - Température exacte)'
  368. titglob ;
  369. 'TRACER' ('ABS' (chm_tnex '-' chm_tn)) $mt nbisov 'TITRE' titt ;
  370. 'FINSI' ;
  371. *
  372. * Calcul des erreurs par rapport à la solution analytique
  373. *
  374. vol = 'DOMA' $mt 'VOLUME' ;
  375. echloc = (('MESURE' mt) '/' ('NBEL' mt)) ** (1. '/' 3.) ;
  376. tn = t1 ;
  377. errlit = CALCERR tn solexc ;
  378. errl2t = CALCERR2 tn solexc vol ;
  379. 'MESSAGE' '-------------------------------------------------' ;
  380. 'MESSAGE' ('CHAINE' 'Erreur en norme LINF : ' errlit) ;
  381. 'MESSAGE' ('CHAINE' 'Erreur en norme L2 : ' errl2t) ;
  382. 'MESSAGE' '-------------------------------------------------' ;
  383. 'FINPROC' echloc errl2t ;
  384. * Fin de la procédure de calcul *
  385. *___________________________________________________________*
  386. *-----------------------------------------------------------
  387. * Paramètres du calcul
  388. *
  389. * lraff : nb raffinement du maillage (à chaque fois, on découpe
  390. * les éléments en quatre).
  391. 'SI' complet ;
  392. lraff = 'LECT' 7 PAS 1 8 ;
  393. 'SINON' ;
  394. lraff = 'LECT' 4 PAS 1 5 ;
  395. 'FINSI' ;
  396. *
  397. *-----------------------------------------------------------*
  398. * Boucles sur les différents paramètres du calcul *
  399. precok = VRAI ;
  400. * ordre théorique en espace de la méthode
  401. ordtth = 2 ;
  402. * erreur L2 max pour la solution (raffinement 2, complet=FAUX)
  403. errtmax = 1.D-2 ;
  404. *
  405. * Boucle sur les raffinements
  406. *
  407. lh = 'PROG' ;
  408. lerl2t = 'PROG' ;
  409. 'REPETER' iraff ('DIME' lraff) ;
  410. raff = 'EXTRAIRE' lraff &iraff ;
  411. h errt = CALCUL raff ;
  412. lh = 'ET' lh ('PROG' h ) ;
  413. lerl2t = 'ET' lerl2t ('PROG' errt) ;
  414. 'FIN' iraff ;
  415. lh = lh '/' ('EXTRAIRE' lh 1) ;
  416. lh = ('LOG' lh) '/' ('LOG' 10.D0) ;
  417. lerl2t = ('LOG' lerl2t) '/' ('LOG' 10.D0) ;
  418. tl2 = 'EVOL' 'MANU' 'Long. carac.' lh
  419. 'Err. tempér.' lerl2t ;
  420.  
  421. *
  422. * Recherche des ordres de convergence
  423. *
  424. cpt tlipol = @POMI tl2 1 'IDEM' ;
  425. ordt = cpt . 1 ;
  426. 'MESSAGE' ('CHAINE' 'ordre température=' ordt) ;
  427. *
  428. * Tracés graphiques
  429. *
  430. 'SI' graph ;
  431. tableg = 'TABLE' ;
  432. tableg . 'TITRE' = 'TABLE' ;
  433. tableg . 1 = 'MARQ CROI NOLI' ;
  434. tableg . 'TITRE' . 1 = 'Erreur L2 calculée' ;
  435. tableg . 2 = 'TIRR' ;
  436. tableg . 'TITRE' . 2 = 'Erreur L2 interpolée' ;
  437. titdest= 'CHAINE' 'Err L2 Tempér., ordre=' ordt ;
  438. 'DESSIN' (tl2 'ET' tlipol) 'TITRE' titdest tableg ;
  439. 'FINSI' ;
  440. *
  441. * Tests des ordres de convergence
  442. * Tests des erreurs L2 sur le maillage le plus fin dans le
  443. * cas complet=faux
  444. *
  445. ordok = ordt > (ordtth '-' 0.9 ) ;
  446. 'SI' ('EGA' complet FAUX) ;
  447. precok = 'ET' precok ('<' errt errtmax) ;
  448. 'FINSI' ;
  449. 'SI' ('NON' ordok) ;
  450. 'MESSAGE' 'On n_obtient pas un ordre de convergence correct' ;
  451. 'ERREUR' 5 ;
  452. 'FINSI' ;
  453. 'SI' ('NON' precok) ;
  454. 'MESSAGE' 'On n_obtient pas une précision correcte' ;
  455. 'ERREUR' 5 ;
  456. 'FINSI' ;
  457.  
  458. 'SI' interact ;
  459. 'OPTION' 'ECHO' 1 ;
  460. 'OPTION' 'DONN' 5 ;
  461. 'SI' logxmgr ;
  462. * Sortie pour xmgr
  463. 'OPTION' ECHO 0 ;
  464. 'OPTION' 'IMPR' 'file.txt' ;
  465. ndim = 'DIME' lh ;
  466. 'REPETER' BL1 ndim ;
  467. 'MESSAGE' ('EXTRAIRE' lh &BL1) ' ' ('EXTRAIRE' lerl2t &BL1) ;
  468. 'FIN' BL1 ;
  469. lh1 = 'EXTRAIRE' tlipol 'ABSC' ;
  470. lerr = 'EXTRAIRE' tlipol 'ORDO' ;
  471. ndim = 'DIME' lh1 ;
  472. 'OPTION' 'IMPR' 'poubelle.txt' ;
  473. 'FIN' ;
  474. 'FINSI' ;
  475. 'FINSI' ;
  476.  
  477. 'MESSAGE' 'Tout s_est bien passé' ;
  478. 'FIN' ;
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  

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