35
36
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "units_c.inc"
45#include "comlock.inc"
46
47
48
49
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 INTEGER ,INTENT(IN) :: NEL,NUPARAM,NUVAR,IPG,ILAY,IPT,LF_DAMMX
76 INTEGER ,DIMENSION(NEL) ,INTENT(IN) :: NGL
78 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: off,timestep,
79 . signxx,signyy,signxy,signyz,signzx
80 my_real,
DIMENSION(NUPARAM) ,
INTENT(IN) :: uparam
81
82
83
84 INTEGER ,INTENT(OUT) ::DMG_FLAG
85 INTEGER ,DIMENSION(NEL) ,INTENT(INOUT) :: FOFF
86 my_real ,
DIMENSION(NEL,LF_DAMMX),
INTENT(INOUT) :: dfmax
87 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: tdel,dmg_scale
88 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
89
90
91
92 INTEGER :: I,J,NINDX,IFAIL_SH,IDEL_FM,IDEL_F
93 INTEGER ,DIMENSION(NEL) :: INDX
94 my_real :: sigt1,sigt2,sigt12,sigc1,sigc2,beta,tmax
95 . damft,damfc,dammt,dammc,dammx
96
97 sigt1 = uparam(1)
98 sigt2 = uparam(2)
99 sigt12= uparam(3)
100 sigc1 = uparam(4)
101 sigc2 = uparam(5)
102 beta = uparam(6)
103 tmax = uparam(7)
104 ifail_sh = int(uparam(8))
105
106 dmg_flag = 1
107 idel_f = 0
108 idel_fm = 0
109 IF (ifail_sh == 1) THEN
110 idel_fm = 1
111 ELSEIF (ifail_sh == 2) THEN
112 idel_fm = 1
113 ELSEIF (ifail_sh == 3) THEN
114 idel_f = 1
115 ELSEIF (ifail_sh == 4) THEN
116 idel_f = 1
117 END IF
118
119 nindx = 0
120
121
122
123 IF (idel_fm == 1) THEN
124
125 DO i=1,nel
126 IF (off(i) == one .and. foff(i) == 1) THEN
127
128 IF (uvar(i,1) == zero) THEN
129
130 IF (signxx(i) > zero) THEN
131 damft = (signxx(i)/sigt1)**2 + beta*(signxy(i)/sigt12)**2
132 damfc = zero
133 dfmax(i,2) =
max(damft,dfmax(i,2))
134 dfmax(i,2) =
min(dfmax(i,2),one)
135 ELSE
136 damfc = (signxx(i)/sigc1)**2
137 damft = zero
138 dfmax(i,3) =
max(damfc,dfmax(i,3))
139 dfmax(i,3) =
min(dfmax(i,3),one)
140 ENDIF
141
142
143 IF (signyy(i) > zero) THEN
144 dammt = (signyy(i)/sigt2)**2
145 . + (signxy(i)/sigt12)**2
146 dammc = zero
147 dfmax(i,4) =
max(dammt,dfmax(i,4))
148 dfmax(i,4) =
min(dfmax(i,4),one)
149 ELSE
150 dammc = (signyy(i)/(two*sigt12))**2
151 . + (signxy(i)/sigt12)**2
152 . + signyy(i)*((sigc2/(two*sigt12))**2 - one)/sigc2
153 dammt = zero
154 dfmax(i,5) =
max(dammc,dfmax(i,5))
155 dfmax(i,5) =
min(dfmax(i,5),one)
156 ENDIF
157 dammx =
max(damft,damfc,dammc,dammt)
158 dfmax(i,1) =
min(one,dammx)
159 IF (dammx >= one) THEN
160 uvar(i,1) = time
161 nindx = nindx+1
162 indx(nindx) = i
163 ENDIF
164 ENDIF
165
166 IF (uvar(i,1) > zero) THEN
167 dfmax(i,1) = one
168 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
169
170 IF (dmg_scale(i) < em02) THEN
171 foff(i) = 0
172 tdel(i) = time
173 dmg_scale(i) = zero
174 ENDIF
175 ENDIF
176
177 ELSEIF (foff(i) == 0) THEN
178 dmg_scale(i) = zero
179 ENDIF
180 ENDDO
181 ENDIF
182
183
184
185 IF (idel_f == 1) THEN
186
187 DO i=1,nel
188 IF (off(i) == one .and. foff(i) == 1) THEN
189
190 IF (uvar(i,1) == zero) THEN
191
192 IF (signxx(i) > zero) THEN
193 damft = (signxx(i)/sigt1)**2
194 . + beta*(signxy(i)/sigt12)**2
195 damfc = zero
196 dfmax(i,2) =
max(damft,dfmax(i,2))
197 dfmax(i,2) =
min(dfmax(i,2),one)
198 ELSE
199 damfc = (signxx(i)/sigc1)**2
200 damft = zero
201 dfmax(i,3) =
max(damfc,dfmax(i,3))
202 dfmax(i,3) =
min(dfmax(i,3),one)
203 ENDIF
204 dammx =
max(damft,damfc)
206 IF (dammx >= one) uvar(i,1) = time
207 ENDIF
208
209 IF (uvar(i,1) > zero) THEN
210 dfmax(i,1) = one
211 dmg_scale(i) = exp(-(time + timestep(i) - uvar(i,1))/tmax)
212
213 IF (dmg_scale(i) < em02) THEN
214 nindx = nindx+1
215 indx(nindx) = i
216 foff(i) = 0
217 tdel(i) = time
218 dmg_scale(i) = zero
219 ENDIF
220 ENDIF
221 ELSEIF (foff(i) == 0) THEN
222 dmg_scale(i) = zero
223 ENDIF
224 ENDDO
225
226 ENDIF
227
228 IF (nindx > 0) THEN
229 DO j=1,nindx
230 i = indx(j)
231#include "lockon.inc"
232 WRITE(iout, 2000) ngl(i),ipg,ilay,ipt
233 WRITE(istdo,2100) ngl(i),ipg,ilay,ipt,time
234#include "lockoff.inc"
235 END DO
236 END IF
237
238 2000 FORMAT(1x,'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
239 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3)
240 2100 FORMAT(1x,'FAILURE (CHANG) OF SHELL ELEMENT ',i10,1x,',GAUSS PT',
241 . i2,1x,',LAYER',i3,1x,',INTEGRATION PT',i3,1x,'AT TIME :',1pe12.4)
242
243 RETURN