ExcitationInformation_t Derived Type

type, public :: ExcitationInformation_t


Contents


Components

Type Visibility Attributes Name Initial
integer, public :: typ = excit_type%invalid
integer, public :: i = -1
integer, public :: j = -1
integer, public :: k = -1
integer, public :: l = -1
integer, public :: fullStart = -1
integer, public :: fullEnd = -1
integer, public :: secondStart = -1
integer, public :: firstEnd = -1
integer, public :: weight = -1
integer, public :: overlap = -1
integer, public :: gen1 = -2
integer, public :: gen2 = -2
integer, public :: firstGen = -2
integer, public :: lastGen = -2
integer, public :: currentGen = -2
integer, public :: excitLvl = -1
real(kind=dp), public :: order = 0.0_dp
real(kind=dp), public :: order1 = 0.0_dp
logical, public :: valid = .false.
logical, public :: spin_change = .false.
integer, public :: i_sg_start = -1

The supergroup from which the excitation starts. Only relevant for GAS.


Source Code

    type :: ExcitationInformation_t

        integer :: typ = excit_type%invalid
        ! need the involved indices of the excitation: list of integers
        ! for now the convention is, that they are given in an ordered form
        ! and is not related to the involved generators E_{ij} (E_{kl})
        ! directly, for single excitations ofc. only two entries of this
        ! vector needed.
        ! update:
        ! new convention store, original indiced and the ordered ones in
        ! the fullStart, etc. indices.
        integer :: i = -1
        integer :: j = -1
        integer :: k = -1
        integer :: l = -1
        integer :: fullStart = -1
        integer :: fullEnd = -1
        integer :: secondStart = -1
        integer :: firstEnd = -1
        integer :: weight = -1 ! can get rid of this in future!
        ! misuse secondstart firstend -> as weight as it is not used in the typ
        ! of excitations where weights is needed

        ! update:
        ! dont need overlaprange, and nonoverlaprange anywhere, just need to
        ! indicate if its a non-overlap, single overlap or proper double!
        integer :: overlap = -1 ! in rework get rid of this too!
        ! not needed, %typ could be used to get same results
        ! since eg. calcRemainingSwitches is only needed in cases, where there
        ! is atleast one overlap site or in single excitations!
        ! where there is no overlap at all!
        ! 0 ... no overlap or single
        ! 1 ... single overlap
        ! >1 ... proper double overlap

        ! generator flags: necessary information on involved generators.
        ! could store it as flags (0,1) but that would mask the meaning and
        ! also ruin some matrix accessing functionality: so for now store
        ! lowering: -1
        ! raising : +1
        ! weight:    0
        ! maybe need firstGen, lastGen, (even secondGen) maybe?
        integer :: gen1 = -2
        integer :: gen2 = -2
        integer :: firstGen = -2
        integer :: lastGen = -2
        integer :: currentGen = -2
        ! also store excitation level(number of occupation number differences)
        ! in this type, to have everything at one place
        integer :: excitLvl = -1 ! definetly get rid of that! never used
        ! at all! -> UPDATE! with changing of relative probabilities of
        ! those excitations, i definetly need this type of information!
        ! misuse it in such a way, that i store 5 different types of double
        ! excitations!:
        ! 0.. (ii,jj) RR/LL
        ! 1.. (ii,jj) RL
        ! 2.. (ii,jk) RR/LL
        ! 3.. (ii,jk) RL
        ! 4.. (ij,kl) x

        ! additional flags:
        ! for a 4 index double excitation, there is an additional flag
        ! necessary to distiguish between certain kind of equally possible
        ! excitations:
!         logical :: fourFlag
        ! the order of generators is some excitations has an influence on the
        ! relative sign of the x_1 semi-stop matrix elements
        ! use a real here: 1.0 or -1.0 and just multiply x1 element
        real(dp) :: order = 0.0_dp
        real(dp) :: order1 = 0.0_dp
        ! maybe can get rid of order parameters.. since i could in general
        ! always choose such generators that the order parameter is +1
        ! but that did not work beforhand... ? hm
        !
        !TODO maybe more necessary info needed.
        ! add a flag to indicate if the excitation is even possible or other
        ! wise cancel the excitation
        logical :: valid = .false.
        ! for the exact calculation, to avoid calculating non-overlap
        ! contributions to matrix elements which are not possible, due to
        ! spin-coupling changes in the overlap range use a flag to
        ! indicate if a spin_change happened
        logical :: spin_change = .false.

        integer :: i_sg_start = -1
            !! The supergroup from which the excitation starts.
            !! Only relevant for GAS.
    end type ExcitationInformation_t