43
44
45
48 use element_mod , only : nixs
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57
58
59
60#include "com01_c.inc"
61#include "vect01_c.inc"
62#include "param_c.inc"
63#include "scr17_c.inc"
64
65
66
67 INTEGER JHBE,IREP,NSIGI,NSIGS,NEL,ISOLNOD
68 INTEGER PID(*),IGEO(NPROPGI,*),IXS(NIXS,*),PT(*)
69
71 . geo(npropg,*),skew(lskew,*),gama(nel,6),
72 . rx(*) ,ry(*) ,rz(*) ,sx(*) ,sy(*) ,sz(*) ,tx(*) ,ty(*) ,tz(*),
73 . e1x(*),e1y(*),e1z(*),e2x(*),e2y(*),e2z(*),e3x(*),e3y(*),e3z(*),
74 . f1x(*),f1y(*),f1z(*),f2x(*),f2y(*),f2z(*),sigsp(nsigi,*),
75 . sigi(nsigs,*),x(3,*)
76
77
78
79 INTEGER I,ISK,IPNUM,IG,IIS,II,J,JJ,N,IFLAGINI,N1,N2,N4,NNOD,INIORTH(MVSIZ)
80
82 . sum,hx,hy,hz,kx,ky,kz,lx,ly,lz,phi,cp,sp,vx,vy,vz,vn,
83 . f3x,f3y,f3z,
84 . g11,g22,g33,g12,g21,g23,g32,g13,g31,pts(3)
86 . sk(6),a(9),b(9)
87 INTEGER ID
88 CHARACTER(LEN=NCHARTITLE)::TITR
89
90
91
92
93
94
95 iniorth(lft:llt)=0
96 IF (nvsolid3 /= 0) THEN
97 iis= nvsolid1 + nvsolid2 + 4 +nusolid
98 DO i=lft,llt
99 jj=pt(nft+i)
100 IF(jj ==0 ) cycle
101 IF(
102 . sigsp(iis+1,jj) /= zero .OR. sigsp(iis+2,jj) /=zero .OR.
103 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /=zero .OR.
104 . sigsp(iis+5,jj) /= zero .OR. sigsp(iis+6,jj) /=zero )THEN
105 iniorth(i) = 1
106 ENDIF
107 ENDDO
108 ENDIF
109 DO i=lft,llt
110 IF(iniorth(i) ==1 ) cycle
111 ig = pid(i)
114 . igeo(npropgi-ltitr+1,ig),ltitr)
115 ipnum = igeo(2,ig)
116 phi = geo(1,ig) * pi/hundred80
117 vx = geo(7,ig)
118 vy = geo(8,ig)
119 vz = geo(9,ig)
120 cp = cos(phi)
121 sp = sin(phi)
122 IF (ipnum > 20) THEN
123 pts(1:3) = geo(33:35,ig)
124 END IF
125
126 IF (ipnum < 0) THEN
127 isk = -ipnum
128 gama(i,1)=
129 . skew(1,isk)*e1x(i)+skew(2,isk)*e1y(i)+skew(3,isk)*e1z(i)
130 gama(i,2)=
131 . skew(1,isk)*e2x(i)+skew(2,isk)*e2y(i)+skew(3,isk)*e2z(i)
132 gama(i,3)=
133 . skew(1,isk)*e3x(i)+skew(2,isk)*e3y(i)+skew(3,isk)*e3z(i)
134 gama(i,4)=
135 . skew(4,isk)*e1x(i)+skew(5,isk)*e1y(i)+skew(6,isk)*e1z(i)
136 gama(i,5)=
137 . skew(4,isk)*e2x(i)+skew(5,isk)*e2y(i)+skew(6,isk)*e2z(i)
138 gama(i,6)=
139 . skew(4,isk)*e3x(i)+skew(5,isk)*e3y(i)+skew(6,isk)*e3z(i)
140 ELSEIF (ipnum == 4) THEN
141
142
143
144 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
145 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
146 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
147 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
148 f3x = f3x * sum
149 f3y = f3y * sum
150 f3z = f3z * sum
151
152 vx = geo(7,ig)
153 vy = geo(8,ig)
154 vz = geo(9,ig)
155 vn = vx*f3x + vy*f3y + vz*f3z
156 vx = vx - vn*f3x
157 vy = vy - vn*f3y
158 vz = vz - vn*f3z
159 sum= sqrt(vx*vx+vy*vy+vz*vz)
160 IF (sum < em20) THEN
161 vx = f1x(i)
162 vy = f1y(i)
163 vz = f1z(i)
164 sum = one
165 ELSE
166 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
167 ENDIF
168
169
170 f1x(i) = vx * sum
171 f1y(i) = vy * sum
172 f1z(i) = vz * sum
173 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
174 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
175 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
176
177
178
179 sk(1) = cp*f1x(i) + sp*f2x(i)
180 sk(2) = cp*f1y(i) + sp*f2y(i)
181 sk(3) = cp*f1z(i) + sp*f2z(i)
182 sk(4) =-sp*f1x(i) + cp*f2x(i)
183 sk(5) =-sp*f1y(i) + cp*f2y(i)
184 sk(6) =-sp*f1z(i) + cp*f2z(i)
185
186 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
187 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
188 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
189 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
190 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
191 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
192 ELSEIF (ipnum == 5) THEN
193
194
195 f3x = f1y(i)*f2z(i) - f1z(i)*f2y(i)
196 f3y = f1z(i)*f2x(i) - f1x(i)*f2z(i)
197 f3z = f1x(i)*f2y(i) - f1y(i)*f2x(i)
198 sum = one /
max(sqrt(f3x*f3x+f3y*f3y+f3z*f3z),em20)
199 f3x = f3x * sum
200 f3y = f3y * sum
201 f3z = f3z * sum
202
203 vx = geo(7,ig)
204 vy = geo(8,ig)
205 vz = geo(9,ig)
206 vn = vx*f3x + vy*f3y + vz*f3z
207 vx = vx - vn*f3x
208 vy = vy - vn*f3y
209 vz = vz - vn*f3z
210 sum= sqrt(vx*vx+vy*vy+vz*vz)
211 IF (sum < em20) THEN
212 vx = f1x(i)
213 vy = f1y(i)
214 vz = f1z(i)
215 sum = one
216 ELSE
217 sum= one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
218 ENDIF
219
220
221 f1x(i) = vx * sum
222 f1y(i) = vy * sum
223 f1z(i) = vz * sum
224 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
225 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
226 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
227
228
229
230 sk(1) = f3x
231 sk(2) = f3y
232 sk(3) = f3z
233 sk(4) = cp*f1x(i) + sp*f2x(i)
234 sk(5) = cp*f1y(i) + sp*f2y(i)
235 sk(6) = cp*f1z(i) + sp*f2z(i)
236
237 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
238 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
239 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
240 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
241 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
242 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
243 ELSEIF (ipnum == 20) THEN
244
245 ii=nft+i
246 IF (isolnod == 4 .OR. isolnod == 10) THEN
247 sk(1) = tx(i)
248 sk(2) = ty(i)
249 sk(3) = tz(i)
250 sk(4) = rx(i)
251 sk(5) = ry(i)
252 sk(6) = rz(i)
253 ELSE
254 n1=ixs(2,ii)
255 n2=ixs(3,ii)
256 n4=ixs(5,ii)
257 sk(1) = x(1,n2)-x(1,n1)
258 sk(2) = x(2,n2)-x(2,n1)
259 sk(3) = x(3,n2)-x(3,n1)
260 sk(4) = x(1,n4)-x(1,n1)
261 sk(5) = x(2,n4)-x(2,n1)
262 sk(6) = x(3,n4)-x(3,n1)
263 END IF
264 sum = one /
max(sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3)),em20)
265 sk(1) = sk(1) * sum
266 sk(2) = sk(2) * sum
267 sk(3) = sk(3) * sum
268 sum = sk(1)*sk(4)+sk(2)*sk(5)+sk(3)*sk(6)
269 sk(4) = sk(4) - sum*sk(1)
270 sk(5) = sk(5) - sum*sk(2)
271 sk(6) = sk(6) - sum*sk(3)
272 sum = one /
max(sqrt(sk(4)*sk(4)+sk(5)*sk(5)+sk(6)*sk(6)),em20)
273 sk(4) = sk(4) * sum
274 sk(5) = sk(5) * sum
275 sk(6) = sk(6) * sum
276 IF (jcvt > 0) THEN
277
278 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
279 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
280 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
281 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
282 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
283 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
284 ELSE
285 gama(i,1:6) = sk(1:6)
286 END IF
287 ELSEIF (ipnum == 21) THEN
288
289 ii=nft+i
290 nnod = isolnod
291 IF (nnod==10) nnod=4
292 lx=zero
293 ly=zero
294 lz=zero
295 DO j = 1,nnod
296 n = ixs(j+1,ii)
297 lx=lx+x(1,n)
298 ly=ly+x(2,n)
299 lz=lz+x(3,n)
300 END DO
301 lx=lx/nnod
302 ly=ly/nnod
303 lz=lz/nnod
304 sk(1) = lx - pts(1)
305 sk(2) = ly - pts(2)
306 sk(3) = lz - pts(3)
307 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
308
309 IF (sum < em20) THEN
311 . msgtype=msgerror,
312 . anmode=aninfo_blind_1,
314 . c1=titr,
315 . i2=ipnum)
316 ELSE
317 sk(1) = sk(1) / sum
318 sk(2) = sk(2) / sum
319 sk(3) = sk(3) / sum
320 sk(4) = - sk(2)
321 sk(5) = sk(1)
322 sk(6) = zero
323 IF (jcvt > 0) THEN
324
325 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
326 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
327 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
328 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
329 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
330 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
331 ELSE
332 gama(i,1:6) = sk(1:6)
333 END IF
334 END IF
335 ELSEIF (ipnum == 23) THEN
336
337 sum = one /
max(sqrt(sx(i)*sx(i)+sy(i)*sy(i)+sz(i)*sz(i)),em20)
338 f3x = sx(i) * sum
339 f3y = sy(i) * sum
340 f3z = sz(i) * sum
341 vx = geo(7,ig)
342 vy = geo(8,ig)
343 vz = geo(9,ig)
344 sum = vx*f3x+vy*f3y+vz*f3z
345 sk(4) = vx - sum*f3x
346 sk(5) = vy - sum*f3y
347 sk(6) = vz - sum*f3z
348 sk(1) = sk(5)*f3z - sk(6)*f3y
349 sk(2) = sk(6)*f3x - sk(4)*f3z
350 sk(3) = sk(4)*f3y - sk(5)*f3x
351 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
352
353 IF (sum < em20) THEN
355 . msgtype=msgerror,
356 . anmode=aninfo_blind_1,
358 . c1=titr,
359 . i2=ipnum)
360 ELSE
361 f1x(i) = sk(1) / sum
362 f1y(i) = sk(2) / sum
363 f1z(i) = sk(3) / sum
364 f2x(i) = f3y*f1z(i) - f3z*f1y(i)
365 f2y(i) = f3z*f1x(i) - f3x*f1z(i)
366 f2z(i) = f3x*f1y(i) - f3y*f1x(i)
367
368 sk(1) = cp*f1x(i) + sp*f2x(i)
369 sk(2) = cp*f1y(i) + sp*f2y(i)
370 sk(3) = cp*f1z(i) + sp*f2z(i)
371 sk(4) =-sp*f1x(i) + cp*f2x(i)
372 sk(5) =-sp*f1y(i) + cp*f2y(i)
373 sk(6) =-sp*f1z(i) + cp*f2z(i)
374 IF (jcvt > 0) THEN
375
376 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
377 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
378 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
379 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
380 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
381 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
382 ELSE
383 gama(i,1:6) = sk(1:6)
384 END IF
385 END IF
386 ELSEIF (ipnum == 24) THEN
387
388 ii=nft+i
389 nnod = isolnod
390 IF (nnod==10) nnod=4
391 lx=zero
392 ly=zero
393 lz=zero
394 DO j = 1,nnod
395 n = ixs(j+1,ii)
396 lx=lx+x(1,n)
397 ly=ly+x(2,n)
398 lz=lz+x(3,n)
399 END DO
400 lx=lx/nnod
401 ly=ly/nnod
402 lz=lz/nnod
403 vx = geo(7,ig)
404 vy = geo(8,ig)
405 vz = geo(9,ig)
406 sum = one /
max(sqrt(vx*vx+vy*vy+vz*vz),em20)
407 vx = vx*sum
408 vy = vy*sum
409 vz = vz*sum
410 sk(1) = lx - pts(1)
411 sk(2) = ly - pts(2)
412 sk(3) = lz - pts(3)
413 sum = vx*sk(1)+vy*sk(2)+vz*sk(3)
414 f3x = sk(1) - sum*vx
415 f3y = sk(2) - sum*vy
416 f3z = sk(3) - sum*vz
417 sk(1) = vy*f3z - vz*f3y
418 sk(2) = vz*f3x - vx*f3z
419 sk(3) = vx*f3y - vy*f3x
420 sum = sqrt(sk(1)*sk(1)+sk(2)*sk(2)+sk(3)*sk(3))
421
422 IF (sum < em20) THEN
424 . msgtype=msgerror,
425 . anmode=aninfo_blind_1,
427 . c1=titr,
428 . i2=ipnum)
429 ELSE
430 sk(1) = sk(1) / sum
431 sk(2) = sk(2) / sum
432 sk(3) = sk(3) / sum
433 sk(4) = vx
434 sk(5) = vy
435 sk(6) = vz
436 IF (jcvt > 0) THEN
437
438 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
439 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
440 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
441 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
442 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
443 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
444 ELSE
445 gama(i,1:6) = sk(1:6)
446 END IF
447 END IF
448 ELSEIF (jcvt == 0) THEN
449 SELECT CASE (ipnum)
450 CASE (1)
451 gama(i,1)= cp
452 gama(i,2)= sp
453 gama(i,3)= zero
454 gama(i,4)=-sp
455 gama(i,5)= cp
456 gama(i,6)= zero
457 CASE (2)
458 gama(i,1)= zero
459 gama(i,2)= cp
460 gama(i,3)= sp
461 gama(i,4)= zero
462 gama(i,5)=-sp
463 gama(i,6)= cp
464 CASE (3)
465 gama(i,1)= sp
466 gama(i,2)= zero
467 gama(i,3)= cp
468 gama(i,4)= cp
469 gama(i,5)= zero
470 gama(i,6)=-sp
471 CASE (11)
472 vn = vx*e3x(i) + vy*e3y(i) + vz*e3z(i)
473 vx = vx - vn*e3x(i)
474 vy = vy - vn*e3y(i)
475 vz = vz - vn*e3z(i)
476 sum = sqrt(vx*vx+vy*vy+vz*vz)
477 IF (sum < em10) THEN
479 . msgtype=msgwarning,
480 . anmode=aninfo_blind_1,
482 . c1=titr)
483 sk(1) = e1x(i)
484 sk(2) = e1y(i)
485 sk(3) = e1z(i)
486 ELSE
487 sum = one / sum
488 sk(1) = vx * sum
489 sk(2) = vy * sum
490 sk(3) = vz * sum
491 ENDIF
492 sk(4) = e3y(i)* sk(3) - e3z(i)* sk(2)
493 sk(5) = e3z(i)* sk(1) - e3x(i)* sk(3)
494 sk(6) = e3x(i)* sk(2) - e3y(i)* sk(1)
495 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
496 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
497 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
498 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
499 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
500 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
501 CASE (12)
502 vn = vx*e1x(i) + vy*e1y(i) + vz*e1z(i)
503 vx = vx - vn*e1x(i)
504 vy = vy - vn*e1y(i)
505 vz = vz - vn*e1z(i)
506 sum = sqrt(vx*vx+vy*vy+vz*vz)
507 IF (sum < em10) THEN
509 . msgtype=msgwarning,
510 . anmode=aninfo_blind_1,
512 . c1=titr)
513 sk(1) = e2x(i)
514 sk(2) = e2y(i)
515 sk(3) = e2z(i)
516 ELSE
517 sum = one / sum
518 sk(1) = vx * sum
519 sk(2) = vy * sum
520 sk(3) = vz * sum
521 ENDIF
522 sk(4) = e1y(i)* sk(3) - e1z(i)* sk(2)
523 sk(5) = e1z(i)* sk(1) - e1x(i)* sk(3)
524 sk(6) = e1x(i)* sk(2) - e1y(i)* sk(1)
525 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
526 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
527 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
528 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
529 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
530 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
531 CASE (13)
532 vn = vx*e2x(i) + vy*e2y(i) + vz*e2z(i)
533 vx = vx - vn*e2x(i)
534 vy = vy - vn*e2y(i)
535 vz = vz - vn*e2z(i)
536 sum = sqrt(vx*vx+vy*vy+vz*vz)
537 IF (sum < em10) THEN
539 . msgtype=msgwarning,
540 . anmode=aninfo_blind_1,
542 . c1=titr)
543 sk(1) = e3x(i)
544 sk(2) = e3y(i)
545 sk(3) = e3z(i)
546 ELSE
547 sum= one / sum
548 sk(1) = vx * sum
549 sk(2) = vy * sum
550 sk(3) = vz * sum
551 ENDIF
552 sk(4) = e2y(i)* sk(3) - e2z(i)* sk(2)
553 sk(5) = e2z(i)* sk(1) - e2x(i)* sk(3)
554 sk(6) = e2x(i)* sk(2) - e2y(i)* sk(1)
555 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
556 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
557 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
558 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
559 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
560 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y(i) + sk(6)*e3z(i)
561 END SELECT
562 ELSEIF (jcvt > 0) THEN
563
564 sum=sqrt(rx(i)**2+ry(i)**2+rz(i)**2)
565 IF (sum > zero) sum=one/sum
566 hx=rx(i)*sum
567 hy=ry(i)*sum
568 hz=rz(i)*sum
569 lx=hy*sz(i)-hz*sy(i)
570 ly=hz*sx(i)-hx*sz(i)
571 lz=hx*sy(i)-hy*sx(i)
572 sum = sqrt(lx**2+ly**2+lz**2)
573 IF (sum > zero) sum=one/sum
574 lx=lx*sum
575 ly=ly*sum
576 lz=lz*sum
577 kx=ly*hz-lz*hy
578 ky=lz*hx-lx*hz
579 kz=lx*hy-ly*hx
580 sum = sqrt(kx**2+ky**2+kz**2)
581 IF (sum > zero) sum=one/sum
582 kx=kx*sum
583 ky=ky*sum
584 kz=kz*sum
585 SELECT CASE (ipnum)
586 CASE (1)
587 sk(1)= cp*hx+sp*kx
588 sk(2)= cp*hy+sp*ky
589 sk(3)= cp*hz+sp*kz
590 sk(4)=-sp*hx+cp*kx
591 sk(5)=-sp*hy+cp*ky
592 sk(6)=-sp*hz+cp*kz
593 CASE (2)
594 sk(1)= cp*kx+sp*lx
595 sk(2)= cp*ky+sp*ly
596 sk(3)= cp*kz+sp*lz
597 sk(4)=-sp*kx+cp*lx
598 sk(5)=-sp*ky+cp*ly
599 sk(6)=-sp*kz+cp*lz
600 CASE (3)
601 sk(1)= cp*lx+sp*hx
602 sk(2)= cp*ly+sp*hy
603 sk(3)= cp*lz+sp*hz
604 sk(4)=-sp*lx+cp*hx
605 sk(5)=-sp*ly+cp*hy
606 sk(6)=-sp*lz+cp*hz
607 CASE (11)
608 vn = vx*lx + vy*ly + vz*lz
609 vx = vx - vn*lx
610 vy = vy - vn*ly
611 vz = vz - vn*lz
612 sum = sqrt(vx*vx+vy*vy+vz*vz)
613 IF (sum < em10) THEN
615 . msgtype=msgwarning,
616 . anmode=aninfo_blind_1,
618 . c1=titr)
619 sk(1) = hx
620 sk(2) = hy
621 sk(3) = hz
622 ELSE
623 sum = one / sum
624 sk(1) = vx * sum
625 sk(2) = vy * sum
626 sk(3) = vz * sum
627 ENDIF
628 sk(4) = ly* sk(3) - lz* sk(2)
629 sk(5) = lz* sk(1) - lx* sk(3)
630 sk(6) = lx* sk(2) - ly* sk(1)
631 CASE (12)
632 vn = vx*hx + vy*hy + vz*hz
633 vx = vx - vn*hx
634 vy = vy - vn*hy
635 vz = vz - vn*hz
636 sum = sqrt(vx*vx+vy*vy+vz*vz)
637 IF (sum < em10) THEN
639 . msgtype=msgwarning,
640 . anmode=aninfo_blind_1,
642 . c1=titr)
643 sk(1) = kx
644 sk(2) = ky
645 sk(3) = kz
646 ELSE
647 sum = one / sum
648 sk(1) = vx * sum
649 sk(2) = vy * sum
650 sk(3) = vz * sum
651 ENDIF
652 sk(4) = hy* sk(3) - hz* sk(2)
653 sk(5) = hz* sk(1) - hx* sk(3)
654 sk(6) = hx* sk(2) - hy* sk(1)
655 CASE (13)
656 vn = vx*kx + vy*ky + vz*kz
657 vx = vx - vn*kx
658 vy = vy - vn*ky
659 vz = vz - vn*kz
660 sum = sqrt(vx*vx+vy*vy+vz*vz)
661 IF (sum < em10) THEN
663 . msgtype=msgwarning,
664 . anmode=aninfo_blind_1,
666 . c1=titr)
667 sk(1) = lx
668 sk(2) = ly
669 sk(3) = lz
670 ELSE
671 sum = one / sum
672 sk(1) = vx * sum
673 sk(2) = vy * sum
674 sk(3) = vz * sum
675 ENDIF
676 sk(4) = ky* sk(3) - kz* sk(2)
677 sk(5) = kz* sk(1) - kx* sk(3)
678 sk(6) = kx* sk(2) - ky* sk(1)
679 END SELECT
680 gama(i,1) = sk(1)*e1x(i) + sk(2)*e1y(i) + sk(3)*e1z(i)
681 gama(i,2) = sk(1)*e2x(i) + sk(2)*e2y(i) + sk(3)*e2z(i)
682 gama(i,3) = sk(1)*e3x(i) + sk(2)*e3y(i) + sk(3)*e3z(i)
683 gama(i,4) = sk(4)*e1x(i) + sk(5)*e1y(i) + sk(6)*e1z(i)
684 gama(i,5) = sk(4)*e2x(i) + sk(5)*e2y(i) + sk(6)*e2z(i)
685 gama(i,6) = sk(4)*e3x(i) + sk(5)*e3y
686 ENDIF
687 ENDDO
688
689 IF (irep > 0) THEN
690
691 DO i=lft,llt
692 a(1) = rx(i)*e1x(i) + ry(i)*e1y(i) + rz(i)*e1z(i)
693 a(2) = rx(i)*e2x(i) + ry(i)*e2y(i) + rz(i)*e2z(i)
694 a(3) = rx(i)*e3x(i) + ry(i)*e3y(i) + rz(i)*e3z(i)
695 a(4) = sx(i)*e1x(i) + sy(i)*e1y(i) + sz(i)*e1z(i)
696 a(5) = sx(i)*e2x(i) + sy(i)*e2y(i) + sz(i)*e2z(i)
697 a(6) = sx(i)*e3x(i) + sy(i)*e3y(i) + sz(i)*e3z(i)
698 a(7) = tx(i)*e1x(i) + ty(i)*e1y(i) + tz(i)*e1z(i)
699 a(8) = tx(i)*e2x(i) + ty(i)*e2y(i) + tz(i)*e2z(i)
700 a(9) = tx(i)*e3x(i) + ty(i)*e3y(i) + tz(i)*e3z(i)
702 a(1) = gama(i,1)
703 a(2) = gama(i,2)
704 a(3) = gama(i,3)
705 a(4) = gama(i,4)
706 a(5) = gama(i,5)
707 a(6) = gama(i,6)
708
709 gama(i,1) = b(1)*a(1) + b(4)*a(2) + b(7)*a(3)
710 gama(i,2) = b(2)*a(1) + b(5)*a(2) + b(8)*a(3)
711 gama(i,3) = b(3)*a(1) + b(6)*a(2) + b(9)*a(3)
712 sum = one /
max(em20,sqrt(gama(i,1)**2 + gama(i,2)**2 + gama(i,3)**2))
713 gama(i,1) = gama(i,1) * sum
714 gama(i,2) = gama(i,2) * sum
715 gama(i,3) = gama(i,3) * sum
716
717 gama(i,4) = b(1)*a(4) + b(4)*a(5) + b(7)*a(6)
718 gama(i,5) = b(2)*a(4) + b(5)*a(5) + b(8)*a(6)
719 gama(i,6) = b(3)*a(4) + b(6)*a(5) + b(9)*a(6)
720 sum = one /
max(em20,sqrt(gama(i,4)**2 + gama(i,5)**2 + gama(i,6)**2))
721 gama(i,4) = gama(i,4) * sum
722 gama(i,5) = gama(i,5) * sum
723 gama(i,6) = gama(i,6) * sum
724 ENDDO
725 ENDIF
726
727
728 IF (nvsolid3 /= 0) THEN
729 iis= nvsolid1 + nvsolid2 + 4 + nusolid
730 DO i=lft,llt
731 ii=nft+i
732 jj=pt(ii)
733 iflagini = 1
734 IF(jj==0)iflagini = 0
735 IF(iflagini == 1 .AND.
736 . ( sigsp(iis+1,jj) /= zero.OR.sigsp(iis+2,jj)/=zero.OR.
737 . sigsp(iis+3,jj) /= zero .OR. sigsp(iis+4,jj) /= zero .OR.
738 . sigsp(iis+5,jj) /= zero .OR. sigsp(iis+6,jj) /= zero) )THEN
739 g11 = sigsp(iis+1,jj)
740 g21 = sigsp(iis+2,jj)
741 g31 = sigsp(iis+3,jj)
742 g12 = sigsp(iis+4,jj)
743 g22 = sigsp(iis+5,jj)
744 g32 = sigsp(iis+6,jj)
745 g13 = g21*g32-g31*g22
746 g23 = g31*g12-g11*g32
747 g33 = g11*g22-g21*g12
748
749 gama(i,1)=e1x(i)*g11+e1y(i)*g21+e1z(i)*g31
750 gama(i,2)=e2x(i)*g11+e2y(i)*g21+e2z(i)*g31
751 gama(i,3)=e3x(i)*g11+e3y(i)*g21+e3z(i)*g31
752 gama(i,4)=e1x(i)*g12+e1y(i)*g22+e1z(i)*g32
753 gama(i,5)=e2x(i)*g12+e2y(i)*g22+e2z(i)*g32
754 gama(i,6)=e3x(i)*g12+e3y(i)*g22+e3z(i)*g32
755 ENDIF
756 ENDDO
757 ENDIF
758
759
760 RETURN
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)