From 3046a0ccde39b5608cceeb81bae236ec3a2ae784 Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Sun, 1 Mar 2026 00:17:30 +0800 Subject: [PATCH] Optimize prolong3: hoist bounds check out of inner loop --- AMSS_NCKU_source/prolongrestrict_cell.f90 | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/AMSS_NCKU_source/prolongrestrict_cell.f90 b/AMSS_NCKU_source/prolongrestrict_cell.f90 index 90607b1..b62e722 100644 --- a/AMSS_NCKU_source/prolongrestrict_cell.f90 +++ b/AMSS_NCKU_source/prolongrestrict_cell.f90 @@ -1949,11 +1949,12 @@ real*8, dimension(6,2), parameter :: WC = reshape((/& C1,C2,C3,C4,C5,C6,& C6,C5,C4,C3,C2,C1/), (/6,2/)) - - integer::imini,imaxi,jmini,jmaxi,kmini,kmaxi - integer::imino,imaxo,jmino,jmaxo,kmino,kmaxo - - real*8,dimension(3) :: CD,FD + + integer::imini,imaxi,jmini,jmaxi,kmini,kmaxi + integer::imino,imaxo,jmino,jmaxo,kmino,kmaxo + integer::maxcx,maxcy,maxcz + + real*8,dimension(3) :: CD,FD if(wei.ne.3)then write(*,*)"prolongrestrict.f90::prolong3: this routine only surport 3 dimension" @@ -2057,6 +2058,14 @@ endif 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) !~~~~~~> prolongation start... @@ -2069,8 +2078,6 @@ px = pix(i) py = piy(j) pz = piz(k) - - if(any(cxI+3 > extc)) write(*,*)"error in prolong" #if 0 if(ii/2*2==ii)then if(jj/2*2==jj)then