Télécharger smithhutton_cvg.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : smithhutton_cvg.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTI' 'ECHO' 0 ;
  5. ************************************************************************
  6. * NOM : SMITHHUTTON_CVG
  7. * DESCRIPTION : Une variante du cas-test de convection-diffusion d'un
  8. * scalaire dû à Smith et Hutton [1]
  9. * (voir aussi smithhutton.dgibi)
  10. *
  11. * On cherche à vérifier les ordres de convergence spatiale pour les
  12. * éléments quadratiques et linéaires avec une méthode de discrétisation
  13. * 'CENTREE' pour les termes de convection et à Péclet=20.
  14. *
  15. * Pour ce faire, on construit une solution de référence sur un maillage
  16. * fin et on calcule les ordres avec des maillages plus grossiers.
  17. * On compare les évolutions de la solution sur la frontière de sortie
  18. * avec une norme L2 discrète.
  19. *
  20. * Pour retrouver les ordres de convergence, il y a plusieurs subtilités
  21. * :
  22. * - la première est que le cas proposé par Smith et Hutton présente une
  23. * singularité au point (0,0) : en effet, on passe d'une condition à la
  24. * limite de Dirichlet (température imposée) à gauche, à une condition de
  25. * Neumann (flux diffusif nul) à droite, sur le bord rectiligne bas du
  26. * domaine. Il s'agit de la singularité Dirichlet-Neumann expliquée, par
  27. * exemple, dans mon cours sur le Laplacien p.26 [2]. Les ordres
  28. * théoriques de convergence sont de 1 lorsque la solution cherchée
  29. * présente ce type de singularité.
  30. *
  31. * Pour s'affranchir de cette singularité, on peut modifier le cas en ne
  32. * gardant que le demi-domaine x>0 et en imposant la condition d'entrée
  33. * en tangente hyperbolique sur le côté gauche (x=0) de ce demi-domaine.
  34. * On introduit la variable logique demi : si demi=faux, on a le cas
  35. * singulier et si demi=vrai, on a le cas régulier.
  36. *
  37. * - la deuxième subtilité est que lorsqu'on utilise IPOL pour calculer
  38. * l'erreur, on introduit également une erreur en O(h^2) car IPOL utilise
  39. * une interpolation linéaire par morceaux ! Pour remédier à ce problème,
  40. * on peut utiliser une interpolation par spline cubique en O(h^4) en
  41. * précisant le mot-clé 'SPLINE' à IPOL. On introduit la variable logique
  42. * spli pour ce faire dans le jeu de données.
  43. *
  44. * Les résultats de l'étude avec ces deux paramètres plus le type
  45. * d'éléments finis sont les suivants (complet = vrai) :
  46. *
  47. * EF demi spli || ordre p de minimum du log10
  48. * || convergence de l'erreur
  49. * ------------------------------------------------------------------
  50. * QUAF VRAI VRAI || 3.6 -7.5
  51. * QUAF VRAI FAUX || 1.9 -4.7
  52. *
  53. * LINE VRAI VRAI || 2.2 -4.7
  54. * ------------------------------------------------------------------
  55. * QUAF FAUX VRAI || 1.7 -3.0
  56. * LINE FAUX VRAI || 1.3 -2.8
  57. * ------------------------------------------------------------------
  58. *
  59. * Les deux premières lignes illustrent le fait que si l'on n'utilise pas
  60. * l'option SPLINE, on massacre le calcul de l'erreur lorsque celle-ci
  61. * est petite. Les lignes 1 et 3 donnent des ordres de convergence
  62. * consistants avec la théorie pour le cas régulier : ordre 3 pour les
  63. * éléments quadratiques (ici 3.6) et 2 pour les éléments linéaires (ici
  64. * 2.2).
  65. *
  66. * Pour le cas singulier (les deux dernières lignes), on observe une
  67. * dégradation des ordres de convergence pour les deux types d'éléments
  68. * finis. On note que les erreurs sont également beaucoup plus grandes
  69. * que dans le cas régulier. L'ordre théorique est de 1, mais il
  70. * faudrait raffiner encore plus pour l'obtenir.
  71. *
  72. * Il serait intéressant d'investiguer le cas du décentrement SUPG et des
  73. * Péclets plus élevés pour voir si les résultats restent cohérents avec
  74. * ces explications.
  75. *
  76. * Pour le cas complet = faux avec des maillages moins fins (résultats
  77. * moins précis) :
  78. *
  79. * EF demi spli || ordre p de minimum du log10
  80. * || convergence de l'erreur
  81. * ------------------------------------------------------------------
  82. * QUAF VRAI VRAI || 6.0 -6.6
  83. * QUAF VRAI FAUX || 2.2 -4.0
  84. *
  85. * LINE VRAI VRAI || 2.7 -3.6
  86. * ------------------------------------------------------------------
  87. * QUAF FAUX VRAI || 2.9 -3.1
  88. * LINE FAUX VRAI || 1.7 -2.4
  89. * ------------------------------------------------------------------
  90. *
  91. * Références :
  92. * [1] Smith, R. M. and Hutton, A. G., THE NUMERICAL TREATMENT OF
  93. * ADVECTION: A PERFORMANCE COMPARISON OF CURRENT METHODS , Numerical
  94. * Heat Transfer vol 5, n4, pp 439-461, 1982
  95. * [2] S. Gounand, Introduction à la méthode des éléments finis en
  96. * mécanique des fluides incompressibles, 2012, Cours ENSTA B2-1
  97. *
  98. *
  99. * LANGAGE : GIBIANE-CAST3M
  100. * AUTEURS : Stéphane GOUNAND (CEA/DEN/DM2S/STMF/LMSF)
  101. * Guillaume BARBA ROSSA (Ecole Polytechnique)
  102. * mél : stephane.gounand@cea.fr
  103. *
  104. **********************************************************************
  105. * VERSION : v1, 22/10/2013, version initiale
  106. * HISTORIQUE : v1, 22/10/2013, création
  107. * HISTORIQUE :
  108. * HISTORIQUE :
  109. ************************************************************************
  110. *
  111. 'SAUTER' 'PAGE' ;
  112. *
  113. interact= FAUX ;
  114. complet = FAUX ;
  115. graph = FAUX ;
  116. *
  117. 'SI' ('NON' interact) ;
  118. 'OPTION' 'TRAC' 'PSC' ;
  119. 'SINON' ;
  120. 'OPTION' 'TRAC' 'X' ;
  121. 'FINSI' ;
  122. 'OPTI' 'DIME' 2 'ELEM' 'QUA4' ;
  123. ************************************************************************
  124. * Procédure pour changer les maillages en QUAF (quadratique fluide)
  125. * faire les éliminations et construire les modèles Navier_Stokes.
  126. *
  127. * SYNTAXE
  128. * mail1 $mail1 mail2 $mail2 ... = MODIF 'LINE' mail1 mail2 .....
  129. * mail1,2,... maillages avant et apres transformation en QUAF
  130. * $mail1,2 ... modeles associes aux maillages.
  131. 'DEBPROC' MODIF DISCR*'MOT';
  132. * on boucle sur les arguments d'entree
  133. * on cree une table pour stocker les arguments
  134. toto = 'TABLE' ESCLAVE;
  135. tata = 'TABLE' ;
  136. 'REPETER' barg ;
  137. * On lit le premier argument
  138. 'ARGUMENT' titi/'MAILLAGE';
  139. 'SI' ('EXISTE' titi) ;
  140. toto . &barg = 'CHANGER' titi 'QUAF' ;
  141. tata . &barg = 'MODELISER' (toto . &barg) 'NAVIER_STOKES' discr;
  142. 'SINON' ;
  143. nargu = &barg '-' 1;
  144. 'QUITTER' barg;
  145. 'FINSI' ;
  146. 'FIN' barg ;
  147. 'ELIMINATION' ('ET' toto) 1.D-6 ;
  148.  
  149. 'REPETER' bsort nargu;
  150. * On sort les arguments
  151. * 'MESSAGE' 'coucou' &bsort;
  152. 'RESPRO' ('DOMA' (tata . &bsort) 'MAILLAGE') ;
  153. 'RESPRO' (tata . &bsort);
  154. * 'RESPRO' (tata . &bsort);
  155. 'FIN' bsort ;
  156. 'FINPROC' ;
  157.  
  158. ***************************************************************
  159. * Procédure appelée dans EQEX pour tracer les champs en cours
  160. * de calcul.
  161. *
  162. 'DEBPROC' TRINCO;
  163. 'ARGUMENT' RVX * 'TABLE';
  164. RV=RVX.'EQEX';
  165.  
  166. 'TRACER' 'NCLK' (RV.'INCO'.'CN') MT;
  167.  
  168. CHVID MATVID = 'KOPS' 'MATRIK';
  169. 'RESPRO' CHVID MATVID;
  170.  
  171. 'FINPROC';
  172.  
  173. ***************************************************************
  174. * Procédure effectuant la résolution du problème de
  175. * convection-diffusion et renvoyant l'erreur ou l'évolution
  176. * de référence (suivant la valeur de REF)
  177. *
  178. 'DEBPROC' CALCUL ;
  179. *'ARGUMENT' hh * 'FLOTTANT' REF * 'ENTIER';
  180. 'ARGUMENT' NX*'ENTIER' REF*'ENTIER';
  181. 'ARGUMENT' MET*'MOT' DISC*'MOT' ;
  182. 'ARGUMENT' Pe*'FLOTTANT' ;
  183. 'ARGUMENT' demi*'LOGIQUE' ;
  184. 'ARGUMENT' spli*'LOGIQUE' ;
  185. NY =NX ;
  186. *MESSAGE (CHAINE 'NX = ' NX ' NY = ' NY);
  187. *MESSAGE (CHAINE 'MET = ' MET ' DISC = ' DISC);
  188. *MESSAGE (CHAINE 'Pe = ' Pe ' demi=' demi ' spli=' spli);
  189. *'h = ' hh '
  190. L=1.; ML = '*' L -1. ;
  191. H=1.;
  192. *
  193. O=0. 0. ;
  194. A=0. H ;
  195. B=ML 0.;
  196. C=ML H ;
  197. D=L H ;
  198. E=L 0.;
  199. *
  200. AO= 'DROIT' NY A O;
  201. OB= 'DROIT' NX O B;
  202. BC= 'DROIT' NY B C;
  203. CA= 'DROIT' NX C A;
  204. AD= 'DROIT' NX A D;
  205. DE= 'DROIT' NY D E;
  206. OE= 'DROIT' NX O E;
  207.  
  208. M1='DALLER' AO OB BC CA;
  209. M2='DALLER' AO OE DE AD;
  210. 'SI' demi ;
  211. MT = M2;
  212. 'SINON' ;
  213. MT = M1 'ET' M2;
  214. 'FINSI' ;
  215. *'TRACER' mt ;
  216. *'ELIMINATION' 1E-4 MT ;
  217. 'SI' demi ;
  218. MT $MT LIMP $LIMP LIN $LIN LOU $LOU = MODIF MT
  219. (AD 'ET' DE) AO OE DISC ;
  220. 'SINON' ;
  221. MT $MT LIMP $LIMP LIN $LIN LOU $LOU = MODIF MT
  222. (BC 'ET' CA 'ET' AD 'ET' DE) OB OE DISC ;
  223. 'FINSI' ;
  224. *LIST (DOMA $MT 'TABLE');
  225. *TRACER ((DOMA $MT 'CENTRE') 'ET' (DOMA $MT 'MAILLAGE')) QUAL;
  226.  
  227. X Y='COORDONNEE' MT;
  228.  
  229. 'SI' demi ;
  230. CIN=1 '+' ('TANH' (10 * ((-2 * Y) '+' 1) ));
  231. CIMP=(0.0*X)+(1 '-' ('TANH' 10));
  232. 'SINON' ;
  233. CIN=1 '+' ('TANH' (10 * ((2 * X) '+' 1) ));
  234. CIMP=(0.0*X)+(1 '-' ('TANH' 10));
  235. 'FINSI' ;
  236. CIN= 'REDU' CIN LIN;
  237. CIMP= 'REDU' CIMP LIMP;
  238.  
  239. *EVC='EVOL' 'CHPO' CIN LIN;
  240. *DESSSIN EVC;
  241.  
  242. *'TRACER' CIMP MT;
  243.  
  244. UX0='NOMC' 'UX' (2*Y*(1-(X**2)));
  245. UY0='NOMC' 'UY' ((-1)*(2*X*(1-(Y**2))));
  246.  
  247. V=UX0 + UY0;
  248. *CVEC='VECT' V 'UX' 'UY';
  249. *TRACER CVEC MT;
  250.  
  251. *description des equations
  252. 'SI' ('EGA' Pe 0. 1.D-6) ;
  253. iPe = 1. ;
  254. 'SINON' ;
  255. iPe = '/' 1. Pe ;
  256. 'FINSI' ;
  257.  
  258. RV = 'EQEX'
  259. 'OPTI' 'EF' 'IMPL'
  260. * 'ITMA' 20
  261. * 'NITER' 10
  262. 'ZONE' $MT
  263. 'OPER' 'LAPN' iPe 'INCO' 'CN' ;
  264.  
  265. *RV = 'EQEX' RV
  266. * 'OPTI' 'EF' 'IMPL' 'CENTREE'
  267. * 'ZONE' $MT
  268. * 'OPER' 'DFDT' 1. 'CN' 1. 'INCO' 'CN' ;
  269.  
  270. *'SI' (REF 'EGA' 1);
  271. * MET='CENTREE';
  272. *
  273. **SINON;
  274. **toujours centree pour la reference
  275. * MET='CENTREE';
  276. *FINSI;
  277.  
  278. *MESSAGE (CHAINE 'methode : ' MET);
  279.  
  280. 'SI' ('NEG' Pe 0. 1.D-6) ;
  281. RV = 'EQEX' RV
  282. 'OPTI' 'EF' 'IMPL' MET
  283. 'ZONE' $MT
  284. 'OPER' 'KONV' 1. 'VITESSE' iPe 'INCO' 'CN' ;
  285. 'FINSI' ;
  286.  
  287. *RV = 'EQEX' RV
  288. * 'ZONE' $MT
  289. * 'OPER' 'TRINCO' ;
  290.  
  291. *description des inconnues, CI
  292. RV.'INCO' = 'TABLE' 'INCO';
  293. RV.'INCO'.'CN' = 'KCHT' $MT 'SCAL' 'SOMMET' 0.;
  294. RV.'INCO'.'VITESSE' = V;
  295.  
  296. *conditions aux limites
  297. RV = 'EQEX' RV
  298. 'CLIM' 'CN' 'TIMP' (LIMP 'ET' LIN) (CIN 'ET' CIMP) ;
  299. rv . 'METHINV' . 'TYPINV' = 3 ;
  300. rv . 'METHINV' . 'IMPINV' = 1 ;
  301. rv . 'METHINV' . 'RESID' = 1.D-20 ;
  302.  
  303. *resolution
  304. EXEC RV;
  305. CN = RV.'INCO'.'CN';
  306.  
  307. *tracer de la solution
  308. *'TRACER' CN MT;
  309.  
  310. *post-traitement
  311. COU = 'REDU' CN LOU;
  312. EVCO = 'EVOL' 'CHPO' COU LOU;
  313. EVCO = EVCO 'COULEUR' 'ROUGE' ;
  314.  
  315. COUPT='EXTR' EVCO 'ORDO';
  316. XOUPT='EXTR' EVCO 'ABSC';
  317. 'SI' spli ;
  318. COUI='IPOL' XOUC XOUPT COUPT 'SPLINE' ;
  319. 'SINON' ;
  320. COUI='IPOL' XOUC XOUPT COUPT ;
  321. 'FINSI' ;
  322.  
  323. *'LISTE' COUI;
  324.  
  325. err=0;
  326.  
  327. SI (REF 'EGA' 0);
  328. err= 'SOMM' ((COUI '-' COUC) '**' 2) ;
  329. NOUT= 'FLOTTANT' ('DIME' COUI);
  330. err = (err '/' NOUT) '**' 0.5 ;
  331. * 'LISTE' err ;
  332. 'MESSAGE' ('CHAINE' 'erreur =' err);
  333.  
  334. * 'DESSIN' (EVCO 'ET' EVEX) 'GRILL' ;
  335. FINSI;
  336.  
  337. 'RESPRO' err COUI;
  338. 'FINPROC';
  339.  
  340. ***************************************************************
  341. * Procédure appelant CALCUL et effectuant le calcul de l'ordre
  342. * de convergence. Elle renvoie également la valeur minimale de
  343. * l'erreur.
  344. *
  345. 'DEBPROC' ODCVG ;
  346. 'ARGUMENT' complet*'LOGIQUE' ;
  347. 'ARGUMENT' Pe*'FLOTTANT' ;
  348. 'ARGUMENT' disc*'MOT' ;
  349. 'ARGUMENT' met*'MOT' ;
  350. 'ARGUMENT' demi*'LOGIQUE' ;
  351. 'ARGUMENT' spli*'LOGIQUE' ;
  352. *
  353.  
  354. 'SI' complet ;
  355. 'SI' ('EGA' disc 'QUAF') ;
  356. LNX = 'LECT' 200 70 50 30 20 10 ;
  357. 'SINON' ;
  358. LNX = 'LECT' 400 140 100 70 50 30 20 10 ;
  359. 'FINSI' ;
  360. 'SINON' ;
  361. 'SI' ('EGA' disc 'QUAF') ;
  362. LNX = 'LECT' 40 30 25 ;
  363. 'SINON' ;
  364. LNX = 'LECT' 60 35 25 10 ;
  365. 'FINSI' ;
  366. 'FINSI' ;
  367. NXREF = 'EXTRAIRE' LNX 1 ;
  368. *MET = 'CENTREE' ;
  369. *DEMI = vrai ; SPLI = vrai ;
  370. *
  371. XOUC = PROG 0. 'PAS' (1.0 '/' (FLOTTANT (NXREF))) 1.0 ;
  372. *XOUC = PROG 0. 'PAS' 0.1 1.0 ;
  373. href=2.0 * (1.0 '/' (FLOTTANT (NXREF)));
  374. err COUC=CALCUL nxref 1 MET DISC Pe DEMI spli ;
  375. EVEX = 'EVOL' 'MANUEL' XOUC COUC;
  376. EVEX = EVEX 'COULEUR' 'BLEU' ;
  377. *
  378. lnxr = 'EXTRAIRE' LNX ('LECT' 2 'PAS' 1 ('DIME' LNX)) ;
  379. lh = '**' ('FLOTTANT' lnxr) -1. ;
  380. *
  381. *lh='PROG' 0.1 'PAS' -0.01 0.01;
  382. lerr='PROG';
  383.  
  384. NLH='DIME' lh;
  385.  
  386. 'REPETER' bcl NLH;
  387. hh='EXTRAIRE' lnxr &bcl;
  388. err COUI=CALCUL hh 0 MET DISC Pe DEMI spli ;
  389. lerr=lerr 'ET' ('PROG' err);
  390. 'FIN' bcl;
  391. llh = '/' ('LOG' lh) ('LOG' 10.) ;
  392. llerr = '/' ('LOG' lerr ) ('LOG' 10.) ;
  393.  
  394. EVERR='EVOL' 'MANU' llh llerr ;
  395. *DESSIN EVERR 'GRILL';
  396. * determination de la pente
  397.  
  398. *X0='LOG' ('EXTRAIRE' lh NLH);
  399. *X0 = '/' X0 ('LOG' 10.) ;
  400. *X1='LOG' ('EXTRAIRE' lh ('-' NLH 1));
  401. *X1 = '/' X1 ('LOG' 10.) ;
  402. EVEI = 'EXTRAIRE' EVERR 'AVAN' 'INDI' 2;
  403. *EVEI = 'EXTRAIRE' EVEI 'APRE' X0;
  404. TCN PN = @POMI EVEI 1;
  405. ordp = TCN . 1 ;
  406. minr = 'MINIMUM' ('EXTRAIRE' evei 'ORDO') ;
  407. *
  408. tit = 'CHAINE' 'MET = ' MET ' DISC = ' DISC ' Pe = ' Pe
  409. ' demi=' demi ' spli=' spli ;
  410. 'SI' graph ;
  411. DESSIN (EVERR 'ET' PN) 'GRILL' 'TITR' tit ;
  412. 'FINSI' ;
  413. 'MESSAGE' tit ;
  414. tr = 'CHAINE' 'ord.=' ordp ' min. log10 err.=' minr ; ;
  415. 'MESSAGE' tr ;
  416. 'RESPRO' ordp minr ;
  417. 'FINPROC' ;
  418.  
  419. ***************************************************************
  420. * Jeu de donnés effectuant le test des ordres de convergences
  421. * pour diverses options.
  422. *
  423. Pe=20. ;
  424. tabtest = 'TABLE' ;
  425. tabtest . 1 = 'TABLE' ;
  426. tabtest . 1 . 'disc' = 'QUAF' ;
  427. tabtest . 1 . 'demi' = VRAI ;
  428. tabtest . 1 . 'spli' = VRAI ;
  429. tabtest . 1 . 'ordtheo' = 3 ;
  430. 'SI' complet ;
  431. tabtest . 1 . 'errminr' = -7.4 ;
  432. 'SINON' ;
  433. tabtest . 1 . 'errminr' = -6.5 ;
  434. 'FINSI' ;
  435. tabtest . 2 = 'TABLE' ;
  436. tabtest . 2 . 'disc' = 'QUAF' ;
  437. tabtest . 2 . 'demi' = VRAI ;
  438. tabtest . 2 . 'spli' = FAUX ;
  439. tabtest . 2 . 'ordtheo' = 2 ;
  440. 'SI' complet ;
  441. tabtest . 2 . 'errminr' = -4.6 ;
  442. 'SINON' ;
  443. tabtest . 2 . 'errminr' = -3.9 ;
  444. 'FINSI' ;
  445. tabtest . 3 = 'TABLE' ;
  446. tabtest . 3 . 'disc' = 'LINE' ;
  447. tabtest . 3 . 'demi' = VRAI ;
  448. tabtest . 3 . 'spli' = VRAI ;
  449. tabtest . 3 . 'ordtheo' = 2 ;
  450. 'SI' complet ;
  451. tabtest . 3 . 'errminr' = -4.6 ;
  452. 'SINON' ;
  453. tabtest . 3 . 'errminr' = -3.5 ;
  454. 'FINSI' ;
  455. tabtest . 4 = 'TABLE' ;
  456. tabtest . 4 . 'disc' = 'QUAF' ;
  457. tabtest . 4 . 'demi' = FAUX ;
  458. tabtest . 4 . 'spli' = VRAI ;
  459. tabtest . 4 . 'ordtheo' = 1 ;
  460. 'SI' complet ;
  461. tabtest . 4 . 'errminr' = -2.9 ;
  462. 'SINON' ;
  463. tabtest . 4 . 'errminr' = -2.9 ;
  464. 'FINSI' ;
  465. tabtest . 5 = 'TABLE' ;
  466. tabtest . 5 . 'disc' = 'LINE' ;
  467. tabtest . 5 . 'demi' = FAUX ;
  468. tabtest . 5 . 'spli' = VRAI ;
  469. tabtest . 5 . 'ordtheo' = 1 ;
  470. 'SI' complet ;
  471. tabtest . 5 . 'errminr' = -2.7 ;
  472. 'SINON' ;
  473. tabtest . 5 . 'errminr' = -2.4 ;
  474. 'FINSI' ;
  475. * Les calculs
  476. 'REPETER' itest ('DIME' tabtest) ;
  477. tt = tabtest . &itest ;
  478. disc = tt . 'disc' ;
  479. demi = tt . 'demi' ;
  480. spli = tt . 'spli' ;
  481. ordp minr = ODCVG complet Pe disc 'CENTREE' demi spli ;
  482. topt = 'CHAINE' 'disc=' disc ' demi=' demi ' spli=' spli ;
  483. tt . 'topt' = topt ;
  484. tt . 'ordp' = ordp ;
  485. tt . 'minr' = minr ;
  486. 'FIN' itest ;
  487. * Les tests
  488. lok = VRAI ;
  489. 'REPETER' itest ('DIME' tabtest) ;
  490. tt = tabtest . &itest ;
  491. ordtheo = tt . 'ordtheo' ;
  492. errminr = tt . 'errminr' ;
  493. topt = tt . 'topt' ;
  494. ordp = tt . 'ordp' ;
  495. minr = tt . 'minr' ;
  496. 'SAUTER' 1 'LIGN' ;
  497. 'MESSAGE' ('CHAINE' 'Test ' &itest ' ' topt) ;
  498. 'MESSAGE' ('CHAINE' 'ordtheo =' ordtheo ' ordcalc =' ordp) ;
  499. 'MESSAGE' ('CHAINE' 'minrtheo=' errminr ' minrcalc=' minr) ;
  500. tok = (ordp '>' ('-' ordtheo 0.1)) 'ET' (minr '<' errminr) ;
  501. 'SI' ('NON' tok) ;
  502. 'MESSAGE' '!!!!! Pas bon !!!!!!!' ;
  503. 'FINSI' ;
  504. lok = lok 'ET' tok ;
  505. 'FIN' itest ;
  506. *
  507. 'SAUTER' 2 'LIGNE' ;
  508. 'SI' lok ;
  509. 'MESSAGE' 'Tout sest bien passe' ;
  510. 'SINON' ;
  511. 'MESSAGE' 'Il y a eu des erreurs' ;
  512. 'FINSI' ;
  513. 'SAUTER' 2 'LIGNE' ;
  514. 'SI' ('NON' lok) ;
  515. 'ERREUR' 5 ;
  516. 'FINSI' ;
  517. *
  518. * Fin des tests
  519. *
  520. ************************************************************************
  521. 'SI' interact ;
  522. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  523. 'FINSI' ;
  524. *
  525. 'FIN' ;
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  

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