31 SUBROUTINE c3dt3(JFT ,JLT ,PM ,OFF ,DT2T ,
32 2 NELTST,ITYPTST,STI ,STIR ,OFFG ,
33 3 SSP ,VISCMX ,ISMSTR ,NFT ,IOFC ,
34 4 ALPE ,MSTG ,DMELTG ,JSMS ,PTG ,
35 5 SHF ,IGTYP ,IGMAT ,G ,A1 ,
36 6 A11R ,G_DT ,DTEL ,ALDT ,THK0 ,
37 7 AREA ,NGL ,IMAT ,MTN ,NEL ,
42#include "implicit_f.inc"
62 INTEGER JFT, JLT,NELTST,ITYPTST,ISMSTR,NFT,IOFC, JSMS,IGTYP,
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
70 my_real,
DIMENSION(JLT),
INTENT(INOUT) :: DTEL
71 my_real,
DIMENSION(NEL),
INTENT(IN) :: zoffset
72 my_real,
DIMENSION(NEL),
INTENT(IN) :: ssp_eq
76 INTEGER INDX(MVSIZ),I, II, NINDX,IDT,IFLAG
78 my_real athk, mmin,fac,f_oset(nel),f_dte(nel)
81 viscmx(i) = sqrt(one + viscmx(i)*viscmx(i)) - viscmx(i)
82 aldt(i) = aldt(i)*viscmx(i) / sqrt(alpe(i))
90 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
91 . .AND. igmat > 0 ))
THEN
93 IF (off(i)==zero)
THEN
97 athk = area(i) * thk0(i)
98 sti(i) = athk * a1(i) / aldt(i)**2
99 fac =a11r(i)*area(i)/ aldt(i)**2
100 stir(i) = fac*(one_over_12* thk0(i)**3 + thk0(i)*zoffset(i)*zoffset(i)
101 . + thk0(i)*half * shf(i) * area(i) * g(i)/a1(i))
105 f_oset(jft:jlt)= one + zep2*abs(zoffset(jft:jlt))/thk0(jft:jlt)
110 IF (mtn == 58 .or. mtn == 158)
THEN
112 CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt ,iflag)
113 ELSEIF (mtn == 42 .or. mtn == 62 .or. mtn == 69 .or. mtn
THEN
115 CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt ,iflag)
117 fac =
max(ssp_eq(i),ssp(i))/ssp(i)
118 f_oset(i) = fac*fac*f_oset(i)
122 IF (off(i)==zero)
THEN
126 athk = area(i) * thk0(i)
127 sti(i) = athk *f_oset(i)* a1(i) / aldt(i)**2
128 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
129 . + half * shf(i) * area(i) * g(i)/a1(i))
130 . + sti(i)*zoffset(i)*zoffset(i)
138 ELSEIF(idtmins == 2)
THEN
140 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
141 . .AND. igmat > 0 ))
THEN
143 IF (off(i)==zero)
THEN
147 athk = area(i) * thk0(i)
148 sti(i) = athk * a1(i) / aldt(i)**2
149 fac = a11r(i)*area(i)/ aldt(i)**2
150 stir(i) = fac * (one_over_12* (thk0(i)**3) + thk0(i)*zoffset(i)*zoffset(i)
151 . + half * thk0(i)*shf(i) * area(i) * g(i)/a1(i))
160 IF (off(i)==zero)
THEN
164 athk = area(i) * thk0(i)
165 sti(i) = athk * a1(i) / aldt(i)**2
166 stir(i) = sti(i) * (thk0(i) * thk0(i) * one_over_12
167 . + half * shf(i) * area(i) * g(i)/a1(i))
174 IF(offg(i) < zero .OR. off(i) == zero) cycle
176 mmin=mstg(i)*
min(ptg(1,i),ptg(2,i),ptg(3,i))
181 dmeltg(i)=
max(dmeltg(i),
182 . (dtmins/dtfacs)**2 * sti(i) - two*mmin)
184 . sqrt((two*mmin+dmeltg(i))/
max(em20,sti(i)))
194 f_oset(jft:jlt)= one + zep2*abs(zoffset(jft:jlt))/thk0(jft:jlt)
195 IF(igtyp==1.OR.igtyp==9)
THEN
197 f_dte(i) = one/sqrt(f_oset(i))
200 IF (mtn == 42 .or. mtn == 62 .or. mtn == 69)
THEN
202 fac = ssp(i)/
max(ssp_eq(i),ssp(i))
203 f_dte(i) = fac*f_dte(i)
206 fac =
max(ssp_eq(i),ssp(i))/ssp(i)
207 f_oset(i) = fac*fac*f_oset(i)
213 dt(i)=dtfac1(7)*f_dte(i)*aldt(i)/ssp(i)
221 IF (idtmin(7)==0)
RETURN
226 IF(dt(i)>dtmin1(7).OR.off(i)<one
227 . .OR.offg(i)==two.OR.offg(i)<zero)
GO TO 100
231 WRITE(iout,1000) ngl(i)
232 WRITE(istdo,1000) ngl(i)
233#include "lockoff.inc"
235 ELSEIF(idtmin(7)==2)
THEN
237 IF(dt(i)>dtmin1(7).OR.off(i)<one
238 . .OR.offg(i)<zero)
GO TO 120
247 WRITE(iout,1200) ngl(i)
248 WRITE(istdo,1300) ngl(i),tt
249#include "lockoff.inc"
252 ELSEIF(ismstr==2.AND.idtmin(7)==3)
THEN
254 IF(dt(i)>dtmin1(7).OR.
255 . off(i)<one.OR.offg(i)==two.OR.offg(i)<zero)
GO TO 140
259 WRITE(iout,1400) ngl(i)
260 WRITE(istdo,1400) ngl(i)
261#include "lockoff.inc"
263 ELSEIF(idtmin(7)==5)
THEN
265 IF(dt(i)>dtmin1(7).OR.off(i)<one.
266 . or.offg(i)==two.OR.offg(i)<zero)
GO TO 150
270 WRITE(iout,1000) ngl(i)
271 WRITE(istdo,1000) ngl(i)
272#include "lockoff.inc"
276 IF(nodadt/=0.OR.(idtmins==2.AND.jsms/=0))
RETURN
281 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t) idt=1
286 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)
THEN
297 sti(i) = area(i) * thk0(i) * f_oset(i) * a1(i) / aldt(i)**2
298 sti(i) = zep81 * zep81 * sti(i) * off(i)
302 1000
FORMAT(1x,
'-- MINIMUM TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
303 1200
FORMAT(1x,
'-- DELETE 3N SHELL ELEMENT NUMBER ',i10)
304 1300
FORMAT(1x,
'-- DELETE 3N SHELL ELEMENT :',i10,
' AT TIME :',g11.4)
305 1400
FORMAT(1x,
'-- CONSTANT TIME STEP 3N SHELL ELEMENT NUMBER ',i10)
subroutine c3dt3(jft, jlt, pm, off, dt2t, neltst, ityptst, sti, stir, offg, ssp, viscmx, ismstr, nft, iofc, alpe, mstg, dmeltg, jsms, ptg, shf, igtyp, igmat, g, a1, a11r, g_dt, dtel, aldt, thk0, area, ngl, imat, mtn, nel, zoffset, ssp_eq)