37
38
39
40 USE fail_param_mod
41
42
43
44#include "implicit_f.inc"
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#include "mvsiz_p.inc"
79#include "units_c.inc"
80#include "comlock.inc"
81#include "param_c.inc"
82
83
84
85 INTEGER NEL,NUVAR,NGL(*),IPLY
87 . time,timestep(*),signzz(*),
88 . signyz(*),signxz(*),epsyz(*),epsxz(*),epszz(*),
89 . offi(*),reduc(*),count(*)
90 TYPE (FAIL_PARAM_) ,INTENT(IN) :: FAIL
91
92
93
94 my_real uvar(nel,nuvar), off(nel)
95
96
97
98 INTEGER
99 . I,J,IDEL,IDEL_L,IFLAG(MVSIZ),INDX(MVSIZ),NINDX,
100 . NINDEX,INDEX(MVSIZ),JST(MVSIZ),IR,JJ,IMOD,
101 . MODE(MVSIZ)
103 . dam1,dam2,dam3,dam
105 . epst3(mvsiz),epsf3(mvsiz),epst13(mvsiz),epsf13(mvsiz),
106 . epst23(mvsiz),epsf23(mvsiz)
107
108
109 ir = 0
110 DO i=1,nel
111 IF (off(i)==zero) cycle
112 epst3(i) = fail%UPARAM(5)
113 epsf3(i) = fail%UPARAM(6)
114 epst23(i) = fail%UPARAM(9)
115 epsf23(i) = fail%UPARAM(10)
116 epst13(i) = fail%UPARAM(11)
117 epsf13(i) = fail%UPARAM(12)
118 reduc(i) = fail%UPARAM(16)
119 ir = ir + 1
120 jst(ir) = i
121
122 indx(i) = 0
123 index(i) = 0
124 ENDDO
125
126
127
128 IF(time == zero)THEN
129 DO jj=1,ir
130 i = jst(jj)
131 DO j=1,nuvar
132 uvar(i,j)= zero
133 ENDDO
134 ENDDO
135 ENDIF
136
137
138 nindx=0
139 nindex = 0
140 DO j =1,ir
141 i=jst(j)
142
143 dam1 = zero
144 dam2 = zero
145 dam3 = zero
146 imod = 0
147 mode(i) = 0
148 IF(off(i) == one )THEN
149
150
151 IF(uvar(i,1) < one )THEN
152
153 IF(epsyz(i) >= epst23(i) ) THEN
154 dam2 = (epsyz(i) - epst23(i))/(epsf23(i) - epst23(i))
155 dam2 =
min(one, dam2)
156 IF(dam2 >= one) imod = 3
157 ENDIF
158
159 IF(epsxz(i) >= epst13(i) ) THEN
160 dam3 = (epsxz(i) - epst13(i))/(epsf13(i) - epst13(i))
161 dam3 =
min(one, dam3)
162 IF(dam3 >= one) imod = 2
163 ENDIF
164
165 IF(epszz(i) >= epst3(i) ) THEN
166 dam1= (epszz(i) - epst3(i))/(epsf3(i) - epst3(i))
167 dam1 =
min(one, dam1)
168 IF(dam1 >= one) imod = 1
169 ENDIF
170
171 dam =
max(uvar(i,1),dam1, dam2, dam3)
172 uvar(i,1) = dam
173 signxz(i) = signxz(i)*
max(one - dam,reduc(i))
174 signyz(i) = signyz(i)*
max(one - dam,reduc(i))
175 signzz(i) = signzz(i)*
max(one - dam,reduc(i))
176
177 IF(dam == one) THEN
178 nindx=nindx+1
179 indx(nindx)=i
180
181 mode(i) = imod
182 count(i) = count(i) + one
183 IF(int(count(i)) == 4)THEN
184 WRITE(iout, 1300) ngl(i),iply,mode(i),time
185 WRITE(istdo,1300) ngl(i),iply,mode(i), time
186 ENDIF
187 ENDIF
188 ELSE
189
190
191
192
193 offi(i) = reduc(i)
194 ENDIF
195 ENDIF
196 ENDDO
197
198 IF(nindx > 0)THEN
199 DO j=1,nindx
200 i = indx(j)
201#include "lockon.inc"
202 WRITE(iout, 1200) ngl(i),iply,mode(i),time
203 WRITE(istdo,1200) ngl(i),iply,mode(i), time
204#include "lockoff.inc"
205 END DO
206 ENDIF
207
208
209 1200 FORMAT(1x,'DELAMINATION OF SHELL #',i10,1x,
210 . 'INTERPLY', i10, 1x,'MODE #',i10,1x,
211 . 'AT TIME # ',1pe20.13)
212 1300 FORMAT(1x,'FULL DELAMINATION OF SHELL #',i10,1x,
213 . 'INTERPLY', i10, 1x,'MODE #',i10,1x,
214 . 'AT TIME # ',1pe20.13)
215 RETURN