Télécharger wkuma0.eso

Retour à la liste

Numérotation des lignes :

wkuma0
  1. C WKUMA0 SOURCE CB215821 24/04/12 21:17:29 11897
  2.  
  3. SUBROUTINE WKUMA0 ( iqmod, wrk52, wkumat, IFOURB )
  4.  
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8(A-H,O-Z)
  7.  
  8. C-----------------------------------------------------------------------
  9. C
  10. C DESCRIPTION FONCTIONNELLE :
  11. C -------------------------
  12. C
  13. C Preparation des donnees de l'integrateur de la loi de comportement
  14. C externe UMAT.
  15. C
  16. C WKUMA0 prepare les donnees independantes de l'element et du point
  17. C d'integration ; de ce fait, WKUMA0 est appelee par COML6 avant le
  18. C demarrage des boucles imbriquees sur les elements de la sous-zone
  19. C et sur les points de Gauss de l'element.
  20. C
  21. C La plupart des donnees concernees sont des entrees non actives ou
  22. C des sorties non exploitees dans le cas d'une adherence a CAST3M.
  23. C
  24. C
  25. C INTERFACE :
  26. C ---------
  27. C
  28. C IN : iqmod : pointeur actif sur le modele elementaire
  29. C IN : wrk52 : pointeur actif sur le segment de travail WRK52
  30. C de l'objet DECHE
  31. C IN : wkumat : pointeur actif sur le segment de travail
  32. C WKUMAT contenant les donnees a preparer
  33. C IN : IFOURB : type de calcul CAST3M
  34. C = 2 : tridimensionnel (3D)
  35. C = 0 : axisymetrie (2D)
  36. C = -1 : deformations planes (2D)
  37. C = -2 : contraintes planes (2D)
  38. C = -3 : deformations planes generalisees (2D)
  39. C = 3 a 11 : unidimensionnel plan (massif 1D)
  40. C = 12 a 14 : unidimensionnel axisymetrique (massif 1D)
  41. C
  42. C
  43. C Les operations effectuees par WKUMA0 consistent a initialiser
  44. C certains elements du segment de travail WKUMAT.
  45. C Sont concernees les donnees suivantes :
  46. C
  47. C Entrees/sorties de la routines UMAT :
  48. C -----------------------------------
  49. C
  50. C SSE : REAL*8, energie de deformation elastique
  51. C SPD : REAL*8, dissipation plastique
  52. C SCD : REAL*8, dissipation visqueuse
  53. C Entrees/sorties facultatives de la routine UMAT,
  54. C non exploitees par CAST3M pour l'instant
  55. C Initialisation arbitraire
  56. C
  57. C
  58. C RPL : REAL*8, puissance calorifique volumique degagee
  59. C par le travail mecanique, a t0+dt
  60. C DRPLDT : REAL*8, derivee de RPL par rapport a la
  61. C temperature, a t0+dt
  62. C Sorties facultatives de la routine UMAT, non
  63. C exploitees par CAST3M pour l'instant
  64. C Initialisation arbitraire
  65. C
  66. C
  67. C TEMP : REAL*8, temperature a t0
  68. C DTEMP : REAL*8, increment de temperature a t0+dt
  69. C DPRED : REAL*8(*), increments des parametres externes
  70. C a t0+dt
  71. C Entrees de la routine UMAT
  72. C Ces entrees ne sont initialisees par WKUMA0 que
  73. C dans le cas ou elles ne sont pas actives, i.e.
  74. C quand aucun champ de temperature ni aucun champ
  75. C de parametre externe n'est fourni en entree a
  76. C l'operateur COMP (cas d'un modele independant
  77. C de la temperature et de tout autre parametre).
  78. C
  79. C
  80. C CMNAME : CHARACTER*16, identifiant de la loi de
  81. C comportement
  82. C Entree de la routine UMAT
  83. C
  84. C
  85. C NDI : INTEGER prenant la valeur de IFOURB
  86. C Entree de la routine UMAT
  87. C
  88. C
  89. C NSHR : INTEGER, nombre de composantes extradiagonales
  90. C du tenseur des contraintes
  91. C Entree de la routine UMAT, non active dans le
  92. C cas d'une adherence a CAST3M
  93. C Initialisation arbitraire
  94. C
  95. C
  96. C NSTATV : INTEGER, nombre de variables internes
  97. C NPROPS : INTEGER, nombre de constantes de materiau
  98. C Entrees de la routine UMAT
  99. C
  100. C
  101. C DROT : REAL*8(3,3), matrice de passage du repere local
  102. C de l'element fini massif au repere general
  103. C du maillage
  104. C Cette matrice etant dependante de l'element fini
  105. C son initialisation dans ce sous-programme est
  106. C arbitraire (matrice identite)
  107. C Entree de la routine UMAT, non active pour les
  108. C elements finis non massifs
  109. C
  110. C
  111. C DFGRD0 : REAL*8(3,3), tenseur gradient de deplacement
  112. C a t0
  113. C DFGRD1 : REAL*8(3,3), tenseur gradient de deplacement
  114. C a t0+dt
  115. C Entrees de la routine UMAT
  116. C Ces entrees ne sont initialisees par WKUMA0 que
  117. C dans le cas ou elles ne sont pas actives, i.e.
  118. C quand aucun champ de gradient de deplacement
  119. C n'est fourni en entree a l'operateur COMP.
  120. C
  121. C
  122. C LAYER : INTEGER, numero de couche pour des coques
  123. C composites ou des solides multi-couches
  124. C KSPT : INTEGER, numero de section dans la couche
  125. C courante
  126. C Entrees de la routine UMAT, non actives dans le
  127. C cas d'une adherence a CAST3M
  128. C Initialisation arbitraire
  129. C
  130. C
  131. C KSTEP : INTEGER
  132. C KINC : INTEGER
  133. C Entrees de la routine UMAT n'ayant pas
  134. C de sens dans le cas d'une adherence a CAST3M
  135. C Initialisation arbitraire
  136. C
  137. C
  138. C Variables de travail :
  139. C --------------------
  140. C
  141. C LTEMP : LOGICAL, indicateur de fourniture de
  142. C la temperature
  143. C LTEMP=.TRUE. : TEMP et DTEMP mis a jour par
  144. C WKUMA1, a chaque nouveau point d'integration.
  145. C LTEMP=.FALSE. : TEMP et DTEMP mis a zero une
  146. C fois pour toutes par WKUMA0.
  147. C
  148. C LPRED : LOGICAL, indicateur d'existence de parametres
  149. C externes du modele
  150. C LPRED=.TRUE. : mise a jour de PAREX0(*) par
  151. C COMVAL et de DPRED(*) par WKUMA1, a chaque
  152. C nouveau point d'integration.
  153. C LPRED=.FALSE. : PAREX0(1) mis a zero par COMVAL
  154. C a chaque nouveau point d'integration et DPRED(1)
  155. C mis a zero une fois pour toutes par WKUMA0.
  156. C
  157. C LVARI : LOGICAL, indicateur d'existence de variables
  158. C internes de la loi de comportement
  159. C LVARI=.TRUE. : initialisation de VARF(*) par
  160. C WKUMA1 a chaque nouveau point d'integration,
  161. C par recopiage du contenu de VAR0(*).
  162. C LVARI=.FALSE. : VAR0(1) et VARF(1) mis a zero
  163. C par COMVAL a chaque nouveau point d'integration,
  164. C pas de recopiage dans WKUMA1.
  165. C
  166. C LDFGRD : LOGICAL, indicateur de fourniture de
  167. C gradients de deplacement
  168. C LDFGRD=.TRUE. : DFGRD0 et DFGRD1 mis a jour par
  169. C WKUMA1, a chaque nouveau point d'integration.
  170. C LDFGRD=.FALSE. : DFGRD0 et DFGRD1 mis a zero une
  171. C fois pour toutes par WKUMA0.
  172. C
  173. C NSIG0 : INTEGER, nombre de composantes du tenseur des
  174. C contraintes
  175. C Stockage dans une variable de travail afin de ne
  176. C pas "mesurer" un vecteur a chaque nouvel appel a
  177. C WKUMA1
  178. C
  179. C NPARE0 : INTEGER, nombre de parametres externes de la loi
  180. C de comportement
  181. C Stockage dans une variable de travail afin de ne
  182. C pas "mesurer" un vecteur a chaque nouvel appel a
  183. C WKUMA1
  184. C N'est utile que dans le cas ou le modele depend
  185. C effectivement de parametres externes
  186. C
  187. C NGRAD0 : INTEGER, nombre de composantes des tenseurs
  188. C gradients de deplacement
  189. C Stockage dans une variable de travail afin de ne
  190. C pas "mesurer" un vecteur a chaque nouvel appel a
  191. C WKUMA1
  192. C
  193. C-----------------------------------------------------------------------
  194. -INC PPARAM
  195. -INC SMMODEL
  196. -INC DECHE
  197. C
  198. SEGMENT WKUMAT
  199. C Entrees/sorties de la routine UMAT
  200. REAL*8 DDSDDE(NTENS,NTENS), SSE, SPD, SCD,
  201. & RPL, DDSDDT(NTENS), DRPLDE(NTENS), DRPLDT,
  202. & TIME(2), DTIME, TEMP, DTEMP, DPRED(NPRED),
  203. & DROT(3,3), PNEWDT, DFGRD0(3,3), DFGRD1(3,3)
  204. CHARACTER*16 CMNAME
  205. INTEGER NDI, NSHR, NSTATV, NPROPS,
  206. & LAYER, KSPT, KSTEP, KINC
  207. C Variables de travail
  208. LOGICAL LTEMP, LPRED, LVARI, LDFGRD
  209. INTEGER NSIG0, NPARE0, NGRAD0
  210. ENDSEGMENT
  211. C
  212. C Arguments de l'interface
  213. C
  214. C Pointeurs iqmod, wrk52, wkumat
  215. C-----------------------------------------------------------------------
  216. C
  217. IMODEL=iqmod
  218. C
  219. C 1 - Initialisations arbitraires d'entrees/sorties non actives ou
  220. C non exploitees
  221. C
  222. SSE=0.0D0
  223. SPD=0.0D0
  224. SCD=0.0D0
  225. C
  226. RPL=0.0D0
  227. DRPLDT=0.0D0
  228. C
  229. C 2 - Temperature a t0 et increment
  230. C Parametres externes a t0 et increments
  231. C
  232. NTURE0=TURE0(/1)
  233. IF (NTURE0.GT.0) THEN
  234. LTEMP=.TRUE.
  235. ELSE
  236. LTEMP=.FALSE.
  237. TEMP=0.0D0
  238. DTEMP=0.0D0
  239. ENDIF
  240. C
  241. NPARE0=PAREX0(/1)
  242. nomid=LNOMID(14)
  243. IF (nomid.NE.0) THEN
  244. SEGACT,nomid
  245. nparmo = lesobl(/2)
  246. IF (nparmo.EQ.1) THEN
  247. IF (lesobl(1).EQ.'T ') THEN
  248. nparmo = 0
  249. ENDIF
  250. ENDIF
  251. ELSE
  252. nparmo = 0
  253. ENDIF
  254. IF (nparmo.EQ.0) THEN
  255. LPRED = .FALSE.
  256. DPRED(1) = 0.0D0
  257. ELSE
  258. LPRED = .TRUE.
  259. ENDIF
  260. C
  261. C 3 - Numero de loi externe encode dans une chaine de 16 caracteres
  262. C
  263. NMAMOD=MATMOD(/2)
  264. CMNAME=MATMOD(NMAMOD)
  265. C
  266. C 4 - Type de calcul
  267. C Nombre de composantes du tenseur des contraintes
  268. C Nombre de variables internes
  269. C Nombre de constantes de materiau
  270. C
  271. C Type de calcul
  272. NDI=IFOURB
  273. C
  274. C Initialisation arbitraire du nombre de composantes
  275. C extradiagonales du tenseur des contraintes
  276. NSHR=0
  277. C
  278. NSIG0=SIG0(/1)
  279. C
  280. NSTATV=VAR0(/1)
  281. nomid=lnomid(10)
  282. IF (nomid.EQ.0) THEN
  283. LVARI=.FALSE.
  284. ELSE
  285. SEGACT,NOMID
  286. NOBL=LESOBL(/2)
  287. NFAC=LESFAC(/2)
  288. LVARI=(NOBL.NE.0 .OR. NFAC.NE.0)
  289. ENDIF
  290. C
  291. NPROPS=xmatf(/1)
  292. C
  293. C 5 - Matrice d'increments de rotation
  294. C Initialisation a la matrice identite
  295. C
  296. DROT(1,1)=1.0D0
  297. DROT(2,1)=0.0D0
  298. DROT(3,1)=0.0D0
  299. DROT(1,2)=0.0D0
  300. DROT(2,2)=1.0D0
  301. DROT(3,2)=0.0D0
  302. DROT(1,3)=0.0D0
  303. DROT(2,3)=0.0D0
  304. DROT(3,3)=1.0D0
  305. C
  306. C 6 - Gradients de deplacement a t0 et t0+dt
  307. C
  308. NGRAD0=grad0(/1)
  309. IF (NGRAD0.NE.0) THEN
  310. LDFGRD=.TRUE.
  311. ELSE
  312. LDFGRD=.FALSE.
  313. DO 20 J=1,3
  314. DO 21 I=1,3
  315. DFGRD0(I,J)=0.0D0
  316. DFGRD1(I,J)=0.0D0
  317. 21 CONTINUE
  318. 20 CONTINUE
  319. ENDIF
  320. C
  321. C 7 - Initialisations arbitraires d'entrees/sorties non actives ou
  322. C non exploitees
  323. C
  324. LAYER=0
  325. KSPT=0
  326. C
  327. KSTEP=1
  328. KINC=1
  329. C
  330. END
  331.  
  332.  
  333.  
  334.  

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