31 1 RLOC, V, EXX2, EYX2,
32 2 EZX2, EXY2, EYY2, EZY2,
33 3 EXZ2, EYZ2, EZZ2, AL2DP,
34 4 X1DP, X2DP, AL2, ALDP,
35 5 RLOC_ERR,NGL, AL, EXX,
45#include "implicit_f.inc"
59 INTEGER,
INTENT(IN) :: NEL
60 INTEGER NGL(*),NC1(*),NC2(*)
64 . EXX2(MVSIZ), EYX2(MVSIZ), EZX2(MVSIZ),
69 . EXY(MVSIZ), (MVSIZ), EZY(MVSIZ),
70 . exz(mvsiz), eyz(mvsiz), ezz(mvsiz),
71 . rx1(mvsiz),rx2(mvsiz),ry1(mvsiz),
72 . ry2(mvsiz),rz1(mvsiz),rz2(mvsiz),al(mvsiz),
73 . vx1(mvsiz),vx2(mvsiz),vy1(mvsiz), vy2(mvsiz),
74 . vz1(mvsiz),vz2(mvsiz)
75 DOUBLE PRECISION X1DP(3,*),X2DP(3,*),
76 . ALDP(MVSIZ),AL2DP(MVSIZ)
83 . THETAPHI, R1PHI, R2PHI, SINT(MVSIZ),
84 . SUM(MVSIZ) ,SUM2(MVSIZ), SUM3(MVSIZ) ,THETA(MVSIZ),
85 . COST(MVSIZ), SUM1PHI, SUM2PHI, SUM3PHI, COPHI, SIPHI, COSPHI,
87 . dt05,cost2(mvsiz),sint2(mvsiz),cc,ss
88 DOUBLE PRECISION EXXDP(MVSIZ),EYXDP(MVSIZ),EZXDP(MVSIZ),
89 . EXX2DP(MVSIZ),EYX2DP(MVSIZ),EZX2DP(MVSIZ),
90 . EXYDP(MVSIZ) ,EYYDP(MVSIZ) ,EZYDP(MVSIZ),
91 . exy2dp(mvsiz),eyy2dp(mvsiz),ezy2dp(mvsiz),
92 . exzdp(mvsiz) ,eyzdp(mvsiz) ,ezzdp(mvsiz),
93 . exz2dp(mvsiz),eyz2dp(mvsiz),ezz2dp(mvsiz),
105 IF (scodver >= 101)
THEN
107 exydp(i)=exydp(i)+rloc_err(1,i)
108 eyydp(i)=eyydp(i)+rloc_err(2,i)
109 ezydp(i)=ezydp(i)+rloc_err(3,i)
110 exy2dp(i)=exy2dp(i)+rloc_err(1,i)
111 eyy2dp(i)=eyy2dp(i)+rloc_err(2,i)
112 ezy2dp(i)=ezy2dp(i)+rloc_err(3,i)
117 IF (ismdisp > 0) dt05=zero
120 exxdp(i)=x2dp(1,i)-x1dp(1,i)
121 eyxdp(i)=x2dp(2,i)-x1dp(2,i)
122 ezxdp(i)=x2dp(3,i)-x1dp(3,i)
123 aldp(i) =sqrt(exxdp(i)*exxdp(i)+eyxdp(i)*eyxdp(i)+
126 exx2dp(i)=x2dp(1,i)-x1dp(1,i)-dt05*(v(1,nc2(i))-v(1,nc1(i)))
127 eyx2dp(i)=x2dp(2,i)-x1dp(2,i)-dt05*(v(2,nc2(i))-v(2,nc1(i)))
128 ezx2dp(i)=x2dp(3,i)-x1dp(3,i)-dt05*(v(3,nc2(i))-v(3,nc1(i)))
129 al2dp(i)=sqrt(exx2dp(i)*exx2dp(i)+eyx2dp(i)*eyx2dp(i)+
130 . ezx2dp(i)*ezx2dp(i))
135 IF (aldp(i) <= em15)
THEN
143 exxdp(i)=exxdp(i)/aldp(i)
144 eyxdp(i)=eyxdp(i)/aldp(i)
145 ezxdp(i)=ezxdp(i)/aldp(i)
150 IF (al2dp(i) <= em15)
THEN
158 exx2dp(i)=exx2dp(i)/al2dp(i)
159 eyx2dp(i)=eyx2dp(i)/al2dp(i)
160 ezx2dp(i)=ezx2dp(i)/al2dp(i)
165 exzdp(i)=eyxdp(i)*ezydp(i)-ezxdp(i)*eyydp(i)
166 eyzdp(i)=ezxdp(i)*exydp(i)-exxdp(i)*ezydp(i)
167 ezzdp(i)=exxdp(i)*eyydp(i)-eyxdp(i)*exydp(i)
169 exz2dp(i)=eyx2dp(i)*ezy2dp(i)-ezx2dp(i)*eyy2dp(i)
170 eyz2dp(i)=ezx2dp(i)*exy2dp(i)-exx2dp(i)*ezy2dp(i)
171 ezz2dp(i)=exx2dp(i)*eyy2dp(i)-eyx2dp(i)*exy2dp(i)
175 exydp(i)=eyzdp(i)*ezxdp(i)-ezzdp(i)*eyxdp(i)
176 eyydp(i)=ezzdp(i)*exxdp(i)-exzdp(i)*ezxdp(i)
177 ezydp(i)=exzdp(i)*eyxdp(i)-eyzdp(i)*exxdp(i)
179 exy2dp(i)=eyz2dp(i)*ezx2dp(i)-ezz2dp(i)*eyx2dp(i)
180 eyy2dp(i)=ezz2dp(i)*exx2dp(i)-exz2dp(i)*ezx2dp(i)
181 ezy2dp(i)=exz2dp(i)*eyx2dp(i)-eyz2dp(i)*exx2dp(i)
187 rx1dp = exx2dp(i)*rx1
188 rx2dp = exx2dp(i)*rx2(i)+eyx2dp(i)*ry2(i)+ezx2dp(i)*rz2(i)
189 theta(i) = (rx1dp+rx2dp)/two*dt05
190 sum2(i) =
max(em15,sqrt(exy2dp(i)**2+eyy2dp(i)**2+ezy2dp(i)**2))
191 sum3(i) =
max(em15,sqrt(exz2dp(i)**2+eyz2dp(i)**2+ezz2dp(i)**2))
194 cost2(i) = cc/sum2(i)
195 sint2(i) = ss/sum3(i)
196 sum2(i) =
max(em15,sqrt(exydp(i)**2+eyydp(i)**2+ezydp(i)**2))
197 sum3(i) =
max(em15,sqrt(exzdp(i)**2+eyzdp(i)**2+ezzdp(i)**2))
198 cost(i) = (two*cc*cc-one)/sum2(i)
199 sint(i) = two*cc*ss/sum3(i)
205 exydp(i)= exydp(i)*cost(i)+exzdp(i)*sint(i)
206 eyydp(i)= eyydp(i)*cost(i)+eyzdp(i)*sint(i)
207 ezydp(i)= ezydp(i)*cost(i)+ezzdp(i)*sint(i)
209 exy2dp(i)= exy2dp(i)*cost2(i)+exz2dp(i)*sint2(i)
210 eyy2dp(i)= eyy2dp(i)*cost2(i)+eyz2dp(i)*sint2(i)
211 ezy2dp(i)= ezy2dp(i)*cost2(i)+ezz2dp(i)*sint2(i)
215 sum(i) =
max(em15,sqrt(exydp(i)*exydp(i)+
217 . ezydp(i)*ezydp(i)))
218 exydp(i)=exydp(i)/sum(i)
219 eyydp(i)=eyydp(i)/sum(i)
220 ezydp(i)=ezydp(i)/sum(i)
222 sum(i) =
max(em15,sqrt(exy2dp(i)*exy2dp(i)+
223 . eyy2dp(i)*eyy2dp(i)+
224 . ezy2dp(i)*ezy2dp(i)))
225 exy2dp(i)=exy2dp(i)/sum(i)
226 eyy2dp(i)=eyy2dp(i)/sum(i)
227 ezy2dp(i)=ezy2dp(i)/sum(i)
231 exzdp(i)=eyxdp(i)*ezydp(i)-ezxdp(i)*eyydp(i)
232 eyzdp(i)=ezxdp(i)*exydp(i)-exxdp(i)*ezydp(i)
233 ezzdp(i)=exxdp(i)*eyydp(i)-eyxdp(i)*exydp(i)
235 exz2dp(i)=eyx2dp(i)*ezy2dp(i)-ezx2dp(i)*eyy2dp(i)
236 eyz2dp(i)=ezx2dp(i)*exy2dp(i)-exx2dp(i)*ezy2dp(i)
237 ezz2dp(i)=exx2dp(i)*eyy2dp(i)-eyx2dp(i)*exy2dp(i)
241 sum(i) =
max(em15,sqrt(exzdp(i)*exzdp(i)+
243 . ezzdp(i)*ezzdp(i)))
244 exzdp(i)=exzdp(i)/sum(i)
245 eyzdp(i)=eyzdp(i)/sum(i)
246 ezzdp(i)=ezzdp(i)/sum(i)
248 sum(i) =
max(em15,sqrt(exz2dp(i)*exz2dp(i)+
249 . eyz2dp(i)*eyz2dp(i)+
250 . ezz2dp(i)*ezz2dp(i)))
251 exz2dp(i)=exz2dp(i)/sum(i)
252 eyz2dp(i)=eyz2dp(i)/sum(i)
253 ezz2dp(i)=ezz2dp(i)/sum(i)
262 IF (scodver >= 101)
THEN
264 rloc_err(1,i) = exydp(i) - rloc(1,i)
265 rloc_err(2,i) = eyydp(i) - rloc(2,i)
266 rloc_err(3,i) = ezydp(i) - rloc(3,i)
subroutine r4evec3(rloc, v, exx2, eyx2, ezx2, exy2, eyy2, ezy2, exz2, eyz2, ezz2, al2dp, x1dp, x2dp, al2, aldp, rloc_err, ngl, al, exx, eyx, ezx, exy, eyy, ezy, exz, eyz, ezz, rx1, ry1, rz1, rx2, ry2, rz2, vx1, vx2, vy1, vy2, vz1, vz2, nc1, nc2, nel)