From 787295692ac3418b2a847b339c9f46e5564f71d9 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 (cherry picked from commit 3046a0ccde39b5608cceeb81bae236ec3a2ae784) --- 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 62abeac..267ea4d 100644 --- a/AMSS_NCKU_source/prolongrestrict_cell.f90 +++ b/AMSS_NCKU_source/prolongrestrict_cell.f90 @@ -1948,11 +1948,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" @@ -2056,6 +2057,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... @@ -2068,8 +2077,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