Télécharger equ_chaleurVF2_dirneuvfsym.dgibi

Retour à la liste

Numérotation des lignes :

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

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