33 . ALE_CONNECTIVITY, BUFMAT, UPARAM, RHO0,
34 . UVAR , NUVAR , NEL , RHO , NUMEL
60 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas, m51_tcp_ref, m51_lset_iflg6, m51_lc0max, m51_ssp0max, m51_iloop_nrf
64#include "implicit_f.inc"
69#include "vect01_c.inc"
74 INTEGER,
INTENT(IN) :: NUMEL,NIX,IX(NIX,NUMEL),IPM(NPROPMI,NUMMAT),NUVAR,NEL
75 my_real :: PM(NPROPM,NUMMAT), X(3,NUMNOD), UPARAM(*), RHO0
76 my_real,
TARGET :: BUFMAT(*)
77 my_real,
INTENT(INOUT) :: uvar(nel,nuvar), rho(nel)
82 INTEGER I, IVMAT,IMAT,IID,MLN,J,J2,IADBUF,IFLGv,IE,IEV,NUPARAM,K,IFORM,IAD1,LGTH
84 . C01,C02,C03,C04, C01v,C02v,C03v,C04v,
85 . c11,c12,c13,c14, c11v,c12v,c13v,c14v,
86 . rho01,rho02,rho03,rho04, rho01v,rho02v,rho03v,rho04v,
87 . c21,c22,c23,c24, c21v,c22v,c23v,c24v,
88 . c31,c32,c33,c34, c31v,c32v,c33v,c34v,
89 . c41,c42,c43,c44, c41v,c42v,c43v,c44v,
90 . c51,c52,c53,c54, c51v,c52v,c53v,c54v,
91 . e01,e02,e03,e04, e01v,e02v,e03v,e04v,
92 . p01,p02,p03,p04, p01v,p02v,p03v,p04v,
93 . pm1,pm2,pm3,pm4, pm1v,pm2v,pm3v,pm4v,
94 . av1,av2,av3,av4, av1v,av2v,av3v,av4v,
95 . ssp1,ssp2,ssp3,ssp4, ssp1v,ssp2v,ssp3v,ssp4v,
97 . dpdmu1v, dpdmu2v,dpdmu3v,
98 . pext, pextv, p0_nrf, p0_nrfv, avsum,
99 . lc,xmin,ymin,zmin,xmax,
ymax,zmax, ssp0, tmp,
102 my_real,
POINTER,
DIMENSION(:) :: uprm
104 INTEGER lFOUND_51, lFOUND_other, lSET
155 p0_nrf = av1*(c01+c41*e01) + av2*(c02+c42*e02) + av3*(c03+c43*e03) + av4*(c04+c44*e04)
168 nuparam = ipm(9,imat)
170 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
171 lgth = ale_connectivity%ee_connect%iad_connect(ie+1) - iad1
174 iev = ale_connectivity%ee_connect%connected(iad1 + j - 1)
176 ivmat = abs(ix(1,iev))
177 mln = nint(pm(19,ivmat))
179 IF(mln/=51)lfound_other = lfound_other + 1
180 iadbuf = ipm(7,ivmat)
181 iflgv = nint(bufmat(iadbuf-1+31))
182 IF(iflgv>=2 .AND. iflgv<=6 )cycle
183 lfound_51 = lfound_51 + 1
188 av1v = bufmat(iadbuf-1+04) ;
189 av2v = bufmat(iadbuf-1+05) ;
190 av3v = bufmat(iadbuf-1+06) ;
191 av4v = bufmat(iadbuf-1+46) ;
192 rho01v = bufmat(iadbuf-1+09) ;
193 rho02v = bufmat(iadbuf-1+10) ;
194 rho03v = bufmat(iadbuf-1+11) ;
195 rho04v = bufmat(iadbuf-1+47) ;
196 e01v = bufmat(iadbuf-1+32) ;
197 e02v = bufmat(iadbuf-1+33) ;
198 e03v = bufmat(iadbuf-1+34) ;
199 e04v = bufmat(iadbuf-1+48) ;
200 c11v = bufmat(iadbuf-1+12) ;
201 c12v = bufmat(iadbuf-1+13) ;
202 c13v = bufmat(iadbuf-1+14) ;
203 c14v = bufmat(iadbuf-1+50) ;
204 c21v = bufmat(iadbuf-1+15) ;
205 c22v = bufmat(iadbuf-1+16) ;
206 c23v = bufmat(iadbuf-1+17) ;
208 c31v = bufmat(iadbuf-1+18) ;
209 c32v = bufmat(iadbuf-1+19) ;
210 c33v = bufmat(iadbuf-1+20) ;
212 c41v = bufmat(iadbuf-1+22) ;
213 c42v = bufmat(iadbuf-1+23) ;
214 c43v = bufmat(iadbuf-1+24) ;
216 c51v = bufmat(iadbuf-1+25) ;
217 c52v = bufmat(iadbuf-1+26) ;
218 c53v = bufmat(iadbuf-1+27) ;
220 pm1v = bufmat(iadbuf-1+39) ;
221 pm2v = bufmat(iadbuf-1+40) ;
222 pm3v = bufmat(iadbuf-1+41) ;
223 pm4v = bufmat(iadbuf-1+56) ;
224 pextv = bufmat(iadbuf-1+8) ;
225 c01v = bufmat(iadbuf-1+35) ;
226 c02v = bufmat(iadbuf-1+36) ;
227 c03v = bufmat(iadbuf-1+37) ;
228 c04v = bufmat(iadbuf-1+49) ;
229 p01v = c01v + c41v*e01v
230 p02v = c02v + c42v*e02v
231 p03v = c03v + c43v*e03v
237 dpdmu1v = (c11v+c51v*e01v) + c41v*(pextv+p01v)
238 dpdmu2v = (c12v+c52v*e02v) + c42v*(pextv+p02v)
239 dpdmu3v = (c13v+c53v*e03v) + c43v*(pextv+p03v)
240 gg1v = bufmat(iadbuf-1+28)
241 gg2v = bufmat(iadbuf-1+29)
242 gg3v = bufmat(iadbuf-1+30)
243 IF(rho01v /= zero) ssp1v = sqrt( (dpdmu1v + two_third*gg1v) / rho01v
244 IF(rho02v /= zero) ssp2v = sqrt( (dpdmu2v + two_third*gg2v) / rho02v )
245 IF(rho03v /= zero) ssp3v = sqrt( (dpdmu3v + two_third*gg3v) / rho03v )
246 ssp4v = bufmat(iadbuf-1+42)
251 p0_nrfv = av1v*p01v + av2v*p02v + av3v*p03v + av4v*p04v
252 IF(p0_nrf==zero)uvar(i,4) = p0_nrfv
254 avsum = av1+av2+av3+av4
261 k=m51_n0phas+(1-1)*m51_nvphas
264 k=m51_n0phas+(2-1)*m51_nvphas
267 k=m51_n0phas+(3-1)*m51_nvphas
270 k=m51_n0phas+(4-1)*m51_nvphas
278 k=m51_n0phas+(1-1)*m51_nvphas
281 k=m51_n0phas+(2-1)*m51_nvphas
284 k=m51_n0phas+(3-1)*m51_nvphas
287 k=m51_n0phas+(4-1)*m51_nvphas
292 k=m51_n0phas+(1-1)*m51_nvphas
318 ssp0 =
max(ssp0,ssp1)
321 ssp0 =
max(ssp0,ssp1)
324 k=m51_n0phas+(2-1)*m51_nvphas
350 ssp0 =
max(ssp0,ssp2)
353 ssp0 =
max(ssp0,ssp2)
356 k=m51_n0phas+(3-1)*m51_nvphas
382 ssp0 =
max(ssp0,ssp3)
385 ssp0 =
max(ssp0,ssp3)
388 k=m51_n0phas+(4-1)*m51_nvphas
414 ssp0 =
max(ssp0,ssp4)
417 ssp0 =
max(ssp0,ssp4)
420 rho0 = av(1)*rho01+av(2)*rho02+av(3)*rho03+av(4)*rho04
430 iev = ale_connectivity%ee_connect%connected(iad1 + j2 - 1)
432 mln = nint(pm(19,ivmat))
434 ivmat = abs(ix(1,iev))
435 IF(mln/=51 )lfound_other = lfound_other + 1
436 iadbuf = ipm(7,ivmat)
437 iflgv = nint(bufmat(iadbuf-1+31))
438 IF(iflgv>=2 .AND. iflgv<=6 )cycle
439 lfound_51 = lfound_51 + 1
442 IF(lfound_other /= 0)
THEN
444 . msgtype = msgerror,
447 . c1 =
"MUST BE ADJACENT TO MM-ALE LAW51 PART" )
449 IF(lfound_51 == 0)
THEN
451 . msgtype = msgwarning,
454 . c1 =
"HAS NO ADJACENT FACE IN COMPUTATION DOMAIN" )
456 IF(lfound_51 >= 2)
THEN
458 . msgtype = msgerror,
461 . c1 =
"MUST HAVE ONLY ONE FACE ADJACENT TO COMPUTATION DOMAIN" )
465 m51_ssp0max=
max(m51_ssp0max,ssp0)
474 IF(m51_iloop_nrf==0)
THEN
479 nuparam = ipm(9,imat)
481 uprm => bufmat(iadbuf:iadbuf+nuparam-1)
486 ssp0 =
max(ssp0,uprm(174))
487 ssp0 =
max(ssp0,uprm(224))
488 ssp0 =
max(ssp0,uprm(273))
496 IF(m51_lc0max==zero)
THEN
504 xmin =
min(xmin,x(1,i))
505 ymin =
min(ymin,x(2,i))
506 zmin =
min(zmin,x(3,i))
507 xmax =
max(xmax,x(1,i))
509 zmax =
max(zmax,x(3,i))
513 lc =
max(lc,zmax-zmin)
519 m51_tcp_ref = m51_lc0max/two/m51_ssp0max/log(two)
521 IF(uparam(70)==zero)
THEN
522 uparam(70) = m51_tcp_ref
528 if(lset==1) m51_lset_iflg6 = 1
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)