Télécharger damatc.eso

Retour à la liste

Numérotation des lignes :

  1. C DAMATC SOURCE AM 19/07/24 21:15:06 10269
  2. SUBROUTINE DAMATC(IFOUR,XMAT,DDHOOK,LHOOK,SIG0,VAR0,
  3. > DEPST,DSIGT,EPST0,EPIN0, SIGF,VARF,DEFP,
  4. > XMAT0,DDAUX)
  5. *--------------------------------------------------------------------*
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8(A-H,O-Z)
  8. INTEGER IFOUR, LHOOK, NCRIT
  9. REAL*8 AVALC, AVALT, BVALC, BVALT, BPCOM, DVOLU,
  10. . FTULT, FC01D, FCU1D, GVALT, HLENG,
  11. . POISS, RHO, REDUC, RAT45, STRAU, STRAP, STREP, STRA1,
  12. . STRE1, STRA2, STRE2, STRU0, STRIN, SIG0(LHOOK),
  13. . TANGB, THR0T, YOUNG, VAR0(*), XMAT(*), XMAT0(*),
  14. . DDAUX(LHOOK,LHOOK)
  15. C
  16. INTEGER IDIM, ISTEG, ITERA, IRTD, KCAS, NDIME, NDIM1, NTEMP
  17. REAL*8 ATINV, CONS0, CONS1, CONS2, CONS3, CLENG,
  18. . DAMAT, DAMAC, DEFP(LHOOK), DEPST(LHOOK), DSIGT(LHOOK),
  19. . DYOUN, DDHOOK(LHOOK,LHOOK), EPST0(LHOOK), EPIN0(LHOOK),
  20. . EQUIC, EXTCT, EXTTS, EQUIT, EBOU1, GTESP, HBOUN,
  21. . PROVI, ROOT2, ROO13, ROO23, SIGF(LHOOK),
  22. . THR0C, THRUC, THRET, THREC, VARF(*), ZEROM,
  23. . DAMAT0, DAMAC0
  24. C
  25. CHARACTER*8 STYPE
  26. C
  27. PARAMETER (ROOT2 = 1.414213562373090 D0,
  28. & ROO13 = 0.577350269189626 D0,
  29. & ROO23 = 0.816496580927726 D0,
  30. & ZEROM = 1.0 D-10)
  31. C
  32. *--------------------------------------------------------------------*
  33. * INPUT: XMAT=material parameter
  34. * XMAT( 1)='YOUN' ! Young Modulus
  35. * XMAT( 2)='NU ' ! Poisson coefficient
  36. * XMAT( 3)='RHO ' ! Density
  37. * XMAT( 4)='ALPH' ! Thermal coefficient
  38. * XMAT( 5)='HLEN' ! Effective length
  39. * XMAT( 6)='GVAL' ! Fracture energy
  40. * XMAT( 7)='FTUL' ! Tensile stress
  41. * XMAT( 8)='REDC' ! Drop Factor for Peak Tensile Stress
  42. * XMAT( 9)='FC01' ! Elastic Limit Compressive Stress
  43. * XMAT(10)='RT45' ! Equi-biaxial Compressive Ratio
  44. * XMAT(11)='FCU1' ! Compressive Peak Stress
  45. * XMAT(12)='STRU' ! Ultimate Limit Strain
  46. * XMAT(13)='EXTP' ! Reference Strain for Plastic Parameter
  47. * XMAT(14)='STRP' ! Reference Stress for Plastic Parameter
  48. * XMAT(15)='EXT1' ! Fitting Point 1 (Strain)
  49. * XMAT(16)='STR1' ! Fitting Point 1 (Stress)
  50. * XMAT(17)='EXT2' ! Fitting Point 2 (Strain)
  51. * XMAT(18)='STR2' ! Fitting Point 2 (Stress)
  52. * XMAT(19)='NCRI' ! Tensile Softening Criteria (1=Expon./2=Lin.)
  53. *
  54. * XMAT(20)='TANB' ! Drucker-Prager Tangent
  55. * XMAT(21)='BPLC' ! Plastic Compressive Parameter
  56. * XMAT(22)='TR0T' ! Initial Tension Damage Threshold
  57. * XMAT(23)='TR0C' ! Initial Compression Damage Threshold
  58. * XMAT(24)='TRUC' ! Ultimate Compression Damage Threshold
  59. * XMAT(25)='AVAT' ! "A" Parameter for Tension
  60. * XMAT(26)='BVAT' ! "B" Parameter for Tension
  61. * XMAT(27)='AVAC' ! "A" Parameter for Compression
  62. * XMAT(28)='BVAC' ! "B" Parameter for Compression
  63. * XMAT(29)='DVOL' ! Volume of a finite element
  64. *
  65. * DDHOOK=Hooke matrix
  66. *
  67. * VAR0: internal variable
  68. * VAR0(1)='THRT' ! Tension theshold
  69. * VAR0(2)='EQUT' ! Tension equivalent strain
  70. * VAR0(3)='DAMT' ! Tension damage
  71. * VAR0(4)='THRC' ! Compre. theshold
  72. * VAR0(5)='EQUC' ! Compre. equivalent strain
  73. * VAR0(6)='DAMC' ! Compre. damage
  74. *--------------------------------------------------------------------*
  75. C
  76. IDIM=2
  77. IF(IFOUR.EQ.2)IDIM=3
  78. NDIME = IDIM
  79. NDIM1 = NDIME + 1
  80. C
  81. C COMPULSORY CARACTERISTICS
  82. C
  83. YOUNG = XMAT(1)
  84. POISS = XMAT(2)
  85. RHO = XMAT(3)
  86. C ALPHA = XMAT(4)
  87. C
  88. HLENG = XMAT(5)
  89. GVALT = XMAT(6)
  90. FTULT = XMAT(7)
  91. REDUC = XMAT(8)
  92. FC01D = XMAT(9)
  93. RAT45 = XMAT(10)
  94. FCU1D = XMAT(11)
  95. STRAU = XMAT(12)
  96. STRAP = XMAT(13)
  97. STREP = XMAT(14)
  98. STRA1 = XMAT(15)
  99. STRE1 = XMAT(16)
  100. STRA2 = XMAT(17)
  101. STRE2 = XMAT(18)
  102. NCRIT = nint(XMAT(19))
  103. C
  104. DVOLU = XMAT(29)
  105. C
  106. C FACULTATIVE CARACTERISTICS
  107. C
  108. DYOUN = SQRT (YOUNG)
  109. THR0T = ABS(FTULT/DYOUN)
  110. C
  111. C=====----------------------------------------------------------------
  112. C EVALUATING PRELIMINAR QUANTITIES FOR PLASTIC-VISCOUS-DAMAGE MODEL |
  113. C (INITIAL AND FINAL NONLINEAR THRESHOLDS AND PLASTIC PARAMETER) |
  114. C=====----------------------------------------------------------------
  115. C
  116. CONS0 = FC01D / YOUNG
  117. C
  118. r_z = 1.D0 / (1.0 D0 - 2.0 D0 * RAT45)
  119. TANGB = ROOT2 * (1.0D0 - RAT45) * r_z
  120. PROVI = ROO23 * RAT45 * r_z
  121.  
  122. IF(PROVI*FC01D.LT.0.D0) THEN
  123. write (*,'(/,''*** PROVI*FC01D is negative ***'')')
  124. CALL ERREUR(5)
  125. RETURN
  126. ENDIF
  127.  
  128. THR0C = SQRT (PROVI*FC01D)
  129. C
  130. BPCOM = YOUNG * FCU1D * (STRAP - STREP / YOUNG) /
  131. . ((STRAP - CONS0) * (STREP + FCU1D))
  132. C
  133. CONS1 = YOUNG - BPCOM
  134. CONS2 = BPCOM * CONS0
  135. CONS3 = ROO13 * TANGB - ROO23
  136. C
  137. r_z = CONS1 * STRAU + CONS2
  138. THRUC = SQRT (ABS (PROVI*r_z))
  139. C
  140. C=====----------------------------------------------------------------
  141. C EVALUATION OF PARAMETERS AVALC & BVALC & ... |
  142. C=====----------------------------------------------------------------
  143. C
  144. CALL DAM_AB (AVALC, BVALC, CONS1, CONS2, CONS3, EBOU1,
  145. . HBOUN, STRA1, STRA2, STRE1, STRE2, THR0C)
  146. C
  147. EBOU1 = 1.0 D+33
  148. C
  149. C=====================================================================
  150. C DEFINITION OF L* AND TENSION SOFTENING PARAMETERS. =
  151. C=====================================================================
  152. C
  153. C=====----------------------------------------------------------------
  154. C CHARACTERISTIC LENGTH, IF NOT PREVIOUSLY SPECIFIED OR EVALUATED |
  155. C=====----------------------------------------------------------------
  156. C
  157. IF (HLENG .EQ. 0.0 D0) THEN
  158. IF (DVOLU .EQ. 0.0 D0) THEN
  159. write (*,'(/,''*** DVOLU or HLENG is unidentified ***'')')
  160. CALL ERREUR(5)
  161. RETURN
  162. ENDIF
  163. CLENG = DVOLU**(1.0D0/FLOAT(NDIME))
  164. ELSE
  165. CLENG = HLENG
  166. ENDIF
  167. C
  168. GTESP = GVALT / CLENG
  169. C
  170. IF (NCRIT .EQ. 1 ) THEN
  171. C
  172. ATINV = GTESP / (THR0T **2) - 0.5 D0
  173. IF (ATINV .LE. 0.0 D0) ATINV = ZEROM
  174. AVALT = 1.0 D0 / ATINV
  175. ELSE IF (NCRIT .EQ. 2) THEN
  176. C
  177. EXTCT = FTULT / YOUNG
  178. EXTTS = 1.0 D0 / REDUC * (2.0 D0 * GTESP / FTULT -
  179. . (1.0 D0 - REDUC) * EXTCT )
  180. IF (EXTTS .LE. EXTCT) EXTTS = EXTCT + ZEROM
  181. BVALT = REDUC * EXTCT / (EXTTS - EXTCT)
  182. AVALT = BVALT * EXTTS * DYOUN
  183. ELSE
  184. write(*,'(/,''*** NCRIT : valeur incorrecte ***'')')
  185. CALL ERREUR(5)
  186. RETURN
  187. C
  188. END IF
  189. C
  190. C calcul de la matrice elastique
  191. STYPE = 'ISOTROPE'
  192. KCAS=1
  193. IRTD=1
  194. CALL DOHMAS (XMAT,STYPE,IFOUR,LHOOK,KCAS,DDHOOK,IRTD)
  195. IF (IRTD.EQ.0) THEN
  196. CALL ERREUR(5)
  197. RETURN
  198. ENDIF
  199. C
  200. C calcul de la matrice elastique debut de pas
  201. IRTD=1
  202. CALL DOHMAS (XMAT0,STYPE,IFOUR,LHOOK,KCAS,DDAUX,IRTD)
  203. IF (IRTD.EQ.0) THEN
  204. CALL ERREUR(5)
  205. RETURN
  206. ENDIF
  207. C
  208. IF (IFOUR.EQ.-2) THEN
  209. STYPE = 'PSTRES'
  210. ELSEIF ((IFOUR.EQ.-1).OR.(IFOUR.EQ.-3)) THEN
  211. STYPE = 'PSTRAI'
  212. ELSEIF (IFOUR.EQ. 0) THEN
  213. STYPE = 'AXISYM'
  214. ENDIF
  215. C
  216. C ENFORCE NO INITIAL STRESSES DUE TO TEMPERATURE.....
  217. NTEMP = 0
  218. ISTEG = 0
  219. ITERA = 0
  220. STRIN = 0.D0
  221. C
  222. THRET = VAR0(1)
  223. EQUIT = VAR0(2)
  224. DAMAT = VAR0(3)
  225. THREC = VAR0(4)
  226. EQUIC = VAR0(5)
  227. DAMAC = VAR0(6)
  228.  
  229. DAMAT0 = DAMAT
  230. DAMAC0 = DAMAC
  231. C
  232. IF (THRET.EQ.0.) THRET = THR0T
  233. IF (THREC.EQ.0.) THREC = THR0C
  234.  
  235. * AM 16/7/19
  236.  
  237. IF (THRET.LT.THROT) THRET = THR0T
  238. IF (THREC.LT.THR0C) THREC = THR0C
  239.  
  240.  
  241. C
  242. do IE1=1,LHOOK
  243. EPST0(IE1)=EPST0(IE1)-EPIN0(IE1)
  244. enddo
  245.  
  246.  
  247.  
  248. *AM* CALL MATVE1 (DDHOOK,EPST0,LHOOK,LHOOK,SIG0,1)
  249. CALL MATVE1 (DDAUX,EPST0,LHOOK,LHOOK,SIG0,1)
  250.  
  251. C
  252. CALL DAMSTC (ISTEG, ITERA,
  253. . NCRIT, NDIME, NDIM1, LHOOK, LHOOK, NTEMP,
  254. . AVALC, AVALT, BPCOM, BVALC, BVALT,
  255. . DAMAC, DAMAT, DDHOOK, DEPST, DSIGT, EBOU1,
  256. . EQUIC, EQUIT,
  257. . POISS, SIG0 , SIGF , STRIN, TANGB,
  258. . THREC, THRET, THRUC, THR0C, THR0T, YOUNG,
  259. . STYPE, DAMAT0, DAMAC0)
  260. C
  261. VARF(1) = THRET
  262. VARF(2) = EQUIT
  263. VARF(3) = DAMAT
  264. VARF(4) = THREC
  265. VARF(5) = EQUIC
  266. VARF(6) = DAMAC
  267. C
  268. IF (IFOUR.EQ.-2)THEN
  269. CALL INVALM(DDHOOK,LHOOK,2,IRTD,1.d-8)
  270. DDHOOK(4,4)=1.D0/DDHOOK(4,4)
  271. ELSE
  272. CALL INVALM(DDHOOK,LHOOK,LHOOK,IRTD,1.d-8)
  273. ENDIF
  274. c
  275. CALL MATVE1(DDHOOK,SIG0,LHOOK,LHOOK,DEFP,1)
  276. c
  277. do IE1=1,LHOOK
  278. DEFP(IE1)=EPST0(IE1)+DEPST(IE1)-DEFP(IE1)
  279. enddo
  280. c
  281. RETURN
  282. END
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  

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