39
40
41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "units_c.inc"
49#include "comlock.inc"
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT
78 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
80 my_real ,
DIMENSION(NEL) ,
INTENT(IN) ::
area,thk,epsp,off,
81 . signxx,signyy,signxy,signyz,signzx,depsxx,depsyy,depsxy,
82 . depsyz,depszx
83 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
84
85
86
87 INTEGER ,INTENT(OUT) ::DMG_FLAG
88 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
89 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: dfmax
90 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel,dmg_scale
91 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
92
93
94
95 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
97 EXTERNAL finter
98
99
100
101
102
103
104
105
106
107
108 INTEGER :: I,J,NINDX
109 INTEGER ,DIMENSION(NEL) :: INDX
110 my_real rfac,r1,r2,ie_sp,dydx,rief1,rief2,xfac
112
113 rief1 = uparam(1)
114 rief2 = uparam(2)
115 xfac = uparam(4)
116 dmg_flag = int(uparam(5))
117 nindx = 0
118
119 DO i = 1,nel
120 IF (off(i) == one .and. foff(i) == 1) THEN
121 IF (ifunc(1) /= 0) THEN
122 rfac = finter(ifunc(1),epsp(i)*xfac,npf,tf,dydx)
123 rfac =
max(rfac,em20)
124 ELSE
125 rfac = one
126 ENDIF
127 r1 = rief1*rfac
128 r2 = rief2*rfac
129
130 uvar(i,1) = uvar(i,1) + signxx(i)*depsxx(i) +
131 . signyy(i)*depsyy(i) +
132 . signxy(i)*depsxy(i) +
133 . signyz(i)*depsyz(i) +
134 . signzx(i)*depszx(i)
135 ie_sp = uvar(i,1)
136 IF (ie_sp > r1) THEN
137 damage(i) = (ie_sp-r1)/(r2-r1)
138 damage(i) =
min(one,damage(i))
139 dfmax(i) =
max(dfmax(i) ,damage(i))
140 ENDIF
141 IF (ie_sp > r2) THEN
142 nindx = nindx + 1
143 indx(nindx) = i
144 foff(i) = 0
145 tdel(i) = time
146 ENDIF
147 ENDIF
148 ENDDO
149
150 IF (dmg_flag == 1) THEN
151 DO i = 1,nel
152 dmg_scale(i) = one - dfmax(i)
153 ENDDO
154 ENDIF
155
156 IF (nindx > 0) THEN
157 DO j=1,nindx
158 i = indx(j)
159#include "lockon.inc"
160 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
161 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
162#include "lockoff.inc"
163 END DO
164 END IF
165
166 2000 FORMAT(1x,'FAILURE (ENERGY) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
167 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3)
168 2100 FORMAT(1x,'FAILURE (ENERGY) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
169 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3,1x,'AT TIME :',1pe12.4)
170
171 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)