-
Notifications
You must be signed in to change notification settings - Fork 2
/
delmol.f
159 lines (159 loc) · 7.66 KB
/
delmol.f
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