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

Go to the source code of this file.

Functions/Subroutines

subroutine facnor (x, d, ii, xnorm, cdg, invert)
subroutine facnor2 (x, ii, xnorm, invert)

Function/Subroutine Documentation

◆ facnor()

subroutine facnor ( x,
d,
integer, dimension(*) ii,
xnorm,
cdg,
integer invert )

Definition at line 29 of file facnor.F.

30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35C D u m m y A r g u m e n t s
36C-----------------------------------------------
37C REAL
39 . x(3,*),d(3,*),xnorm(3,*),cdg(*)
40 INTEGER II(*),INVERT
41C REAL
43 . x0(4),y0(4),z0(4),nx,ny,nz,xc,yc,zc,s
44 INTEGER I,I1,I2,I3,I4
45C-----------------------------------------------
46C FACE NORMAL
47C-----------------------------------------------
48 DO 100 i = 1,4
49 x0(i) = x(1,ii(i))-d(1,ii(i))
50 y0(i) = x(2,ii(i))-d(2,ii(i))
51 z0(i) = x(3,ii(i))-d(3,ii(i))
52 100 CONTINUE
53C
54 nx = (y0(3) - y0(1)) * (z0(4) - z0(2)) -
55 . (z0(3) - z0(1)) * (y0(4) - y0(2))
56 ny = (z0(3) - z0(1)) * (x0(4) - x0(2)) -
57 . (x0(3) - x0(1)) * (z0(4) - z0(2))
58 nz = (x0(3) - x0(1)) * (y0(4) - y0(2)) -
59 . (y0(3) - y0(1)) * (x0(4) - x0(2))
60C
61 xc = .25*(x0(1) + x0(2) + x0(3) + x0(4))
62 yc = .25*(y0(1) + y0(2) + y0(3) + y0(4))
63 zc = .25*(z0(1) + z0(2) + z0(3) + z0(4))
64 xc = xc - cdg(1)
65 yc = yc - cdg(2)
66 zc = zc - cdg(3)
67 s = nx * xc + ny * yc + nz * zc
68 invert = 1
69 IF(s<zero)THEN
70 invert = -1
71 i1 = ii(2)
72 i2 = ii(1)
73 i3 = ii(4)
74 i4 = ii(3)
75 ii(1) = i1
76 ii(2) = i2
77 ii(3) = i3
78 ii(4) = i4
79 ENDIF
80C
81 DO 200 i = 1,4
82 x0(i) = x(1,ii(i))
83 y0(i) = x(2,ii(i))
84 z0(i) = x(3,ii(i))
85 200 CONTINUE
86C
87 nx = (y0(3) - y0(1)) * (z0(4) - z0(2)) -
88 . (z0(3) - z0(1)) * (y0(4) - y0(2))
89 ny = (z0(3) - z0(1)) * (x0(4) - x0(2)) -
90 . (x0(3) - x0(1)) * (z0(4) - z0(2))
91 nz = (x0(3) - x0(1)) * (y0(4) - y0(2)) -
92 . (y0(3) - y0(1)) * (x0(4) - x0(2))
93C
94 DO 300 i = 1,4
95 xnorm(1,ii(i)) = xnorm(1,ii(i)) + nx
96 xnorm(2,ii(i)) = xnorm(2,ii(i)) + ny
97 xnorm(3,ii(i)) = xnorm(3,ii(i)) + nz
98 300 CONTINUE
99C
100C-----------------------------------------------
101 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine invert(matrix, inverse, n, errorflag)

◆ facnor2()

subroutine facnor2 ( x,
integer, dimension(*) ii,
xnorm,
integer invert )

Definition at line 109 of file facnor.F.

110C-----------------------------------------------
111C I m p l i c i t T y p e s
112C-----------------------------------------------
113#include "implicit_f.inc"
114C-----------------------------------------------
115C D u m m y A r g u m e n t s
116C-----------------------------------------------
117C REAL
118 my_real
119 . x(3,*),xnorm(3,*)
120 INTEGER II(*),INVERT
121C REAL
122 my_real
123 . x0(4),y0(4),z0(4),nx,ny,nz
124 INTEGER I
125C-----------------------------------------------
126C FACE NORMAL
127C-----------------------------------------------
128C
129 invert = 1
130C
131 DO 200 i = 1,4
132 x0(i) = x(1,ii(i))
133 y0(i) = x(2,ii(i))
134 z0(i) = x(3,ii(i))
135 200 CONTINUE
136C
137 nx = (y0(3) - y0(1)) * (z0(4) - z0(2)) -
138 . (z0(3) - z0(1)) * (y0(4) - y0(2))
139 ny = (z0(3) - z0(1)) * (x0(4) - x0(2)) -
140 . (x0(3) - x0(1)) * (z0(4) - z0(2))
141 nz = (x0(3) - x0(1)) * (y0(4) - y0(2)) -
142 . (y0(3) - y0(1)) * (x0(4) - x0(2))
143C
144 DO 300 i = 1,4
145 xnorm(1,ii(i)) = xnorm(1,ii(i)) + nx
146 xnorm(2,ii(i)) = xnorm(2,ii(i)) + ny
147 xnorm(3,ii(i)) = xnorm(3,ii(i)) + nz
148 300 CONTINUE
149C
150C-----------------------------------------------
151 RETURN