Télécharger mailtopo.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mailtopo.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. 'OPTI' 'ECHO' 0 ;
  5. graph = faux ;
  6. interact = faux ;
  7. impr = 1 ;
  8. for = '(E11.3)' ;
  9. ************************************************************************
  10. * NOM : MAILTOPO
  11. * DESCRIPTION : Tests du mailleur topologique utilise
  12. * dans les operateurs TRIA TOPO et REMA
  13. * Geometries variees mais tenseur metrique homogene et
  14. * isotrope
  15. *
  16. *
  17. * LANGAGE : GIBIANE-CAST3M
  18. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  19. * mél : stephane.gounand@cea.fr
  20. **********************************************************************
  21. * VERSION : v1, 31/10/2025, version initiale
  22. * HISTORIQUE : v1, 31/10/2025, création
  23. * HISTORIQUE :
  24. * HISTORIQUE :
  25. ************************************************************************
  26. *
  27. * Procedures
  28. *
  29. * Mini, mediane et maxi d'un MCHAML
  30. 'DEBP' MIMEMA ;
  31. 'ARGU' ch*'MCHAML' ;
  32. 'ARGU' cmp*'MOT' ;
  33. lr = 'EXTR' (CHGRAV ch) 'VALE' cmp ;
  34. lro = 'ORDO' lr ; dlr = 'DIME' lr ;
  35. mil = 'EXTR' lro 1 ; mal = 'EXTR' lro dlr ;
  36. mel = 'EXTR' lro ('/' ('+' 1 dlr) 2) ;
  37. 'FINP' mil mel mal ;
  38. * Passage au gravite d'un MCHAML
  39. 'DEBP' CHGRAV ch*'MCHAML';
  40. 'FINP' ('CHAN' ch ('MODE' ('EXTR' ch 'MAIL') 'THERMIQUE') 'GRAVITE') ;
  41. ************************************************************************
  42. * NOM : GENTEST
  43. * DESCRIPTION : Génère une table contenant des cas-tests pour
  44. * utilisation dans mailtopo
  45. *
  46. * Pour l'instant, tous ces cas ont une métrique constante.
  47. *
  48. *
  49. * LANGAGE : GIBIANE-CAST3M
  50. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  51. * mél : stephane.gounand@cea.fr
  52. **********************************************************************
  53. * VERSION : v1, 28/11/2017, version initiale
  54. * HISTORIQUE : v1, 28/11/2017, création
  55. * HISTORIQUE :
  56. * HISTORIQUE :
  57. ************************************************************************
  58. *
  59. 'DEBPROC' GENTEST ;
  60. 'ARGUMENT' nomdbase*'MOT' ;
  61. *
  62. ikas = 0 ;
  63. tkas = 'TABL' ;
  64. *
  65. l2f = 'EGA' nomdbase 'mailtopo_2d_fast' ;
  66. l2s = 'EGA' nomdbase 'mailtopo_2d_slow' ;
  67. l3f = 'EGA' nomdbase 'mailtopo_3d_fast' ;
  68. l3s = 'EGA' nomdbase 'mailtopo_3d_slow' ;
  69. 'SI' (l2f 'OU' l2s 'OU' l3f 'OU' l3s) ;
  70. 'SI' ('OU' l2s l2f) ;
  71. lcont = 'MOTS' 'QUAD' 'TRIE' 'SELL' 'TOC3' 'TOR2' ;
  72. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  73. 'FINS' ;
  74. 'SI' ('OU' l3s l3f) ;
  75. lcont = 'MOTS' 'TETE' 'CUBE' 'SEL3' 'CYC2' ;
  76. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  77. 'FINS' ;
  78. vdim = 'VALE' 'DIME' ;
  79. * braff = 1 : on génère un maillage sans insertion de noeud
  80. * braff = 2 : on génère un maillage avec insertion/suppression de noeud
  81. * braff = 3 : on génère un maillage avec insertion/suppression de noeud y compris au bord
  82. * braff = 4 : on raffine
  83. * braff = 5 : on déraffine
  84. * braff = 6 : on améliore
  85. 'REPE' braff 6 ;
  86. iraff = &braff ;
  87. * 'REPE' braff 1 ;
  88. * iraff = 4 ;
  89. 'REPE' bcont ('DIME' lcont) ;
  90. icont = &bcont ;
  91. ccont = 'EXTR' lcont icont ;
  92. * Par défaut
  93. 'SI' l2f ;
  94. lidens = 'LECT' 1 2 3 4 5 ;
  95. 'SI' ('EGA' ccont 'SELL') ;
  96. lidens = 'LECT' 1 2 3 ;
  97. 'FINS' ;
  98. 'SI' ('OU' ('EGA' ccont 'TOC3') ('EGA' ccont 'TOR2')) ;
  99. lidens = 'LECT' 1 2 ;
  100. 'SI' ('ET' ('EGA' ccont 'TOR2') ('<' iraff 4)) ;
  101. lidens = 'LECT' ;
  102. 'FINS' ;
  103. 'FINS' ;
  104. 'FINS' ;
  105. 'SI' l2s ;
  106. lidens = 'LECT' 6 ;
  107. 'SI' ('EGA' ccont 'SELL') ;
  108. lidens = 'LECT' 4 5 ;
  109. 'FINS' ;
  110. 'SI' ('OU' ('EGA' ccont 'TOC3') ('EGA' ccont 'TOR2')) ;
  111. lidens = 'LECT' 3 4 ;
  112. 'SI' ('ET' ('EGA' ccont 'TOR2') ('<' iraff 4)) ;
  113. lidens = 'LECT' ;
  114. 'FINS' ;
  115. 'FINS' ;
  116. 'FINS' ;
  117. 'SI' l3f ;
  118. lidens = 'LECT' 1 2 ;
  119. 'FINS' ;
  120. 'SI' l3s ;
  121. lidens = 'LECT' 3 ;
  122. 'FINS' ;
  123. *
  124. ddens = 'DIME' lidens ;
  125. 'SI' ('>' ddens 0) ;
  126. 'REPE' bidens ddens ;
  127. idens = 'EXTR' lidens &bidens ;
  128. *
  129. ikas = '+' ikas 1 ;
  130. tkas . ikas = 'TABL' ; tloc = tkas . ikas ;
  131. *
  132. idk = 'CHAI' 'r' iraff 'c' ccont 'd' idens ;
  133. tloc . 'idk' = idk ;
  134. 'MESS' ('CHAI' 'Generation cas ' ikas ' ' idk) ;
  135. * Génération de la topologie initiale
  136. 'SI' ('EXIS' ('LECT' 1 2 3) iraff) ;
  137. topoini = gencont ccont idens ;
  138. lcar = 0.0 ;
  139. 'FINS' ;
  140. 'SI' ('EGA' iraff 4) ;
  141. cini = gencont ccont 1 ;
  142. 'SI' ('EGA' vdim 2) ;
  143. topoini = 'SURF' cini ;
  144. 'SINO' ;
  145. * topoini = 'VOLU' cini 'VERB' ;
  146. topoini = 'VOLU' cini ;
  147. 'FINS' ;
  148. lcar = '/' 1. ('FLOT' idens) ;
  149. 'FINS' ;
  150. 'SI' ('EXIS' ('LECT' 5 6) iraff) ;
  151. cini = gencont ccont idens ;
  152. 'SI' ('EGA' vdim 2) ;
  153. topoini = 'SURF' cini ;
  154. 'SINO' ;
  155. * topoini = 'VOLU' cini 'VERB' ;
  156. topoini = 'VOLU' cini ;
  157. 'FINS' ;
  158. 'SI' ('EGA' iraff 5) ;
  159. lcar = 2. ;
  160. 'FINS' ;
  161. 'SI' ('EGA' iraff 6) ;
  162. lcar = '/' 1. ('FLOT' idens) ;
  163. 'FINS' ;
  164. 'FINS' ;
  165. tloc . 'topoini' = topoini ;
  166. tloc . 'lcar' = lcar ;
  167. 'SI' ('EXIS' ('LECT' 1 2 3) iraff) ;
  168. tloc . 'ijob' = '-' iraff 1 ;
  169. 'SINO' ;
  170. tloc . 'ijob' = 3 ;
  171. 'FINS' ;
  172. 'FIN' bidens ;
  173. 'FINS' ;
  174. 'FIN' bcont ;
  175. 'FIN' braff ;
  176. 'FINS' ;
  177. *
  178. *
  179. 'RESPRO' tkas ;
  180. *
  181. * End of procedure file GENTEST
  182. *
  183. 'FINPROC' ;
  184. ************************************************************************
  185. * NOM : GENCONT
  186. * DESCRIPTION :
  187. *
  188. * Procédure pour générer un contour ou une enveloppe dont on veut mailler
  189. * l'intérieur
  190. * SELL : en forme de pointe de flèche
  191. * on peut donner 1,2 ou 4 arguments entiers qui sont les nombres
  192. * de mailles des cotes
  193. * TORE : deux cercles concentriques
  194. * on peut donner 1 ou 2 arguments entiers qui sont le nombre de
  195. * mailles/4 de chaque cercle
  196. * On peut donner 2 arguments flottants qui sont le rapport
  197. * d'homothetie et un angle de rotation
  198. *
  199. *
  200. *
  201. * LANGAGE : GIBIANE-CAST3M
  202. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  203. * mél : stephane.gounand@cea.fr
  204. **********************************************************************
  205. * VERSION : v1, 25/08/2016, version initiale
  206. * HISTORIQUE : v1, 25/08/2016, création
  207. * HISTORIQUE :
  208. * HISTORIQUE :
  209. ************************************************************************
  210. *
  211. 'DEBPROC' GENCONT ;
  212. 'ARGUMENT' mcle*'MOT' ;
  213. *
  214. lmail = 'MOTS' 'SELL' 'TORE' 'TOCO' 'TOC2' 'ISOC' 'TETR' 'CYCU' 'CERV'
  215. 'CRV2' 'TRIE' 'TRIR' 'QUAD' 'TETE' 'CUBE' 'SEL3' 'CYC2' 'TOC3' 'CYCO'
  216. 'TOR2' ;
  217. imail = 'POSI' mcle 'DANS' lmail ;
  218. 'SI' ('EGA' imail 0) ;
  219. cherr = 'CHAINE' 'Mot cle ' mcle ' inconnu' ;
  220. 'ERREUR' cherr ;
  221. 'FINSI' ;
  222. *
  223. * 'SELL'
  224. *
  225. 'SI' ('EGA' imail 1) ;
  226. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  227. tn = 'TABLE' ;
  228. 'REPETER' lient ;
  229. 'ARGUMENT' ient/'ENTIER' ;
  230. 'SI' ('EXISTE' ient) ;
  231. tn . &lient = ient ;
  232. 'SINON' ;
  233. 'QUITTER' lient ;
  234. 'FINSI' ;
  235. 'FIN' lient ;
  236. dtn = 'DIME' tn ;
  237. n1 = 1 ; n2 = n1 ; n3 = n2 ; n4 = n2 ;
  238. 'SI' ('EGA' dtn 1) ;
  239. n1 = tn . 1 ; n2 = n1 ; n3 = n2 ; n4 = n2 ;
  240. 'FINSI' ;
  241. 'SI' ('EGA' dtn 2) ;
  242. n1 = tn . 1 ; n2 = n1 ; n3 = tn . 2 ; n4 = n2 ;
  243. 'FINSI' ;
  244. 'SI' ('EGA' dtn 4) ;
  245. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = tn . 4 ;
  246. 'FINSI' ;
  247. *
  248. pA = -1. 2. ;
  249. pB = 0. 0. ;
  250. pC = 1. 2. ;
  251. pD = 0. 1. ;
  252. *
  253. lAB = 'DROIT' n1 pA pB ; lBC = 'DROIT' n2 pB pC ;
  254. lCD = 'DROIT' n3 pC pD ; lDA = 'DROIT' n4 pD pA ;
  255. *
  256. cnt = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  257. 'FINSI' ;
  258. *
  259. * 'TORE'
  260. *
  261. 'SI' ('EGA' imail 2) ;
  262. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  263. tn = 'TABLE' ;
  264. 'REPETER' lient ;
  265. 'ARGUMENT' ient/'ENTIER' ;
  266. 'SI' ('EXISTE' ient) ;
  267. tn . &lient = ient ;
  268. 'SINON' ;
  269. 'QUITTER' lient ;
  270. 'FINSI' ;
  271. 'FIN' lient ;
  272. dtn = 'DIME' tn ;
  273. n1 = 1 ; n2 = n1 ;
  274. 'SI' ('EGA' dtn 1) ;
  275. n1 = tn . 1 ; n2 = n1 ;
  276. 'FINSI' ;
  277. 'SI' ('EGA' dtn 2) ;
  278. n1 = tn . 1 ; n2 = tn . 2 ;
  279. 'FINSI' ;
  280. tn = 'TABLE' ;
  281. 'REPETER' liflo ;
  282. 'ARGUMENT' iflo/'FLOTTANT' ;
  283. 'SI' ('EXISTE' iflo) ;
  284. tn . &liflo = iflo ;
  285. 'SINON' ;
  286. 'QUITTER' liflo ;
  287. 'FINSI' ;
  288. 'FIN' liflo ;
  289. dtn = 'DIME' tn ;
  290. rhomo = 2. ; angle = 0. ;
  291. 'SI' ('>EG' dtn 1) ;
  292. rhomo = tn . 1 ;
  293. 'FINSI' ;
  294. 'SI' ('>EG' dtn 2) ;
  295. angle = tn . 2 ;
  296. 'FINSI' ;
  297. n1 = '*' n1 2 ;
  298. n2 = '*' n2 2 ;
  299. *
  300. pA = 1. 0. ; pB = 0. 1. ; pC = -1. 0. ; pD = 0. -1. ;
  301. pE pF pG pH = 'HOMOTHETIE' pA pB pC pD rhomo (0. 0.) ;
  302. pE pF pG pH = 'TOURNER' pE pF pG pH angle (0. 0.) ;
  303.  
  304. *
  305. lEG = 'CER3' n2 pE pF pG ;
  306. lGE = 'CER3' n2 pG pH pE ;
  307. cere = lEG 'ET' lGE ;
  308. *
  309. lAC = 'CER3' n1 pA pB pC ;
  310. lCA = 'CER3' n1 pC pD pA ;
  311. ceri = 'INVERSE' (lAC 'ET' lCA) ;
  312. *
  313. cnt = ceri 'ET' cere ;
  314. 'FINSI' ;
  315. *
  316. * 'TOCO'
  317. *
  318. 'SI' ('EGA' imail 3) ;
  319. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  320. tn = 'TABLE' ;
  321. 'REPETER' lient ;
  322. 'ARGUMENT' ient/'ENTIER' ;
  323. 'SI' ('EXISTE' ient) ;
  324. tn . &lient = ient ;
  325. 'SINON' ;
  326. 'QUITTER' lient ;
  327. 'FINSI' ;
  328. 'FIN' lient ;
  329. dtn = 'DIME' tn ;
  330. n1 = 1 ; n2 = n1 ; n3 = n1 ;
  331. 'SI' ('EGA' dtn 1) ;
  332. n1 = tn . 1 ; n2 = n1 ; n3 = n1 ;
  333. 'FINSI' ;
  334. 'SI' ('EGA' dtn 2) ;
  335. n1 = tn . 1 ; n2 = tn . 2 ; n3 = n2 ;
  336. 'FINSI' ;
  337. 'SI' ('EGA' dtn 3) ;
  338. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ;
  339. 'FINSI' ;
  340. tn = 'TABLE' ;
  341. 'REPETER' liflo ;
  342. 'ARGUMENT' iflo/'FLOTTANT' ;
  343. 'SI' ('EXISTE' iflo) ;
  344. tn . &liflo = iflo ;
  345. 'SINON' ;
  346. 'QUITTER' liflo ;
  347. 'FINSI' ;
  348. 'FIN' liflo ;
  349. dtn = 'DIME' tn ;
  350. rhomo = 2. ; angle = 0. ; ouvert = 0. ;
  351. 'SI' ('>EG' dtn 1) ;
  352. rhomo = tn . 1 ;
  353. 'FINSI' ;
  354. 'SI' ('>EG' dtn 2) ;
  355. angle = tn . 2 ;
  356. 'FINSI' ;
  357. 'SI' ('>EG' dtn 3) ;
  358. ouvert = tn . 3 ;
  359. 'FINSI' ;
  360. n1 = '*' n1 2 ;
  361. n2 = '*' n2 2 ;
  362. *
  363. pAp = 1. ouvert ; pB = 0. 1. ; pC = -1. 0. ; pD = 0. -1. ;
  364. pAm = 1. ('*' ouvert -1.) ;
  365. pEp pEm pF pG pH = 'HOMOTHETIE' pAp pAm pB pC pD rhomo (0. 0.) ;
  366. pEp pEm pF pG pH = 'TOURNER' pEp pEm pF pG pH angle (0. 0.) ;
  367.  
  368. *
  369. lEG = 'CER3' n2 pEp pF pG ;
  370. lGE = 'CER3' n2 pG pH pEm ;
  371. lEA = 'DROIT' n3 pEm pAm ;
  372. lAC = 'CER3' n1 pAm pD pC ;
  373. lCA = 'CER3' n1 pC pB pAp ;
  374. lAE = 'DROIT' n3 pAp pEp ;
  375. cnt= LEG 'ET' lGE 'ET' lEA 'ET' lAC 'ET' lCA 'ET' lAE ;
  376. *
  377. 'FINSI' ;
  378. *
  379. * 'TOC2'
  380. *
  381. 'SI' ('EGA' imail 4) ;
  382. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  383. tn = 'TABLE' ;
  384. 'REPETER' lient ;
  385. 'ARGUMENT' ient/'ENTIER' ;
  386. 'SI' ('EXISTE' ient) ;
  387. tn . &lient = ient ;
  388. 'SINON' ;
  389. 'QUITTER' lient ;
  390. 'FINSI' ;
  391. 'FIN' lient ;
  392. dtn = 'DIME' tn ;
  393. n1 = 2 ; n2 = n1 ; n3 = n1 ; n4 = n1 ;
  394. 'SI' ('EGA' dtn 1) ;
  395. n1 = tn . 1 ; n2 = n1 ; n3 = n1 ; n4 = n1 ;
  396. 'FINSI' ;
  397. 'SI' ('EGA' dtn 2) ;
  398. n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ; n4 = n2 ;
  399. 'FINSI' ;
  400. 'SI' ('EGA' dtn 3) ;
  401. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = n2 ;
  402. 'FINSI' ;
  403. 'SI' ('EGA' dtn 4) ;
  404. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ; n4 = tn . 4 ;
  405. 'FINSI' ;
  406. tn = 'TABLE' ;
  407. 'REPETER' liflo ;
  408. 'ARGUMENT' iflo/'FLOTTANT' ;
  409. 'SI' ('EXISTE' iflo) ;
  410. tn . &liflo = iflo ;
  411. 'SINON' ;
  412. 'QUITTER' liflo ;
  413. 'FINSI' ;
  414. 'FIN' liflo ;
  415. dtn = 'DIME' tn ;
  416. rhomo = 2. ; angle = 0. ; ouvert = 1.D-7 ;
  417. 'SI' ('>EG' dtn 1) ;
  418. rhomo = tn . 1 ;
  419. 'FINSI' ;
  420. 'SI' ('>EG' dtn 2) ;
  421. angle = tn . 2 ;
  422. 'FINSI' ;
  423. 'SI' ('>EG' dtn 3) ;
  424. ouvert = tn . 3 ;
  425. 'FINSI' ;
  426. *
  427. pAp = 1. ouvert ; pC = -1. 0. ;
  428. pAm = 1. ('*' ouvert -1.) ;
  429. pEp pEm pG = 'HOMOTHETIE' pAp pAm pC rhomo (0. 0.) ;
  430. pEp pEm pG = 'TOURNER' pEp pEm pG angle (0. 0.) ;
  431.  
  432. *
  433. cE = 'CER3' n1 pEp pG pEm ;
  434. lEA = 'DROIT' n2 pEm pAm ;
  435. cA = 'CER3' n3 pAm pC pAp ;
  436. lAE = 'DROIT' n4 pAp pEp ;
  437. cnt= cE 'ET' lEA 'ET' cA 'ET' lAE ;
  438. *
  439. 'FINSI' ;
  440. *
  441. * 'ISOC'
  442. *
  443. 'SI' ('EGA' imail 5) ;
  444. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  445. tn = 'TABLE' ;
  446. 'REPETER' lient ;
  447. 'ARGUMENT' ient/'ENTIER' ;
  448. 'SI' ('EXISTE' ient) ;
  449. tn . &lient = ient ;
  450. 'SINON' ;
  451. 'QUITTER' lient ;
  452. 'FINSI' ;
  453. 'FIN' lient ;
  454. dtn = 'DIME' tn ;
  455. n1 = 2 ; n2 = n1 ; n3 = n1 ;
  456. 'SI' ('EGA' dtn 1) ;
  457. n1 = tn . 1 ; n2 = n1 ; n3 = n1 ;
  458. 'FINSI' ;
  459. 'SI' ('EGA' dtn 2) ;
  460. n1 = tn . 1 ; n2 = tn . 2 ; n3 = n1 ;
  461. 'FINSI' ;
  462. 'SI' ('EGA' dtn 3) ;
  463. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ;
  464. 'FINSI' ;
  465. tn = 'TABLE' ;
  466. 'REPETER' liflo ;
  467. 'ARGUMENT' iflo/'FLOTTANT' ;
  468. 'SI' ('EXISTE' iflo) ;
  469. tn . &liflo = iflo ;
  470. 'SINON' ;
  471. 'QUITTER' liflo ;
  472. 'FINSI' ;
  473. 'FIN' liflo ;
  474. dtn = 'DIME' tn ;
  475. angle = 60. ;
  476. 'SI' ('>EG' dtn 1) ;
  477. angle = tn . 1 ;
  478. 'FINSI' ;
  479. *
  480. pA = 0. 0. ; pB = 1. 0. ; pc = ('COS' angle) ('SIN' angle) ;
  481. lAB = 'DROIT' n1 pA pB ;
  482. lBC = 'DROIT' n2 pB pC ;
  483. lCA = 'DROIT' n3 pC pA ;
  484. *
  485. cnt= lAB 'ET' lBC 'ET' lCA ;
  486. *
  487. 'FINSI' ;
  488. *
  489. * 'TETR' ou 'TETE'
  490. *
  491. 'SI' ('OU' ('EGA' imail 6) ('EGA' imail 13)) ;
  492. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  493. tn = 'TABLE' ;
  494. 'REPETER' lient ;
  495. 'ARGUMENT' ient/'ENTIER' ;
  496. 'SI' ('EXISTE' ient) ;
  497. tn . &lient = ient ;
  498. 'SINON' ;
  499. 'QUITTER' lient ;
  500. 'FINSI' ;
  501. 'FIN' lient ;
  502. dtn = 'DIME' tn ;
  503. n1 = 1 ; n2 = n1 ; n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ;
  504. 'SI' ('EGA' dtn 1) ;
  505. n1 = tn . 1 ;
  506. n2 = n1 ; n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ;
  507. 'FINSI' ;
  508. 'SI' ('EGA' dtn 2) ;
  509. n1 = tn . 1 ; n2 = tn . 2 ;
  510. n3 = n1 ;n4 = n1 ; n5 = n1 ; n6 = n1 ;
  511. 'FINSI' ;
  512. *
  513. 'SI' ('EGA' imail 6) ;
  514. pA = 0. 0. 0. ; pB = 1. 0. 0. ; pC = 0. 1. 0. ; pD = 0. 0. 1. ;
  515. 'FINS' ;
  516. 'SI' ('EGA' imail 13) ;
  517. uns2 = 0.5 ; muns2 = -0.5 ;
  518. unsr8 = 8. '**' -0.5 ; munsr8 = '*' unsr8 -1. ;
  519. pA = muns2 0. munsr8 ; pB = uns2 0. munsr8 ;
  520. pC = 0. uns2 unsr8 ; pD = 0. muns2 unsr8 ;
  521. 'FINS' ;
  522. * Aretes
  523. lAB = 'DROIT' n1 pA pB ;
  524. lBC = 'DROIT' n2 pB pC ;
  525. lCA = 'DROIT' n3 pC pA ;
  526. lBD = 'DROIT' n4 pB pD ;
  527. lDA = 'DROIT' n5 pD pA ;
  528. lCD = 'DROIT' n6 pC pD ;
  529. * Orientations importantes !! reprises de 'CHAN' 'SURFACE'
  530. * Faces ABC, BDC, CDA, ADB
  531. cABC = lAB 'ET' lBC 'ET' lCA ;
  532. cBDC = lBD 'ET' ('INVE' lCD) 'ET' ('INVE' lBC) ;
  533. cCDA = lCD 'ET' lDA 'ET' ('INVE' lCA) ;
  534. cADB = ('INVE' lDA) 'ET' ('INVE' lBD) 'ET' ('INVE' lAB) ;
  535. sABC = 'SURFACE' cABC 'PLANE' ;
  536. sBDC = 'SURFACE' cBDC 'PLANE' ;
  537. sCDA = 'SURFACE' cCDA 'PLANE' ;
  538. sADB = 'SURFACE' cADB 'PLANE' ;
  539. cnt = sABC 'ET' sBDC 'ET' sCDA 'ET' sADB ;
  540. *
  541. 'FINSI' ;
  542. *
  543. * 'CYCU' Un cylindre dans un cube 'CYCO' la meme chose mais bien orienté
  544. *
  545. 'SI' ('OU' ('EGA' imail 7) ('EGA' imail 18)) ;
  546. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  547. tn = 'TABLE' ;
  548. 'REPETER' lient ;
  549. 'ARGUMENT' ient/'ENTIER' ;
  550. 'SI' ('EXISTE' ient) ;
  551. tn . &lient = ient ;
  552. 'SINON' ;
  553. 'QUITTER' lient ;
  554. 'FINSI' ;
  555. 'FIN' lient ;
  556. dtn = 'DIME' tn ;
  557. n1 = 2 ; n2 = 1 ; n3 = 1 ;
  558. 'SI' ('EGA' dtn 1) ;
  559. n1 = tn . 1 ;
  560. n2 = n1 ; n3 = n1 ;
  561. 'FINSI' ;
  562. 'SI' ('EGA' dtn 2) ;
  563. n1 = tn . 1 ; n2 = tn . 2 ; n3 = n2 ;
  564. 'FINSI' ;
  565. 'SI' ('EGA' dtn 3) ;
  566. n1 = tn . 1 ; n2 = tn . 2 ; n3 = tn . 3 ;
  567. 'FINSI' ;
  568. *
  569. tn = 'TABLE' ;
  570. 'REPETER' liflo ;
  571. 'ARGUMENT' iflo/'FLOTTANT' ;
  572. 'SI' ('EXISTE' iflo) ;
  573. tn . &liflo = iflo ;
  574. 'SINON' ;
  575. 'QUITTER' liflo ;
  576. 'FINSI' ;
  577. 'FIN' liflo ;
  578. dtn = 'DIME' tn ;
  579. rcyl = 0.75 ; angle = 0. ;
  580. 'SI' ('>EG' dtn 1) ;
  581. rcyl = tn . 1 ;
  582. 'FINSI' ;
  583. 'SI' ('>EG' dtn 2) ;
  584. angle = tn . 2 ;
  585. 'FINSI' ;
  586. *
  587. mrcyl = ('*' rcyl -1.) ;
  588. pA = rcyl 0. 0. ; pB = 0. rcyl 0. ; pC = mrcyl 0. 0. ;
  589. pD = 0. mrcyl 0. ;
  590. pA pB pC pD = 'TOURNER' pA pB pC pD (0. 0. 0.) (0. 0. 1.) angle ;
  591. pE = 1. -1. 0. ; pF = 1. 1. 0. ; pG = -1. 1. 0. ; pH = -1. -1. 0. ;
  592. *
  593. ctc1 = 'CER3' n1 pA pB pC ; ctc2 = 'CER3' n1 pC pD pA ;
  594. cerb = ctc1 'ET' ctc2 ;
  595. carb = 'DROIT' n2 pE pF 'DROIT' n2 pG 'DROIT' n2 pH 'DROIT'
  596. n2 pE ;
  597. bas = 'SURFACE' ('ET' carb ('INVERSE' cerb)) 'PLANE' ;
  598. hau cerh carh = 'PLUS' bas cerb carb (0. 0. 2.) ;
  599. suri = 'REGLER' n3 cerb cerh ;
  600. sure = 'REGLER' n3 carb carh ;
  601. 'SI' ('EGA' imail 7) ;
  602. cnt = bas 'ET' hau 'ET' suri 'ET' sure ;
  603. 'FINS' ;
  604. 'SI' ('EGA' imail 18) ;
  605. cnt = bas 'ET' ('INVE' hau) 'ET' suri 'ET' ('INVE' sure) ;
  606. 'FINS' ;
  607. *
  608. 'FINSI' ;
  609. *
  610. * 'CERV' Cerveau
  611. *
  612. 'SI' ('EGA' imail 8) ;
  613. 'ERRE' 'Non disponible' ;
  614. * 'OPTI' 'REST' '/test4/gounand/rebecca/cerveauf42.sauv' ;
  615. cnt = bbord ;
  616. *
  617. 'FINSI' ;
  618. *
  619. * 'CRV2' Cerveau 2
  620. *
  621. 'SI' ('EGA' imail 9) ;
  622. 'ERRE' 'Non disponible' ;
  623. * 'OPTI' 'REST' '/test4/gounand/rebecca/cerv143_best.sauv' ;
  624. *
  625. 'FINSI' ;
  626. *
  627. * 'TRIE' Triangle Equilateral 'TRIR' Triangle Isocel rectangle
  628. *
  629. 'SI' ('OU' ('EGA' imail 10) ('EGA' imail 11)) ;
  630. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  631. tn = 'TABLE' ;
  632. 'REPETER' lient ;
  633. 'ARGUMENT' ient/'ENTIER' ;
  634. 'SI' ('EXISTE' ient) ;
  635. tn . &lient = ient ;
  636. 'SINON' ;
  637. 'QUITTER' lient ;
  638. 'FINSI' ;
  639. 'FIN' lient ;
  640. dtn = 'DIME' tn ;
  641. n1 = 1 ; n2 = n1 ; n3 = n1 ;
  642. 'SI' ('EGA' dtn 1) ;
  643. n1 = tn . 1 ;
  644. n2 = n1 ; n3 = n1 ;
  645. 'FINSI' ;
  646. 'SI' ('EGA' dtn 2) ;
  647. n1 = tn . 1 ; n2 = tn . 2 ;
  648. n3 = n1 ;
  649. 'FINSI' ;
  650. 'SI' ('EGA' dtn 3) ;
  651. n1 = tn . 1 ; n2 = tn . 2 ;
  652. n3 = tn . 3 ;
  653. 'FINSI' ;
  654. 'SI' ('EGA' imail 10) ;
  655. pA = 0. 0. ; pB = 1. 0. ; pC = 0.5 ('SIN' 60.) ;
  656. 'FINSI' ;
  657. 'SI' ('EGA' imail 11) ;
  658. pA = 0. 0. ; pB = 1. 0. ; pC = 0. 1. ;
  659. 'FINSI' ;
  660. lAB = 'DROIT' n1 pA pB ;
  661. lBC = 'DROIT' n2 pB pC ;
  662. lCA = 'DROIT' n3 pC pA ;
  663. *
  664. cnt= lAB 'ET' lBC 'ET' lCA ;
  665. *
  666. 'FINSI' ;
  667. *
  668. * 'QUAD' Quadrangle
  669. *
  670. 'SI' ('EGA' imail 12) ;
  671. 'OPTI' 'DIME' 2 'ELEM' 'TRI3' ;
  672. tn = 'TABLE' ;
  673. 'REPETER' lient ;
  674. 'ARGUMENT' ient/'ENTIER' ;
  675. 'SI' ('EXISTE' ient) ;
  676. tn . &lient = ient ;
  677. 'SINON' ;
  678. 'QUITTER' lient ;
  679. 'FINSI' ;
  680. 'FIN' lient ;
  681. dtn = 'DIME' tn ;
  682. n1 = 1 ; n2 = n1 ; n3 = n1 ;
  683. 'SI' ('EGA' dtn 1) ;
  684. n1 = tn . 1 ;
  685. n2 = n1 ; n3 = n1 ; n4 = n1 ;
  686. 'FINSI' ;
  687. 'SI' ('EGA' dtn 2) ;
  688. n1 = tn . 1 ; n2 = tn . 2 ;
  689. n3 = n1 ; n4 = n2 ;
  690. 'FINSI' ;
  691. 'SI' ('EGA' dtn 3) ;
  692. n1 = tn . 1 ; n2 = tn . 2 ;
  693. n3 = tn . 3 ; n4 = n1 ;
  694. 'FINSI' ;
  695. 'SI' ('EGA' dtn 4) ;
  696. n1 = tn . 1 ; n2 = tn . 2 ;
  697. n3 = tn . 3 ; n4 = tn . 4 ;
  698. 'FINSI' ;
  699. pA = 0. 0. ; pB = 1. 0. ; pC = 1. 1. ; pD = 0. 1. ;
  700. lAB = 'DROIT' n1 pA pB ;
  701. lBC = 'DROIT' n2 pB pC ;
  702. lCD = 'DROIT' n3 pC pD ;
  703. lDA = 'DROIT' n4 pD pA ;
  704. *
  705. cnt= lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  706. *
  707. 'FINSI' ;
  708. *
  709. * 'CUBE' Cube
  710. *
  711. 'SI' ('EGA' imail 14) ;
  712. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  713. tn = 'TABLE' ;
  714. 'REPETER' lient ;
  715. 'ARGUMENT' ient/'ENTIER' ;
  716. 'SI' ('EXISTE' ient) ;
  717. tn . &lient = ient ;
  718. 'SINON' ;
  719. 'QUITTER' lient ;
  720. 'FINSI' ;
  721. 'FIN' lient ;
  722. dtn = 'DIME' tn ;
  723. 'SI' ('EGA' dtn 1) ;
  724. n1 = tn . 1 ;
  725. 'SINO' ;
  726. 'ERRE' 5 ;
  727. 'FINSI' ;
  728. *
  729. pA = 0. 0. 0. ; pB = 1. 0. 0. ; pC = 1. 1. 0. ; pD = 0. 1. 0. ;
  730. pE = 0. 0. 1. ; pF = 1. 0. 1. ; pG = 1. 1. 1. ; pH = 0. 1. 1. ;
  731. * Aretes
  732. lAB = 'DROIT' n1 pA pB ;
  733. lBC = 'DROIT' n1 pB pC ;
  734. lCD = 'DROIT' n1 pC pD ;
  735. lDA = 'DROIT' n1 pD pA ;
  736. *
  737. lEF = 'DROIT' n1 pE pF ;
  738. lFG = 'DROIT' n1 pF pG ;
  739. lGH = 'DROIT' n1 pG pH ;
  740. lHE = 'DROIT' n1 pH pE ;
  741. *
  742. lAE = 'DROIT' n1 pA pE ;
  743. lBF = 'DROIT' n1 pB pF ;
  744. lCG = 'DROIT' n1 pC pG ;
  745. lDH = 'DROIT' n1 pD pH ;
  746. *
  747. * Orientations importantes !! reprises de 'CHAN' 'SURFACE'
  748. * Faces EHGF, DCGH, BFGC, ADHE, AEFB, ABCD
  749. cEHGF = ('INVE' lHE) 'ET' ('INVE' lGH) 'ET' ('INVE' lFG) 'ET'
  750. ('INVE' lEF) ;
  751. cDCGH = ('INVE' lCD) 'ET' lCG 'ET' lGH 'ET' ('INVE' lDH) ;
  752. cBFGC = lBF 'ET' lFG 'ET' ('INVE' lCG) 'ET' ('INVE' lBC) ;
  753. cADHE = ('INVE' lDA) 'ET' lDH 'ET' lHE 'ET' ('INVE' lAE) ;
  754. cAEFB = lAE 'ET' lEF 'ET' ('INVE' lBF) 'ET' ('INVE' lAB) ;
  755. cABCD = lAB 'ET' lBC 'ET' lCD 'ET' lDA ;
  756. *
  757. sEHGF = 'SURF' cEHGF 'PLANE' ;
  758. sDCGH = 'SURF' cDCGH 'PLANE' ;
  759. sBFGC = 'SURF' cBFGC 'PLANE' ;
  760. sADHE = 'SURF' cADHE 'PLANE' ;
  761. sAEFB = 'SURF' cAEFB 'PLANE' ;
  762. sABCD = 'SURF' cABCD 'PLANE' ;
  763.  
  764. cnt= sEHGF 'ET' sDCGH 'ET' sBFGC 'ET' sADHE 'ET' sAEFB 'ET' sABCD ;
  765. *
  766. 'FINSI' ;
  767. *
  768. * 'SEL3' Equivalent de SELL en 3D
  769. *
  770. 'SI' ('EGA' imail 15) ;
  771. 'OPTI' 'DIME' 3 'ELEM' 'TET4' ;
  772. tn = 'TABLE' ;
  773. 'REPETER' lient ;
  774. 'ARGUMENT' ient/'ENTIER' ;
  775. 'SI' ('EXISTE' ient) ;
  776. tn . &lient = ient ;
  777. 'SINON' ;
  778. 'QUITTER' lient ;
  779. 'FINSI' ;
  780. 'FIN' lient ;
  781. dtn = 'DIME' tn ;
  782. 'SI' ('EGA' dtn 1) ;
  783. n1 = tn . 1 ;
  784. 'SINO' ;
  785. 'ERRE' 5 ;
  786. 'FINSI' ;
  787. *
  788. uns2 = 0.5 ; muns2 = -0.5 ;
  789. unsr8 = 8. '**' -0.5 ; munsr8 = '*' unsr8 -1. ;
  790. pA = muns2 0. munsr8 ; pB = uns2 0. munsr8 ;
  791. pC = 0. uns2 unsr8 ; pD = 0. muns2 unsr8 ;
  792. pE pF = 'HOMO' pA pB 2. ('BARY' (pC 'ET' pD)) ;
  793. * Aretes
  794. lAB = 'DROIT' n1 pA pB ;
  795. lBC = 'DROIT' n1 pB pC ;
  796. lCA = 'DROIT' n1 pC pA ;
  797. lBD = 'DROIT' n1 pB pD ;
  798. lDA = 'DROIT' n1 pD pA ;
  799. *
  800. lEF = 'DROIT' n1 pE pF ;
  801. lFC = 'DROIT' n1 pF pC ;
  802. lCE = 'DROIT' n1 pC pE ;
  803. lFD = 'DROIT' n1 pF pD ;
  804. lDE = 'DROIT' n1 pD pE ;
  805. * Orientations importantes !! reprises de 'CHAN' 'SURFACE'
  806. * Faces EFC, FDBC, ECAD, EDF
  807. * Faces CBA, ABD
  808. cEFC = lEF 'ET' lFC 'ET' lCE ;
  809. cFDBC = lFD 'ET' ('INVE' lBD) 'ET' lBC 'ET' ('INVE' lFC) ;
  810. cECAD = ('INVE' lCE) 'ET' lCA 'ET' ('INVE' lDA) 'ET' lDE ;
  811. cEDF = ('INVE' lDE) 'ET' ('INVE' lFD) 'ET' ('INVE' lEF) ;
  812. cCBA = ('INVE' lBC) 'ET' ('INVE' lAB) 'ET' ('INVE' lCA) ;
  813. cABD = lAB 'ET' lBD 'ET' lDA ;
  814.  
  815. *
  816. sEFC = 'SURF' cEFC 'PLANE' ;
  817. sFDBC = 'SURF' cFDBC 'PLANE' ;
  818. sECAD = 'SURF' cECAD 'PLANE' ;
  819. sEDF = 'SURF' cEDF 'PLANE' ;
  820. sCBA = 'SURF' cCBA 'PLANE' ;
  821. sABD = 'SURF' cABD 'PLANE' ;
  822. *
  823. cnt = sEFC 'ET' sFDBC 'ET' sECAD 'ET' sEDF 'ET' sCBA 'ET' sABD ;
  824. *
  825. 'FINSI' ;
  826. *
  827. * 'CYC2' Raccourci pour les arguments de CYCU
  828. *
  829. 'SI' ('EGA' imail 16) ;
  830. 'ARGU' ient*'ENTIER' ;
  831. *
  832. * 'MESS' 'Avant appel' ;
  833. cnt = GENCONT 'CYCO' ('*' ient 2) ient ient
  834. 0.88 5. ;
  835. * 'MESS' 'Apres appel' ;
  836. *
  837. 'FINSI' ;
  838. *
  839. * 'TOC3' Raccourci pour les arguments de TOCO
  840. *
  841. 'SI' ('EGA' imail 17) ;
  842. 'ARGU' ient*'ENTIER' ;
  843. *
  844. cnt = GENCONT 'TOCO' ient 2. 0. 0.001 ;
  845. *
  846. 'FINSI' ;
  847. *
  848. * 'TOR2' Raccourci pour les arguments de TORE
  849. *
  850. 'SI' ('EGA' imail 19) ;
  851. 'ARGU' ient*'ENTIER' ;
  852. *
  853. cnt = GENCONT 'TORE' ient 2. 5. ;
  854. *
  855. 'FINSI' ;
  856. *
  857. 'RESPRO' cnt ;
  858. *
  859. * End of procedure file GENCONT
  860. *
  861. 'FINPROC' ;
  862. *
  863. * Fin Procedures
  864. *
  865. * lgentest = vrai : On génère la base sous forme de .sauv
  866. * lgentest = faux : On lit la base et on vérifie.
  867. lgentest = vrai ;
  868. lsauv = faux ;
  869. *
  870. tbas = 'TABL' ; ibas = 0 ;
  871. *
  872. * On ne peut pas encore faire isens=1 pour cause de pas de 'INVE' LIST
  873. *
  874. *
  875. *
  876. ibas = ibas '+' 1 ; tbas . ibas = 'TABL' ; tibas = tbas . ibas ;
  877. tibas . 'nombase' = 'mailtopo_2d_fast' ;
  878. tibas . 'nomdate' = '20171218_135310' ;
  879. * Pas de cas en erreur dans cette base
  880. * Le cas 44 / 96 r3cTOC3d1 TRIA TOPO AJNO BORD ne converge pas sur le volume
  881. * Le cas 45 / 96 r3cTOC3d2 TRIA TOPO AJNO BORD ne converge pas sur le volume
  882. tibas . 'lkerrref' = 'LECT' 44 45 ;
  883. tibas . 'lcvgrref' = 'LECT' ;
  884. *
  885. ibas = ibas '+' 1 ; tbas . ibas = 'TABL' ; tibas = tbas . ibas ;
  886. tibas . 'nombase' = 'mailtopo_2d_slow' ;
  887. tibas . 'nomdate' = '20171218_135311' ;
  888. * Le cas 5 / 42 r1cTOC3d3 TRIA TOPO NOAJ ne converge pas sur le volume
  889. * Depuis la mise a zero agressive du critere quali6 (2026-06-10) : plus de pbs
  890. * Le cas 17 / 42 r3cTOC3d3 TRIA TOPO AJNO BORD ne converge pas sur le volume
  891. * Le cas 18 / 42 r3cTOC3d4 TRIA TOPO AJNO BORD ne converge pas sur le volume
  892. tibas . 'lkerrref' = 'LECT' 17 18 ;
  893. tibas . 'lcvgrref' = 'LECT' ;
  894. *
  895. ibas = ibas '+' 1 ; tbas . ibas = 'TABL' ; tibas = tbas . ibas ;
  896. tibas . 'nombase' = 'mailtopo_3d_fast' ;
  897. tibas . 'nomdate' = '20171218_135312' ;
  898. * Le cas 30 r4cSEL3d2 perd son bord (a regarder)
  899. *tibas . 'lkerrref' = 'LECT' 30 ;
  900. * Depuis l'implementation des noeuds virtuels multiples
  901. * (2025-11-19) : plus de pbs.
  902. * Le cas : 21 / 48 r3cSEL3d1 TRIA TOPO AJNO BORD Bord non simple et ne converge pas sur le volume
  903. tibas . 'lkerrref' = 'LECT' 21 ;
  904. * Le cas : 32 / 48 r4cCYC2d2 REMA AJNO ne convergeait pas.
  905. * 2026/01/06 : plus de pbs avec JCRIT=4 ou 5 dans quali6.eso
  906. tibas . 'lcvgrref' = 'LECT' ;
  907. *
  908. ibas = ibas '+' 1 ; tbas . ibas = 'TABL' ; tibas = tbas . ibas ;
  909. tibas . 'nombase' = 'mailtopo_3d_slow' ;
  910. tibas . 'nomdate' = '20171218_135318' ;
  911. * Pas de cas en erreur dans cette base
  912. * Le cas : 12 / 24 r3cCYC2d3 TRIA TOPO AJNO BORD 4 elements de volume nul
  913. * 2026/01/05 : Suite au parcours des topologies de volume nul dans topv2
  914. * Le cas 12 remarche
  915. tibas . 'lkerrref' = 'LECT' ;
  916. * Le cas : 22 / 24 r6cCUBEd3 REMA AJNO ne convergeait pas.
  917. * 2026/01/06 : plus de pbs avec JCRIT=4 ou 5 dans quali6.eso
  918. tibas . 'lcvgrref' = 'LECT' ;
  919. 'SI' faux ;
  920. 'FINS' ;
  921. *
  922. 'OPTI' debu 0 echo 0 ;
  923. 'SI' interact ;
  924. 'OPTI' 'TRAC' 'X' ;
  925. 'SINO' ;
  926. 'OPTI' 'TRAC' 'PSC' ;
  927. 'FINS' ;
  928. *
  929. * Paramètres globaux
  930. *
  931. * lsyntax = 2 : passage de la densité constante à l'opérateur sous forme
  932. * d'un réel
  933. * lsyntax = 3 : passage de la densité constante à l'opérateur sous forme
  934. * d'un chpoint à une composante (inverse du tenseur
  935. * métrique proportionnel à I diagonal)
  936. * lsyntax = 4 : passage de la densité constante à l'opérateur sous forme
  937. * d'un chpoint à d(d+1)/2 composantes (tenseur
  938. * anisotrope en x y z)
  939. *
  940. lsyntax = 4 ;
  941. *
  942. nsoucbas = 0 ;
  943. ncvgbas = 0 ;
  944. *
  945. nbas = 'DIME' tbas ;
  946. *!nbas = 1 ;
  947. 'REPE' bclbas nbas;
  948. ibas = &bclbas ;
  949. *! ibas=3 ;
  950. tibas = tbas . ibas ;
  951. nombase = tibas . 'nombase' ;
  952. nomdate = tibas . 'nomdate' ;
  953. lcaserr = 'LECT' ;
  954. lcvgerr = 'LECT' ;
  955. *
  956. mmdat = mydate ;
  957. 'SI' ('NON' interact) ;
  958. 'OPTI' 'TRAC' 'PSC' ;
  959. 'SI' lsauv ;
  960. nomfic = 'CHAI' 'sauv/' nombase '_' mmdat
  961. '.ps' ;
  962. 'MESS' ('CHAI' 'Fichier image' ' ' nomfic) ;
  963. 'OPTI' 'FTRA' nomfic ;
  964. 'OPTI' 'ECHO' 0 ;
  965. nomfic = 'CHAI' 'sauv/' nombase '_' mmdat
  966. '.txt' ;
  967. 'MESS' ('CHAI' 'Fichier echo' ' ' nomfic) ;
  968. oimpr = 'VALE' 'IMPR' ;
  969. 'OPTI' 'IMPR' 10 'IMPR' nomfic ;
  970. * 'SINO' ;
  971. * nomfic = 'CHAI' nombase '_' mmdat '.ps' ;
  972. * 'MESS' ('CHAI' 'Fichier image ' nomfic) ;
  973. * 'OPTI' 'FTRA' nomfic ;
  974. 'FINS' ;
  975. 'FINSI' ;
  976. *
  977. **************************************************************************
  978. * Début JDD
  979. *
  980. * DESCRIPTION : IJOB=0
  981. * Minimise le volume d'une topologie de maillage
  982. * en le maintenant supérieur à 0
  983. * IJOB=1
  984. * Minimise le volume, mais on a le droit d'ajouter/supprimer
  985. * des noeuds internes
  986. * IJOB=2
  987. * Minimise le volume, mais on a le droit d'ajouter/supprimer
  988. * des noeuds internes et au bord
  989. * IJOB=3
  990. * La topologie de maillage est supposée être un maillage
  991. * On essaie de l'améliorer en conservant son volume
  992. * mais en augmentant sa qualité grace a l'adjonction
  993. * de noeuds internes
  994. *
  995. tikas = GENTEST nombase ;
  996. tibas . 'tikas' = tikas ;
  997. *
  998. * Boucle de test
  999. *
  1000. vdim = 'VALE' 'DIME' ;
  1001. 'SI' ('ET' interact ('EGA' vdim 3)) ; 'OPTI' 'TRAC' 'OPEN' ; 'FINS' ;
  1002. nkas = 'DIME' tikas ;
  1003. 'SAUT' 2 'LIGNE' ;
  1004. 'MESS' '****************************************************************' ;
  1005. 'MESS' ' ' nombase ' :' ' ' nkas ' cas' ;
  1006. 'MESS' '****************************************************************' ;
  1007. 'SAUT' 2 'LIGNE' ;
  1008. nsouckas = 0 ;
  1009. ncvgkas = 0 ;
  1010.  
  1011. *!nkas = 1;
  1012. 'REPE' bkas nkas ;
  1013. * Récupération des données du test
  1014. ikas = &bkas ;
  1015. *! ikas = 10 ;
  1016. tloc = tikas . ikas ;
  1017. topoini = tloc . 'topoini' ;
  1018. lcar = tloc . 'lcar' ;
  1019. ijob = tloc . 'ijob' ;
  1020. idk = tloc . 'idk' ;
  1021. 'SAUT' 1 'LIGN' ;
  1022. 'MESS' ('CHAI' 'Numero du cas :' ' ' ikas ' /' ' ' nkas ' ' idk ' ' nombase) ;
  1023. *RESUPAR ;
  1024. 'SAUT' 1 'LIGN' ;
  1025. *
  1026. 'SI' ('EGA' ijob 3) ;
  1027. 'SI' ('EGA' lsyntax 2) ;
  1028. metmo = 'CSTE' ;
  1029. metva = lcar ;
  1030. 'FINS' ;
  1031. 'SI' ('EGA' lsyntax 3) ;
  1032. metmo = 'ISOT' ;
  1033. coef = lcar '**' -2 ;
  1034. metva = 'MANU' 'CHPO' topoini 1 'G' coef 'NATURE' 'DIFFUSE' ;
  1035. 'FINS' ;
  1036. 'SI' ('EGA' lsyntax 4) ;
  1037. metmo = 'CHAI' 'ANIS' ;
  1038. coef = lcar '**' -2 ;
  1039. 'SI' ('EGA' vdim 2) ;
  1040. metva = 'MANU' 'CHPO' topoini 3 'G11' coef 'G21' 0. 'G22' coef
  1041. 'NATURE' 'DIFFUSE' ;
  1042. 'SINO' ;
  1043. metva = 'MANU' 'CHPO' topoini 6 'G11' coef 'G21' 0. 'G22' coef
  1044. 'G31' 0. 'G32' 0. 'G33' coef 'NATURE' 'DIFFUSE' ;
  1045. 'FINS' ;
  1046. 'FINS' ;
  1047. 'FINS' ;
  1048. *
  1049. * Comme les tests sont un peu coûteux, on ne verifie que la base 1
  1050. 'SI' ('EGA' ibas 1) ;
  1051. iseqm = 1 ; vseqm = 1 ;
  1052. iopto = 0 ; vopto = 2 ; isegadj = 0 ;
  1053. nprema = 2 ;
  1054. 'SINO' ;
  1055. iseqm = 0 ; vseqm = 0 ;
  1056. iopto = 0 ; vopto = 0 ; isegadj = 0 ;
  1057. nprema = 1 ;
  1058. 'FINS' ;
  1059. * Optionnel
  1060. tparam = 'TABL' ;
  1061. tparam . 'impr' = impr ;
  1062. tparam . 'nbpasses_rema' = nprema ;
  1063. * tparam . 'critquals' = enum (prog 1 2. 1.)
  1064. tparam . 'graph' = graph ;
  1065. tparam . 'id_cas' = idk ;
  1066. tparam . 'max_iter' = 100 ;
  1067. tparam . 'sort_seqm' = iseqm ;
  1068. tparam . 'veri_seqm' = vseqm ;
  1069. tparam . 'veri_opto' = vopto ;
  1070. tparam . 'impr_opto' = iopto ;
  1071. tparam . 'impr_segadj_opto' = isegadj ;
  1072. tparam . 'strat_fast' = faux ;
  1073. *
  1074. 'SOUC' 0 ;
  1075. *
  1076. 'SI' ('EGA' ijob 0) ;
  1077. 'MESS' 'Appel TRIA TOPO NOAJ' ;
  1078. curtopo = 'TRIA' 'TOPO' topoini 'NOAJ' tparam ;
  1079. 'FINS' ;
  1080. 'SI' ('EGA' ijob 1) ;
  1081. 'MESS' 'Appel TRIA TOPO AJNO' ;
  1082. curtopo = 'TRIA' 'TOPO' topoini 'AJNO' tparam ;
  1083. 'FINS' ;
  1084. 'SI' ('EGA' ijob 2) ;
  1085. 'MESS' 'Appel TRIA TOPO AJNO BORD' ;
  1086. curtopo = 'TRIA' 'TOPO' topoini ('VIDE' 'MAILLAGE') 'AJNO' tparam ;
  1087. 'FINS' ;
  1088. 'SI' ('EGA' ijob 3) ;
  1089. 'MESS' 'Appel REMA AJNO' ;
  1090. curtopo metvan = 'REMA' topoini metva 'IPOL' 'AJNO' tparam ;
  1091. 'FINS' ;
  1092. 'SI' ('NEG' ijob 3) ;
  1093. qcurtopo = 'INDI' 'EQLT' curtopo ;
  1094. miqa meqa maqa = MIMEMA qcurtopo 'EQLT' ;
  1095. 'MESS' 'FORMAT' for idk ' Qeqltmin=' miqa ' Qeqltmed=' meqa ' Qeqltmax=' maqa ;
  1096. 'SINO' ;
  1097. qcurtopo = 'INDI' 'COHE' 'DENS' curtopo metvan ;
  1098. miqa meqa maqa = MIMEMA qcurtopo 'COHE' ;
  1099. 'MESS' 'FORMAT' for idk ' Qcohemin=' miqa ' Qcohemed=' meqa ' Qcohemax=' maqa ;
  1100. miqe meqe maqe = MIMEMA qcurtopo 'DENS' ;
  1101. 'MESS' 'FORMAT' for idk ' Qdensmin=' miqe ' Qdensmed=' meqe ' Qdensmax=' maqe ;
  1102. 'FINS' ;
  1103. *
  1104. nctelem = 'NBEL' curtopo ;
  1105. nctno = 'NBNO' curtopo ;
  1106. *
  1107. sc = 'SOUC' ;
  1108. 'SI' sc ;
  1109. nsouckas = nsouckas '+' 1 ;
  1110. nsoucbas = nsoucbas '+' 1 ;
  1111. lcaserr = lcaserr 'ET' ikas ;
  1112. 'FINS' ;
  1113. lcvg = tparam . 'cvg' ;
  1114. 'SI' ('NON' lcvg) ;
  1115. ncvgkas = ncvgkas '+' 1 ;
  1116. ncvgbas = ncvgbas '+' 1 ;
  1117. lcvgerr = lcvgerr 'ET' ikas ;
  1118. 'FINS' ;
  1119. tloc . 'souci' = sc ;
  1120. tloc . 'cvg' = cvg ;
  1121. tloc . 'tstelem' = nctelem ;
  1122. tloc . 'tstnoeu' = nctno ;
  1123. tloc . 'tstparcou' = tparam . 'nparcou' ;
  1124. tloc . 'tstexplor' = tparam . 'nexplor' ;
  1125. tloc . 'tstchange' = tparam . 'nchange' ;
  1126. *
  1127. tloc . 'tstdvol' = tparam . 'dvol' ;
  1128. tloc . 'tstnnul' = tparam . 'nnul' ;
  1129. tloc . 'tstmiq' = tparam . 'miq' ;
  1130. tloc . 'tstmaq' = tparam . 'maq' ;
  1131. tloc . 'tstmeq' = tparam . 'meq' ;
  1132. *
  1133. tibas . 'lcaserr' = lcaserr ;
  1134. tibas . 'lcvgerr' = lcvgerr ;
  1135. * Fin de la boucle sur les cas
  1136. 'FIN' bkas ;
  1137.  
  1138. 'SI' ('>' nsouckas 0) ;
  1139. 'MESS' '!!!! Il y a' ' ' nsouckas ' /' ' ' nkas ' cas en erreur dans la base' ' ' nombase ' :' ;
  1140. txt = ' ' ;
  1141. 'REPE' iierr ('DIME' lcaserr) ;
  1142. ierr = &iierr ;
  1143. icas = 'EXTR' lcaserr ierr ;
  1144. idk = tikas . icas . 'idk' ;
  1145. txt = 'CHAI' txt ' ' '(' icas ' ' idk ')' ;
  1146. 'FIN' iierr ;
  1147. 'MESS' txt ;
  1148. 'SINO' ;
  1149. 'MESS' 'Aucun cas en erreur dans la base' ' ' nombase '. Bravo !' ;
  1150. 'FINS' ;
  1151. *
  1152. 'SI' ('>' ncvgkas 0) ;
  1153. 'MESS' '!!! Il y a' ' ' ncvgkas ' /' ' ' nkas ' cas en non-convergence dans la base' ' ' nombase ;
  1154. txt = ' ' ;
  1155. 'REPE' iierr ('DIME' lcvgerr) ;
  1156. ierr = &iierr ;
  1157. icas = 'EXTR' lcvgerr ierr ;
  1158. idk = tikas . icas . 'idk' ;
  1159. txt = 'CHAI' txt ' ' '(' icas ' ' idk ')' ;
  1160. 'FIN' iierr ;
  1161. 'MESS' txt ;
  1162. 'SINO' ;
  1163. 'MESS' 'Aucun cas en non-convergence dans la base' ' ' nombase '. Bravo !' ;
  1164. 'FINS' ;
  1165. *
  1166. * Sauvegarde éventuelle
  1167. *
  1168. *'OPTI' echo 1 ;
  1169. *
  1170. *'SI' lsauv ;
  1171. * 'TEMP' 'IMPR' 'SOMM' 'CPU' ;
  1172. 'SAUTER' 1 'LIGNE' ;
  1173. * 'TEMP' 'PLAC' ;
  1174. * 'SAUTER' 1 'LIGNE' ;
  1175. *'FINS' ;
  1176. *
  1177. 'SI' lgentest ;
  1178. 'SI' lsauv ;
  1179. nomfic = 'CHAI' 'sauv/' nombase '_' (mydate) '.sauv' ;
  1180. 'MESS' ('CHAI' 'Saving ' nomfic) ;
  1181. 'OPTI' 'SAUV' nomfic ;
  1182. lgg1 = lgentest ; lgg2 = lsauv ; lgg3 = nombase ;
  1183. lgg4 = nomdate ; lgg5 = nomfic ;
  1184. 'OUBL' lgentest ; 'OUBL' lsauv ; 'OUBL' nombase ;
  1185. 'OUBL' nomdate ; 'OUBL' nomfic ;
  1186. 'SAUV' tikas ;
  1187. lgentest = lgg1 ; lsauv = lgg2 ; nombase = lgg3 ;
  1188. nomdate = lgg4 ; nomfic = lgg5 ;
  1189. 'FINS' ;
  1190. *
  1191. * Etape de test
  1192. *
  1193. 'SINO' ;
  1194. tikasn = tikas ;
  1195. nomfic = 'CHAI' 'sauv/' nombase '_' nomdate '.sauv' ;
  1196. 'MESS' ('CHAI' 'Loading ' nomfic) ;
  1197. 'OPTI' 'REST' nomfic ;
  1198. lgg6 = debug ; lgg7 = test ;
  1199. 'REST' ;
  1200. debug = lgg6 ; test = lgg7 ;
  1201. *
  1202. nkasn = 'DIME' tikasn ;
  1203. nkas = 'DIME' tikas ;
  1204. *tst nkasn = 1 ; nkas = 1 ;
  1205. 'SI' ('NEG' nkas nkasn) ;
  1206. cherr = 'CHAI' 'Les tables a comparer nont pas meme dimension ?' ;
  1207. 'ERRE' cherr ;
  1208. 'FINS' ;
  1209. lidglob = vrai ;
  1210. lokglob = vrai ;
  1211. 'REPE' bkas nkas ;
  1212. ikas = &bkas ;
  1213. *tst ikas = 3 ;
  1214. * 'MESS' ('CHAI' 'Numero du cas : ' ikas ' / ' nkas) ;
  1215. chcas = 'CHAI' 'Numero du cas : ' ikas ' / ' nkas ;
  1216. tlocn = tikasn . ikas ;
  1217. tloc = tikas . ikas ;
  1218. idkn = tlocn . 'idk' ;
  1219. idk = tloc . 'idk' ;
  1220. 'SI' ('NEG' idkn idk) ;
  1221. cherr = 'CHAI' chcas ' '
  1222. 'Les cas a comparer sont differents ? : ' idk ' ' idkn ;
  1223. 'ERRE' cherr ;
  1224. 'FINS' ;
  1225. vsouci = tloc . 'souci' ;
  1226. vcvg = tloc . 'cvg' ;
  1227. vnctelem = tloc . 'tstelem' ;
  1228. vnctno = tloc . 'tstnoeu' ;
  1229. vnparcou = tloc . 'tstparcou' ;
  1230. vnexplor = tloc . 'tstexplor' ;
  1231. vnchange = tloc . 'tstchange' ;
  1232. souci = tlocn . 'souci' ;
  1233. nctelem = tlocn . 'tstelem' ;
  1234. nctno = tlocn . 'tstnoeu' ;
  1235. nparcou = tlocn . 'tstparcou' ;
  1236. nexplor = tlocn . 'tstexplor' ;
  1237. nchange = tlocn . 'tstchange' ;
  1238. *
  1239. * 2017/12/04 Petite tolérance sur les nombres de configuration
  1240. *
  1241. ntol=1 ;
  1242.  
  1243. lid = vrai ;
  1244. lid = lid 'ET' ('EGA' vsouci souci) ;
  1245. lid = lid 'ET' ('EGA' vnctelem nctelem) ;
  1246. lid = lid 'ET' ('EGA' vnctno nctno) ;
  1247. lid = lid 'ET' ('EGA' vnparcou nparcou) ;
  1248. lid = lid 'ET' ('EGA' vnexplor nexplor) ;
  1249. lid = lid 'ET' ('EGA' vnchange nchange) ;
  1250. lok = vrai ;
  1251. lok = lok 'ET' ('OU' ('EGA' vsouci souci) vsouci) ;
  1252. lok = lok 'ET' ('EGA' vnctelem nctelem) ;
  1253. lok = lok 'ET' ('EGA' vnctno nctno) ;
  1254. lok = lok 'ET' ('>EG' vnparcou ('-' nparcou ntol)) ;
  1255. lok = lok 'ET' ('>EG' vnexplor ('-' nexplor ntol)) ;
  1256. * lok = lok 'ET' ('EGA' vnchange nchange) ;
  1257. lok = lok 'ET' ('>EG' vnchange ('-' nchange ntol)) ;
  1258. * 2eme partie des tests ajoutés après le 28/08/2017
  1259. ltest2 = 'EXIS' tloc 'tstdvol' ;
  1260. 'SI' ltest2 ;
  1261. * 'MESS' '2eme partie des tests effectuee' ;
  1262. vdvol = tloc . 'tstdvol' ;
  1263. vnnul = tloc . 'tstnnul' ;
  1264. vmiq = tloc . 'tstmiq' ;
  1265. vmaq = tloc . 'tstmaq' ;
  1266. vmeq = tloc . 'tstmeq' ;
  1267. dvol = tlocn . 'tstdvol' ;
  1268. nnul = tlocn . 'tstnnul' ;
  1269. miq = tlocn . 'tstmiq' ;
  1270. maq = tlocn . 'tstmaq' ;
  1271. meq = tlocn . 'tstmeq' ;
  1272. *2017/12/04 On n'essaie pas de faire mieux que la tolérance par défaut
  1273. * sur la qualité et le volume
  1274. votol = 1.D-11 ;
  1275. qutol = 1.D-2 ;
  1276. *tst vmiq = vmiq '+' 1.D-10 ;
  1277. lid = lid 'ET' ('EGA' vdvol dvol votol) ;
  1278. lid = lid 'ET' ('EGA' vnnul nnul) ;
  1279. lid = lid 'ET' ('EGA' vmiq miq qutol) ;
  1280. lid = lid 'ET' ('EGA' vmaq maq qutol) ;
  1281. lid = lid 'ET' ('EGA' vmeq meq qutol) ;
  1282. *
  1283. lok = lok 'ET' ('EGA' vdvol dvol votol) ;
  1284. lok = lok 'ET' ('EGA' vnnul nnul) ;
  1285. lok = lok 'ET' ('&lt;EG' ('-' vmiq qutol) miq) ;
  1286. lok = lok 'ET' ('&lt;EG' ('-' vmaq qutol) maq) ;
  1287. lok = lok 'ET' ('&lt;EG' ('-' vmeq qutol) meq) ;
  1288. 'SINO' ;
  1289. 'MESS'
  1290. '!! ' chcas
  1291. ' Attention, on na pas fait la 2eme partie des tests';
  1292. 'FINS' ;
  1293.  
  1294. lidglob = lidglob 'ET' lid ;
  1295. lokglob = lokglob 'ET' lok ;
  1296.  
  1297. 'SI' ('OU' ('NON' lid) ('NON' lok)) ;
  1298. 'SI' ('NON' lok) ;
  1299. ch = 'CHAI' 'Cas ' idk ' incorrect, on a :' ;
  1300. 'SINO' ;
  1301. ch = 'CHAI' 'Cas ' idk ' ameliore, on a :' ;
  1302. 'FINS' ;
  1303. 'MESS' chcas ' ' ch ;
  1304. tit = 'CHAINE' 'nbel=' nctelem ' ; nbno=' nctno ;
  1305. 'MESS' tit ;
  1306. titt = 'CHAINE' 'Topologie: parcourues=' nparcou
  1307. ' examinees=' nexplor
  1308. ' changees=' nchange ;
  1309. 'MESSAGE' titt ;
  1310. 'SI' ltest2 ;
  1311. titq = 'CHAINE' 'FORMAT' for
  1312. ' Dvol=' dvol ' NelV0=' nnul
  1313. ' Qmin=' miq ' Qmax=' maq ' Qmed=' meq ;
  1314. 'MESS' titq ;
  1315. 'FINS' ;
  1316. ch = 'CHAI' 'Cas ' idk ' la reference etait :' ;
  1317. 'MESS' ch ;
  1318. tit = 'CHAINE' 'nbel=' vnctelem ' ; nbno=' vnctno ;
  1319. 'MESS' tit ;
  1320. titt = 'CHAINE' 'Topologie: parcourues=' vnparcou
  1321. ' examinees=' vnexplor
  1322. ' changees=' vnchange ;
  1323. 'MESSAGE' titt ;
  1324. 'SI' ltest2 ;
  1325. titq = 'CHAINE' 'FORMAT' for
  1326. ' Dvol=' vdvol ' NelV0=' vnnul
  1327. ' Qmin=' vmiq ' Qmax=' vmaq ' Qmed=' vmeq ;
  1328. 'MESS' titq ;
  1329. 'FINS' ;
  1330. ch = 'CHAI' 'Cas ' idk ' difference :' ;
  1331. 'MESS' ch ;
  1332. tit = 'CHAINE' 'dnbe=' ('-' nctelem vnctelem)
  1333. ' ; dnbn=' ('-' nctno vnctno) ;
  1334. 'MESS' tit ;
  1335. titt = 'CHAINE' 'Topologie: parcourues=' ('-' nparcou vnparcou)
  1336. ' examinees=' ('-' nexplor vnexplor)
  1337. ' changees=' ('-' nchange vnchange) ;
  1338. 'MESSAGE' titt ;
  1339. 'SI' ltest2 ;
  1340. titdq = 'CHAINE' 'FORMAT' for
  1341. ' DDvo=' ('-' dvol vdvol)
  1342. ' DQmi=' ('-' miq vmiq)
  1343. ' DQma=' ('-' maq vmaq)
  1344. ' DQme=' ('-' meq vmeq) ;
  1345. 'MESS' titdq ;
  1346. 'FINS' ;
  1347. * 'ERRE' 'stop' ;
  1348. 'SI' ('NON' lok) ;
  1349. 'MESS' '!!!!! CHECKME' ;
  1350. 'SINO' ;
  1351. 'MESS' '!!!!! Nouvelle reference' ;
  1352. 'FINS' ;
  1353. 'SINO' ;
  1354. 'MESS' chcas ' Ok' ;
  1355. 'FINS' ;
  1356. * 'SAUT' 1 'LIGNE' ;
  1357. 'FIN' bkas ;
  1358. *
  1359. 'SI' lokglob ;
  1360. 'MESSAGE' ('CHAINE' 'Tout sest bien passe...') ;
  1361. 'SI' ('NON' lidglob) ;
  1362. 'MESSAGE' ('CHAINE' '...avec des ameliorations.') ;
  1363. 'SINO' ;
  1364. 'MESSAGE' ('CHAINE' '...resultats identiques a la ref.') ;
  1365. 'FINS' ;
  1366. 'SINO' ;
  1367. 'SI' lidglob ;
  1368. 'MESS' '!!!!! Ce cas est impossible, verifiez le programme' ;
  1369. 'FINS' ;
  1370. 'OPTI' 'ECHO' 1 ;
  1371. 'ERRE' 'Il y a eu des regressions !!' ;
  1372. 'SINON' ;
  1373. 'SAUT' 1 'LIGN' ;
  1374. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  1375. 'FINSI' ;
  1376. 'FINS' ;
  1377. *
  1378.  
  1379. 'FIN' bclbas ;
  1380. 'SI' ('>' nsoucbas 0) ;
  1381. 'MESS' '!!!!! Il y a au total' ' ' nsoucbas ' cas en erreur dans les bases' ;
  1382. txt = ' ' ;
  1383. 'REPE' iibas ('DIME' tbas) ;
  1384. ibas = &iibas ;
  1385. tibas = tbas . ibas ;
  1386. lcaserr = tibas . 'lcaserr' ;
  1387. tikas = tibas . 'tikas' ;
  1388. 'REPE' iierr ('DIME' lcaserr) ;
  1389. ierr = &iierr ;
  1390. icas = 'EXTR' lcaserr ierr ;
  1391. idk = tikas . icas . 'idk' ;
  1392. txt = 'CHAI' txt ' ' '(' ibas ',' icas ' ' idk ')' ;
  1393. 'FIN' iierr ;
  1394. 'FIN' iibas ;
  1395. 'MESS' txt ;
  1396. 'SINO' ;
  1397. 'MESSAGE' 'Aucun cas en erreur dans la base. Bravo !' ;
  1398. 'FINS' ;
  1399. 'SI' ('>' ncvgbas 0) ;
  1400. 'MESS' '!!!! Il y a au total' ' ' ncvgbas ' cas en non-convergence dans les bases' ;
  1401. txt = ' ' ;
  1402. 'REPE' iibas ('DIME' tbas) ;
  1403. ibas = &iibas ;
  1404. tibas = tbas . ibas ;
  1405. lcvgerr = tibas . 'lcvgerr' ;
  1406. tikas = tibas . 'tikas' ;
  1407. 'REPE' iierr ('DIME' lcvgerr) ;
  1408. ierr = &iierr ;
  1409. icas = 'EXTR' lcvgerr ierr ;
  1410. idk = tikas . icas . 'idk' ;
  1411. txt = 'CHAI' txt ' ' '(' ibas ',' icas ' ' idk ')' ;
  1412. 'FIN' iierr ;
  1413. 'FIN' iibas ;
  1414. 'MESS' txt ;
  1415. 'SINO' ;
  1416. 'MESSAGE' 'Aucun cas en non-convergence dans la base. Bravo !' ;
  1417. 'FINS' ;
  1418. *
  1419. * Test au 2025/11/10
  1420. *
  1421. lok = vrai ;
  1422. 'REPE' bclbas ('DIME' tbas) ;
  1423. lokb = vrai ;
  1424. ibas = &bclbas ;
  1425. tibas = tbas . ibas ;
  1426. nombase = tibas . 'nombase' ;
  1427. lkerrref = tibas . 'lkerrref' ;
  1428. lcaserr = tibas . 'lcaserr' ;
  1429. dlkr = 'DIME' lkerrref ;
  1430. dlk = 'DIME' lcaserr ;
  1431. 'SI' ('NEG' dlk dlkr) ;
  1432. lokb = lokb 'ET' faux ;
  1433. 'MESS' '!!! Base' ' ' nombase ' : pas le meme nombre de cas en erreur' ;
  1434. 'SINO' ;
  1435. ddlk = 'MAXI' ('-' lkerrref lcaserr) 'ABS' ;
  1436. 'SI' ('NEG' ddlk 0) ;
  1437. lokb = lokb 'ET' faux ;
  1438. 'MESS' '!!! Base' ' ' nombase ' : pas les memes cas en erreur' ;
  1439. 'FINS' ;
  1440. 'FINS' ;
  1441. 'SI' ('NON' lokb) ;
  1442. 'MESS' ' Courant :' ; 'LIST' lcaserr ;
  1443. 'MESS' ' Reference :' ; 'LIST' lkerrref ;
  1444. 'FINS' ;
  1445. lok = lok 'ET' lokb ;
  1446. *
  1447. lokc = vrai ;
  1448. lcvgrref = tibas . 'lcvgrref' ;
  1449. lcvgerr = tibas . 'lcvgerr' ;
  1450. dlkr = 'DIME' lcvgrref ;
  1451. dlk = 'DIME' lcvgerr ;
  1452. 'SI' ('NEG' dlk dlkr) ;
  1453. lokc = lokc 'ET' faux ;
  1454. 'MESS' '!! Base' ' ' nombase ' : pas le meme nombre de cas en non-convergence' ;
  1455. 'SINO' ;
  1456. ddlk = 'MAXI' ('-' lcvgrref lcvgerr) 'ABS' ;
  1457. 'SI' ('NEG' ddlk 0) ;
  1458. lokc = lokc 'ET' faux ;
  1459. 'MESS' '!! Base' ' ' nombase ' : pas les memes cas en non-convergence' ;
  1460. 'FINS' ;
  1461. 'FINS' ;
  1462. 'SI' ('NON' lokc) ;
  1463. 'MESS' ' Courant :' ; 'LIST' lcvgerr ;
  1464. 'MESS' ' Reference :' ; 'LIST' lcvgrref ;
  1465. 'FINS' ;
  1466. lok = lok 'ET' lokc ;
  1467. 'FIN' bclbas ;
  1468. *
  1469. 'SI' ('NON' lok) ;
  1470. 'MESSAGE' ('CHAINE' '!!! Il y a eu des erreurs') ;
  1471. 'SINON' ;
  1472. 'MESSAGE' ('CHAINE' 'Tout sest bien passe !') ;
  1473. 'FINSI' ;
  1474. *
  1475. 'OPTI' echo 1 ;
  1476. 'SI' interact ;
  1477. 'OPTI' 'DONN' 5 ;
  1478. 'FINS' ;
  1479. 'SI' ('NON' lok) ;
  1480. 'ERRE' 5 ;
  1481. 'FINS' ;
  1482. *
  1483. * End of dgibi file MAILTOPO
  1484. *
  1485. 'FIN' ;
  1486.  
  1487.  
  1488.  

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