52
53
54
56
57
58
59#include "implicit_f.inc"
60
61
62
63#include "mvsiz_p.inc"
64
65
66
67#include "vect01_c.inc"
68#include "scr03_c.inc"
69#include "com04_c.inc"
70
71
72
73 INTEGER IXS(NIXS,*), MXT(*), NGL(*), NGEO(*),
74 . IX1(*),IX2(*),IX3(*),IX4(*),IX5(*),IX6(*),IX7(*),IX8(*)
75 INTEGER ,INTENT(IN) :: NINTEMP
77 . x(3,*),geo(*),temp0(mvsiz),
78 . temp(*),xrefs(8,3,*)
79 my_real,
DIMENSION(MVSIZ),
INTENT(OUT) ::
80 . x1, x2, x3, x4, x5, x6, x7, x8,
81 . y1, y2, y3, y4, y5, y6, y7, y8,
82 . z1, z2, z3, z4, z5, z6, z7, z8,
83 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz,
84 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,
85 . f1x,f1y,f1z,f2x,f2y,f2z
86 DOUBLE PRECISION
87 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), XD4(MVSIZ),
88 . XD5(MVSIZ), XD6(MVSIZ), XD7(MVSIZ), XD8(MVSIZ),
89 . YD1(MVSIZ), YD2(MVSIZ), YD3(MVSIZ), YD4(MVSIZ)
90
91
92
93
94
95
96 INTEGER I,J
98 . suma
99
100
101
104
105
106
107 DO i=lft,llt
108 mxt(i)=ixs(1,i)
109 ix1(i)=ixs(2,i)
110 ix2(i)=ixs(3,i)
111 ix3(i)=ixs(4,i)
112 ix4(i)=ixs(5,i)
113 ix5(i)=ixs(6,i)
114 ix6(i)=ixs(7,i)
115 ix7(i)=ixs(8,i)
116 ix8(i)=ixs(9,i)
117 ngeo(i)=ixs(nixs-1,i)
118 ngl(i)=ixs(nixs,i)
120
121 ix1(i)=ixs(6,i)
122 ix2(i)=ixs(7,i)
123 ix3(i)=ixs(8,i)
124 ix4(i)=ixs(9,i)
125 ix5(i)=ixs(2,i)
126 ix6(i)=ixs(3,i)
127 ix7(i)=ixs(4,i)
128 ix8(i)=ixs(5,i)
129 ixs(2,i)=ix1(i)
130 ixs(3,i)=ix2(i)
131 ixs(4,i)=ix3(i)
132 ixs(5,i)=ix4(i)
133 ixs(6,i)=ix5(i)
134 ixs(7,i)=ix6(i)
135 ixs(8,i)=ix7(i)
136 ixs(9,i)=ix8(i)
137 ENDIF
138 ENDDO
139
140
141
142
143 IF (nxref == 0) THEN
144 DO i=lft,llt
145 x1(i)=x(1,ix1(i))
146 y1(i)=x(2,ix1(i))
147 z1(i)=x(3,ix1(i))
148 x2(i)=x(1,ix2(i))
149 y2(i)=x(2,ix2(i))
150 z2(i)=x(3,ix2(i))
151 x3(i)=x(1,ix3(i))
152 y3(i)=x(2,ix3(i))
153 z3(i)=x(3,ix3(i))
154 x4(i)=x(1,ix4(i))
155 y4(i)=x(2,ix4(i))
156 z4(i)=x(3,ix4(i))
157 x5(i)=x(1,ix5(i))
158 y5(i)=x(2,ix5(i))
159 z5(i)=x(3,ix5(i))
160 x6(i)=x(1,ix6(i))
161 y6(i)=x(2,ix6(i))
162 z6(i)=x(3,ix6(i))
163 x7(i)=x(1,ix7(i))
164 y7(i)=x(2,ix7(i))
165 z7(i)=x(3,ix7(i))
166 x8(i)=x(1,ix8(i))
167 y8(i)=x(2,ix8(i))
168 z8(i)=x(3,ix8(i))
169 ENDDO
170 ELSE
171 DO i=lft,llt
173 x1(i)=xrefs(5,1,i)
174 y1(i)=xrefs(5,2,i)
175 z1(i)=xrefs(5,3,i)
176 x2(i)=xrefs(6,1,i)
177 y2(i)=xrefs(6,2,i)
178 z2(i)=xrefs(6,3,i)
179 x3(i)=xrefs(7,1,i)
180 y3(i)=xrefs(7,2,i)
181 z3(i)=xrefs(7,3,i)
182 x4(i)=xrefs(8,1,i)
183 y4(i)=xrefs(8,2,i)
184 z4(i)=xrefs(8,3,i)
185 x5(i)=xrefs(1,1,i)
186 y5(i)=xrefs(1,2,i)
187 z5(i)=xrefs(1,3,i)
188 x6(i)=xrefs(2,1,i)
189 y6(i)=xrefs(2,2,i)
190 z6(i)=xrefs(2,3,i)
191 x7(i)=xrefs(3,1,i)
192 y7(i)=xrefs(3,2,i)
193 z7(i)=xrefs(3,3,i)
194 x8(i)=xrefs(4,1,i)
195 y8(i)=xrefs(4,2,i)
196 z8(i)=xrefs(4,3,i)
197 xrefs(1,1,i)=x1(i)
198 xrefs(1,2,i)=y1(i)
199 xrefs(1,3,i)=z1(i)
200 xrefs(2,1,i)=x2(i)
201 xrefs(2,2,i)=y2(i)
202 xrefs(2,3,i)=z2(i)
203 xrefs(3,1,i)=x3(i)
204 xrefs(3,2,i)=y3(i)
205 xrefs(3,3,i)=z3(i)
206 xrefs(4,1,i)=x4(i)
207 xrefs(4,2,i)=y4(i)
208 xrefs(4,3,i)=z4(i)
209 xrefs(5,1,i)=x5(i)
210 xrefs(5,2,i)=y5(i)
211 xrefs(5,3,i)=z5(i)
212 xrefs(6,1,i)=x6(i)
213 xrefs(6,2,i)=y6(i)
214 xrefs(6,3,i)=z6(i)
215 xrefs(7,1,i)=x7(i)
216 xrefs(7,2,i)=y7(i)
217 xrefs(7,3,i)=z7(i)
218 xrefs(8,1,i)=x8(i)
219 xrefs(8,2,i)=y8(i)
220 xrefs(8,3,i)=z8(i)
221 ELSE
222 x1(i)=xrefs(1,1,i)
223 y1(i)=xrefs(1,2,i)
224 z1(i)=xrefs(1,3,i)
225 x2(i)=xrefs(2,1,i)
226 y2(i)=xrefs(2,2,i)
227 z2(i)=xrefs(2,3,i)
228 x3(i)=xrefs(3,1,i)
229 y3(i)=xrefs(3,2,i)
230 z3(i)=xrefs(3,3,i)
231 x4(i)=xrefs(4,1,i)
232 y4(i)=xrefs(4,2,i)
233 z4(i)=xrefs(4,3,i)
234 x5(i)=xrefs(5,1,i)
235 y5(i)=xrefs(5,2,i)
236 z5(i)=xrefs(5,3,i)
237 x6(i)=xrefs(6,1,i)
238 y6(i)=xrefs(6,2,i)
239 z6(i)=xrefs(6,3,i)
240 x7(i)=xrefs(7,1,i)
241 y7(i)=xrefs(7,2,i)
242 z7(i)=xrefs(7,3,i)
243 x8(i)=xrefs(8,1,i)
244 y8(i)=xrefs(8,2,i)
245 z8(i)=xrefs(8,3,i)
246 ENDIF
247 ENDDO
248 ENDIF
249
250 DO i=lft,llt
251 xd1(i) = x1(i)
252 yd1(i) = y1(i)
253 zd1(i) = z1(i)
254 xd2(i) = x2(i)
255 yd2(i) = y2(i)
256 zd2(i) = z2(i)
257 xd3(i) = x3(i)
258 yd3(i) = y3(i)
259 zd3(i) = z3(i)
260 xd4(i) = x4(i)
261 yd4(i) = y4(i)
262 zd4(i) = z4(i)
263 xd5(i) = x5(i)
264 yd5(i) = y5(i)
265 zd5(i) = z5(i)
266 xd6(i) = x6(i)
267 yd6(i) = y6(i)
268 zd6(i) = z6(i)
269 xd7(i) = x7(i)
270 yd7(i) = y7(i)
271 zd7(i) = z7(i)
272 xd8(i) = x8(i)
273 yd8(i) = y8(i)
274 zd8(i) = z8(i)
275 ENDDO
276
278 . x1, x2, x3, x4, x5, x6, x7, x8,
279 . y1, y2, y3, y4, y5, y6, y7, y8,
280 . z1, z2, z3, z4, z5, z6, z7, z8)
281
282
283
284 DO i=lft,llt
285 f1x(i) = x2(i)+x3(i)-x1(i)-x4(i)
286 f1y(i) = y2(i)+y3(i)-y1(i)-y4(i)
287 f1z(i) = z2(i)+z3(i)-z1(i)-z4(i)
288 f2x(i) = x3(i)+x4(i)-x1(i)-x2(i)
289 f2y(i) = y3(i)+y4(i)-y1(i)-y2(i)
290 f2z(i) = z3(i)+z4(i)-z1(i)-z2(i)
291 rx(i) = f2x(i)+x7(i)+x8(i)-x5(i)-x6(i)
292 ry(i) = f2y(i)+y7(i)+y8(i)-y5(i)-y6(i)
293 rz(i) = f2z(i)+z7(i)+z8(i)-z5(i)-z6(i)
294 tx(i) = f1x(i)+x6(i)+x7(i)-x5(i)-x8(i)
295 ty(i) = f1y(i)+y6(i)+y7(i)-y5(i)-y8(i)
296 tz(i) = f1z(i)+z6(i)+z7(i)-z5(i)-z8(i)
297 sx(i) = x5(i)+x6(i)+x7(i)+x8(i)-x1(i)-x2(i)-x3(i)-x4(i)
298 sy(i) = y5(i)+y6(i)+y7(i)+y8(i)-y1(i)-y2(i)-y3(i)-y4(i)
299 sz(i) = z5(i)+z6(i)+z7(i)+z8(i)-z1(i)-z2(i)-z3(i)-z4(i)
300 ENDDO
301
302
303
304 DO i=lft,llt
305 suma = sqrt(rx(i)**2+ry(i)**2+rz(i)**2)
306 IF (suma > zero) suma=one/suma
307 e1x(i) = rx(i)*suma
308 e1y(i) = ry(i)*suma
309 e1z(i) = rz(i)*suma
310 e3x(i) = e1y(i)*sz(i) - e1z(i)*sy(i)
311 e3y(i) = e1z(i)*sx(i) - e1x(i)*sz(i)
312 e3z(i) = e1x(i)*sy(i) - e1y(i)*sx(i)
313 suma = sqrt(e3x(i)**2+e3y(i)**2+e3z(i)**2)
314 IF (suma > zero) suma=one/suma
315 e3x(i) = e3x(i)*suma
316 e3y(i) = e3y(i)*suma
317 e3z(i) = e3z(i)*suma
318 e2x(i) = e3y(i)*e1z(i) - e3z(i)*e1y(i)
319 e2y(i) = e3z(i)*e1x(i) - e3x(i)*e1z(i)
320 e2z(i) = e3x(i)*e1y(i) - e3y(i)*e1x(i)
321 suma = sqrt(e2x(i)**2+e2y(i)**2+e2z(i)**2)
322 IF (suma > zero) suma=one/suma
323 e2x(i) = e2x(i)*suma
324 e2y(i) = e2y(i)*suma
325 e2z(i) = e2z(i)*suma
326 ENDDO
327 IF (jthe < 0 .or. nintemp > 0) THEN
328 IF (nintemp > 0) THEN
329 DO i= lft,llt
330 IF(temp(ix1(i))== zero) temp(ix1(i)) = temp0(i)
331 IF(temp(ix2(i))== zero) temp(ix2(i)) = temp0(i)
332 IF(temp(ix3(i))== zero) temp(ix3(i)) = temp0(i)
333 IF(temp(ix4(i))== zero) temp(ix4(i)) = temp0(i)
334 IF(temp(ix5(i))== zero) temp(ix5(i)) = temp0(i)
335 IF(temp(ix6(i))== zero) temp(ix6(i)) = temp0(i)
336 IF(temp(ix7(i))== zero) temp(ix7(i)) = temp0(i)
337 IF(temp(ix8(i))== zero) temp(ix8(i)) = temp0(i)
338 ENDDO
339 ELSE
340 DO i=lft,llt
341 temp(ix1(i))=temp0(i)
342 temp(ix2(i))=temp0(i)
343 temp(ix3(i))=temp0(i)
344 temp(ix4(i))=temp0(i)
345 temp(ix5(i))=temp0(i)
346 temp(ix6(i))=temp0(i)
347 temp(ix7(i))=temp0(i)
348 temp(ix8(i))=temp0(i)
349 ENDDO
350 ENDIF
351 ENDIF
352
353 RETURN
function checkvolume_8n(x, ixs)
subroutine mod_close(geo, ngeo, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8)