guga_prop_vec_pchb_singles_main Module



Variables

Type Visibility Attributes Name Initial
real(kind=dp), public :: scale_down_exch_singles = 1._dp
type(PropVec_PCHB_SinglesOptions_vals_t), private, parameter :: option_vals = PropVec_PCHB_SinglesOptions_vals_t()

Derived Types

type, private, extends(EnumBase_t) ::  PropVec_PCHB_SinglesAlgorithm_t

Components

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

Type-Bound Procedures

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

Components

Type Visibility Attributes Name Initial
type(PropVec_PCHB_SinglesAlgorithm_t), public :: UNIF_UNIF = PropVec_PCHB_SinglesAlgorithm_t(1, 'UNIF:UNIF')
type(PropVec_PCHB_SinglesAlgorithm_t), public :: FULL_FULL = PropVec_PCHB_SinglesAlgorithm_t(2, 'FULL:FULL')
type(PropVec_PCHB_SinglesAlgorithm_t), public :: UNIF_FULL = PropVec_PCHB_SinglesAlgorithm_t(3, 'UNIF:FULL')
type(PropVec_PCHB_SinglesAlgorithm_t), public :: UNIF_XNEW = PropVec_PCHB_SinglesAlgorithm_t(4, 'UNIF:XNEW')

Type-Bound Procedures

procedure, public, nopass :: from_str => alg_from_str

type, public ::  PropVec_PCHB_SinglesOptions_t

Components

Type Visibility Attributes Name Initial
type(PropVec_PCHB_SinglesAlgorithm_t), public :: algorithm
type(PropVec_PCHB_SinglesWeighting_t), public :: weighting

Type-Bound Procedures

procedure, public :: is_valid
procedure, public :: to_str => to_str_singles

Components

Type Visibility Attributes Name Initial
type(PropVec_PCHB_SinglesAlgorithm_vals_t), public :: algorithm = PropVec_PCHB_SinglesAlgorithm_vals_t()
type(PropVec_PCHB_SinglesWeighting_vals_t), public :: weighting = PropVec_PCHB_SinglesWeighting_vals_t()

type, private, extends(SinglesGUGABase_t) ::  PropVec_UniformExcGenerator_t

The precomputed PropVec uniform excitation generator

Components

Type Visibility Attributes Name Initial
class(AlsoGUGA_PropertyIndexer_t), private, allocatable :: indexer
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.

integer(kind=n_int), private, allocatable :: allowed_holes(:,:,:)

Bitmask for the allowed holes for a single excitation

integer, private :: L_spat_bits = -1

The number of integer(n_int) numbers to store information about spatial orbitals as bitmask

Type-Bound Procedures

procedure, public :: init => init_PropVec_UniformExcGenerator_t
procedure, public :: finalize => PropVec_singles_uniform_finalize
procedure, private :: get_valid_orbs
procedure, public :: calc_pgen => calc_pgen_uniform_singles
procedure, public :: pickOrbitals => pickOrbitals_single

type, private, abstract, extends(SinglesGUGABase_t) ::  PropVec_Weighted_t

The precomputed PropVec uniform excitation generator

Components

Type Visibility Attributes Name Initial
class(AlsoGUGA_PropertyIndexer_t), private, allocatable :: indexer
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_1D_t), private :: I_sampler

The shape is (n_prop_vec) -> 2 * nSpatOrbs

Read more…
type(AliasSampler_2D_t), private :: A_sampler

The shape is (nSpatOrbs, n_prop_vec) -> 2 * nSpatOrbs

Read more…
procedure(get_weight_t), private, pointer, nopass :: get_weight => null()
type(UnoccupiedGetter_t), private :: unoccupied

Type-Bound Procedures

procedure(SinglesPickOrbitals_t), public, deferred :: pickOrbitals
procedure(SinglesCalcPgen_t), public, deferred :: calc_pgen
procedure, public :: init => init_PropVec_Weighted_t
procedure, public :: finalize => finalize_PropVec_Weighted_t

type, private, extends(PropVec_Weighted_t) ::  SinglesPropVec_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-Bound Procedures

procedure, public :: init => init_PropVec_Weighted_t
procedure, public :: finalize => finalize_PropVec_Weighted_t
procedure, public :: calc_pgen => calc_pgen_FullFull
procedure, public :: pickOrbitals => pickOrbitals_FullFull

type, private, extends(PropVec_Weighted_t) ::  SinglesPropVec_UnifFull_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-Bound Procedures

