File: delmol.f

package info (click to toggle)
mopac7 1.15-5
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 3,748 kB
  • sloc: fortran: 35,321; sh: 9,039; ansic: 417; makefile: 95
file content (159 lines) | stat: -rw-r--r-- 7,843 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
159
      SUBROUTINE DELMOL(COORD,I,J,NI,NJ,IA,ID,JA,JD,IX,RIJ,TOMB,ISP)
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
      DIMENSION COORD(3,25)
      COMMON /DERIVS/ DS(16),DG(22),DR(100),TDX(3),TDY(3),TDZ(3)
      COMMON /EXTRA/  G(22),TX(3),TY(3),TZ(3)
      IF(NI.GT.1.OR.NJ.GT.1) CALL ROTAT(COORD,I,J,IX,RIJ,TOMB,2)
      IB=MAX(IA,ID)
      JB=MAX(JA,JD)
      DO 10 K=IA,IB
         KK=K-IA
         DO 10 L=K,IB
            LL=L-IA
            DO 10 M=JA,JB
               MM=M-JA
               DO 10 N=M,JB
                  NN=N-JA
                  ISP=ISP+1
                  IF(NN.EQ.0)THEN
                     IF(LL.EQ.0) THEN
C   (SS/SS)
                        DR(ISP)=DG(1)
                     ELSEIF(KK.EQ.0) THEN
C   (SP/SS)
                        DR(ISP)=DG(2)*TX(LL)+G(2)*TDX(LL)
                     ELSE
C   (PP/SS)
                        DR(ISP)=DG(3)*TX(KK)*TX(LL)
     1       +G(3)*(TDX(KK)*TX(LL)+TX(KK)*TDX(LL))
     2       +DG(4)*(TY(KK)*TY(LL)+TZ(KK)*TZ(LL))
     3       +G(4)*(TDY(KK)*TY(LL)+TY(KK)*TDY(LL)
     4             +TDZ(KK)*TZ(LL)+TZ(KK)*TDZ(LL))
                     ENDIF
                  ELSEIF(MM.EQ.0) THEN
                     IF(LL.EQ.0) THEN
C   (SS/SP)
                        DR(ISP)=DG(5)*TX(NN)+G(5)*TDX(NN)
                     ELSEIF(KK.EQ.0) THEN
C   (SP/SP)
                        DR(ISP)=DG(6)*TX(LL)*TX(NN)
     1       +G(6)*(TDX(LL)*TX(NN)+TX(LL)*TDX(NN))
     2       +DG(7)*(TY(LL)*TY(NN)+TZ(LL)*TZ(NN))
     3       +G(7)*(TDY(LL)*TY(NN)+TY(LL)*TDY(NN)
     4             +TDZ(LL)*TZ(NN)+TZ(LL)*TDZ(NN))
                     ELSE
C   (PP/SP)
                        DR(ISP)=DG(8)*TX(KK)*TX(LL)*TX(NN)
     1       +G(8)*(TDX(KK)*TX(LL)*TX(NN)+TX(KK)*TDX(LL)*TX(NN)
     2             +TX(KK)*TX(LL)*TDX(NN))
     3       +DG(9)*(TY(KK)*TY(LL)+TZ(KK)*TZ(LL))*TX(NN)
     4       +G(9)*((TDY(KK)*TY(LL)+TY(KK)*TDY(LL)
     5              +TDZ(KK)*TZ(LL)+TZ(KK)*TDZ(LL))*TX(NN)
     6             +(TY(KK)*TY(LL)+TZ(KK)*TZ(LL))*TDX(NN))
     7       +DG(10)*(TX(KK)*(TY(LL)*TY(NN)+TZ(LL)*TZ(NN))
     8               +TX(LL)*(TY(KK)*TY(NN)+TZ(KK)*TZ(NN)))
     9       +G(10)*(TDX(KK)*(TY(LL)*TY(NN)+TZ(LL)*TZ(NN))
     1              +TDX(LL)*(TY(KK)*TY(NN)+TZ(KK)*TZ(NN))
     2              +TX(KK)*(TDY(LL)*TY(NN)+TY(LL)*TDY(NN)
     3                      +TDZ(LL)*TZ(NN)+TZ(LL)*TDZ(NN))
     4              +TX(LL)*(TDY(KK)*TY(NN)+TY(KK)*TDY(NN)
     5                      +TDZ(KK)*TZ(NN)+TZ(KK)*TDZ(NN)))
                     ENDIF
                  ELSEIF(LL.EQ.0) THEN
