32 1 JFT, JLT, OFF, DT2T,
33 2 NELTST, ITYPTST, STI, STIR,
34 3 MS, IN, MSRT, DMELRT,
35 4 G_DT, DTEL, NGL, XCR,
37 6 XKR, NC1, NC2, JSMS)
41#include "implicit_f.inc"
60 INTEGER,
INTENT(IN) :: JSMS
61 INTEGER JFT,JLT,NELTST ,ITYPTST,NGL(*),NC1(*),NC2(*)
63 . OFF(*), STI(3,*), STIR(3,*), MS(*), IN(*),
64 . MSRT(*), DMELRT(*),XCR(MVSIZ), XIN(MVSIZ),
65 . XM(MVSIZ),XKM(MVSIZ),XCM(MVSIZ),XKR(MVSIZ)
66 my_real,
INTENT(INOUT) ::
dtel(jft:jlt)
67 INTEGER,
INTENT(IN) :: G_DT
73 . dt(mvsiz),dtc(mvsiz),
74 . a, mass2, in2, b, dta, dtb, mx
76 IF(nodadt/=0.OR.idtmins==2)
THEN
84 IF(ms(nc1(i))/=zero)
THEN
85 mass2 = two * ms(nc1(i))
89 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
91 sti(1,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
92 ELSEIF(xkm(i)/=zero)
THEN
94 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)
THEN
104 IF(xkm(i)/=zero.AND.xcm(i)/=zero.AND.
106 sti(2,i) = (xcm(i) + sqrt(xcm(i)**2+xkm(i)*mass2))**2/mass2
107 ELSEIF(xkm(i)/=zero
THEN
109 ELSEIF(xcm(i)/=zero.AND.mass2/=zero)
THEN
114 IF(in(nc1(i))/=zero)
THEN
115 in2 = two * in(nc1(i))
119 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
121 stir(1,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
122 ELSEIF(xkr(i)/=zero)
THEN
124 ELSEIF(xcr(i)/=zero.AND.in2/=zero)
THEN
129 IF(in(nc2(i))/=zero)
THEN
130 in2 = two * in(nc2(i))
134 IF(xkr(i)/=zero.AND.xcr(i)/=zero.AND.
136 stir(2,i) = (xcr(i) + sqrt(xcr(i)**2+xkr(i)*in2))**2/in2
137 ELSEIF(xkr(i)/=zero)
THEN
139 ELSEIF(xcr(i)/=zero.AND.in2/=zero)
THEN
146 IF(idtmin(6)==0.AND.(idtmins/=2.OR.jsms==0))
RETURN
148 IF(idtmins==2.AND.jsms/=0)
THEN
155 IF(off(i)<=zero) cycle
156 dmelrt(i)=
max(dmelrt(i),
157 . xcm(i)*dta+half*xkm(i)*dtb-half*msrt(i))
160 mx =msrt(i)+two*dmelrt(i)
162 IF(xcm(i)+xkm(i)<em15)mx =one
163 xkm(i)=
max(em15,xkm(i))
166 . mx /
max(em15,sqrt(xcm(i)*xcm(i)+mx*xkm(i))+xcm(i))
170 IF(off(i)<=zero) cycle
180 IF(xcm(i)+xkm(i)<em15)xm(i) =one
181 xkm(i)=
max(em15,xkm(i))
182 dt(i)=xm(i)/
max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
183 IF(xcr(i)+xkr(i)<em15)xin(i)=one
184 xkr(i)=
max(em15,xkr(i))
185 dtc(i)=xin(i)/
max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
186 dt(i)=
min(dt(i),dtc(i))
191 dt(i)=dtfac1(6)*dt(i)
192 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))
THEN
196 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
198 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
199#include "lockoff.inc"
200 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))
THEN
204 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
206 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
207#include "lockoff.inc"
208 ELSEIF(idtmin(6)==2.AND.dt(i)<dtmin1(6))
THEN
211 WRITE(iout,*)
'-- DELETE OF SPRING ELEMENT NUMBER',ngl(i)
212#include "lockoff.inc"
222 IF(xcm(i)+xkm(i)<em15)xm(i) =one
223 xkm(i)=
max(em15,xkm(i))
224 dt(i)=xm(i)/
max(em15,sqrt(xcm(i)*xcm(i)+xm(i)*xkm(i))+xcm(i))
233 sti(1,i) = xm(i) / dt(i)**2
239 IF(xcr(i)+xkr(i)<em15)xin(i)=one
240 xkr(i)=
max(em15,xkr(i))
241 dtc(i)=xin(i)/
max(em15,sqrt(xcr(i)*xcr(i)+xin(i)*xkr(i))+xcr(i))
242 dt(i)=
min(dt(i),dtc(i))
247 dt(i)=dtfac1(6)*dt(i)
248 IF(idtmin(6)==1.AND.dt(i)<dtmin1(6))
THEN
252 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
254 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
255#include "lockoff.inc"
256 ELSEIF(idtmin(6)==5.AND.dt(i)<dtmin1(6))
THEN
260 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
262 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPRING ELEMENT'
263#include "lockoff.inc"
264 ELSEIF(idtmin(6)==2.AND.dt(i)<dtmin1(6))
THEN
267 WRITE(iout,*)
'-- DELETE OF SPRING ELEMENT NUMBER',ngl(i)
268#include "lockoff.inc"
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
subroutine r2len3(jft, jlt, off, dt2t, neltst, ityptst, sti, stir, ms, in, msrt, dmelrt, g_dt, dtel, ngl, xcr, xin, xm, xkm, xcm, xkr, nc1, nc2, jsms)