33
34
35
36#include "implicit_f.inc"
37
38
39
40#include "mvsiz_p.inc"
41
42
43
44
46 . rx(*), ry(*), rz(*),
47 . sx(*), sy(*), sz(*),
48 . tx(*), ty(*), tz(*),
49 . e1x(*), e1y(*), e1z(*),
50 . e2x(*), e2y(*), e2z(*),
51 . e3x(*), e3y(*), e3z(*)
52
53
54
55#include "vect01_c.inc"
56
57
58
59 INTEGER I,N,NITER
60
62 . ux(mvsiz),uy(mvsiz),uz(mvsiz),
63 . vx(mvsiz),vy(mvsiz)
64 . wx(mvsiz),wy(mvsiz),wz(mvsiz)
66 . aa,bb
67 DATA niter/3/
68
69 DO i=lft,llt
70 ux(i)=rx(i)
71 uy(i)=ry(i)
72 uz(i)=rz(i)
73 vx(i)=sx(i)
74 vy(i)=sy(i)
75 vz(i)=sz(i)
76 wx(i)=tx(i)
77 wy(i)=ty(i)
78 wz(i)=tz(i)
79 ENDDO
80
81
82
83 DO 50 i=lft,llt
84 aa = sqrt(ux(i)*ux(i) + uy(i)*uy(i) + uz(i)*uz(i))
85 if ( aa/=zero) aa = one/ aa
86 ux(i) = ux(i) * aa
87 uy(i) = uy(i) * aa
88 uz(i) = uz(i) * aa
89 aa = sqrt(vx(i)*vx(i) + vy(i)*vy(i) + vz(i)*vz(i))
90 if ( aa/=zero) aa = one / aa
91 vx(i) = vx(i) * aa
92 vy(i) = vy(i) * aa
93 vz(i) = vz(i) * aa
94 aa = sqrt(wx(i)*wx(i) + wy(i)*wy(i) + wz(i)*wz(i))
95 if ( aa/=zero) aa = one / aa
96 wx(i) = wx(i) * aa
97 wy(i) = wy(i) * aa
98 wz(i) = wz(i) * aa
99 50 CONTINUE
100
101
102
103 n=0
104111 CONTINUE
105 n=n+1
106
107 DO 100 i=lft,llt
108 e1x(i) = vy(i) * wz(i) - vz(i) * wy(i) + ux(i)
109 e1y(i) = vz(i) * wx(i) - vx(i) * wz(i) + uy(i)
110 e1z(i) = vx(i) * wy(i) - vy(i) * wx(i) + uz(i)
111
112 e2x(i) = wy(i) * uz(i) - wz(i) * uy(i) + vx(i)
113 e2y(i) = wz(i) * ux(i) - wx(i) * uz(i) + vy(i)
114 e2z(i) = wx(i) * uy(i) - wy(i) * ux(i) + vz(i)
115
116 e3x(i) = uy(i) * vz(i) - uz(i) * vy(i) + wx(i)
117 e3y(i) = uz(i) * vx(i) - ux(i) * vz(i) + wy(i)
118 e3z(i) = ux(i) * vy(i) - uy(i) * vx(i) + wz(i)
119
120 bb = sqrt(e1x(i)*e1x(i) + e1y(i)*e1y(i) + e1z(i)*e1z(i))
121 if ( bb/=zero) bb = one / bb
122 ux(i) = e1x(i) * bb
123 uy(i) = e1y(i) * bb
124 uz(i) = e1z(i) * bb
125
126 bb = sqrt(e2x(i)*e2x(i) + e2y(i)*e2y(i) + e2z(i)*e2z(i))
127 if ( bb/=zero) bb = one / bb
128 vx(i) = e2x(i) * bb
129 vy(i) = e2y(i) * bb
130 vz(i) = e2z(i) * bb
131
132 bb = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
133 if ( bb/=zero) bb = one / bb
134 wx(i) = e3x(i) * bb
135 wy(i) = e3y(i) * bb
136 wz(i) = e3z(i) * bb
137
138 100 CONTINUE
139 IF (n<niter) GOTO 111
140
141
142 DO 200 i=lft,llt
143 e1x(i) = ux(i)
144 e1y(i) = uy(i)
145 e1z(i) = uz(i)
146
147 e3x(i) = e1y(i) * vz(i) - e1z(i) * vy(i)
148 e3y(i) = e1z(i) * vx(i) - e1x(i) * vz(i)
149 e3z(i) = e1x(i) * vy(i) - e1y(i) * vx(i)
150
151 aa = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
152 if ( aa/=zero) aa = one / aa
153 e3x(i) = e3x(i) * aa
154 e3y(i) = e3y(i) * aa
155 e3z(i) = e3z(i) * aa
156
157 e2x(i) = e3y(i) * e1z(i) - e3z(i) * e1y(i)
158 e2y(i) = e3z(i) * e1x(i) - e3x(i) * e1z(i)
159 e2z(i) = e3x(i) * e1y(i) - e3y(i) * e1x(i)
160 200 CONTINUE
161
162 RETURN