29 SUBROUTINE cdt3(JFT ,JLT ,YM ,OFF ,DT2T,
30 2 NELTST,ITYPTST,STI ,STIR ,OFFG,
31 3 DTC ,NDT ,DT2C ,IXC ,SSP ,
32 4 VISCMX,PX1 ,PX2 ,PY1 ,PY2 ,
33 5 VOL0 ,VOL00 ,RHO ,ALDT ,ALPE,
34 6 INDXOF,NGL ,ISMSTR,IOFC,MSC ,
35 7 DMELC ,JSMS ,G_DT ,DTEL)
39#include "implicit_f.inc"
59 INTEGER NDT(*),IXC(NIXC,*),INDXOF(MVSIZ),NGL(MVSIZ),
60 . JFT, JLT,NELTST,ITYPTST,NINDX,ISMSTR,IOFC, JSMS
62 . YM(*), OFF(*),(*),STIR(*),OFFG(*),DTC(*),
63 . SSP(*), DT2C(*),VISCMX(*),VOL0(*),VOL00(*),
64 . PX1(*), PX2(*), PY1(*), PY2(*), RHO(*), ALDT(*), ALPE(*),
67 my_real,
INTENT(INOUT) ::
dtel(jft:jlt)
68 INTEGER,
INTENT(IN) :: G_DT
77 IF(idtmins == 2 .AND. jsms /= 0)
THEN
79 IF(offg(i) < zero .OR. off(i) == zero) cycle
84 dmelc(i)=
max(dmelc(i),
85 . (dtmins/dtfacs)**2 * sti(i) - two*msc(i))
87 . sqrt((two*msc(i)+dmelc(i))/
max(em20,sti(i)))
98 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
102 ELSEIF(idt1sh==1.OR.idtmins==2)
THEN
104 mas = vol00(i)*rho(i)
105 dt(i) = dtfac1(3)*sqrt(half*mas/
max(em20,sti(i)))
109 aldt(i)=aldt(i)*viscmx(i)
111 dt(i)=dtfac1(3)*aldt(i)/ssp(i)
117 IF(idtmin(3) == 0)
RETURN
126 IF(idtmin(3) == 1)
THEN
129 IF(dt(i) > dtmin1(3) .OR. off(i) < one .OR. offg(i) == two .OR. offg(i) < zero) cycle
138 WRITE(iout,1000) ngl(i)
139 WRITE(istdo,1000) ngl(i)
140#include "lockoff.inc"
143 ELSEIF(idtmin(3)==2)
THEN
146 IF(dt(i)>dtmin1(3).OR.off(i)<one .OR.offg(i)<zero) cycle
156 WRITE(iout,1200) ngl(i)
157 WRITE(istdo,1300) ngl
158#include "lockoff.inc"
161 ELSEIF(idtmin(3)==3.AND.ismstr==2)
THEN
164 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
173 WRITE(iout,1400) ngl(i)
174 WRITE(istdo,1400) ngl(i)
175#include "lockoff.inc"
178 ELSEIF(idtmin(3)==5)
THEN
181 IF(dt(i)>dtmin1(3).OR.off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)cycle
190 WRITE(iout,1000) ngl(i)
191 WRITE(istdo,1000) ngl(i)
192#include "lockoff.inc"
197 IF (nodadt/=0.OR.(idtmins==2.AND.jsms/=0))
RETURN
202 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)idt=1
207 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)
THEN
215 IF (idtmins==2)
RETURN
219 sti(i) = sti(i) * off(i)
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)
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)
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)