File: delri.f

package info (click to toggle)
mopac7 1.15-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, jessie, jessie-kfreebsd, stretch
  • size: 3,748 kB
  • ctags: 5,768
  • sloc: fortran: 35,321; sh: 9,039; ansic: 417; makefile: 80
file content (158 lines) | stat: -rw-r--r-- 7,925 bytes parent folder | download | duplicates (8)
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
150
151
152
153
154
155
156
157
158
      SUBROUTINE DELRI(DG,NI,NJ,RR,DEL1)
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
      DIMENSION DG(22)
************************************************************************
*                                                                      *
*    ON INPUT NI = ATOMIC NUMBER OF FIRST ATOM                         *
*             NJ = ATOMIC NUMBER OF SECOND ATOM                        *
*             RR = INTERATOMIC DISTANCE IN BOHRS                       *
*                                                                      *
************************************************************************
      COMMON  /MULTIP/  DD(107),QQ(107),BDD(107,3)
      COMMON /TWOEL3/ F03(107)
      COMMON /NATORB/ NATORB(107)
      COMMON /ALPHA3/ ALP3(153)
      COMMON /KEYWRD/ KEYWRD
      COMMON /NUMCAL/ NUMCAL
      CHARACTER*241 KEYWRD
      DATA ICALCN/0/
      IF (ICALCN.NE.NUMCAL) THEN
         ICALCN=NUMCAL
      ENDIF
      A0=0.529167D0
      TERM=(27.21D0*DEL1)/(RR*A0*A0)
      DA=DD(NI)
      DB=DD(NJ)
      QA=QQ(NI)
      QB=QQ(NJ)
C   HYDROGEN-HYDROGEN
      AEE=0.25D0*(1.0D0/BDD(NI,1)+1.0D0/BDD(NJ,1))**2
      EE    =-RR/(SQRT(RR**2+AEE))**3
      DG(1)=TERM*EE
      IF(NATORB(NI).LE.2.AND.NATORB(NJ).LE.2) RETURN
      IF(NATORB(NI).LE.2) GO TO 10
C   HEAVY ATOM-HYDROGEN
      ADE=0.25D0*(1.0D0/BDD(NI,2)+1.0D0/BDD(NJ,1))**2
      AQE=0.25D0*(1.0D0/BDD(NI,3)+1.0D0/BDD(NJ,1))**2
      DZE   = (RR+DA)/(SQRT((RR+DA)**2+ADE))**3
     1       -(RR-DA)/(SQRT((RR-DA)**2+ADE))**3
      QZZE  =-(RR+2.0D0*QA)/(SQRT((RR+2.0D0*QA)**2+AQE))**3
     1       -(RR-2.0D0*QA)/(SQRT((RR-2.0D0*QA)**2+AQE))**3
     2       +(2.0D0*RR)/(SQRT(RR**2+AQE))**3
      QXXE  =-(2.0D0*RR)/(SQRT(RR**2+4.0D0*QA**2+AQE))**3
     1       +(2.0D0*RR)/(SQRT(RR**2+AQE))**3
      DG(2)=-(TERM*DZE)/2.0D0
      DG(3)=TERM*(EE+QZZE/4.0D0)
      DG(4)=TERM*(EE+QXXE/4.0D0)
      IF(NATORB(NJ).LE.2) RETURN
C   HYDROGEN-HEAVY ATOM
   10 AED=0.25D0*(1.0D0/BDD(NI,1)+1.0D0/BDD(NJ,2))**2
      AEQ=0.25D0*(1.0D0/BDD(NI,1)+1.0D0/BDD(NJ,3))**2
      EDZ   = (RR-DB)/(SQRT((RR-DB)**2+AED))**3
     1       -(RR+DB)/(SQRT((RR+DB)**2+AED))**3
      EQZZ  =-(RR-2.0D0*QB)/(SQRT((RR-2.0D0*QB)**2+AEQ))**3
     1       -(RR+2.0D0*QB)/(SQRT((RR+2.0D0*QB)**2+AEQ))**3
     2       +(2.0D0*RR)/(SQRT(RR**2+AEQ))**3
      EQXX  =-(2.0D0*RR)/(SQRT(RR**2+4.0D0*QB**2+AEQ))**3
     1       +(2.0D0*RR)/(SQRT(RR**2+AEQ))**3
      DG(5)=-(TERM*EDZ)/2.0D0
      DG(11)=TERM*(EE+EQZZ/4.0D0)
      DG(12)=TERM*(EE+EQXX/4.0D0)
      IF(NATORB(NI).LE.2) RETURN
