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