(git:374b731)
Loading...
Searching...
No Matches
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! **************************************************************************************************
57MODULE 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
98CONTAINS
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! **************************************************************************************************
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
849END 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....
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