guga_prop_vec_pchb_doubles_select_holes Module



Variables

Type Visibility Attributes Name Initial
type(PCHB_HoleAlgorithm_vals_t), private, parameter :: algorithm_vals = PCHB_HoleAlgorithm_vals_t()

Abstract Interfaces

abstract interface

  • private function calc_hole_pgen_t(this, nI, ilutI, csf_i, ij, i_sg, a, b) result(pgen)

    Arguments

    Type IntentOptional Attributes Name
    class(PropVec_PCHB_Doubles_t), intent(in) :: this
    integer, intent(in) :: nI(nEl)
    integer(kind=n_int), intent(in) :: ilutI(0:GugaBits%len_tot)
    type(CSF_Info_t), intent(in) :: csf_i
    integer, intent(in) :: ij
    integer, intent(in) :: i_sg
    integer, intent(in) :: a
    integer, intent(in) :: b

    Return Value real(kind=dp)

abstract interface

  • private elemental function GetMemoryDemand_t(this)

    Arguments

    Type IntentOptional Attributes Name
    class(PropVec_PCHB_Doubles_t), intent(in) :: this

    Return Value type(ByteSize_t)

abstract interface

  • private subroutine calculate_pchb_sampler_t(this, rank_with_info, ij_weights)

    Arguments

    Type IntentOptional Attributes Name
    class(PropVec_PCHB_Doubles_t), intent(inout) :: this
    integer, intent(in) :: rank_with_info
    real(kind=dp), intent(out), allocatable :: ij_weights(:,:,:)

abstract interface

  • private subroutine additional_finalize_t(this)

    Arguments

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

Derived Types

type, public, extends(EnumBase_t) ::  PCHB_HoleAlgorithm_t

Components

Type Visibility Attributes Name Initial
integer, public :: val
character(len=9), private :: str

Type-Bound Procedures

generic, public :: operator(==) => eq_EnumBase_t
generic, public :: operator(/=) => neq_EnumBase_t
procedure, public :: to_str => HoleAlgorithm_to_str

type, public ::  PCHB_HoleAlgorithm_vals_t

Components

Type Visibility Attributes Name Initial
type(PCHB_HoleAlgorithm_t), public :: FAST_FAST = PCHB_HoleAlgorithm_t(1, 'FAST-FAST')
type(PCHB_HoleAlgorithm_t), public :: FULL_FULL = PCHB_HoleAlgorithm_t(2, 'FULL-FULL')

Type-Bound Procedures

procedure, public, nopass :: from_str => HoleAlgorithm_from_str

type, private, abstract, extends(DoublesGUGABase_t) ::  PropVec_PCHB_Doubles_t

Components

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

Use a lookup for the prop_vec index in global_det_data

logical, public :: create_lookup = .false.

Create and manage! the prop_vec index lookup in global_det_data.

class(ParticleSelector_t), private, allocatable :: particle_selector
type(shared_array_int64_t), private :: all_info_table
type(shared_array_int64_t), private, allocatable :: info_tables(:)
class(AlsoGUGA_PropertyIndexer_t), private, allocatable :: indexer
procedure(get_doubles_weight_t), private, pointer, nopass :: get_weight => null()

Type-Bound Procedures

procedure(DoublesPickOrbitals_t), public, deferred :: pickOrbitals
procedure, public :: init => init_PropVec_PCHB_Doubles_t
procedure, public :: finalize => finalize_GugaAliasSampler_t
procedure, public :: gen_all_distinct
procedure, private :: new_info_table
procedure, private :: set_info_entry
procedure, private :: get_info_entry
procedure, public :: calc_pgen => calc_pgen_Base
procedure, public :: calc_orbital_pgen_contr => calc_orbital_pgen_contr_Base
procedure, public :: calc_orbital_pgen_contr_start => calc_orbital_pgen_contr_start_Base
procedure, public :: calc_orbital_pgen_contr_end => calc_orbital_pgen_contr_end_Base
procedure(calc_hole_pgen_t), private, deferred :: calc_hole_pgen
procedure(calculate_pchb_sampler_t), private, deferred :: setup_pchb_sampler_conditional
procedure(additional_finalize_t), private, deferred :: finalize_pchb_sampler
procedure(GetMemoryDemand_t), public, deferred :: get_memory_demand

type, public, extends(PropVec_PCHB_Doubles_t) ::  PropVec_PCHB_FastFast_t

Components

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