procedure, public :: init => init_PropVec_Weighted_t
procedure, public :: finalize => finalize_PropVec_Weighted_t
procedure, public :: calc_pgen => calc_pgen_UnifFull
procedure, public :: pickOrbitals => pickOrbitals_UnifFull

type, private, extends(SinglesGUGABase_t) ::  UnifXnew_t

The precomputed PropVec uniform excitation generator

Components

Type Visibility Attributes Name Initial
class(AlsoGUGA_PropertyIndexer_t), private, allocatable :: indexer
logical, public :: use_lookup = .false.
logical, public :: create_lookup = .false.
type(AliasSampler_3D_t), private :: A_sampler

The shape is (nSpatOrbs: i, stepvector: i, n_prop_vec: i_sg) -> 2 * nSpatOrbs

procedure(get_weight_t), private, pointer, nopass :: get_weight => null()
type(UnoccupiedGetter_t), private :: unoccupied

Type-Bound Procedures

procedure, public :: init => init_UnifXnew_t
procedure, public :: finalize => finalize_UnifXnew_t
procedure, public :: pickOrbitals => pickOrbitals_UnifXnew_t
procedure, public :: calc_pgen => calc_pgen_UnifXnew_t

Functions

private elemental function is_valid(this)

Arguments

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

Return Value logical

private pure function symmetry_allowed(exc)

Arguments

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

Return Value logical

private function get_valid_orbs(this, csf_i, src_orb) result(valid_orbs)

Arguments

Type IntentOptional Attributes Name
class(PropVec_UniformExcGenerator_t), intent(in) :: this
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: src_orb

Return Value integer, allocatable, (:)

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

Arguments

Type IntentOptional Attributes Name
class(PropVec_UniformExcGenerator_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 elemental function alg_from_str(str) result(res)

Arguments

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

Return Value type(PropVec_PCHB_SinglesAlgorithm_t)

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

Arguments

Type IntentOptional Attributes Name
class(SinglesPropVec_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
type(ExcitationInformation_t), intent(in) :: excitInfo

Return Value real(kind=dp)

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

Arguments

Type IntentOptional Attributes Name
class(SinglesPropVec_UnifFull_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 function calc_pgen_UnifXnew_t(this, nI, ilutI, csf_i, excitInfo) result(pgen)

Arguments

Type IntentOptional Attributes Name
class(UnifXnew_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 to_str_algorithm(algorithm) result(res)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_SinglesAlgorithm_t), intent(in) :: algorithm

Return Value character(len=9)

private pure function to_str_singles(singles_options) result(res)

Arguments

Type IntentOptional Attributes Name
class(PropVec_PCHB_SinglesOptions_t), intent(in) :: singles_options

Return Value character(len=:), allocatable


Subroutines

public subroutine allocate_and_init(indexer, options, use_lookup, create_lookup, generator)

Arguments

Type IntentOptional Attributes Name
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
type(PropVec_PCHB_SinglesOptions_t), intent(in) :: options
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup
class(SinglesGUGABase_t), intent(inout), allocatable :: generator

private subroutine init_PropVec_UniformExcGenerator_t(this, indexer, use_lookup, create_lookup)

Arguments

Type IntentOptional Attributes Name
class(PropVec_UniformExcGenerator_t), intent(inout) :: this
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup

private subroutine PropVec_singles_uniform_finalize(this)

Arguments

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

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

Arguments

Type IntentOptional Attributes Name
class(PropVec_UniformExcGenerator_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 init_PropVec_Weighted_t(this, weighting, indexer, use_lookup, create_lookup)

Arguments

Type IntentOptional Attributes Name
class(PropVec_Weighted_t), intent(inout) :: this
type(PropVec_PCHB_SinglesWeighting_t), intent(in) :: weighting
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup

private subroutine finalize_PropVec_Weighted_t(this)

Arguments

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

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

Arguments

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

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

Arguments

Type IntentOptional Attributes Name
class(SinglesPropVec_UnifFull_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 init_UnifXnew_t(this, weighting, indexer, use_lookup, create_lookup, scale_down)

Arguments

Type IntentOptional Attributes Name
class(UnifXnew_t), intent(inout) :: this
type(PropVec_PCHB_SinglesWeighting_t), intent(in) :: weighting
class(AlsoGUGA_PropertyIndexer_t), intent(in) :: indexer
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup
real(kind=dp), intent(in) :: scale_down

Scale down the “exchange” single excitations

private subroutine finalize_UnifXnew_t(this)

Arguments

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

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

Arguments

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