32 SUBROUTINE m51vois2(PM ,IPARG ,IXQ ,ALE_CONNECT ,ELBUF_TAB,V ,
33 2 X ,VN ,W ,VEL ,VD2 ,
34 3 RHOV ,PV ,VDX ,VDY ,VDZ ,
35 4 EIV ,TV ,BUFVOIS,AVV ,RHO0V ,
37 6 NV46 ,SSPv ,EPSPv ,P0_NRF )
43 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas, m51_iflg6_size
47#include "implicit_f.inc"
57#include "vect01_c.inc"
62 INTEGER,
INTENT(IN) :: NEL
63 INTEGER IPARG(NPARG,NGROUP),IXQ(NIXQ,NUMELQ),ITRIMAT,IPM(NPROPMI,NUMMAT),KK,, NV46
65 . PM(NPROPM,NUMMAT), V(3,NUMNOD),X(3,NUMNOD),VN(NEL),W(3,NUMNOD),(MVSIZ),
67 . rhov(0:4,mvsiz), pv(0:4,mvsiz), eiv(0:4,mvsiz), avv
68 . bufvois(m51_iflg6_size,*),sspv(0:4,mvsiz),epspv(0:4,mvsiz),
69 . vd2(nel),vdx(nel),vdy(nel),vdz(nel)
70 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
71 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
75 INTEGER I, II, J, IVOI, ML, N, KTY, KLT, MFT, IS,NELG,IJ(NV46),K,IAD2,IX1,IX2
76 INTEGER :: ICF(2,4), IFORM, IADBUF,ISUB_BIJ(4),ITMP
77 my_real :: XN, YN, ZN, FAC, VN1, VN2
79 TYPE(G_BUFEL_) ,
POINTER :: GBUF
80 TYPE(buf_mat_) ,
POINTER :: MBUF
81 TYPE(l_bufel_) ,
POINTER :: LBUF
82 TYPE(buf_lay_) ,
POINTER :: BUFLY
85 DATA icf/1,2,2,3,3,4,4,1/
91 isub_bij(1:4) = -huge(isub_bij(1))
97 iad2 = ale_connect%ee_connect%iad_connect(ii)
100 ivoi=ale_connect%ee_connect%connected(iad2 + j - 1)
104 IF(ivoi <= numelq)
THEN
105 ml=nint(pm(19,ixq(1,ivoi)))
106 iadbuf=ipm(7,ixq(1,ivoi))
107 IF(ml == 51)iform=nint(bufmat(iadbuf+31-1))
108 isub_bij(1)=nint(bufmat(iadbuf+276+1-1))
109 isub_bij(2)=nint(bufmat(iadbuf+276+2-1))
110 isub_bij(3)=nint(bufmat(iadbuf+276+3-1))
111 isub_bij(4)=nint(bufmat(iadbuf+276+4-1))
114 iform=nint(bufvois(36,is))
115 itmp=nint(bufvois(37,is))
116 isub_bij(1)=(itmp/100000)
117 itmp=mod(itmp,100000)
118 isub_bij(2)=(itmp/10000)
120 isub_bij(3)=(itmp/1000)
122 isub_bij(4)=(itmp/100)
127 IF(ml == 51 .AND. iform <= 1)
EXIT
130 IF(ml == 51 .AND. iform<=1)
THEN
131 ix1 = ixq(icf(1,j)+1,ii)
132 ix2 = ixq(icf(2,j)+1,ii)
134 yn = (-x(3,ix2)+x(3,ix1))
135 zn = (-x(2,ix1)+x(2,ix2))
136 fac = one/sqrt(yn**2+zn**2)
143 vdy(i)=half*(v(2,ix1)+v(2,ix2))
144 vdz(i)=half*(v(3,ix1)+v(3,ix2))
146 vdy(i)=vdy(i)-half*(w(2,ix1)+w(2,ix2))
147 vdz(i)=vdz(i)-half*(w(3,ix1)+w(3,ix2))
149 vd2(i)=vdy(i)**2+vdz(i)**2
150 IF(vdy(i)*zn+vdz(i)*yn <= zero)
THEN
157 vn1=v(2,ix1)*yn+v(3,ix1)*zn
158 vn2=v(2,ix2)*yn+v(3,ix2)*zn
159 vel(i)=(
min(vn1,vn2))**2
161 IF(vn(i) >= zero)vel(i)=zero
163 IF(ivoi <= numelq)
THEN
169 IF (kty == 2 .AND. ivoi <= klt+mft)
EXIT
172 IF (kty /= 2 .OR. ivoi > klt+mft) cycle
173 gbuf => elbuf_tab(n)%GBUF
174 lbuf => elbuf_tab(n)%BUFLY(1)%LBUF(1,1,1)
175 mbuf => elbuf_tab(n)%BUFLY(1)%MAT(1,1,1)
176 bufly => elbuf_tab(n)%BUFLY(1)
185 pv(0,i) = -third*(gbuf%SIG(ij(1)+is)
186 . + gbuf%SIG(ij(2)+is)
187 . + gbuf%SIG(ij(3)+is))
189 eiv(0,i) = gbuf%EINT(is)
190 rhov(0,i) = gbuf%RHO(is)
191 tv(0,i) = gbuf%TEMP(is)
192 sspv(0,i) = lbuf%SSP(is)
193 IF(bufly%L_PLA > 0)
then
194 epspv(0,i) = lbuf%PLA(is)
198 p0_nrf(i) = mbuf%VAR(nelg*3+is)
202 kk = m51_n0phas + (itrimat-1)*m51_nvphas
203 iadbuf=18 ; pv(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
205 iadbuf=8 ; eiv(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
206 iadbuf=9 ; rhov(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is
207 iadbuf=16 ; tv(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
208 iadbuf=14 ; sspv(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
209 iadbuf=15 ; epspv(itrimat,i)= mbuf%VAR(nelg*(iadbuf+kk-1)+is)
217 kk = m51_n0phas + (isub_bij(itrimat)-1)*m51_nvphas
218 iadbuf=1 ; avv(itrimat,i) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
221 iadbuf = ipm(7,ixq(1,ivoi))
223 rho0v(1,i) = bufmat(iadbuf+09-1)
224 rho0v(2,i) = bufmat(iadbuf+10-1)
225 rho0v(3,i) = bufmat(iadbuf+11-1)
226 rho0v(4,i) = bufmat(iadbuf+47-1)
227 rho0v(0,i) = bufmat(iadbuf+69-1)
235 pv(0,i) = bufvois(01,is)
236 eiv(0,i) = bufvois(02,is)
238 tv(0,i) = bufvois(04,is)
239 sspv(0,i) = bufvois(05,is)
240 epspv(0,i) = bufvois(06,is)
243 pv(itrimat,i) = bufvois(07,is)
245 eiv(itrimat,i) = bufvois(09,is)
246 rhov(itrimat,i) = bufvois(10,is)
248 sspv(itrimat,i) = bufvois(12,is)
249 epspv(itrimat,i)= bufvois(13,is)
252 pv(itrimat,i) = bufvois(14,is)
254 eiv(itrimat,i) = bufvois(16,is)
255 rhov(itrimat,i) = bufvois(17,is)
256 tv(itrimat,i) = bufvois(18,is)
257 sspv(itrimat,i) = bufvois(19,is)
258 epspv(itrimat,i) = bufvois(20,is)
261 pv(itrimat,i) = bufvois(21,is)
263 eiv(itrimat,i) = bufvois(23,is)
264 rhov(itrimat,i) = bufvois(24,is)
265 tv(itrimat,i) = bufvois(25,is
266 sspv(itrimat,i) = bufvois(26,is)
267 epspv(itrimat,i) = bufvois(27,is)
270 pv(itrimat,i) = bufvois(28,is)
272 eiv(itrimat,i) = bufvois
273 rhov(itrimat,i) = bufvois(31,is)
274 tv(itrimat,i) = bufvois(32,is)
275 sspv(itrimat,i) = bufvois(33,is)
276 epspv(itrimat,i) = bufvois(34,is)
278 p0_nrf(i) = bufvois(35,is)
281 avv(1,i) = bufvois(1+isub_bij(1)*7,is)
282 avv(2,i) = bufvois(1+isub_bij(2)*7,is)
283 avv(3,i) = bufvois(1+isub_bij(3)*7,is)
284 avv(4,i) = bufvois(1+isub_bij(4)*7,is)