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

Go to the source code of this file.

Functions/Subroutines

subroutine section_skew (n1, n2, n3, x, xxc, yyc, zzc, xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6, xxn, yyn, zzn, ifram, nnod, nod, ms)

Function/Subroutine Documentation

◆ section_skew()

subroutine section_skew ( integer n1,
integer n2,
integer n3,
x,
xxc,
yyc,
zzc,
xx4,
yy4,
zz4,
xx5,
yy5,
zz5,
xx6,
yy6,
zz6,
xxn,
yyn,
zzn,
integer ifram,
integer nnod,
integer, dimension(*) nod,
ms )

Definition at line 36 of file section_skew.F.

40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "comlock.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER N1, N2, N3, NNOD,IFRAM, NOD(*)
52 my_real x(3,*),xxc, yyc, zzc,
53 . xx4, yy4, zz4, xx5, yy5, zz5, xx6, yy6, zz6,
54 . xxn, yyn, zzn, ms(*)
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER I, N
59 my_real xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3, al4, al6, al5, d13, mas, x1n, y1n, z1n
60C-----------------------------------------------
61C B o d y
62C-----------------------------------------------
63 IF(ifram<10)THEN
64C MOMENTUM (SKEW N1 N2 N3)
65 xx1=x(1,n1)
66 yy1=x(2,n1)
67 zz1=x(3,n1)
68 xx2=x(1,n2)
69 yy2=x(2,n2)
70 zz2=x(3,n2)
71 xx3=x(1,n3)
72 yy3=x(2,n3)
73 zz3=x(3,n3)
74 xx4=xx2-xx1
75 yy4=yy2-yy1
76 zz4=zz2-zz1
77 al4=sqrt(xx4**2+yy4**2+zz4**2)
78 xx4=xx4/max(al4,em20)
79 yy4=yy4/max(al4,em20)
80 zz4=zz4/max(al4,em20)
81 xx5=xx3-xx1
82 yy5=yy3-yy1
83 zz5=zz3-zz1
84 xx6=yy4*zz5-zz4*yy5
85 yy6=zz4*xx5-xx4*zz5
86 zz6=xx4*yy5-yy4*xx5
87 al6=sqrt(xx6**2+yy6**2+zz6**2)
88 xx6=xx6/max(al6,em20)
89 yy6=yy6/max(al6,em20)
90 zz6=zz6/max(al6,em20)
91 xx5=yy6*zz4-zz6*yy4
92 yy5=zz6*xx4-xx6*zz4
93 zz5=xx6*yy4-yy6*xx4
94 al5=sqrt(xx5**2+yy5**2+zz5**2)
95 xx5=xx5/max(al5,em20)
96 yy5=yy5/max(al5,em20)
97 zz5=zz5/max(al5,em20)
98C
99 xxn=xx6
100 yyn=yy6
101 zzn=zz6
102C
103 ELSEIF (n1/=0) THEN
104C MOMENTUM / GLOBAL SYSTEM
105 xx4=x(1,n2)-x(1,n1)
106 yy4=x(2,n2)-x(2,n1)
107 zz4=x(3,n2)-x(3,n1)
108 xx5=x(1,n3)-x(1,n1)
109 yy5=x(2,n3)-x(2,n1)
110 zz5=x(3,n3)-x(3,n1)
111 xxn=yy4*zz5-zz4*yy5
112 yyn=zz4*xx5-xx4*zz5
113 zzn=xx4*yy5-yy4*xx5
114 al6=sqrt(xxn**2+yyn**2+zzn**2)
115 xxn=xxn/max(al6,em20)
116 yyn=yyn/max(al6,em20)
117 zzn=zzn/max(al6,em20)
118C
119 xx4=one
120 yy4=zero
121 zz4=zero
122 xx5=zero
123 yy5=one
124 zz5=zero
125 xx6=zero
126 yy6=zero
127 zz6=one
128 ELSE
129 xxn=zero
130 yyn=zero
131 zzn=one
132 xx4=one
133 yy4=zero
134 zz4=zero
135 xx5=zero
136 yy5=one
137 zz5=zero
138 xx6=zero
139 yy6=zero
140 zz6=one
141C
142 ENDIF
143C
144C ORIGIN CALCULATION
145C
146 IF(ifram==0)THEN
147 d13=(xx3-xx1)*xx4+(yy3-yy1)*yy4+(zz3-zz1)*zz4
148 xxc=xx1+d13*xx4
149 yyc=yy1+d13*yy4
150 zzc=zz1+d13*zz4
151 ELSEIF(ifram==10)THEN
152 x1n=x(1,n2)-x(1,n1)
153 y1n=x(2,n2)-x(2,n1)
154 z1n=x(3,n2)-x(3,n1)
155 al4=sqrt(x1n**2+y1n**2+z1n**2)
156 x1n=x1n/max(al4,em20)
157 y1n=y1n/max(al4,em20)
158 z1n=z1n/max(al4,em20)
159 d13=(x(1,n3)-x(1,n1))*x1n
160 . +(x(2,n3)-x(2,n1))*y1n
161 . +(x(3,n3)-x(3,n1))*z1n
162 xxc=x(1,n1)+d13*x1n
163 yyc=x(2,n1)+d13*y1n
164 zzc=x(3,n1)+d13*z1n
165 ELSEIF(mod(ifram,10)==1)THEN
166 xxc=0.
167 yyc=0.
168 zzc=0.
169C attention : il faut penser a maj de X avant forint
170 DO i=1,nnod
171 n=nod(i)
172 xxc=xxc+x(1,n)
173 yyc=yyc+x(2,n)
174 zzc=zzc+x(3,n)
175 ENDDO
176 xxc=xxc/nnod
177 yyc=yyc/nnod
178 zzc=zzc/nnod
179 ELSEIF(mod(ifram,10)==2)THEN
180 xxc=0.
181 yyc=0.
182 zzc=0.
183 mas=1.e-30
184C attention : il faut penser a maj de X & M avant forint
185 DO i=1,nnod
186 n=nod(i)
187 xxc=xxc+x(1,n)*ms(n)
188 yyc=yyc+x(2,n)*ms(n)
189 zzc=zzc+x(3,n)*ms(n)
190 mas=mas+ms(n)
191 ENDDO
192 xxc=xxc/mas
193 yyc=yyc/mas
194 zzc=zzc/mas
195 ELSEIF(mod(ifram,10)==3)THEN
196 xxc=0.
197 yyc=0.
198 zzc=0.
199 ENDIF
200C
201 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21