31 SUBROUTINE cdt3(JFT ,JLT ,YM ,OFF ,DT2T,
32 2 NELTST,ITYPTST,STI ,STIR ,OFFG,
33 3 DTC ,NDT ,DT2C ,IXC ,SSP ,
34 4 VISCMX,PX1 ,PX2 ,PY1 ,PY2 ,
35 5 VOL0 ,VOL00 ,RHO ,ALDT ,ALPE,
36 6 INDXOF,NGL ,ISMSTR,IOFC,MSC ,
37 7 DMELC ,JSMS ,G_DT ,DTEL)
38 use element_mod ,
only : nixc
42#include "implicit_f.inc"
62 INTEGER NDT(*),IXC(NIXC,*),INDXOF(MVSIZ),NGL(MVSIZ),
63 . JFT, ,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(*),
70 my_real,
INTENT(INOUT) ::
dtel(jft:jlt)
71 INTEGER,
INTENT(IN) :: G_DT
80 IF(idtmins == 2 .AND. jsms /= 0)
THEN
82 IF(offg(i) < zero .OR. off(i) == zero) cycle
87 dmelc(i)=
max(dmelc(i),
88 . (dtmins/dtfacs)**2 * sti(i) - two*msc(i))
90 . sqrt((two*msc(i)+dmelc(i))/
max(em20,sti(i)))
100 mas = vol00(i)*rho(i)
101 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
105 ELSEIF(idt1sh==1.OR.idtmins==2)
THEN
107 mas = vol00(i)*rho(i)
108 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
112 aldt(i)=aldt(i)*viscmx(i)
114 dt(i)=dtfac1(3)*aldt(i)/ssp(i)
120 IF(idtmin(3) == 0)
RETURN
129 IF(idtmin(3) == 1)
THEN
132 IF(dt(i) > dtmin1(3) .OR. off(i) < one .OR. offg(i) == two .OR. offg(i) < zero) cycle
141 WRITE(iout,1000) ngl(i)
142 WRITE(istdo,1000) ngl(i)
143#include "lockoff.inc"
146 ELSEIF(idtmin(3)==2)
THEN
149 IF(dt(i)>dtmin1(3).OR.off(i)<one .OR.offg(i)<zero) cycle
159 WRITE(iout,1200) ngl(i)
160 WRITE(istdo,1300) ngl(i),tt
161#include "lockoff.inc"
164 ELSEIF(idtmin(3)==3.AND.ismstr==2)
THEN
167 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
176 WRITE(iout,1400) ngl(i)
177 WRITE(istdo,1400) ngl(i)
178#include "lockoff.inc"
181 ELSEIF(idtmin(3)==5)
THEN
184 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
193 WRITE(iout,1000) ngl(i)
194 WRITE(istdo,1000) ngl(i)
195#include "lockoff.inc"
200 IF (nodadt/=0.OR.(idtmins==2.AND.jsms/=0))
RETURN
205 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)idt=1
210 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)
THEN
218 IF (idtmins==2)
RETURN
222 sti(i) = sti(i) * off(i)
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)
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)
subroutine cdt3(jft, jlt, ym, off, dt2t, neltst, ityptst, sti, stir, offg, dtc, ndt, dt2c, ixc, ssp, viscmx, px1, px2, py1, py2, vol0, vol00, rho, aldt, alpe, indxof, ngl, ismstr, iofc, msc, dmelc, jsms, g_dt, dtel)
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)