35
36
37
38#include "implicit_f.inc"
39#include "comlock.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47#include "com08_c.inc"
48#include "scr02_c.inc"
49#include "scr07_c.inc"
50#include "scr17_c.inc"
51#include "scr18_c.inc"
52#include "sms_c.inc"
53#include "units_c.inc"
54
55
56
57 INTEGER JFT, JLT,NELTST,ITYPTST,ISMSTR,IOFC,NNE, JSMS,IGTYP
58 INTEGER NGL(*),IGMAT,G_DT
59
61 . off(*),sti(*),stir(*),offg(*),ssp(*),amu(*),
62 . aldt(*), alpe(*), a1(*), thk0(*),thk02(*),
63 . vol0(*), viscmx(*), rho(*),dt2t,
area(*), g(*), shf(*),
64 . msc(*), dmelc(*), ptg(3,*),a11r(*),
dtel(mvsiz), a11pinch
65
66
67
68 INTEGER INDXOF(MVSIZ),
69 . I, J, II, NINDX,IDT,ITYEL
70 my_real dt(mvsiz),fac,mas,divm,mmin ,iz
71
72 DO i=jft,jlt
73 viscmx(i) =
max(viscmx(i), amu(i))
74 viscmx(i) = sqrt(one + viscmx(i)*viscmx(i)) - viscmx(i)
75 aldt(i) = aldt(i) * viscmx(i) / sqrt(alpe(i))
76 ENDDO
77
78 ityel = 3
79 IF (nne==3) ityel = 7
80
81 IF(idtmins == 2)THEN
82 DO i=jft,jlt
83 IF (off(i)==zero) THEN
84 sti(i) = zero
85 stir(i) = zero
86 ELSE
87 sti(i) = half*vol0(i) * a11pinch / aldt(i)**2
88
89 IF(igtyp == 52 .OR.
90 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
91 . .AND. igmat > 0 )) THEN
92 fac = half*vol0(i)/ aldt(i)**2
93 stir(i) =(fac * a11r(i)*thk02(i) +
94 . fac * a1(i) *
area(i)) *one_over_12
95 ELSE
96 stir(i) = sti(i) * (thk02(i)+
area(i)) *one_over_12
97 ENDIF
98 ENDIF
99 ENDDO
100
101 IF(jsms /= 0)THEN
102 IF(ityel==3)THEN
103 DO i=jft,jlt
104 IF(offg(i) < zero .OR. off(i) == zero) cycle
105
106
107
108
109 dmelc(i)=
max(dmelc(i),
110 . (dtmins/dtfacs)**2 * sti(i) - two*msc(i))
111 dt(i) = dtfacs*
112 . sqrt((two*msc(i)+dmelc(i))/
max(em20,sti(i)))
113 IF(dt(i)<dt2t)THEN
114 dt2t = dt(i)
115 neltst = ngl(i)
116 ityptst = ityel
117 END IF
118 END DO
119 ELSE
120 DO i=jft,jlt
121 IF(offg(i) < zero .OR. off(i) == zero) cycle
122
123 mmin=msc(i)*
min(ptg(1,i),ptg(2,i),ptg(3,i))
124
125
126
127
128 dmelc(i)=
max(dmelc(i),
129 . (dtmins/dtfacs)**2 * sti(i) - two*mmin)
130 dt(i) = dtfacs*
131 . sqrt((two*mmin+dmelc(i))/
max(em20,sti(i)))
132 IF(dt(i)<dt2t)THEN
133 dt2t = dt(i)
134 neltst = ngl(i)
135 ityptst = ityel
136 END IF
137 END DO
138 END IF
139 ENDIF
140 ELSEIF(nodadt/=0)THEN
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 DO i=jft,jlt
157 IF (off(i)==zero) THEN
158 sti(i) = zero
159 stir(i) = zero
160 ELSE
161 sti(i) = half*vol0(i) * a11pinch / aldt(i)**2
162 stir(i) = sti(i) * (thk02(i)+
area(i)) *one_over_12
163 ENDIF
164 ENDDO
165
166 ENDIF
167
168 DO i=jft,jlt
169 dt(i)=dtfac1(ityel)*aldt(i)/ssp(i)
170 ENDDO
171 IF(g_dt>0)THEN
172 DO i=jft,jlt
173 dtel(i)=aldt(i)/ssp(i)
174 ENDDO
175 ENDIF
176 IF((nodadt/=0.OR.idtmins==2).AND.idtmin(ityel)==0)RETURN
177
178 IF(idtmin(ityel)>=1)THEN
179 nindx=iofc
180 DO i=jft,jlt
181 IF(dt(i)<=dtmin1(ityel).AND.
182 . off(i)>=one.AND.offg(i)/=two.AND.offg(i)>=zero) THEN
183 nindx=nindx+1
184 indxof(nindx)=i
185 ENDIF
186 ENDDO
187 ENDIF
188
189 IF(idtmin(ityel)==1)THEN
190
191 IF(nindx>iofc) mstop = 2
192
193 DO 100 j=iofc+1,nindx
194 i = indxof(j)
195#include "lockon.inc"
196 WRITE(iout,1000) nne,ngl(i)
197 WRITE(istdo,1000) nne,ngl(i)
198#include "lockoff.inc"
199 100 CONTINUE
200 ELSEIF(idtmin(ityel)==2)THEN
201 IF(nindx>iofc) idel7nok = 1
202 DO 125 j=iofc+1,nindx
203 i = indxof(j)
204 off(i)=0.
205#include "lockon.inc"
206 WRITE(iout,1200) nne,ngl(i)
207 WRITE(istdo,1300) nne,ngl(i),tt
208#include "lockoff.inc"
209 125 CONTINUE
210 iofc = nindx
211 ELSEIF(idtmin(ityel)==3.AND.ismstr==2)THEN
212 DO 140 j=iofc+1,nindx
213 i = indxof(j)
214 offg(i)=2.
215#include "lockon.inc"
216 WRITE(iout,1400) nne,ngl(i)
217 WRITE(istdo,1400) nne,ngl(i)
218#include "lockoff.inc"
219 140 CONTINUE
220 nindx=iofc
221 ELSEIF(idtmin(ityel)==5)THEN
222 IF(nindx>iofc) mstop = 2
223 DO 160 j=iofc+1,nindx
224 i = indxof(j)
225#include "lockon.inc"
226 WRITE(iout,1000) nne,ngl(i)
227 WRITE(istdo,1000) nne,ngl(i)
228#include "lockoff.inc"
229 160 CONTINUE
230 nindx=iofc
231 ENDIF
232
233
234 1000 FORMAT(1x,'--MINIMUM TIME STEP ',i1,'N SHELL ELEMENT NUMBER ',i10)
235 1200 FORMAT(1x,'--DELETE ',i1,'N SHELL ELEMENT NUMBER ',i10)
236 1300 FORMAT(1x,'--DELETE ',i1',N SHELL ELEMENT:',i10,' AT TIME:',g11.4)
237 1400 FORMAT(1x,'--CONSTANT TIME STEP ',i1,'N SHELL ELEMENT NUMBER',i10)
238
239 IF(nodadt/=0.OR.(idtmins==2.AND.jsms/=0))RETURN
240
241
242 idt=0
243 DO i=jft,jlt
244 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t) idt=1
245 ENDDO
246
247 IF(idt==1)THEN
248 DO i=jft,jlt
249 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)THEN
250 dt2t = dt(i)
251 neltst = ngl(i)
252 ityptst = ityel
253 ENDIF
254 ENDDO
255 ENDIF
256
257 IF(idtmins==2)RETURN
258
259 DO i=jft,jlt
260 divm=
max(aldt(i)*aldt(i),em20)
261 sti(i) = half*vol0(i) * a11pinch* off(i) / divm
262 stir(i)= zero
263 ENDDO
264
265 RETURN
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
subroutine area(d1, x, x2, y, y2, eint, stif0)