Optimize prolong3: hoist bounds check out of inner loop
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user