From c9416a5a685249ae2d36e54d5517877a65f994a5 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 28 Feb 2018 16:12:46 +0100 Subject: [PATCH] Comment to clarify Selectors_CASSD --- plugins/Generators_CAS/generators.irp.f | 2 +- plugins/Selectors_CASSD/selectors.irp.f | 20 ++++++-------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/plugins/Generators_CAS/generators.irp.f b/plugins/Generators_CAS/generators.irp.f index 6f96d8e2..67d3cc31 100644 --- a/plugins/Generators_CAS/generators.irp.f +++ b/plugins/Generators_CAS/generators.irp.f @@ -29,7 +29,7 @@ END_PROVIDER END_DOC integer :: i, k, l, m logical :: good - integer :: number_of_holes,number_of_particles + integer, external :: number_of_holes,number_of_particles m=0 do i=1,N_det good = ( number_of_holes(psi_det_sorted(1,1,i)) ==0).and.(number_of_particles(psi_det_sorted(1,1,i))==0 ) diff --git a/plugins/Selectors_CASSD/selectors.irp.f b/plugins/Selectors_CASSD/selectors.irp.f index 167ec66e..516f2498 100644 --- a/plugins/Selectors_CASSD/selectors.irp.f +++ b/plugins/Selectors_CASSD/selectors.irp.f @@ -14,9 +14,13 @@ END_PROVIDER implicit none BEGIN_DOC ! Determinants on which we apply for perturbation. + ! The selectors are equivalent to Selectors_full, but in a different + ! order. The Generators_CAS determinants appear first, then all the + ! others. END_DOC integer :: i, k, l, m logical :: good + integer, external :: number_of_holes,number_of_particles do i=1,N_det_generators do k=1,N_int @@ -33,19 +37,7 @@ END_PROVIDER m=N_det_generators do i=1,N_det - do l=1,n_cas_bitmask - good = .True. - do k=1,N_int - good = good .and. ( & - iand(not(cas_bitmask(k,1,l)), psi_det_sorted(k,1,i)) == & - iand(not(cas_bitmask(k,1,l)), HF_bitmask(k,1)) .and. ( & - iand(not(cas_bitmask(k,2,l)), psi_det_sorted(k,2,i)) == & - iand(not(cas_bitmask(k,2,l)), HF_bitmask(k,2) )) ) - enddo - if (good) then - exit - endif - enddo + good = ( number_of_holes(psi_det_sorted(1,1,i)) ==0).and.(number_of_particles(psi_det_sorted(1,1,i))==0 ) if (.not.good) then m = m+1 do k=1,N_int @@ -57,7 +49,7 @@ END_PROVIDER enddo if (N_det /= m) then print *, N_det, m - stop 'N_det /= m' + stop 'Selectors_CASSD : N_det /= m' endif END_PROVIDER