Optimize prolong3: hoist bounds check out of inner loop

This commit is contained in:
2026-03-01 00:17:30 +08:00
parent d4ec69c98a
commit 3046a0ccde

View File

@@ -1949,11 +1949,12 @@
real*8, dimension(6,2), parameter :: WC = reshape((/& real*8, dimension(6,2), parameter :: WC = reshape((/&
C1,C2,C3,C4,C5,C6,& C1,C2,C3,C4,C5,C6,&
C6,C5,C4,C3,C2,C1/), (/6,2/)) C6,C5,C4,C3,C2,C1/), (/6,2/))
integer::imini,imaxi,jmini,jmaxi,kmini,kmaxi integer::imini,imaxi,jmini,jmaxi,kmini,kmaxi
integer::imino,imaxo,jmino,jmaxo,kmino,kmaxo integer::imino,imaxo,jmino,jmaxo,kmino,kmaxo
integer::maxcx,maxcy,maxcz
real*8,dimension(3) :: CD,FD
real*8,dimension(3) :: CD,FD
if(wei.ne.3)then if(wei.ne.3)then
write(*,*)"prolongrestrict.f90::prolong3: this routine only surport 3 dimension" write(*,*)"prolongrestrict.f90::prolong3: this routine only surport 3 dimension"
@@ -2057,6 +2058,14 @@
endif endif
enddo enddo
maxcx = maxval(cix(imino:imaxo))
maxcy = maxval(ciy(jmino:jmaxo))
maxcz = maxval(ciz(kmino:kmaxo))
if(maxcx+3 > extc(1) .or. maxcy+3 > extc(2) .or. maxcz+3 > extc(3))then
write(*,*)"error in prolong"
return
endif
call symmetry_bd(3,extc,func,funcc,SoA) call symmetry_bd(3,extc,func,funcc,SoA)
!~~~~~~> prolongation start... !~~~~~~> prolongation start...
@@ -2069,8 +2078,6 @@
px = pix(i) px = pix(i)
py = piy(j) py = piy(j)
pz = piz(k) pz = piz(k)
if(any(cxI+3 > extc)) write(*,*)"error in prolong"
#if 0 #if 0
if(ii/2*2==ii)then if(ii/2*2==ii)then
if(jj/2*2==jj)then if(jj/2*2==jj)then