PC_Particles_t Derived Type

type, private, abstract, extends(ParticleSelector_t) :: PC_Particles_t


Contents


Components

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

The shape is (n_supergroup) -> number_of_spin_orbs

type(AliasSampler_2D_t), private :: J_sampler

The shape is (number_of_spin_orbs, n_supergroup) -> number_of_spin_orbs

class(GASSpec_t), private, allocatable :: GAS_spec
type(SuperGroupIndexer_t), private, pointer :: indexer => null()
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(Draw_t), public, deferred :: draw

  • subroutine Draw_t(this, nI, ilutI, i_sg, elecs, srcs, p) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(ParticleSelector_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(GetPgen_t), public, deferred :: get_pgen

  • pure function GetPgen_t(this, nI, i_sg, I, J) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(ParticleSelector_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)

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