Use a lookup for the prop_vec index in global_det_data

logical, public :: create_lookup = .false.

Create and manage! the prop_vec index lookup in global_det_data.

type(AliasSampler_2D_t), private :: alias_sampler

The shape is (fused_number_of_double_excitations, n_prop_vec)

integer, private, allocatable :: tgtOrbs(:,:)

Type-Bound Procedures

procedure, public :: init => init_PropVec_PCHB_Doubles_t
procedure, public :: finalize => finalize_GugaAliasSampler_t
procedure, public :: gen_all_distinct
procedure, public :: calc_pgen => calc_pgen_Base
procedure, public :: calc_orbital_pgen_contr => calc_orbital_pgen_contr_Base
procedure, public :: calc_orbital_pgen_contr_start => calc_orbital_pgen_contr_start_Base
procedure, public :: calc_orbital_pgen_contr_end => calc_orbital_pgen_contr_end_Base
procedure, public :: pickOrbitals => pickOrbitals_FastFast
procedure, private :: calc_hole_pgen => calc_hole_pgen_FastFast
procedure, private :: setup_pchb_sampler_conditional => setup_pchb_sampler_conditional_FastFast
procedure, private :: finalize_pchb_sampler => finalize_pchb_sampler_FastFast
procedure, public :: get_memory_demand => get_memory_demand_FastFast

type, public, extends(PropVec_PCHB_Doubles_t) ::  PropVec_PCHB_FullFull_t

Components

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

Use a lookup for the prop_vec index in global_det_data

logical, public :: create_lookup = .false.

Create and manage! the prop_vec index lookup in global_det_data.

type(AliasSampler_2D_t), private :: A_sampler

The shape is (fused_number_of_double_excitations, n_prop_vec) -> orbitals

type(AliasSampler_3D_t), private :: B_sampler

The shape is (orbitals, fused_number_of_double_excitations, n_prop_vec) -> orbitals

type(UnoccupiedGetter_t), private :: unoccupied

Type-Bound Procedures

procedure, public :: init => init_PropVec_PCHB_Doubles_t
procedure, public :: finalize => finalize_GugaAliasSampler_t
procedure, public :: gen_all_distinct
procedure, public :: calc_pgen => calc_pgen_Base
procedure, public :: calc_orbital_pgen_contr => calc_orbital_pgen_contr_Base
procedure, public :: calc_orbital_pgen_contr_start => calc_orbital_pgen_contr_start_Base
procedure, public :: calc_orbital_pgen_contr_end => calc_orbital_pgen_contr_end_Base
procedure, public :: pickOrbitals => pickOrbitals_FullFull
procedure, private :: calc_hole_pgen => calc_hole_pgen_FullFull
procedure, private :: setup_pchb_sampler_conditional => setup_pchb_sampler_conditional_FullFull
procedure, private :: finalize_pchb_sampler => finalize_pchb_sampler_FullFull
procedure, public :: get_memory_demand => get_memory_demand_FullFull

Functions

private function get_info_entry(this, iEntry, tgt) result(info)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t) :: this
integer, intent(in) :: iEntry
integer, intent(in) :: tgt

Return Value integer(kind=int64)

private elemental function get_info(idx) result(info)

Arguments

Type IntentOptional Attributes Name
type(ijab_Index_t), intent(in) :: idx

Return Value integer(kind=int64)

private pure function HoleAlgorithm_from_str(str) result(res)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: str

Return Value type(PCHB_HoleAlgorithm_t)

private elemental function symmetry_allowed(exc)

Arguments

Type IntentOptional Attributes Name
type(DistinctDouble_t), intent(in) :: exc

Return Value logical

private elemental function get_memory_demand_FastFast(this) result(res)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FastFast_t), intent(in) :: this

Return Value type(ByteSize_t)

