bitmask module

The central part of this module is the bitmasks_module.f90 file. It contains the constants that will be used to define on which kind of integer the bitmasks will be defined.

In the program, to represent a determinant as a pair of bitstrings, the determinant should be defined as

use bitmasks
integer(bit_kind)  :: determinant(N_int,2)

bitmasks_routines.irp.f contains helper routines to manipulate bitmask, like transforming a bit string to a list of integers for example.

bit_kind_shift, bit_kind_size and bit_kind are supposed to be consistent:

2**bit_kind_shift = bit_kind_size
bit_kind = bit_kind_size / 8

For an example of how to use the bitmaks, see the file example.irp.f.

Providers

act_bitmask

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

cas_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: cas_bitmask  (N_int,2,N_cas_bitmask)

Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference)

Needs:

Needed by:

closed_shell_ref_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: closed_shell_ref_bitmask     (N_int,2)

Needs:

core_bitmask

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

core_inact_act_bitmask_4

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: core_inact_act_bitmask_4     (N_int,4)

Needs:

Needed by:

core_inact_virt_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: inact_virt_bitmask   (N_int,2)
integer(bit_kind), allocatable  :: core_inact_virt_bitmask      (N_int,2)

Reunion of the inactive and virtual bitmasks

Needs:

del_bitmask

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

dim_list_act_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: dim_list_core_orb
integer :: dim_list_inact_orb
integer :: dim_list_virt_orb
integer :: dim_list_act_orb
integer :: dim_list_del_orb

dimensions for the allocation of list_inact, list_virt, list_core and list_act it is at least 1

Needs:

Needed by:

dim_list_core_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: dim_list_core_orb
integer :: dim_list_inact_orb
integer :: dim_list_virt_orb
integer :: dim_list_act_orb
integer :: dim_list_del_orb

dimensions for the allocation of list_inact, list_virt, list_core and list_act it is at least 1

Needs:

Needed by:

dim_list_del_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: dim_list_core_orb
integer :: dim_list_inact_orb
integer :: dim_list_virt_orb
integer :: dim_list_act_orb
integer :: dim_list_del_orb

dimensions for the allocation of list_inact, list_virt, list_core and list_act it is at least 1

Needs:

Needed by:

dim_list_inact_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: dim_list_core_orb
integer :: dim_list_inact_orb
integer :: dim_list_virt_orb
integer :: dim_list_act_orb
integer :: dim_list_del_orb

dimensions for the allocation of list_inact, list_virt, list_core and list_act it is at least 1

Needs:

Needed by:

dim_list_virt_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: dim_list_core_orb
integer :: dim_list_inact_orb
integer :: dim_list_virt_orb
integer :: dim_list_act_orb
integer :: dim_list_del_orb

dimensions for the allocation of list_inact, list_virt, list_core and list_act it is at least 1

Needs:

Needed by:

full_ijkl_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: full_ijkl_bitmask    (N_int)

Bitmask to include all possible MOs

Needs:

  • mo_class

Needed by:

full_ijkl_bitmask_4

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: full_ijkl_bitmask_4  (N_int,4)

Needs:

Needed by:

generators_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: generators_bitmask   (N_int,2,6,N_generators_bitmask)

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

Needs:

generators_bitmask_restart

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: generators_bitmask_restart   (N_int,2,6,N_generators_bitmask_restart)

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

Needs:

Needed by:

hf_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: hf_bitmask   (N_int,2)

Hartree Fock bit mask

Needs:

  • elec_alpha_num
  • elec_beta_num

Needed by:

i_bitmask_gen

File : bitmask/bitmasks.irp.f

integer :: i_bitmask_gen

Current bitmask for the generators

inact_bitmask

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

inact_virt_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: inact_virt_bitmask   (N_int,2)
integer(bit_kind), allocatable  :: core_inact_virt_bitmask      (N_int,2)

Reunion of the inactive and virtual bitmasks

Needs:

index_holes_bitmask

File : bitmask/modify_bitmasks.irp.f

integer, allocatable    :: index_holes_bitmask  (3)

Index of the holes in the generators_bitmasks

index_particl_bitmask

File : bitmask/modify_bitmasks.irp.f

integer, allocatable    :: index_particl_bitmask        (3)

Index of the holes in the generators_bitmasks

list_act

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_act_reverse

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_core

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_core_inact_act

File : bitmask/bitmasks.irp.f

