gasci_pchb_doubles_spatorb_fastweighted Module

precomputed heat bath implementation for GASCI using spatial orbitals



Contents


Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: SAME_SPIN = 1
integer, private, parameter :: OPP_SPIN_NO_EXCH = 2
integer, private, parameter :: OPP_SPIN_EXCH = 3

Derived Types

The GAS PCHB excitation generator for doubles

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(AliasSampler_3D_t), private :: pchb_samplers

The shape is (fused_number_of_double_excitations, 3, n_supergroup)

type(SuperGroupIndexer_t), private, pointer :: indexer => null()
class(ParticleSelector_t), private, allocatable :: particle_selector
class(GASSpec_t), private, allocatable :: GAS_spec
real(kind=dp), private, allocatable :: pExch(:,:)
integer, private, allocatable :: tgtOrbs(:,:)

Type-Bound Procedures

procedure , public :: init => GAS_doubles_PCHB_init Subroutine
procedure , public :: finalize => GAS_doubles_PCHB_finalize Subroutine
procedure , public :: gen_exc => GAS_doubles_PCHB_gen_exc Subroutine
procedure , public :: get_pgen => GAS_doubles_PCHB_get_pgen Function
procedure , public :: gen_all_excits => GAS_doubles_PCHB_gen_all_excits Subroutine
procedure , private , :: compute_samplers => GAS_doubles_PCHB_compute_samplers Subroutine

Functions

private function GAS_doubles_PCHB_get_pgen(this, nI, ilutI, ex, ic, ClassCount2, ClassCountUnocc2) result(pgen)

@brief Calculate the probability of drawing a given double excitation ex

Read more…

Arguments

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


Subroutines

private subroutine GAS_doubles_PCHB_init(this, GAS_spec, use_lookup, create_lookup, PCHB_particle_selection)

@brief Initialize the pchb excitation generator

Read more…

Arguments

Type IntentOptional Attributes Name
class(GAS_PCHB_DoublesSpatOrbFastWeightedExcGenerator_t), intent(inout) :: this
class(GASSpec_t), intent(in) :: GAS_spec
logical, intent(in) :: use_lookup
logical, intent(in) :: create_lookup
type(PCHB_ParticleSelection_t), intent(in) :: PCHB_particle_selection

private subroutine GAS_doubles_PCHB_finalize(this)

@brief Deallocate the sampler and the mapping ab -> (a,b)

Arguments

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

private subroutine GAS_doubles_PCHB_gen_exc(this, nI, ilutI, nJ, ilutJ, exFlag, ic, ex, tParity, pGen, hel, store, part_type)

@brief Given the initial determinant (both as nI and ilut), create a random double excitation using the hamiltonian matrix elements as weights

Read more…

Arguments

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

private subroutine GAS_doubles_PCHB_compute_samplers(this, nBI, PCHB_particle_selection)

computes and stores values for the alias sampling table n_supergroup * number_of_fused_indices * 3 * (bytes_per_sampler)

Arguments

Type IntentOptional Attributes Name
class(GAS_PCHB_DoublesSpatOrbFastWeightedExcGenerator_t), intent(inout) :: this
integer, intent(in) :: nBI
type(PCHB_ParticleSelection_t), intent(in) :: PCHB_particle_selection

private subroutine GAS_doubles_PCHB_gen_all_excits(this, nI, n_excits, det_list)

Arguments

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