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