private function calc_hole_pgen_FastFast(this, nI, ilutI, csf_i, ij, i_sg, a, b) result(pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FastFast_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer(kind=n_int), intent(in) :: ilutI(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: ij
integer, intent(in) :: i_sg
integer, intent(in) :: a
integer, intent(in) :: b

Return Value real(kind=dp)

private elemental function get_memory_demand_FullFull(this) result(res)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FullFull_t), intent(in) :: this

Return Value type(ByteSize_t)

private function calc_hole_pgen_FullFull(this, nI, ilutI, csf_i, ij, i_sg, a, b) result(pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FullFull_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer(kind=n_int), intent(in) :: ilutI(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: ij
integer, intent(in) :: i_sg
integer, intent(in) :: a
integer, intent(in) :: b

Return Value real(kind=dp)

private function calc_pgen_Base(this, nI, ilutI, csf_i, excitInfo) result(pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(in) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilutI(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
type(ExcitationInformation_t), intent(in) :: excitInfo

Return Value real(kind=dp)

private pure function gen_all_distinct(this, csf_i, sort_fused_key) result(res)

This function returns all possible excitations for the orbital picker

Read more…

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(in) :: this
type(CSF_Info_t), intent(in) :: csf_i
logical, intent(in), optional :: sort_fused_key

The fused index of the excitations should be sorted.

Return Value type(DistinctDouble_t), allocatable, (:)

private pure function gen_all_distinct_PropVec(indexer, csf_i, sort_fused_key) result(res)

This function returns all possible excitations for the orbital picker

Read more…

Arguments

Type IntentOptional Attributes Name
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
type(CSF_Info_t), intent(in) :: csf_i
logical, intent(in), optional :: sort_fused_key

The fused index of the excitations should be sorted.

Return Value type(DistinctDouble_t), allocatable, (:)

private pure function HoleAlgorithm_to_str(this) result(res)

Arguments

Type IntentOptional Attributes Name
class(PCHB_HoleAlgorithm_t), intent(in) :: this

Return Value character(len=:), allocatable


Subroutines

private subroutine new_info_table(this, nEntries, entrySize)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t) :: this
integer(kind=int64), intent(in) :: nEntries
integer(kind=int64), intent(in) :: entrySize

private subroutine set_info_entry(this, ij, ab, info)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t) :: this
integer, intent(in) :: ij
integer, intent(in) :: ab
integer(kind=int64), intent(in) :: info

private subroutine init_PropVec_PCHB_Doubles_t(this, indexer, particle_selection, weighting_selection, use_lookup, create_lookup)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(inout) :: this
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
type(PCHB_ParticleSelection_t), intent(in) :: particle_selection
type(WeightingChoice_t), intent(in) :: weighting_selection
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup

private subroutine finalize_GugaAliasSampler_t(this)

Arguments

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

private subroutine calc_orbital_pgen_contr_Base(this, nI, ilut, csf_i, occ_orbs, above_cpt, below_cpt)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: occ_orbs(2)
real(kind=dp), intent(out) :: above_cpt
real(kind=dp), intent(out) :: below_cpt

private subroutine calc_orbital_pgen_contr_start_Base(this, nI, ilut, csf_i, occ_orbs, orb_a, orb_pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: occ_orbs(2)
integer, intent(in) :: orb_a
real(kind=dp), intent(out) :: orb_pgen

private subroutine calc_orbital_pgen_contr_end_Base(this, nI, ilut, csf_i, occ_orbs, orb_a, orb_pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_Doubles_t), intent(in) :: this
integer, intent(in) :: nI(nEl)
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: occ_orbs(2)
integer, intent(in) :: orb_a
real(kind=dp), intent(out) :: orb_pgen

private subroutine setup_pchb_sampler_conditional_FastFast(this, rank_with_info, ij_weights)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FastFast_t), intent(inout) :: this
integer, intent(in) :: rank_with_info
real(kind=dp), intent(out), allocatable :: ij_weights(:,:,:)

private subroutine finalize_pchb_sampler_FastFast(this)

Arguments

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

private subroutine pickOrbitals_FastFast(this, nI, ilut, csf_i, excitInfo, pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FastFast_t), intent(in) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
type(ExcitationInformation_t), intent(out) :: excitInfo
real(kind=dp), intent(out) :: pgen

private subroutine setup_pchb_sampler_conditional_FullFull(this, rank_with_info, ij_weights)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FullFull_t), intent(inout) :: this
integer, intent(in) :: rank_with_info
real(kind=dp), intent(out), allocatable :: ij_weights(:,:,:)

private subroutine finalize_pchb_sampler_FullFull(this)

Arguments

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

private subroutine pickOrbitals_FullFull(this, nI, ilut, csf_i, excitInfo, pgen)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_FullFull_t), intent(in) :: this
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilut(0:GugaBits%len_tot)
type(CSF_Info_t), intent(in) :: csf_i
type(ExcitationInformation_t), intent(out) :: excitInfo
real(kind=dp), intent(out) :: pgen