File: oed__nai_1d_p_integrals.f

package info (click to toggle)
aces3 3.0.6-7
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 82,460 kB
  • sloc: fortran: 225,647; ansic: 20,413; cpp: 4,349; makefile: 953; sh: 137
file content (149 lines) | stat: -rw-r--r-- 4,949 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
C  Copyright (c) 2003-2010 University of Florida
C
C  This program is free software; you can redistribute it and/or modify
C  it under the terms of the GNU General Public License as published by
C  the Free Software Foundation; either version 2 of the License, or
C  (at your option) any later version.

C  This program is distributed in the hope that it will be useful,
C  but WITHOUT ANY WARRANTY; without even the implied warranty of
C  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
C  GNU General Public License for more details.

C  The GNU General Public License is included in this distribution
C  in the file COPYRIGHT.
         SUBROUTINE  OED__NAI_1D_P_INTEGRALS
     +
     +                    ( SHELLP,
     +                      NGEXCEN,
     +                      WTS,
     +                      R1X,R1Y,R1Z,
     +                      R2,
     +
     +                               INT1DX,
     +                               INT1DY,
     +                               INT1DZ )
     +
C------------------------------------------------------------------------
C  OPERATION   : OED__NAI_1D_P_INTEGRALS
C  MODULE      : ONE ELECTRON INTEGRALS DIRECT
C  MODULE-ID   : OED
C  SUBROUTINES : none
C  DESCRIPTION : This operation calculates a full table of 1D P X,Y,Z
C                nuclear attraction integrals using the Rys vertical
C                recurrence scheme explained below.
C
C                The recurrence scheme is due to Rys, Dupuis and King,
C                J. Comp. Chem. 4, p.154-157 (1983).
C
C
C                   INT1D (0,0) = 1.D0    (* WEIGHT for the 1DX case)
C                   INT1D (1,0) = R1      (* WEIGHT for the 1DX case)
C
C                   For I = 1,...,SHELLP-1
C                       INT1D (I+1,0) = I * R2 * INT1D (I-1,0)
C                                         + R1 * INT1D (I,0)
C
C
C                The 1D P X,Y,Z integrals are calculated for all nuclear
C                centers, all exponent pairs and all quadrature points
C                simultaneously and placed into a 2-dimensional array.
C
C
C                  Input:
C
C                    SHELLP      =  maximum shell type A+B
C                    NGEXCEN     =  # of roots times # of primitive
C                                   exponent pairs times # of nuclear
C                                   attraction centers
C                    WTS         =  all quadrature weights
C                    R1x         =  the VRR R1-coefficients (individual
C                                   cartesian components x=X,Y,Z) for
C                                   shell expansion on center P
C                    R2          =  the coordinate independent VRR
C                                   R2-coefficients
C
C
C                  Output:
C
C                    INT1Dx      =  all 1D P nuclear attraction
C                                   integrals for each cartesian
C                                   component (x = X,Y,Z)
C
C
C  AUTHOR      : Norbert Flocke
C------------------------------------------------------------------------
C
C             ...include files and declare variables.
C
C
         IMPLICIT  NONE

         INTEGER   I,N
         INTEGER   I1,I2
         INTEGER   NGEXCEN
         INTEGER   SHELLP

         DOUBLE PRECISION  F
         DOUBLE PRECISION  ONE
         DOUBLE PRECISION  R2N

         DOUBLE PRECISION  R1X  (1:NGEXCEN)
         DOUBLE PRECISION  R1Y  (1:NGEXCEN)
         DOUBLE PRECISION  R1Z  (1:NGEXCEN)
         DOUBLE PRECISION  R2   (1:NGEXCEN)
         DOUBLE PRECISION  WTS  (1:NGEXCEN)

         DOUBLE PRECISION  INT1DX (1:NGEXCEN,0:SHELLP)
         DOUBLE PRECISION  INT1DY (1:NGEXCEN,0:SHELLP)
         DOUBLE PRECISION  INT1DZ (1:NGEXCEN,0:SHELLP)

         PARAMETER  (ONE   =  1.D0)
C
C
C------------------------------------------------------------------------
C
C
C             ...initialize 1D nuclear attraction integrals.
C
C
         DO 100 N = 1,NGEXCEN
            INT1DX (N,0) = WTS (N)
            INT1DY (N,0) = ONE
            INT1DZ (N,0) = ONE
  100    CONTINUE

         IF (SHELLP.EQ.0) RETURN
C
C
C             ...proceed, if total shell is > s-shell.
C
C
         DO 200 N = 1,NGEXCEN
            INT1DX (N,1) = WTS (N) * R1X (N)
            INT1DY (N,1) = R1Y (N)
            INT1DZ (N,1) = R1Z (N)
  200    CONTINUE

         F = ONE
         DO 220 I = 2,SHELLP
            I1 = I - 1
            I2 = I - 2
            DO 230 N = 1,NGEXCEN
               R2N = F * R2 (N)
               INT1DX (N,I) =       R2N * INT1DX (N,I2)
     +                        + R1X (N) * INT1DX (N,I1)
               INT1DY (N,I) =       R2N * INT1DY (N,I2)
     +                        + R1Y (N) * INT1DY (N,I1)
               INT1DZ (N,I) =       R2N * INT1DZ (N,I2)
     +                        + R1Z (N) * INT1DZ (N,I1)
  230       CONTINUE
            F = F + ONE
  220    CONTINUE
C
C
C             ...ready!
C
C
         RETURN
         END