integer, allocatable    :: list_core_inact_act  (n_core_inact_act_orb)
integer, allocatable    :: list_core_inact_act_reverse  (mo_num)

Needs:

list_core_inact_act_reverse

File : bitmask/bitmasks.irp.f

integer, allocatable    :: list_core_inact_act  (n_core_inact_act_orb)
integer, allocatable    :: list_core_inact_act_reverse  (mo_num)

Needs:

list_core_reverse

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_del

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_del_reverse

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_inact

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_inact_reverse

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_virt

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

list_virt_reverse

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

mpi_bit_kind

File : bitmask/mpi.irp.f

integer :: mpi_bit_kind

MPI bit kind type

n_act_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: n_core_orb
integer :: n_inact_orb
integer :: n_act_orb
integer :: n_virt_orb
integer :: n_del_orb

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

  • mo_class

Needed by:

n_cas_bitmask

File : bitmask/bitmasks.irp.f

integer :: n_cas_bitmask

Number of bitmasks for CAS

Needs:

Needed by:

n_core_inact_act_orb

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: reunion_of_core_inact_act_bitmask    (N_int,2)
integer :: n_core_inact_act_orb

Reunion of the core, inactive and active bitmasks

Needs:

Needed by:

n_core_inact_orb

File : bitmask/bitmasks.irp.f

integer :: n_core_inact_orb

Needs:

n_core_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: n_core_orb
integer :: n_inact_orb
integer :: n_act_orb
integer :: n_virt_orb
integer :: n_del_orb

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

  • mo_class

Needed by:

n_core_orb_allocate

File : bitmask/bitmasks.irp.f

integer :: n_core_orb_allocate

Needs:

n_del_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: n_core_orb
integer :: n_inact_orb
integer :: n_act_orb
integer :: n_virt_orb
integer :: n_del_orb

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

  • mo_class

Needed by:

n_generators_bitmask

File : bitmask/bitmasks.irp.f

integer :: n_generators_bitmask

Number of bitmasks for generators

Needs:

Needed by:

n_generators_bitmask_restart

File : bitmask/bitmasks.irp.f

integer :: n_generators_bitmask_restart

Number of bitmasks for generators

Needs:

Needed by:

n_inact_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: n_core_orb
integer :: n_inact_orb
integer :: n_act_orb
integer :: n_virt_orb
integer :: n_del_orb

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

  • mo_class

Needed by:

n_inact_orb_allocate

File : bitmask/bitmasks.irp.f

integer :: n_inact_orb_allocate

Needs:

n_int

File : bitmask/bitmasks.irp.f

integer :: n_int

Number of 64-bit integers needed to represent determinants as binary strings

Needs:

Needed by:

n_virt_orb

File : bitmask/core_inact_act_virt.irp.f

integer :: n_core_orb
integer :: n_inact_orb
integer :: n_act_orb
integer :: n_virt_orb
integer :: n_del_orb

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

  • mo_class

Needed by:

n_virt_orb_allocate

File : bitmask/bitmasks.irp.f

integer :: n_virt_orb_allocate

Needs:

ref_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: ref_bitmask  (N_int,2)

Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask

Needs:

Needed by:

reunion_of_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: reunion_of_bitmask   (N_int,2)

Reunion of the inactive, active and virtual bitmasks

Needs:

reunion_of_cas_inact_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: reunion_of_cas_inact_bitmask (N_int,2)

Reunion of the inactive, active and virtual bitmasks

Needs:

reunion_of_core_inact_act_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: reunion_of_core_inact_act_bitmask    (N_int,2)
integer :: n_core_inact_act_orb

Reunion of the core, inactive and active bitmasks

Needs:

Needed by:

reunion_of_core_inact_bitmask

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: reunion_of_core_inact_bitmask        (N_int,2)

Reunion of the core and inactive and virtual bitmasks

Needs:

Needed by:

unpaired_alpha_electrons

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: unpaired_alpha_electrons     (N_int)

Bitmask reprenting the unpaired alpha electrons in the HF_bitmask

Needs:

virt_bitmask

File : bitmask/core_inact_act_virt.irp.f