C   HEAVY ATOM-HEAVY ATOM
      ADD=0.25D0*(1.D0/BDD(NI,2)+1.D0/BDD(NJ,2))**2
      ADQ=0.25D0*(1.D0/BDD(NI,2)+1.D0/BDD(NJ,3))**2
      AQD=0.25D0*(1.D0/BDD(NI,3)+1.D0/BDD(NJ,2))**2
      AQQ=0.25D0*(1.D0/BDD(NI,3)+1.D0/BDD(NJ,3))**2
      DXDX  =-(2.D0*RR)/(SQRT(RR**2+(DA-DB)**2+ADD))**3
     1       +(2.D0*RR)/(SQRT(RR**2+(DA+DB)**2+ADD))**3
      DZDZ  =-(RR+DA-DB)/(SQRT((RR+DA-DB)**2+ADD))**3
     1       -(RR-DA+DB)/(SQRT((RR-DA+DB)**2+ADD))**3
     2       +(RR-DA-DB)/(SQRT((RR-DA-DB)**2+ADD))**3
     3       +(RR+DA+DB)/(SQRT((RR+DA+DB)**2+ADD))**3
      DZQXX = 2.D0*(RR+DA)/(SQRT((RR+DA)**2+4.D0*QB**2+ADQ))**3
     1       -2.D0*(RR-DA)/(SQRT((RR-DA)**2+4.D0*QB**2+ADQ))**3
     2       -2.D0*(RR+DA)/(SQRT((RR+DA)**2+ADQ))**3
     3       +2.D0*(RR-DA)/(SQRT((RR-DA)**2+ADQ))**3
      QXXDZ = 2.D0*(RR-DB)/(SQRT((RR-DB)**2+4.D0*QA**2+AQD))**3
     1       -2.D0*(RR+DB)/(SQRT((RR+DB)**2+4.D0*QA**2+AQD))**3
     2       -2.D0*(RR-DB)/(SQRT((RR-DB)**2+AQD))**3
     3       +2.D0*(RR+DB)/(SQRT((RR+DB)**2+AQD))**3
      DZQZZ = (RR+DA-2.D0*QB)/(SQRT((RR+DA-2.D0*QB)**2+ADQ))**3
     1       -(RR-DA-2.D0*QB)/(SQRT((RR-DA-2.D0*QB)**2+ADQ))**3
     2       +(RR+DA+2.D0*QB)/(SQRT((RR+DA+2.D0*QB)**2+ADQ))**3
     3       -(RR-DA+2.D0*QB)/(SQRT((RR-DA+2.D0*QB)**2+ADQ))**3
     4       +2.D0*(RR-DA)/(SQRT((RR-DA)**2+ADQ))**3
     5       -2.D0*(RR+DA)/(SQRT((RR+DA)**2+ADQ))**3
      QZZDZ = (RR+2.D0*QA-DB)/(SQRT((RR+2.D0*QA-DB)**2+AQD))**3
     1       -(RR+2.D0*QA+DB)/(SQRT((RR+2.D0*QA+DB)**2+AQD))**3
     2       +(RR-2.D0*QA-DB)/(SQRT((RR-2.D0*QA-DB)**2+AQD))**3
     3       -(RR-2.D0*QA+DB)/(SQRT((RR-2.D0*QA+DB)**2+AQD))**3
     4       -2.D0*(RR-DB)/(SQRT((RR-DB)**2+AQD))**3
     5       +2.D0*(RR+DB)/(SQRT((RR+DB)**2+AQD))**3
      QXXQXX=-(2.D0*RR)/(SQRT(RR**2+4.D0*(QA-QB)**2+AQQ))**3
     1       -(2.D0*RR)/(SQRT(RR**2+4.D0*(QA+QB)**2+AQQ))**3
     2       +(4.D0*RR)/(SQRT(RR**2+4.D0*QA**2+AQQ))**3
     3       +(4.D0*RR)/(SQRT(RR**2+4.D0*QB**2+AQQ))**3
     4       -(4.D0*RR)/(SQRT(RR**2+AQQ))**3
      QXXQYY=-(4.D0*RR)/(SQRT(RR**2+4.D0*QA**2+4.D0*QB**2+AQQ))**3
     1       +(4.D0*RR)/(SQRT(RR**2+4.D0*QA**2+AQQ))**3
     2       +(4.D0*RR)/(SQRT(RR**2+4.D0*QB**2+AQQ))**3
     3       -(4.D0*RR)/(SQRT(RR**2+AQQ))**3
      QXXQZZ=
     1     -2.D0*(RR-2.D0*QB)/(SQRT((RR-2.D0*QB)**2+4.D0*QA**2+AQQ))**3
     2     -2.D0*(RR+2.D0*QB)/(SQRT((RR+2.D0*QB)**2+4.D0*QA**2+AQQ))**3
     3       +2.D0*(RR-2.D0*QB)/(SQRT((RR-2.D0*QB)**2+AQQ))**3
     4       +2.D0*(RR+2.D0*QB)/(SQRT((RR+2.D0*QB)**2+AQQ))**3
     5       +(4.D0*RR)/(SQRT(RR**2+4.D0*QA**2+AQQ))**3
     6       -(4.D0*RR)/(SQRT(RR**2+AQQ))**3
      QZZQXX=
     1     -2.D0*(RR+2.D0*QA)/(SQRT((RR+2.D0*QA)**2+4.D0*QB**2+AQQ))**3
     2     -2.D0*(RR-2.D0*QA)/(SQRT((RR-2.D0*QA)**2+4.D0*QB**2+AQQ))**3
     3       +2.D0*(RR+2.D0*QA)/(SQRT((RR+2.D0*QA)**2+AQQ))**3
     4       +2.D0*(RR-2.D0*QA)/(SQRT((RR-2.D0*QA)**2+AQQ))**3
     5       +(4.D0*RR)/(SQRT(RR**2+4.D0*QB**2+AQQ))**3
     6       -(4.D0*RR)/(SQRT(RR**2+AQQ))**3
      QZZQZZ=
     1     -(RR+2.D0*QA-2.D0*QB)/(SQRT((RR+2.D0*QA-2.D0*QB)**2+AQQ))**3
     2     -(RR+2.D0*QA+2.D0*QB)/(SQRT((RR+2.D0*QA+2.D0*QB)**2+AQQ))**3
     3     -(RR-2.D0*QA-2.D0*QB)/(SQRT((RR-2.D0*QA-2.D0*QB)**2+AQQ))**3
     4     -(RR-2.D0*QA+2.D0*QB)/(SQRT((RR-2.D0*QA+2.D0*QB)**2+AQQ))**3
     5       +2.D0*(RR-2.D0*QA)/(SQRT((RR-2.D0*QA)**2+AQQ))**3
     6       +2.D0*(RR+2.D0*QA)/(SQRT((RR+2.D0*QA)**2+AQQ))**3
     7       +2.D0*(RR-2.D0*QB)/(SQRT((RR-2.D0*QB)**2+AQQ))**3
     8       +2.D0*(RR+2.D0*QB)/(SQRT((RR+2.D0*QB)**2+AQQ))**3
     9       -(4.D0*RR)/(SQRT(RR**2+AQQ))**3
      DXQXZ = 2.D0*(RR-QB)/(SQRT((RR-QB)**2+(DA-QB)**2+ADQ))**3
     1       -2.D0*(RR+QB)/(SQRT((RR+QB)**2+(DA-QB)**2+ADQ))**3
     2       -2.D0*(RR-QB)/(SQRT((RR-QB)**2+(DA+QB)**2+ADQ))**3
     3       +2.D0*(RR+QB)/(SQRT((RR+QB)**2+(DA+QB)**2+ADQ))**3
      QXZDX = 2.D0*(RR+QA)/(SQRT((RR+QA)**2+(QA-DB)**2+AQD))**3
     1       -2.D0*(RR-QA)/(SQRT((RR-QA)**2+(QA-DB)**2+AQD))**3
     2       -2.D0*(RR+QA)/(SQRT((RR+QA)**2+(QA+DB)**2+AQD))**3
     3       +2.D0*(RR-QA)/(SQRT((RR-QA)**2+(QA+DB)**2+AQD))**3
      QXZQXZ=-2.D0*(RR+QA-QB)/(SQRT((RR+QA-QB)**2+(QA-QB)**2+AQQ))**3
     1       +2.D0*(RR+QA+QB)/(SQRT((RR+QA+QB)**2+(QA-QB)**2+AQQ))**3
     2       +2.D0*(RR-QA-QB)/(SQRT((RR-QA-QB)**2+(QA-QB)**2+AQQ))**3
     3       -2.D0*(RR-QA+QB)/(SQRT((RR-QA+QB)**2+(QA-QB)**2+AQQ))**3
     4       +2.D0*(RR+QA-QB)/(SQRT((RR+QA-QB)**2+(QA+QB)**2+AQQ))**3
     5       -2.D0*(RR+QA+QB)/(SQRT((RR+QA+QB)**2+(QA+QB)**2+AQQ))**3
     6       -2.D0*(RR-QA-QB)/(SQRT((RR-QA-QB)**2+(QA+QB)**2+AQQ))**3
     7       +2.D0*(RR-QA+QB)/(SQRT((RR-QA+QB)**2+(QA+QB)**2+AQQ))**3
      DG(6)=(TERM*DZDZ)/4.0D0
      DG(7)=(TERM*DXDX)/4.0D0
      DG(8)=-TERM*(EDZ/2.0D0+QZZDZ/8.0D0)
      DG(9)=-TERM*(EDZ/2.0D0+QXXDZ/8.0D0)
      DG(10)=-(TERM*QXZDX)/8.0D0
      DG(13)=-TERM*(DZE/2.0D0+DZQZZ/8.0D0)
      DG(14)=-TERM*(DZE/2.0D0+DZQXX/8.0D0)
      DG(15)=-(TERM*DXQXZ)/8.0D0
      DG(16)=TERM*(EE+EQZZ/4.0D0+QZZE/4.0D0+QZZQZZ/16.0D0)
      DG(17)=TERM*(EE+EQZZ/4.0D0+QXXE/4.0D0+QXXQZZ/16.0D0)
      DG(18)=TERM*(EE+EQXX/4.0D0+QZZE/4.0D0+QZZQXX/16.0D0)
      DG(19)=TERM*(EE+EQXX/4.0D0+QXXE/4.0D0+QXXQXX/16.0D0)
      DG(20)=(TERM*QXZQXZ)/16.0D0
      DG(21)=TERM*(EE+EQXX/4.0D0+QXXE/4.0D0+QXXQYY/16.0D0)
      DG(22)=TERM*(QXXQXX-QXXQYY)/32.0D0
      RETURN
      END