Télécharger matoutil.procedur

Retour à la liste

Numérotation des lignes :

  1. * MATOUTIL PROCEDUR GOUNAND 25/11/24 21:15:08 12406
  2. ************************************************************************
  3. * NOM : MATOUTIL
  4. * DESCRIPTION : Procédures utilitaires utilisées par la procédure
  5. * MAILTOPO
  6. *
  7. *
  8. * LANGAGE : GIBIANE-CAST3M
  9. * AUTEUR : Stephane GOUNAND (CEA/DES/ISAS/DM2S/SEMT/LTA)
  10. * mail : stephane.gounand@cea.fr
  11. **********************************************************************
  12. * VERSION : v1, 08/04/2021, version initiale
  13. * HISTORIQUE : v1, 08/04/2021, creation
  14. * HISTORIQUE :
  15. * HISTORIQUE :
  16. ************************************************************************
  17. *
  18. 'DEBPROC' MATOUTIL ;
  19. 'ARGUMENT' motcle*'MOT' ;
  20. *
  21. lmotcle = 'MOTS' 'GASTIDX' 'GENTABIN' 'VERTABIN' 'MESUINTE' 'AFFQUAL'
  22. 'BORD' 'FERMEPZ' 'OUVREPZ' 'MOYECHAM' 'AFFCAND' 'MAILINTE' 'VERITOPO' ;
  23. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  24. 'ERREUR' 1052 'AVEC' ('CHAI' motcle
  25. 'GASTIDX GENTABIN VERTABIN MESUINTE AFFQUAL BORD FERMEPZ OUVREPZ'
  26. ' MOYECHAM AFFCAND MAILINTE' 'VERITOPO') ;
  27. 'FINSI' ;
  28. *
  29. 'SI' ('EGA' motcle 'GASTIDX') ;
  30. ************************************************************************
  31. * NOM : GASTIDX
  32. * DESCRIPTION : Get and set table index
  33. *
  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, 08/12/2017, version initiale
  41. * HISTORIQUE : v1, 08/12/2017, création
  42. * HISTORIQUE :
  43. * HISTORIQUE :
  44. ************************************************************************
  45. *
  46. *'DEBPROC' GASTIDX ;
  47. 'ARGU' tab*'TABLE' ;
  48. 'ARGUMENT' idx*'MOT' ;
  49. 'ARGU' valdef ;
  50. *
  51. valdefd = 'EXIS' valdef ;
  52. idxd = 'EXIS' tab idx ;
  53. setd = valdefd 'ET' ('NON' idxd) ;
  54. *
  55. *debug = 'VALE' debu ;
  56. *
  57. 'SI' setd ;
  58. tab . idx = valdef ;
  59. 'FINS' ;
  60. val = tab . idx ;
  61. *
  62. 'SI' faux ;
  63. tval = 'TYPE' val ;
  64. 'SI' (('EGA' tval 'ENTIER') 'OU' ('EGA' tval 'FLOTTANT') 'OU' ('EGA'
  65. tval 'MOT') 'OU' ('EGA' tval 'LOGIQUE')) ;
  66. mval = val ;
  67. 'SINO' ;
  68. mval = 'CHAI' '*' tval ;
  69. 'FINS' ;
  70. ch = 'CHAI' 'tab . ' idx*20 '='/21 mval*40 ;
  71. 'SI' setd ;
  72. ch = 'CHAI' ch '(defaut)'*60 ;
  73. 'FINS' ;
  74. 'MESS' ch ;
  75. 'FINS' ;
  76. *
  77. 'RESPRO' val ;
  78. *
  79. * End of procedure file GASTIDX
  80. *
  81. 'FINSI' ;
  82. 'SI' ('EGA' motcle 'GENTABIN') ;
  83. *$$$$ GENTABIN
  84. ************************************************************************
  85. * NOM : GENTABIN
  86. * DESCRIPTION : Construit une table dont les indices sont les mots
  87. * donnés en entrée.
  88. * Cette table sert ensuite dans VERTABIN pour vérifier
  89. * que tous les indices d'une autre table ne sont pas
  90. * différents de ceux de la première
  91. *
  92. * C'est un peu l'équivalent de MOTS et EXIS tab LISTMOTS
  93. * pour des mots de taille quelconque.
  94. *
  95. * LANGAGE : GIBIANE-CAST3M
  96. * AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  97. * mail : stephane.gounand@cea.fr
  98. **********************************************************************
  99. * VERSION : v1, 14/04/2020, version initiale
  100. * HISTORIQUE : v1, 14/04/2020, creation
  101. * HISTORIQUE :
  102. * HISTORIQUE :
  103. ************************************************************************
  104. *
  105. *'DEBPROC' GENTABIN ;
  106. 'ARGUMENT' tabin/'TABLE' ;
  107. 'SI' ('NON' ('EXIS' tabin)) ;
  108. tabin = 'TABL' ;
  109. 'FINS' ;
  110. 'REPE' bcl ;
  111. 'ARGU' titi/'MOT' ;
  112. 'SI' ('EXIS' titi) ;
  113. *dbg 'MESS' 'gentabin titi' ' ' titi ;
  114. tabin . titi = vrai ;
  115. 'SINO' ;
  116. 'QUIT' bcl ;
  117. 'FINS' ;
  118. 'FIN' bcl ;
  119. 'RESPRO' tabin ;
  120. *
  121. * End of procedure file GENTABIN
  122. *
  123. *'FINPROC' ;
  124. 'FINS' ;
  125. *
  126. 'SI' ('EGA' motcle 'VERTABIN') ;
  127. ************************************************************************
  128. * NOM : VERTABIN
  129. * DESCRIPTION : GENTABIN a construit une table dont les indices sont les
  130. * mots donnés en entrée.
  131. * Cette table sert ensuite dans VERTABIN pour vérifier
  132. * que tous les indices d'une autre table ne sont pas
  133. * différents de ceux de la première
  134. *
  135. * C'est un peu l'équivalent de MOTS et EXIS tab LISTMOTS
  136. * pour des mots de taille quelconque.
  137. *
  138. * LANGAGE : GIBIANE-CAST3M
  139. * AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  140. * mail : stephane.gounand@cea.fr
  141. **********************************************************************
  142. * VERSION : v1, 14/04/2020, version initiale
  143. * HISTORIQUE : v1, 14/04/2020, creation
  144. * HISTORIQUE :
  145. * HISTORIQUE :
  146. ************************************************************************
  147. *
  148. *'DEBPROC' VERTABIN ;
  149. 'ARGU' tverif*'TABLE' ;
  150. 'ARGU' tabin*'TABLE' ;
  151. tlicit = 'INDE' tverif ;
  152. *dbg 'LIST' tlicit ;
  153. dtl = 'DIME' tlicit ;
  154. 'REPE' itl dtl ;
  155. idx = 'CHAI' tlicit . &itl ;
  156. *dbg 'MESS' 'vertabin idx' ' ' idx ;
  157. 'SI' ('NON' ('EXIS' tabin idx)) ;
  158. * 791 2
  159. *Indice %m1:8 : N'est pas un indice de table reconnu
  160. 'ERRE' 791 'AVEC' idx ;
  161. 'FINS' ;
  162. 'FIN' itl ;
  163. *
  164. * End of procedure file VERTABIN
  165. *
  166. *'FINPROC' ;
  167. 'FINS' ;
  168. *
  169. 'SI' ('EGA' motcle 'MESUINTE') ;
  170. ************************************************************************
  171. * NOM : MESUINTE
  172. * DESCRIPTION :
  173. *
  174. *
  175. * Procédure MESUINTE qui devient MESU SURF (si dim 2) ou MESU VOLU (si dim 3)
  176. *
  177. *
  178. *
  179. * LANGAGE : GIBIANE-CAST3M
  180. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  181. * mél : stephane.gounand@cea.fr
  182. **********************************************************************
  183. * VERSION : v1, 25/08/2016, version initiale
  184. * HISTORIQUE : v1, 25/08/2016, création
  185. * HISTORIQUE :
  186. * HISTORIQUE :
  187. ************************************************************************
  188. *
  189. 'ARGUMENT' mai*'MAILLAGE' ;
  190. vdim = 'VALEUR' 'DIME' ;
  191. 'SI' ('EGA' vdim 2) ;
  192. vol = 'MESURE' mai 'SURF' ;
  193. 'SINON' ;
  194. vol = 'MESURE' mai 'VOLU' ;
  195. 'FINSI' ;
  196. 'RESPRO' vol ;
  197. *
  198. * End of procedure file MESUINTE
  199. *
  200. 'FINS' ;
  201. *
  202. 'SI' ('EGA' motcle 'AFFQUAL') ;
  203. ************************************************************************
  204. * NOM : AFFQUAL
  205. * DESCRIPTION : Affiche les qualités d'un maillage
  206. *
  207. *
  208. *
  209. * LANGAGE : GIBIANE-CAST3M
  210. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  211. * mél : stephane.gounand@cea.fr
  212. **********************************************************************
  213. * VERSION : v1, 25/08/2016, version initiale
  214. * HISTORIQUE : v1, 25/08/2016, création
  215. * HISTORIQUE :
  216. * HISTORIQUE :
  217. ************************************************************************
  218. *
  219. 'ARGUMENT' curtopo*'MAILLAGE' ;
  220. 'ARGU' volucib*'FLOTTANT' ;
  221. 'ARGU' volutol*'FLOTTANT' ;
  222. *
  223. *lmet=faux ;
  224.  
  225. laff=vrai ;
  226. lres=faux ;
  227. momet = 'ARIT' ;
  228.  
  229. lmotcle = 'MOTS' 'VMET' 'NAFF' 'REST' 'ARIT' 'GEOM' ;
  230. 'REPETER' imotcle ;
  231. 'ARGUMENT' motcle/'MOT' ;
  232. 'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
  233. * 'MESS' ('CHAI' 'affqual.proc : mot-cle lu :' motcle) ;
  234. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  235. cherr = 'CHAINE' 'Keyword' ' ' motcle ' unknown.' ; 'ERREUR' cherr ;
  236. 'FINSI' ;
  237. 'SI' ('EGA' motcle 'VMET') ;
  238. 'ARGU' metva ;
  239. * 'MESS' ('CHAI' 'affqual.proc : metva=') ;
  240. * 'LIST' ('TYPE' metva);
  241. 'FINS' ;
  242. 'SI' ('EGA' motcle 'NAFF') ; laff=faux ; 'FINSI' ;
  243. 'SI' ('EGA' motcle 'REST') ; lres=vrai ; 'FINSI' ;
  244. 'SI' ('EGA' motcle 'ARIT') ; momet = motcle ; 'FINSI' ;
  245. 'SI' ('EGA' motcle 'GEOM') ; momet = motcle ; 'FINSI' ;
  246. 'FIN' imotcle ;
  247. *'MESS' ('CHAI' 'laff=' laff) ;
  248. *'MESS' ('CHAI' 'lmet=' lmet) ;
  249. *'MESS' ('CHAI' 'lres=' lres) ;
  250. * lmet = faux ;
  251. 'SI' ('EXIS' metva) ;
  252. qtopo = 'INDI' 'TOPO' curtopo metva momet ;
  253. 'SINO' ;
  254. qtopo = 'INDI' 'TOPO' curtopo ;
  255. 'FINS' ;
  256. *listreel nel = 'DIME' qtopo ;
  257. nel = 'NBEL' curtopo ;
  258. nno = 'NBNO' curtopo ;
  259. dvol = '-' ('MESURE' curtopo) volucib ;
  260. cqalo = 'EXTR' qtopo 'VALE' 'TOPO' ;
  261. cqalo = 'ORDO' cqalo ; dcqalo = 'DIME' cqalo ;
  262. miq = 'EXTR' cqalo 1 ; maq = 'EXTR' cqalo dcqalo ;
  263. meq = 'EXTR' cqalo ('/' ('+' 1 dcqalo) 2) ;
  264. * miq = 'MINIMUM' qtopo ; maq = 'MAXIMUM' qtopo ;
  265. **listreel moq = '/' ('SOMME' qtopo) nel ;
  266. * moq = MATOUTIL 'MOYECHAM' qtopo ;
  267. *! Test des deux façons de calculer !
  268. 'SI' ('EXIS' metva) ;
  269. qtopo2 = 'INDI' 'TOPO' curtopo metva momet 'LISTREEL' ;
  270. 'SINO' ;
  271. qtopo2 = 'INDI' 'TOPO' curtopo 'LISTREEL' ;
  272. 'FINS' ;
  273. cqalo2 = 'ORDO' qtopo2 ; dcqalo2 = 'DIME' cqalo2 ;
  274. meq2 = 'EXTR' cqalo2 ('/' ('+' 1 dcqalo2) 2) ;
  275. * moq2 = ('SOMM' qtopo2) '/' ('DIME' qtopo2) ;
  276. * VALE prec un peu trop serré pour semt2
  277. 'SI' ('NEG' meq meq2 ('*' ('VALE' 'PREC') 10.)) ;
  278. 'MESS' 'meq,meq2,dmeq' meq meq2 ('-' meq meq2) ;
  279. 'FINS' ;
  280. * moqtopo = 'MODE' curtopo 'THERMIQUE' ;
  281. * moq = '/' ('INTG' qtopo moqtopo) ('MESU' curtopo) ;
  282. *listreel lvnul = POSI 0.D0 'DANS' qtopo volutol 'TOUS' ;
  283. *listreel nnul = 'DIME' lvnul ;
  284. nnul = 'MASQ' qtopo 'EGINFE' 'SOMME' volutol ;
  285. 'SI' lres ;
  286. 'RESP' dvol nel nnul nno miq maq meq ;
  287. 'FINS' ;
  288. 'SI' laff ;
  289. *'SI' ('EGA' nnul 0) ;
  290. titq = 'CHAINE' 'FORMAT' '(E9.2)'
  291. ' Dvol=' dvol ' Nel=' nel ' NelV0=' nnul ' Nno=' nno
  292. ' Qmin=' miq ' Qmax=' maq ' Qmed=' meq ;
  293. *'SINON' ;
  294. * titq = 'CHAINE' ' Dvol=' dvol ' N=' nel
  295. * ' N0=' nnul ' max=' maq ' moy=' moq ;
  296. *'FINSI' ;
  297. * titv = 'CHAINE' 'Nb. Elements plats=' nnul ;
  298. 'MESSAGE' titq ;
  299. * 'MESSAGE' titv ;
  300. 'FINS' ;
  301. *
  302. * End of procedure file AFFQUAL
  303. *
  304. 'FINS' ;
  305. *
  306. 'SI' ('EGA' motcle 'BORD') ;
  307. ************************************************************************
  308. * NOM : BORD
  309. * DESCRIPTION :
  310. *
  311. *
  312. * Procédure BORD qui devient CONTOUR (si dim 2) ou ENVELOPPE (si dim 3)
  313. *
  314. *
  315. *
  316. * LANGAGE : GIBIANE-CAST3M
  317. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  318. * mél : stephane.gounand@cea.fr
  319. **********************************************************************
  320. * VERSION : v1, 25/08/2016, version initiale
  321. * HISTORIQUE : v1, 25/08/2016, création
  322. * HISTORIQUE :
  323. * HISTORIQUE :
  324. ************************************************************************
  325. *
  326. 'ARGUMENT' mail*'MAILLAGE' ;
  327. *vdim = 'VALEUR' 'DIME' ;
  328. mdim = DEADUTIL 'DIMM' mail ;
  329. mailb = faux ;
  330. 'SI' ('EGA' mdim 2) ;
  331. mailb = 'CONTOUR' mail 'NOID' ;
  332. 'FINSI' ;
  333. 'SI' ('EGA' mdim 3) ;
  334. mailb = 'ENVELOPPE' mail 'NOID' ;
  335. * mailb = 'ENVELOPPE' mail ;
  336. 'FINSI' ;
  337. 'SI' ('EGA' ('TYPE' mail) 'LOGIQUE') ;
  338. 'ERREUR' ('CHAINE' 'mdim=' mdim) ;
  339. 'FINSI' ;
  340. 'RESPRO' mailb ;
  341. *
  342. * End of procedure file BORD
  343. *
  344. 'FINS' ;
  345. *
  346. 'SI' ('EGA' motcle 'FERMEPZ') ;
  347. ************************************************************************
  348. * NOM : FERMEPZ
  349. * DESCRIPTION :
  350. *
  351. * Ferme une topologie en étoilant son contour avec un point donné
  352. *
  353. *
  354. *
  355. *
  356. * LANGAGE : GIBIANE-CAST3M
  357. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  358. * mél : stephane.gounand@cea.fr
  359. **********************************************************************
  360. * VERSION : v1, 25/08/2016, version initiale
  361. * HISTORIQUE : v1, 25/08/2016, création
  362. * HISTORIQUE : v2 11/06/2018, ajout 2eme maillage servant à la partie
  363. * du contour qui ne doit pas être changée
  364. * HISTORIQUE : v3 on decoupe le bord en morceaux plats...
  365. ************************************************************************
  366. *
  367. *'DEBPROC' FERMEPZ ;
  368. 'ARGUMENT' topo*'MAILLAGE' ;
  369. 'ARGU' mailnoch/'MAILLAGE' ;
  370. *'ARGUMENT' pferm*'POINT' ;
  371. * Le inverse semble hyper important !!!!
  372. btopo = (MATOUTIL 'BORD' topo) ;
  373. 'SI' ('EXIS' mailnoch) ;
  374. btopo2 = 'DIFF' btopo mailnoch ;
  375. btopo = btopo2 ;
  376. 'FINS' ;
  377. ctopo = 'INVERSE' btopo ;
  378. * Partitionnement
  379. * Important que pfermi et tout les noeuds de la face soient coplanaires.
  380. tbor = 'PART' 'SEPA' ctopo 'ANGL' 0.01 'TELQ' ;
  381. lbor = 'ENUM' 'TABL' tbor ;
  382. topof = 'ENUM' topo ;
  383. mpferm = 'ENUM' ;
  384. * topof = topo 'ET' (ETOILE pferm ctopo) ;
  385. * topof = topo 'ET' ('COUT' pferm ctopo) ;
  386. dlbor = 'DIME' lbor ;
  387. 'REPE' iilbor dlbor ;
  388. ilbor = &iilbor ;
  389. ibor = 'EXTR' lbor ilbor ;
  390. pfermi = 'BARY' ibor ;
  391. topof = 'ET' topof ('COUT' pfermi ibor) ;
  392. mpferm = 'ET' mpferm pfermi ;
  393. 'FIN' iilbor ;
  394. * Teste si la topologie résultante est sans bord
  395. *TESTIDMA (BORD topof) ('VIDE' 'MAILLAGE') ;
  396. *'RESPRO' topof ;
  397. 'RESP' ('ETG' topof) ('ETG' mpferm) ;
  398. *
  399. * End of procedure file FERMEPZ
  400. *
  401. *'FINPROC' ;
  402. 'FINS' ;
  403. *
  404. *
  405. 'SI' ('EGA' motcle 'OUVREPZ') ;
  406. ************************************************************************
  407. * NOM : OUVREPZ
  408. * DESCRIPTION :
  409. *
  410. *
  411. * Ouvre une topologie en enlevant les éléments touchant un point donné
  412. *
  413. *
  414. *
  415. * LANGAGE : GIBIANE-CAST3M
  416. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  417. * mél : stephane.gounand@cea.fr
  418. **********************************************************************
  419. * VERSION : v1, 25/08/2016, version initiale
  420. * HISTORIQUE : v1, 25/08/2016, création
  421. * HISTORIQUE :
  422. * HISTORIQUE :
  423. ************************************************************************
  424. *
  425. *'DEBPROC' OUVREPZ ;
  426. 'ARGUMENT' xltopo/'LISTOBJE' ;
  427. lxltopo = 'EXIS' xltopo ;
  428. 'SI' ('NON' lxltopo) ;
  429. 'ARGU' topo*'MAILLAGE' ;
  430. xltopo = 'ENUM' topo ;
  431. 'FINS' ;
  432. *'ARGUMENT' pferm*'POINT' ;
  433. 'ARGUMENT' mpferm*'MAILLAGE' ;
  434. dltopo = 'DIME' xltopo ;
  435. xltopoo = 'ENUM' ;
  436. 'REPE' iltopo dltopo ;
  437. topo = 'EXTR' xltopo &iltopo ;
  438. touchp = 'ELEM' topo 'APPUYE' 'LARGEMENT' mpferm 'NOVERIF' ;
  439. topoo = 'DIFF' topo touchp ;
  440. xltopoo = xltopoo 'ET' topoo ;
  441. 'FIN' iltopo ;
  442. *
  443. 'SI' lxltopo ;
  444. 'RESPRO' xltopoo ;
  445. 'SINO' ;
  446. 'RESPRO' topoo ;
  447. 'FINS' ;
  448. *
  449. * End of procedure file OUVREPZ
  450. *
  451. *'FINPROC' ;
  452. 'FINS' ;
  453. *
  454. 'SI' ('EGA' motcle 'MOYECHAM') ;
  455. ************************************************************************
  456. * NOM : MOYECHAM
  457. * DESCRIPTION : Fait la moyenne d'un champ par élément (supposé scalaire
  458. * et constant par élément) au sens : somme des valeurs
  459. * sur les éléments divisée par le nombre d'éléments.
  460. *
  461. *
  462. *
  463. * LANGAGE : GIBIANE-CAST3M
  464. * AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  465. * mail : stephane.gounand@cea.fr
  466. **********************************************************************
  467. * VERSION : v1, 02/05/2020, version initiale
  468. * HISTORIQUE : v1, 02/05/2020, creation
  469. * HISTORIQUE :
  470. * HISTORIQUE :
  471. ************************************************************************
  472. *
  473. *'DEBPROC' MOYECHAM ;
  474. 'ARGUMENT' cha*'MCHAML' ;
  475. *
  476. lco = 'EXTR' cha 'COMP' ;
  477. dco = 'DIME' lco ;
  478. * 320 2
  479. * Il faut specifier un champ par element avec une seule composante
  480. 'SI' ('NEG' dco 1) ;
  481. 'ERRE' 320 ;
  482. 'FINS' ;
  483. * Change le nom de composante en scal plutôt que qualtopo
  484. * car sinon chan chpo supp plante.
  485. *cha = 'EXCO' ('EXTR' lco 1) cha 'SCAL ' ;
  486. cha = 'CHAN' 'COMP' 'SCAL ' cha ;
  487. mai = 'EXTR' cha 'MAIL' ;
  488. nel = 'NBEL' mai ;
  489. *moc = 'MODE' mai 'THERMIQUE' ;
  490. moc = 'MODE' mai 'MECANIQUE' ;
  491. *'MESS' 'moyecham : gravit' ;
  492. cha2 = 'CHAN' 'CHAM' cha moc 'GRAVITE' 'SCALAIRE' ;
  493. * Pb ici
  494. *cha1 = 'MANU' 'CHML' moc 'SCAL' 1. 'TYPE' 'SCALAIRE' 'GRAVITE' ;
  495. *chavol = 'INTG' moc cha1 'ELEM' ;
  496. *'LIST' 'RESU' chavol ;
  497. *'ERRE' stop ;
  498. *ms = 'MOTS' 'SCAL' ;
  499. *'LIST' 'RESU' cha ;
  500. *'LIST' 'RESU' cha2 ;
  501. *'LIST' 'RESU' cha1 ;
  502. *'LIST' 'RESU' chavol ;
  503. * chavol est nul sur les éléments de volume nul
  504. *cha2v = '/' cha2 chavol ms ms ms ;
  505. *som = 'INTG' moc cha2v ;
  506. * Plante sur une erreur 5.
  507. *'MESS' 'moyecham : chpo' ;
  508. chp2 = 'CHAN' 'CHPO' moc cha2 'SUPP' ;
  509. som = 'MAXI' ('RESU' chp2) ;
  510. moy = '/' som nel ;
  511. 'RESPRO' moy ;
  512. *
  513. * End of procedure file MOYECHAM
  514. *
  515. *'FINPROC' ;
  516. 'FINS' ;
  517. *
  518. 'SI' ('EGA' motcle 'AFFCAND') ;
  519. ************************************************************************
  520. * NOM : AFFCAND
  521. * DESCRIPTION :
  522. *
  523. * Procédure pour afficher une table de candidat + la valeur dun critère
  524. * en coloriant le candidat
  525. *
  526. *
  527. *
  528. *
  529. * LANGAGE : GIBIANE-CAST3M
  530. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  531. * mél : stephane.gounand@cea.fr
  532. **********************************************************************
  533. * VERSION : v1, 25/08/2016, version initiale
  534. * HISTORIQUE : v1, 25/08/2016, création
  535. * HISTORIQUE :
  536. * HISTORIQUE :
  537. ************************************************************************
  538. *
  539. *'DEBPROC' AFFCAND ;
  540. 'ARGUMENT' tcand/'TABLE' ;
  541. 'SI' ('NON' ('EXISTE' tcand)) ; tcand = 'TABLE' ; 'FINSI' ;
  542. 'REPETER' boumail ;
  543. 'ARGUMENT' mail/'MAILLAGE' ;
  544. 'SI' ('EXISTE' mail) ;
  545. itab = '+' ('DIME' tcand) 1 ;
  546. tcand . itab = mail ;
  547. 'SINON' ;
  548. 'QUITTER' boumail ;
  549. 'FINSI' ;
  550. 'FIN' boumail ;
  551. *
  552. ltypost = 'MOTS' 'MAIL' 'VOLU' 'QUAL' ;
  553. 'ARGU' typost*'MOT' ;
  554. itypost = 'POSI' typost 'DANS' ltypost ;
  555. 'SI' ('EGA' itypost 0) ;
  556. *Mot-clé incorrect "%M1:4". Voici la liste des valeurs admises :
  557. 'ERRE' 1052 'AVEC' ('CHAI' typost ' MAIL VOLU QUAL') ;
  558. 'FINS' ;
  559. *
  560. tit = 'GOONI FECIT' ;
  561. momet = 'ARIT' ;
  562. *
  563. lmotcle = 'MOTS' 'VMET' 'TITR' 'ARIT' 'GEOM' ;
  564. 'REPETER' imotcle ;
  565. 'ARGUMENT' motcle/'MOT' ;
  566. 'SI' ('NON' ('EXISTE' motcle)) ; 'QUITTER' imotcle ; 'FINSI' ;
  567. * 'MESS' ('CHAI' 'affcand.proc : mot-cle lu :' motcle) ;
  568. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  569. cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ; 'ERREUR' cherr ;
  570. 'FINSI' ;
  571. 'SI' ('EGA' motcle 'VMET') ;
  572. 'ARGU' metva ;
  573. * 'MESS' ('CHAI' 'affcand.proc : metva=') ;
  574. * 'LIST' ('TYPE' metva);
  575. 'FINS' ;
  576. 'SI' ('EGA' motcle 'TITR') ;
  577. 'ARGU' tit*'MOT' ;
  578. 'FINS' ;
  579. 'SI' ('EGA' motcle 'ARIT') ; momet = motcle ; 'FINS' ;
  580. 'SI' ('EGA' motcle 'GEOM') ; momet = motcle ; 'FINS' ;
  581. 'FIN' imotcle ;
  582. *
  583. ncand = 'DIME' tcand ;
  584. 'SI' ('NON' ('>' ncand 0)) ;
  585. 'ERREUR' 'Table vide' ;
  586. 'FINSI' ;
  587. dx = 0. ;
  588. mtot = 'VIDE' 'MAILLAGE' ;
  589. chvol = 'VIDE' 'CHPOINT'/'DIFFUS' ;
  590. mqual = 'VIDE' 'MMODEL' ;
  591. cqual = 'VIDE' 'MCHAML' ;
  592. vdim = 'VALEUR' 'DIME' ;
  593. 'REPETER' icand ncand ;
  594. tcandi = tcand . &icand ;
  595. mdec = tcandi ;
  596. mtot = 'ET' mtot mdec ;
  597. xm = 'COORDONNEE' 1 tcandi ;
  598. ddx = '*' ('-' ('MAXIMUM' xm) ('MINIMUM' xm)) 1.1 ;
  599. dx = '+' dx ddx ;
  600. 'SI' ('EGA' itypost 2) ;
  601. cdec = 'MANUEL' 'CHPO' mdec 1 'SCAL' ('MESURE' mdec)
  602. 'NATURE' 'DIFFUS' ;
  603. chvol = 'ET' chvol cdec ;
  604. 'FINSI' ;
  605. 'SI' ('EGA' itypost 3) ;
  606. modec = 'MODE' mdec 'THERMIQUE' ;
  607. mqual = 'ET' mqual modec ;
  608. 'SI' ('EXIS' metva) ;
  609. cdec = 'INDI' 'TOPO' mdec metva momet ;
  610. 'SINO' ;
  611. cdec = 'INDI' 'TOPO' mdec ;
  612. 'FINS' ;
  613. cqual = 'ET' cqual cdec ;
  614. 'FINSI' ;
  615. 'FIN' icand ;
  616. *mtra = mtot 'ET' cnt ;
  617. mtra = mtot ;
  618. echq = 'PROG' 0. 'PAS' ('/' 1. 20.) 1. ;
  619. *echv = 'PROG' volucib 'PAS' ('/' ('-' voluini volucib) 20.) voluini ;
  620. *'SI' lnclk ;
  621. * 'SI' ('EGA' itypost 1) ;
  622. * 'TRACER' mtra 'TITR' tit 'NCLK' ;
  623. * 'FINSI' ;
  624. * 'SI' ('EGA' itypost 2) ;
  625. * 'TRACER' chvol mtot mtra 'TITR' tit 'NCLK' ;
  626. * 'FINSI' ;
  627. * 'SI' ('EGA' itypost 3) ;
  628. * 'TRACER' cqual mqual mtra echq 'TITR' tit 'NCLK' ;
  629. * 'FINSI' ;
  630. *'SINON' ;
  631. 'SI' ('EGA' itypost 1) ;
  632. 'TRACER' mtra 'TITR' tit ;
  633. 'FINSI' ;
  634. 'SI' ('EGA' itypost 2) ;
  635. * 'LISTE' echv ; 'LISTE' mtot ;'LISTE' mtra ; 'LISTE' chvol ;
  636. 'TRACER' chvol mtot mtra 'TITR' tit ;
  637. 'FINSI' ;
  638. 'SI' ('EGA' itypost 3) ;
  639. 'TRACER' cqual mqual mtra echq 'TITR' tit ;
  640. 'FINSI' ;
  641. *'FINSI' ;
  642. *
  643. * End of procedure file AFFCAND
  644. *
  645. *'FINPROC' ;
  646. 'FINS' ;
  647. *
  648. 'SI' ('EGA' motcle 'MAILINTE') ;
  649. ************************************************************************
  650. * NOM : MAILINTE
  651. * DESCRIPTION :
  652. *
  653. *
  654. * Procédure MAILINTE qui devient SURF (si dim 2) ou VOLU (si dim 3)
  655. *
  656. *
  657. *
  658. * LANGAGE : GIBIANE-CAST3M
  659. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  660. * mél : stephane.gounand@cea.fr
  661. **********************************************************************
  662. * VERSION : v1, 25/09/2017, version initiale
  663. * HISTORIQUE : v1, 25/09/2017, création
  664. * HISTORIQUE :
  665. * HISTORIQUE :
  666. ************************************************************************
  667. *
  668. *'DEBPROC' MAILINTE ;
  669. 'ARGUMENT' mail*'MAILLAGE' ;
  670. vdim = 'VALEUR' 'DIME' ;
  671. mailb = faux ;
  672. 'SI' ('EGA' vdim 2) ;
  673. mailb = 'SURF' mail ;
  674. 'FINSI' ;
  675. 'SI' ('EGA' vdim 3) ;
  676. mailb = 'VOLU' mail 'VERB' ;
  677. 'FINSI' ;
  678. 'SI' ('EGA' ('TYPE' mail) 'LOGIQUE') ;
  679. 'ERREUR' ('CHAINE' 'vdim=' vdim) ;
  680. 'FINSI' ;
  681. 'RESPRO' mailb ;
  682. *
  683. * End of procedure file MAILINTE
  684. *
  685. *'FINPROC' ;
  686. 'FINS' ;
  687. 'SI' ('EGA' motcle 'VERITOPO') ;
  688. ************************************************************************
  689. * NOM : VERITOPO
  690. * DESCRIPTION :
  691. *
  692. *
  693. * Procédure VERITOPO qui verifie une topologie (i.e. un maillage massif)
  694. *
  695. *
  696. *
  697. * LANGAGE : GIBIANE-CAST3M
  698. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  699. * mél : stephane.gounand@cea.fr
  700. **********************************************************************
  701. * VERSION : v1, 03/11/2025, version initiale
  702. * HISTORIQUE : v1, 03/11/2025, création
  703. * HISTORIQUE :
  704. * HISTORIQUE :
  705. ************************************************************************
  706. *
  707. *'DEBPROC' VERITOPO ;
  708. 'ARGUMENT' xxxtopo*'MAILLAGE' ;
  709. 'ARGU' xxxvolucib/'FLOTTANT' ;
  710. lvolucib = 'EXIS' xxxvolucib ;
  711. 'SI' lvolucib ;
  712. 'ARGU' volutol*'FLOTTANT' ;
  713. 'FINS' ;
  714. 'ARGU' xxxdesc*'MOT' ;
  715. 'SI' ('NON' ('EXIS' xxxdesc)) ; xxxdesc = 'CHAI' 'VERITOPO :' ; 'FINS' ;
  716. 'ARGU' xxxmbnc/'MAILLAGE' ;
  717. lok = vrai ;
  718. vdim = 'VALEUR' 'DIME' ;
  719. *
  720. * Verification pas d'elements en double
  721. *
  722. xxxtopou = 'UNIQ' xxxtopo ;
  723. dnode = '-' ('NBEL' xxxtopo) ('NBEL' xxxtopou) ;
  724. 'SI' ('NEG' dnode 0) ;
  725. 'MESSAGE' xxxdesc ' ' dnode ' elements en double' ;
  726. lok = lok 'ET' faux ;
  727. 'FINS' ;
  728. *
  729. * Verification que le bord est ferme
  730. *
  731. lbord = vrai ;
  732. 'SI' ('EGA' vdim 2) ;
  733. bxxxtopo = 'CONT' 'EXTE' xxxtopo ;
  734. citopo = 'CONT' 'INTE' xxxtopo 'NOID' ;
  735. 'SI' ('NEG' ('NBEL' citopo) 0) ;
  736. 'MESS' xxxdesc ' Aretes partagees par plus de deux elements' ;
  737. lbord = lbord 'ET' faux ;
  738. 'FINS' ;
  739. pbor = 'POIN' bxxxtopo 'EXTR' ;
  740. 'SI' ('NEG' ('NBEL' pbor) 0) ;
  741. 'MESS' xxxdesc ' Bord non ferme' ;
  742. lbord = lbord 'ET' faux ;
  743. 'FINS' ;
  744. 'FINS' ;
  745. 'SI' ('EGA' vdim 3) ;
  746. bxxxtopo = 'ENVE' xxxtopo ;
  747. cnext = 'CONT' 'EXTE' bxxxtopo 'NOID' ;
  748. 'SI' ('NEG' ('NBEL' cnext) 0) ;
  749. 'MESS' xxxdesc ' Bord non ferme' ;
  750. lbord = lbord 'ET' faux ;
  751. 'FINS' ;
  752. cnint = 'CONT' 'INTE' bxxxtopo 'NOID' ;
  753. 'SI' ('NEG' ('NBEL' cnint) 0) ;
  754. 'MESS' xxxdesc ' Bord non simple' ;
  755. lbord = lbord 'ET' faux ;
  756. 'FINS' ;
  757. 'FINS' ;
  758. lok = lok 'ET' lbord ;
  759. *
  760. * Volume toujours correct ?
  761. *
  762. 'SI' lvolucib ;
  763. volv = 'MESU' xxxtopo ;
  764. dvolv = '-' xxxvolucib volv ;
  765. 'SI' ('NEG' dvolv 0 volutol) ;
  766. 'MESSAGE' xxxdesc ' Volume (mesu) modifie vol=' volv ' / volucib=' xxxvolucib ;
  767. 'MESSAGE' xxxdesc ' dvol=' dvolv ;
  768. lok = lok 'ET' faux ;
  769. 'FINS' ;
  770. 'SI' lbord ;
  771. vols = MATOUTIL 'MESUINTE' bxxxtopo ;
  772. dvols = '-' xxxvolucib vols ;
  773. 'SI' ('NEG' dvols 0 volutol) ;
  774. 'MESSAGE' xxxdesc ' Volume (mesuinte) modifie vol=' vols ' / volucib=' xxxvolucib ;
  775. 'MESSAGE' xxxdesc ' dvol=' dvols ;
  776. lok = lok 'ET' faux ;
  777. 'FINS' ;
  778. 'FINS' ;
  779. 'FINS' ;
  780. *
  781. * mbnc toujours inclus dans le bord ?
  782. *
  783. 'SI' ('EXIS' xxxmbnc) ;
  784. mi = 'INTE' xxxmbnc bxxxtopo 'NOVERIF' ;
  785. 'SI' ('NEG' ('NBEL' ('DIFF' mi xxxmbnc)) 0) ;
  786. 'MESSAGE' xxxdesc ' bord_no_chan non inclus dans le bord' ;
  787. 'TRAC' (mi 'ET' ('COUL' bxxxtopo 'ROUG')) ;
  788. lok = lok 'ET' faux ;
  789. 'FINS' ;
  790. 'FINS' ;
  791. 'RESPRO' lok ;
  792. *
  793. * End of procedure file VERITOPO
  794. *
  795. *'FINPROC' ;
  796. 'FINS' ;
  797. *
  798. * End of procedure file MATOUTIL
  799. *
  800. 'FINPROC' ;
  801.  
  802.  

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