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,,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
86 . rho01,rho02,rho03,rho04, rho01v,rho02v,rho03v,rho04v,
87 . c21,c22,c23,c24, c21v,c22v,c23v,c24v,
88 . c31,c32,c33,c34, c31v
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)
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)
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) ;
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
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)
248 ! set automatic law51
251 p0_nrfv = av1v*p01v + av2v*p02v + av3v*p03v + av4v*p04v
252 IF(p0_nrf==zero)uvar(i,4) = p0_nrfv
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)
471 !-----------------------------
474 IF(m51_iloop_nrf==0)
THEN
480 uprm => bufmat(iadbuf:iadbuf+275)
485 ssp0 =
max(ssp0,uprm(174))
486 ssp0 =
max(ssp0,uprm(224))
487 ssp0 =
max(ssp0,uprm(273))
495 IF(m51_lc0max==zero)
THEN
503 xmin =
min(xmin,x(1,i))
504 ymin =
min(ymin,x(2,i))
505 zmin =
min(zmin,x(3,i))
506 xmax =
max(xmax,x(1,i))
508 zmax =
max(zmax,x(3,i))
512 lc =
max(lc,zmax-zmin)
515 !-----------------------------
518 m51_tcp_ref = m51_lc0max/two/m51_ssp0max/log(two)
520 IF(uparam(70)==zero)
THEN
521 uparam(70) = m51_tcp_ref
527 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)