Télécharger wkuma1.eso

Retour à la liste

Numérotation des lignes :

wkuma1
  1. C WKUMA1 SOURCE PV 17/12/08 21:18:10 9660
  2.  
  3. C-----------------------------------------------------------------------
  4. C
  5. C DESCRIPTION FONCTIONNELLE :
  6. C -------------------------
  7. C
  8. C Preparation des donnees de l'integrateur de la loi de comportement
  9. C externe UMAT.
  10. C
  11. C WKUMA1 prepare les donnees variables en chaque point d'integration
  12. C De ce fait, WKUMA1 est appelee par COML8 avant l'appel a UMAT.
  13. C
  14. C
  15. C INTERFACE :
  16. C ---------
  17. C
  18. C IN : wrk52 : pointeur actif sur le segment de travail WRK52
  19. C de l'objet DECHE
  20. C IN : wkumat : pointeur actif sur le segment de travail
  21. C WKUMAT contenant les donnees a preparer
  22. C
  23. C
  24. C Les operations effectuees par WKUMA1 consistent, d'une part, a
  25. C initialiser certains elements du segment de travail WKUMAT.
  26. C Sont concernees les donnees suivantes :
  27. C
  28. C Entrees/sorties de la routines UMAT :
  29. C -----------------------------------
  30. C
  31. C TIME : REAL*8(2), TIME(1) = 0
  32. C TIME(2) = t0
  33. C DTIME : REAL*8, DTIME = dt
  34. C Entrees de la routine UMAT
  35. C t0 : precedent instant d'equilibre atteint
  36. C dt : nouveau pas de temps propose par PASAPAS
  37. C pour atteindre l'equilibre avec l'increment de
  38. C deformation totale impose
  39. C Les donnees t0 et t1=t0+dt sont fournies sous
  40. C forme de MCHAML, d'ou actualisation a chaque
  41. C nouveau point d'integration
  42. C
  43. C TEMP : REAL*8, temperature a t0
  44. C DTEMP : REAL*8, increment de temperature a t0+dt
  45. C DPRED : REAL*8(*), increments des parametres externes
  46. C a t0+dt
  47. C Entrees de la routine UMAT
  48. C Ces entrees sont mises a jour par WKUMA1 dans le
  49. C cas ou elles sont actives, c'est-a-dire :
  50. C - quand LTEMP=.TRUE. : champs de temperature
  51. C fournis en entree de COMP,
  52. C - quand LPRED=.TRUE. : existence de parametres
  53. C externes du modele.
  54. C
  55. C PNEWDT : REAL*8, rapport entre le nouveau pas de temps
  56. C suggere et le pas de temps donne en entree
  57. C Sortie de la routine UMAT
  58. C Initialisation a 1.0D+6
  59. C
  60. C DFGRD0 : REAL*8(3,3), tenseur gradient de la
  61. C transformation a t0 ( F(t0) )
  62. C DFGRD1 : REAL*8(3,3), tenseur gradient de la
  63. C transformation a t0+dt ( F(t0+dt) )
  64. C Entrees de la routine UMAT
  65. C Ces entrees sont mises a jour par WKUMA1 dans le
  66. C cas ou elles sont actives, c'est-a-dire :
  67. C - quand LDFGRD=.TRUE. : gradients de
  68. C deplacement fournis en entree de COMP.
  69. C
  70. C
  71. C D'autre part, WKUMA1 prepare certains vecteurs du segment WRK52
  72. C de l'objet DECHE qui sont passes directement a UMAT.
  73. C Sont concernees les donnees suivantes :
  74. C
  75. C Entrees/sorties de la routines UMAT :
  76. C -----------------------------------
  77. C
  78. C SIGF : REAL*8(NTENS), tenseur des contraintes
  79. C <=> STRESS En entree : tenseur des contraintes a t0
  80. C En sortie : tenseur des contraintes a t0+dt
  81. C WKUMA1 recopie le contenu de SIG0 dans SIGF
  82. C avant l'appel a UMAT.
  83. C
  84. C VARF : REAL*8(*), variables internes
  85. C <=> STATEV En entree : variables internes a t0
  86. C En sortie : variables internes a t0+dt
  87. C WKUMA1 recopie le contenu de VAR0 dans VARF
  88. C avant l'appel a UMAT.
  89. C
  90. C-----------------------------------------------------------------------
  91. C
  92. C Arguments de l'interface WKUMA1 :
  93. C
  94. C Pointeurs wrk52, wkumat
  95. C
  96. C-----------------------------------------------------------------------
  97.  
  98. SUBROUTINE WKUMA1 ( wrk52, wkumat )
  99.  
  100. IMPLICIT INTEGER(I-N)
  101. IMPLICIT REAL*8 (A-H,O-Z)
  102.  
  103. PARAMETER (XZero=0.,XUn=1.)
  104.  
  105. -INC DECHE
  106.  
  107. SEGMENT WKUMAT
  108. C Entrees/sorties de la routine UMAT
  109. REAL*8 DDSDDE(NTENS,NTENS), SSE, SPD, SCD,
  110. & RPL, DDSDDT(NTENS), DRPLDE(NTENS), DRPLDT,
  111. & TIME(2), DTIME, TEMP, DTEMP, DPRED(NPRED),
  112. & DROT(3,3), PNEWDT, DFGRD0(3,3), DFGRD1(3,3)
  113. CHARACTER*16 CMNAME
  114. INTEGER NDI, NSHR, NSTATV, NPROPS,
  115. & LAYER, KSPT, KSTEP, KINC
  116. C Variables de travail
  117. LOGICAL LTEMP, LPRED, LVARI, LDFGRD
  118. INTEGER NSIG0, NPARE0, NGRAD0
  119. ENDSEGMENT
  120.  
  121. C
  122. C 1 - Instant d'equilibre precedent et pas de temps (iteration globale,
  123. C pilotage par PASAPAS)
  124. C
  125. TIME(1)=XZero
  126. TIME(2)=temp0
  127. DTIME=tempf-temp0
  128. C
  129. C 2 - Recopiage des contraintes a t0 dans le vecteur SIGF
  130. C En sortie de UMAT le contenu de ce vecteur sera ecrase par les
  131. C valeurs a t0+dt
  132. C
  133. DO 10 I=1,NSIG0
  134. SIGF(I)=SIG0(I)
  135. 10 CONTINUE
  136. C
  137. C 3 - Recopiage des variables internes a t0 dans le vecteur VARF
  138. C Operation conditionnee par le booleen LVARI car il peut
  139. C ne pas y avoir de variables internes
  140. C En sortie de UMAT le contenu de ce vecteur sera ecrase par les
  141. C valeurs a t0+dt
  142. C
  143. IF ( LVARI ) THEN
  144. DO 20 I=1,NSTATV
  145. VARF(I)=VAR0(I)
  146. 20 CONTINUE
  147. ENDIF
  148. C
  149. C 4 - Temperature a t0 et increment
  150. C Increments de parametres externes sur le pas de temps
  151. C
  152. IF ( LTEMP ) THEN
  153. TEMP=TURE0(1)
  154. DTEMP=TUREF(1)-TEMP
  155. ENDIF
  156. C
  157. IF ( LPRED ) THEN
  158. DO 30 I=1,NPARE0
  159. DPRED(I)=PAREXF(I)-PAREX0(I)
  160. 30 CONTINUE
  161. ENDIF
  162. C
  163. C 5 - Rapport entre le pas de temps suggere pour l'iteration suivante
  164. C et le pas de temps de l'iteration en cours
  165. C Initialisation avant calcul
  166. C
  167. PNEWDT=1.0D+6
  168. C
  169. C 6 - Gradients de la transformation a t0 et t0+dt
  170. C
  171. C En mecanique, les composantes du tenseur gradient de la tansforma-
  172. C tion sont toutes obligatoires, il y en a 4 ou 9 suivant la formu-
  173. C lation EF et la dimension du probleme. L'ordre des composantes
  174. C correspond a un parcours du tenseur ligne par ligne.
  175. C cf. IDGRAD.eso
  176. C En entree de COMP, les gradients de deplacements sont fournis.
  177. C Les gradients de transformation s'en deduisent en ajoutant le
  178. C tenseur identite (termes diagonaux).
  179. C
  180. IF ( LDFGRD ) THEN
  181. C
  182. IF (NGRAD0.EQ.4) THEN
  183. C
  184. DFGRD0(1,1)=grad0(1)+XUn
  185. DFGRD0(2,1)=grad0(3)
  186. DFGRD0(3,1)=XZero
  187. DFGRD0(1,2)=grad0(2)
  188. DFGRD0(2,2)=grad0(4)+XUn
  189. DFGRD0(3,2)=XZero
  190. DFGRD0(1,3)=XZero
  191. DFGRD0(2,3)=XZero
  192. DFGRD0(3,3)=XUn
  193. C
  194. DFGRD1(1,1)=gradf(1)+XUn
  195. DFGRD1(2,1)=gradf(3)
  196. DFGRD1(3,1)=XZero
  197. DFGRD1(1,2)=gradf(2)
  198. DFGRD1(2,2)=gradf(4)+XUn
  199. DFGRD1(3,2)=XZero
  200. DFGRD1(1,3)=XZero
  201. DFGRD1(2,3)=XZero
  202. DFGRD1(3,3)=XUn
  203. C
  204. ELSE
  205. C
  206. DFGRD0(1,1)=grad0(1)+XUn
  207. DFGRD0(2,1)=grad0(4)
  208. DFGRD0(3,1)=grad0(7)
  209. DFGRD0(1,2)=grad0(2)
  210. DFGRD0(2,2)=grad0(5)+XUn
  211. DFGRD0(3,2)=grad0(8)
  212. DFGRD0(1,3)=grad0(3)
  213. DFGRD0(2,3)=grad0(6)
  214. DFGRD0(3,3)=grad0(9)+XUn
  215. C
  216. DFGRD1(1,1)=gradf(1)+XUn
  217. DFGRD1(2,1)=gradf(4)
  218. DFGRD1(3,1)=gradf(7)
  219. DFGRD1(1,2)=gradf(2)
  220. DFGRD1(2,2)=gradf(5)+XUn
  221. DFGRD1(3,2)=gradf(8)
  222. DFGRD1(1,3)=gradf(3)
  223. DFGRD1(2,3)=gradf(6)
  224. DFGRD1(3,3)=gradf(9)+XUn
  225. C
  226. ENDIF
  227. C
  228. ENDIF
  229. C
  230. RETURN
  231. END
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  

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