(git:374b731)
Loading...
Searching...
No Matches
ai_overlap_debug.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 Two-center overlap integrals over Cartesian Gaussian-type functions
10!> \par Literature
11!> S. Obara and A. Saika, J. Chem. Phys. 84, 3963 (1986)
12!> \par History
13!> none
14!> \author Dorothea Golze
15! **************************************************************************************************
17
18 USE kinds, ONLY: dp
19 USE mathconstants, ONLY: pi
20#include "../base/base_uses.f90"
21
22 IMPLICIT NONE
23
24 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'ai_overlap_debug'
25
26 INTEGER, PARAMETER :: lmax = 5
27
28 REAL(dp) :: xa, xb
29 REAL(dp), DIMENSION(3) :: a, b
30 REAL(dp), DIMENSION(3) :: p
31 REAL(dp) :: xsi, zeta, ss
32
33 PRIVATE
35
36CONTAINS
37
38! **************************************************************************************************
39!> \brief Calculation of overlap integrals over
40!> Cartesian Gaussian-type functions.
41!> \param ya ...
42!> \param yb ...
43!> \param rA ...
44!> \param rB ...
45! **************************************************************************************************
46 SUBROUTINE init_os_overlap2(ya, yb, rA, rB)
47 REAL(dp) :: ya, yb
48 REAL(dp), DIMENSION(3) :: ra, rb
49
50 xa = ya
51 xb = yb
52 a = ra
53 b = rb
54
55 xsi = xa + xb
56 zeta = xa*xb/xsi
57
58 p = (xa*a + xb*b)/xsi
59
60 ss = (pi/xsi)**(3._dp/2._dp)*exp(-zeta*sum((a - b)**2))
61
62 END SUBROUTINE init_os_overlap2
63
64! **************************************************************************************************
65
66! **************************************************************************************************
67!> \brief ...
68!> \param an ...
69!> \param bn ...
70!> \return ...
71! **************************************************************************************************
72 RECURSIVE FUNCTION os_overlap2(an, bn) RESULT(IAB)
73 INTEGER, DIMENSION(3) :: an, bn
74 REAL(dp) :: iab
75
76 INTEGER, DIMENSION(3), PARAMETER :: i1 = (/1, 0, 0/), i2 = (/0, 1, 0/), &
77 i3 = (/0, 0, 1/)
78
79 iab = 0._dp
80 IF (any(an < 0)) RETURN
81 IF (any(bn < 0)) RETURN
82
83 IF (sum(an + bn) == 0) THEN
84 iab = ss
85 RETURN
86 END IF
87
88 IF (bn(1) > 0) THEN
89 iab = os_overlap2(an + i1, bn - i1) + (a(1) - b(1))*os_overlap2(an, bn - i1)
90 ELSEIF (bn(2) > 0) THEN
91 iab = os_overlap2(an + i2, bn - i2) + (a(2) - b(2))*os_overlap2(an, bn - i2)
92 ELSEIF (bn(3) > 0) THEN
93 iab = os_overlap2(an + i3, bn - i3) + (a(3) - b(3))*os_overlap2(an, bn - i3)
94 ELSE
95 IF (an(1) > 0) THEN
96 iab = (p(1) - a(1))*os_overlap2(an - i1, bn) + &
97 0.5_dp*(an(1) - 1)/xsi*os_overlap2(an - i1 - i1, bn)
98 ELSEIF (an(2) > 0) THEN
99 iab = (p(2) - a(2))*os_overlap2(an - i2, bn) + &
100 0.5_dp*(an(2) - 1)/xsi*os_overlap2(an - i2 - i2, bn)
101 ELSEIF (an(3) > 0) THEN
102 iab = (p(3) - a(3))*os_overlap2(an - i3, bn) + &
103 0.5_dp*(an(3) - 1)/xsi*os_overlap2(an - i3 - i3, bn)
104 ELSE
105 cpabort("I(0000)")
106 END IF
107 END IF
108
109 END FUNCTION os_overlap2
110
111! **************************************************************************************************
112
113END MODULE ai_overlap_debug
Two-center overlap integrals over Cartesian Gaussian-type functions.
real(dp), dimension(3) b
subroutine, public init_os_overlap2(ya, yb, ra, rb)
Calculation of overlap integrals over Cartesian Gaussian-type functions.
recursive real(dp) function, public os_overlap2(an, bn)
...
integer, parameter lmax
real(dp), dimension(3) a
real(dp), dimension(3) p
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi