diff --git a/src/Bitmask/README.rst b/src/Bitmask/README.rst index 4169d164..ada78e34 100644 --- a/src/Bitmask/README.rst +++ b/src/Bitmask/README.rst @@ -57,9 +57,15 @@ Documentation `full_ijkl_bitmask `_ Bitmask to include all possible MOs +`generators_bitmask `_ + Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator) + `hf_bitmask `_ Hartree Fock bit mask +`n_generators_bitmask `_ + Number of bitmasks for generators + `n_int `_ Number of 64-bit integers needed to represent determinants as binary strings diff --git a/src/Bitmask/bitmasks.ezfio_config b/src/Bitmask/bitmasks.ezfio_config new file mode 100644 index 00000000..f402ef02 --- /dev/null +++ b/src/Bitmask/bitmasks.ezfio_config @@ -0,0 +1,8 @@ +bitmasks + N_int integer + bit_kind integer + N_mask_gen integer + generators integer (bitmasks_N_int*bitmasks_bit_kind/4,2,2,bitmasks_N_mask_gen) + N_mask_ref integer + reference integer (bitmasks_N_int*bitmasks_bit_kind/4,2,2,bitmasks_N_mask_ref) + diff --git a/src/Bitmask/bitmasks.irp.f b/src/Bitmask/bitmasks.irp.f index ccdff541..3aa71421 100644 --- a/src/Bitmask/bitmasks.irp.f +++ b/src/Bitmask/bitmasks.irp.f @@ -55,4 +55,57 @@ BEGIN_PROVIDER [ integer(bit_kind), ref_bitmask, (N_int,2)] ref_bitmask = HF_bitmask END_PROVIDER +BEGIN_PROVIDER [ integer, N_generators_bitmask ] + implicit none + BEGIN_DOC + ! Number of bitmasks for generators + END_DOC + logical :: exists + PROVIDE ezfio_filename + + call ezfio_has_bitmasks_N_mask_gen(exists) + if (exists) then + call ezfio_get_bitmasks_N_mask_gen(N_generators_bitmask) + integer :: N_int_check + integer :: bit_kind_check + call ezfio_get_bitmasks_bit_kind(bit_kind_check) + if (bit_kind_check /= bit_kind) then + print *, bit_kind_check, bit_kind + print *, 'Error: bit_kind is not correct in EZFIO file' + endif + call ezfio_get_bitmasks_N_int(N_int_check) + if (N_int_check /= N_int) then + print *, N_int_check, N_int + print *, 'Error: N_int is not correct in EZFIO file' + endif + else + N_generators_bitmask = 1 + call ezfio_set_bitmasks_N_int(N_int) + call ezfio_set_bitmasks_bit_kind(bit_kind) + call ezfio_set_bitmasks_N_mask_gen(N_generators_bitmask) + endif + ASSERT (N_generators_bitmask > 0) + +END_PROVIDER + +BEGIN_PROVIDER [ integer(bit_kind), generators_bitmask, (N_int,2,2,N_generators_bitmask) ] + implicit none + BEGIN_DOC + ! Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator) + END_DOC + logical :: exists + PROVIDE ezfio_filename + + call ezfio_has_bitmasks_generators(exists) + if (exists) then + call ezfio_get_bitmasks_generators(generators_bitmask) + else + generators_bitmask(:,:,1,1) = HF_bitmask + generators_bitmask(:,1,2,1) = iand(not(HF_bitmask(:,1)),full_ijkl_bitmask(:,1)) + generators_bitmask(:,2,2,1) = iand(not(HF_bitmask(:,2)),full_ijkl_bitmask(:,2)) + call ezfio_set_bitmasks_generators(generators_bitmask) + endif + ASSERT (N_generators_bitmask > 0) + +END_PROVIDER diff --git a/src/CISD/H_apply.irp.f b/src/CISD/H_apply.irp.f index b589a38f..15582375 100644 --- a/src/CISD/H_apply.irp.f +++ b/src/CISD/H_apply.irp.f @@ -49,19 +49,16 @@ subroutine H_apply_cisd integer(bit_kind) :: hole_mask(N_int,2) integer(bit_kind) :: particle_mask(N_int,2) - hole_mask(:,1) = HF_bitmask(:,1) - hole_mask(:,2) = HF_bitmask(:,2) - particle_mask(:,1) = iand(not(HF_bitmask(:,1)),full_ijkl_bitmask(:,1)) - particle_mask(:,2) = iand(not(HF_bitmask(:,2)),full_ijkl_bitmask(:,2)) - - PROVIDE N_det_generators - - call H_apply_cisd_OpenMP_monoexc(HF_bitmask, & - hole_mask, particle_mask) - call H_apply_cisd_OpenMP_diexc(HF_bitmask, & - hole_mask, particle_mask, & - hole_mask, particle_mask ) - + + ASSERT (N_det_generators == 1) + PROVIDE H_apply_buffer_allocated mo_bielec_integrals_in_map + + call H_apply_cisd_OpenMP_monoexc(HF_bitmask, & + generators_bitmask(:,:,1,1), generators_bitmask(:,:,2,1)) + call H_apply_cisd_OpenMP_diexc(HF_bitmask, & + generators_bitmask(:,:,1,1), generators_bitmask(:,:,2,1), & + generators_bitmask(:,:,1,1), generators_bitmask(:,:,2,1) ) + call copy_h_apply_buffer_to_wf end diff --git a/src/CISD/README.rst b/src/CISD/README.rst index b50a6e18..a49b2be1 100644 --- a/src/CISD/README.rst +++ b/src/CISD/README.rst @@ -50,8 +50,5 @@ Documentation `repeat_excitation `_ Undocumented -`cisd `_ - Undocumented -