init_block_list Subroutine

public subroutine init_block_list(blocklistname, blocklist, blocklist_ht)

Arguments

Type IntentOptional Attributes Name
character(len=255), intent(in) :: blocklistname
integer(kind=n_int), intent(out), allocatable :: blocklist(:,:)
type(ll_node), intent(out), pointer :: blocklist_ht(:)

Source Code

    subroutine init_block_list(blocklistname, blocklist, blocklist_ht)
        integer(kind=n_int), allocatable, intent(out) :: blocklist(:,:)
        type(ll_node), pointer, intent(out) :: blocklist_ht(:)
        character(len=255), intent(in) :: blocklistname
        integer :: nI_blocked(nel)
        integer(kind=n_int) :: ilut_blocked(0:niftot)
        type(TokenIterator_t) :: tokens
        class(FileReader_t), allocatable :: filereader
        type(buffer_int64_2D_t) :: buffer

        call buffer%init(size(ilut_blocked))

        filereader = ManagingFileReader_t(blocklistname)

        do while (filereader%nextline(tokens, skip_empty=.false.))
            call parse_definedet(tokens, nI_blocked)

            call EncodeBitDet(nI_blocked, ilut_blocked)

            call buffer%push_back(ilut_blocked)

#ifdef DEBUG_
            write(stdout, *) "Determinant/CSF to be blocked:", nI_blocked
#endif
        end do

        call filereader%close()

        call buffer%dump_reset(blocklist)

        write(stdout, *) 'Read in', size(blocklist, 2), 'determinants/CSFs to be blocked.'

        call init_blocklist_hashtable(blocklist, blocklist_ht)

    end subroutine init_block_list