36 SUBROUTINE thquad(ELBUF_TAB,NTHGRP2 , ITHGRP ,
41 . NUMELQ ,NUMMAT ,NUMNOD ,SITHBUF, NUMELTG)
105#include "implicit_f.inc"
109#include "vect01_c.inc"
110#include "com01_c.inc"
112#include "param_c.inc"
116 INTEGER,
INTENT(IN) :: NUMELQ, NUMMAT, NUMNOD ,SITHBUF, NUMELTG
117 INTEGER,
INTENT(IN) :: IPARG(NPARG,NGROUP),ITHBUF(SITHBUF),IXQ(NIXQ,NUMELQ),IPM(NPROPMI,NUMMAT),IXTG(NIXTG,NUMELTG)
118 INTEGER,
INTENT(IN) :: NTHGRP2
119 INTEGER,
INTENT(IN) :: ITHERM
120 INTEGER,
DIMENSION(NITHGR,*),
INTENT(IN) :: ITHGRP
121 my_real,
INTENT(IN) :: pm(npropm,nummat)
123 my_real,
INTENT(IN) :: x(3,numnod), v(3,numnod), w(3,numnod)
124 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
125 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
129 INTEGER II, KRK, LL, I, J, K, L ,N, IH, IP, , MTE, NUVAR,
130 . nc1, nc2, nc3, nc4, nel, mtn1,kk(6),ij,nptr,npts,
131 . ir,is,jj(6),niter,iadb,nn,iadv,
nvar,ityp,ijk,is_ale
133 . sy , sz, ty , tz, suma,
134 . y1,y2,y3,y4,z1,z2,z3,z4,
135 . r11,r12,r13,r21,r22,r23,r31,r32,r33,
139 . t1,t2,t3,t4,cs,ct,evar(6),gama(6),
140 . tmp(3,4),vel(3),ssp,bfrac,rho0
141 my_real,
dimension(:),
allocatable :: wwa
142 TYPE(l_bufel_) ,
POINTER :: LBUF,LBUF1,LBUF2
143 TYPE(G_BUFEL_) ,
POINTER :: GBUF
144 TYPE(BUF_MAT_) ,
POINTER :: MBUF
148 ALLOCATE(wwa(239555))
153 iadb =ithgrp(5,niter)
157 IF(ityp==2.OR.ityp==117)
THEN
162 IF(ityp == 117) ityp = 7
166 DO WHILE((ithbuf(ih+nn)/=ispmd).AND.(ih<iadb+nn))
170 IF (ih>=iadb+nn)
GOTO 666
178 IF (ity == ityp)
THEN
179 gbuf => elbuf_tab(ng)%GBUF
180 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
181 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
183 nptr = elbuf_tab(ng)%NPTR
184 npts = elbuf_tab(ng)%NPTS
187 2 mte ,nel ,nft ,iad ,ity ,
188 3 npt ,jale ,ismstr ,jeul ,jtur ,
189 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
190 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
191 6 irep ,iint ,igtyp ,israt ,isrot ,
192 7 icsen ,isorth ,isorthg ,ifailure,jsms )
211 ii = ((ih-1) - iadb)*
nvar
212 DO WHILE((ithbuf(ih+nn)/=ispmd
216 IF (ih > iadb+nn)
GOTO 666
222 wwa(8) = gbuf%EINT(i)
224 wwa(10)= gbuf%QVIS(i)
226 IF (isorth == 0)
THEN
234 gama(1)=gbuf%GAMA(kk(1) + i)
235 gama(2)=gbuf%GAMA(kk(2) + i)
236 gama(3)=gbuf%GAMA(kk(3) + i)
237 gama(4)=gbuf%GAMA(kk(4) + i)
238 gama(5)=gbuf%GAMA(kk(5) + i)
239 gama(6)=gbuf%GAMA(kk(6) + i)
253 tmp(1,1:4)=v(1,ixq(2:5,n))-w(1,ixq(2:5,n))
254 tmp(2,1:4)=v(2,ixq(2:5,n))-w(2,ixq(2:5,n))
255 tmp(3,1:4)=v(3,ixq(2:5,n))-w(3,ixq(2:5,n))
256 vel(1) = sum(tmp(1,1:4))*fourth
257 vel(2) = sum(tmp(2,1:4))*fourth
258 vel(3) = sum(tmp(3,1:4))*fourth
260 tmp(1,1:3)=v(1,ixtg(2:4,n))-w(1,ixtg(2:4,n))
261 tmp(2,1:3)=v(2,ixtg(2:4,n))-w(2,ixtg(2:4,n))
262 tmp(3,1:3)=v(3,ixtg(2:4,n))-w(3,ixtg(2:4,n))
263 vel(1) = sum(tmp(1,1:3))*third
264 vel(2) = sum(tmp(2,1:3))*third
265 vel(3) = sum(tmp(3,1:3))*third
270 tmp(1,1:4)=v(1,ixq(2:5,n))
271 tmp(2,1:4)=v(2,ixq(2:5,n))
272 tmp(3,1:4)=v(3,ixq(2:5,n))
273 vel(1) = sum(tmp(1,1:4))*fourth
274 vel(2) = sum(tmp(2,1:4))*fourth
275 vel(3) = sum(tmp(3,1:4))*fourth
277 tmp(1,1:3)=v(1,ixtg(2:4,n))
278 tmp(2,1:3)=v(2,ixtg(2:4,n))
279 tmp(3,1:3)=v(3,ixtg(2:4,n))
280 vel(1) = sum(tmp(1,1:3))*third
281 vel(2) = sum(tmp(2,1:3))*third
282 vel(3) = sum(tmp(3,1:3))*third
290 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)
THEN
291 wwa(239550)= lbuf%SSP(i)
292 wwa(239551)= sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
295 IF(elbuf_tab(ng)%GBUF%G_BFRAC /= 0)
THEN
296 wwa(31) = gbuf%BFRAC(i)
303 evar(j)=gbuf%SIG(kk(j)+i)
309 IF(ity == 2)
CALL qrota3(x,ixq(1,n
317 IF(ity == 2)
CALL qrota3(x,ixq(1,n),jcvt,evar,gama,isorth)
333 wwa(31)=gbuf%BFRAC(i)
339 ELSEIF (mte==7.OR.mte==8.OR.mte==9)
THEN
343 ELSEIF (mte==10)
THEN
346 ELSEIF (mte==11)
THEN
350 ELSEIF (mte==14)
THEN
354 wwa(15)=lbuf%DAM(kk(1)+i)
355 wwa(16)=lbuf%DAM(kk(2)+i)
356 wwa(17)=lbuf%DAM(kk(3)+i)
357 wwa(18)=lbuf%DAM(kk(4)+i)
358 wwa(34)=lbuf%DAM(kk(5)+i)
359 ELSEIF (mte==16)
THEN
363 ELSEIF (mte==17)
THEN
364 IF (itherm > 0) wwa(13)=lbuf%TEMP(i)
367 ELSEIF (mte==18)
THEN
369 ELSEIF (mte==20)
THEN
370 lbuf1 => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
371 lbuf2 => elbuf_tab(ng)%BUFLY(2)%LBUF(1,1,1)
372 IF(gbuf%G_PLA>0) wwa(12)=gbuf%PLA(i)
373 IF(gbuf%G_TEMP>0)wwa(13)=gbuf%TEMP(i)
377 wwa(1624 + j) = lbuf1%SIG(kk(j)+i)
379 wwa(1624 + 7 ) = lbuf1%EINT(i)
380 wwa(1624 + 8 ) = lbuf1%RHO(i)
381 wwa(1624 + 9 ) = lbuf1%VOL(i)
382 IF(elbuf_tab(ng)%BUFLY(1)%L_TEMP>0)
383 . wwa(1624 +11 )=lbuf1%TEMP(i)
387 wwa(1635 + j) = lbuf2%SIG(kk(j)+i)
389 wwa(1635 + 7 ) = lbuf2%EINT(i)
390 wwa(1635 + 8 ) = lbuf2%RHO(i)
391 wwa(1635 + 9 ) = lbuf2%VOL(i)
392 IF(elbuf_tab(ng)%BUFLY(2)%L_TEMP>0)
393 . wwa(1635 +11 )=lbuf2%TEMP(i)
394 ELSEIF (mte==21)
THEN
397 ELSEIF (mte==22.OR.mte==23)
THEN
399 ELSEIF (mte==24)
THEN
400 wwa(19)=lbuf%DAM(kk(1)+i)+lbuf%DAM(kk(2)+i)+lbuf%DAM(kk(3)+i)
401 wwa(20)=lbuf%SIGA(kk(1)+i)
402 wwa(21)=lbuf%SIGA(kk(2)+i)
403 wwa(22)=lbuf%SIGA(kk(3)+i)
404 wwa(23)=lbuf%CRAK(kk(1)+i)+lbuf%CRAK(kk(2)+i)+lbuf%CRAK(kk(3)+i)
407 ELSEIF (mte==26)
THEN
411 ELSEIF (mte==32.OR.mte==43)
THEN
415 ELSEIF (mte==46.OR.mte==47)
THEN
417 wwa(13)=mbuf%VAR(i+nel)
419 ELSEIF (mte==49)
THEN
423 ELSEIF (mte>=29.AND.mte/=67)
THEN
425 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
426 IF (nuvar > 0) wwa(12)=mbuf%VAR(i)
427 IF (nuvar > 1) wwa(13)=mbuf%VAR(i+nel)
428 IF (nuvar > 2) wwa(14)=mbuf%VAR(i+nel*2)
429 ELSEIF (mte==67)
THEN
437 nuvar =ipm(8,ixq(1,nft+1))
438 ELSEIF(ity == 7)
THEN
439 nuvar =ipm(8,ixtg(1,nft+1))
442 wwa(136+j)=mbuf%VAR((j-1)*nel+i)
454 IF (elbuf_tab(ng)%BUFLY(1)%L_STRA > 0)
THEN
457 lbuf1 => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,1)
458 evar(1) = evar(1) + lbuf1%STRA(kk(1) + i)/npt
459 evar(2) = evar(2) + lbuf1%STRA(kk(2) + i)/npt
460 evar(4) = evar(4) + lbuf1%STRA(kk(4) + i)*half/npt
468 wwa(1619+j-1)=evar(j)
470 IF(ity == 2)
CALL qrota3(x,ixq(1,n),jcvt,evar,gama,isorth)
473 wwa(239030+j-1)=evar(j)
478 wwa(239030+j-1)=evar(j)
480 IF(ity == 2)
CALL qrota3(x,ixq(1,n),jcvt,evar,gama,isorth)
483 wwa(1619+j-1)=evar(j)
487 IF (elbuf_tab(ng)%BUFLY(1)%L_STRA > 0)
THEN
490 lbuf1 => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,1)
492 evar(1) = lbuf1%STRA(kk(1) + i)
493 evar(2) = lbuf1%STRA(kk(2) + i)
494 evar(4) = lbuf1%STRA(kk(4) + i)
497 wwa(239030+30+(is-1)*6+(ir-1)*18+j) = evar(j)
500 IF(ity == 2)
CALL qrota3(x,ixq(1,n),jcvt,evar,gama,isorth)
502 wwa(239030+30+(is-1)*6+(ir-1)*18+j) = evar(j)
512 IF(
ALLOCATED(multi_fvm%BFRAC))
THEN
514 DO ir=1,multi_fvm%NBMAT
515 bfrac =
max(bfrac, multi_fvm%BFRAC(ir,n))
520 wwa(239547)= multi_fvm%VEL(1, n)
521 wwa(239548)= multi_fvm%VEL(2, n)
522 wwa(239549)= multi_fvm%VEL(3, n)
524 wwa(239550)= multi_fvm%SOUND_SPEED(n)
526 wwa(239551)= sqrt(multi_fvm%VEL(1, n)*multi_fvm%VEL(1, n)+
527 . multi_fvm%VEL(2, n)*multi_fvm%VEL(2, n)+
528 . multi_fvm%VEL(3, n)*multi_fvm%VEL(3, n)) /
529 . multi_fvm%SOUND_SPEED(n)
533 wwa(239550)= lbuf%SSP(i)
534 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)
THEN
538 vel(1) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
539 vel(2) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
540 vel(3) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
544 wwa(239551)= sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
551 rho0 = pm(01,ixtg(1,1+nft))
553 rho0 = pm(01,ixq(1,1+nft))
556 wwa(239555) = gbuf%RHO(i) / rho0 - one
561 DO l=iadv,iadv+
nvar-1