C   (SS/PP)
                     DR(ISP)=DG(11)*TX(MM)*TX(NN)
     1       +G(11)*(TDX(MM)*TX(NN)+TX(MM)*TDX(NN))
     2       +DG(12)*(TY(MM)*TY(NN)+TZ(MM)*TZ(NN))
     3       +G(12)*(TDY(MM)*TY(NN)+TY(MM)*TDY(NN)
     4              +TDZ(MM)*TZ(NN)+TZ(MM)*TDZ(NN))
                  ELSEIF(KK.EQ.0) THEN
C   (SP/PP)
                     DR(ISP)=DG(13)*TX(LL)*TX(MM)*TX(NN)
     1       +G(13)*(TDX(LL)*TX(MM)*TX(NN)+TX(LL)*TDX(MM)*TX(NN)
     2              +TX(LL)*TX(MM)*TDX(NN))
     3       +DG(14)*TX(LL)*(TY(MM)*TY(NN)+TZ(MM)*TZ(NN))
     4       +G(14)*(TDX(LL)*(TY(MM)*TY(NN)+TZ(MM)*TZ(NN))
     5              +TX(LL)*(TDY(MM)*TY(NN)+TY(MM)*TDY(NN)
     6                      +TDZ(MM)*TZ(NN)+TZ(MM)*TDZ(NN)))
     7       +DG(15)*(TY(LL)*(TY(MM)*TX(NN)+TY(NN)*TX(MM))
     8               +TZ(LL)*(TZ(MM)*TX(NN)+TZ(NN)*TX(MM)))
     9       +G(15)*(TDY(LL)*(TY(MM)*TX(NN)+TY(NN)*TX(MM))
     1              +TDZ(LL)*(TZ(MM)*TX(NN)+TZ(NN)*TX(MM))
     2              +TY(LL)*(TDY(MM)*TX(NN)+TY(MM)*TDX(NN)
     3                      +TDY(NN)*TX(MM)+TY(NN)*TDX(MM))
     4              +TZ(LL)*(TDZ(MM)*TX(NN)+TZ(MM)*TDX(NN)
     5                      +TDZ(NN)*TX(MM)+TZ(NN)*TDX(MM)))
                  ELSE
C   (PP/PP)
                     DR(ISP)=DG(16)*TX(KK)*TX(LL)*TX(MM)*TX(NN)
     1       +G(16)*(TDX(KK)*TX(LL)*TX(MM)*TX(NN)
     2              +TX(KK)*TDX(LL)*TX(MM)*TX(NN)
     3              +TX(KK)*TX(LL)*TDX(MM)*TX(NN)
     4              +TX(KK)*TX(LL)*TX(MM)*TDX(NN))
     5       +DG(17)*(TY(KK)*TY(LL)+TZ(KK)*TZ(LL))*TX(MM)*TX(NN)
     6       +G(17)*((TDY(KK)*TY(LL)+TY(KK)*TDY(LL)
     7               +TDZ(KK)*TZ(LL)+TZ(KK)*TDZ(LL))*TX(MM)*TX(NN)
     8              +(TY(KK)*TY(LL)+TZ(KK)*TZ(LL))
     9              *(TDX(MM)*TX(NN)+TX(MM)*TDX(NN)))
     1       +DG(18)*TX(KK)*TX(LL)*(TY(MM)*TY(NN)+TZ(MM)*TZ(NN))
     2       +G(18)*((TDX(KK)*TX(LL)+TX(KK)*TDX(LL))
     3                 *(TY(MM)*TY(NN)+TZ(MM)*TZ(NN))
     4              +TX(KK)*TX(LL)*(TDY(MM)*TY(NN)+TY(MM)*TDY(NN)
     5                             +TDZ(MM)*TZ(NN)+TZ(MM)*TDZ(NN)))
                     DR(ISP)=DR(ISP)
     1       +DG(19)*(TY(KK)*TY(LL)*TY(MM)*TY(NN)
     2                  +TZ(KK)*TZ(LL)*TZ(MM)*TZ(NN))
     3       +G(19)*(TDY(KK)*TY(LL)*TY(MM)*TY(NN)
     4                 +TY(KK)*TDY(LL)*TY(MM)*TY(NN)
     5                 +TY(KK)*TY(LL)*TDY(MM)*TY(NN)
     6                 +TY(KK)*TY(LL)*TY(MM)*TDY(NN)
     7                 +TDZ(KK)*TZ(LL)*TZ(MM)*TZ(NN)
     8                 +TZ(KK)*TDZ(LL)*TZ(MM)*TZ(NN)
     9                 +TZ(KK)*TZ(LL)*TDZ(MM)*TZ(NN)
     1                 +TZ(KK)*TZ(LL)*TZ(MM)*TDZ(NN))
     2       +DG(20)*(TX(KK)*(TX(MM)*(TY(LL)*TY(NN)+TZ(LL)*TZ(NN))
     3                          +TX(NN)*(TY(LL)*TY(MM)+TZ(LL)*TZ(MM)))
     4                  +TX(LL)*(TX(MM)*(TY(KK)*TY(NN)+TZ(KK)*TZ(NN))
     5                          +TX(NN)*(TY(KK)*TY(MM)+TZ(KK)*TZ(MM))))
