OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r4evec3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "impl1_c.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ r4evec3()

subroutine r4evec3 ( rloc,
v,
exx2,
eyx2,
ezx2,
exy2,
eyy2,
ezy2,
exz2,
eyz2,
ezz2,
double precision, dimension(mvsiz) al2dp,
double precision, dimension(3,*) x1dp,
double precision, dimension(3,*) x2dp,
al2,
double precision, dimension(mvsiz) aldp,
rloc_err,
integer, dimension(*) ngl,
al,
exx,
eyx,
ezx,
exy,
eyy,
ezy,
exz,
eyz,
ezz,
rx1,
ry1,
rz1,
rx2,
ry2,
rz2,
vx1,
vx2,
vy1,
vy2,
vz1,
vz2,
integer, dimension(*) nc1,
integer, dimension(*) nc2,
integer, intent(in) nel )

Definition at line 30 of file r4evec3.F.

42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "com04_c.inc"
54#include "com08_c.inc"
55#include "impl1_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER, INTENT(IN) :: NEL
60 INTEGER NGL(*),NC1(*),NC2(*)
61C REAL
63 . rloc(3,*),v(3,*),
64 . exx2(mvsiz), eyx2(mvsiz), ezx2(mvsiz),
65 . exy2(mvsiz), eyy2(mvsiz), ezy2(mvsiz),
66 . exz2(mvsiz), eyz2(mvsiz), ezz2(mvsiz),
67 . rloc_err(3,*),al2(mvsiz),
68 . exx(mvsiz), eyx(mvsiz), ezx(mvsiz),
69 . exy(mvsiz), eyy(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)
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER I,J
81C REAL
83 . thetaphi, r1phi, r2phi, sint(mvsiz),
84 . sum(mvsiz) ,sum2(mvsiz), sum3(mvsiz) ,theta(mvsiz),
85 . cost(mvsiz), sum1phi, sum2phi, sum3phi, cophi, siphi, cosphi,
86 . sinphi,sumphi,
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),
94 . RX1DP, RX2DP
95C-----------------------------------------------
96 DO i=1,nel
97 exydp(i)=rloc(1,i)
98 eyydp(i)=rloc(2,i)
99 ezydp(i)=rloc(3,i)
100 exy2dp(i)=rloc(1,i)
101 eyy2dp(i)=rloc(2,i)
102 ezy2dp(i)=rloc(3,i)
103 ENDDO
104C
105 IF (scodver >= 101) THEN
106 DO i=1,nel
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)
113 ENDDO
114 ENDIF
115C
116 dt05=half*dt1
117 IF (ismdisp > 0) dt05=zero
118C
119 DO i=1,nel
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)+
124 . ezxdp(i)*ezxdp(i))
125 al(i)=aldp(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))
131 al2(i)=al2dp(i)
132 ENDDO
133C
134 DO i=1,nel
135 IF (aldp(i) <= em15) THEN
136 exxdp(i)= one
137 eyxdp(i)= zero
138 ezxdp(i)= zero
139 exydp(i)= zero
140 eyydp(i)= one
141 ezydp(i)= zero
142 ELSE
143 exxdp(i)=exxdp(i)/aldp(i)
144 eyxdp(i)=eyxdp(i)/aldp(i)
145 ezxdp(i)=ezxdp(i)/aldp(i)
146 ENDIF
147 ENDDO
148C
149 DO i=1,nel
150 IF (al2dp(i) <= em15) THEN
151 exx2dp(i)= one
152 eyx2dp(i)= zero
153 ezx2dp(i)= zero
154 exy2dp(i)= zero
155 eyy2dp(i)= one
156 ezy2dp(i)= zero
157 ELSE
158 exx2dp(i)=exx2dp(i)/al2dp(i)
159 eyx2dp(i)=eyx2dp(i)/al2dp(i)
160 ezx2dp(i)=ezx2dp(i)/al2dp(i)
161 ENDIF
162 ENDDO
163C
164 DO i=1,nel
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)
168C
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)
172 ENDDO
173C
174 DO i=1,nel
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)
178C
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)
182 ENDDO
183C--------------------------------------------
184C TORSION MOYENNE EN COORDONNEES GLOBALES
185C--------------------------------------------
186 DO i=1,nel
187 rx1dp = exx2dp(i)*rx1(i)+eyx2dp(i)*ry1(i)+ezx2dp(i)*rz1(i)
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))
192 cc = cos(theta(i))
193 ss = sin(theta(i))
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)
200 ENDDO
201C
202C ... it is modified.
203C
204 DO i=1,nel
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)
208C
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)
212 ENDDO
213C
214 DO i=1,nel
215 sum(i) =max(em15,sqrt(exydp(i)*exydp(i)+
216 . eyydp(i)*eyydp(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)
221C
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)
228 ENDDO
229C
230 DO i=1,nel
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)
234C
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)
238 ENDDO
239C
240 DO i=1,nel
241 sum(i) =max(em15,sqrt(exzdp(i)*exzdp(i)+
242 . eyzdp(i)*eyzdp(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)
247C
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)
254 ENDDO
255C
256 DO i=1,nel
257 rloc(1,i) = exydp(i)
258 rloc(2,i) = eyydp(i)
259 rloc(3,i) = ezydp(i)
260 ENDDO
261C
262 IF (scodver >= 101) THEN
263 DO i=1,nel
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)
267 ENDDO
268 ENDIF
269C
270 DO i=1,nel
271 vx1(i)=v(1,nc1(i))
272 vy1(i)=v(2,nc1(i))
273 vz1(i)=v(3,nc1(i))
274 vx2(i)=v(1,nc2(i))
275 vy2(i)=v(2,nc2(i))
276 vz2(i)=v(3,nc2(i))
277 ENDDO
278C
279 DO i=1,nel
280 exx(i)=exxdp(i)
281 eyx(i)=eyxdp(i)
282 ezx(i)=ezxdp(i)
283C
284 exy(i)=exydp(i)
285 eyy(i)=eyydp(i)
286 ezy(i)=ezydp(i)
287C
288 exz(i)=exzdp(i)
289 eyz(i)=eyzdp(i)
290 ezz(i)=ezzdp(i)
291C
292 exx2(i)=exx2dp(i)
293 eyx2(i)=eyx2dp(i)
294 ezx2(i)=ezx2dp(i)
295C
296 exy2(i)=exy2dp(i)
297 eyy2(i)=eyy2dp(i)
298 ezy2(i)=ezy2dp(i)
299C
300 exz2(i)=exz2dp(i)
301 eyz2(i)=eyz2dp(i)
302 ezz2(i)=ezz2dp(i)
303 ENDDO
304C---
305 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21