20 #include "./base/base_uses.f90"
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'semi_empirical_int_arrays'
30 INTEGER,
DIMENSION(9),
PUBLIC ::
se_orbital_pointer = (/1, 4, 2, 3, 9, 8, 7, 6, 5/)
31 INTEGER,
DIMENSION(9),
PUBLIC ::
se_map_alm = (/1, 3, 4, 2, 8, 6, 5, 7, 9/)
35 INTEGER,
PARAMETER,
DIMENSION(2, 9),
PUBLIC ::
map_x_to_z = reshape((/ &
46 REAL(kind=
dp),
PARAMETER,
DIMENSION(2, 9),
PUBLIC ::
fac_x_to_z = reshape((/ &
51 0.8660254037844386_dp, 0.5_dp, &
53 -0.5_dp, 0.8660254037844386_dp, &
59 REAL(kind=
dp),
DIMENSION(45, 0:2, -2:2),
PUBLIC ::
clm_d
61 INTEGER,
DIMENSION(45, 0:2, -2:2),
PUBLIC ::
clm_sp
63 REAL(kind=
dp),
DIMENSION(45, 0:2, -2:2),
PUBLIC ::
alm
67 INTEGER,
PARAMETER,
PUBLIC :: &
74 INTEGER,
DIMENSION(45),
PARAMETER,
PUBLIC ::
int2c_type = (/ &
75 1, 2, 3, 2, 3, 3, 2, 3, 3, 3, 4, 5, 5, 5, 6, 4, 5, 5, 5, &
76 6, 6, 4, 5, 5, 5, 6, 6, 6, 4, 5, 5, 5, 6, 6, 6, 6, 4, 5, &
80 INTEGER,
DIMENSION(9),
PARAMETER,
PUBLIC ::
l_index = (/ &
81 0, 1, 1, 1, 2, 2, 2, 2, 2/)
90 INTEGER,
DIMENSION(3, 3),
PUBLIC ::
indpp
91 INTEGER,
DIMENSION(5, 3),
PUBLIC ::
inddp
92 INTEGER,
DIMENSION(5, 5),
PUBLIC ::
inddd
95 INTEGER,
DIMENSION(243),
PUBLIC ::
int_ij = (/ &
96 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, &
97 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, &
98 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, &
99 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 19, &
100 19, 19, 19, 19, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, &
101 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, &
102 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, &
103 29, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 34, 34, 34, 34, &
104 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, &
105 38, 38, 38, 39, 39, 39, 39, 39, 40, 40, 40, 41, 42, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, &
106 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45/)
107 INTEGER,
DIMENSION(243),
PUBLIC ::
int_kl = (/ &
108 15, 21, 28, 36, 45, 12, 19, 23, 39, 11, 15, 21, 22, 26, 28, 36, 45, 13, 24, 32, 38, 34, 37, &
109 43, 11, 15, 21, 22, 26, 28, 36, 45, 17, 25, 31, 16, 20, 27, 44, 29, 33, 35, 42, 15, 21, 22, &
110 28, 36, 45, 3, 6, 11, 21, 26, 36, 2, 12, 19, 23, 39, 4, 13, 24, 32, 38, 14, 17, 31, 1, &
111 3, 6, 10, 15, 21, 22, 28, 36, 45, 8, 16, 20, 27, 44, 7, 14, 17, 25, 31, 18, 30, 40, 2, &
112 12, 19, 23, 39, 8, 16, 20, 27, 44, 1, 3, 6, 10, 11, 15, 21, 22, 26, 28, 36, 45, 3, 6, &
113 10, 15, 21, 22, 28, 36, 45, 2, 12, 19, 23, 39, 4, 13, 24, 32, 38, 7, 17, 25, 31, 3, 6, &
114 11, 21, 26, 36, 8, 16, 20, 27, 44, 1, 3, 6, 10, 15, 21, 22, 28, 36, 45, 9, 29, 33, 35, &
115 42, 18, 30, 40, 7, 14, 17, 25, 31, 4, 13, 24, 32, 38, 9, 29, 33, 35, 42, 5, 34, 37, 43, &
116 9, 29, 33, 35, 42, 1, 3, 6, 10, 11, 15, 21, 22, 26, 28, 36, 45, 5, 34, 37, 43, 4, 13, &
117 24, 32, 38, 2, 12, 19, 23, 39, 18, 30, 40, 41, 9, 29, 33, 35, 42, 5, 34, 37, 43, 8, 16, &
118 20, 27, 44, 1, 3, 6, 10, 15, 21, 22, 28, 36, 45/)
120 1, 1, 1, 1, 1, 3, 3, 8, 3, 9, 6, 6, 12, 14, 13, 7, 6, 15, 8, 3, 3, 11, 9, &
121 14, 17, 6, 7, 12, 18, 13, 6, 6, 3, 2, 3, 9, 11, 10, 11, 9, 16, 10, 11, 7, 6, 4, &
122 5, 6, 7, 9, 17, 19, 32, 22, 40, 3, 33, 34, 27, 46, 15, 33, 28, 41, 47, 35, 35, 42, 1, &
123 6, 6, 7, 29, 38, 22, 31, 38, 51, 9, 19, 32, 21, 32, 3, 35, 33, 24, 34, 35, 35, 35, 3, &
124 34, 33, 26, 34, 11, 32, 44, 37, 49, 1, 6, 7, 6, 32, 38, 29, 21, 39, 30, 38, 38, 12, 12, &
125 4, 22, 21, 19, 20, 21, 22, 8, 27, 26, 25, 27, 8, 28, 25, 26, 27, 2, 24, 23, 24, 14, 18, &
126 22, 39, 48, 45, 10, 21, 37, 36, 37, 1, 13, 13, 5, 31, 30, 20, 29, 30, 31, 9, 19, 40, 21, &
127 32, 35, 35, 35, 3, 42, 34, 24, 33, 3, 41, 26, 33, 34, 16, 40, 44, 43, 50, 11, 44, 32, 39, &
128 10, 21, 43, 36, 37, 1, 7, 6, 6, 40, 38, 38, 21, 45, 30, 29, 38, 9, 32, 19, 22, 3, 47, &
129 27, 34, 33, 3, 46, 34, 27, 33, 35, 35, 35, 52, 11, 32, 50, 37, 44, 14, 39, 22, 48, 11, 32, &
130 49, 37, 44, 1, 6, 6, 7, 51, 38, 22, 31, 38, 29/)
143 CALL setup_index_array()
144 CALL setup_indrot_array()
145 CALL setup_clm_array()
146 CALL setup_ijkl_array()
156 SUBROUTINE setup_index_array()
173 indexa(i, j) = (9*(j - 1)) - (j*(j - 1))/2 + i
186 indexb(i, j) = (i*(i - 1))/2 + j
190 END SUBROUTINE setup_index_array
198 SUBROUTINE setup_indrot_array()
254 END SUBROUTINE setup_indrot_array
262 SUBROUTINE setup_clm_array()
264 INTEGER :: clm1, clm1m
265 REAL(kind=
dp) :: alm1, alms15_49, alms15_49m, alms15m, alms20_49, alms20_49m, alms35, &
266 alms35m, alms45, alms5_49, alms5_49m, clm23, clm23m, clm43, clm43m, clms13, clms13m, &
271 clms13 = sqrt(1.0_dp/3.0_dp)
272 clms13m = -sqrt(1.0_dp/3.0_dp)
273 clm23 = 2.0_dp/3.0_dp
274 clm23m = -2.0_dp/3.0_dp
275 clm43 = 4.0_dp/3.0_dp
276 clm43m = -4.0_dp/3.0_dp
277 clms43 = sqrt(4.0_dp/3.0_dp)
278 clms43m = -sqrt(4.0_dp/3.0_dp)
280 alms45 = sqrt(4.0_dp/5.0_dp)
281 alms35 = sqrt(3.0_dp/5.0_dp)
283 alms15m = -sqrt(1.0_dp/5.0_dp)
284 alms20_49 = sqrt(20.0_dp/49.0_dp)
285 alms20_49m = -alms20_49
286 alms5_49 = sqrt(5.0_dp/49.0_dp)
287 alms5_49m = -alms5_49
288 alms15_49 = sqrt(15.0_dp/49.0_dp)
289 alms15_49m = -alms15_49
305 clm_d(1, 0, 0) = clm1
309 clm_d(2, 1, 0) = clm1
313 clm_d(3, 1, 1) = clm1
317 clm_d(4, 1, -1) = clm1
321 clm_d(5, 2, 0) = clms43
324 clm_d(6, 2, 1) = clm1
327 clm_d(7, 2, -1) = clm1
330 clm_d(8, 2, 2) = clm1
333 clm_d(9, 2, -2) = clm1
336 clm_d(10, 0, 0) = clm1
337 clm_d(10, 2, 0) = clm43
341 alm(10, 2, 0) = alms45
343 clm_d(11, 2, 1) = clm1
345 alm(11, 2, 1) = alms35
347 clm_d(12, 2, -1) = clm1
349 alm(12, 2, -1) = alms35
351 clm_d(13, 1, 0) = clms43
352 alm(13, 1, 0) = alms45
354 clm_d(14, 1, 1) = clm1
355 alm(14, 1, 1) = alms35
357 clm_d(15, 1, -1) = clm1
358 alm(15, 1, -1) = alms35
360 clm_d(18, 0, 0) = clm1
361 clm_d(18, 2, 0) = clm23m
362 clm_d(18, 2, 2) = clm1
366 alm(18, 2, 0) = alms15m
367 alm(18, 2, 2) = alms35
369 clm_d(19, 2, -2) = clm1
371 alm(19, 2, -2) = alms35
373 clm_d(20, 1, 1) = clms13m
374 alm(20, 1, 1) = alms15m
376 clm_d(21, 1, 0) = clm1
377 alm(21, 1, 0) = alms35
379 clm_d(23, 1, 1) = clm1
380 alm(23, 1, 1) = alms35
382 clm_d(24, 1, -1) = clm1
383 alm(24, 1, -1) = alms35
385 clm_d(25, 0, 0) = clm1
386 clm_d(25, 2, 0) = clm23m
387 clm_d(25, 2, 2) = clm1m
391 alm(25, 2, 0) = alms15m
392 alm(25, 2, 2) = alms35m
394 clm_d(26, 1, -1) = clms13m
395 alm(26, 1, -1) = alms15m
397 clm_d(28, 1, 0) = clm1
398 alm(28, 1, 0) = alms35
400 clm_d(29, 1, -1) = clm1m
401 alm(29, 1, -1) = alms35m
403 clm_d(30, 1, 1) = clm1
404 alm(30, 1, 1) = alms35
406 clm_d(31, 0, 0) = clm1
407 clm_d(31, 2, 0) = clm43
409 alm(31, 2, 0) = alms20_49
411 clm_d(32, 2, 1) = clms13
412 alm(32, 2, 1) = alms5_49
414 clm_d(33, 2, -1) = clms13
415 alm(33, 2, -1) = alms5_49
417 clm_d(34, 2, 2) = clms43m
418 alm(34, 2, 2) = alms20_49m
420 clm_d(35, 2, -2) = clms43m
421 alm(35, 2, -2) = alms20_49m
423 clm_d(36, 0, 0) = clm1
424 clm_d(36, 2, 0) = clm23
425 clm_d(36, 2, 2) = clm1
427 alm(36, 2, 0) = alms5_49
428 alm(36, 2, 2) = alms15_49
430 clm_d(37, 2, -2) = clm1
431 alm(37, 2, -2) = alms15_49m
433 clm_d(38, 2, 1) = clm1
434 alm(38, 2, 1) = alms15_49
436 clm_d(39, 2, -1) = clm1
437 alm(38, 2, -1) = alms15_49
439 clm_d(40, 0, 0) = clm1
440 clm_d(40, 2, 0) = clm23
441 clm_d(40, 2, 2) = clm1m
443 alm(40, 2, 0) = alms5_49
444 alm(40, 2, 2) = alms5_49m
446 clm_d(41, 2, -1) = clm1m
447 alm(41, 2, -1) = alms15_49m
449 clm_d(42, 2, 1) = clm1
450 alm(42, 2, 1) = alms15_49
452 clm_d(43, 0, 0) = clm1
453 clm_d(43, 2, 0) = clm43m
455 alm(43, 2, 0) = alms20_49m
457 clm_d(45, 0, 0) = clm1
458 clm_d(45, 2, 0) = clm43m
460 alm(45, 2, 0) = alms20_49m
461 END SUBROUTINE setup_clm_array
470 SUBROUTINE setup_ijkl_array()
1802 END SUBROUTINE setup_ijkl_array
Defines the basic variable types.
integer, parameter, public dp
Arrays of parameters used in the semi-empirical calculations \References Everywhere in this module TC...
integer, dimension(9), public se_map_alm
real(kind=dp), parameter, public rij_threshold
integer, dimension(9, 9), public indexb
integer, dimension(45), parameter, public int2c_type
integer, parameter, public clmz
integer, dimension(491), public ijkl_sym
integer, dimension(5, 3), public inddp
integer, dimension(45, 0:2, -2:2), public clm_sp
subroutine, public init_se_intd_array()
Initialize all arrays used for the evaluation of the integrals.
integer, dimension(3, 3), public indpp
integer, parameter, public clmzp
integer, dimension(9), public se_orbital_pointer
integer, parameter, public clmxy
integer, parameter, public clmzz
integer, parameter, public clmyy
integer, dimension(243), public int_kl
real(kind=dp), dimension(45, 0:2, -2:2), public clm_d
integer, parameter, public clmp
real(kind=dp), dimension(2, 9), parameter, public fac_x_to_z
integer, dimension(2, 9), parameter, public map_x_to_z
integer, dimension(243), public int_ij
integer, parameter, public clmxx
integer, dimension(243), public int_onec2el
integer, dimension(9), parameter, public l_index
real(kind=dp), dimension(45, 0:2, -2:2), public alm
integer, dimension(9, 9), public indexa
integer, dimension(5, 5), public inddd
integer, dimension(45, 45), public ijkl_ind