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