alloc_wf Subroutine

private subroutine alloc_wf(this)

Type Bound

core_space_t

Arguments

Type IntentOptional Attributes Name
class(core_space_t), intent(inout) :: this

Contents

Source Code


Source Code

    subroutine alloc_wf(this)
        class(core_space_t), intent(inout) :: this
        integer :: vec_size
        integer :: ierr
        character(*), parameter :: t_r = "core_space_t%alloc_wf"

        ! Store the operating range of this core space
        if (this%t_global) then
            vec_size = lenof_sign
        else
            vec_size = rep_size
        end if

        ! Allocate the vectors to store the walker amplitudes and the deterministic Hamiltonian.
        allocate(this%full_determ_vecs(vec_size, this%determ_space_size), stat=ierr)
        call LogMemAlloc('full_determ_vecs', this%determ_space_size_int * lenof_sign, &
                         8, t_r, this%FDetermTag, ierr)
        allocate(this%full_determ_vecs_av(vec_size, this%determ_space_size), stat=ierr)
        call LogMemAlloc('full_determ_vecs_av', this%determ_space_size_int * lenof_sign, &
                         8, t_r, this%FDetermAvTag, ierr)
        allocate(this%partial_determ_vecs(vec_size, this%determ_sizes(iProcIndex)), stat=ierr)
        call LogMemAlloc('partial_determ_vecs', int(this%determ_sizes(iProcIndex), &
                                                    sizeof_int) * lenof_sign, 8, t_r, this%PDetermTag, ierr)

        this%full_determ_vecs = 0.0_dp
        this%full_determ_vecs_av = 0.0_dp
        this%partial_determ_vecs = 0.0_dp

    end subroutine alloc_wf