Télécharger deadutil.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEADUTIL PROCEDUR GOUNAND 18/10/24 21:15:02 9970
  2. ************************************************************************
  3. * NOM : DEADUTIL
  4. * DESCRIPTION :
  5. *
  6. *
  7. *
  8. * LANGAGE : GIBIANE-CAST3M
  9. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  10. * mél : gounand@semt2.smts.cea.fr
  11. **********************************************************************
  12. * VERSION : v1, 05/04/2006, version initiale
  13. * HISTORIQUE : v1, 05/04/2006, création
  14. * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu
  15. * de G12 pour QEQU et QISO
  16. * HISTORIQUE : 2018/10/10 : NLINP au lieu de NLIN
  17. * HISTORIQUE :
  18. * HISTORIQUE :
  19. ************************************************************************
  20. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  21. * en cas de modification de ce sous-programme afin de faciliter
  22. * la maintenance !
  23. ************************************************************************
  24. *
  25. *
  26. 'DEBPROC' DEADUTIL ;
  27. 'ARGUMENT' motcle*'MOT' ;
  28. *
  29. lmotcle = 'MOTS' 'DIMM' 'TYPM' 'AXI?' 'SPH?' 'QISO' 'QEQU' ;
  30. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  31. cherr = 'CHAINE' 'Keyword ' motcle ' unknown.' ;
  32. 'ERREUR' cherr ;
  33. 'FINSI' ;
  34. *
  35. 'SI' ('EGA' motcle 'AXI?') ;
  36. vmod = 'VALEUR' 'MODE' ;
  37. laxi = ('EGA' vmod 'AXIS') 'OU' ('EGA' vmod 'UNIDAXIS')
  38. 'OU' ('EGA' vmod 'UNIDAXISAXDZ') 'OU' ('EGA' vmod 'UNIDAXISAXCZ')
  39. 'OU' ('EGA' vmod 'UNIDAXISAXGZ') ;
  40. 'RESPRO' laxi ;
  41. 'FINSI' ;
  42. *
  43. 'SI' ('EGA' motcle 'SPH?') ;
  44. vmod = 'VALEUR' 'MODE' ;
  45. lsph = 'EGA' vmod 'UNIDSPHE' ;
  46. 'RESPRO' lsph ;
  47. 'FINSI' ;
  48. *
  49. 'SI' ('EGA' motcle 'DIMM') ;
  50. 'ARGUMENT' mt*'MAILLAGE' ;
  51. tabdim = 'TABLE' ;
  52. tabdim . 0 = 'MOTS' 'POI1' ;
  53. tabdim . 1 = 'MOTS' 'SEG2' 'SEG3' ;
  54. tabdim . 2 = 'MOTS' 'TRI3' 'TRI6' 'TRI7' 'QUA4' 'QUA8' 'QUA9' ;
  55. tabdim . 3 = 'MOTS' 'CUB8' 'CU20' 'PRI6' 'PR15' 'TET4' 'TE10'
  56. 'PYR5' 'PY13' 'CU27' 'PR21' 'TE15' 'PY19' ;
  57. fidim = FAUX ;
  58. dim = -1 ;
  59. lelem = 'ELEM' mt 'TYPE' ;
  60. nelem = 'DIME' lelem ;
  61. 'SI' ('EGA' nelem 0) ;
  62. cherr = 'CHAINE' 'Maillage vide ?' ;
  63. 'ERREUR' cherr ;
  64. 'FINSI' ;
  65. *
  66. 'REPETER' ielem nelem ;
  67. melem = 'EXTRAIRE' lelem &ielem ;
  68. 'REPETER' itdim 4 ;
  69. idim = ('-' &itdim 1) ;
  70. lli = tabdim . idim ;
  71. * id = ISINLIS melem lli ;
  72. * 'SI' ('NEG' id 0) ;
  73. id = 'EXISTE' lli melem ;
  74. 'SI' id ;
  75. 'SI' fidim ;
  76. 'SI' ('NEG' dim idim) ;
  77. cherr = 'CHAINE' 'Composite mesh not allowed' ;
  78. 'ERREUR' cherr ;
  79. 'FINSI' ;
  80. 'SINON' ;
  81. dim = idim ;
  82. fidim = VRAI ;
  83. 'FINSI' ;
  84. 'FINSI' ;
  85. 'FIN' itdim ;
  86. 'FIN' ielem ;
  87. *
  88. 'SI' ('NON' fidim) ;
  89. cherr = 'CHAINE' 'No known elements in this mesh' ;
  90. 'ERREUR' cherr ;
  91. 'FINSI' ;
  92. *
  93. 'RESPRO' dim ;
  94. 'FINSI' ;
  95. *
  96. *
  97. *
  98. 'SI' ('EGA' motcle 'TYPM') ;
  99. 'ARGUMENT' mt*'MAILLAGE' ;
  100. tabtyp = 'TABLE' ;
  101. tabtyp . 1 = 'MOTS' 'SEG2' 'TRI3' 'QUA4' 'CUB8' 'PRI6' 'TET4' 'PYR5' ;
  102. tabtyp . 2 = 'MOTS' 'TRI6' 'QUA8' 'CU20' 'PR15' 'TE10' 'PY13' ;
  103. tabtyp . 3 = 'MOTS' 'SEG3' 'TRI7' 'QUA9' 'CU27' 'PR21' 'TE15' 'PY19' ;
  104. listyp = 'MOTS' 'LINE' 'QUAI' 'QUAF' ;
  105. *
  106. fityp = FAUX ;
  107. typ = -1 ;
  108. lelem = 'ELEM' mt 'TYPE' ;
  109. nelem = 'DIME' lelem ;
  110. 'SI' ('EGA' nelem 0) ;
  111. cherr = 'CHAINE' 'Void mesh ?' ;
  112. 'MESSAGE' cherr ;
  113. 'QUITTER' TYPM ;
  114. 'FINSI' ;
  115. *
  116. 'REPETER' ielem nelem ;
  117. melem = 'EXTRAIRE' lelem &ielem ;
  118. 'REPETER' ittyp 3 ;
  119. ityp = &ittyp ;
  120. lli = tabtyp . ityp ;
  121. * id = ISINLIS melem lli ;
  122. * 'SI' ('NEG' id 0) ;
  123. id = 'EXISTE' lli melem ;
  124. 'SI' id ;
  125. 'SI' fityp ;
  126. 'SI' ('NEG' typ ityp) ;
  127. cherr = 'CHAINE' 'Composite mesh not allowed' ;
  128. 'ERREUR' cherr ;
  129. 'FINSI' ;
  130. 'SINON' ;
  131. typ = ityp ;
  132. fityp = VRAI ;
  133. 'FINSI' ;
  134. 'FINSI' ;
  135. 'FIN' ittyp ;
  136. 'FIN' ielem ;
  137. *
  138. 'SI' ('NON' fityp) ;
  139. cherr = 'CHAINE' 'No known elements in this mesh' ;
  140. 'ERREUR' cherr ;
  141. 'FINSI' ;
  142. *
  143. mtyp = 'EXTRAIRE' listyp typ ;
  144. 'RESPRO' mtyp ;
  145. 'FINSI' ;
  146. *
  147. * QISO PROCEDUR GOUNAND 06/04/06 17:53:15 5371
  148. ************************************************************************
  149. * NOM : QISO
  150. * DESCRIPTION : Critère de qualité d'un maillage : alignement
  151. * (= isotropie)
  152. *
  153. *
  154. *
  155. * LANGAGE : GIBIANE-CAST3M
  156. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  157. * mél : gounand@semt2.smts.cea.fr
  158. **********************************************************************
  159. * VERSION : v1, 11/05/2007, version initiale
  160. * HISTORIQUE : v1, 11/05/2007, création
  161. * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu
  162. * de G12
  163. * HISTORIQUE :
  164. * HISTORIQUE :
  165. ************************************************************************
  166. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  167. * en cas de modification de ce sous-programme afin de faciliter
  168. * la maintenance !
  169. ************************************************************************
  170. *
  171. *
  172. *
  173. 'SI' ('EGA' motcle 'QISO') ;
  174. *
  175. 'ARGUMENT' _mt*'MAILLAGE' ;
  176. 'ARGUMENT' gdisc*'MOT' ;
  177. 'ARGUMENT' methgau*'MOT' ;
  178. *
  179. idim = 'VALEUR' 'DIME' ;
  180. vdim = DEADUTIL 'DIMM' _mt ;
  181. *
  182. 'ARGUMENT' met/'CHPOINT' ;
  183. lmet = 'EXISTE' met ;
  184. 'SI' lmet ;
  185. 'ARGUMENT' metdisc*'MOT' ;
  186. 'SINON' ;
  187. metdisc = 'CSTE' ;
  188. 'FINSI' ;
  189. *
  190. ncmet = '/' ('*' idim ('+' idim 1)) 2 ;
  191. loi = 'CHAINE' 'QALI' ;
  192. *
  193. * Calcul de la fonctionnelle
  194. *
  195. numop = 1 ;
  196. numvar = 1 ;
  197. numder = vdim ;
  198. numdat = 0 ;
  199. numcof = 0 ;
  200. *
  201. A = ININLIN numop numvar numdat numcof numder ;
  202. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  203. A . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  204. A . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  205. *
  206. numvar = 1 ;
  207. numdat = ncmet ;
  208. numcof = 1 ;
  209. B = ININLIN numop numvar numdat numcof numder ;
  210. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  211. B . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  212. B . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  213. *
  214. idat = 0 ;
  215. 'REPETER' idi idim ;
  216. nomdat = 'CHAINE' 'G' &idi &idi ;
  217. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  218. idat = '+' idat 1 ;
  219. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  220. B . 'DAT' . idat . 'DISC' = metdisc ;
  221. 'SI' lmet ;
  222. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  223. 'SINON' ;
  224. B . 'DAT' . idat . 'VALEUR' = 1.D0 ;
  225. 'FINSI' ;
  226. 'FIN' idi ;
  227. 'REPETER' idi idim ;
  228. nj = '-' idim &idi ;
  229. * 'MESSAGE' ('CHAINE' 'nj=' nj) ;
  230. 'SI' ('>EG' nj 1) ;
  231. 'REPETER' jdi nj ;
  232. * Mise en cohérence avec Castem
  233. * nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ;
  234. nomdat = 'CHAINE' 'G' ('+' &idi &jdi) &idi ;
  235. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  236. idat = '+' idat 1 ;
  237. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  238. B . 'DAT' . idat . 'DISC' = metdisc ;
  239. 'SI' lmet ;
  240. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  241. 'SINON' ;
  242. B . 'DAT' . idat . 'VALEUR' = 0.D0 ;
  243. 'FINSI' ;
  244. 'FIN' jdi ;
  245. 'FINSI' ;
  246. 'FIN' idi ;
  247. lisdat = 'LECT' 1 'PAS' 1 'NPAS' ('-' numdat 1) ;
  248. *
  249. B . 'COF' . 1 . 'COMPOR' = loi ;
  250. B . 'COF' . 1 . 'LDAT' = lisdat ;
  251. *
  252. A . 1 . 1 . 0 = 'LECT' ;
  253. B . 1 . 1 . 0 = 'LECT' 1 ;
  254. *
  255. vfonc = NLINP gdisc _mt A B 'ERF1' methgau ;
  256. *
  257. 'RESPRO' vfonc ;
  258. 'FINSI' ;
  259. *
  260. * QEQU PROCEDUR GOUNAND 06/04/06 17:53:15 5371
  261. ************************************************************************
  262. * NOM : QEQU
  263. * DESCRIPTION : Critère de qualité d'un maillage : equidistribution
  264. *
  265. *
  266. *
  267. * LANGAGE : GIBIANE-CAST3M
  268. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  269. * mél : gounand@semt2.smts.cea.fr
  270. **********************************************************************
  271. * VERSION : v1, 11/05/2007, version initiale
  272. * HISTORIQUE : v1, 11/05/2007, création
  273. * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu
  274. * de G12
  275. * HISTORIQUE :
  276. * HISTORIQUE :
  277. ************************************************************************
  278. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  279. * en cas de modification de ce sous-programme afin de faciliter
  280. * la maintenance !
  281. ************************************************************************
  282. *
  283. *
  284. 'SI' ('EGA' motcle 'QEQU') ;
  285. *
  286. 'ARGUMENT' _mt*'MAILLAGE' ;
  287. 'ARGUMENT' gdisc*'MOT' ;
  288. 'ARGUMENT' methgau*'MOT' ;
  289. *
  290. idim = 'VALEUR' 'DIME' ;
  291. vdim = DEADUTIL 'DIMM' _mt ;
  292. *
  293. 'ARGUMENT' met/'CHPOINT' ;
  294. lmet = 'EXISTE' met ;
  295. 'SI' lmet ;
  296. 'ARGUMENT' metdisc*'MOT' ;
  297. 'SINON' ;
  298. metdisc = 'CSTE' ;
  299. 'FINSI' ;
  300. ncmet = '/' ('*' idim ('+' idim 1)) 2 ;
  301. loi = 'CHAINE' 'QEQU' ;
  302. *
  303. * Calcul de la fonctionnelle
  304. *
  305. numop = 1 ;
  306. numvar = 1 ;
  307. numder = vdim ;
  308. numdat = 0 ;
  309. numcof = 0 ;
  310. *
  311. A = ININLIN numop numvar numdat numcof numder ;
  312. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  313. A . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  314. A . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  315. *
  316. numvar = 1 ;
  317. numdat = ncmet ;
  318. numcof = 1 ;
  319. B = ININLIN numop numvar numdat numcof numder ;
  320. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'DUMM' ;
  321. B . 'VAR' . 1 . 'DISC' = 'CSTE' ;
  322. B . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  323. *
  324. idat = 0 ;
  325. 'REPETER' idi idim ;
  326. nomdat = 'CHAINE' 'G' &idi &idi ;
  327. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  328. idat = '+' idat 1 ;
  329. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  330. B . 'DAT' . idat . 'DISC' = metdisc ;
  331. 'SI' lmet ;
  332. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  333. 'SINON' ;
  334. B . 'DAT' . idat . 'VALEUR' = 1.D0 ;
  335. 'FINSI' ;
  336. 'FIN' idi ;
  337. 'REPETER' idi idim ;
  338. nj = '-' idim &idi ;
  339. * 'MESSAGE' ('CHAINE' 'nj=' nj) ;
  340. 'SI' ('>EG' nj 1) ;
  341. 'REPETER' jdi nj ;
  342. * Mise en cohérence avec Castem
  343. * nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ;
  344. nomdat = 'CHAINE' 'G' ('+' &idi &jdi) &idi ;
  345. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  346. idat = '+' idat 1 ;
  347. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  348. B . 'DAT' . idat . 'DISC' = metdisc ;
  349. 'SI' lmet ;
  350. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  351. 'SINON' ;
  352. B . 'DAT' . idat . 'VALEUR' = 0.D0 ;
  353. 'FINSI' ;
  354. 'FIN' jdi ;
  355. 'FINSI' ;
  356. 'FIN' idi ;
  357. lisdat = 'LECT' 1 'PAS' 1 'NPAS' ('-' numdat 1) ;
  358. *
  359. B . 'COF' . 1 . 'COMPOR' = loi ;
  360. B . 'COF' . 1 . 'LDAT' = lisdat ;
  361. *
  362. A . 1 . 1 . 0 = 'LECT' ;
  363. B . 1 . 1 . 0 = 'LECT' 1 ;
  364. *
  365. vfonci = NLINP gdisc _mt A B 'ERF1' methgau ;
  366. *
  367. rvfonci = 'MAXIMUM' ('RESULT' vfonci) ;
  368. rvelemr = 'FLOTTANT' ('NBEL' _mt) ;
  369. fac = '/' rvelemr rvfonci ;
  370. *
  371. vfonc = '*' vfonci fac ;
  372. *
  373. 'SI' faux ;
  374. rvfonc = 'MAXIMUM' ('RESULT' vfonc) ;
  375. tol = '/' rvelemr 10. ;
  376. test = ('EGA' rvfonc rvelemr tol) ;
  377. 'SI' ('NON' test) ;
  378. 'ERREUR' 5 ;
  379. 'FINSI' ;
  380. 'FINSI' ;
  381. *
  382. 'RESPRO' vfonc ;
  383. *
  384. 'FINSI' ;
  385. *
  386. * End of procedure file DEADUTIL
  387. *
  388. 'FINPROC' ;
  389.  
  390.  
  391.  
  392.  
  393.  

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