37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "com08_c.inc"
49
50
51
52 INTEGER, INTENT(IN) :: NEL
53 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ)
55 . rloc(3,*),r(3,*),al(*),x1(mvsiz),x2(mvsiz),x3(mvsiz),
56 . y1(mvsiz),y2(mvsiz),y3(mvsiz),z1(mvsiz),z2(mvsiz),
57 . z3(mvsiz),rx1g(mvsiz),rx2g(mvsiz),ry1g(mvsiz),ry2g(mvsiz),
58 . rz1g(mvsiz),rz2g(mvsiz),rx1(mvsiz),rx2(mvsiz),
59 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
60 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz)
61
62
63
64 INTEGER I
66 . sum(mvsiz),
67 . theta, sum2(mvsiz), sum3(mvsiz), cost(mvsiz),
68 . sint(mvsiz)
69
70 DO i=1,nel
71 rx1g(i)=r(1,nc1(i))
72 ry1g(i)=r(2,nc1(i))
73 rz1g(i)=r(3,nc1(i))
74 rx2g(i)=r(1,nc2(i))
75 ry2g(i)=r(2,nc2(i))
76 rz2g(i)=r(3,nc2(i))
77 ENDDO
78
79 DO i=1,nel
80 e2x(i)=rloc(1,i)
81 e2y(i)=rloc(2,i)
82 e2z(i)=rloc(3,i)
83 ENDDO
84
85 DO i=1,nel
86 e1x(i)=x2(i)-x1(i)
87 e1y(i)=y2(i)-y1(i)
88 e1z(i)=z2(i)-z1(i)
89 ENDDO
90
91 DO i=1,nel
92 al(i)=sqrt(e1x(i)**2+e1y(i)**2+e1z(i)**2)
93 ENDDO
94
95 DO i=1,nel
96 e1x(i)=e1x(i)/al(i)
97 e1y(i)=e1y(i)/al(i)
98 e1z(i)=e1z(i)/al(i)
99 ENDDO
100
101 DO i=1,nel
102 e3x(i)=e1y(i)*e2z(i)-e1z(i)*e2y(i)
103 e3y(i)=e1z(i)*e2x(i)-e1x(i)*e2z(i)
104 e3z(i)=e1x(i)*e2y(i)-e1y(i)*e2x(i)
105 ENDDO
106
107 DO i=1,nel
108 e2x(i)=e3y(i)*e1z(i)-e3z(i)*e1y(i)
109 e2y(i)=e3z(i)*e1x(i)-e3x(i)*e1z(i)
110 e2z(i)=e3x(i)*e1y(i)-e3y(i)*e1x(i)
111 ENDDO
112
113
114
115 DO i=1,nel
116 rx1(i)=e1x(i)*rx1g(i)+e1y(i)*ry1g(i)+e1z(i)*rz1g(i)
117 rx2(i)=e1x(i)*rx2g(i)+e1y(i)*ry2g(i)+e1z(i)*rz2g(i)
118 theta=(rx1(i)+rx2(i))/two*dt1
119 sum2(i)=sqrt(e2x(i)**2+e2y(i)**2+e2z(i)**2)
120 sum3(i)=sqrt(e3x(i)**2+e3y(i)**2+e3z(i)**2)
121 cost(i)=cos(theta)/sum2(i)
122 sint(i) =sin(theta)/sum3(i)
123 ENDDO
124
125
126
127 DO i=1,nel
128 e2x(i)=e2x(i)*cost(i)+e3x(i)*sint(i)
129 e2y(i)=e2y(i)*cost(i)+e3y(i)*sint(i)
130 e2z(i)=e2z(i)*cost(i)+e3z(i)*sint(i)
131 ENDDO
132
133 DO i=1,nel
134 sum(i)=sqrt(e2x(i)**2+e2y(i)**2+e2z(i)**2)
135 ENDDO
136
137 DO i=1,nel
138 e2x(i)=e2x(i)/sum(i)
139 e2y(i)=e2y(i)/sum(i)
140 e2z(i)=e2z(i)/sum(i)
141 ENDDO
142
143 DO i=1,nel
144 e3x(i)=e1y(i)*e2z(i)-e1z(i)*e2y(i)
145 e3y(i)=e1z(i)*e2x(i)-e1x(i)*e2z(i)
146 e3z(i)=e1x(i)*e2y(i)-e1y(i)*e2x(i)
147 ENDDO
148
149 DO i=1,nel
150 sum(i)=sqrt(e3x(i)**2+e3y(i)**2+e3z(i)**2)
151 e3x(i)=e3x(i)/sum(i)
152 e3y(i)=e3y(i)/sum(i)
153 e3z(i)=e3z(i)/sum(i)
154 ENDDO
155
156 DO i=1,nel
157 rloc(1,i)=e2x(i)
158 rloc(2,i)=e2y(i)
159 rloc(3,i)=e2z(i)
160 ENDDO
161
162 RETURN