Télécharger deadutil.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEADUTIL PROCEDUR GOUNAND 26/07/06 21:15:03 12592
  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. *
  28. 'ARGUMENT' motcle*'MOT' ;
  29. *
  30. lmotcle = 'MOTS' 'DIMM' 'TYPM' 'AXI?' 'SPH?' 'QISO' 'QALI' 'QEQU' 'INDI' ;
  31. 'SI' ('NON' ('EXISTE' lmotcle motcle)) ;
  32. 'ERRE' 1052 'AVEC' motcle 'DIMM TYPM AXI? SPH? QISO QALI QEQU INDI' ;
  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. *1027 2
  63. *Une donnee de type %M1:8 est vide
  64. 'ERRE' 1027 'AVEC' 'MAILLAGE' ;
  65. 'FINSI' ;
  66. *
  67. 'REPETER' ielem nelem ;
  68. melem = 'EXTRAIRE' lelem &ielem ;
  69. 'REPETER' itdim 4 ;
  70. idim = ('-' &itdim 1) ;
  71. lli = tabdim . idim ;
  72. * id = ISINLIS melem lli ;
  73. * 'SI' ('NEG' id 0) ;
  74. id = 'EXISTE' lli melem ;
  75. 'SI' id ;
  76. 'SI' fidim ;
  77. 'SI' ('NEG' dim idim) ;
  78. cherr = 'CHAINE' 'Composite mesh not allowed' ;
  79. 'ERREUR' cherr ;
  80. 'FINSI' ;
  81. 'SINON' ;
  82. dim = idim ;
  83. fidim = VRAI ;
  84. 'FINSI' ;
  85. 'FINSI' ;
  86. 'FIN' itdim ;
  87. 'FIN' ielem ;
  88. *
  89. 'SI' ('NON' fidim) ;
  90. cherr = 'CHAINE' 'No known elements in this mesh' ;
  91. 'ERREUR' cherr ;
  92. 'FINSI' ;
  93. *
  94. 'RESPRO' dim ;
  95. 'FINSI' ;
  96. *
  97. *
  98. *
  99. 'SI' ('EGA' motcle 'TYPM') ;
  100. 'ARGUMENT' mt*'MAILLAGE' ;
  101. tabtyp = 'TABLE' ;
  102. tabtyp . 1 = 'MOTS' 'SEG2' 'TRI3' 'QUA4' 'CUB8' 'PRI6' 'TET4' 'PYR5' ;
  103. tabtyp . 2 = 'MOTS' 'TRI6' 'QUA8' 'CU20' 'PR15' 'TE10' 'PY13' ;
  104. tabtyp . 3 = 'MOTS' 'SEG3' 'TRI7' 'QUA9' 'CU27' 'PR21' 'TE15' 'PY19' ;
  105. listyp = 'MOTS' 'LINE' 'QUAI' 'QUAF' ;
  106. *
  107. fityp = FAUX ;
  108. typ = -1 ;
  109. lelem = 'ELEM' mt 'TYPE' ;
  110. nelem = 'DIME' lelem ;
  111. 'SI' ('EGA' nelem 0) ;
  112. *1027 2
  113. *Une donnee de type %M1:8 est vide
  114. 'ERRE' 1027 'AVEC' 'MAILLAGE' ;
  115. 'FINSI' ;
  116. *
  117. 'REPETER' ielem nelem ;
  118. melem = 'EXTRAIRE' lelem &ielem ;
  119. 'REPETER' ittyp 3 ;
  120. ityp = &ittyp ;
  121. lli = tabtyp . ityp ;
  122. * id = ISINLIS melem lli ;
  123. * 'SI' ('NEG' id 0) ;
  124. id = 'EXISTE' lli melem ;
  125. 'SI' id ;
  126. 'SI' fityp ;
  127. 'SI' ('NEG' typ ityp) ;
  128. cherr = 'CHAINE' 'Composite mesh not allowed' ;
  129. 'ERREUR' cherr ;
  130. 'FINSI' ;
  131. 'SINON' ;
  132. typ = ityp ;
  133. fityp = VRAI ;
  134. 'FINSI' ;
  135. 'FINSI' ;
  136. 'FIN' ittyp ;
  137. 'FIN' ielem ;
  138. *
  139. 'SI' ('NON' fityp) ;
  140. cherr = 'CHAINE' 'No known elements in this mesh' ;
  141. 'ERREUR' cherr ;
  142. 'FINSI' ;
  143. *
  144. mtyp = 'EXTRAIRE' listyp typ ;
  145. 'RESPRO' mtyp ;
  146. 'FINSI' ;
  147. *
  148. * QISO PROCEDUR GOUNAND 06/04/06 17:53:15 5371
  149. ************************************************************************
  150. * NOM : QISO
  151. * DESCRIPTION : Critère de qualité d'un maillage : alignement
  152. * (= isotropie)
  153. *
  154. *
  155. *
  156. * LANGAGE : GIBIANE-CAST3M
  157. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  158. * mél : gounand@semt2.smts.cea.fr
  159. **********************************************************************
  160. * VERSION : v1, 11/05/2007, version initiale
  161. * HISTORIQUE : v1, 11/05/2007, création
  162. * HISTORIQUE : 2018/01/22 : chgt nom composante hors diago G21 au lieu
  163. * de G12
  164. * HISTORIQUE : 2025/11/20 : mutualisation avec QEQU
  165. * HISTORIQUE :
  166. ************************************************************************
  167. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  168. * en cas de modification de ce sous-programme afin de faciliter
  169. * la maintenance !
  170. ************************************************************************
  171. *
  172. *
  173. *
  174. 'SI' ('EXIS' ('MOTS' 'QISO' 'QALI' 'QEQU' 'INDI') motcle) ;
  175. *
  176. 'SI' ('EGA' motcle 'INDI') ;
  177. lindic = 'MOTS' ;
  178. lindic2 = 'MOTS' ;
  179. lindicv = 'MOTS' 'COHE' 'EQLT' 'ISOD' 'DENS' 'TOPO' ;
  180. 'REPE' bmcle ;
  181. 'ARGU' mindic/'MOT' ;
  182. 'SI' ('NON' ('EXIS' mindic)) ; 'QUIT' bmcle ; 'FINS' ;
  183. indicok = 'EXIS' lindicv mindic ;
  184. 'SI' ('NON' indicok) ;
  185. lindic2 = lindic2 'ET' mindic ;
  186. 'SINO' ;
  187. lindic = lindic 'ET' mindic ;
  188. 'FINS' ;
  189. 'FIN' bmcle ;
  190. 'SINO' ;
  191. lindic = 'MOTS' motcle ;
  192. lindic2 = 'MOTS' ;
  193. 'REPE' bmcle ;
  194. 'ARGU' mindic/'MOT' ;
  195. 'SI' ('NON' ('EXIS' mindic)) ; 'QUIT' bmcle ; 'FINS' ;
  196. lindic2 = lindic2 'ET' mindic ;
  197. 'FIN' bmcle ;
  198. 'FINS' ;
  199. *
  200. 'ARGUMENT' mail*'MAILLAGE' ;
  201. * On utilise un modele MECANIQUE car le modele THERMIQUE ne supporte pas les QUAFs
  202. * Ce modele sert a faire un REDU en cas de calcul parallele de l'indicateur
  203. modm = 'MODE' mail 'MECANIQUE' ;
  204. *
  205. lmotcle2 = 'MOTS' 'METR' 'DISG' 'METG' 'DENS' ;
  206. tmotcle2 = 'CHAI' 'METR DISG METG DENS' ;
  207. 'SI' ('EXIS' lindic 'TOPO') ;
  208. mogeos = 'MOTS' 'GEOM' 'ARIT' ;
  209. lmotcle2 = lmotcle2 'ET' mogeos ;
  210. tmotcle2 = 'CHAI' tmotcle2 ' DENS GEOM ARIT' ;
  211. 'SINO' ;
  212. mogeos = 'MOTS' ;
  213. 'FINS' ;
  214. *
  215. lchad = FAUX ; lchp = FAUX ;
  216. ldisg = FAUX ;
  217. lmg = FAUX ;
  218. lmetdisc = faux ;
  219. mogeo = 'CHAI' 'GEOM' ;
  220. *
  221. idim = 'VALEUR' 'DIME' ;
  222. *
  223. 'REPETER' imcle2 ('DIME' lindic2) ;
  224. motcle2 = 'EXTR' lindic2 &imcle2 ;
  225. lmc = 'EXISTE' lmotcle2 motcle2 ;
  226. 'SI' ('NON' lmc) ;
  227. *1052 2
  228. *Mot-cle incorrect "%M1:4". Voici la liste des valeurs admises : %M5:40
  229. 'ERRE' 1052 'AVEC' motcle2 tmotcle2 ;
  230. 'FINSI' ;
  231. *
  232. 'SI' ('EGA' motcle2 'METR') ;
  233. 'ARGU' tai/'FLOTTANT' ;
  234. 'SI' ('EXIS' tai) ;
  235. itai2 = tai '**' -2 ;
  236. chpt = 'MANU' 'CHPO' 1 mail 'G' itai2 'NATURE' 'DIFFUS' ;
  237. chp = chpt ;
  238. lchp = vrai ; lchad = faux ;
  239. 'SINO' ;
  240. 'ARGUMENT' chad/'MCHAML' ;
  241. lchad = 'EXISTE' chad ;
  242. 'SI' ('NON' lchad) ;
  243. 'ARGUMENT' chp/'CHPOINT' ;
  244. lchp = 'EXISTE' chp ;
  245. 'SI' lchp ;
  246. 'ARGUMENT' metdisc/'MOT' ;
  247. 'FINS' ;
  248. lmetdisc = 'EXIS' metdisc ;
  249. 'SINON' ;
  250. argu kmodl1*'MMODEL' ;
  251. lchp = FAUX ;
  252. 'FINSI' ;
  253. 'FINS' ;
  254. 'FINS' ;
  255. * 'SI' ('EGA' motcle2 'DENS') ;
  256. * 'ARGUMENT' chp*'CHPOINT' ;
  257. * chp = 'REDU' chp mail ;
  258. * kmodl1 = 'MODE' mail 'THERMIQUE' ;
  259. * chad = 'CHAN' 'CHAM' kmodl1 chp ;
  260. * chad = (chad ** -2) 'NOMC' 'G' ;
  261. * lchad = VRAI ;
  262. * lchp = FAUX ;
  263. * 'FINSI' ;
  264. *
  265. 'SI' ('EGA' motcle2 'DISG') ;
  266. 'ARGUMENT' gdisc*'MOT' ;
  267. ldisg = VRAI ;
  268. 'FINSI' ;
  269. *
  270. 'SI' ('EGA' motcle2 'METG') ;
  271. 'ARGUMENT' methgau*'MOT' ;
  272. lmg = VRAI ;
  273. 'FINSI' ;
  274. *
  275. 'SI' ('EXIS' mogeos mocle2) ;
  276. mogeo = mocle2 ;
  277. 'FINSI' ;
  278. *
  279. 'FIN' imcle2 ;
  280. lmet = 'OU' lchad lchp ;
  281. 'SI' ('EXIS' lindic 'TOPO') ;
  282. 'ARGU' lrcrit/'LISTREEL' ;
  283. llrcrit = 'EXIS' lrcrit ;
  284. 'FINS' ;
  285. *
  286. * Initialisations
  287. *
  288. imod = 'VALEUR' 'MODE' ;
  289. vdim = DEADUTIL 'DIMM' mail ;
  290. vtyp = DEADUTIL 'TYPM' mail ;
  291. laxi = DEADUTIL 'AXI?' ;
  292. lsph = DEADUTIL 'SPH?' ;
  293. *
  294. 'SI' ('OU' ('<' idim 1) ('>' idim 3)) ;
  295. * 709 2 Fonction indisponible en dimension %i1.
  296. 'ERREUR' 709 'AVEC' idim ;
  297. 'FINSI' ;
  298. 'SI' (('EGA' imod 'AXIS') 'OU' ('EGA' imod 'UNIDAXIS') 'OU'
  299. ('EGA' imod 'FOUR') 'OU' ('EGA' imod 'SPHE')) ;
  300. *-105 0 Mode de calcul actuel %m1:32
  301. 'ERRE' -105 'AVEC' imod ;
  302. * 710 2 Fonction indisponible pour ce mode de calcul
  303. 'ERRE' 710 ;
  304. 'FINSI' ;
  305. *
  306. vquaf = ('EGA' vtyp 'QUAF') ;
  307. 'SI' ('ET' ldisg ('NON' vquaf)) ;
  308. 'MESS' 'DISG option :' ;
  309. * 66 2 L'objet %m1:8 doit etre de type %m9:16
  310. 'ERRE' 66 'AVEC' 'MAIL QUAF' ;
  311. 'FINSI' ;
  312. *
  313. * Maillage
  314. *
  315. *'SI' vquaf ;
  316. _mt = mail ;
  317. *'SINON' ;
  318. * _mt = 'CHANGER' mail 'QUAF' ;
  319. *'FINSI' ;
  320. *
  321. * Inconnus et discrétisation
  322. *
  323. 'SI' ('NON' lmg) ;
  324. 'SI' ('EGA' vtyp 'LINE') ;
  325. methgau = 'GAM1' ;
  326. 'SINON' ;
  327. methgau = 'GAM2' ;
  328. 'FINSI' ;
  329. 'FINSI' ;
  330. 'SI' ('NON' ldisg) ;
  331. gdisc = vtyp ;
  332. 'FINSI' ;
  333. *
  334. * Métrique
  335. *
  336. ncmet = '/' ('*' idim ('+' idim 1)) 2 ;
  337. lnmet = 'TABL' ;
  338. lnmet . 1 = 'MOTS' 'G11' ;
  339. lnmet . 2 = 'MOTS' 'G11' 'G22' 'G21' ;
  340. lnmet . 3 = 'MOTS' 'G11' 'G22' 'G21' 'G33' 'G31' 'G32' ;
  341. 'SI' lmet;
  342. 'SI' lchad ;
  343. chpmet = 'CHANGER' 'CHPO' kmodl1 chad ;
  344. metdisc = gdisc ;
  345. 'FINSI' ;
  346. 'SI' lchp ;
  347. chpmet = chp ;
  348. 'SI' ('NON' lmetdisc) ;
  349. metdisc = gdisc ;
  350. 'FINS' ;
  351. 'FINSI' ;
  352. lncom = 'EXTR' chpmet 'COMP' ;
  353. dncom = 'DIME' lncom ;
  354. 'SI' ('EGA' dncom 1) ;
  355. 'SI' ('EGA' ('TYPE' chpmet) 'CHPOINT') ;
  356. chpmet = 'NOMC' 'G11' chpmet 'NATURE' 'DIFFUS' ;
  357. 'SINO' ;
  358. chpmet = 'NOMC' 'G11' chpmet ;
  359. 'FINS' ;
  360. chpmett = chpmet ;
  361. 'SI' ('>' idim 1) ;
  362. chpmet0 = chpmet '*' 0. ;
  363. chpmet = chpmet 'ET' (chpmett 'NOMC' 'G22') 'ET' (chpmet0 'NOMC' 'G21') ;
  364. 'FINS' ;
  365. 'SI' ('>' idim 2) ;
  366. chpmet = chpmet 'ET' (chpmett 'NOMC' 'G33') 'ET' (chpmet0 'NOMC' 'G31') 'ET' (chpmet0 'NOMC' 'G32') ;
  367. 'FINS' ;
  368. lncom = 'EXTR' chpmet 'COMP' ;
  369. dncom = 'DIME' lncom ;
  370. 'FINS' ;
  371. 'SI' ('OU' ('NEG' dncom ncmet) ('NON' ('EXIS' (lnmet . idim) lncom 'ET' ))) ;
  372. 'MESS' 'Noms de composantes metrique pas OK :' ;
  373. 'LIST' lncom ;
  374. 'LIST' (lnmet . idim) ;
  375. 'ERRE' 1127 avec 'DEADUTIL' ;
  376. 'FINS' ;
  377. 'FINSI' ;
  378. *
  379. dlindic = 'DIME' lindic ;
  380. 'SI' ('NON' ldisg) ;
  381. cindict = 'VIDE' 'MCHAML' ;
  382. 'SINO' ;
  383. cindict = 'VIDE' 'CHPOINT'/'DIFFUS' ;
  384. 'FINS' ;
  385. lali = 'MOTS' 'QISO' 'QALI' 'COHE' 'EQLT' ;
  386. lequ = 'MOTS' 'QEQU' 'ISOD' 'DENS' ;
  387. 'REPE' ilindic dlindic ;
  388. nomindic = 'EXTR' lindic &ilindic ;
  389. 'SI' ('EGA' nomindic 'TOPO') ;
  390. 'SI' lmet ;
  391. 'SI' llrcrit ;
  392. vfonc = 'INDI' 'TOP2' mail lrcrit chpmet mogeo ;
  393. 'SINO' ;
  394. vfonc = 'INDI' 'TOP2' mail chpmet mogeo ;
  395. 'FINS' ;
  396. 'SINO' ;
  397. 'SI' llrcrit ;
  398. vfonc = 'INDI' 'TOP2' mail lrcrit ;
  399. 'SINO' ;
  400. vfonc = 'INDI' 'TOP2' mail ;
  401. 'FINS' ;
  402. 'FINS' ;
  403. * 'LIST' 'RESU' vfonc ;
  404. ncompo = 'EXTR' vfonc 'COMP' ;
  405. ncompn = 'MOTS' ;
  406. 'REPE' iicomp ('DIME' ncompo) ;
  407. icomp = &iicomp ;
  408. 'SI' ('EGA' icomp 1) ;
  409. ncompi = 'CHAI' 'TOPO' ;
  410. 'SINO' ;
  411. ncompi = 'CHAI' 'TOPO' icomp ;
  412. 'FINS' ;
  413. ncompn = ncompn 'ET' ncompi ;
  414. 'FIN' iicomp ;
  415. cindic = 'EXCO' ncompo vfonc ncompn ;
  416. * Homogene a une longueur
  417. * 'SI' ('>' vdim 2) ;
  418. * vfonc = '**' vfonc ('/' 1. ('-' vdim 1)) ;
  419. * 'FINS' ;
  420. 'SINO' ;
  421. 'SI' ('EXIS' lali nomindic) ;
  422. loi = 'CHAI' 'QALI' ;
  423. 'FINS' ;
  424. 'SI' ('EXIS' lequ nomindic) ;
  425. loi = 'CHAI' 'QEQU' ;
  426. 'FINS' ;
  427. 'SI' ('EGA' nomindic 'EQLT') ;
  428. lmet2 = FAUX ;
  429. 'SINO' ;
  430. lmet2 = lmet ;
  431. 'FINS' ;
  432. *
  433. * Calcul de la fonctionnelle
  434. *
  435. numop = 1 ;
  436. numvar = 1 ;
  437. numder = vdim ;
  438. numdat = 0 ;
  439. numcof = 0 ;
  440. *
  441. A = ININLIN numop numvar numdat numcof numder ;
  442. A . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  443. *
  444. numvar = 1 ;
  445. numdat = ncmet ;
  446. numcof = 1 ;
  447. B = ININLIN numop numvar numdat numcof numder ;
  448. B . 'VAR' . 1 . 'VALEUR' = 1.D0 ;
  449. *
  450. idat = 0 ;
  451. 'REPETER' idi idim ;
  452. nomdat = 'CHAINE' 'G' &idi &idi ;
  453. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  454. idat = '+' idat 1 ;
  455. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  456. 'SI' lmet2 ;
  457. B . 'DAT' . idat . 'DISC' = metdisc ;
  458. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat chpmet nomdat ;
  459. 'SINON' ;
  460. B . 'DAT' . idat . 'VALEUR' = 1.D0 ;
  461. 'FINSI' ;
  462. 'FIN' idi ;
  463. 'REPETER' idi idim ;
  464. nj = '-' idim &idi ;
  465. * 'MESSAGE' ('CHAINE' 'nj=' nj) ;
  466. 'SI' ('>EG' nj 1) ;
  467. 'REPETER' jdi nj ;
  468. * Mise en cohérence avec Castem
  469. * nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ;
  470. nomdat = 'CHAINE' 'G' ('+' &idi &jdi) &idi ;
  471. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  472. idat = '+' idat 1 ;
  473. B . 'DAT' . idat . 'NOMDDL' = 'MOTS' nomdat ;
  474. 'SI' lmet2 ;
  475. B . 'DAT' . idat . 'DISC' = metdisc ;
  476. B . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat chpmet nomdat ;
  477. 'SINON' ;
  478. B . 'DAT' . idat . 'VALEUR' = 0.D0 ;
  479. 'FINSI' ;
  480. 'FIN' jdi ;
  481. 'FINSI' ;
  482. 'FIN' idi ;
  483. lisdat = 'LECT' 1 'PAS' 1 'NPAS' ('-' numdat 1) ;
  484. *
  485. B . 'COF' . 1 . 'COMPOR' = loi ;
  486. B . 'COF' . 1 . 'LDAT' = lisdat ;
  487. *
  488. A . 1 . 1 . 0 = 0 ;
  489. B . 1 . 1 . 0 = 1 ;
  490. *
  491. 'SI' ('NON' ldisg) ;
  492. vfonc = NLINP gdisc _mt A B 'ERF1' 'CHAM' methgau ;
  493. vfonc = 'REDU' vfonc modm ;
  494. 'SINO' ;
  495. vfonc = NLINP gdisc _mt A B 'ERF1' methgau ;
  496. 'FINS' ;
  497. *
  498. * 'LIST' nomindic ;
  499. * 'LIST' lmet2 ;
  500. * 'LIST' vfonc ;
  501. *
  502. 'SI' ('EXIS' lequ nomindic) ;
  503. 'SI' ('EGA' nomindic 'DENS') ;
  504. * Homogene a une longueur
  505. 'SI' ('>' vdim 1) ;
  506. vfonc = '**' vfonc ('/' 1. vdim) ;
  507. 'FINS' ;
  508. * On remet les valeurs entre 0 et 1
  509. * mvfonc = 'MASQ' vfonc 'SUPERIEUR' 1. ;
  510. * pvfonc = 1. '-' mvfonc ;
  511. * ivfonc = '**' vfonc -1 ;
  512. * vfonc = '+' ('*' mvfonc ivfonc) ('*' pvfonc vfonc) ;
  513. 'SINO' ;
  514. tvfonc = 'TYPE' vfonc ;
  515. 'SI' ('EGA' tvfonc 'CHPOINT') ;
  516. rvfonc = 'MAXI' ('RESU' vfonc) ;
  517. 'SINO' ;
  518. * 'LIST' 'RESU' vfonc ;
  519. * 'LIST' 'RESU' ('EXTR' vfonc 'MAIL') ;
  520. * On utilise un modele MECANIQUE car le modele THERMIQUE ne supporte pas les QUAFs
  521. * vfonc2 = 'CHAN' vfonc ('MODE' ('EXTR' vfonc 'MAIL') 'MECANIQUE') 'GRAVITE' ;
  522. vfonc2 = 'CHAN' vfonc modm 'GRAVITE' ;
  523. rvfonc = 'SOMM' ('EXTR' vfonc2 'VALE' 'SCAL') ;
  524. 'FINS' ;
  525. * Facteur de ponderation dependant du type d'element car l'element
  526. * de reference est equilateral d'arete 1, mais pas de volume 1
  527. rvelemr = 'FLOTTANT' ('NBEL' _mt) ;
  528. fac = '/' rvelemr rvfonc ;
  529. * 'MESS' 'FACTEUR EQU=' fac ;
  530. vfonc = '*' vfonc fac ;
  531. 'FINS' ;
  532. 'FINS' ;
  533. * On remet les valeurs entre 1 et +inf
  534. * 'SI' ('EXIS' ('MOTS' 'COHE' 'EQLT') nomindic) ;
  535. 'SI' ('EXIS' ('MOTS' 'QISO' 'QALI') nomindic) ;
  536. vfonc = '**' vfonc -1 ;
  537. 'FINS' ;
  538. cindic = 'NOMC' vfonc nomindic ;
  539. 'FINS' ;
  540. cindict = cindict 'ET' cindic ;
  541. 'FIN' ilindic ;
  542. *
  543. 'RESPRO' cindict ;
  544. 'FINSI' ;
  545. *
  546. *
  547. * End of procedure file DEADUTIL
  548. *
  549. 'FINPROC' ;
  550.  
  551.  

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