(git:e7e05ae)
lebedev.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief Generation of the spherical Lebedev grids.
10 !> All Lebedev grids were generated with a precision of at least
11 !> 33 digits (Mathematica). Thus the Lebedev abscissas and weights
12 !> are accurate to 32 digits (quadruple precision).
13 !> \version 1.0
14 !>
15 !> \par Literature
16 !> - V. I. Lebedev, Zh. Vychisl. Mat. Mat. Fiz. 15, 48 (1975)
17 !> - V. I. Lebedev, Zh. Vychisl. Mat. Mat. Fiz. 16, 293 (1976)
18 !> - V. I. Lebedev, Sibirsk Mat. Zh. 18, 132 (1977)
19 !> - V. I. Lebedev and A. L. Skorokhodov, Russ. Acad. Sci. Dokl.
20 !> Math. 45, 587 (1992)
21 !> - V. I. Lebedev, Russ. Acad. Sci. Dokl. Math. 50, 283 (1995)
22 !> \par Notes
23 !> Implemented Lebedev grids:
24 !> No. l n(nonred.) n(total)
25 !> 1 3 1 6
26 !> 2 5 2 14
27 !> 3 7 3 26
28 !> 4 9 3 38
29 !> 5 11 4 50
30 !> 6 15 5 86
31 !> 7 17 6 110
32 !> 8 19 7 146
33 !> 9 23 9 194
34 !> 10 29 12 302
35 !> 11 35 16 434
36 !> 12 41 20 590
37 !> 13 47 25 770
38 !> 14 53 30 974
39 !> \par Variables:
40 !> - lebedev_grid: Lebedev grids.
41 !> l: Angular momentum quantum number l.
42 !> n: Number of grid points.
43 !> w: Grid point weights.
44 !> r: Abscissas (grid point coordinates)
45 !> - max_np : Maximum number of nonredundant grid points.
46 !> - na1 : Number of point for subsystem A1.
47 !> - na2 : Number of point for subsystem A2.
48 !> - na3 : Number of point for subsystem A3.
49 !> - nb : Number of point for subsystem B.
50 !> - nc : Number of point for subsystem C.
51 !> - nd : Number of point for subsystem D.
52 !> - nlg : Number of implemented Lebedev grids.
53 !> - nlgp : Grid point counter.
54 !> - r : Working storage (grid point coordinates).
55 !> - w : Working storage (grid point weights).
56 ! **************************************************************************************************
57 MODULE lebedev
58 
59  USE kinds, ONLY: dp
60 #include "../base/base_uses.f90"
61 
62  IMPLICIT NONE
63 
64  SAVE
65 
66  PRIVATE
67  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'lebedev'
68 
69  INTEGER, PARAMETER :: na1 = 6, &
70  na2 = 12, &
71  na3 = 8, &
72  nb = 24, &
73  nc = 24, &
74  nd = 48, &
75  nlg = 14, &
76  max_np = 36
77 
78 ! **************************************************************************************************
79  TYPE oh_grid
80  INTEGER :: l = -1, n = -1
81  REAL(KIND=dp), DIMENSION(:), POINTER :: w => null()
82  REAL(KIND=dp), DIMENSION(:, :), POINTER :: r => null()
83  END TYPE oh_grid
84 
85  TYPE(oh_grid), DIMENSION(nlg), TARGET :: lebedev_grid = oh_grid()
86 
87  REAL(kind=dp), PARAMETER :: one = 1.0_dp, rs2 = one/sqrt(2.0_dp), rs3 = one/sqrt(3.0_dp), zero = 0.0_dp
88  INTEGER :: nlgp = -1
89  LOGICAL :: init_lebedev_grids_done = .false.
90 
91  REAL(kind=dp), DIMENSION(max_np/3) :: w = 0.0_dp
92  REAL(kind=dp), DIMENSION(max_np) :: r = 0.0_dp
93 
94  PUBLIC :: lebedev_grid
95 
97 
98 CONTAINS
99 
100 ! **************************************************************************************************
101 !> \brief Get the number of the Lebedev grid, which has the requested
102 !> angular momentum quantnum number l or size n.
103 !> \param l ...
104 !> \param n ...
105 !> \return ...
106 !> \date 05.05.99
107 !> \par Variables
108 !> \author Matthias Krack
109 !> \version 1.0
110 !> \note - l : Minimal angular momentum quantum number of the requested Lebedev grid.
111 !> \note - n : Minimal size of the requested Lebedev grid.
112 ! **************************************************************************************************
113  FUNCTION get_number_of_lebedev_grid(l, n) RESULT(number_of_lebedev_grid)
114 
115  INTEGER, INTENT(IN), OPTIONAL :: l, n
116  INTEGER :: number_of_lebedev_grid
117 
118  INTEGER :: i
119  INTEGER, ALLOCATABLE, DIMENSION(:) :: ll, nn
120  INTEGER, DIMENSION(1) :: lgnum
121 
122  IF (.NOT. init_lebedev_grids_done) CALL init_lebedev_grids
123 
124  lgnum(1) = 0
125  ALLOCATE (nn(SIZE(lebedev_grid, 1)), ll(SIZE(lebedev_grid, 1)))
126  DO i = 1, SIZE(nn, 1)
127  nn(i) = lebedev_grid(i)%n
128  ll(i) = lebedev_grid(i)%l
129  END DO
130  IF (PRESENT(l)) THEN
131 ! lgnum(:) = MINLOC(lebedev_grid(:)%n,MASK=(lebedev_grid(:)%l >= l))
132  lgnum(:) = minloc(nn(:), mask=(ll(:) >= l))
133  ELSE IF (PRESENT(n)) THEN
134 ! lgnum(:) = MINLOC(lebedev_grid(:)%n,MASK=(lebedev_grid(:)%n >= n))
135  lgnum(:) = minloc(nn(:), mask=(nn(:) >= n))
136  ELSE
137  cpabort("*** ERROR in FUNCTION get_number_of_lebedev_grid ***")
138  END IF
139 
140  IF (lgnum(1) == 0) THEN
141  cpabort("*** ERROR in FUNCTION get_number_of_lebedev_grid ***")
142  ELSE
143  number_of_lebedev_grid = lgnum(1)
144  END IF
145  DEALLOCATE (nn, ll)
146  END FUNCTION get_number_of_lebedev_grid
147 
148 ! **************************************************************************************************
149 !> \brief Load the Lebedev grid points of a subsystem.
150 !> \param subsystem ...
151 !> \param lgnum ...
152 !> \param np ...
153 !> \date 06.05.99
154 !> \par Variables
155 !> - subsystem: String, which specifies the selected subsystem.
156 !> - lgnum : Number of the current Lebedev grid.
157 !> - np : Number of the nonredundant grid points.
158 !> \author Matthias Krack
159 !> \version 1.0
160 ! **************************************************************************************************
161  SUBROUTINE load_sub_grid(subsystem, lgnum, np)
162  CHARACTER(*), INTENT(IN) :: subsystem
163  INTEGER, INTENT(IN) :: lgnum, np
164 
165  INTEGER :: i, j
166  REAL(kind=dp) :: x, y, z
167 
168 ! *** Check argument values ***
169 
170  IF ((lgnum < 1) .OR. (lgnum > nlg)) THEN
171  cpabort("Argument value #2 (lgnum) is out of range")
172  END IF
173 
174  IF ((np < 0) .OR. (np > max_np)) THEN
175  cpabort("Argument value #3 (np) is out of range")
176  END IF
177 
178  SELECT CASE (subsystem)
179  CASE ("A1")
180  lebedev_grid(lgnum)%w(1:na1) = w(1)
181  lebedev_grid(lgnum)%r(1:3, 1:na1) = &
182  reshape((/zero, zero, one, &
183  zero, zero, -one, &
184  zero, one, zero, &
185  zero, -one, zero, &
186  one, zero, zero, &
187  -one, zero, zero/), (/3, na1/))
188  nlgp = na1
189  CASE ("A2")
190  lebedev_grid(lgnum)%w(nlgp + 1:nlgp + na2) = w(1)
191  lebedev_grid(lgnum)%r(1:3, nlgp + 1:nlgp + na2) = &
192  reshape((/zero, rs2, rs2, &
193  zero, rs2, -rs2, &
194  zero, -rs2, rs2, &
195  zero, -rs2, -rs2, &
196  rs2, zero, rs2, &
197  rs2, zero, -rs2, &
198  -rs2, zero, rs2, &
199  -rs2, zero, -rs2, &
200  rs2, rs2, zero, &
201  rs2, -rs2, zero, &
202  -rs2, rs2, zero, &
203  -rs2, -rs2, zero/), (/3, na2/))
204  nlgp = nlgp + na2
205  CASE ("A3")
206  lebedev_grid(lgnum)%w(nlgp + 1:nlgp + na3) = w(1)
207  lebedev_grid(lgnum)%r(1:3, nlgp + 1:nlgp + na3) = &
208  reshape((/rs3, rs3, rs3, &
209  rs3, rs3, -rs3, &
210  rs3, -rs3, rs3, &
211  -rs3, rs3, rs3, &
212  rs3, -rs3, -rs3, &
213  -rs3, rs3, -rs3, &
214  -rs3, -rs3, rs3, &
215  -rs3, -rs3, -rs3/), (/3, na3/))
216  nlgp = nlgp + na3
217  CASE ("B")
218  DO i = 1, np
219  x = r(i)
220  y = rs2*sqrt(one - x**2)
221  lebedev_grid(lgnum)%w(nlgp + nb*(i - 1) + 1:nlgp + nb*i) = w(i)
222  lebedev_grid(lgnum)%r(1:3, nlgp + nb*(i - 1) + 1:nlgp + nb*i) = &
223  reshape((/x, y, y, &
224  x, y, -y, &
225  x, -y, y, &
226  x, -y, -y, &
227  -x, y, y, &
228  -x, y, -y, &
229  -x, -y, y, &
230  -x, -y, -y, &
231  y, x, y, &
232  y, x, -y, &
233  -y, x, y, &
234  -y, x, -y, &
235  y, -x, y, &
236  y, -x, -y, &
237  -y, -x, y, &
238  -y, -x, -y, &
239  y, y, x, &
240  y, -y, x, &
241  -y, y, x, &
242  -y, -y, x, &
243  y, y, -x, &
244  y, -y, -x, &
245  -y, y, -x, &
246  -y, -y, -x/), (/3, nb/))
247  END DO
248  nlgp = nlgp + nb*np
249  CASE ("C")
250  DO i = 1, np
251  x = r(i)
252  y = sqrt(one - x**2)
253  lebedev_grid(lgnum)%w(nlgp + nc*(i - 1) + 1:nlgp + nc*i) = w(i)
254  lebedev_grid(lgnum)%r(1:3, nlgp + nc*(i - 1) + 1:nlgp + nc*i) = &
255  reshape((/x, y, zero, &
256  x, -y, zero, &
257  -x, y, zero, &
258  -x, -y, zero, &
259  y, x, zero, &
260  y, -x, zero, &
261  -y, x, zero, &
262  -y, -x, zero, &
263  x, zero, y, &
264  x, zero, -y, &
265  -x, zero, y, &
266  -x, zero, -y, &
267  y, zero, x, &
268  y, zero, -x, &
269  -y, zero, x, &
270  -y, zero, -x, &
271  zero, x, y, &
272  zero, x, -y, &
273  zero, -x, y, &
274  zero, -x, -y, &
275  zero, y, x, &
276  zero, y, -x, &
277  zero, -y, x, &
278  zero, -y, -x/), (/3, nc/))
279  END DO
280  nlgp = nlgp + nc*np
281  CASE ("D")
282  IF (modulo(np, 3) == 0) THEN
283  DO i = 1, np, 3
284  j = (i + 2)/3
285  x = r(i)
286  y = r(i + 1)
287  z = r(i + 2)
288  lebedev_grid(lgnum)%w(nlgp + nd*(j - 1) + 1:nlgp + nd*j) = w(j)
289  lebedev_grid(lgnum)%r(1:3, nlgp + nd*(j - 1) + 1:nlgp + nd*j) = &
290  reshape((/x, y, z, x, y, -z, x, -y, z, -x, y, z, &
291  x, -y, -z, -x, y, -z, -x, -y, z, -x, -y, -z, &
292  x, z, y, x, z, -y, x, -z, y, -x, z, y, &
293  x, -z, -y, -x, z, -y, -x, -z, y, -x, -z, -y, &
294  y, x, z, y, x, -z, y, -x, z, -y, x, z, &
295  y, -x, -z, -y, x, -z, -y, -x, z, -y, -x, -z, &
296  y, z, x, y, z, -x, y, -z, x, -y, z, x, &
297  y, -z, -x, -y, z, -x, -y, -z, x, -y, -z, -x, &
298  z, x, y, z, x, -y, z, -x, y, -z, x, y, &
299  z, -x, -y, -z, x, -y, -z, -x, y, -z, -x, -y, &
300  z, y, x, z, y, -x, z, -y, x, -z, y, x, &
301  z, -y, -x, -z, y, -x, -z, -y, x, -z, -y, -x/), (/3, nd/))
302  END DO
303  ELSE
304  cpabort("Subsytem D: np is not modulo 3 (check argument #3)")
305  END IF
306  nlgp = nlgp + nd*np/3
307  CASE DEFAULT
308  CALL cp_abort(__location__, &
309  "The invalid subsystem <"//trim(subsystem)//"> was "// &
310  "specified (check argument #1)")
311  END SELECT
312 
313 ! *** Reinitialize working storage ***
314 
315  w(:) = zero
316  r(:) = zero
317 
318  END SUBROUTINE load_sub_grid
319 
320 ! **************************************************************************************************
321 !> \brief ...
322 ! **************************************************************************************************
324 
325  INTEGER :: ilg
326 
327  cpassert(init_lebedev_grids_done)
328  init_lebedev_grids_done = .false.
329 
330  DO ilg = 1, nlg
331  DEALLOCATE (lebedev_grid(ilg)%r, lebedev_grid(ilg)%w)
332  END DO
333 
334  END SUBROUTINE deallocate_lebedev_grids
335 
336 ! **************************************************************************************************
337 !> \brief Load the coordinates and weights of the nonredundant Lebedev grid
338 !> points.
339 !> \date 04.05.99
340 !> \author Matthias Krack
341 !> \version 1.0
342 ! **************************************************************************************************
343  SUBROUTINE init_lebedev_grids()
344 
345  CHARACTER(len=*), PARAMETER :: routinen = 'init_lebedev_grids'
346 
347  INTEGER :: handle, ilg
348 
349  CALL timeset(routinen, handle)
350 
351  DO ilg = 1, nlg
352  IF (ASSOCIATED(lebedev_grid(ilg)%r)) DEALLOCATE (lebedev_grid(ilg)%r)
353  IF (ASSOCIATED(lebedev_grid(ilg)%w)) DEALLOCATE (lebedev_grid(ilg)%w)
354  END DO
355 
356 ! *** Load the angular momentum quantum numbers l of the Lebedev grids ***
357 
358  lebedev_grid(1:nlg)%l = (/3, 5, 7, 9, 11, 15, 17, 19, 23, 29, 35, 41, 47, 53/)
359 
360 ! *** Load the total number of grid points for each Lebedev grid ***
361 
362  lebedev_grid(1:nlg)%n = (/6, 14, 26, 38, 50, 86, 110, 146, 194, 302, 434, 590, 770, &
363  974/)
364 
365 ! *** Allocate storage for the Lebedev grids ***
366 
367  DO ilg = 1, nlg
368  ALLOCATE (lebedev_grid(ilg)%r(3, lebedev_grid(ilg)%n), &
369  lebedev_grid(ilg)%w(lebedev_grid(ilg)%n))
370  END DO
371 
372 ! *** Load the coordinates and weights of the Lebedev grid points ***
373 
374 ! *** 1. l = 3 (6 points, octahedron) ***
375 
376  w(1) = 1.0_dp/6.0_dp
377  CALL load_sub_grid("A1", 1, 0)
378 
379 ! *** 2. l = 5 (14 points, capped octahedron) ***
380 
381  w(1) = 1.0_dp/15.0_dp
382  CALL load_sub_grid("A1", 2, 0)
383 
384  w(1) = 3.0_dp/40.0_dp
385  CALL load_sub_grid("A3", 2, 0)
386 
387 ! *** 3. l = 7 (26 points) ***
388 
389  w(1) = 1.0_dp/21.0_dp
390  CALL load_sub_grid("A1", 3, 0)
391 
392  w(1) = 4.0_dp/105.0_dp
393  CALL load_sub_grid("A2", 3, 0)
394 
395  w(1) = 9.0_dp/280.0_dp
396  CALL load_sub_grid("A3", 3, 0)
397 
398 ! *** 4. l = 9 (38 points) ***
399 
400  w(1) = 1.0_dp/105.0_dp
401  CALL load_sub_grid("A1", 4, 0)
402 
403  w(1) = 9.0_dp/280.0_dp
404  CALL load_sub_grid("A3", 4, 0)
405 
406  w(1) = 1.0_dp/35.0_dp
407  r(1) = rs2*sqrt(1.0_dp + rs3)
408  CALL load_sub_grid("C", 4, 1)
409 
410 ! *** 5. l = 11 (50 points) ***
411 
412  w(1) = 4.0_dp/315.0_dp
413  CALL load_sub_grid("A1", 5, 0)
414 
415  w(1) = 64.0_dp/2835.0_dp
416  CALL load_sub_grid("A2", 5, 0)
417 
418  w(1) = 27.0_dp/1280.0_dp
419  CALL load_sub_grid("A3", 5, 0)
420 
421  w(1) = 14641.0_dp/725760.0_dp
422  r(1) = 3.0_dp/sqrt(11.0_dp)
423  CALL load_sub_grid("B", 5, 1)
424 
425 ! *** 6. l = 15 (86 points) ***
426 
427  w(1) = 1.15440115440115440115440115440115e-2_dp
428  CALL load_sub_grid("A1", 6, 0)
429 
430  w(1) = 1.19439090858562823236989259736470e-2_dp
431  CALL load_sub_grid("A3", 6, 0)
432 
433  w(1) = 1.11105557106034025109468482160140e-2_dp
434  r(1) = 8.52518311701267605338736780155357e-1_dp
435  w(2) = 1.18765012945371420137882805994025e-2_dp
436  r(2) = 1.89063552885395482707075847005288e-1_dp
437  CALL load_sub_grid("B", 6, 2)
438 
439  w(1) = 1.18123037469044753644792263073650e-2_dp
440  r(1) = 9.27330657151172465678969739310097e-1_dp
441  CALL load_sub_grid("C", 6, 1)
442 
443 ! *** 7. l = 17 (110 points) ***
444 
445  w(1) = 3.82827049493716160382827049493716e-3_dp
446  CALL load_sub_grid("A1", 7, 0)
447 
448  w(1) = 9.79373751248751248751248751248751e-3_dp
449  CALL load_sub_grid("A3", 7, 0)
450 
451  w(1) = 8.21173728319111097598993405227308e-3_dp
452  r(1) = 9.65124035086594105655529546158531e-1_dp
453  w(2) = 9.59547133607096284945318117290259e-3_dp
454  r(2) = 8.28769981252592210694031500711749e-1_dp
455  w(3) = 9.94281489117810328140065828526450e-3_dp
456  r(3) = 2.15957291845848832354930328945946e-1_dp
457  CALL load_sub_grid("B", 7, 3)
458 
459  w(1) = 9.69499636166302832969499636166303e-3_dp
460  r(1) = 8.78158910604066133449110592671618e-1_dp
461  CALL load_sub_grid("C", 7, 1)
462 
463 ! *** 8. l = 19 (146 points) ***
464 
465  w(1) = 5.99631368862138092907323676554446e-4_dp
466  CALL load_sub_grid("A1", 8, 0)
467 
468  w(1) = 7.37299971862075642305743268410561e-3_dp
469  CALL load_sub_grid("A2", 8, 0)
470 
471  w(1) = 7.21051536014448777763305996834282e-3_dp
472  CALL load_sub_grid("A3", 8, 0)
473 
474  w(1) = 7.57439415905403372268748574713806e-3_dp
475  r(1) = 9.74888643677173235480043489928723e-1_dp
476  w(2) = 6.75382948631447744073541732486459e-3_dp
477  r(2) = 8.07089818359582501629574989264033e-1_dp
478  w(3) = 7.11635549311755538760089284953968e-3_dp
479  r(3) = 2.91298882209526746288335878313128e-1_dp
480  CALL load_sub_grid("B", 8, 3)
481 
482  w(1) = 6.99108735330326239417148508057599e-3_dp
483  r(1) = 1.40355381171318328571556780746292e-1_dp
484  r(2) = 4.49332832326955734884695382705101e-1_dp
485  r(3) = 8.82270011260322631916665753046583e-1_dp
486  CALL load_sub_grid("D", 8, 3)
487 
488 ! *** 9. l = 23 (194 points) ***
489 
490  w(1) = 1.78234044724461115736727104869868e-3_dp
491  CALL load_sub_grid("A1", 9, 0)
492 
493  w(1) = 5.71690594997710189299212838832099e-3_dp
494  CALL load_sub_grid("A2", 9, 0)
495 
496  w(1) = 5.57338317884873796836784958446647e-3_dp
497  CALL load_sub_grid("A3", 9, 0)
498 
499  w(1) = 5.51877146727361369172768460119380e-3_dp
500  r(1) = 7.77493219314767127213777704028801e-1_dp
501  w(2) = 5.15823771180538310324916154718792e-3_dp
502  r(2) = 9.12509096867473692992168387555434e-1_dp
503  w(3) = 5.60870408258799684374936673855184e-3_dp
504  r(3) = 3.14196994182586079225390955831946e-1_dp
505  w(4) = 4.10677702816939409072861128564582e-3_dp
506  r(4) = 9.82972302707253296863729593965148e-1_dp
507  CALL load_sub_grid("B", 9, 4)
508 
509  w(1) = 5.05184606461480847598931196006390e-3_dp
510  r(1) = 9.38319218137591520905616389195671e-1_dp
511  CALL load_sub_grid("C", 9, 1)
512 
513  w(1) = 5.53024891623309370129768269143303e-3_dp
514  r(1) = 1.59041710538352952424263581362096e-1_dp
515  r(2) = 5.25118572443642024905268207753317e-1_dp
516  r(3) = 8.36036015482458885943746377793309e-1_dp
517  CALL load_sub_grid("D", 9, 3)
518 
519 ! *** 10. l = 29 (302 points) ***
520 
521  w(1) = 8.54591172512814813423121032618880e-4_dp
522  CALL load_sub_grid("A1", 10, 0)
523 
524  w(1) = 3.59911928502557145886397858961119e-3_dp
525  CALL load_sub_grid("A3", 10, 0)
526 
527  w(1) = 3.65004580767725542865433220112651e-3_dp
528  r(1) = 1.29238672710514925339493976600550e-1_dp
529  w(2) = 3.60482260141988171131480913104353e-3_dp
530  r(2) = 3.71034178384821189405344300671593e-1_dp
531  w(3) = 3.57672966174336707556208137560857e-3_dp
532  r(3) = 7.43452042987555751133204566760209e-1_dp
533  w(4) = 3.44978842430588331001302771048283e-3_dp
534  r(4) = 8.67643624544083327473890295837421e-1_dp
535  w(5) = 3.10895312241367525484587698082774e-3_dp
536  r(5) = 9.49454317226443084214869821724903e-1_dp
537  w(6) = 2.35210141368916437879217118337424e-3_dp
538  r(6) = 9.90705621379408123821774729602922e-1_dp
539  CALL load_sub_grid("B", 10, 6)
540 
541  w(1) = 3.60082093221646027279920634177099e-3_dp
542  r(1) = 8.20326419827759303328870367500864e-1_dp
543  w(2) = 2.98234496317180385195111046924520e-3_dp
544  r(2) = 9.64408914879206014987053264857406e-1_dp
545  CALL load_sub_grid("C", 10, 2)
546 
547  w(1) = 3.57154055427338708123297920312395e-3_dp
548  r(1) = 2.51003475177046506904110494820777e-1_dp
549  r(2) = 5.44867737258077380269062623720797e-1_dp
550  r(3) = 8.00072749407395172686232883863933e-1_dp
551  w(2) = 3.39231220500617018197882653945702e-3_dp
552  r(4) = 1.23354853258332742165467555277499e-1_dp
553  r(5) = 4.12772408316853095996383989497138e-1_dp
554  r(6) = 9.02442529533000401095678759353334e-1_dp
555  CALL load_sub_grid("D", 10, 6)
556 
557 ! *** 11. l = 35 (434 points) ***
558 
559  w(1) = 5.26589796822443623921598397444095e-4_dp
560  CALL load_sub_grid("A1", 11, 0)
561 
562  w(1) = 2.54821997200260718024899528063707e-3_dp
563  CALL load_sub_grid("A2", 11, 0)
564 
565  w(1) = 2.51231741892730716751285677008112e-3_dp
566  CALL load_sub_grid("A3", 11, 0)
567 
568  w(1) = 1.46249562159461384222611198788353e-3_dp
569  r(1) = 9.94255912631277812357804047239411e-1_dp
570  w(2) = 2.01427902091852819554717351102614e-3_dp
571  r(2) = 9.67987158791472796844440561853288e-1_dp
572  w(3) = 2.30269478222741577118243755624539e-3_dp
573  r(3) = 9.14472801120872429366691177286487e-1_dp
574  w(4) = 2.44537343731298000188170923067793e-3_dp
575  r(4) = 8.31584400419232294499745594669204e-1_dp
576  w(5) = 2.50172516840293614549327311336461e-3_dp
577  r(5) = 7.19016501040843432905788800294849e-1_dp
578  w(6) = 2.51326717459756436118956600426018e-3_dp
579  r(6) = 4.07712664897769512483055658274718e-1_dp
580  w(7) = 2.53040380118635500209853222454729e-3_dp
581  r(7) = 2.12646824707552073524018894972799e-1_dp
582  CALL load_sub_grid("B", 11, 7)
583 
584  w(1) = 1.91095128217953227363116198076372e-3_dp
585  r(1) = 9.77642811118264871364737333213224e-1_dp
586  w(2) = 2.41744237563898077608784837021936e-3_dp
587  r(2) = 8.81813287779428812899447039158355e-1_dp
588  CALL load_sub_grid("C", 11, 2)
589 
590  w(1) = 2.23660776043784866397235325901501e-3_dp
591  r(1) = 9.92176963642923726861469072682696e-2_dp
592  r(2) = 3.34436314534345491435541212141297e-1_dp
593  r(3) = 9.37180985855372235789161206437430e-1_dp
594  w(2) = 2.41693004432477530950382860647420e-3_dp
595  r(4) = 2.05482369640304370826435780923978e-1_dp
596  r(5) = 4.50233038258262537898138529993494e-1_dp
597  r(6) = 8.68946032287241197946412945028781e-1_dp
598  w(3) = 2.51223685456349510228853571762152e-3_dp
599  r(7) = 1.06801826075804827808519981079378e-1_dp
600  r(8) = 5.90515704892527108597639202779953e-1_dp
601  r(9) = 7.99927854385728570494616568630393e-1_dp
602  w(4) = 2.49664405455308596359511734587523e-3_dp
603  r(10) = 3.10428403516654146818973681387686e-1_dp
604  r(11) = 5.55015236107680716116395510647568e-1_dp
605  r(12) = 7.71746262691590088133470564383333e-1_dp
606  CALL load_sub_grid("D", 11, 12)
607 
608 ! *** 12. l = 41 (590 points) ***
609 
610  w(1) = 3.09512129530618734224885916984167e-4_dp
611  CALL load_sub_grid("A1", 12, 0)
612 
613  w(1) = 1.85237969859748902097779927120955e-3_dp
614  CALL load_sub_grid("A3", 12, 0)
615 
616  w(1) = 9.76433116505105003063946798281256e-4_dp
617  r(1) = 9.96278129754016372294779397439010e-1_dp
618  w(2) = 1.38473723485169190049558481046633e-3_dp
619  r(2) = 9.78480583762693839428807199465825e-1_dp
620  w(3) = 1.61721064725441119207240564027320e-3_dp
621  r(3) = 9.41414158220402542954812123169147e-1_dp
622  w(4) = 1.74956465728115411858337657547711e-3_dp
623  r(4) = 8.83078727934132546639472279693012e-1_dp
624  w(5) = 1.81847177816276877817839645350131e-3_dp
625  r(5) = 8.02836877335273789544708232847842e-1_dp
626  w(6) = 1.84671595615124182496431643927999e-3_dp
627  r(6) = 7.00768575373572920755474238992223e-1_dp
628  w(7) = 1.85202882829621309713188574624172e-3_dp
629  r(7) = 4.33373868777154278470427918169993e-1_dp
630  w(8) = 1.85881258543831701688713685607976e-3_dp
631  r(8) = 2.70356088359165054450644840302674e-1_dp
632  w(9) = 1.87179063927774375088198703268059e-3_dp
633  r(9) = 9.21904070768989460773325829762845e-2_dp
634  CALL load_sub_grid("B", 12, 9)
635 
636  w(1) = 1.30032168588604773254689500223665e-3_dp
637  r(1) = 9.85013335028001910431569760301413e-1_dp
638  w(2) = 1.70515399639586401999426890257133e-3_dp
639  r(2) = 9.18045287711453949033261544688478e-1_dp
640  w(3) = 1.85716119677407798248150549753942e-3_dp
641  r(3) = 7.91101929626901988791072435283520e-1_dp
642  CALL load_sub_grid("C", 12, 3)
643 
644  w(1) = 1.55521360339680849695800543399046e-3_dp
645  r(1) = 8.21302158193251139256011433978433e-2_dp
646  r(2) = 2.77867319058624428710339115104831e-1_dp
647  r(3) = 9.57102074310072578548507660672158e-1_dp
648  w(2) = 1.80223912800852549116687840059028e-3_dp
649  r(4) = 8.99920584207487492736600381248490e-2_dp
650  r(5) = 5.03356427107511721798695016575784e-1_dp
651  r(6) = 8.59379855890721226547417613471625e-1_dp
652  w(3) = 1.84983056044366016523678105066982e-3_dp
653  r(7) = 1.81664084036020946133369276322890e-1_dp
654  r(8) = 5.98412649788537962548021778158698e-1_dp
655  r(9) = 7.80320742479920327279647082439668e-1_dp
656  w(4) = 1.71390450710670866804340083221112e-3_dp
657  r(10) = 1.72079522565687812382959749101837e-1_dp
658  r(11) = 3.79103540769556328153581995776882e-1_dp
659  r(12) = 9.09213475092373607255560905376387e-1_dp
660  w(5) = 1.80265893437745115894760427403985e-3_dp
661  r(13) = 2.63471665593794963182134911777324e-1_dp
662  r(14) = 4.74239284255198024276965888711084e-1_dp
663  r(15) = 8.40047488359050429417090817376105e-1_dp
664  w(6) = 1.84286647290528563239873317969286e-3_dp
665  r(16) = 3.51828092773351899746468433493901e-1_dp
666  r(17) = 5.61026380862206018993247924039616e-1_dp
667  r(18) = 7.49310611904115932021924350883623e-1_dp
668  CALL load_sub_grid("D", 12, 18)
669 
670 ! *** 13. l = 47 (770 points) ***
671 
672  w(1) = 2.19294208818118413191132531546907e-4_dp
673  CALL load_sub_grid("A1", 13, 0)
674 
675  w(1) = 1.43643361731907982089311290725143e-3_dp
676  CALL load_sub_grid("A2", 13, 0)
677 
678  w(1) = 1.42194034433587736471699229343586e-3_dp
679  CALL load_sub_grid("A3", 13, 0)
680 
681  w(1) = 6.79812351105050201620332392505941e-4_dp
682  r(1) = 9.97408677652823043744886496130338e-1_dp
683  w(2) = 9.91318423529491220896771270468706e-4_dp
684  r(2) = 9.84799753572301179668683394920869e-1_dp
685  w(3) = 1.18020783323894879580204544917243e-3_dp
686  r(3) = 9.58036675983391439732458619060098e-1_dp
687  w(4) = 1.29659960208092067423594734151509e-3_dp
688  r(4) = 9.15317950483154831654282453968846e-1_dp
689  w(5) = 1.36587142742831640181200652406724e-3_dp
690  r(5) = 8.55901928697886435270454067917142e-1_dp
691  w(6) = 1.40298860477532526267417750582642e-3_dp
692  r(6) = 7.79621319527635171330859492071650e-1_dp
693  w(7) = 1.41864556359560936142032713234525e-3_dp
694  r(7) = 6.86644447264154195285405155618666e-1_dp
695  w(8) = 1.42137674185166176103362636565150e-3_dp
696  r(8) = 4.52311920313658441442123883818590e-1_dp
697  w(9) = 1.42399647549096162940277119054908e-3_dp
698  r(9) = 3.12521305001653125265256223110153e-1_dp
699  w(10) = 1.43155404217856675285551659613462e-3_dp
700  r(10) = 1.60155803498828974610387120985563e-1_dp
701  CALL load_sub_grid("B", 13, 10)
702 
703  w(1) = 9.25440149986536789398468419487000e-4_dp
704  r(1) = 9.89477537495598496934466234590453e-1_dp
705  w(2) = 1.25023999505350931588903916766368e-3_dp
706  r(2) = 9.40776878793758755393692765525837e-1_dp
707  w(3) = 1.39436584332923012313782491233921e-3_dp
708  r(3) = 8.45749305193653306776973233373898e-1_dp
709  CALL load_sub_grid("C", 13, 3)
710 
711  w(1) = 1.12708909467174883469499826293069e-3_dp
712  r(1) = 6.94402439334941301856132689108761e-2_dp
713  r(2) = 2.35518789424232641745294975361896e-1_dp
714  r(3) = 9.69385863498432080572651262482050e-1_dp
715  w(2) = 1.34575376091067007284708159178371e-3_dp
716  r(4) = 2.26900410952945985812144550510454e-1_dp
717  r(5) = 4.10218247404573022502091360294078e-1_dp
718  r(6) = 8.83310360522112719095559130461882e-1_dp
719  w(3) = 1.42495728331678280442457616193820e-3_dp
720  r(7) = 8.02557460777533890494192154117455e-2_dp
721  r(8) = 6.21430241748160458082227723944198e-1_dp
722  r(9) = 7.79348105702660973885784203335648e-1_dp
723  w(4) = 1.26152334123774998512114871120604e-3_dp
724  r(10) = 1.46799952789657197013820141783396e-1_dp
725  r(11) = 3.24528434571739443574137218155171e-1_dp
726  r(12) = 9.34414827052402165196138643907493e-1_dp
727  w(5) = 1.39254710605269594012443620424449e-3_dp
728  r(13) = 1.57150776982472710564392240262888e-1_dp
729  r(14) = 5.22448218969662967424959711591943e-1_dp
730  r(15) = 8.38064133458312497889043403162912e-1_dp
731  w(6) = 1.41876167787765638610216672064623e-3_dp
732  r(16) = 2.36570299315724563080851921006450e-1_dp
733  r(17) = 6.01754663408955808458505175650313e-1_dp
734  r(18) = 7.62840624604669826410820436887813e-1_dp
735  w(7) = 1.33836668447955413932118842030907e-3_dp
736  r(19) = 7.71481586676573204146393256189282e-2_dp
737  r(20) = 4.34657551614116278920169057936696e-1_dp
738  r(21) = 8.97285336132833396499244991766618e-1_dp
739  w(8) = 1.39370086267613137196129133534721e-3_dp
740  r(22) = 3.06293666621073020830889612421600e-1_dp
741  r(23) = 4.90882658903761621546950183900134e-1_dp
742  r(24) = 8.15609223203975422051589658409773e-1_dp
743  w(9) = 1.41591475746693200265535028223575e-3_dp
744  r(25) = 3.82247737952478700050265491776632e-1_dp
745  r(26) = 5.64876814909950046651375249432877e-1_dp
746  r(27) = 7.31300793659765701947278263710234e-1_dp
747  CALL load_sub_grid("D", 13, 27)
748 
749 ! *** 14. l = 53 (974 points) ***
750 
751  w(1) = 1.43829419052743111472634384792800e-4_dp
752  CALL load_sub_grid("A1", 14, 0)
753 
754  w(1) = 1.12577228828700411922446003897444e-3_dp
755  CALL load_sub_grid("A3", 14, 0)
756 
757  w(1) = 4.94802934194924095056628951683154e-4_dp
758  r(1) = 9.98155345023846501191494527575073e-1_dp
759  w(2) = 7.35799010912547049057334785150092e-4_dp
760  r(2) = 9.88883224354685545466876075112182e-1_dp
761  w(3) = 8.88913277130438430936840534873175e-4_dp
762  r(3) = 9.68890220434707404463853311788372e-1_dp
763  w(4) = 9.88834783892143487490379018339493e-4_dp
764  r(4) = 9.36602730407163187902332491169310e-1_dp
765  w(5) = 1.05329968170947064968554154238842e-3_dp
766  r(5) = 8.91267942647606054508357503868536e-1_dp
767  w(6) = 1.09277880701457848752501645357106e-3_dp
768  r(6) = 8.32596723702351872809065001851482e-1_dp
769  w(7) = 1.11438939406322716311544826926779e-3_dp
770  r(7) = 7.60582905315251495676259855686005e-1_dp
771  w(8) = 1.12372478805155528926212353749792e-3_dp
772  r(8) = 6.75400969108414309734349145075511e-1_dp
773  w(9) = 1.12523932524381359890224350348300e-3_dp
774  r(9) = 4.66858905695743283152769352096062e-1_dp
775  w(10) = 1.12615327181590500171763113615557e-3_dp
776  r(10) = 3.44613654237438223690005816795002e-1_dp
777  w(11) = 1.13028693112384079609639852411886e-3_dp
778  r(11) = 2.11954151850184645694140401473565e-1_dp
779  w(12) = 1.13498653436395488643714589963293e-3_dp
780  r(12) = 7.16244014499556615845369803814026e-2_dp
781  CALL load_sub_grid("B", 14, 12)
782 
783  w(1) = 6.82336792710993096637138363442284e-4_dp
784  r(1) = 9.92323565431490196070394244122238e-1_dp
785  w(2) = 9.45415816044709583567874030695969e-4_dp
786  r(2) = 9.55781512496548488574596747552425e-1_dp
787  w(3) = 1.07442997538567914061819358161104e-3_dp
788  r(3) = 8.82785980701181710576015026411856e-1_dp
789  w(4) = 1.12930008656913165822354345410170e-3_dp
790  r(4) = 7.73778447257374736807517446423091e-1_dp
791  CALL load_sub_grid("C", 14, 4)
792 
793  w(1) = 8.43688450090195438498026316671055e-4_dp
794  r(1) = 5.97404861418134181366741615801962e-2_dp
795  r(2) = 2.02912875277752280821562682821390e-1_dp
796  r(3) = 9.77372722845309994986723236843860e-1_dp
797  w(2) = 1.07525572044888463296011392358171e-3_dp
798  r(4) = 1.37576040847363647998707229269443e-1_dp
799  r(5) = 4.60262194248405393969672054729315e-1_dp
800  r(6) = 8.77058461865802689033970747916718e-1_dp
801  w(3) = 1.10857723686446203483870096411918e-3_dp
802  r(7) = 3.39101652633628571879780724877562e-1_dp
803  r(8) = 5.03067399966203571325278413235681e-1_dp
804  r(9) = 7.94942299964208514029117644252761e-1_dp
805  w(4) = 9.56647532378335729987022997768218e-4_dp
806  r(10) = 1.27167519143981950887694563391455e-1_dp
807  r(11) = 2.81760642244213432084049569237994e-1_dp
808  r(12) = 9.51020169374389952612600596224493e-1_dp
809  w(5) = 1.08066325071739071464463316273343e-3_dp
810  r(13) = 2.69312074041351249441688496163892e-1_dp
811  r(14) = 4.33156129172015739916409763707103e-1_dp
812  r(15) = 8.60143461601761963548074094490711e-1_dp
813  w(6) = 1.12679713119629459182839576027292e-3_dp
814  r(16) = 1.41978645260191825726693154370171e-1_dp
815  r(17) = 6.25616735858081415467234398457286e-1_dp
816  r(18) = 7.67102186220558360145428572382623e-1_dp
817  w(7) = 1.02256871535806121135514702022316e-3_dp
818  r(19) = 6.70928460073825495111114896527700e-2_dp
819  r(20) = 3.79839521685915669705644712365302e-1_dp
820  r(21) = 9.22616110730809020138255560099254e-1_dp
821  w(8) = 1.10896026771310753764243318312336e-3_dp
822  r(22) = 7.05773818325617225225155364651637e-2_dp
823  r(23) = 5.51750542142352049132113965320893e-1_dp
824  r(24) = 8.31017552413474225750006298786621e-1_dp
825  w(9) = 1.12279065343576582686387381292198e-3_dp
826  r(25) = 2.78388847788215460217462722823059e-1_dp
827  r(26) = 6.02961915615918685584436745852250e-1_dp
828  r(27) = 7.47620610834085792324588316104014e-1_dp
829  w(10) = 1.03240184711745983700951101978720e-3_dp
830  r(28) = 1.97957893891740690574322079335028e-1_dp
831  r(29) = 3.58960632958909578333772677316348e-1_dp
832  r(30) = 9.12118378409121483660044157731511e-1_dp
833  w(11) = 1.10724938228385393683388780275631e-3_dp
834  r(31) = 2.08730706110327399856945819943227e-1_dp
835  r(32) = 5.34866643813547649971323458627733e-1_dp
836  r(33) = 8.18748536281021806431067610000242e-1_dp
837  w(12) = 1.12178004851997205823535727177375e-3_dp
838  r(34) = 4.05512213787283588596898056051174e-1_dp
839  r(35) = 5.67499754607437348401393912269671e-1_dp
840  r(36) = 7.16591845467023718833743633176626e-1_dp
841  CALL load_sub_grid("D", 14, 36)
842 
843  init_lebedev_grids_done = .true.
844 
845  CALL timestop(handle)
846 
847  END SUBROUTINE init_lebedev_grids
848 
849 END MODULE lebedev
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
Definition: grid_common.h:117
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
Generation of the spherical Lebedev grids. All Lebedev grids were generated with a precision of at le...
Definition: lebedev.F:57
subroutine, public deallocate_lebedev_grids()
...
Definition: lebedev.F:324
type(oh_grid), dimension(nlg), target, public lebedev_grid
Definition: lebedev.F:85
integer function, public get_number_of_lebedev_grid(l, n)
Get the number of the Lebedev grid, which has the requested angular momentum quantnum number l or siz...
Definition: lebedev.F:114
subroutine, public init_lebedev_grids()
Load the coordinates and weights of the nonredundant Lebedev grid points.
Definition: lebedev.F:344