Télécharger equ_chaleur2D_VF2.dgibi

Retour à la liste

Numérotation des lignes :

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

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