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 "param_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 JFT, JLT,NELTST,ITYPTST,ISMSTR,NFT,IOFC, JSMS,IGTYP,
63 . IGMAT,IMAT,MTN
64 INTEGER NGL(MVSIZ)
66 . pm(npropm,*), off(*),sti(*),stir(*),offg(*),ssp(mvsiz),
67 . viscmx(mvsiz),dt2t, mstg(*), dmeltg(*), ptg(3,*),shf(*), g(mvsiz),
68 . a11r(mvsiz),a1(mvsiz),aldt(mvsiz),thk0(mvsiz),
area(mvsiz),alpe(mvsiz)
69 INTEGER,INTENT(IN) :: G_DT, NEL
71 my_real,
DIMENSION(NEL),
INTENT(IN) :: zoffset
72
73
74
75 INTEGER INDX(MVSIZ),I, II, NINDX,IDT
78
79 DO i=jft,jlt
80 viscmx(i) = sqrt(one + viscmx(i)*viscmx(i)) - viscmx(i)
81 aldt(i) = aldt(i)*viscmx(i) / sqrt(alpe(i))
82 ENDDO
83
84
85 IF (nodadt/=0) THEN
86 IF(igtyp == 52 .OR.
87 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
88 . .AND. igmat > 0 )) THEN
89 DO i=jft,jlt
90 IF (off(i)==zero) THEN
91 sti(i) = zero
92 stir(i) = zero
93 ELSE
94 athk =
area(i) * thk0(i)
95 sti(i) = athk * a1(i) / aldt(i)**2
96 fac =a11r(i)*
area(i)/ aldt(i)**2
97 stir(i) = fac*(one_over_12* thk0(i)**3 + thk0(i)*zoffset(i)*zoffset(i)
98 . + thk0(i)*half * shf(i) *
area(i) * g(i)/a1(i))
99 ENDIF
100 ENDDO
101 ELSE
102 DO i=jft,jlt
103 a1(i) = pm(24,imat)
104 g(i) = pm(22,imat)
105 ENDDO
106 IF (mtn == 58 .or. mtn == 158)
CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt )
107 DO i=jft,jlt
108 IF (off(i)==zero) THEN
109 sti(i) = zero
110 stir(i) = zero
111 ELSE
112 athk =
area(i) * thk0(i)
113 sti(i) = athk * a1(i) / aldt(i)**2
114 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
115 . + half * shf(i) *
area(i) * g(i)/a1(i))
116
117
118
119 ENDIF
120 ENDDO
121 ENDIF
122
123 ELSEIF(idtmins == 2)THEN
124 IF(igtyp == 52 .OR.
125 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
126 . .AND. igmat > 0 )) THEN
127 DO i=jft,jlt
128 IF (off(i)==zero) THEN
129 sti(i) = zero
130 stir(i) = zero
131 ELSE
132 athk =
area(i) * thk0(i)
133 sti(i) = athk * a1(i) / aldt(i)**2
134 fac = a11r(i)*
area(i)/ aldt(i)**2
135 stir(i) = fac * (one_over_12* (thk0(i)**3) + thk0(i)*zoffset(i)*zoffset(i)
136 . + half * thk0(i)*shf(i) *
area(i) * g(i)/a1(i))
137 ENDIF
138 END DO
139 ELSE
140 DO i=jft,jlt
141 a1(i) = pm(24,imat)
142 g(i) = pm(22,imat)
143 ENDDO
144 DO i=jft,jlt
145 IF (off(i)==zero) THEN
146 sti(i) = zero
147 stir(i) = zero
148 ELSE
149 athk =
area(i) * thk0(i)
150 sti(i) = athk * a1(i) / aldt(i)**2
151 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
152 . + half * shf(i) *
area(i) * g(i)/a1(i))
153 ENDIF
154 END DO
155 ENDIF
156
157 IF(jsms /= 0)THEN
158 DO i=jft,jlt
159 IF(offg(i) < zero .OR. off(i) == zero) cycle
160
161 mmin=mstg(i)*
min(ptg(1,i),ptg(2,i),ptg(3,i))
162
163
164
165
166 dmeltg(i)=
max(dmeltg(i),
167 . (dtmins/dtfacs)**2 * sti(i) - two*mmin)
168 dt(i) = dtfacs*
169 . sqrt((two*mmin+dmeltg(i))/
max(em20,sti(i)))
170 IF(dt(i)<dt2t)THEN
171 dt2t = dt(i)
172 neltst = ngl(i)
173 ityptst = 7
174 END IF
175 END DO
176 ENDIF
177
178 ENDIF
179
180 DO i=jft,jlt
181 dt(i)=dtfac1(7)*aldt(i)/ssp(i)
182 END DO
183 IF(g_dt/=zero)THEN
184 DO i=jft,jlt
186 ENDDO
187 ENDIF
188
189 IF (idtmin(7)==0) RETURN
190
191 nindx=iofc
192 IF(idtmin(7)==1)THEN
193 DO 100 i=jft,jlt
194 IF(dt(i)>dtmin1(7).OR.off(i)<one
195 . .OR.offg(i)==two.OR.offg(i)<zero) GO TO 100
196 tstop = tt
197
198#include "lockon.inc"
199 WRITE(iout,1000) ngl(i)
200 WRITE(istdo,1000) ngl(i)
201#include "lockoff.inc"
202 100 CONTINUE
203 ELSEIF(idtmin(7)==2)THEN
204 DO 120 i=jft,jlt
205 IF(dt(i)>dtmin1(7).OR.off(i)<one
206 . .OR.offg(i)<zero) GO TO 120
207 off(i)=zero
208
209 ii=i+nft
210 nindx=nindx+1
211 indx(nindx)=i
212 idel7nok = 1
213
214#include "lockon.inc"
215 WRITE(iout,1200) ngl(i)
216 WRITE(istdo,1300) ngl(i),tt
217#include "lockoff.inc"
218 120 CONTINUE
219 iofc = nindx
220 ELSEIF(ismstr==2.AND.idtmin(7)==3)THEN
221 DO 140 i=jft,jlt
222 IF(dt(i)>dtmin1(7).OR.
223 . off(i)<one.OR.offg(i)==two.OR.offg(i)<zero) GO TO 140
224 offg(i)=two
225
226#include "lockon.inc"
227 WRITE(iout,1400) ngl(i)
228 WRITE(istdo,1400) ngl(i)
229#include "lockoff.inc"
230 140 CONTINUE
231 ELSEIF(idtmin(7)==5)THEN
232 DO 150 i=jft,jlt
233 IF(dt(i)>dtmin1(7).OR.off(i)<one.
234 . or.offg(i)==two.OR.offg(i)<zero) GO TO 150
235 mstop = 2
236
237#include "lockon.inc"
238 WRITE(iout,1000) ngl(i)
239 WRITE(istdo,1000) ngl(i)
240#include "lockoff.inc"
241 150 CONTINUE
242 ENDIF
243
244 IF(nodadt/=0.OR.(idtmins==2.AND.jsms/=0))RETURN
245
246
247 idt=0
248 DO i=jft,jlt
249 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t) idt=1
250 ENDDO
251
252 IF(idt==1)THEN
253 DO i=jft,jlt
254 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)THEN
255 dt2t = dt(i)
256 neltst = ngl(i)
257 ityptst = 7
258 ENDIF
259 ENDDO
260 ENDIF
261
262 IF(idtmins==2)RETURN
263
264 DO i=jft,jlt
265 sti(i) =
area(i) * thk0(i) * a1(i) / aldt(i)**2
266 sti(i) = zep81 * zep81 * sti(i) * off(i)
267 stir(i)= zero
268 ENDDO
269
270 1000 FORMAT(1x,'-- MINIMUM TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
271 1200 FORMAT(1x,'-- DELETE 3N SHELL ELEMENT NUMBER ',i10)
272 1300 FORMAT(1x,'-- DELETE 3N SHELL ELEMENT :',i10,' AT TIME :',g11.4)
273 1400 FORMAT(1x,'-- CONSTANT TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
274
275 RETURN
subroutine cssp2a11(pm, imat, ssp, a11, nel)
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
subroutine area(d1, x, x2, y, y2, eint, stif0)