Télécharger equ_chaleur3D_VFcyl.dgibi

Retour à la liste

Numérotation des lignes :

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

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