34 SUBROUTINE cndt3(JFT ,JLT ,OFF ,DT2T ,AMU ,
35 1 NELTST,ITYPTST ,STI ,STIR ,OFFG,
36 2 SSP ,VISCMX ,RHO ,VOL0 ,THK0,THK02,
37 3 A1 ,ALDT ,ALPE ,NGL ,ISMSTR,
38 4 IOFC ,NNE ,AREA ,G ,SHF ,
39 5 MSC ,DMELC ,JSMS ,PTG ,IGTYP ,
40 6 IGMAT ,A11R ,G_DT ,DTEL ,MTN ,
41 7 PM ,IMAT ,NEL ,ZOFFSET,SSP_EQ)
45#include "implicit_f.inc"
66 INTEGER JFT, JLT,NELTST,ITYPTST,ISMSTR,IOFC,NNE, JSMS,IGTYP
67 INTEGER NGL(*),IGMAT,G_DT,MTN,IMAT
68 INTEGER ,
INTENT(IN) :: NEL
70 my_real OFF(*),STI(*),STIR(*),OFFG(*),SSP(*),AMU(*),
71 . ALDT(*), ALPE(*), A1(*), THK0(*),THK02(*),
72 . VOL0(*), VISCMX(*), RHO(*),DT2T, AREA(*), G(*), SHF(*),
73 . msc(*), dmelc(*), ptg(3,*),a11r(*),
dtel(mvsiz)
74 my_real,
DIMENSION(NPROPM,NUMMAT) ,
INTENT(IN):: pm
75 my_real,
DIMENSION(NEL) ,
INTENT(IN) :: zoffset
76 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: ssp_eq
80 INTEGER INDXOF(MVSIZ),
81 . i, j, nindx,idt,ityel,iflag
82 my_real dt(mvsiz),fac,divm,mmin ,f_oset(nel),f_dte(nel)
85 viscmx(i) =
max(viscmx(i), amu(i))
86 viscmx(i) = sqrt(one + viscmx(i)*viscmx(i)) - viscmx(i)
87 aldt(i) = aldt(i) * viscmx(i) / sqrt(alpe(i))
97 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
98 . .AND. igmat > 0 ))
THEN
101 f_oset(jft:jlt)= one + zep2*abs(zoffset(jft:jlt))/thk0(jft:jlt)
102 IF (mtn == 58 .or. mtn == 158)
THEN
104 CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt ,iflag)
105 ELSEIF (mtn == 42 .or. mtn == 62 .or. mtn == 69 .or. mtn == 88)
THEN
107 CALL cssp2a11(pm ,imat ,ssp ,a1 ,jlt ,iflag)
109 fac =
max(ssp_eq(i),ssp(i))/ssp(i)
110 f_oset(i) = fac*fac*f_oset(i)
115 f_oset(jft:jlt)= one + zep2*abs(zoffset(jft:jlt))/thk0(jft:jlt)
116 IF(igtyp==1.OR.igtyp==9)
THEN
119 f_dte(i) = one/sqrt(fac)
122 IF (mtn == 42 .or. mtn == 62 .or. mtn == 69 .or. mtn == 88)
THEN
124 fac = ssp(i)/
max(ssp_eq(i),ssp(i))
125 f_dte(i) = fac*f_oset(i)
128 fac =
max(ssp_eq(i),ssp(i))/ssp(i)
129 f_oset(i) = fac*fac*f_oset(i)
136 IF (off(i)==zero)
THEN
140 sti(i) = half*vol0(i) * a1(i) / aldt(i)**2
142 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
143 . .AND. igmat > 0 ))
THEN
144 fac = half*vol0(i)/ aldt(i)**2
145 stir(i) =fac * a11r(i)*(thk02(i)*one_over_12 + zoffset(i)*zoffset(i))
146 . + fac * a1(i) *area(i)*one_over_12
148 stir(i) = sti(i) * (thk02(i)+area(i)) *one_over_12
149 . + sti(i)*zoffset(i)*zoffset(i)
157 IF(offg(i) < zero .OR. off(i) == zero) cycle
162 dmelc(i)=
max(dmelc(i),
163 . (dtmins/dtfacs)**2 * sti(i) - two*msc(i))
165 . sqrt((two*msc(i)+dmelc(i))/
max(em20,sti(i)))
174 IF(offg(i) < zero .OR. off(i) == zero) cycle
176 mmin=msc(i)*
min(ptg(1,i),ptg(2,i),ptg(3,i))
181 dmelc(i)=
max(dmelc(i),
182 . (dtmins/dtfacs)**2 * sti(i) - two*mmin)
184 . sqrt((two*mmin+dmelc(i))/
max(em20,sti(i)))
193 ELSEIF(nodadt/=0)
THEN
195 . ((igtyp == 11 .OR. igtyp == 17 .OR. igtyp == 51)
196 . .AND. igmat > 0 ))
THEN
198 IF (off(i)==zero)
THEN
202 sti(i) = half*vol0(i) * a1(i) / aldt(i)**2
203 fac = half*vol0(i)/ aldt(i)**2
204 stir(i) = fac*a11r(i)*(thk02(i)*one_over_12 + zoffset(i)*zoffset(i))
205 . + fac *a1(i)*area(i)*one_over_12
210 IF (off(i)==zero)
THEN
214 sti(i) = half*f_oset(i)*vol0(i) * a1(i) / aldt(i)**2
215 stir(i) = sti(i) * (thk02(i)+area(i)) *one_over_12
216 . + sti(i)*zoffset(i)*zoffset(i)
223 dt(i)=dtfac1(ityel)*f_dte(i)*aldt(i)/ssp(i)
227 dtel(i)=f_dte(i)*aldt(i)/ssp(i)
230 IF((nodadt/=0.OR.idtmins==2).AND.idtmin(ityel)==0)
RETURN
232 IF(idtmin(ityel)>=1)
THEN
235 IF(dt(i)<=dtmin1(ityel).AND.
236 . off(i)>=one.AND.offg(i)/=two.AND.offg(i)>=zero)
THEN
243 IF(idtmin(ityel)==1)
THEN
245 IF(nindx>iofc) mstop = 2
247 DO 100 j=iofc+1,nindx
250 WRITE(iout,1000) nne,ngl(i)
251 WRITE(istdo,1000) nne,ngl(i)
252#include "lockoff.inc"
254 ELSEIF(idtmin(ityel)==2)
THEN
255 IF(nindx>iofc) idel7nok = 1
256 DO 125 j=iofc+1,nindx
260 WRITE(iout,1200) nne,ngl(i)
261 WRITE(istdo,1300) nne,ngl(i),tt
262#include "lockoff.inc"
265 ELSEIF(idtmin(ityel)==3.AND.ismstr==2)
THEN
266 DO 140 j=iofc+1,nindx
270 WRITE(iout,1400) nne,ngl(i)
271 WRITE(istdo,1400) nne,ngl(i)
272#include "lockoff.inc"
275 ELSEIF(idtmin(ityel)==5)
THEN
276 IF(nindx>iofc) mstop = 2
277 DO 160 j=iofc+1,nindx
280 WRITE(iout,1000) nne,ngl(i)
281 WRITE(istdo,1000) nne,ngl(i)
282#include "lockoff.inc"
288 1000
FORMAT(1x,
'--MINIMUM TIME STEP ',i1,
'N SHELL ELEMENT NUMBER ',i10)
289 1200
FORMAT(1x,
'--DELETE ',i1,
'N SHELL ELEMENT NUMBER ',i10)
290 1300
FORMAT(1x,
'--DELETE ',i1
',N SHELL ELEMENT:',i10,
' AT TIME:',g11.4)
291 1400
FORMAT(1x,
'--CONSTANT TIME STEP ',i1,
'N SHELL ELEMENT NUMBER',i10)
293 IF(nodadt/=0.OR.(idtmins==2.AND.jsms/=0))
RETURN
298 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t) idt=1
303 IF(offg(i)>zero.AND.off(i)/=zero.AND.dt(i)<dt2t)
THEN
314 divm=
max(aldt(i)*aldt(i),em20)
315 sti(i) = half*f_oset(i)*vol0(i) * a1(i)* off(i) / divm
subroutine cndt3(jft, jlt, off, dt2t, amu, neltst, ityptst, sti, stir, offg, ssp, viscmx, rho, vol0, thk0, thk02, a1, aldt, alpe, ngl, ismstr, iofc, nne, area, g, shf, msc, dmelc, jsms, ptg, igtyp, igmat, a11r, g_dt, dtel, mtn, pm, imat, nel, zoffset, ssp_eq)