spin-orbital-resolved GASCI-PCHB using the “fast weighted” scheme
GAS PCHB excitation generator for doubles using spin orbitals, with “fast weighting” This means we choose holes via
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | use_lookup | = | .false. |
use a lookup for the supergroup index |
|
logical, | public | :: | create_lookup | = | .false. |
create and manage the supergroup index |
|
class(ParticleSelector_t), | private, | allocatable | :: | particle_selector |
particle selector for getting I, J |
||
type(AliasSampler_2D_t), | private | :: | AB_sampler |
sampler for holes, dubbed (fused index)
It yields
where IJ is a fused index I < J and |
|||
type(SuperGroupIndexer_t), | private, | pointer | :: | indexer | => | null() | |
class(GASSpec_t), | private, | allocatable | :: | GAS_spec | |||
integer, | private, | allocatable | :: | tgtOrbs(:,:) |
procedure , public :: init => GAS_doubles_PCHB_spinorb_init Subroutine | |
procedure , public :: finalize => GAS_doubles_PCHB_spinorb_finalize Subroutine | |
procedure , public :: gen_exc => GAS_doubles_PCHB_spinorb_gen_exc Subroutine | |
procedure , public :: get_pgen => GAS_doubles_PCHB_spinorb_get_pgen Function | |
procedure , public :: gen_all_excits => GAS_doubles_PCHB_spinorb_gen_all_excits Subroutine | |
procedure , private , :: compute_samplers => GAS_doubles_PCHB_spinorb_compute_samplers Subroutine |
calculates the probability of drawing a given double excitation parametrised by the excitation matrix ex
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_t), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | nI(nel) | |||
integer(kind=n_int), | intent(in) | :: | ilutI(0:NIfTot) | |||
integer, | intent(in) | :: | ex(2,maxExcit) |
excitation matrix |
||
integer, | intent(in) | :: | ic |
excitation matrix |
||
integer, | intent(in) | :: | ClassCount2(ScratchSize) | |||
integer, | intent(in) | :: | ClassCountUnocc2(ScratchSize) |
initalises the spinorb-resolved PCHB doubles excitation generator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_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 |
deallocates the sampler and mapper
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_t), | intent(inout) | :: | this |
given the initial determinant (both as nI and ilut), create a random doubles excitation using the Hamiltonian matrix elements as weights
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_t), | intent(inout) | :: | this |
the exctitation generator |
||
integer, | intent(in) | :: | nI(nel) |
determinant to excite from unused in this generator |
||
integer(kind=n_int), | intent(in) | :: | ilutI(0:NIfTot) |
determint from which to excite, ilut format |
||
integer, | intent(out) | :: | nJ(nel) |
the excited determinant upon return excitation order (for doubles generator, always == 2) excitation matrix nI -> nJ |
||
integer(kind=n_int), | intent(out) | :: | ilutJ(0:NifTot) |
excited determinant, ilut format |
||
integer, | intent(in) | :: | exFlag |
determinant to excite from unused in this generator |
||
integer, | intent(out) | :: | ic |
the excited determinant upon return excitation order (for doubles generator, always == 2) excitation matrix nI -> nJ |
||
integer, | intent(out) | :: | ex(2,maxExcit) |
the excited determinant upon return excitation order (for doubles generator, always == 2) excitation matrix nI -> nJ |
||
logical, | intent(out) | :: | tParity |
the parity of the excitation nI -> nJ |
||
real(kind=dp), | intent(out) | :: | pGen |
probability of generating the excitation |
||
real(kind=dp), | intent(out) | :: | hel |
matrix element Hijab |
||
type(excit_gen_store_type), | intent(inout), | target | :: | store | ||
integer, | intent(in), | optional | :: | part_type |
unused in this generator |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_t), | intent(in) | :: | this | |||
integer, | intent(in) | :: | nI(nEl) | |||
integer, | intent(out) | :: | n_excits | |||
integer(kind=n_int), | intent(out), | allocatable | :: | det_list(:,:) |
computes and stores values for the alias (spin-independent) sampling table
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(GAS_PCHB_DoublesSpinOrbFastWeightedExcGenerator_t), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | nBI | |||
type(PCHB_ParticleSelection_t), | intent(in) | :: | PCHB_particle_selection |