From 22b28fc77435dc74268a952a3c1e30e016601d66 Mon Sep 17 00:00:00 2001 From: ydamour Date: Tue, 22 Mar 2022 10:49:39 +0100 Subject: [PATCH 1/3] csf fix segfault --- src/csf/sigma_vector.irp.f | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/csf/sigma_vector.irp.f b/src/csf/sigma_vector.irp.f index 4d409f50..beb827ba 100644 --- a/src/csf/sigma_vector.irp.f +++ b/src/csf/sigma_vector.irp.f @@ -52,10 +52,15 @@ ncfgpersomo = cfg_seniority_index(i+2) else k = 0 - do while(cfg_seniority_index(i+2+k) < ncfgpersomo) - k = k + 2 - ncfgpersomo = cfg_seniority_index(i+2+k) - enddo + if ((i+2+k) < size(cfg_seniority_index,1)) then + do while(cfg_seniority_index(i+2+k) < ncfgpersomo) + k = k + 2 + if ((i+2+k) >= size(cfg_seniority_index,1)) then + exit + endif + ncfgpersomo = cfg_seniority_index(i+2+k) + enddo + endif endif endif ncfg = ncfgpersomo - ncfgprev @@ -75,10 +80,15 @@ ncfgprev = cfg_seniority_index(i+2) else k = 0 - do while(cfg_seniority_index(i+2+k) < ncfgprev) - k = k + 2 - ncfgprev = cfg_seniority_index(i+2+k) - enddo + if ((i+2+k) < size(cfg_seniority_index,1)) then + do while(cfg_seniority_index(i+2+k) < ncfgprev) + k = k + 2 + if ((i+2+k) >= size(cfg_seniority_index,1)) then + exit + endif + ncfgprev = cfg_seniority_index(i+2+k) + enddo + endif endif enddo END_PROVIDER From 8a759e6a943ae3604dc0d7636c4a2bf9da6af03c Mon Sep 17 00:00:00 2001 From: ydamour Date: Thu, 24 Mar 2022 16:14:31 +0100 Subject: [PATCH 2/3] csf remove do while loops --- src/csf/sigma_vector.irp.f | 58 +++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/src/csf/sigma_vector.irp.f b/src/csf/sigma_vector.irp.f index beb827ba..026dd839 100644 --- a/src/csf/sigma_vector.irp.f +++ b/src/csf/sigma_vector.irp.f @@ -51,16 +51,24 @@ if(cfg_seniority_index(i+2) > ncfgpersomo) then ncfgpersomo = cfg_seniority_index(i+2) else - k = 0 - if ((i+2+k) < size(cfg_seniority_index,1)) then - do while(cfg_seniority_index(i+2+k) < ncfgpersomo) - k = k + 2 - if ((i+2+k) >= size(cfg_seniority_index,1)) then - exit - endif - ncfgpersomo = cfg_seniority_index(i+2+k) - enddo - endif + ! l = i+k+2 + ! Loop over l with a constraint to ensure that l <= size(cfg_seniority_index,1)-1 + ! Old version commented just below + do l = min(size(cfg_seniority_index,1)-1, i+2), size(cfg_seniority_index,1)-1, 2 + if (cfg_seniority_index(l) >= ncfgpersomo) then + ncfgpersomo = cfg_seniority_index(l) + endif + enddo + !k = 0 + !if ((i+2+k) < size(cfg_seniority_index,1)) then + ! do while(cfg_seniority_index(i+2+k) < ncfgpersomo) + ! k = k + 2 + ! if ((i+2+k) >= size(cfg_seniority_index,1)) then + ! exit + ! endif + ! ncfgpersomo = cfg_seniority_index(i+2+k) + ! enddo + !endif endif endif ncfg = ncfgpersomo - ncfgprev @@ -79,16 +87,26 @@ if(cfg_seniority_index(i+2) > ncfgprev) then ncfgprev = cfg_seniority_index(i+2) else - k = 0 - if ((i+2+k) < size(cfg_seniority_index,1)) then - do while(cfg_seniority_index(i+2+k) < ncfgprev) - k = k + 2 - if ((i+2+k) >= size(cfg_seniority_index,1)) then - exit - endif - ncfgprev = cfg_seniority_index(i+2+k) - enddo - endif + ! l = i+k+2 + ! Loop over l with a constraint to ensure that l <= size(cfg_seniority_index,1)-1 + ! Old version commented just below + do l = min(size(cfg_seniority_index,1)-1, i+2), size(cfg_seniority_index,1)-1, 2 + print*,'l' + if (cfg_seniority_index(l) >= ncfgprev) then + ncfgprev = cfg_seniority_index(l) + endif + print*,'ncfgprev', ncfgprev + enddo + !k = 0 + !if ((i+2+k) < size(cfg_seniority_index,1)) then + ! do while(cfg_seniority_index(i+2+k) < ncfgprev) + ! k = k + 2 + ! if ((i+2+k) >= size(cfg_seniority_index,1)) then + ! exit + ! endif + ! ncfgprev = cfg_seniority_index(i+2+k) + ! enddo + !endif endif enddo END_PROVIDER From bda895104242464d927be55e4b6a8426e23975c0 Mon Sep 17 00:00:00 2001 From: ydamour Date: Thu, 24 Mar 2022 16:18:51 +0100 Subject: [PATCH 3/3] remove print --- src/csf/sigma_vector.irp.f | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/csf/sigma_vector.irp.f b/src/csf/sigma_vector.irp.f index 026dd839..5aaba9a3 100644 --- a/src/csf/sigma_vector.irp.f +++ b/src/csf/sigma_vector.irp.f @@ -91,11 +91,9 @@ ! Loop over l with a constraint to ensure that l <= size(cfg_seniority_index,1)-1 ! Old version commented just below do l = min(size(cfg_seniority_index,1)-1, i+2), size(cfg_seniority_index,1)-1, 2 - print*,'l' if (cfg_seniority_index(l) >= ncfgprev) then ncfgprev = cfg_seniority_index(l) endif - print*,'ncfgprev', ncfgprev enddo !k = 0 !if ((i+2+k) < size(cfg_seniority_index,1)) then