C      TO AVOID COMPILER DIFFICULTIES THIS IS DIVIDED
                     TEMP1=         TDX(KK)*(TX(MM)*(TY(LL)*TY(NN)+TZ(LL
     1)*TZ(NN))                          +TX(NN)*(TY(LL)*TY(MM)+TZ(LL)*T
     2Z(MM)))                 +TDX(LL)*(TX(MM)*(TY(KK)*TY(NN)+TZ(KK)*TZ(
     3NN))                          +TX(NN)*(TY(KK)*TY(MM)+TZ(KK)*TZ(MM)
     4))                 +TX(KK)*(TDX(MM)*(TY(LL)*TY(NN)+TZ(LL)*TZ(NN))
     5                         +TDX(NN)*(TY(LL)*TY(MM)+TZ(LL)*TZ(MM)))
     6                 +TX(LL)*(TDX(MM)*(TY(KK)*TY(NN)+TZ(KK)*TZ(NN))
     7                         +TDX(NN)*(TY(KK)*TY(MM)+TZ(KK)*TZ(MM)))
                     TEMP2=            TX(KK)*(TX(MM)*(TDY(LL)*TY(NN)+TY
     1(LL)*TDY(NN)                                 +TDZ(LL)*TZ(NN)+TZ(LL
     2)*TDZ(NN))                         +TX(NN)*(TDY(LL)*TY(MM)+TY(LL)*
     3TDY(MM)                                 +TDZ(LL)*TZ(MM)+TZ(LL)*TDZ
     4(MM)))                 +TX(LL)*(TX(MM)*(TDY(KK)*TY(NN)+TY(KK)*TDY(
     5NN)                                 +TDZ(KK)*TZ(NN)+TZ(KK)*TDZ(NN)
     6)                         +TX(NN)*(TDY(KK)*TY(MM)+TY(KK)*TDY(MM)
     7                                 +TDZ(KK)*TZ(MM)+TZ(KK)*TDZ(MM)))
                     DR(ISP)=DR(ISP)+G(20)*(TEMP1+TEMP2)
                     DR(ISP)=DR(ISP)
     1       +DG(21)*(TY(KK)*TY(LL)*TZ(MM)*TZ(NN)
     2                 +TZ(KK)*TZ(LL)*TY(MM)*TY(NN))
     3       +G(21)*(TDY(KK)*TY(LL)*TZ(MM)*TZ(NN)
     4                 +TY(KK)*TDY(LL)*TZ(MM)*TZ(NN)
     5                 +TY(KK)*TY(LL)*TDZ(MM)*TZ(NN)
     6                 +TY(KK)*TY(LL)*TZ(MM)*TDZ(NN)
     7                 +TDZ(KK)*TZ(LL)*TY(MM)*TY(NN)
     8                 +TZ(KK)*TDZ(LL)*TY(MM)*TY(NN)
     9                 +TZ(KK)*TZ(LL)*TDY(MM)*TY(NN)
     1                 +TZ(KK)*TZ(LL)*TY(MM)*TDY(NN))
                     DR(ISP)=DR(ISP)
     1       +DG(22)*(TY(KK)*TZ(LL)+TZ(KK)*TY(LL))
     2                 *(TY(MM)*TZ(NN)+TZ(MM)*TY(NN))
     3       +G(22)*((TDY(KK)*TZ(LL)+TY(KK)*TDZ(LL)
     4                  +TDZ(KK)*TY(LL)+TZ(KK)*TDY(LL))
     5                 *(TY(MM)*TZ(NN)+TZ(MM)*TY(NN))
     6                 +(TY(KK)*TZ(LL)+TZ(KK)*TY(LL))
     7                 *(TDY(MM)*TZ(NN)+TY(MM)*TDZ(NN)
     8                  +TDZ(MM)*TY(NN)+TZ(MM)*TDY(NN)))
                  ENDIF
   10 CONTINUE
      RETURN
      END