Télécharger mailtopo.dgibi

Retour à la liste

Numérotation des lignes :

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

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