Télécharger deadmetr.procedur

Retour à la liste

Numérotation des lignes :

  1. * DEADMETR PROCEDUR GOUNAND 26/06/09 21:15:03 12566
  2. ************************************************************************
  3. * NOM : DEADMETR
  4. * DESCRIPTION : Calcule la métrique des éléments géométriques (moyenne
  5. * intégrée par élément).
  6. * L'élément de référence servant à définir la métrique
  7. * identité est un élément régulier de côté 1.
  8. *
  9. * Comme dans DEDUADAP, le mode axisymétrique n'est pas
  10. * pris en compte.
  11. *
  12. *
  13. *
  14. * Entrées : _mt : Maillage de type QUAF
  15. * gdisc : Discrétisation géométrique
  16. * typiquement 'LINE' (linéaire)
  17. * ou 'QUAI' (quadratique mécanique)
  18. * ou 'QUAF' (quadratique fluide).
  19. * methgau : méthode d'intégration
  20. * typiquement 'GAU1' (intégration
  21. * réduite à 1 point de Gauss central)
  22. * ou 'GAR1' (éléments linéaires)
  23. * ou 'GAR2' (éléments quadratiques)
  24. * ou 'GAP7' (intégration précise à
  25. * l'ordre 7)
  26. * (cf. aussi notice NLIN)
  27. * Il n'est sans doute pas utile d'utiliser une
  28. * intégration précise car la notion d'intégrale
  29. * (ou de moyenne) d'un tenseur est sujette à
  30. * caution...
  31. *
  32. *
  33. * Sorties : un CHPOINT défini sur le noeud central de
  34. * chaque élément avec pour noms de composantes
  35. * Gij avec i=1...dime
  36. * j=1...dime j>i (tenseur symétrique)
  37. *
  38. * Ce CHPOINT peut être transmis directement
  39. * à l'opérateur 'DEDU' 'ADAP' pour conserver
  40. * au mieux une métrique.
  41. *
  42. * Si l'on prescrit des déplacements nuls à la
  43. * frontière et que l'on appelle 'DEDU' 'ADAP'
  44. * avec l'inverse de la métrique calculée par
  45. * DEADMETR, le déplacement des noeuds internes
  46. * sera donc également nul ! (cas-test à faire et
  47. * à évoluer...)
  48. *
  49. * Si l'on prescrit des déplacements non nuls à
  50. * la frontière, on essaiera de conserver
  51. * l'aspect des éléments de départ.
  52. *
  53. *
  54. * Exemple (ancienne syntaxe) : met = deadmetr _mt 'QUAF' 'GAU1' ;
  55. * imet = TENS INVE met ;
  56. * dxv = 'DEDU' 'ADAP' _mt 'METR' imet 'CSTE' ;
  57. *
  58. * Exemple : met = deadmetr mt ;
  59. * mod = MODE mt 'MECANIQUE' ;
  60. * imet = TENS INVE met ;
  61. * dxv = 'DEDU' 'ADAP' mt 'METR' imet mod ;
  62. *
  63. *
  64. *
  65. *
  66. * LANGAGE : GIBIANE-CAST3M
  67. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  68. * mél : gounand@semt2.smts.cea.fr
  69. **********************************************************************
  70. * VERSION : v1, 2026/01/01
  71. * HISTORIQUE : v1, 2026/01/01, creation, recopie de GINVMET mais
  72. * syntaxe plus simple comme (uniqt le maillage)
  73. * HISTORIQUE : v2, 2026/04/14, ajout metrique globale
  74. * HISTORIQUE :
  75. * HISTORIQUE :
  76. ************************************************************************
  77. *
  78. *
  79. 'DEBPROC' DEADMETR ;
  80. 'ARGUMENT' _mt*'MAILLAGE' ;
  81. 'ARGUMENT' gdisc/'MOT' ;
  82. lgdisc = 'EXIS' gdisc ;
  83. 'SI' lgdisc ;
  84. 'ARGUMENT' methgau*'MOT' ;
  85. 'SINO' ;
  86. gdisc = DEADUTIL 'TYPM' _mt ;
  87. methgau = 'GAU1' ;
  88. 'FINS' ;
  89. 'ARGUMENT' met/'CHPOINT' ;
  90. lmet = 'EXISTE' met ;
  91. *
  92. tmot = 'TABLE' ;
  93. tnom = 'TABLE' ;
  94. vdim = 'VALEUR' 'DIME' ;
  95. mdim = DEADUTIL 'DIMM' _mt ;
  96. idx = 0 ;
  97. 'SI' lmet ;
  98. cim = 'CHAINE' 'METL' ;
  99. 'SINO' ;
  100. cim = 'CHAINE' 'METR' ;
  101. 'FINS' ;
  102. cg = 'CHAINE' 'G' ;
  103. 'REPETER' bidim vdim ;
  104. 'REPETER' bjdim vdim ;
  105. 'SI' ('>EG' &bjdim &bidim) ;
  106. idx = '+' idx 1 ;
  107. tmot . idx = 'CHAINE' cim &bidim &bjdim ;
  108. * Convention Castem opposee à convention NLIN
  109. tnom . idx = 'CHAINE' cg &bjdim &bidim ;
  110. 'FINSI' ;
  111. 'FIN' bjdim ;
  112. 'FIN' bidim ;
  113. *
  114. dtm = 'DIME' tmot ;
  115. 'SI' ('NON' lmet) ;
  116. numop = dtm ;
  117. numder = mdim ;
  118. numvar = dtm ;
  119. numdat = 0 ;
  120. numcof = dtm ;
  121. A = ININLIN numop numvar numdat numcof numder ;
  122. 'REPE' itm dtm ;
  123. A . 'VAR' . &itm . 'NOMDDL' = tnom . &itm ;
  124. A . 'VAR' . &itm . 'DISC' = 'CSTE' ;
  125. A . 'COF' . &itm . 'COMPOR' = tmot . &itm ;
  126. A . &itm . &itm . 0 = &itm ;
  127. 'FIN' itm ;
  128. numvar = 1 ;
  129. numdat = 0 ;
  130. numcof = 0 ;
  131. B = ININLIN numop numvar numdat numcof numder ;
  132. B . 'VAR' . 1 . 'VALEUR' = 1. ;
  133. 'REPE' itm dtm ;
  134. B . &itm . 1 . 0 = 0 ;
  135. 'FIN' itm ;
  136. 'SI' lgdisc ;
  137. metr = NLIN gdisc _mt A B 'ERF1' methgau ;
  138. 'SINO' ;
  139. metr = NLIN gdisc _mt A B 'ERF1' 'CHAM' methgau ;
  140. 'FINS' ;
  141. 'SINO' ;
  142. ncmet = '/' ('*' vdim ('+' vdim 1)) 2 ;
  143. numop = dtm ;
  144. numder = mdim ;
  145. numvar = dtm ;
  146. numdat = ncmet ;
  147. numcof = dtm ;
  148. A = ININLIN numop numvar numdat numcof numder ;
  149. *
  150. idat = 0 ;
  151. 'REPETER' idi vdim ;
  152. nomdat = 'CHAINE' 'G' &idi &idi ;
  153. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  154. idat = '+' idat 1 ;
  155. A . 'DAT' . idat . 'NOMDDL' = nomdat ;
  156. A . 'DAT' . idat . 'DISC' = gdisc ;
  157. 'SI' lmet ;
  158. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  159. A . 'DAT' . idat . 'VALEUR' = met ;
  160. 'SINON' ;
  161. A . 'DAT' . idat . 'VALEUR' = 1.D0 ;
  162. 'FINSI' ;
  163. 'FIN' idi ;
  164. 'REPETER' idi vdim ;
  165. nj = '-' vdim &idi ;
  166. * 'MESSAGE' ('CHAINE' 'nj=' nj) ;
  167. 'SI' ('>EG' nj 1) ;
  168. 'REPETER' jdi nj ;
  169. * Mise en cohérence avec Castem
  170. * nomdat = 'CHAINE' 'G' &idi ('+' &idi &jdi) ;
  171. nomdat = 'CHAINE' 'G' ('+' &idi &jdi) &idi ;
  172. * 'MESSAGE' ('CHAINE' 'nomdat=' nomdat) ;
  173. idat = '+' idat 1 ;
  174. A . 'DAT' . idat . 'NOMDDL' = nomdat ;
  175. A . 'DAT' . idat . 'DISC' = gdisc ;
  176. 'SI' lmet ;
  177. * A . 'DAT' . idat . 'VALEUR' = 'EXCO' nomdat met nomdat ;
  178. A . 'DAT' . idat . 'VALEUR' = met ;
  179. 'SINON' ;
  180. A . 'DAT' . idat . 'VALEUR' = 0.D0 ;
  181. 'FINSI' ;
  182. 'FIN' jdi ;
  183. 'FINSI' ;
  184. 'FIN' idi ;
  185. lisdat = 'LECT' 1 'PAS' 1 'NPAS' ('-' numdat 1) ;
  186. *
  187. 'REPE' itm dtm ;
  188. A . 'VAR' . &itm . 'NOMDDL' = tnom . &itm ;
  189. A . 'VAR' . &itm . 'DISC' = 'CSTE' ;
  190. A . 'COF' . &itm . 'COMPOR' = tmot . &itm ;
  191. A . 'COF' . &itm . 'LDAT' = lisdat ;
  192. A . &itm . &itm . 0 = &itm ;
  193. 'FIN' itm ;
  194. *
  195. numvar = 1 ;
  196. numdat = 0 ;
  197. numcof = 0 ;
  198. B = ININLIN numop numvar numdat numcof numder ;
  199. B . 'VAR' . 1 . 'VALEUR' = 1. ;
  200. 'REPE' itm dtm ;
  201. B . &itm . 1 . 0 = 0 ;
  202. 'FIN' itm ;
  203. 'SI' lgdisc ;
  204. metr = NLIN gdisc _mt A B 'ERF1' methgau ;
  205. 'SINO' ;
  206. metr = NLIN gdisc _mt A B 'ERF1' 'CHAM' methgau ;
  207. 'FINS' ;
  208. 'FINS' ;
  209. 'RESPRO' metr ;
  210. *
  211. * End of procedure file DEADMETR
  212. *
  213. 'FINPROC' ;
  214.  
  215.  

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