43
44
45
46 USE elbufdef_mod
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58#include "param_c.inc"
59
60
61
62 INTEGER, INTENT(IN) :: ITY
63 INTEGER, INTENT(IN) :: NPT
64 INTEGER, INTENT(IN) :: JTUR
65 INTEGER, INTENT(IN) :: JTHE
66 INTEGER, INTENT(IN) :: JSMS
67 INTEGER MAT(MVSIZ),NC(8,MVSIZ),NGL(MVSIZ),PID(MVSIZ)
68 INTEGER NEL,NELTST,ITYPTST
69
71 . pm(npropm,*),
72 . off(mvsiz) ,sig(nel,6), eint(nel), rho(nel) , qold(nel),
73 . vol(nel) ,rk(*) , t(*) , re(*) , stifn(*) ,
74 . d1(*) , d2(*) , d3(*) ,
75 . vnew(mvsiz), deltax(mvsiz) , rho0(mvsiz), dvol(mvsiz),
76 . vd2(mvsiz) , vis(mvsiz),geo(npropg,*), dt2t, offg(*),
77 . mssa(*) , dmels(*) , ssp(mvsiz)
78 TYPE (BUF_LAY_), TARGET :: BUFLY
79
80
81
82 INTEGER ,J,II,JPT,IPT,MX,JJ(6)
83
85 . amu(mvsiz), amu2(mvsiz), espe(mvsiz),
86 . c1(mvsiz), c2(mvsiz), c3(mvsiz), c4(mvsiz),
87 . c5(mvsiz), c6(mvsiz), g(mvsiz) , pold(mvsiz), dpdm(mvsiz),
88 . a(mvsiz) , b(mvsiz) , pc(mvsiz), pnew(mvsiz), df(mvsiz),
89 . psh(mvsiz),
90 . dvv
92 . DIMENSION(:), POINTER :: sigp
93 TYPE(L_BUFEL_) ,POINTER :: LBUF
94
95 mx =mat(1)
96
97 DO j=1,6
98 jj(j) = nel*(j-1)
99 ENDDO
100
101 DO i=1,nel
102 g(i) =pm(22,mx)
103 c1(i) =pm(31,mx)
104 c2(i) =pm(32,mx)
105 c3(i) =pm(33,mx)
106 c4(i) =pm(34,mx)
107 c5(i) =pm(35,mx)
108 c6(i) =pm(36,mx)
109 pc(i) =pm(37,mx)
110 psh(i) =pm(88,mx)
111 ENDDO
112
113 DO i=1,nel
114 pold(i)=(sig(i,1)+sig(i,2)+sig(i,3)) * third
115 sig(i,1)=zero
116 sig(i,2)=zero
117 sig(i,3)=zero
118 sig(i,4)=zero
119 sig(i,5)=zero
120 sig(i,6)=zero
121 ENDDO
122
123 DO i=1,nel
124 df(i) =rho0(i)/rho(i)
125 amu(i) =one/df(i)-one
126 amu2(i)=
max(zero,amu(i))**2
127 espe(i)=df(i)*eint(i)/
max(em15,vnew(i))
128 ENDDO
129
130
131
132 DO i=1,nel
133 dpdm(i)=onep333*g(i)
134 . +c2(i)+two*c3(i)*
max(zero,amu(i))+three*c4(i)*amu(i)
135 . +c6(i)*espe(i)
136 . +(c5(i)+c6(i)*amu(i))*df(i)*df(i)*
137 . (psh(i)+c1(i)+(c2(i)+c4(i)*amu(i)*amu(i))*amu(i)+c3(i)*amu2(i)+
138 . (c5(i)+c6(i)*amu(i))*espe(i))
139 ENDDO
140
141 DO i=1,nel
142 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
143 ENDDO
144
145
146
148 1 pm, off, rho, rk,
149 2 t, re, stifn, eint,
150 3 d1, d2, d3, vnew,
151 4 dvol, vd2, deltax, vis,
152 5 qold, ssp, mat, nc,
153 6 ngl, geo, pid, dt2t,
154 7 neltst, ityptst, offg, mssa,
155 8 dmels, nel, ity, jtur,
156 9 jthe, jsms)
157
158
159
160 DO i=1,nel
161 eint(i)=eint(i)+half*dvol(i)*(pold(i)-psh(i))*off(i)
162 espe(i)=df(i)*eint(i)/
max(em15,vnew(i))
163 ENDDO
164
165 DO i=1,nel
166 a(i)=c1(i)+amu(i)*(c2(i)+c4(i)*amu(i)*amu(i))+c3(i)*amu2(i)
167 b(i)=c5(i)+c6(i)*amu(i)
168 ENDDO
169
170 DO i=1,nel
171 dvv=half*dvol(i)*df(i) /
max(em15,vnew(i))
172 pnew(i)=(a(i)+(espe(i)-psh(i)*dvv)*b(i))/(one + b(i)*dvv)
173 pnew(i)=
max(pnew(i),pc(i))*off(i)
174 ENDDO
175
176 DO i=1,nel
177 eint(i)=eint(i) - half*dvol(i)*(pnew(i)+psh(i))
178 ENDDO
179
180
181
182 DO ipt=1,npt
183 lbuf => bufly%LBUF(1,1,ipt)
184 sigp => bufly%LBUF(1,1,ipt)%SIG(1:nel*6)
185 jpt=(ipt-1)*nel
186 DO i=1,nel
187 sigp(jj(1)+i)= sigp(jj(1)+i)-pnew(i)
188 sigp(jj(2)+i)= sigp(jj(2)+i)-pnew(i)
189 sigp(jj(3)+i)= sigp(jj(3)+i)-pnew(i)
190 sigp(jj(4)+i)= sigp(jj(4)+i)
191 sigp(jj(5)+i)= sigp(jj(5)+i)
192 sigp(jj(6)+i)= sigp(jj(6)+i)
193 ENDDO
194
195
196
197 DO i=1,nel
198 sig(i,1)=sig(i,1)+one_over_8*sigp(jj(1)+i)
199 sig(i,2)=sig(i,2)+one_over_8*sigp(jj(2)+i)
200 sig(i,3)=sig(i,3)+one_over_8*sigp(jj(3)+i)
201 sig(i,4)=sig(i,4)+one_over_8*sigp(jj(4)+i)
202 sig(i,5)=sig(i,5)+one_over_8*sigp(jj(5)+i)
203 sig(i,6)=sig(i,6)+one_over_8*sigp(jj(6)+i)
204 ENDDO
205 ENDDO
206
207
208
209
210
211
212 DO i=1,nel
213 eint(i)=eint(i) /
max(em15,vol(i))
214 ENDDO
215
216 RETURN
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)