PC_FastWeightedParticles_t Derived Type

type, public, extends(PC_Particles_t) :: PC_FastWeightedParticles_t


Contents


Components

Type Visibility Attributes Name Initial
logical, public :: use_lookup = .false.

Use a lookup for the supergroup index in global_det_data.

logical, public :: create_lookup = .false.

Create and manage! the supergroup index lookup in global_det_data.


Type-Bound Procedures

procedure, public :: init => init_PC_WeightedParticles_t

  • private subroutine init_PC_WeightedParticles_t(this, GAS_spec, weights, rank_with_info, use_lookup, create_lookup)

    Arguments

    Type IntentOptional Attributes Name
    class(PC_Particles_t), intent(inout) :: this
    class(GASSpec_t), intent(in) :: GAS_spec
    real(kind=dp), intent(in) :: weights(:,:,:)

    w(J, I, i_sg), The weight of picking J after picking I under supergroup i_sg

    integer, intent(in) :: rank_with_info

    The intra-node rank that contains the weights to be used all other arr of all other ranks are ignored (and can be allocated with size 0).

    logical, intent(in) :: use_lookup
    logical, intent(in) :: create_lookup

procedure, public :: finalize => finalize_PC_WeightedParticles_t

procedure, public :: draw => draw_PC_FastWeightedParticles_t

  • private subroutine draw_PC_FastWeightedParticles_t(this, nI, ilutI, i_sg, elecs, srcs, p)

    Arguments

    Type IntentOptional Attributes Name
    class(PC_FastWeightedParticles_t), intent(in) :: this
    integer, intent(in) :: nI(nEl)

    The determinant in nI-format and the supergroup index

    integer(kind=n_int), intent(in) :: ilutI(0:nIfD)

    The determinant in bitmask format

    integer, intent(in) :: i_sg

    The determinant in nI-format and the supergroup index

    integer, intent(out) :: elecs(2)

    The chosen particles and their index in nI. It is guaranteed that scrs(1) < srcs(2).

    integer, intent(out) :: srcs(2)

    The chosen particles and their index in nI. It is guaranteed that scrs(1) < srcs(2).

    real(kind=dp), intent(out) :: p

    The probability of drawing . This is the probability of drawing two particles from a given determinant regardless of order.

procedure, public :: get_pgen => get_pgen_PC_FastWeightedParticles_t

  • private pure function get_pgen_PC_FastWeightedParticles_t(this, nI, i_sg, I, J) result(p)

    Calculates

    This is the probability of drawing two particles from a given determinant regardless of order.

    Note that the unordered probability is given by the ordered probability as: In addition we have so we have to actually calculate the probability of drawing two given particles in different order.

    Arguments

    Type IntentOptional Attributes Name
    class(PC_FastWeightedParticles_t), intent(in) :: this
    integer, intent(in) :: nI(nEl)

    The determinant in nI-format and the supergroup index

    integer, intent(in) :: i_sg

    The determinant in nI-format and the supergroup index

    integer, intent(in) :: I

    The particles.

    integer, intent(in) :: J

    The particles.

    Return Value real(kind=dp)