OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
srep2glo.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!|| srep2glo ../engine/source/elements/sph/srep2glo.F
25!||--- called by ------------------------------------------------------
26!|| soltosphp ../engine/source/elements/sph/soltosph.F
27!||--- calls -----------------------------------------------------
28!|| scortho3 ../engine/source/elements/thickshell/solidec/scortho3.F
29!|| sortho3 ../engine/source/elements/solid/solide/sortho3.F
30!|| srepisot3 ../engine/source/elements/solid/solide/srepisot3.F
31!||--- uses -----------------------------------------------------
32!|| element_mod ../common_source/modules/elements/element_mod.F90
33!||====================================================================
34 SUBROUTINE srep2glo(
35 1 X, IXS, GAMA, RX,
36 2 RY, RZ, SX, SY,
37 3 SZ, TX, TY, TZ,
38 4 R11, R12, R13, R21,
39 5 R22, R23, R31, R32,
40 6 R33, T11, T12, T13,
41 7 T21, T22, T23, T31,
42 8 T32, T33, JR0, JS0,
43 9 JT0, NEL, LFT, LLT,
44 A JHBE, JCVT, ISORTH)
45 use element_mod , only : nixs
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C G l o b a l P a r a m e t e r s
52C-----------------------------------------------
53#include "mvsiz_p.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER, INTENT(INOUT) :: LFT
61 INTEGER, INTENT(INOUT) :: LLT
62 INTEGER, INTENT(INOUT) :: JHBE
63 INTEGER, INTENT(INOUT) :: JCVT
64 INTEGER, INTENT(INOUT) :: ISORTH
65 INTEGER NEL
66C REAL
67 my_real
68 . X(3,*), GAMA(NEL,6),
69 . R11(MVSIZ),R12(MVSIZ),R13(MVSIZ),
70 . r21(mvsiz),r22(mvsiz),r23(mvsiz),
71 . r31(mvsiz),r32(mvsiz),r33(mvsiz),
72 . t11(mvsiz),t12(mvsiz),t13(mvsiz),
73 . t21(mvsiz),t22(mvsiz),t23(mvsiz),
74 . t31(mvsiz),t32(mvsiz),t33(mvsiz),
75 . rx(mvsiz),sx(mvsiz),tx(mvsiz),
76 . ry(mvsiz),sy(mvsiz),ty(mvsiz),
77 . rz(mvsiz),sz(mvsiz),tz(mvsiz),
78 . jr0(mvsiz),js0(mvsiz),jt0(mvsiz)
79 INTEGER IXS(NIXS,*)
80C-----------------------------------------------
81C L o c a l V a r i a b l e s
82C-----------------------------------------------
83C REAL
84 my_real
85 . X1(MVSIZ), X2(MVSIZ), X3(MVSIZ), X4(MVSIZ),
86 . X5(MVSIZ), X6(MVSIZ), X7(MVSIZ), X8(MVSIZ),
87 . Y1(MVSIZ), Y2(MVSIZ), Y3(MVSIZ), Y4(MVSIZ),
88 . Y5(MVSIZ), Y6(MVSIZ), Y7(MVSIZ), Y8(MVSIZ),
89 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
90 . z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),
91 . g11,g22,g33,g12,g21,g23,g32,g13,g31,
92 . rr,xl,yl,zl
93 INTEGER NC1, NC2, NC3, NC4,
94 . nc5, nc6, nc7, nc8, i
95C-----------------------------------------------
96 DO i=lft,llt
97 nc1=ixs(2,i)
98 nc2=ixs(3,i)
99 nc3=ixs(4,i)
100 nc4=ixs(5,i)
101 nc5=ixs(6,i)
102 nc6=ixs(7,i)
103 nc7=ixs(8,i)
104 nc8=ixs(9,i)
105C----------------------------
106C NODAL COORDINATES |
107C----------------------------
108 x1(i)=x(1,nc1)
109 y1(i)=x(2,nc1)
110 z1(i)=x(3,nc1)
111 x2(i)=x(1,nc2)
112 y2(i)=x(2,nc2)
113 z2(i)=x(3,nc2)
114 x3(i)=x(1,nc3)
115 y3(i)=x(2,nc3)
116 z3(i)=x(3,nc3)
117 x4(i)=x(1,nc4)
118 y4(i)=x(2,nc4)
119 z4(i)=x(3,nc4)
120 x5(i)=x(1,nc5)
121 y5(i)=x(2,nc5)
122 z5(i)=x(3,nc5)
123 x6(i)=x(1,nc6)
124 y6(i)=x(2,nc6)
125 z6(i)=x(3,nc6)
126 x7(i)=x(1,nc7)
127 y7(i)=x(2,nc7)
128 z7(i)=x(3,nc7)
129 x8(i)=x(1,nc8)
130 y8(i)=x(2,nc8)
131 z8(i)=x(3,nc8)
132 END DO
133C-----------
134C isoparametric system (non orthomalized)
135 CALL srepisot3(
136 1 x1, x2, x3, x4,
137 2 x5, x6, x7, x8,
138 3 y1, y2, y3, y4,
139 4 y5, y6, y7, y8,
140 5 z1, z2, z3, z4,
141 6 z5, z6, z7, z8,
142 7 rx, ry, rz, sx,
143 8 sy, sz, tx, ty,
144 9 tz, nel)
145
146C-----------
147C GLOBAL => Corotational
148 IF (jhbe == 14 .OR. jhbe == 24) THEN
149 CALL sortho3(
150 1 rx, ry, rz, sx,
151 2 sy, sz, tx, ty,
152 3 tz, r12, r13, r11,
153 4 r22, r23, r21, r32,
154 5 r33, r31, nel)
155 ELSEIF (jhbe == 15 ) THEN
156 CALL scortho3(
157 1 rx, ry, rz, sx,
158 2 sy, sz, tx, ty,
159 3 tz, r11, r12, r13,
160 4 r21, r22, r23, r31,
161 5 r32, r33, nel)
162 ELSEIF(jcvt /= 0)THEN
163 CALL sortho3(
164 1 rx, ry, rz, sx,
165 2 sy, sz, tx, ty,
166 3 tz, r11, r12, r13,
167 4 r21, r22, r23, r31,
168 5 r32, r33, nel)
169 ENDIF
170C-----------
171C orthomalized isoparametric system
172 DO i=lft,llt
173 rr =sqrt(rx(i)**2+ry(i)**2+rz(i)**2)
174 rx(i)=rx(i)/max(em30,rr)
175 ry(i)=ry(i)/max(em30,rr)
176 rz(i)=rz(i)/max(em30,rr)
177 END DO
178 DO i=lft,llt
179 tx(i)=ry(i)*sz(i)-rz(i)*sy(i)
180 ty(i)=rz(i)*sx(i)-rx(i)*sz(i)
181 tz(i)=rx(i)*sy(i)-ry(i)*sx(i)
182 rr =sqrt(tx(i)**2+ty(i)**2+tz(i)**2)
183 tx(i)=tx(i)/max(em30,rr)
184 ty(i)=ty(i)/max(em30,rr)
185 tz(i)=tz(i)/max(em30,rr)
186 END DO
187 DO i=lft,llt
188 sx(i)=ty(i)*rz(i)-tz(i)*ry(i)
189 sy(i)=tz(i)*rx(i)-tx(i)*rz(i)
190 sz(i)=tx(i)*ry(i)-ty(i)*rx(i)
191 rr =sqrt(sx(i)**2+sy(i)**2+sz(i)**2)
192 sx(i)=sx(i)/max(em30,rr)
193 sy(i)=sy(i)/max(em30,rr)
194 sz(i)=sz(i)/max(em30,rr)
195 END DO
196C-----------
197C ORTHOTROPIC FRAME.
198C-----------
199 IF (isorth /= 0) THEN
200 IF (jcvt == 0) THEN
201 DO i=lft,llt
202 g11=gama(i,1)
203 g21=gama(i,2)
204 g31=gama(i,3)
205 g12=gama(i,4)
206 g22=gama(i,5)
207 g32=gama(i,6)
208 g13=g21*g32-g31*g22
209 g23=g31*g12-g11*g32
210 g33=g11*g22-g21*g12
211C MATRICE DE PASSAGE GLOBAL -> ORTHOTROPE.
212 t11(i)=rx(i)*g11+sx(i)*g21+tx(i)*g31
213 t12(i)=rx(i)*g12+sx(i)*g22+tx(i)*g32
214 t13(i)=rx(i)*g13+sx(i)*g23+tx(i)*g33
215 t21(i)=ry(i)*g11+sy(i)*g21+ty(i)*g31
216 t22(i)=ry(i)*g12+sy(i)*g22+ty(i)*g32
217 t23(i)=ry(i)*g13+sy(i)*g23+ty(i)*g33
218 t31(i)=rz(i)*g11+sz(i)*g21+tz(i)*g31
219 t32(i)=rz(i)*g12+sz(i)*g22+tz(i)*g32
220 t33(i)=rz(i)*g13+sz(i)*g23+tz(i)*g33
221 END DO
222 ELSE
223 DO i=lft,llt
224 g11=gama(i,1)
225 g21=gama(i,2)
226 g31=gama(i,3)
227 g12=gama(i,4)
228 g22=gama(i,5)
229 g32=gama(i,6)
230 g13=g21*g32-g31*g22
231 g23=g31*g12-g11*g32
232 g33=g11*g22-g21*g12
233C MATRICE DE PASSAGE GLOBAL -> ORTHOTROPE.
234 t11(i)=r11(i)*g11+r12(i)*g21+r13(i)*g31
235 t12(i)=r11(i)*g12+r12(i)*g22+r13(i)*g32
236 t13(i)=r11(i)*g13+r12(i)*g23+r13(i)*g33
237 t21(i)=r21(i)*g11+r22(i)*g21+r23(i)*g31
238 t22(i)=r21(i)*g12+r22(i)*g22+r23(i)*g32
239 t23(i)=r21(i)*g13+r22(i)*g23+r23(i)*g33
240 t31(i)=r31(i)*g11+r32(i)*g21+r33(i)*g31
241 t32(i)=r31(i)*g12+r32(i)*g22+r33(i)*g32
242 t33(i)=r31(i)*g13+r32(i)*g23+r33(i)*g33
243 END DO
244 ENDIF
245 ENDIF
246C
247 IF (jhbe==24) THEN
248 DO i=lft,llt
249 xl=r11(i)*x1(i)+r21(i)*y1(i)+r31(i)*z1(i)
250 yl=r12(i)*x1(i)+r22(i)*y1(i)+r32(i)*z1(i)
251 zl=r13(i)*x1(i)+r23(i)*y1(i)+r33(i)*z1(i)
252 x1(i)=xl
253 y1(i)=yl
254 z1(i)=zl
255 xl=r11(i)*x2(i)+r21(i)*y2(i)+r31(i)*z2(i)
256 yl=r12(i)*x2(i)+r22(i)*y2(i)+r32(i)*z2(i)
257 zl=r13(i)*x2(i)+r23(i)*y2(i)+r33(i)*z2(i)
258 x2(i)=xl
259 y2(i)=yl
260 z2(i)=zl
261 xl=r11(i)*x3(i)+r21(i)*y3(i)+r31(i)*z3(i)
262 yl=r12(i)*x3(i)+r22(i)*y3(i)+r32(i)*z3(i)
263 zl=r13(i)*x3(i)+r23(i)*y3(i)+r33(i)*z3(i)
264 x3(i)=xl
265 y3(i)=yl
266 z3(i)=zl
267 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
268 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
269 zl=r13(i)*x4(i)+r23(i)*y4(i)+r33(i)*z4(i)
270 x4(i)=xl
271 y4(i)=yl
272 z4(i)=zl
273 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
274 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
275 zl=r13(i)*x5(i)+r23(i)*y5(i)+r33(i)*z5(i)
276 x5(i)=xl
277 y5(i)=yl
278 z5(i)=zl
279 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
280 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
281 zl=r13(i)*x6(i)+r23(i)*y6(i)+r33(i)*z6(i)
282 x6(i)=xl
283 y6(i)=yl
284 z6(i)=zl
285 xl=r11(i)*x7(i)+r21(i)*y7(i)+r31(i)*z7(i)
286 yl=r12(i)*x7(i)+r22(i)*y7(i)+r32(i)*z7(i)
287 zl=r13(i)*x7(i)+r23(i)*y7(i)+r33(i)*z7(i)
288 x7(i)=xl
289 y7(i)=yl
290 z7(i)=zl
291 xl=r11(i)*x8(i)+r21(i)*y8(i)+r31(i)*z8(i)
292 yl=r12(i)*x8(i)+r22(i)*y8(i)+r32(i)*z8(i)
293 zl=r13(i)*x8(i)+r23(i)*y8(i)+r33(i)*z8(i)
294 x8(i)=xl
295 y8(i)=yl
296 z8(i)=zl
297 ENDDO
298C
299 DO i=lft,llt
300 jr0(i) = -x1(i)+x2(i)+x3(i)-
301 . x4(i)-x5(i)+x6(i)+
302 . x7(i)-x8(i)
303 js0(i) = -y1(i)-y2(i)+y3(i)+
304 . y4(i)-y5(i)-y6(i)+
305 . y7(i)+y8(i)
306 jt0(i) = -z1(i)-z2(i)-z3(i)-
307 . z4(i)+z5(i)+z6(i)+
308 . z7(i)+z8(i)
309 ENDDO
310 ENDIF
311C-----------
312 RETURN
313 END
#define max(a, b)
Definition macros.h:21
subroutine srep2glo(x, ixs, gama, rx, ry, rz, sx, sy, sz, tx, ty, tz, r11, r12, r13, r21, r22, r23, r31, r32, r33, t11, t12, t13, t21, t22, t23, t31, t32, t33, jr0, js0, jt0, nel, lft, llt, jhbe, jcvt, isorth)
Definition srep2glo.F:45
subroutine srepisot3(x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, nel)
Definition srepisot3.F:42
subroutine sortho3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
Definition sortho3.F:33
subroutine scortho3(x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
Definition scortho3.F:34