GenRandSymExcitNUMod Module

*** BIASED EXCITATION GENERATION ROUTINES ******!



Contents


Functions

public function IsAOrbSymAllowed(iSpn, OrbA, SpinOrbA, SymProduct, SumMl, SymA, SymB, MlA, MlB, ClassCountUnocc2)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iSpn
integer, intent(in) :: OrbA
integer, intent(in) :: SpinOrbA
integer, intent(in) :: SymProduct
integer, intent(in) :: SumMl
integer, intent(out) :: SymA
integer, intent(out) :: SymB
integer, intent(out) :: MlA
integer, intent(out) :: MlB
integer, intent(in) :: ClassCountUnocc2(ScratchSize)

Return Value logical

public function IsMomentumAllowed(nJ)

Arguments

Type IntentOptional Attributes Name
integer :: nJ(NEl)

Return Value logical

public function IsMomAllowedDet(nJ)

Arguments

Type IntentOptional Attributes Name
integer :: nJ(nEl)

Return Value logical

public function IsMomAllowedDetAnyParent(nJ, parentSym)

Arguments

Type IntentOptional Attributes Name
integer :: nJ(NEl)
type(Symmetry) :: parentSym

Return Value logical


Subroutines

public subroutine gen_rand_excit(nI, iLut, nJ, ilutnJ, 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) :: ilutnJ(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 subroutine CreateDoubExcit(nI, nJ, ClassCountUnocc2, iLut, ExcitMat, tParity, pGen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(out) :: nJ(nel)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer(kind=n_int), intent(in) :: iLut(0:NIfTot)
integer, intent(out) :: ExcitMat(2,maxExcit)
logical, intent(out) :: tParity
real(kind=dp), intent(out) :: pGen

public subroutine FindDoubleProb(ForbiddenOrbs, NExcitA, NExcitB, NExcitOtherWay, pGen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ForbiddenOrbs
integer, intent(in) :: NExcitA
integer, intent(in) :: NExcitB
integer, intent(in) :: NExcitOtherWay
real(kind=dp), intent(out) :: pGen

public subroutine PickBOrb(nI, iSpn, iLut, ClassCountUnocc2, SpinOrbA, OrbA, SymA, OrbB, SymB, nExcit, MlA, MlB, nExcitOtherWay)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: iSpn
integer(kind=n_int), intent(in) :: iLut(0:NIfTot)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer, intent(in) :: SpinOrbA
integer, intent(in) :: OrbA
integer, intent(in) :: SymA
integer, intent(out) :: OrbB
integer, intent(in) :: SymB
integer, intent(out) :: nExcit
integer, intent(in) :: MlA
integer, intent(in) :: MlB
integer, intent(out) :: nExcitOtherWay

public subroutine FindNumForbiddenOrbsNoSym(ForbiddenOrbs, ClassCountUnocc2, iSpn)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: ForbiddenOrbs
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer, intent(in) :: iSpn

public subroutine FindNumForbiddenOrbs(ForbiddenOrbs, ClassCountUnocc2, SymProduct, iSpn, SumMl)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: ForbiddenOrbs
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer, intent(in) :: SymProduct
integer, intent(in) :: iSpn
integer, intent(in) :: SumMl

public subroutine PickAOrb(nI, iSpn, ILUT, ClassCountUnocc2, NExcit, Elec1Ind, Elec2Ind, SpinOrbA, OrbA, SymA, SymB, SymProduct, SumMl, MlA, MlB, ForbiddenOrbs, tAOrbFail)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(NEl)
integer, intent(in) :: iSpn
integer(kind=n_int), intent(in) :: ILUT(0:NIfTot)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer, intent(out) :: NExcit
integer, intent(in) :: Elec1Ind
integer, intent(in) :: Elec2Ind
integer, intent(out) :: SpinOrbA
integer, intent(out) :: OrbA
integer, intent(out) :: SymA
integer, intent(out) :: SymB
integer, intent(in) :: SymProduct
integer, intent(in) :: SumMl
integer, intent(out) :: MlA
integer, intent(out) :: MlB
integer, intent(in) :: ForbiddenOrbs
logical, intent(out) :: tAOrbFail

public subroutine PickElecPair(nI, Elec1Ind, Elec2Ind, SymProduct, iSpn, SumMl, IndInp)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(NEl)
integer, intent(out) :: Elec1Ind
integer, intent(out) :: Elec2Ind
integer, intent(out) :: SymProduct
integer, intent(out) :: iSpn
integer, intent(out) :: SumMl
integer, intent(in) :: IndInp

public subroutine CheckIfSingleExcits(ElecsWNoExcits, ClassCount2, ClassCountUnocc2, nI)

Run through all labels

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: ElecsWNoExcits
integer, intent(in) :: ClassCount2(ScratchSize)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
integer, intent(in) :: nI(NEl)

public subroutine uniform_single_excit_wrapper(nI, ilutI, nJ, ilutJ, ex, tpar, store, pGen)

Wrapper function for creating a uniform single excitation

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) :: ex(2,maxExcit)
logical, intent(out) :: tpar
type(excit_gen_store_type), intent(inout), target :: store
real(kind=dp), intent(out) :: pGen

public subroutine CreateSingleExcit(nI, nJ, ClassCount2, ClassCountUnocc2, ILUT, ExcitMat, tParity, pGen)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer :: nJ(NEl)
integer :: ClassCount2(ScratchSize)
integer :: ClassCountUnocc2(ScratchSize)
integer(kind=n_int) :: ILUT(0:NIfTot)
integer :: ExcitMat(2,maxExcit)
logical :: tParity
real(kind=dp) :: pGen

public subroutine construct_class_counts(nI, CCOcc, CCUnocc)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(out) :: CCOcc(ScratchSize)
integer, intent(out) :: CCUnocc(ScratchSize)

public subroutine calc_pgen_symrandexcit2(nI, ex, ic, ClassCount2, ClassCountUnocc2, pDoub, pGen)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: ex(2,2)
integer, intent(in) :: ic
integer, intent(in) :: ClassCount2(ScratchSize)
integer, intent(in) :: ClassCountUnocc2(ScratchSize)
real(kind=dp), intent(in) :: pDoub
real(kind=dp), intent(out) :: pGen

public subroutine CreateSingleExcitBiased(nI, nJ, iLut, ExcitMat, tParity, ElecsWNoExcits, nParts, WSign, Tau, iCreate)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer :: nJ(NEl)
integer(kind=n_int) :: iLut(0:NIfTot)
integer :: ExcitMat(2,maxExcit)
logical :: tParity
integer :: ElecsWNoExcits
integer :: nParts
real(kind=dp) :: WSign
real(kind=dp) :: Tau
integer :: iCreate

public subroutine CreateDoubExcitBiased(nI, nJ, iLut, ExcitMat, tParity, nParts, WSign, Tau, iCreate)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer :: nJ(NEl)
integer(kind=n_int) :: iLut(0:NIfTot)
integer :: ExcitMat(2,maxExcit)
logical :: tParity
integer :: nParts
real(kind=dp) :: WSign
real(kind=dp) :: Tau
integer :: iCreate

public subroutine CalcAllab(nI, iLut, Elec1Ind, Elec2Ind, SymProduct, iSpn, OrbA, OrbB, nParts, iCreate, Tau)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer(kind=n_int) :: iLut(0:NIfTot)
integer :: Elec1Ind
integer :: Elec2Ind
integer :: SymProduct
integer :: iSpn
integer :: OrbA
integer :: OrbB
integer :: nParts
integer :: iCreate
real(kind=dp) :: Tau

public subroutine CreateDoubExcitLattice(nI, iLutnI, nJ, tParity, ExcitMat, pGen, Elec1Ind, Elec2Ind, iSpn, part_type)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer(kind=n_int) :: iLutnI(0:NIfTot)
integer :: nJ(NEl)
logical :: tParity
integer :: ExcitMat(2,maxExcit)
real(kind=dp) :: pGen
integer :: Elec1Ind
integer :: Elec2Ind
integer :: iSpn
integer, intent(in), optional :: part_type

public subroutine CreateExcitLattice(nI, iLutnI, nJ, tParity, ExcitMat, pGen, part_type)

Arguments

Type IntentOptional Attributes Name
integer :: nI(NEl)
integer(kind=n_int) :: iLutnI(0:NIfTot)
integer :: nJ(NEl)
logical :: tParity
integer :: ExcitMat(2,maxExcit)
real(kind=dp) :: pGen
integer, intent(in), optional :: part_type

public subroutine CalcPGenLattice(Ex, pGen)

Arguments

Type IntentOptional Attributes Name
integer :: Ex(2,2)
real(kind=dp) :: pGen

public subroutine init_excit_gen_store(store)

Arguments

Type IntentOptional Attributes Name
type(excit_gen_store_type), intent(inout) :: store

public subroutine clean_excit_gen_store(store)

Arguments

Type IntentOptional Attributes Name
type(excit_gen_store_type), intent(inout) :: store

public subroutine SpinOrbSymSetup()

SymLabelCounts(2,1:nSymLabels) gives the number of states in each symmetry class. There are therefore equal number of alpha and beta orbitals in each state from which to calculate the unoccupied classcount.

Arguments

None