36
37
38
39#include "implicit_f.inc"
40#include "comlock.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "com01_c.inc"
49#include "com08_c.inc"
50#include "scr02_c.inc"
51#include "scr07_c.inc"
52#include "scr17_c.inc"
53#include "scr18_c.inc"
54#include "sms_c.inc"
55#include "units_c.inc"
56
57
58
59 INTEGER NDT(*),IXC(NIXC,*),INDXOF(MVSIZ),NGL(MVSIZ),
60 . JFT, JLT,NELTST,ITYPTST,NINDX,ISMSTR,IOFC, JSMS
62 . ym(*), off(*),sti(*),stir(*),offg(*),dtc(*),
63 . ssp(*), dt2c(*),viscmx(*),vol0(*),vol00(*),
64 . px1(*), px2(*), py1(*), py2(*), rho(*), aldt(*), alpe(*),
65 . dt2t,
66 . msc(*), dmelc(*)
68 INTEGER,INTENT(IN) :: G_DT
69
70
71
72 INTEGER J, I, II,IDT
74 . dt(mvsiz)
76
77 IF(idtmins == 2 .AND. jsms /= 0)THEN
78 DO i=jft,jlt
79 IF(offg(i) < zero .OR. off(i) == zero) cycle
80
81
82
83
84 dmelc(i)=
max(dmelc(i),
85 . (dtmins/dtfacs)**2 * sti(i) - two*msc(i))
86 dt(i) = dtfacs*
87 . sqrt((two*msc(i)+dmelc(i))/
max(em20,sti(i)))
88 IF(dt(i)<dt2t)THEN
89 dt2t = dt(i)
90 neltst = ngl(i)
91 ityptst = 3
92 END IF
93 END DO
94
95 IF(idtmin(3)/=0)THEN
96 DO i=jft,jlt
97 mas = vol00(i)*rho(i)
98 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
99 ENDDO
100 END IF
101
102 ELSEIF(idt1sh==1.OR.idtmins==2)THEN
103 DO i=jft,jlt
104 mas = vol00(i)*rho(i)
105 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
106 ENDDO
107 ELSE
108 DO i=jft,jlt
109 aldt(i)=aldt(i)*viscmx(i)
110 . / sqrt(alpe(i))
111 dt(i)=dtfac1(3)*aldt(i)/ssp(i)
112 ENDDO
113 ENDIF
114
115
116 IF(nodadt == 0)THEN
117 IF(idtmin(3) == 0)RETURN
118 ENDIF
119
120 IF(g_dt /= zero)THEN
121 DO i=jft,jlt
123 ENDDO
124 ENDIF
125
126 IF(idtmin(3) == 1)THEN
127 nindx=iofc
128 DO i=jft,jlt
129 IF(dt(i) > dtmin1(3) .OR. off(i) < one .OR. offg(i) == two .OR. offg(i) < zero) cycle
130 nindx=nindx+1
131 indxof(nindx)=i
132 ENDDO
133
134 DO j=iofc+1,nindx
135 i = indxof(j)
136 tstop = tt
137#include "lockon.inc"
138 WRITE(iout,1000) ngl(i)
139 WRITE(istdo,1000) ngl(i)
140#include "lockoff.inc"
141 ENDDO
142 nindx=iofc
143 ELSEIF(idtmin(3)==2)THEN
144 nindx=iofc
145 DO i=jft,jlt
146 IF(dt(i)>dtmin1(3).OR.off(i)<one .OR.offg(i)<zero) cycle
147 nindx=nindx+1
148 indxof(nindx)=i
149 ENDDO
150
151 DO j=iofc+1,nindx
152 i = indxof(j)
153 off(i)=0.
154 idel7nok = 1
155#include "lockon.inc"
156 WRITE(iout,1200) ngl(i)
157 WRITE(istdo,1300) ngl(i),tt
158#include "lockoff.inc"
159 ENDDO
160 iofc = nindx
161 ELSEIF(idtmin(3)==3.AND.ismstr==2)THEN
162 nindx=iofc
163 DO i=jft,jlt
164 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
165 nindx=nindx+1
166 indxof(nindx)=i
167 ENDDO
168
169 DO j=iofc+1,nindx
170 i = indxof(j)
171 offg(i)=2.
172#include "lockon.inc"
173 WRITE(iout,1400) ngl(i)
174 WRITE(istdo,1400) ngl(i)
175#include "lockoff.inc"
176 ENDDO
177 nindx=iofc
178 ELSEIF(idtmin(3)==5)THEN
179 nindx=iofc
180 DO i=jft,jlt
181 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
182 nindx=nindx+1
183 indxof(nindx)=i
184 ENDDO
185
186 DO j=iofc+1,nindx
187 i = indxof(j)
188 mstop = 2
189#include "lockon.inc"
190 WRITE(iout,1000) ngl(i)
191 WRITE(istdo,1000) ngl(i)
192#include "lockoff.inc"
193 ENDDO
194 nindx=iofc
195 ENDIF
196
197 IF (nodadt/=0.OR.(idtmins==2.AND.jsms/=0)) RETURN
198
199
200 idt=0
201 DO i=jft,jlt
202 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)idt=1
203 ENDDO
204
205 IF(idt==1)THEN
206 DO i=jft,jlt
207 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)THEN
208 dt2t = dt(i)
209 neltst = ngl(i)
210 ityptst = 3
211 ENDIF
212 ENDDO
213 ENDIF
214
215 IF (idtmins==2) RETURN
216
217 IF(idt1sh==1)THEN
218 DO i=jft,jlt
219 sti(i) = sti(i) * off(i)
220 stir(i)= zero
221 ENDDO
222 ELSE
223 DO i=jft,jlt
224 divm=
max(aldt(i)*aldt(i),em20)
225 sti(i) = half * vol0(i) * ym(i) / divm
226 sti(i) = zep81 * sti(i) * off(i)
227 stir(i)= zero
228 ENDDO
229 ENDIF
230
231 1000 FORMAT(1x,'-- MINIMUM TIME STEP SHELL ELEMENT NUMBER ',i10)
232 1200 FORMAT(1x,'-- DELETE OF SHELL ELEMENT NUMBER ',i10)
233 1300 FORMAT(1x,'-- DELETE OF SHELL ELEMENT :',i10,' AT TIME :',g11.4)
234 1400 FORMAT(1x,'-- CONSTANT TIME STEP FOR SHELL ELEMENT NUMBER ',i10)
235
236 RETURN
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)