From f71086571b25659c0b29e5f17c397c9ce8ed8afe Mon Sep 17 00:00:00 2001 From: Kevin Gasperich Date: Thu, 2 Jul 2020 10:48:20 -0500 Subject: [PATCH] CIS kpts --- src/bitmask/bitmasks.irp.f | 76 +++++++++++++++++++------------------- src/cis/cis.irp.f | 14 +++++-- 2 files changed, 50 insertions(+), 40 deletions(-) diff --git a/src/bitmask/bitmasks.irp.f b/src/bitmask/bitmasks.irp.f index d8580e63..a13644cd 100644 --- a/src/bitmask/bitmasks.irp.f +++ b/src/bitmask/bitmasks.irp.f @@ -343,43 +343,45 @@ END_PROVIDER -!BEGIN_PROVIDER [ integer(bit_kind), generators_bitmask, (N_int,2,6) ] -! implicit none -! BEGIN_DOC -! ! Bitmasks for generator determinants. -! ! (N_int, alpha/beta, hole/particle, generator). -! ! -! ! 3rd index is : -! ! -! ! * 1 : hole for single exc -! ! -! ! * 2 : particle for single exc -! ! -! ! * 3 : hole for 1st exc of double -! ! -! ! * 4 : particle for 1st exc of double -! ! -! ! * 5 : hole for 2nd exc of double -! ! -! ! * 6 : particle for 2nd exc of double -! ! -! END_DOC -! logical :: exists -! PROVIDE ezfio_filename full_ijkl_bitmask -! -! integer :: ispin, i -! do ispin=1,2 -! do i=1,N_int -! generators_bitmask(i,ispin,s_hole ) = reunion_of_inact_act_bitmask(i,ispin) -! generators_bitmask(i,ispin,s_part ) = reunion_of_act_virt_bitmask(i,ispin) -! generators_bitmask(i,ispin,d_hole1) = reunion_of_inact_act_bitmask(i,ispin) -! generators_bitmask(i,ispin,d_part1) = reunion_of_act_virt_bitmask(i,ispin) -! generators_bitmask(i,ispin,d_hole2) = reunion_of_inact_act_bitmask(i,ispin) -! generators_bitmask(i,ispin,d_part2) = reunion_of_act_virt_bitmask(i,ispin) -! enddo -! enddo -! -!END_PROVIDER +BEGIN_PROVIDER [ integer(bit_kind), generators_bitmask_kpts, (N_int,2,6,kpt_num) ] + implicit none + BEGIN_DOC + ! Bitmasks for generator determinants. + ! (N_int, alpha/beta, hole/particle, generator). + ! + ! 3rd index is : + ! + ! * 1 : hole for single exc + ! + ! * 2 : particle for single exc + ! + ! * 3 : hole for 1st exc of double + ! + ! * 4 : particle for 1st exc of double + ! + ! * 5 : hole for 2nd exc of double + ! + ! * 6 : particle for 2nd exc of double + ! + END_DOC + logical :: exists + PROVIDE ezfio_filename full_ijkl_bitmask + + integer :: ispin, i, k + do k=1,kpt_num + do ispin=1,2 + do i=1,N_int + generators_bitmask_kpts(i,ispin,s_hole ,k) = reunion_of_inact_act_bitmask_kpts(i,ispin,k) + generators_bitmask_kpts(i,ispin,s_part ,k) = reunion_of_act_virt_bitmask_kpts(i,ispin,k) + generators_bitmask_kpts(i,ispin,d_hole1,k) = reunion_of_inact_act_bitmask_kpts(i,ispin,k) + generators_bitmask_kpts(i,ispin,d_part1,k) = reunion_of_act_virt_bitmask_kpts(i,ispin,k) + generators_bitmask_kpts(i,ispin,d_hole2,k) = reunion_of_inact_act_bitmask_kpts(i,ispin,k) + generators_bitmask_kpts(i,ispin,d_part2,k) = reunion_of_act_virt_bitmask_kpts(i,ispin,k) + enddo + enddo + enddo + +END_PROVIDER BEGIN_PROVIDER [ integer(bit_kind), reunion_of_core_inact_bitmask_kpts, (N_int,2,kpt_num)] implicit none diff --git a/src/cis/cis.irp.f b/src/cis/cis.irp.f index 5fd76493..63b83552 100644 --- a/src/cis/cis.irp.f +++ b/src/cis/cis.irp.f @@ -57,10 +57,18 @@ subroutine run implicit none integer :: i - if(pseudo_sym)then - call H_apply_cis_sym + if (is_complex) then + if(pseudo_sym)then + call H_apply_cis_sym_kpts + else + call H_apply_cis_kpts + endif else - call H_apply_cis + if(pseudo_sym)then + call H_apply_cis_sym + else + call H_apply_cis + endif endif print *, 'N_det = ', N_det print*,'******************************'