35
36
37
38#include "implicit_f.inc"
39#include "comlock.inc"
40
41
42
43#include "units_c.inc"
44#include "param_c.inc"
45#include "scr17_c.inc"
46#include "com08_c.inc"
47#include "impl1_c.inc"
48
49
50
51 INTEGER ,INTENT(IN) :: ,NUMMAT,NUVAR
52 INTEGER ,INTENT(IN) :: MAT(NEL),PID(NEL),NGL(NEL)
53 INTEGER ,DIMENSION(NPROPMI,NUMMAT) ,INTENT(IN) :: IPM
55 . pm(npropm,*),
for(nel,3), mom(nel,3), eint(nel,2), geo(npropg,*),
56 . off(*), pla(*),
57 . al(nel),
58 . exx(nel),exy(nel),exz(nel),kxx(nel),kyy(nel),
59 . kzz(nel),fa1(nel),fa2(nel),fa3(nel),
60 . ma1(nel),ma2(nel),ma3(nel),a1(nel)
61 my_real ,
DIMENSION(NEL,NUVAR),
INTENT(INOUT) :: uvar
62 my_real ,
DIMENSION(NEL) ,
INTENT(INOUT) :: sigy
63
64
65
66 INTEGER INDX(NEL),ICC(NEL),IRTY(NEL)
67 INTEGER I,NPIF, J, NINDX
69 . yldtmp(nel),ym(nel),
70 . b1(nel), b2(nel), b3(nel), degmb(nel),
71 . degfx(nel),esp(nel),rho(nel),g(nel),
72 . dmpm(nel), dmpf(nel), shf(nel),
73 . f1(nel), m1(nel), m2(nel), m3(nel),
74 . degsh(nel), yeq(nel), yld(nel), dwpla(nel),
75 . epmx(nel), dwelm(nel), dwelf(nel),z3(nel),z4(nel),
76 . ca(nel), cb(nel), cn(nel),
ymax(nel),
77 . rr(nel), cc(nel), epdr(nel), epsp(nel),
78 . sh(nel), yma2(nel), sh10(nel), sh20(nel), sh0(nel),
79 . sh1(nel), sh2(nel), fact, epif,plap(nel),dpla(nel),
80 . tmp1(nel), tmp2(nel), tmp3(nel), etmp,plap1,vp,asrate,
81 . factphi,yma2phi, sh10p, sh20p, sh1p, sh2p,shp, sh0p,
82 . ys,ysp,gs,gsp,trm1,trm1p,trm2,trm2p,trm3,trm3p,yeq0,yeq1
83
84 epif = zero
85 npif = 0
86
87 IF (impl_s == 0 .OR. idyna > 0) THEN
88 DO i=1,nel
89 dmpm(i)=geo(16,pid(i))*al(i)
90 dmpf(i)=geo(17,pid(i))*al(i)
91 ENDDO
92 ELSE
93 DO i=1,nel
94 dmpm(i)=zero
95 dmpf(i)=zero
96 ENDDO
97 ENDIF
98
99
100 DO i=1,nel
101 vp = ipm(255,mat(i))
102 rho(i) = pm( 1,mat(i))
103 asrate =
min(one, pm(9,mat(i))*dt1)
104 g(i) =pm(22,mat(i))
105 ym(i) =pm(20,mat(i))
106
107 ca(i) =pm(38,mat(i))
108 cb(i) =pm(39,mat(i))
109 cn(i) =pm(40,mat(i))
110 epmx(i)=pm(41,mat(i))
111 ymax(i)=pm(42,mat(i))
112 cc(i) =pm(43,mat(i))
113 IF(vp == 1)THEN
114 epdr(i) =
max(em20,pm(44,mat(i)))
115 ELSE
116 epdr(i) =
max(em20,pm(44,mat(i))*dt1)
117 ENDIF
118 icc(i) =nint(pm(49,mat(i)))
119
120 a1(i) =geo(1,pid(i))
121 b1(i) =geo(2,pid(i))
122 b2(i) =geo(18,pid(i))
123 b3(i) =geo(4,pid(i))
124
125 shf(i) =geo(37,pid(i))
126 epif =
max(epif,cc(i))
127 irty(i) = nint(pm(50,mat(i)))
128 npif = npif+irty(i)
129 z3(i) =pm(51,mat(i))
130 z4(i) =pm(52,mat(i))
131 ENDDO
132
133
134
135 DO i=1,nel
136 esp(i) = (eint(i,1)+eint(i,2))/al(i)/a1(i)
137 ENDDO
138
139 DO i=1,nel
140 degmb(i) =
for(i,1)*exx(i)
141 degsh(i) =
for(i,2)*exy(i)+
for(i,3)*exz(i)
142 degfx(i) = mom(i,1)*kxx(i)+mom(i,2)*kyy(i)+mom(i,3)*kzz(i)
143 ENDDO
144
145
146
147 DO i=1,nel
148 sh(i)=five_over_6*g(i)*a1(i)
149 yma2(i)=twelve*ym(i)/al(i)**2
150 sh10(i)=yma2(i)*b1(i)
151 sh20(i)=yma2(i)*b2(i)
152 sh0(i)=(one - shf(i))*sh(i)
153 sh1(i)=sh0(i)*sh10(i)/(sh(i)+sh10(i)) + shf(i)*sh10(i)
154 sh2(i)=sh0(i)*sh20(i)/(sh(i)+sh20(i)) + shf(i)*sh20(i)
155
156 f1(i) =
for(i,1)+ exx(i)*a1(i)*ym(i)
157 for(i,2)=
for(i,2)+ exy(i)*sh2(i)
158 for(i,3)=
for(i,3)+ exz(i)*sh1(i)
159 m1(i) =mom(i,1)+ kxx(i)*g(i) *b3(i)
160 m2(i) =mom(i,2)+ kyy(i)*ym(i)*b1(i)
161 m3(i) =mom(i,3)+ kzz(i)*ym(i)*b2(i)
162 ENDDO
163
164
165
166 DO i=1,nel
167 yeq(i)= f1(i)*f1(i) + three * a1(i) *
168 + ( m1(i)*m1(i) /
max(b3(i),em20)
169 + + m2(i)*m2(i) /
max(b1(i),em20)
170 + + m3(i)*m3(i) /
max(b2(i),em20) )
171 yeq(i)= sqrt(yeq(i))/a1(i)
172 ENDDO
173
174
175
176 IF (epif /= zero) THEN
177 DO i=1,nel
178 IF(vp == 1)THEN
179 plap(i) = uvar(i,1)
180 plap(i) =
max(plap(i),epdr(i))
181 epsp(i) = log(plap(i)/epdr(i))
182 ELSE
183 epsp(i)=abs(degmb(i)+degfx(i))/(yeq(i)+ em20)/a1(i)
184 tmp2(i)=abs(degmb(i)+degfx(i))
185 tmp3(i)=epsp(i)
186 epsp(i)=
max(epsp(i),epdr(i))
187 epsp(i)= log(epsp(i)/epdr(i))
188 ENDIF
189 ENDDO
190 IF (npif == zero) THEN
191 DO i=1,nel
192 epsp(i)=(one + cc(i) * epsp(i))
193 IF (icc(i) == 1)
ymax(i) =
ymax(i) * epsp(i)
194 ENDDO
195 ELSEIF (npif == nel) THEN
196 DO i=1,nel
197 epsp(i)=(one + cc(i) * epsp(i))
198 tmp1(i)=epsp(i)
199 epsp(i)= cc(i)*exp((-z3(i)+z4(i) * epsp(i))*esp(i))
200 IF(icc(i)==1)
ymax(i)=
ymax(i) + epsp(i)
201 ca(i) = ca(i) + epsp(i)
202 epsp(i)=one
203 ENDDO
204 ELSE
205 DO i=1,nel
206 IF (irty(i) == 0)THEN
207 epsp(i)=(one + cc(i) * epsp(i))
209 IF(icc(i)==1)
ymax(i) =
ymax(i) * epsp(i)
210 ELSE
211 epsp(i)=(one + cc(i) * epsp(i))
212 tmp1(i)=epsp(i)
213 epsp(i)= cc(i)*exp((-z3(i)+z4(i) * epsp(i))*esp(i))
214 IF(icc(i)==1)
ymax(i)=
ymax(i) + epsp(i)
215 ca(i) = ca(i) + epsp(i)
216 epsp(i)=one
217 ENDIF
218 ENDDO
219 ENDIF
220 ELSE
221 DO i=1,nel
222 epsp(i)=one
223 ENDDO
224 ENDIF
225
226
227
228 DO i=1,nel
229 yld(i)= ca(i) + cb(i) * exp(cn(i) * log(pla(i)+em30))
230 yldtmp(i)=yld(i)
231 yld(i)=
min(yld(i)*epsp(i),
ymax(i))
232 rr(i) =
min(one,yld(i)/(yeq(i)+ em20))
233 sigy(i) = yld(i)
234 ENDDO
235
236 DO i=1,nel
237 f1(i) = f1(i)*rr(i)
238 dwelm(i) =(f1(i)+
for(i,1))*(f1(i)-
for(i,1))/ym(i)/a1(i)
239 degmb(i) = degmb(i) + f1(i)*exx(i)
240 ENDDO
241
242 DO i=1,nel
243 m1(i) = m1(i)*rr(i)
244 m2(i) = m2(i)*rr(i)
245 m3(i) = m3(i)*rr(i)
246 dwelf(i) =(m1(i)+mom(i,1))*(m1(i)-mom(i,1))/ g(i)/b3(i)+
247 . (m2(i)+mom(i,2))*(m2(i)-mom(i,2))/ym(i)/b1(i)+
248 . (m3(i)+mom(i,3))*(m3(i)-mom(i,3))/ym(i)/b2(i)
249 degfx(i) = degfx(i)+ m1(i)*kxx(i)+m2(i)*kyy(i)+m3(i)*kzz(i)
250 ENDDO
251
252 DO i=1,nel
253 dwpla(i)= degmb(i)+degfx(i)-dwelm(i)-dwelf(i)
254 ENDDO
255
256
257
258 DO i=1,nel
259 tmp1(i)=epsp(i)*dwpla(i)/yld(i)
260
261 dpla(i) =
max(zero,half*tmp1(i)/a1(i))
262 pla(i) = pla(i)+off(i) * dpla(i)
263 ENDDO
264 DO i=1,nel
265 IF (vp == 1) THEN
266 plap1 = dpla(i) /
max(em20,dt1)
267 uvar(i,1) = asrate * plap1 + (one - asrate) * plap(i)
268 ENDIF
269 ENDDO
270
271
272
273
274 DO i=1,nel
275 IF (off(i) < em01) off(i) = zero
276 IF (off(i) < one ) off(i) = off(i)*four_over_5
277 ENDDO
278
279 nindx = 0
280 DO i=1,nel
281 IF (off(i) < one) cycle
282 IF (pla(i) < epmx(i)) cycle
283 off(i)=four_over_5
284 idel7nok = 1
285 nindx=nindx+1
286 indx(nindx)=i
287 ENDDO
288
289 IF (nindx > 0 .AND. imconv == 1) THEN
290 DO j=1,nindx
291#include "lockon.inc"
292 WRITE(iout, 1000) ngl(indx(j))
293 WRITE(istdo,1100) ngl(indx(j)),tt
294#include "lockoff.inc"
295 ENDDO
296 ENDIF
297
298 DO i=1,nel
299 fa1(i) = f1(i)
302 ma1(i) = m1(i)
303 ma2(i) = m2(i)
304 ma3(i) = m3(i)
305 ENDDO
306
307 1000 FORMAT(1x,'-- RUPTURE OF BEAM ELEMENT NUMBER ',i10)
308 1100 FORMAT(1x,'-- RUPTURE OF BEAM ELEMENT :',i10,' AT TIME :',g11.4)
309
310 RETURN
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
for(i8=*sizetab-1;i8 >=0;i8--)