integer, allocatable    :: list_inact   (dim_list_inact_orb)
integer, allocatable    :: list_virt    (dim_list_virt_orb)
integer, allocatable    :: list_inact_reverse   (mo_num)
integer, allocatable    :: list_virt_reverse    (mo_num)
integer, allocatable    :: list_del_reverse     (mo_num)
integer, allocatable    :: list_del     (mo_num)
integer, allocatable    :: list_core    (dim_list_core_orb)
integer, allocatable    :: list_core_reverse    (mo_num)
integer, allocatable    :: list_act     (dim_list_act_orb)
integer, allocatable    :: list_act_reverse     (mo_num)
integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)

inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual list_act(i) = index of the ith active orbital

list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital

Needs:

Needed by:

virt_bitmask_4

File : bitmask/bitmasks.irp.f

integer(bit_kind), allocatable  :: virt_bitmask_4       (N_int,4)

Needs:

Subroutines / functions

bitstring_to_hexa:()

File : bitmask/bitmasks_routines.irp.f

subroutine bitstring_to_hexa( output, string, Nint )

Transform a bit string to a string in hexadecimal format for printing

Called by:

  • debug_det()
  • debug_spindet()
bitstring_to_list:()

File : bitmask/bitmasks_routines.irp.f

subroutine bitstring_to_list( string, list, n_elements, Nint)

Gives the inidices(+1) of the bits set to 1 in the bit string

Called by:

  • add_integrals_to_map()
  • add_integrals_to_map_erf()
  • add_integrals_to_map_no_exit_34()
  • add_integrals_to_map_three_indices()
  • create_microlist()
  • example_bitmask()
bitstring_to_str:()

File : bitmask/bitmasks_routines.irp.f

subroutine bitstring_to_str( output, string, Nint )

Transform a bit string to a string for printing

Called by:

  • add_integrals_to_map()
  • add_integrals_to_map_erf()
  • add_integrals_to_map_three_indices()
  • example_bitmask()
  • print_det()
  • print_spindet()
broadcast_chunks_bit_kind:()

File : bitmask/mpi.irp.f

subroutine broadcast_chunks_bit_kind(A, LDA)

Broadcast with chunks of ~2GB

clear_bit_to_integer:()

File : bitmask/bitmasks_routines.irp.f

subroutine clear_bit_to_integer(i_physical,key,Nint)

set to 0 the bit number i_physical in the bitstring key

Called by:

  • example_bitmask()
debug_det:()

File : bitmask/bitmasks_routines.irp.f

subroutine debug_det(string,Nint)

Subroutine to print the content of a determinant in ‘+-‘ notation and hexadecimal representation.

Called by:

  • build_fock_tmp()
  • example_determinants()
  • get_excitation_degree_vector_mono_or_exchange_verbose()
  • number_of_holes_verbose()
  • number_of_particles_verbose()
  • routine_example_psi_det()

Calls:

  • bitstring_to_hexa()
  • print_det()
debug_spindet:()

File : bitmask/bitmasks_routines.irp.f

subroutine debug_spindet(string,Nint)

Subroutine to print the content of a determinant in ‘+-‘ notation and hexadecimal representation.

Calls:

  • bitstring_to_hexa()
  • print_spindet()
example_bitmask:()

File : bitmask/example.irp.f

subroutine example_bitmask

subroutine that illustrates the main features available in bitmask

Needs:

Calls:

  • bitstring_to_list()
  • bitstring_to_str()
  • clear_bit_to_integer()
  • set_bit_to_integer()
initialize_bitmask_to_restart_ones:()

File : bitmask/modify_bitmasks.irp.f

subroutine initialize_bitmask_to_restart_ones

Initialization of the generators_bitmask to the restart bitmask

Needs:

is_a_1h:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_1h(key_in)

Needs:

is_a_1h1p:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_1h1p(key_in)

Needs:

is_a_1h2p:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_1h2p(key_in)

Needs:

is_a_1p:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_1p(key_in)

Needs:

is_a_2h:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_2h(key_in)

Needs:

is_a_2h1p:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_2h1p(key_in)

Needs:

is_a_2p:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_2p(key_in)

Needs:

is_a_two_holes_two_particles:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_a_two_holes_two_particles(key_in)

logical function that returns True if the determinant ‘key_in’ belongs to the 2h-2p excitation class of the DDCI space this is calculated using the CAS_bitmask that defines the active orbital space, the inact_bitmasl that defines the inactive oribital space and the virt_bitmask that defines the virtual orbital space

Needs:

is_i_in_virtual:()

File : bitmask/bitmask_cas_routines.irp.f

logical function is_i_in_virtual(i)

Needs:

