OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i21norm3.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine i21norm3 (x, irectm, nrtm, nmn, msr, nint, nty, noint, nod_normal, xm0)
subroutine i21rcurv (nrtm, xm0, nod_normal, irect, rcurv, anglm)

Function/Subroutine Documentation

◆ i21norm3()

subroutine i21norm3 ( x,
integer, dimension(4,*) irectm,
integer nrtm,
integer nmn,
integer, dimension(*) msr,
integer nint,
integer nty,
integer noint,
nod_normal,
xm0 )

Definition at line 28 of file i21norm3.F.

31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C G l o b a l P a r a m e t e r s
37C-----------------------------------------------
38#include "mvsiz_p.inc"
39C-----------------------------------------------
40C D u m m y A r g u m e n t s
41C-----------------------------------------------
42 INTEGER NRTM, NINT, NTY, NOINT,NMN
43 INTEGER IRECTM(4,*), MSR(*)
44C REAL
46 . x(3,*), nod_normal(3,*), xm0(3,*)
47C-----------------------------------------------
48C L o c a l V a r i a b l e s
49C-----------------------------------------------
50 INTEGER I, J, FIRST, LAST, IRM, I1, I2, I3, I4
51 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
52C REAL
54 . x0(mvsiz), y0(mvsiz), z0(mvsiz),
55 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
56 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
57 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
58 . x01(mvsiz), x02(mvsiz), x03(mvsiz), x04(mvsiz),
59 . y01(mvsiz), y02(mvsiz), y03(mvsiz), y04(mvsiz),
60 . z01(mvsiz), z02(mvsiz), z03(mvsiz), z04(mvsiz),
61 . xn1(mvsiz),yn1(mvsiz),zn1(mvsiz),
62 . xn2(mvsiz),yn2(mvsiz),zn2(mvsiz),
63 . xn3(mvsiz),yn3(mvsiz),zn3(mvsiz),
64 . xn4(mvsiz),yn4(mvsiz),zn4(mvsiz),
65 . aaa
66C--------------------------------------------------------------
67 first=1
68 last =min(nrtm,mvsiz)
69C
70 100 CONTINUE
71C
72 DO i=1,last-first+1
73 irm=i+first-1
74 ix1(i)=msr(irectm(1,irm))
75 ix2(i)=msr(irectm(2,irm))
76 ix3(i)=msr(irectm(3,irm))
77 ix4(i)=msr(irectm(4,irm))
78 x1(i)=x(1,ix1(i))
79 y1(i)=x(2,ix1(i))
80 z1(i)=x(3,ix1(i))
81 x2(i)=x(1,ix2(i))
82 y2(i)=x(2,ix2(i))
83 z2(i)=x(3,ix2(i))
84 x3(i)=x(1,ix3(i))
85 y3(i)=x(2,ix3(i))
86 z3(i)=x(3,ix3(i))
87 x4(i)=x(1,ix4(i))
88 y4(i)=x(2,ix4(i))
89 z4(i)=x(3,ix4(i))
90 END DO
91C
92 DO i=1,last-first+1
93 IF(ix3(i)/=ix4(i))THEN
94 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
95 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
96 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
97 ELSE
98 x0(i) = x3(i)
99 y0(i) = y3(i)
100 z0(i) = z3(i)
101 ENDIF
102 END DO
103C
104 DO i=1,last-first+1
105C
106 x01(i) = x1(i) - x0(i)
107 y01(i) = y1(i) - y0(i)
108 z01(i) = z1(i) - z0(i)
109C
110 x02(i) = x2(i) - x0(i)
111 y02(i) = y2(i) - y0(i)
112 z02(i) = z2(i) - z0(i)
113C
114 x03(i) = x3(i) - x0(i)
115 y03(i) = y3(i) - y0(i)
116 z03(i) = z3(i) - z0(i)
117C
118 x04(i) = x4(i) - x0(i)
119 y04(i) = y4(i) - y0(i)
120 z04(i) = z4(i) - z0(i)
121C
122 ENDDO
123C
124 DO i=1,last-first+1
125C
126 xn1(i) = y01(i)*z02(i) - z01(i)*y02(i)
127 yn1(i) = z01(i)*x02(i) - x01(i)*z02(i)
128 zn1(i) = x01(i)*y02(i) - y01(i)*x02(i)
129C
130 xn2(i) = y02(i)*z03(i) - z02(i)*y03(i)
131 yn2(i) = z02(i)*x03(i) - x02(i)*z03(i)
132 zn2(i) = x02(i)*y03(i) - y02(i)*x03(i)
133C
134 xn3(i) = y03(i)*z04(i) - z03(i)*y04(i)
135 yn3(i) = z03(i)*x04(i) - x03(i)*z04(i)
136 zn3(i) = x03(i)*y04(i) - y03(i)*x04(i)
137C
138 xn4(i) = y04(i)*z01(i) - z04(i)*y01(i)
139 yn4(i) = z04(i)*x01(i) - x04(i)*z01(i)
140 zn4(i) = x04(i)*y01(i) - y04(i)*x01(i)
141C
142 ENDDO
143C
144 DO i=1,last-first+1
145C
146 aaa=one/max(em30,sqrt(xn1(i)*xn1(i)+yn1(i)*yn1(i)+zn1(i)*zn1(i)))
147 xn1(i) = xn1(i)*aaa
148 yn1(i) = yn1(i)*aaa
149 zn1(i) = zn1(i)*aaa
150C
151 aaa=one/max(em30,sqrt(xn2(i)*xn2(i)+yn2(i)*yn2(i)+zn2(i)*zn2(i)))
152 xn2(i) = xn2(i)*aaa
153 yn2(i) = yn2(i)*aaa
154 zn2(i) = zn2(i)*aaa
155C
156 aaa=one/max(em30,sqrt(xn3(i)*xn3(i)+yn3(i)*yn3(i)+zn3(i)*zn3(i)))
157 xn3(i) = xn3(i)*aaa
158 yn3(i) = yn3(i)*aaa
159 zn3(i) = zn3(i)*aaa
160C
161 aaa=one/max(em30,sqrt(xn4(i)*xn4(i)+yn4(i)*yn4(i)+zn4(i)*zn4(i)))
162 xn4(i) = xn4(i)*aaa
163 yn4(i) = yn4(i)*aaa
164 zn4(i) = zn4(i)*aaa
165C
166 ENDDO
167C
168 DO i=1,last-first+1
169C
170 irm=i+first-1
171C
172 i1=irectm(1,irm)
173 i2=irectm(2,irm)
174 i3=irectm(3,irm)
175 i4=irectm(4,irm)
176C
177 IF(i4/=i3)THEN
178C
179 nod_normal(1,i1)=nod_normal(1,i1)+xn4(i)+xn1(i)
180 nod_normal(2,i1)=nod_normal(2,i1)+yn4(i)+yn1(i)
181 nod_normal(3,i1)=nod_normal(3,i1)+zn4(i)+zn1(i)
182C
183 nod_normal(1,i2)=nod_normal(1,i2)+xn1(i)+xn2(i)
184 nod_normal(2,i2)=nod_normal(2,i2)+yn1(i)+yn2(i)
185 nod_normal(3,i2)=nod_normal(3,i2)+zn1(i)+zn2(i)
186C
187 nod_normal(1,i3)=nod_normal(1,i3)+xn2(i)+xn3(i)
188 nod_normal(2,i3)=nod_normal(2,i3)+yn2(i)+yn3(i)
189 nod_normal(3,i3)=nod_normal(3,i3)+zn2(i)+zn3(i)
190C
191 nod_normal(1,i4)=nod_normal(1,i4)+xn3(i)+xn4(i)
192 nod_normal(2,i4)=nod_normal(2,i4)+yn3(i)+yn4(i)
193 nod_normal(3,i4)=nod_normal(3,i4)+zn3(i)+zn4(i)
194C
195 ELSE
196C
197 nod_normal(1,i1)=nod_normal(1,i1)+xn1(i)
198 nod_normal(2,i1)=nod_normal(2,i1)+yn1(i)
199 nod_normal(3,i1)=nod_normal(3,i1)+zn1(i)
200C
201 nod_normal(1,i2)=nod_normal(1,i2)+xn1(i)
202 nod_normal(2,i2)=nod_normal(2,i2)+yn1(i)
203 nod_normal(3,i2)=nod_normal(3,i2)+zn1(i)
204C
205 nod_normal(1,i3)=nod_normal(1,i3)+xn1(i)
206 nod_normal(2,i3)=nod_normal(2,i3)+yn1(i)
207 nod_normal(3,i3)=nod_normal(3,i3)+zn1(i)
208C
209 END IF
210C
211 ENDDO
212C
213 IF(last < nrtm)THEN
214 first=last+1
215 last =min(last+mvsiz,nrtm)
216 GO TO 100
217 END IF
218C------------------------------------
219C normales aux noeuds.
220C------------------------------------
221 DO i=1,nmn
222C
223 aaa=one/max(em30,sqrt(nod_normal(1,i)*nod_normal(1,i)+
224 . nod_normal(2,i)*nod_normal(2,i)+
225 . nod_normal(3,i)*nod_normal(3,i)))
226 nod_normal(1,i)=nod_normal(1,i)*aaa
227 nod_normal(2,i)=nod_normal(2,i)*aaa
228 nod_normal(3,i)=nod_normal(3,i)*aaa
229C
230 END DO
231C------------------------------------
232C Coordonnees initiales cote main (1: active ; 0: inactive)
233C------------------------------------
234 DO i=1,nmn
235 DO j=1,3
236 xm0(j,i)=x(j,msr(i))
237 END DO
238 END DO
239C------------------------------------
240 RETURN
241 1000 FORMAT(2x,'GAP MIN = ',1pg20.13)
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21

