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