35 4 DVOL, VD2, DELTAX, VIS,
37 6 NGL, GEO, PID, DT2T,
38 7 NELTST, ITYPTST, OFFG, MSSA,
39 8 DMELS, NEL, ITY, JTUR,
44#include "implicit_f.inc"
68 INTEGER,
INTENT(IN) :: ITY
69 INTEGER,
INTENT(IN) :: JTUR
70 INTEGER,
INTENT(IN) :: JTHE
71 INTEGER,
INTENT(IN) :: JSMS
75 . PM(NPROPM,*), OFF(MVSIZ) , RHO(NEL) , RK(MVSIZ) , T(MVSIZ),
76 . RE(MVSIZ) , STI(*) , EINT(NEL),
77 . d1(mvsiz,8) , d2(mvsiz,8), d3(mvsiz,8),
78 . vol(mvsiz) , dvol(mvsiz),
79 . vd2(mvsiz) ,deltax(mvsiz),vis(mvsiz),qold(nel), ssp(mvsiz),
80 . geo(npropg,*) , dt2t , offg(*), mssa(*), dmels(*)
81 INTEGER MAT(MVSIZ),NC(8,),NGL(MVSIZ), PID(*), NELTST,ITYPTST
88 . DD(MVSIZ), AL(MVSIZ), (MVSIZ), DTY(MVSIZ),
89 . AD(MVSIZ), QX(MVSIZ), CX(MVSIZ),QVIS(MVSIZ),
91 . cns1, cns2, sph, ak1, bk1, ak2, bk2, tli, akk, xmu, tmu, rpr,
102 5 dd(i)=dd(i)- one_over_8*(d1(i,ipt)+d2(i,ipt)+d3(i,ipt))
106 10 cx(i)=ssp(i)+sqrt(vd2(i))
109 IF(impl_s>0.AND.idyna==0)
THEN
120 15 cx(i)=sqrt(vd2(i))
128 IF(off(i)<one.OR.offg(i)<=zero)
GO TO 20
131 ad(i)=
max(zero,dd(i))*al(i)
136 qa =facq*geo(14,pid(i))
137 qb =facq*geo(15,pid(i))
139 cns2=geo(17,pid(i))*ssp(i)*al(i)*rho(i)
140 qx(i)=(qb+cns1)*ssp(i)+qa*qa*deltax(i) *
max(zero,dd(i))
141 . + visi*(two*vis(i)+cns2)
142 . /
max(em20,rho(i)*deltax(i))
143 qvis(i)=rho(i)*ad(i)*(qa*qa*ad(i)+qb*ssp(i))
151 cns2=pm(94,mt)*ssp(i)*al(i)*rho(i)
154 qx(i)=(qb+cns1)*ssp(i)+qa*qa*deltax(i) *
max(zero,dd(i))
155 . + visi*(two*vis(i)+cns2
156 . /
max(em20,rho(i)*deltax(i))
157 qvis(i)=rho(i)*ad(i)*(qa*qa*ad(i)+qb*ssp(i))
163 .
max(em20,qx(i)+sqrt(qx(i)*qx(i)+cx(i)*cx(i)))
180 xmu = rho(i)*pm(24,mt)
183 atu=rpr*tmu*rk(i)**2/(
max(em15,re(i)*vol(i))*xmu)
186 dtx(i) =
min(dtx(i),half*deltax(i)**2*sph/akk)
192 IF(.NOT.(idtmins==2.AND.jsms/=0))
THEN
194 eint(i)=eint(i)+half*off(i)*dvol(i)*(-qold(i)-qvis(i))
198 sti(i) = off(i) * rho(i) * vol(i) / dtx(i)**2
199 dtx(i)= dtfac1(ity)*dtx(i)
204 IF(off(i)==zero.OR.offg(i)<zero) cycle
216 dtx(i)= dtfac1(ity)*dtx(i)
221 IF(idtmin(ity)==1)
THEN
223 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.OR.
224 . offg(i)<zero)
GO TO 70
228 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
230 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
231#include "lockoff.inc"
233 ELSEIF(idtmin(ity)==2)
THEN
235 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.OR.
236 . offg(i)<zero)
GO TO 75
240 .
' -- DELETE SOLID ELEMENTS',ngl(i)
242 .
' -- DELETE SOLID ELEMENTS',ngl(i)
243#include "lockoff.inc"
246 ELSEIF(idtmin(ity)==5)
THEN
248 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.OR.
249 . offg(i)<zero)
GO TO 570
253 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
255 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
256#include "lockoff.inc"
261 IF(idtmins == 2 .AND. jsms /= 0)
THEN
263 eint(i)=eint(i)+half*off(i)*dvol(i)*(-qold(i)-qvis(i))
267 sti(i) = off(i) * rho(i) * vol
273 dmels(i)=
max(dmels(i),
274 . two*mssa(i)*((dtmins/(dtfacs*dty(i)))**2 - one))
275 dtx(i)=dtfacs*sqrt(one+dmels(i)/(two*mssa(i)))*dty(i)
279 IF(off(i)==zero.OR.offg(i)<zero) cycle
subroutine mqvisc8(pm, off, rho, rk, t, re, sti, eint, d1, d2, d3, vol, dvol, vd2, deltax, vis, qold, ssp, mat, nc, ngl, geo, pid, dt2t, neltst, ityptst, offg, mssa, dmels, nel, ity, jtur, jthe, jsms)