From 0e50ff914920793e8769431b1e31b3e851cd3c30 Mon Sep 17 00:00:00 2001 From: v1j4y Date: Mon, 1 Feb 2021 18:08:13 +0100 Subject: [PATCH] Added function to get # of SOMOs. #143 --- .../configuration_CI_sigma_helpers.irp.f | 13 +++++++++++++ .../configuration_CI_sigma_helpers.org | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/determinants/configuration_CI_sigma_helpers.irp.f b/src/determinants/configuration_CI_sigma_helpers.irp.f index 24365f36..45e6615c 100644 --- a/src/determinants/configuration_CI_sigma_helpers.irp.f +++ b/src/determinants/configuration_CI_sigma_helpers.irp.f @@ -251,6 +251,8 @@ subroutine obtain_connected_I_foralpha(Ialpha, connectedI, nconnectedI, excitati nconnectedI = 0 + p = 0 + q = 0 Isomo = Ialpha(1,1) Idomo = Ialpha(1,2) do i=1,N_configuration @@ -305,3 +307,14 @@ subroutine obtain_connected_I_foralpha(Ialpha, connectedI, nconnectedI, excitati end subroutine obtain_connected_I_foralpha + + function getNSOMO(Icfg) result(NSOMO) + implicit none + integer(bit_kind),intent(in) :: Icfg(N_int,2) + integer :: NSOMO + integer :: i + NSOMO = 0 + do i = 1,N_int + NSOMO += POPCNT(Icfg(i,1)) + enddo + end function getNSOMO diff --git a/src/determinants/configuration_CI_sigma_helpers.org b/src/determinants/configuration_CI_sigma_helpers.org index bf953e10..fc489337 100644 --- a/src/determinants/configuration_CI_sigma_helpers.org +++ b/src/determinants/configuration_CI_sigma_helpers.org @@ -278,6 +278,8 @@ subroutine obtain_connected_I_foralpha(Ialpha, connectedI, nconnectedI, excitati nconnectedI = 0 + p = 0 + q = 0 Isomo = Ialpha(1,1) Idomo = Ialpha(1,2) do i=1,N_configuration @@ -333,3 +335,18 @@ subroutine obtain_connected_I_foralpha(Ialpha, connectedI, nconnectedI, excitati end subroutine obtain_connected_I_foralpha #+end_src + +** Function to get the NSOMOs (seniority) + +#+begin_src f90 :main no :tangle configuration_CI_sigma_helpers.irp.f + function getNSOMO(Icfg) result(NSOMO) + implicit none + integer(bit_kind),intent(in) :: Icfg(N_int,2) + integer :: NSOMO + integer :: i + NSOMO = 0 + do i = 1,N_int + NSOMO += POPCNT(Icfg(i,1)) + enddo + end function getNSOMO +#+end_src