From b5543cb37a8ab47716d1946f59322c0a6f2e7a1d Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 14 Mar 2025 22:34:49 +0100 Subject: [PATCH] Introduced ao_sphe_num --- external/irpf90 | 2 +- src/ao_basis/aos.irp.f | 13 +++++++++++++ src/ao_one_e_ints/ao_ortho_canonical.irp.f | 17 +++++++++-------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/external/irpf90 b/external/irpf90 index 4ab1b175..43160c60 160000 --- a/external/irpf90 +++ b/external/irpf90 @@ -1 +1 @@ -Subproject commit 4ab1b175fc7ed0d96c1912f13dc53579b24157a6 +Subproject commit 43160c60d88d9f61fb97cc0b35477c8eb0df862b diff --git a/src/ao_basis/aos.irp.f b/src/ao_basis/aos.irp.f index d9381015..02eedf53 100644 --- a/src/ao_basis/aos.irp.f +++ b/src/ao_basis/aos.irp.f @@ -22,6 +22,19 @@ BEGIN_PROVIDER [ integer, ao_shell, (ao_num) ] enddo END_PROVIDER +BEGIN_PROVIDER [ integer, ao_sphe_num ] + implicit none + BEGIN_DOC + ! Number of spherical AOs + END_DOC + integer :: n, i + ao_sphe_num=0 + do i=1,shell_num + n = shell_ang_mom(i) + ao_sphe_num += 2*n+1 + enddo +END_PROVIDER + BEGIN_PROVIDER [ integer, ao_sphe_shell, (ao_sphe_num) ] implicit none BEGIN_DOC diff --git a/src/ao_one_e_ints/ao_ortho_canonical.irp.f b/src/ao_one_e_ints/ao_ortho_canonical.irp.f index 4e4d33f0..b19be1e2 100644 --- a/src/ao_one_e_ints/ao_ortho_canonical.irp.f +++ b/src/ao_one_e_ints/ao_ortho_canonical.irp.f @@ -1,6 +1,5 @@ BEGIN_PROVIDER [ double precision, ao_cart_to_sphe_coef, (ao_num,ao_num)] &BEGIN_PROVIDER [ double precision, ao_cart_to_sphe_normalization, (ao_num)] -&BEGIN_PROVIDER [ integer, ao_sphe_num ] implicit none BEGIN_DOC ! Coefficients to go from cartesian to spherical coordinates in the current @@ -11,18 +10,18 @@ integer :: i integer, external :: ao_power_index integer :: ibegin,j,k - integer :: prev + integer :: prev, ao_sphe_count prev = 0 ao_cart_to_sphe_coef(:,:) = 0.d0 ao_cart_to_sphe_normalization(:) = 1.d0 ! Assume order provided by ao_power_index i = 1 - ao_sphe_num = 0 + ao_sphe_count = 0 do while (i <= ao_num) select case ( ao_l(i) ) case (0) - ao_sphe_num += 1 - ao_cart_to_sphe_coef(i,ao_sphe_num) = 1.d0 + ao_sphe_count += 1 + ao_cart_to_sphe_coef(i,ao_sphe_count) = 1.d0 ao_cart_to_sphe_normalization(i) = 1.d0 i += 1 BEGIN_TEMPLATE @@ -30,14 +29,14 @@ if (ao_power(i,1) == $SHELL) then do k=1,size(cart_to_sphe_$SHELL,2) do j=1,size(cart_to_sphe_$SHELL,1) - ao_cart_to_sphe_coef(i+j-1,ao_sphe_num+k) = cart_to_sphe_$SHELL(j,k) + ao_cart_to_sphe_coef(i+j-1,ao_sphe_count+k) = cart_to_sphe_$SHELL(j,k) enddo enddo do j=1,size(cart_to_sphe_$SHELL,1) ao_cart_to_sphe_normalization(i+j-1) = cart_to_sphe_norm_$SHELL(j) enddo i += size(cart_to_sphe_$SHELL,1) - ao_sphe_num += size(cart_to_sphe_$SHELL,2) + ao_sphe_count += size(cart_to_sphe_$SHELL,2) endif SUBST [ SHELL ] 1;; @@ -55,7 +54,9 @@ end select enddo -print *, ao_cart_to_sphe_normalization(:) + if (ao_sphe_count /= ao_sphe_num) then + call qp_bug(irp_here, ao_sphe_count, "ao_sphe_count /= ao_sphe_num") + endif END_PROVIDER BEGIN_PROVIDER [ double precision, ao_cart_to_sphe_inv, (ao_sphe_num,ao_num) ]