41
43
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55#include "vect01_c.inc"
56#include "com04_c.inc"
57
58
59
60 INTEGER IXS(NIXS,*),MXT(*),NGL(*),NGEO(*)
61 INTEGER ,INTENT(IN) :: NINTEMP
63 . x(3,*),geo(*),
64 . rx(*) ,ry(*) ,rz(*) ,sx(*) ,sy(*) ,sz(*) ,tx(*) ,ty(*) ,tz(*),
65 . r11(*),r12(*),r13(*),r21(*),r22(*),r23(*),r31(*),r32(*),r33(*),
66 . f1x(*),f1y(*),f1z(*),f2x(*),f2y(*),f2z(*),temp0(mvsiz), temp(*)
67 INTEGER IX1(*), IX2(*), IX3(*), IX4(*), IX5(*), IX6(*)
69 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*),
70 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*),
71 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*)
72
73
74
75 INTEGER I, J
77 . xl,yl,zl
78
79
80
83
84
85
86 DO i=lft,llt
87 mxt(i)=ixs(1,i)
88 ix1(i)=ixs(2,i)
89 ix2(i)=ixs(3,i)
90 ix3(i)=ixs(4,i)
91 ix4(i)=ixs(6,i)
92 ix5(i)=ixs(7,i)
93 ix6(i)=ixs(8,i)
94 ngeo(i)=ixs(nixs-1,i)
95 ngl(i)=ixs(nixs,i)
97
98 ix1(i)=ixs(6,i)
99 ix2(i)=ixs(7,i)
100 ix3(i)=ixs(8,i)
101 ix4(i)=ixs(2,i)
102 ix5(i)=ixs(3,i)
103 ix6(i)=ixs(4,i)
104 ixs(2,i)=ix1(i)
105 ixs(3,i)=ix2(i)
106 ixs(4,i)=ix3(i)
107 ixs(6,i)=ix4(i)
108 ixs(7,i)=ix5(i)
109 ixs(8,i)=ix6(i)
110 ENDIF
111 ENDDO
112
113
114
115
116 DO 20 i=lft,llt
117 x1(i)=x(1,ix1(i))
118 y1(i)=x(2,ix1(i))
119 z1(i)=x(3,ix1(i))
120 x2(i)=x(1,ix2(i))
121 y2(i)=x(2,ix2(i))
122 z2(i)=x(3,ix2(i))
123 x3(i)=x(1,ix3(i))
124 y3(i)=x(2,ix3(i))
125 z3(i)=x(3,ix3(i))
126 x4(i)=x(1,ix4(i))
127 y4(i)=x(2,ix4(i))
128 z4(i)=x(3,ix4(i))
129 x5(i)=x(1,ix5(i))
130 y5(i)=x(2,ix5(i))
131 z5(i)=x(3,ix5(i))
132 x6(i)=x(1,ix6(i))
133 y6(i)=x(2,ix6(i))
134 z6(i)=x(3,ix6(i))
135 20 CONTINUE
136
137 DO i=lft,llt
138 f1x(i) = x2(i) - x1(i)
139 f1y(i) = y2(i) - y1(i)
140 f1z(i) = z2(i) - z1(i)
141 f2x(i) = x3(i) - x1(i)
142 f2y(i) = y3(i) - y1(i)
143 f2z(i) = z3(i) - z1(i)
144 ENDDO
145
146 DO i=lft,llt
147 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
148 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
149 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
150 x1(i)=x1(i)-xl
151 y1(i)=y1(i)-yl
152 z1(i)=z1(i)-zl
153 x2(i)=x2(i)-xl
154 y2(i)=y2(i)-yl
155 z2(i)=z2(i)-zl
156 x3(i)=x3(i)-xl
157 y3(i)=y3(i)-yl
158 z3(i)=z3(i)-zl
159 x4(i)=x4(i)-xl
160 y4(i)=y4(i)-yl
161 z4(i)=z4(i)-zl
162 x5(i)=x5(i)-xl
163 y5(i)=y5(i)-yl
164 z5(i)=z5(i)-zl
165 x6(i)=x6(i)-xl
166 y6(i)=y6(i)-yl
167 z6(i)=z6(i)-zl
168 ENDDO
169
170
171
173 . x1, x2, x3, x4, x5, x6,
174 . y1, y2, y3, y4, y5, y6,
175 . z1, z2, z3, z4, z5, z6,
176 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
177 . r11 ,r21 ,r31 ,r12 ,r22 ,r32 ,r13, r23, r33)
178
179 DO i=lft,llt
180 xl=r11(i)*x1(i)+r21(i)*y1(i)+r31(i)*z1(i)
181 yl=r12(i)*x1(i)+r22(i)*y1(i)+r32(i)*z1(i)
182 zl=r13(i)*x1(i)+r23(i)*y1(i)+r33(i)*z1(i)
183 x1(i)=xl
184 y1(i)=yl
185 z1(i)=zl
186 xl=r11(i)*x2(i)+r21(i)*y2(i)+r31(i)*z2(i)
187 yl=r12(i)*x2(i)+r22(i)*y2(i)+r32(i)*z2(i)
188 zl=r13(i)*x2(i)+r23(i)*y2(i)+r33(i)*z2(i)
189 x2(i)=xl
190 y2(i)=yl
191 z2(i)=zl
192 xl=r11(i)*x3(i)+r21(i)*y3(i)+r31(i)*z3(i)
193 yl=r12(i)*x3(i)+r22(i)*y3(i)+r32(i)*z3(i)
194 zl=r13(i)*x3(i)+r23(i)*y3(i)+r33(i)*z3(i)
195 x3(i)=xl
196 y3(i)=yl
197 z3(i)=zl
198 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
199 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
200 x4(i)=xl
201 y4(i)=yl
202 z4(i)=-z1(i)
203 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
204 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
205 x5(i)=xl
206 y5(i)=yl
207 z5(i)=-z2(i)
208 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
209 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
210 x6(i)=xl
211 y6(i)=yl
212 z6(i)=-z3(i)
213 ENDDO
214
215 IF(jthe < 0 ) THEN
216 IF(nintemp > 0 ) THEN
217 DO i= lft,llt
218 IF(temp(ix1(i))== zero) temp(ix1(i)) = temp0(i)
219 IF(temp(ix2(i))== zero) temp(ix2(i)) = temp0(i)
220 IF(temp(ix3(i))== zero) temp(ix3(i)) = temp0(i)
221 IF(temp(ix4(i))== zero) temp(ix4(i)) = temp0(i)
222 IF(temp(ix5(i))== zero) temp(ix5(i)) = temp0(i)
223 IF(temp(ix6(i))== zero) temp(ix6(i)) = temp0(i)
224 ENDDO
225 ELSE
226 DO i=lft,llt
227 temp(ix1(i))=temp0(i)
228 temp(ix2(i))=temp0(i)
229 temp(ix3(i))=temp0(i)
230 temp(ix4(i))=temp0(i)
231 temp(ix5(i))=temp0(i)
232 temp(ix6(i))=temp0(i)
233 ENDDO
234 ENDIF
235 ENDIF
236
237 RETURN
function checkvolume_6n(x, ixs)
subroutine s6cortho3(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)