init_guga_data_procPtrs Subroutine

public subroutine init_guga_data_procPtrs()

Arguments

None

Contents


Source Code

    subroutine init_guga_data_procPtrs()
        ! this subroutine initializes the procedure pointer arrays needed for
        ! the matrix element calculation

        ! -------- single excitation procedure pointers:---------------------
        ! and point them to the corresponding functions -> for now write down all
        ! differing functions explicetly, as i can't think of somw fancy way to
        ! include that better
        ! store only procedure pointer to differing functions and convert to
        ! indices in such a way that correct ones get picked!
        ! also store weight-generator matrix element, as it may be of some use
        singleMatElesGUGA(1)%ptr => funZero
        singleMatElesGUGA(2)%ptr => funPlus1
        singleMatElesGUGA(3)%ptr => funMinus1
        singleMatElesGUGA(4)%ptr => funTwo
        singleMatElesGUGA(5)%ptr => funA_0_1
        singleMatElesGUGA(6)%ptr => funA_1_0
        singleMatElesGUGA(7)%ptr => funA_2_1
        singleMatElesGUGA(8)%ptr => funA_1_2
        singleMatElesGUGA(9)%ptr => funC_0
        singleMatElesGUGA(10)%ptr => funC_1
        singleMatElesGUGA(11)%ptr => funC_2
        singleMatElesGUGA(12)%ptr => funOverB_0
        singleMatElesGUGA(13)%ptr => funOverB_1
        singleMatElesGUGA(14)%ptr => minFunOverB_1
        singleMatElesGUGA(15)%ptr => minFunOverB_2

        ! ----------- double excitation procedure pointer --------------------

        ! ------ double excitation x0 matrix element part --------------------
        ! and fill it up with all unique values needed for x=1 matrix elements
        doubleMatEleX1GUGA(1)%ptr => funZero
        doubleMatEleX1GUGA(2)%ptr => funPlus1
        !     doubleMatEleX1GUGA(3)%ptr => funMinus1
        doubleMatEleX1GUGA(3)%ptr => funA_3_2
        doubleMatEleX1GUGA(4)%ptr => minFunA_3_2
        doubleMatEleX1GUGA(5)%ptr => funA_3_2overR2
        doubleMatEleX1GUGA(6)%ptr => minFunA_3_2overR2
        !     doubleMatEleX1GUGA(8)%ptr => funA_0_2overR2
        doubleMatEleX1GUGA(7)%ptr => minFunA_0_2_overR2
        doubleMatEleX1GUGA(8)%ptr => funA_m1_0
        doubleMatEleX1GUGA(9)%ptr => minFunA_m1_0
        doubleMatEleX1GUGA(10)%ptr => funA_m1_0_overR2
        doubleMatEleX1GUGA(11)%ptr => minFunA_m1_0_overR2
        doubleMatEleX1GUGA(12)%ptr => funA_2_0_overR2
        doubleMatEleX1GUGA(13)%ptr => minFunA_2_0_overR2
        doubleMatEleX1GUGA(14)%ptr => funA_2_1
        doubleMatEleX1GUGA(15)%ptr => minFunA_2_1
        doubleMatEleX1GUGA(16)%ptr => funA_2_1_overR2
        doubleMatEleX1GUGA(17)%ptr => minFunA_2_1_overR2
        doubleMatEleX1GUGA(18)%ptr => funA_0_1
        doubleMatEleX1GUGA(19)%ptr => minFunA_0_1
        doubleMatEleX1GUGA(20)%ptr => funA_0_1_overR2
        doubleMatEleX1GUGA(21)%ptr => minFunA_0_1_overR2
        doubleMatEleX1GUGA(22)%ptr => funA_1_2
        doubleMatEleX1GUGA(23)%ptr => minFunA_1_2
        doubleMatEleX1GUGA(24)%ptr => funA_1_0
        doubleMatEleX1GUGA(25)%ptr => minFunA_1_0
        doubleMatEleX1GUGA(26)%ptr => funA_3_1_overR2
        doubleMatEleX1GUGA(27)%ptr => minFunA_3_1_overR2
        !     doubleMatEleX1GUGA(30)%ptr => funA_m1_1_overR2
        doubleMatEleX1GUGA(28)%ptr => minFunA_m1_1_overR2
        doubleMatEleX1GUGA(29)%ptr => funB_2_3
        doubleMatEleX1GUGA(30)%ptr => funD_0
        doubleMatEleX1GUGA(31)%ptr => minFunD_0
        doubleMatEleX1GUGA(32)%ptr => funB_1_2
        doubleMatEleX1GUGA(33)%ptr => funB_0_1
        doubleMatEleX1GUGA(34)%ptr => funD_1
        doubleMatEleX1GUGA(35)%ptr => minFunD_1
        doubleMatEleX1GUGA(36)%ptr => funD_m1
        doubleMatEleX1GUGA(37)%ptr => funB_m1_0
        doubleMatEleX1GUGA(38)%ptr => funC_2
        doubleMatEleX1GUGA(39)%ptr => minFunC_2
        doubleMatEleX1GUGA(40)%ptr => funC_0
        doubleMatEleX1GUGA(41)%ptr => minFunC_0
        doubleMatEleX1GUGA(42)%ptr => minFunOverB_2_R2
        doubleMatEleX1GUGA(43)%ptr => minFunB_0_2
        doubleMatEleX1GUGA(44)%ptr => minFunOverB_0_R2
        doubleMatEleX1GUGA(45)%ptr => funD_2

        ! -------------- double excitation x0 matrix element part ------------
        doubleMatEleX0GUGA(1)%ptr => funZero
        doubleMatEleX0GUGA(2)%ptr => funPlus1
        doubleMatEleX0GUGA(3)%ptr => funMinus1
        doubleMatEleX0GUGA(4)%ptr => funSqrt2
        doubleMatEleX0GUGA(5)%ptr => minFunSqrt2
        doubleMatEleX0GUGA(6)%ptr => funOverRoot2
        doubleMatEleX0GUGA(7)%ptr => minFunOverR2
        doubleMatEleX0GUGA(8)%ptr => funA_0_1
        doubleMatEleX0GUGA(9)%ptr => funA_1_0
        doubleMatEleX0GUGA(10)%ptr => funA_1_2
        doubleMatEleX0GUGA(11)%ptr => funA_2_1
        doubleMatEleX0GUGA(12)%ptr => funA_1_2overR2
        doubleMatEleX0GUGA(13)%ptr => funA_1_0_overR2
        doubleMatEleX0GUGA(14)%ptr => funA_0_1_overR2
        doubleMatEleX0GUGA(15)%ptr => minFunA_0_1_overR2
        doubleMatEleX0GUGA(16)%ptr => funA_2_1_overR2
        doubleMatEleX0GUGA(17)%ptr => minFunA_2_1_overR2

        ! ------ mixed generator full-stop matrix elements--------------------
        mixedGenFullStopMatEle(1)%ptr => fullStop_00
        mixedGenFullStopMatEle(2)%ptr => fullStop_11
        mixedGenFullStopMatEle(3)%ptr => fullStop_22
        mixedGenFullStopMatEle(4)%ptr => fullStop_33
        mixedGenFullStopMatEle(5)%ptr => fullStop_12

        ! --------- double contributions to single excitaitons----------------
        doubleContribution(1)%ptr => funZero
        doubleContribution(2)%ptr => funPlus1
        doubleContribution(3)%ptr => funMinus1
        doubleContribution(4)%ptr => minFunBplus2
        doubleContribution(5)%ptr => funBplus0
        doubleContribution(6)%ptr => funBplus1
        doubleContribution(7)%ptr => minFunBplus1

    end subroutine init_guga_data_procPtrs