tc_three_body_excitgen Module



Contents


Variables

Type Visibility Attributes Name Initial
real(kind=dp), public, parameter :: same_spin_perm = 6.0_dp
real(kind=dp), public, parameter :: opp_spin_perm = 2.0_dp

Functions

public function calc_pgen_triple(nI, ex) result(pgen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: ex(2,3)

Return Value real(kind=dp)

public function get_tgt_sym(tgt, src) result(sym)

Determine the symmetry of the third orbital @param[in] tgt array of size 3, the first two entries are two orbitals to excite to @param[in] src array of size 3, the three orbitals excited from @return sym symmetry of the last orbital to excite to

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: tgt(3)
integer, intent(in) :: src(3)

Return Value integer


Subroutines

public subroutine gen_excit_mol_tc(nI, ilut, nJ, ilutJ, exFlag, IC, ExcitMat, tParity, pGen, HElGen, store, part_type)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer(kind=n_int), intent(in) :: ilut(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) :: ExcitMat(2,maxExcit)
logical, intent(out) :: tParity
real(kind=dp), intent(out) :: pGen
real(kind=dp), intent(out) :: HElGen
type(excit_gen_store_type), intent(inout), target :: store
integer, intent(in), optional :: part_type

public pure subroutine calc_pgen_triple_target_nosym(ms, pgen)

Calculates the probability of picking three orbitals with total spin ms without symmetry @param[in] ms total spin of the picked orbitals @param[inout] pgen on call, the probability of picking the electrons, on return, the total probability

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ms
real(kind=dp), intent(inout) :: pgen

public subroutine calc_pgen_triple_target_sym(nI, ex, ms, pgen)

Calculates the probability of picking three orbitals with total spin ms with symmetry @param[in] nI determinant the excitation was made from @param[in] ex the excitation matrix (2x3 array) @param[in] ms total spin of the picked orbitals @param[inout] pgen on call, the probability of picking the electrons, on return, the total probability

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: ex(2,3)
integer, intent(in) :: ms
real(kind=dp), intent(inout) :: pgen

public subroutine setup_mol_tc_excitgen()

Arguments

None

public subroutine precompute_pgen()

Arguments

None

public subroutine init_mol_tc_biases()

Arguments

None

public subroutine generate_triple_excit(nI, ilutI, nJ, ilutJ, ExcitMat, tParity, pGen, HElGen, store)

Arguments

Type IntentOptional Attributes Name
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(out) :: ExcitMat(2,maxExcit)
logical, intent(out) :: tParity
real(kind=dp), intent(out) :: pGen
real(kind=dp), intent(out) :: HElGen
type(excit_gen_store_type), intent(inout), target :: store

public subroutine pick_three_elecs(nI, elecs, src, sym_prod, pgen, ms)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(out) :: elecs(3)
integer, intent(out) :: src(3)
integer, intent(out) :: sym_prod
real(kind=dp), intent(out) :: pgen
integer, intent(out) :: ms

public subroutine get_missing_elec(nI, elecs, nOcc, nPicked, tAlpha, pgen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(inout) :: elecs(3)
integer, intent(in) :: nOcc
integer, intent(in) :: nPicked
logical, intent(in) :: tAlpha
real(kind=dp), intent(inout) :: pgen

public subroutine pick_three_orbs_nosym(nI, tgt, pgen, ms)

picks three random unoccupied orbitals, given the occupied orbitals, ignoring symmetry This is a more efficient version of pick_three_orbs_sym for the case that point-group symmetry is not used

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(out) :: tgt(3)
real(kind=dp), intent(inout) :: pgen
integer, intent(in) :: ms

public subroutine pick_three_orbs_sym(nI, src, tgt, pgen, ms)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: src(3)
integer, intent(out) :: tgt(3)
real(kind=dp), intent(inout) :: pgen
integer, intent(in) :: ms

public subroutine add_permutations_to_pgen(pgen, pgen_pick, pool_sizes, ms, tgt, cc_unocc)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: pgen
real(kind=dp), intent(inout) :: pgen_pick
integer, intent(in) :: pool_sizes(3)
integer, intent(in) :: ms
integer, intent(in) :: tgt(3)
integer, intent(in) :: cc_unocc(ScratchSize)

public subroutine pick_three_orbs_ueg(nI, src, tgt, pgen, ms)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: src(3)
integer, intent(out) :: tgt(3)
real(kind=dp), intent(inout) :: pgen
integer, intent(in) :: ms

public subroutine get_rand_orb(nI, tgt, ms, nPicked, pgen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(inout) :: tgt(3)
integer, intent(in) :: ms
integer, intent(in) :: nPicked
real(kind=dp), intent(inout) :: pgen

public subroutine get_orb_from_pool(tgt, pool, nPicked, pgen)

Randomly pick an orbital from a pre-arranged pool of possible orbitals @param[inout] tgt array of size 3, contains the target orbitals @param[in] pool array containing the available orbitals to pick from @param[in] nPicked number of already picked orbitals @param[inout] pgen probabaility of choosing this orbital

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: tgt(3)
integer, intent(in) :: pool(:)
integer, intent(in) :: nPicked
real(kind=dp), intent(inout) :: pgen

public subroutine create_full_pool(nI, tgt, ms, pool, nPicked)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(inout) :: tgt(3)
integer, intent(in) :: ms
integer, intent(out), allocatable :: pool(:)
integer, intent(in) :: nPicked

public subroutine create_sym_pool(nI, tgt, ms, pool, nPicked, tgt_sym, cc_unocc)

create a pool of unoccupied orbitals with a given symmetry @param[in] nI determinant to excite from @param[in] tgt array of size 3, contains the already picked target orbitals @param[in] ms spin of the pool. ms>0 is alpha, ms<0 beta @param[out] pool on return, a list of the available orbitals to excite to @param[in] nPicked number of already picked target orbitals @param[in] tgt_sym symmetry of the pool @param[in] cc_unocc array containing the number of unoccupied orbitals per irrep

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(inout) :: tgt(3)
integer, intent(in) :: ms
integer, intent(out), allocatable :: pool(:)
integer, intent(in) :: nPicked
integer, intent(in) :: tgt_sym
integer, intent(in) :: cc_unocc(ScratchSize)