40 3 NELTST, ITYPTST, OFFG, GEO,
41 4 PID, MUMAX, SSP, VOL,
42 5 VD2, DELTAX, VIS, D1,
44 7 MAT, NGL, QVIS, SSP_EQ,
45 8 G_DT, DTSPH, NEL, ITY,
50#include "implicit_f.inc"
69 INTEGER,
INTENT(IN) :: NEL
70 INTEGER,
INTENT(IN) :: ITY
71 INTEGER,
INTENT(IN) :: JTUR
72 INTEGER,
INTENT(IN) :: JTHE
73 INTEGER NELTST,ITYPTST,PID(*),MAT(*), NGL(*)
77 . PM(NPROPM,*), OFF(*), RHO(*), RK(*), T(*),
78 . re(*),sti(*),offg(*),geo(npropg,*),mumax(*),
79 . vol(*), vd2(*), deltax(*), ssp(*), vis(*),
80 . psh(*), pnew(*),qvis(*) ,ssp_eq(*), d1(*),
82 my_real,
INTENT(INOUT) ::
dtsph(1:nel)
83 INTEGER,
INTENT(IN) :: G_DT
89 . AL(MVSIZ),DTX(MVSIZ), QX(MVSIZ), CX(MVSIZ), QXMATER(MVSIZ),
91 . cns1, cns2, sph, ak1, bk1, ak2, bk2, tli, akk, xmu, tmu, rpr,
98 cx(i)=ssp(i)+sqrt(vd2(i))
120 qa =facq*geo(14,pid(i))
121 qb =facq*geo(15,pid(i))
123 cns2=geo(17,pid(i))*ssp(i)*al(i)*rho(i)
126 qxmater(i)=cns1*ssp(i) + visi*(two*vis(i)+cns2) /
max(em20,rho(i)*deltax(i))
127 qx(i)=qb*ssp(i) + qa*mumax(i) + qxmater(i)
132 dtx(i)=deltax(i)/
max(em20,qx(i)+sqrt(qx(i)*qx(i)+cx(i)*cx(i)))
134 ssp_eq(i) =
max(em20,qxmater(i)+sqrt(qxmater(i)*qxmater(i)+cx(i)*cx(i)))
152 xmu = rho(i)*pm(24,mt)
155 atu=rpr*tmu*rk(i)*rk(i)/(
max(em15,re(i)*vol
158 dtx(i) =
min(dtx(i),half*deltax(i)*deltax(i)*sph/akk)
164 IF(off(i)==zero) cycle
165 sti(i) = two*rho(i) * vol(i) / (dtx(i)*dtx(i))
166 dtx(i)= dtfac1(ity)*dtx(i)
168 IF(nodadt==0)dt2t=
min(dtx(i),dt2t)
179 IF(idtmin(ity)==1)
THEN
181 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero)
GO TO 170
184 WRITE(iout,*)
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
185 WRITE(istdo,*)
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
186#include "lockoff.inc"
188 ELSEIF(idtmin(ity)==2)
THEN
190 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero)
GO TO 270
193 WRITE(iout,*)
' -- DELETE SPH PARTICLE',ngl(i)
194 WRITE(istdo,*)
' -- DELETE SPH PARTICLE',ngl(i)
195#include "lockoff.inc"
197 ELSEIF(idtmin(ity)==5)
THEN
199 IF(dtx(i)>dtmin1(ity).OR.off(i)==0.)
GO TO 570
203 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
205 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
206#include "lockoff.inc"
211 IF(dtx(i)>dt2t.OR.off(i)==zero) cycle
subroutine dtsph(ssp, pm, geo, pid, mat, rho0, vis, deltax, vol, dtx)
subroutine mdtsph(pm, off, rho, rk, t, re, sti, dt2t, neltst, ityptst, offg, geo, pid, mumax, ssp, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, g_dt, dtsph, nel, ity, jtur, jthe)