is_the_hole_in_det:()

File : bitmask/find_hole.irp.f

logical function is_the_hole_in_det(key_in,ispin,i_hole)

Needs:

is_the_particl_in_det:()

File : bitmask/find_hole.irp.f

logical function is_the_particl_in_det(key_in,ispin,i_particl)

Needs:

list_to_bitstring:()

File : bitmask/bitmasks_routines.irp.f

subroutine list_to_bitstring( string, list, n_elements, Nint)

Returns the physical string “string(N_int,2)” from the array of occupations “list(N_int*bit_kind_size,2)

Called by:

modify_bitmasks_for_hole:()

File : bitmask/modify_bitmasks.irp.f

subroutine modify_bitmasks_for_hole(i_hole)

modify the generators_bitmask in order that one can only excite the electrons occupying i_hole

Needs:

modify_bitmasks_for_hole_in_out:()

File : bitmask/modify_bitmasks.irp.f

subroutine modify_bitmasks_for_hole_in_out(i_hole)

modify the generators_bitmask in order that one can only excite the electrons occupying i_hole

Needs:

modify_bitmasks_for_particl:()

File : bitmask/modify_bitmasks.irp.f

subroutine modify_bitmasks_for_particl(i_part)

modify the generators_bitmask in order that one can only excite the electrons to the orbital i_part

Needs:

number_of_holes:()

File : bitmask/bitmask_cas_routines.irp.f

integer function number_of_holes(key_in)

Function that returns the number of holes in the inact space

Needs:

number_of_holes_verbose:()

File : bitmask/bitmask_cas_routines.irp.f

integer function number_of_holes_verbose(key_in)

function that returns the number of holes in the inact space

Needs:

Calls:

  • debug_det()
number_of_particles:()

File : bitmask/bitmask_cas_routines.irp.f

integer function number_of_particles(key_in)

function that returns the number of particles in the virtual space

Needs:

number_of_particles_verbose:()

File : bitmask/bitmask_cas_routines.irp.f

integer function number_of_particles_verbose(key_in)

function that returns the number of particles in the inact space

Needs:

Calls:

  • debug_det()
print_det:()

File : bitmask/bitmasks_routines.irp.f

subroutine print_det(string,Nint)

Subroutine to print the content of a determinant using the ‘+-‘ notation

Called by:

  • debug_det()
  • example_determinants()
  • print_generators_bitmasks_holes()
  • print_generators_bitmasks_holes_for_one_generator()
  • print_generators_bitmasks_particles()
  • print_generators_bitmasks_particles_for_one_generator()

Calls:

  • bitstring_to_str()
print_generators_bitmasks_holes:()

File : bitmask/modify_bitmasks.irp.f

subroutine print_generators_bitmasks_holes

Needs:

Calls:

  • print_det()
print_generators_bitmasks_holes_for_one_generator:()

File : bitmask/modify_bitmasks.irp.f

subroutine print_generators_bitmasks_holes_for_one_generator(i_gen)

Needs:

Calls:

  • print_det()
print_generators_bitmasks_particles:()

File : bitmask/modify_bitmasks.irp.f

subroutine print_generators_bitmasks_particles

Needs:

Calls:

  • print_det()
print_generators_bitmasks_particles_for_one_generator:()

File : bitmask/modify_bitmasks.irp.f

subroutine print_generators_bitmasks_particles_for_one_generator(i_gen)

Needs:

Calls:

  • print_det()
print_spindet:()

File : bitmask/bitmasks_routines.irp.f

subroutine print_spindet(string,Nint)

Subroutine to print the content of a determinant using the ‘+-‘ notation

Called by:

  • debug_spindet()

Calls:

  • bitstring_to_str()
set_bit_to_integer:()

File : bitmask/bitmasks_routines.irp.f

subroutine set_bit_to_integer(i_physical,key,Nint)

set to 1 the bit number i_physical in the bitstring key

Called by:

  • example_bitmask()
set_bitmask_hole_as_input:()

File : bitmask/modify_bitmasks.irp.f

subroutine set_bitmask_hole_as_input(input_bimask)

set the generators_bitmask for the holes as the input_bimask

Needs:

Touches:

set_bitmask_particl_as_input:()

File : bitmask/modify_bitmasks.irp.f

subroutine set_bitmask_particl_as_input(input_bimask)

set the generators_bitmask for the particles as the input_bimask

Needs:

Touches: