OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s6rcoork.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| s6rcoork ../engine/source/elements/thickshell/solide6c/s6rcoork.F
25!||--- called by ------------------------------------------------------
26!|| s6cke3 ../engine/source/elements/thickshell/solide6c/s6cke3.F
27!||--- calls -----------------------------------------------------
28!|| s6cortho3 ../engine/source/elements/thickshell/solide6c/s6cortho3.F
29!|| vrrota3 ../engine/source/elements/thickshell/solide6c/vrrota3.F
30!||--- uses -----------------------------------------------------
31!|| element_mod ../common_source/modules/elements/element_mod.F90
32!||====================================================================
33 SUBROUTINE s6rcoork(
34 1 X, IXS, X1, X2,
35 2 X3, X4, X5, X6,
36 3 Y1, Y2, Y3, Y4,
37 4 Y5, Y6, Z1, Z2,
38 5 Z3, Z4, Z5, Z6,
39 6 OFFG, OFF, SAV, R11,
40 7 R12, R13, R21, R22,
41 8 R23, R31, R32, R33,
42 9 NC1, NC2, NC3, NC4,
43 A NC5, NC6, NGL, MXT,
44 B NGEO, K11, K12, K13,
45 C K14, K15, K16, K22,
46 D K23, K24, K25, K26,
47 E K33, K34, K35, K36,
48 F K44, K45, K46, K55,
49 G K56, K66, NEL, ISMSTR)
50 use element_mod , only : nixs
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C G l o b a l P a r a m e t e r s
57C-----------------------------------------------
58#include "mvsiz_p.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "scr18_c.inc"
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER, INTENT(IN) :: ISMSTR
67 INTEGER NEL
68C REAL
69 my_real
70 . X(3,*),
71 . X1(*), X2(*), X3(*), X4(*), X5(*), X6(*),
72 . Y1(*), Y2(*), Y3(*), Y4(*), Y5(*), Y6(*),
73 . Z1(*), Z2(*), Z3(*), Z4(*), Z5(*), Z6(*),
74 . OFFG(*), OFF(*),
75 . R11(MVSIZ),R12(MVSIZ),R13(MVSIZ),
76 . R21(MVSIZ),R22(MVSIZ),R23(MVSIZ),
77 . R31(MVSIZ),R32(MVSIZ),R33(MVSIZ)
78 DOUBLE PRECISION
79 . SAV(NEL,15)
80 my_real
81 . K11(9,*) ,K12(9,*) ,K13(9,*) ,K14(9,*) ,K15(9,*) ,
82 . k16(9,*) ,k22(9,*) ,k23(9,*) ,k24(9,*) ,k25(9,*) ,
83 . k26(9,*) ,k33(9,*) ,k34(9,*) ,k35(9,*) ,k36(9,*) ,
84 . k44(9,*) ,k45(9,*) ,k46(9,*) ,k55(9,*) ,k56(9,*) ,
85 . k66(9,*)
86 INTEGER NC1(*), NC2(*), NC3(*), NC4(*),
87 . NC5(*), NC6(*), MXT(*), NGL(*),NGEO(*)
88 INTEGER IXS(NIXS,*)
89C-----------------------------------------------
90C L o c a l V a r i a b l e s
91C-----------------------------------------------
92 INTEGER I,J
93C REAL
94 my_real
95 . xl,yl,zl
96 my_real
97 . rx(mvsiz) , ry(mvsiz) , rz(mvsiz) ,
98 . sx(mvsiz) , sy(mvsiz) , sz(mvsiz) ,
99 . tx(mvsiz) , ty(mvsiz) , tz(mvsiz)
100C-----------------------------------------------
101C
102 DO i=1,nel
103 ngeo(i)=ixs(10,i)
104 ngl(i)=ixs(11,i)
105 mxt(i)=ixs(1,i)
106 nc1(i)=ixs(2,i)
107 nc2(i)=ixs(3,i)
108 nc3(i)=ixs(4,i)
109 nc4(i)=ixs(6,i)
110 nc5(i)=ixs(7,i)
111 nc6(i)=ixs(8,i)
112 ENDDO
113C----------------------------
114C NODAL COORDINATES |
115C----------------------------
116 DO i=1,nel
117 x1(i)=x(1,nc1(i))
118 y1(i)=x(2,nc1(i))
119 z1(i)=x(3,nc1(i))
120 x2(i)=x(1,nc2(i))
121 y2(i)=x(2,nc2(i))
122 z2(i)=x(3,nc2(i))
123 x3(i)=x(1,nc3(i))
124 y3(i)=x(2,nc3(i))
125 z3(i)=x(3,nc3(i))
126 x4(i)=x(1,nc4(i))
127 y4(i)=x(2,nc4(i))
128 z4(i)=x(3,nc4(i))
129 x5(i)=x(1,nc5(i))
130 y5(i)=x(2,nc5(i))
131 z5(i)=x(3,nc5(i))
132 x6(i)=x(1,nc6(i))
133 y6(i)=x(2,nc6(i))
134 z6(i)=x(3,nc6(i))
135 off(i) = min(one,abs(offg(i)))
136 ENDDO
137C-----------
138C convected frame (ITERATIONS).
139C-----------
140 DO i=1,nel
141 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
142 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
143 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
144 x1(i)=x1(i)-xl
145 y1(i)=y1(i)-yl
146 z1(i)=z1(i)-zl
147 x2(i)=x2(i)-xl
148 y2(i)=y2(i)-yl
149 z2(i)=z2(i)-zl
150 x3(i)=x3(i)-xl
151 y3(i)=y3(i)-yl
152 z3(i)=z3(i)-zl
153 x4(i)=x4(i)-xl
154 y4(i)=y4(i)-yl
155 z4(i)=z4(i)-zl
156 x5(i)=x5(i)-xl
157 y5(i)=y5(i)-yl
158 z5(i)=z5(i)-zl
159 x6(i)=x6(i)-xl
160 y6(i)=y6(i)-yl
161 z6(i)=z6(i)-zl
162 ENDDO
163 CALL s6cortho3(
164 1 x1, x2, x3, x4,
165 2 x5, x6, y1, y2,
166 3 y3, y4, y5, y6,
167 4 z1, z2, z3, z4,
168 5 z5, z6, r11, r12,
169 6 r13, r21, r22, r23,
170 7 r31, r32, r33, rx,
171 8 ry, rz, sx, sy,
172 9 sz, tx, ty, tz,
173 a nel)
174C-----------
175C Change to the convected frame.
176C-----------
177 IF((ismstr==1.OR.ismstr==3).OR.
178 . (ismstr==2.AND.idtmin(1)==3))THEN
179 DO i=1,nel
180 IF(offg(i)==two)THEN
181 x1(i)=sav(i,1)
182 y1(i)=sav(i,2)
183 z1(i)=sav(i,3)
184 x2(i)=sav(i,4)
185 y2(i)=sav(i,5)
186 z2(i)=sav(i,6)
187 x3(i)=sav(i,7)
188 y3(i)=sav(i,8)
189 z3(i)=sav(i,9)
190 x4(i)=sav(i,10)
191 y4(i)=sav(i,11)
192 z4(i)=sav(i,12)
193 x5(i)=sav(i,13)
194 y5(i)=sav(i,14)
195 z5(i)=sav(i,15)
196 x6(i)=zero
197 y6(i)=zero
198 z6(i)=zero
199 off(i) = one
200 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
201 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
202 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
203 x1(i)=x1(i)-xl
204 y1(i)=y1(i)-yl
205 z1(i)=z1(i)-zl
206 x2(i)=x2(i)-xl
207 y2(i)=y2(i)-yl
208 z2(i)=z2(i)-zl
209 x3(i)=x3(i)-xl
210 y3(i)=y3(i)-yl
211 z3(i)=z3(i)-zl
212 x4(i)=x4(i)-xl
213 y4(i)=y4(i)-yl
214 z4(i)=z4(i)-zl
215 x5(i)=x5(i)-xl
216 y5(i)=y5(i)-yl
217 z5(i)=z5(i)-zl
218 x6(i)=x6(i)-xl
219 y6(i)=y6(i)-yl
220 z6(i)=z6(i)-zl
221 ELSE
222 xl=r11(i)*x1(i)+r21(i)*y1(i)+r31(i)*z1(i)
223 yl=r12(i)*x1(i)+r22(i)*y1(i)+r32(i)*z1(i)
224 zl=r13(i)*x1(i)+r23(i)*y1(i)+r33(i)*z1(i)
225 x1(i)=xl
226 y1(i)=yl
227 z1(i)=zl
228 xl=r11(i)*x2(i)+r21(i)*y2(i)+r31(i)*z2(i)
229 yl=r12(i)*x2(i)+r22(i)*y2(i)+r32(i)*z2(i)
230 zl=r13(i)*x2(i)+r23(i)*y2(i)+r33(i)*z2(i)
231 x2(i)=xl
232 y2(i)=yl
233 z2(i)=zl
234 xl=r11(i)*x3(i)+r21(i)*y3(i)+r31(i)*z3(i)
235 yl=r12(i)*x3(i)+r22(i)*y3(i)+r32(i)*z3(i)
236 zl=r13(i)*x3(i)+r23(i)*y3(i)+r33(i)*z3(i)
237 x3(i)=xl
238 y3(i)=yl
239 z3(i)=zl
240 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
241 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
242 x4(i)=xl
243 y4(i)=yl
244 z4(i)=-z1(i)
245 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
246 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
247 x5(i)=xl
248 y5(i)=yl
249 z5(i)=-z2(i)
250 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
251 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
252 x6(i)=xl
253 y6(i)=yl
254 z6(i)=-z3(i)
255C sav in local frame.
256C SAV(I,1)=X1(I)-X6(I)
257C SAV(I,2)=Y1(I)-Y6(I)
258C SAV(I,3)=Z1(I)-Z6(I)
259C SAV(I,4)=X2(I)-X6(I)
260C SAV(I,5)=Y2(I)-Y6(I)
261C SAV(I,6)=Z2(I)-Z6(I)
262C SAV(I,7)=X3(I)-X6(I)
263C SAV(I,8)=Y3(I)-Y6(I)
264C SAV(I,9)=Z3(I)-Z6(I)
265C SAV(I,10)=X4(I)-X6(I)
266C SAV(I,11)=Y4(I)-Y6(I)
267C SAV(I,12)=Z4(I)-Z6(I)
268C SAV(I,13)=X5(I)-X6(I)
269C SAV(I,14)=Y5(I)-Y6(I)
270C SAV(I,15)=Z5(I)-Z6(I)
271 off(i) = offg(i)
272 ENDIF
273 ENDDO
274C
275 ELSE
276 CALL vrrota3(
277 1 r11, r12, r13, r21,
278 2 r22, r23, r31, r32,
279 3 r33, x1, y1, z1,
280 4 nel)
281 CALL vrrota3(
282 1 r11, r12, r13, r21,
283 2 r22, r23, r31, r32,
284 3 r33, x2, y2, z2,
285 4 nel)
286 CALL vrrota3(
287 1 r11, r12, r13, r21,
288 2 r22, r23, r31, r32,
289 3 r33, x3, y3, z3,
290 4 nel)
291 DO i=1,nel
292 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
293 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
294 x4(i)=xl
295 y4(i)=yl
296 z4(i)=-z1(i)
297 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
298 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
299 x5(i)=xl
300 y5(i)=yl
301 z5(i)=-z2(i)
302 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
303 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
304 x6(i)=xl
305 y6(i)=yl
306 z6(i)=-z3(i)
307 off(i) = min(one,offg(i))
308 ENDDO
309C
310 ENDIF
311C-----------
312 DO j=1,9
313 DO i=1,nel
314 k11(j,i)=zero
315 k12(j,i)=zero
316 k13(j,i)=zero
317 k14(j,i)=zero
318 k15(j,i)=zero
319 k16(j,i)=zero
320 k22(j,i)=zero
321 k23(j,i)=zero
322 k24(j,i)=zero
323 k25(j,i)=zero
324 k26(j,i)=zero
325 k33(j,i)=zero
326 k34(j,i)=zero
327 k35(j,i)=zero
328 k36(j,i)=zero
329 k44(j,i)=zero
330 k45(j,i)=zero
331 k46(j,i)=zero
332 k55(j,i)=zero
333 k56(j,i)=zero
334 k66(j,i)=zero
335 ENDDO
336 ENDDO
337C-----------
338 RETURN
339 END
#define min(a, b)
Definition macros.h:20
subroutine s6rcoork(x, ixs, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, offg, off, sav, r11, r12, r13, r21, r22, r23, r31, r32, r33, nc1, nc2, nc3, nc4, nc5, nc6, ngl, mxt, ngeo, k11, k12, k13, k14, k15, k16, k22, k23, k24, k25, k26, k33, k34, k35, k36, k44, k45, k46, k55, k56, k66, nel, ismstr)
Definition s6rcoork.F:50
subroutine s6cortho3(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
Definition s6cortho3.F:34
subroutine vrrota3(r11, r12, r13, r21, r22, r23, r31, r32, r33, x1, y1, z1, nel)
Definition vrrota3.F:35