36
37
38
39 USE fail_param_mod
40
41
42
43#include "implicit_f.inc"
44
45
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
76
77
78
79
80
81
82
83
84#include "mvsiz_p.inc"
85#include "units_c.inc"
86#include "comlock.inc"
87#include "param_c.inc"
88
89
90
91
92 INTEGER NEL, NUPARAM, NUVAR,NGL(*),
93 . IPLY
95 . time,timestep(*),signzz(*),
96 . signyz(*),signxz(*), du(3,mvsiz),offi(*),reduc(*),count(*)
97 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
98
99
100
101 my_real uvar(nel,nuvar), off(nel)
102
103
104
105 INTEGER
106 . I,J,IDEL,IDEL_L,IFLAG(MVSIZ),INDX(MVSIZ),NINDX,
107 . NINDEX,INDEX(MVSIZ),JST(MVSIZ),IR,JJ
109 . gic(mvsiz),giic(mvsiz),k(mvsiz),eta(mvsiz),
110 . d0(mvsiz),ds0(mvsiz), cc1,cc2,deltaf,delta0,dam,
111 . dshear,d3,beta,b,lam,d
112
113
114 ir = 0
115 DO i=1,nel
116 IF (off(i)==zero) cycle
117 gic(i) = fail%UPARAM(1)
118 giic(i) = fail%UPARAM(2)
119 eta(i) = fail%UPARAM(3)
120 k(i) = fail%UPARAM(4)
121 d0(i) = fail%UPARAM(5)
122 ds0(i) = fail%UPARAM(6)
123 reduc(i) = fail%UPARAM(7)
124 ir = ir + 1
125 jst(ir) = i
126
127 indx(i) = 0
128 index(i) = 0
129 ENDDO
130
131
132
133 IF(time == zero)THEN
134 DO jj=1,ir
135 i = jst(jj)
136 DO j=1,nuvar
137 uvar(i,j)= zero
138 ENDDO
139 ENDDO
140 ENDIF
141
142
143
144
145
146 nindx=0
147 nindex = 0
148 DO j =1,ir
149 i=jst(j)
150 IF(off(i) == one )THEN
151
152 IF(uvar(i,1) < one)THEN
153
154 dam = uvar(i,1)
155 dshear = sqrt(du(1,i)**2 + du(2,i)**2)
156 d3 = half*(du(3,i) + abs(du(3,i)))
157 d = sqrt(d3**2 + dshear**2)
158 beta = dshear/
max((dshear + d3),em20)
159 IF(d3 == zero) beta = one
160 b = beta**2 / (one + two*beta**2 - two*beta)
161
162 cc1 = d0(i)**2
163 cc2 = b**eta(i)
164 delta0 = sqrt(cc1 + (ds0(i)**2 - cc1)*cc2)
165 deltaf = gic(i) + (giic(i) - gic(i))*cc2
166 deltaf= two*deltaf/
max(k(i)*delta0, em20)
167
168
169
170 lam = delta0*deltaf
171 lam = lam/(deltaf - dam*(deltaf - delta0) )
173
174
175
176 dam = deltaf*(d - delta0)
177 cc1 = d*(deltaf - delta0)
178 dam = dam/
max(em20, cc1)
181
182 uvar(i,1) = dam
183 signxz(i) = signxz(i)*
max((one - dam),reduc(i))
184 signyz(i) = signyz(i)*
max((one - dam),reduc(i))
185 IF(d3 > zero)signzz(i)=signzz(i)*
max((one - dam),reduc(i))
186
187 IF(dam == one) THEN
188 nindx=nindx+1
189 indx(nindx)=i
190
191 count(i) = count(i) + one
192 IF(int(count(i)) == 4)THEN
193
194 WRITE(iout, 1300) ngl(i),iply,time
195 WRITE(istdo,1300) ngl(i),iply, time
196 ENDIF
197 ENDIF
198 ELSE
199
200
201
202
203 offi(i) = reduc(i)
204 ENDIF
205 ENDIF
206 ENDDO
207
208 IF(nindx > 0)THEN
209 DO j=1,nindx
210 i = indx(j)
211#include "lockon.inc"
212
213
214 WRITE(iout, 1200) ngl(i),iply,time
215 WRITE(istdo,1200) ngl(i),iply, time
216#include "lockoff.inc"
217 END DO
218 ENDIF
219
220
221 1200 FORMAT(1x,'DELAMINATION OF SHELL #',i10,1x,
222 . 'INTERPLY ', i10, 1x,
223 . 'AT TIME # ',1pe20.13)
224
225 1300 FORMAT(1x,'FULL DELAMINATION OF SHELL #',i10,1x,
226 . 'INTERPLY', i10,1x,'AT TIME # ',1pe20.13)
227 RETURN