PC_Weighted_t Derived Type

type, public, abstract, extends(SingleExcitationGenerator_t) :: PC_Weighted_t


Contents


Components

Type Visibility Attributes Name Initial
type(AliasSampler_1D_t), public :: I_sampler

p(I | i_sg) The probability of picking particle I in the supergroup i_sg.

type(AliasSampler_2D_t), public :: A_sampler

p(A | I, i_sg) The probability of picking the hole A after having picked particle I in the supergroup i_sg.

real(kind=dp), public, allocatable :: weights(:,:,:)

The weights w_{A, I, i_sg} for the excitation of I -> A. They are made independent of the determinant by various approximations: For example setting where runs over all orbitals instead of only the occupied.

class(GASSpec_t), public, allocatable :: GAS_spec

The GAS specification

type(SuperGroupIndexer_t), public, pointer :: indexer => null()

The Supergroup indexer. This is only a pointer because components cannot be targets otherwise. :-(

logical, public :: use_lookup = .false.

Use a lookup for the supergroup index in global_det_data.

logical, public :: create_lookup = .false.
integer(kind=n_int), private :: last_possible_occupied

The last element of the ilut array has some elements which are not used, if the number of spinorbitals is not a multiple of bitsize_n_int. To correctly zero them this bitmask is 1 wherever a determinant could be occupied in the last element, and 0 otherwise.


Type-Bound Procedures

procedure(BoundGenExc_t), public, deferred :: gen_exc

  • subroutine BoundGenExc_t(this, nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tParity, pGen, hel, store, part_type) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(ExcitationGenerator_t), intent(inout) :: this
    integer, intent(in) :: nI(nel)
    integer(kind=n_int), intent(in) :: ilutI(0:NIfTot)
    integer, intent(out) :: nJ(nel)
    integer(kind=n_int), intent(out) :: ilutJ(0:NifTot)
    integer, intent(in) :: exFlag
    integer, intent(out) :: ic
    integer, intent(out) :: ex(2,maxExcit)
    logical, intent(out) :: tParity
    real(kind=dp), intent(out) :: pGen
    real(kind=dp), intent(out) :: hel
    type(excit_gen_store_type), intent(inout), target :: store
    integer, intent(in), optional :: part_type

procedure(BoundGetPgen_t), public, deferred :: get_pgen

  • function BoundGetPgen_t(this, nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(ExcitationGenerator_t), intent(inout) :: this
    integer, intent(in) :: nI(nel)
    integer(kind=n_int), intent(in) :: ilutI(0:NIfTot)
    integer, intent(in) :: ex(2,maxExcit)
    integer, intent(in) :: ic
    integer, intent(in) :: ClassCount2(ScratchSize)
    integer, intent(in) :: ClassCountUnocc2(ScratchSize)

    Return Value real(kind=dp)

procedure, public :: init

  • private subroutine init(this, GAS_spec, use_lookup, create_lookup)

    Arguments

    Type IntentOptional Attributes Name
    class(PC_Weighted_t), intent(inout) :: this
    class(GASSpec_t), intent(in) :: GAS_spec
    logical, intent(in) :: use_lookup
    logical, intent(in) :: create_lookup

procedure, public :: finalize

  • private subroutine finalize(this)

    Arguments

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

procedure, public :: gen_all_excits => gen_all_excits_PC_Weighted_t

  • private subroutine gen_all_excits_PC_Weighted_t(this, nI, n_excits, det_list)

    Arguments

    Type IntentOptional Attributes Name
    class(PC_Weighted_t), intent(in) :: this
    integer, intent(in) :: nI(nEl)
    integer, intent(out) :: n_excits
    integer(kind=n_int), intent(out), allocatable :: det_list(:,:)

procedure, private, :: get_unoccupied

  • private pure subroutine get_unoccupied(this, ilutI, ilut_unoccupied, unoccupied)

    Return a bitmask and enumeration of the unoccupied spin orbitals.

    Arguments

    Type IntentOptional Attributes Name
    class(PC_Weighted_t), intent(in) :: this
    integer(kind=n_int), intent(in) :: ilutI(0:nIfD)
    integer(kind=n_int), intent(out) :: ilut_unoccupied(0:nIfD)
    integer, intent(out) :: unoccupied(nBasis-nEl)