30
31
32
33#include "implicit_f.inc"
34
35
36
37#include "mvsiz_p.inc"
38
39
40
41 INTEGER , DIMENSION(MVSIZ), INTENT(IN) :: NC2,NC3,IVECT
42 my_real ,
DIMENSION(MVSIZ),
INTENT(IN) :: x2,y2,z2
43 my_real ,
INTENT(IN) :: vect(3,mvsiz)
44
45
47 . rloc(3,*),
48 . x1(mvsiz), x3(mvsiz),
49 . y1(mvsiz), y3(mvsiz),
50 . z1(mvsiz), z3(mvsiz),
51 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz)
52
53
54
55#include "vect01_c.inc"
56
57
58
59 INTEGER I
61 . sum,e1x,e1y,e1z
62
63 DO i=lft,llt
64 IF (ivect(i) > 0) THEN
65
66 e2x(i)=vect(1,i)
67 e2y(i)=vect(2,i)
68 e2z(i)=vect(3,i)
69 ELSEIF ((ivect(i) < 0).OR.(nc3(i)==nc2(i))) THEN
70
71 e1x=x2(i)-x1(i)
72 e1y=y2(i)-y1(i)
73 e1z=z2(i)-z1(i)
74 sum = e1x*e1x + e1z*e1z
75 IF (sum < em20) THEN
76 e2x(i)=zero
77 e2y(i)=zero
78 e2z(i)=one
79 ELSE
80 e2x(i)=zero
81 e2y(i)=one
82 e2z(i)=zero
83 END IF
84 ELSE
85
86 e2x(i)=x3(i)-x1(i)
87 e2y(i)=y3(i)-y1(i)
88 e2z(i)=z3(i)-z1(i)
89
90 IF (sqrt(e2x(i)**2 + e2y(i)**2 + e2z(i)**2) < em20) RETURN
91 END IF
92 ENDDO
93
94 DO i=lft,llt
95 IF (nc3(i)==nc2(i)) cycle
96 sum =sqrt(e2x(i)*e2x(i)+e2y(i)*e2y(i)+e2z(i)*e2z(i))
97 e2x(i)=e2x(i)/sum
98 e2y(i)=e2y(i)/sum
99 e2z(i)=e2z(i)/sum
100 ENDDO
101
102 DO i=lft,llt
103 rloc(1,i)=e2x(i)
104 rloc(2,i)=e2y(i)
105 rloc(3,i)=e2z(i)
106 ENDDO
107
108 RETURN