31 3 DT2T, NELTST, ITYPTST, AIRE,
32 4 OFFG, GEO, PID, VOL,
33 5 VD2, DELTAX, VIS, D1,
35 7 MAT, NGL, QVIS, SSP_EQ,
36 8 XK, NEL, ITY, ISMSTR,
41#include "implicit_f.inc"
64 INTEGER,
INTENT(IN) :: NEL
65 INTEGER,
INTENT(IN) :: ITY
66 INTEGER,
INTENT(IN) :: ISMSTR
67 INTEGER,
INTENT(IN) :: JTUR
68 INTEGER,
INTENT(IN) :: JTHE
69 INTEGER NELTST,ITYPTST,PID(*),(*), NGL(*)
72 . PM(NPROPM,*), OFF(*), RHO(*), RK(*), T(*), RE(*),STI(*),
73 . offg(*),geo(npropg,*),
74 . vol(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
75 . psh(*), pnew(*),qvis(*) ,ssp_eq(*),
76 . d1(*), d2(*), d3(*), xk(*)
80 INTEGER I,J, MT, K, MX
83 . DD(MVSIZ), AL(MVSIZ),
84 . DTX(MVSIZ), AD(MVSIZ), QX(MVSIZ), CX(MVSIZ),
85 . QA, QB, VISI, FACQ,QAA,
86 . CNS1, CNS2, SPH, AK1, BK1, AK2, BK2, TLI, AKK, XMU, TMU, RPR,
89 . tidt,tvol,trho,taire
93 dd(i)=-d1(i)-d2(i)-d3(i)
96 cx(i)=ssp(i)+sqrt(vd2(i))
107 dd(i)=-d1(i)-d2(i)-d3(i)
120 ad(i)=
max(zero,dd(i))
127 ad(i)=
max(zero,dd(i))
139 cns2=geo(17,mx)*ssp(i)*al(i)*rho(i)
143 qx(i)=(qb+cns1)*ssp(i)+al(i) * qaa
144 . + visi*(two*vis(i)+cns2) /
max(em20,rho(i)*deltax(i))
145 qvis(i)=rho(i)*ad(i)*al(i)*(qaa*al(i)+qb*ssp(i))
153 cns2=pm(94,mt)*ssp(i)*al(i)*rho(i)
157 qx(i)=(qb+cns1)*ssp(i)+deltax(i) *qaa
158 . + visi*(2.*vis(i)+cns2) /
max(em20,rho(i)*deltax(i))
159 qvis(i)=rho(i)*ad(i)*al(i)*(qaa*al(i)+qb*ssp(i))
165 ssp_eq(i) =
max(em20,qx(i)+sqrt(qx(i)*qx(i)+cx(i)*cx(i)))
166 dtx(i) = deltax(i) / ssp_eq(i)
185 xmu = rho(i)*pm(24,mt)
188 atu=rpr*tmu*rk(i)*rk(i)/(
max(em15,re(i)*vol(i))*xmu)
191 dtx(i) =
min(dtx(i),half*deltax(i)*deltax(i)*sph/
max(akk,em20))
197 IF(off(i)==zero.OR.offg(i)<zero)
GO TO 60
202 sti(i) = fourth * trho * tvol
206 taire = aire(i) * tidt
207 sti(i) = half * trho * taire
209 dtx(i)= dtfac1(ity)*dtx(i)
210 IF(nodadt==0)dt2t=
min(dtx(i),dt2t)
213 IF(idtmin(ity)==1)
THEN
215 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.
216 . or.offg(i)<zero)
GO TO 70
220 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
222 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
223#include "lockoff.inc"
225 ELSEIF(idtmin(ity)==2)
THEN
227 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.
228 . or.offg(i)<zero)
GO TO 75
232 .
' -- DELETE SOLID ELEMENTS',ngl(i)
234 .
' -- DELETE SOLID ELEMENTS',ngl(i)
235#include "lockoff.inc"
238 ELSEIF(idtmin(ity)==3.AND.ismstr==2)
THEN
240 IF(dtx(i)>dtmin1(ity).OR.
241 . off(i)<one.OR.offg(i)==two)
GO TO 76
245 .
'-- CONSTANT TIME STEP FOR SOLID ELEMENT NUMBER ',ngl(i)
247 .
'-- CONSTANT TIME STEP FOR SOLID ELEMENT NUMBER ',ngl(i)
248#include "lockoff.inc"
250 ELSEIF(idtmin(ity)==5)
THEN
252 IF(dtx(i)>dtmin1(ity).OR.off(i)==zero.
253 . or.offg(i)<zero)
GO TO 570
257 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
259 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SOLID ELEMENTS'
260#include "lockoff.inc"
266 IF(dtx(i)>dt2t.OR.off(i)<=zero.OR.offg(i)<=zero)
GOTO 80
subroutine mqvisc26(pm, off, rho, rk, t, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, xk, nel, ity, ismstr, jtur, jthe)