132 1 IBUF , ELEM , X , NEL , IFVNOD1,
133 2 RFVNOD1 , IFVTRI1 , IFVPOLY1,
134 3 IFVTADR1, IFVPOLH1, IFVPADR1,
135 4 MPOLH1 , QPOLH1 , EPOLH1 ,
136 5 PPOLH1 , RPOLH1 , GPOLH1 ,
137 6 IFVNOD0 , RFVNOD0 ,
138 7 IFVTRI0 , IFVPOLY0,
139 8 IFVTADR0, IFVPOLH0,
143 C GPOLH0 , NNS1 , NNTR1 , NPOLH1, NNS0 ,
144 D NNTR0 , NPOLH0 , NPOLY1 , NPOLY0, NSTEP ,
145 E ID , CPAPOLH1, CPBPOLH1,
146 F CPCPOLH1, RMWPOLH1,
147 G CPAPOLH0, CPBPOLH0,
148 H CPCPOLH0, RMWPOLH0, ILVOUT , NNF , NNA ,
157#include "implicit_f.inc"
161#include "units_c.inc"
162#include "com01_c.inc"
167 INTEGER IBUF(*), ELEM(3,*), NEL, IFVNOD1(3,*), IFVTRI1(6,*),
168 . IFVPOLY1(*), IFVTADR1(*), IFVPOLH1(*), IFVPADR1(*),
169 . IFVNOD0(3,*), IFVTRI0(6,*), IFVPOLY0(*), IFVTADR0(*),
170 . IFVPOLH0(*), IFVPADR0(*), NNS1, NNTR1, NPOLH1, NNS0,
171 . nntr0, npolh0, npoly1, npoly0, nstep,
id, ilvout,
174 . x(3,*), rfvnod1(2,*), mpolh1(*), qpolh1(3,*), epolh1(*),
175 . ppolh1(*), rpolh1(*), gpolh1(*), rfvnod0(2,*),
176 . mpolh0(*), qpolh0(3,*), epolh0(*), ppolh0(*),
177 . rpolh0(*), gpolh0(*), cpapolh1(*), cpbpolh1(*),
178 . cpcpolh1(*), rmwpolh1(*), cpapolh0(*), cpbpolh0(*),
179 . cpcpolh0(*), rmwpolh0(*)
183 INTEGER I, IEL, N1, N2, N3, NN1, NN2, NN3, J, JJ, , KK, NNT,
184 . L, NN, PNTR0(NNTR0), PNTR1(NNTR1), NNT1, NNT0, LL, NNTI,
185 . inner, inn(3), nti, icut, nb, nnb, nbi, m, ii, i1, i2,
188 . ksi, eta, x1, y1, z1, x2, y2, z2, x3, y3, z3,
189 . px0(3,nns0), px1(3,nns1), x12, y12, z12, x13, y13, z13,
190 . nrx, nry, nrz, area2, tarea0(nntr0), norm0(3,nntr0),
191 . tarea1(nntr1), norm1(3,nntr1), volu1(npolh1),
area,
192 . nx, ny, nz, xmin, xmax, ymin,
ymax, zmin, zmax, xx, yy,
193 . zz, bbox0(6,npolh0), bbox1(6,npolh1), crit, xmin1, xmax1,
195 . ymax0, zmin0, zmax0, volu0(npolh0), dxb, dyb, dzb, volb,
196 . vol, volg, volt, rr, mass0, qx0, qy0, qz0, ener0, mass1,
197 . qx1, qy1, qz1, ener1, gama, fac, xxx(3,nnf), xxxa(3,nna)
198 INTEGER,
ALLOCATABLE :: PTRI1(:,:), (:,:), TCUT(:), ITAGT(:),
199 . BB(:,:), INB(:), INB_TMP(:), LISTB(:)
201 . ,
ALLOCATABLE :: xb(:,:), xxxsa(:,:)
212 ALLOCATE(xxxsa(3,nnsa))
216 i1=
fvspmd(ifv)%IBUF_L(1,i)
217 i2=
fvspmd(ifv)%IBUF_L(2,i)
223 i1=
fvspmd(ifv)%IBUFA_L(1,i)
224 i2=
fvspmd(ifv)%IBUFA_L(2,i)
230 i1=
fvspmd(ifv)%IBUFSA_L(1,i)
231 i2=
fvspmd(ifv)%IBUFSA_L(2,i)
245 IF (ispmd/=
fvspmd(ifv)%PMAIN-1)
RETURN
254 IF (ifvnod0(1,i)==1)
THEN
271 px0(1,i)=(one-ksi-eta)*x1+ksi*x2+eta*x3
272 px0(2,i)=(one-ksi-eta)*y1+ksi*y2+eta*y3
273 px0(3,i)=(one-ksi-eta)*z1+ksi*z2+eta*z3
274 ELSEIF (ifvnod0(1,i)==2)
THEN
288 IF (ifvnod0(1,i)==3)
THEN
292 px0(1,i)=fac*px0(1,i1)+(one-fac)*px0(1,i2)
293 px0(2,i)=fac*px0(2,i1)+(one-fac)*px0(2,i2)
294 px0(3,i)=fac*px0(3,i1)+(one-fac)*px0(3,i2)
299 IF (ifvnod1(1,i)==1)
THEN
316 px1(1,i)=(one-ksi-eta)*x1+ksi*x2+eta*x3
317 px1(2,i)=(one-ksi-eta)*y1+ksi*y2+eta*y3
318 px1(3,i)=(one-ksi-eta)*z1+ksi*z2+eta*z3
319 ELSEIF (ifvnod1(1,i)==2)
THEN
333 IF (ifvnod1(1,i)==3)
THEN
337 px1(1,i)=fac*px1(1,i1)+(one-fac)*px1(1,i2)
338 px1(2,i)=fac*px1(2,i1)+(one-fac)*px1(2,i2)
339 px1(3,i)=fac*px1(3,i1)+(one-fac)*px1(3,i2)
366 area2=sqrt(nrx**2+nry**2+nrz**2)
401 area2=sqrt(nrx**2+nry**2+nrz**2)
417 DO j=ifvpadr0(i),ifvpadr0(i+1)-1
420 DO k=ifvtadr0(jj), ifvtadr0(jj+1)-1
429 IF (ifvtri0(5,kk)==i)
THEN
433 ELSEIF (ifvtri0(6,kk)==i)
THEN
443 volu0(i)=volu0(i)+third*
area*(x1*nx+y1*ny+z1*nz)
451 DO j=ifvpadr1(i),ifvpadr1(i+1)-1
454 DO k=ifvtadr1(jj), ifvtadr1(jj+1)-1
463 IF (ifvtri1(5,kk)==i)
THEN
467 ELSEIF (ifvtri1(6,kk)==i)
THEN
477 volu1(i)=volu1(i)+third*
area*(x1*nx+y1*ny+z1*nz)
490 DO j=ifvpadr0(i),ifvpadr0(i+1)-1
492 DO k=ifvtadr0(jj),ifvtadr0(jj+1)-1
526 DO j=ifvpadr1(i),ifvpadr1(i+1)-1
528 DO k=ifvtadr1(jj),ifvtadr1(jj+1)-1
563 bb(1,nn)=(i-1)*(nstep+1)**2+(j-1)*(nstep+1)+k
564 bb(2,nn)=(i-1)*(nstep+1)**2+(j-1)*(nstep+1)+k+1
565 bb(3,nn)=(i-1)*(nstep+1)**2+j*(nstep+1)+k+1
566 bb(4,nn)=(i-1)*(nstep+1)**2+j*(nstep+1)+k
567 bb(5,nn)=i*(nstep+1)**2+(j-1)*(nstep+1)+k
568 bb(6,nn)=i*(nstep+1)**2+(j-1)*(nstep+1)+k+1
569 bb(7,nn)=i*(nstep+1)**2+j*(nstep+1)+k+1
570 bb(8,nn)=i*(nstep+1)**2+j*(nstep+1)+k
575 IF (ilvout/=0)
WRITE(istdo,
'(A25,I8,A14)')
576 .
' ** MONITORED VOLUME ID: ',
id,
' - REZONING **'
598 ALLOCATE(ptri1(3,nnt1))
600 DO j=ifvpadr1(i),ifvpadr1(i+1)-1
602 DO k=ifvtadr1(jj),ifvtadr1(jj+
605 IF (ifvtri1(4,kk)>0)
THEN
606 ptri1(1,nnt)=ifvtri1(1,kk)
607 ptri1(2,nnt)=ifvtri1(2,kk)
608 ptri1(3,nnt)=ifvtri1(3,kk)
609 ELSEIF (ifvtri1(5,kk)==i)
THEN
610 ptri1(1,nnt)=ifvtri1(1,kk)
611 ptri1(2,nnt)=ifvtri1(2,kk)
612 ptri1(3,nnt)=ifvtri1(3,kk)
613 ELSEIF (ifvtri1(6,kk)==i)
THEN
614 ptri1(1,nnt)=ifvtri1(1,kk)
615 ptri1(2,nnt)=ifvtri1(3,kk)
621 ALLOCATE(xb(3,nnb), inb(nnb))
622 dxb=(xmax1-xmin1)/nstep
623 dyb=(ymax1-ymin1)/nstep
624 dzb=(zmax1-zmin1)/nstep
640 CALL pinpolh(nnt1, ptri1, xb, nnb, px1,
641 . inb, crit , xmin1, xmax1, ymin1,
642 . ymax1, zmin1, zmax1)
654 IF (xmax1<xmin0.OR.ymax1<ymin0.OR.zmax1<zmin0.OR.
655 . xmin1>xmax0.OR.ymin1>ymax0.OR.zmin1>zmax0)
659 ALLOCATE(ptri0(3,nnt0))
661 DO k=ifvpadr0(j),ifvpadr0(j+1)-1
663 DO l=ifvtadr0(kk),ifvtadr0(kk+1)-1
666 IF (ifvtri0(4,ll)>0)
THEN
667 ptri0(1,nnt)=ifvtri0(1,ll)
669 ptri0(3,nnt)=ifvtri0(3,ll)
670 ELSEIF (ifvtri0(5,ll)==j)
THEN
671 ptri0(1,nnt)=ifvtri0(1,ll)
672 ptri0(2,nnt)=ifvtri0(2,ll)
673 ptri0(3,nnt)=ifvtri0(3,ll)
674 ELSEIF (ifvtri0(6,ll)==j)
THEN
675 ptri0(1,nnt)=ifvtri0(1,ll)
676 ptri0(2,nnt)=ifvtri0(3,ll)
677 ptri0(3,nnt)=ifvtri0(2,ll)
682 ALLOCATE(inb_tmp(nnb))
683 CALL pinpolh(nnt0, ptri0, xb, nnb, px0,
684 . inb_tmp, crit, xmin0, xmax0, ymin0,
685 . ymax0, zmin0, zmax0)
687 inb_tmp(k)=inb_tmp(k)*inb(k)
702 vol=vol+nn*volb/eight
706 mpolh1(i)=mpolh1(i)+rr*mpolh0(j)
707 qpolh1(1,i)=qpolh1(1,i)+rr*qpolh0(1,j)
708 qpolh1(2,i)=qpolh1(2,i)+rr*qpolh0(2,j)
709 qpolh1(3,i)=qpolh1(3,i)+rr*qpolh0(3,j)
710 epolh1(i)=epolh1(i)+rr*epolh0(j)
711 gpolh1(i)=gpolh1(i)+rr*gpolh0(j)
712 cpapolh1(i)=cpapolh1(i)+rr*cpapolh0(j)
713 cpbpolh1(i)=cpbpolh1(i)+rr*cpbpolh0(j)
714 cpcpolh1(i)=cpcpolh1(i)+rr*cpcpolh0(j)
715 rmwpolh1(i)=rmwpolh1(i)+rr*rmwpolh0(j)
719 DEALLOCATE(ptri0, inb_tmp)
722 DEALLOCATE(ptri1, xb, inb)
739 mass0=mass0+mpolh0(i)
743 ener0=ener0+epolh0(i)
746 mass1=mass1+mpolh1(i)
750 ener1=ener1+epolh1(i)
753 WRITE(istdo,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
754 .
' INITIAL MASS: ',mass0,
' REZONED MASS: ',mass1,
755 .
' ERR: ',
min(abs((mass1-mass0)/mass0*hundred),99.99d0),
'%'
756 WRITE(istdo,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
757 .
' INITIAL QX : ',qx0,
' REZONED QX : ',qx1,
758 .
' ERR: ',
min(abs((qx1-qx0)/qx0*hundred),99.99d0),
'%'
759 WRITE(istdo,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
760 .
' INITIAL QY : ',qy0,
' REZONED QY : ',qy1,
761 .
' ERR: ',
min(abs((qy1-qy0)/qy0*hundred),99.99d0),
'%'
762 WRITE(istdo,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
763 .
' INITIAL QZ : ',qz0,
' REZONED QZ : ',qz1,
764 .
' ERR: ',
min(abs((qz1-qz0)/qz0*hundred),99.99d0),
'%'
765 WRITE(istdo,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
766 .
' INITIAL ENER: ',ener0,
' REZONED ENER: ',ener1,
767 .
' ERR: ',
min(abs((ener1-ener0)/ener0*hundred),99.99d0),
'%'
769 WRITE(iout,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
770 .
' INITIAL MASS: ',mass0,
' REZONED MASS: ',mass1,
771 .
' ERR: ',
min(abs((mass1-mass0)/mass0*hundred),99.99d0),
'%'
772 WRITE(iout,
'(A18,G11.4,A15,G11.4,A6,F5.2,A1)')
773 .
' INITIAL QX : ',qx0,
' REZONED QX : ',qx1,
774 .
' ERR: ',
min(abs((qx1-qx0)/qx0*hundred),99.99d0),'%
'
775 WRITE(IOUT,'(a18,g11.4,a15,g11.4,a6,f5.2,a1)
')
776 . ' initial qy :
',QY0,' rezoned qy :
',QY1,
777 . ' err:
',MIN(ABS((QY1-QY0)/QY0*HUNDRED),99.99D0),'%
'
778 WRITE(IOUT,'(a18,g11.4,a15,g11.4,a6,f5.2,a1)
')
779 . ' initial qz :
',QZ0,' rezoned qz :
',QZ1,
780 . ' err:
',MIN(ABS((QZ1-QZ0)/QZ0*HUNDRED),99.99D0),'%
'
781 WRITE(IOUT,'(a18,g11.4,a15,g11.4,a6,f5.2,a1)
')
782 . ' initial ener:
',ENER0,' rezoned ener:
',ENER1,
783 . ' err:
',MIN(ABS((ENER1-ENER0)/ENER0*HUNDRED),99.99D0),'%
'
788 RPOLH1(I)=MPOLH1(I)/VOLU1(I)
789 PPOLH1(I)=(GAMA-ONE)*EPOLH1(I)/VOLU1(I)