◆ i21rcurv()

subroutine i21rcurv ( integer nrtm,
xm0,
nod_normal,
integer, dimension(4,*) irect,
rcurv,
anglm )

Definition at line 248 of file i21norm3.F.

250C-----------------------------------------------
251C I m p l i c i t T y p e s
252C-----------------------------------------------
253#include "implicit_f.inc"
254C-----------------------------------------------
255C D u m m y A r g u m e n t s
256C-----------------------------------------------
257 INTEGER NRTM, IRECT(4,*)
258 my_real
259 . xm0(3,*), nod_normal(3,*), rcurv(*), anglm(*)
260C-----------------------------------------------
261C L o c a l V a r i a b l e s
262C-----------------------------------------------
263 INTEGER I ,N1, N2, N3, N4
264 my_real
265 . x1, x2, x3, x4,
266 . y1, y2, y3, y4,
267 . z1, z2, z3, z4,
268 . nnx1, nnx2, nnx3, nnx4,
269 . nny1, nny2, nny3, nny4,
270 . nnz1, nnz2, nnz3, nnz4,
271 . surfx, surfy, surfz,
272 . erx, ery, erz, dnx, dny, dnz, dnt, ll, aaa, rr,
273 . x13, y13, z13, x24, y24, z24, nx, ny, nz, cc
274C-----------------------------------------------
275 rcurv(1:nrtm) = ep30
276 anglm(1:nrtm) = ep30
277
278 DO i=1,nrtm
279 n1=irect(1,i)
280 n2=irect(2,i)
281 n3=irect(3,i)
282 n4=irect(4,i)
283
284 x1=xm0(1,n1)
285 y1=xm0(2,n1)
286 z1=xm0(3,n1)
287
288 x2=xm0(1,n2)
289 y2=xm0(2,n2)
290 z2=xm0(3,n2)
291
292 x3=xm0(1,n3)
293 y3=xm0(2,n3)
294 z3=xm0(3,n3)
295
296 x4=xm0(1,n4)
297 y4=xm0(2,n4)
298 z4=xm0(3,n4)
299
300 nnx1=nod_normal(1,n1)
301 nny1=nod_normal(2,n1)
302 nnz1=nod_normal(3,n1)
303
304 nnx2=nod_normal(1,n2)
305 nny2=nod_normal(2,n2)
306 nnz2=nod_normal(3,n2)
307
308 nnx3=nod_normal(1,n3)
309 nny3=nod_normal(2,n3)
310 nnz3=nod_normal(3,n3)
311
312 nnx4=nod_normal(1,n4)
313 nny4=nod_normal(2,n4)
314 nnz4=nod_normal(3,n4)
315
316C-------
317 erx = (x2+x3)-(x1+x4)
318 ery = (y2+y3)-(y1+y4)
319 erz = (z2+z3)-(z1+z4)
320
321C Longueur vraie = LL/2
322 ll = sqrt(erx*erx+ery*ery+erz*erz)
323 aaa = one / ll
324 erx = erx*aaa
325 ery = ery*aaa
326 erz = erz*aaa
327
328 dnx= (nnx2+nnx3)-(nnx1+nnx4)
329 dny= (nny2+nny3)-(nny1+nny4)
330 dnz= (nnz2+nnz3)-(nnz1+nnz4)
331C
332C DN vraie = DNT/2
333 dnt=(dnx*erx+dny*ery+dnz*erz)
334
335 rr=ll/max(em20,abs(dnt))
336 rcurv(i)=min(rcurv(i),rr)
337C-------
338 erx = (x4+x3)-(x1+x2)
339 ery = (y4+y3)-(y1+y2)
340 erz = (z4+z3)-(z1+z2)
341
342C Longueur vraie = LL/2
343 ll = sqrt(erx*erx+ery*ery+erz*erz)
344 aaa = one / ll
345 erx = erx*aaa
346 ery = ery*aaa
347 erz = erz*aaa
348
349 dnx= (nnx4+nnx3)-(nnx1+nnx2)
350 dny= (nny4+nny3)-(nny1+nny2)
351 dnz= (nnz4+nnz3)-(nnz1+nnz2)
352C
353C DN vraie = DNT/2
354 dnt=(dnx*erx+dny*ery+dnz*erz)
355
356 rr=ll/max(em20,abs(dnt))
357 rcurv(i)=min(rcurv(i),rr)
358C-------
359C-------
360C-------
361C Angles.
362C-------
363 x13 = x3 - x1
364 y13 = y3 - y1
365 z13 = z3 - z1
366
367 x24 = x4 - x2
368 y24 = y4 - y2
369 z24 = z4 - z2
370
371 surfx = y13*z24 - z13*y24
372 surfy = z13*x24 - x13*z24
373 surfz = x13*y24 - y13*x24
374
375 aaa=one/max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
376 surfx = surfx * aaa
377 surfy = surfy * aaa
378 surfz = surfz * aaa
379
380 cc=(surfx*nnx1+surfy*nny1+surfz*nnz1)
381 anglm(i)=min(anglm(i),cc)
382
383 cc=(surfx*nnx2+surfy*nny2+surfz*nnz2)
384 anglm(i)=min(anglm(i),cc)
385
386 cc=(surfx*nnx3+surfy*nny3+surfz*nnz3)
387 anglm(i)=min(anglm(i),cc)
388
389 cc=(surfx*nnx4+surfy*nny4+surfz*nnz4)
390 anglm(i)=min(anglm(i),cc)
391 ENDDO
392
393 RETURN