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

Go to the source code of this file.

Functions/Subroutines

subroutine shell_rota (i, ilay, nel, iorth, ity, igtyp, mlw, jdir, sig, elbuf_str, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, dir_a, dir_b)
subroutine shell_local_frame (jft, jlt, ity, ihbe, igtyp, ixc, ixtg, nft, x, offg, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)

Function/Subroutine Documentation

◆ shell_local_frame()

subroutine shell_local_frame ( integer jft,
integer jlt,
integer ity,
integer ihbe,
integer igtyp,
integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
integer nft,
x,
offg,
rx,
ry,
rz,
sx,
sy,
sz,
e1x,
e2x,
e3x,
e1y,
e2y,
e3y,
e1z,
e2z,
e3z )

Definition at line 223 of file shell_rota.F.

228C-----------------------------------------------
229C M o d u l e s
230C-----------------------------------------------
231 USE elbufdef_mod
232C-----------------------------------------------
233C I m p l i c i t T y p e s
234C-----------------------------------------------
235#include "implicit_f.inc"
236C-----------------------------------------------
237C G l o b a l P a r a m e t e r s
238C-----------------------------------------------
239#include "mvsiz_p.inc"
240#include "com01_c.inc"
241C-----------------------------------------------
242C D u m m y A r g u m e n t s
243C-----------------------------------------------
244 INTEGER NEL, ITY, NFT ,JFT, JLT , IHBE, IGTYP ,
245 . IXC(NIXC,*), IXTG(NIXTG,*)
246 my_real x(3,*), offg(*)
247 my_real
248 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
249 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
250 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
251 . rx(mvsiz), ry(mvsiz), rz(mvsiz),
252 . sx(mvsiz), sy(mvsiz), sz(mvsiz)
253C-----------------------------------------------
254C L o c a l V a r i a b l e s
255C-----------------------------------------------
256 INTEGER I , K, I1,I2,I3,I4,IREL
257 my_real
258 . suma(mvsiz)
259
260C--------------------------------------
261C LOCAL ELEMENT FRAME COMPUTING
262C--------------------------------------
263
264 IF (ity == 3) THEN
265C------------------------
266C shells 4 nodes
267C-------------------------
268
269 IF (ihbe>10.OR.igtyp==16.OR.ishfram ==0) THEN
270 irel=0
271 ELSEIF (ishfram ==1) THEN
272 irel=2
273 ELSE
274 irel=1
275 END IF
276
277 DO i=jft,jlt
278 i1=ixc(2,i+nft)
279 i2=ixc(3,i+nft)
280 i3=ixc(4,i+nft)
281 i4=ixc(5,i+nft)
282
283 rx(i)=x(1,i2)+x(1,i3)-x(1,i1)-x(1,i4)
284 sx(i)=x(1,i3)+x(1,i4)-x(1,i1)-x(1,i2)
285 ry(i)=x(2,i2)+x(2,i3)-x(2,i1)-x(2,i4)
286 sy(i)=x(2,i3)+x(2,i4)-x(2,i1)-x(2,i2)
287 rz(i)=x(3,i2)+x(3,i3)-x(3,i1)-x(3,i4)
288 sz(i)=x(3,i3)+x(3,i4)-x(3,i1)-x(3,i2)
289 ENDDO
290C----------------------------
291C LOCAL SYSTEM
292C----------------------------
293 CALL clskew3(jft,jlt,irel,
294 . rx, ry, rz,
295 . sx, sy, sz,
296 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,suma,offg )
297
298 ELSE
299
300C---------------------
301C shells 3 nodes
302C---------------------
303
304 IF (ihbe>=30) THEN
305 irel=0
306 ELSE
307 irel=2
308 END IF
309
310
311 DO i=jft,jlt
312 i1=ixtg(2,i+nft)
313 i2=ixtg(3,i+nft)
314 i3=ixtg(4,i+nft)
315
316 rx(i)=x(1,i2)-x(1,i1)
317 ry(i)=x(2,i2)-x(2,i1)
318 rz(i)=x(3,i2)-x(3,i1)
319 sx(i)=x(1,i3)-x(1,i1)
320 sy(i)=x(2,i3)-x(2,i1)
321 sz(i)=x(3,i3)-x(3,i1)
322 ENDDO
323C----------------------------
324C LOCAL SYSTEM
325C----------------------------
326 CALL clskew3(jft,jlt,irel,
327 . rx, ry, rz,
328 . sx, sy, sz,
329 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,suma,offg )
330
331 ENDIF
332C
333C
334C-----------------------------------------------
335 RETURN
subroutine clskew3(jft, jlt, irep, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, det)
Definition clskew.F:34
#define my_real
Definition cppsort.cpp:32

◆ shell_rota()

subroutine shell_rota ( integer i,
integer ilay,
integer nel,
integer iorth,
integer ity,
integer igtyp,
integer mlw,
integer jdir,
sig,
type (elbuf_struct_), target elbuf_str,
rx,
ry,
rz,
sx,
sy,
sz,
e1x,
e2x,
e3x,
e1y,
e2y,
e3y,
e1z,
e2z,
e3z,
dir_a,
dir_b )

Definition at line 30 of file shell_rota.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE elbufdef_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER NEL, ILAY,I , NS1,ITY, IORTH, IGTYP,MLW ,JDIR
52 my_real sig(6)
54 . rx(mvsiz), ry(mvsiz), rz(mvsiz),
55 . sx(mvsiz), sy(mvsiz), sz(mvsiz),
56 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
57 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
58 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
59 . dir_a(*) ,dir_b(*)
60
61 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER ILAW , II
66 my_real
67 . dir(2),
68 . v1,v2,v3,vr,vs,aa,bb,suma,
69 . r1,s1,s2,r2,rs1,rs2,r12a,r22a,s12b,s22b,
70 . rs3,r3r3,s3s3,t1,t2,t3,s3,s4,s5,
71 . l11,l12,l13,l22,l23,l33,
72 . r11,r12,r13,r21,r22,r23,r31,r32,r33,
73 . s11,s12,s21,s13,s31,s22,s23,s32,s33
74 my_real,
75 . DIMENSION(:) , POINTER :: dir1
76C=======================================================================
77C*******************************************
78C Rotate to global system
79C*******************************************
80
81 IF(ilay > 0 ) THEN
82 ilaw = elbuf_str%BUFLY(ilay)%ILAW
83 ELSE
84 ilaw = mlw
85 ENDIF
86C-----------------------------------
87C Rotation orthotrop > Element
88C------------------------------------
89 IF (iorth > 0) THEN
90
91 IF (igtyp == 16) THEN
92 ii = jdir + i-1
93 r1 = dir_a(ii)
94 s1 = dir_a(ii+nel)
95 r2 = dir_b(ii)
96 s2 = dir_b(ii+nel)
97
98 rs1= r1*s1
99 rs2= r2*s2
100 r12a = r1*r1
101 r22a = r2*r2
102 s12b = s1*s1
103 s22b = s2*s2
104
105 rs3 = s1*s2-r1*r2
106 r3r3= one+s1*r2+r1*s2
107 r3r3= half*r3r3
108 s3s3= one-s1*r2-r1*s2
109 s3s3= half*s3s3
110 t1 = sig(1)
111 t2 = sig(2)
112 t3 = sig(3)
113 sig(1) = r12a*t1 + r22a*t2 - rs3*t3
114 sig(2) = s12b*t1 + s22b*t2 + rs3*t3
115 sig(3) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
116c
117 ELSEIF ((igtyp == 51 .OR. igtyp == 52) .AND. ilaw == 58) THEN
118 ii = jdir + i-1
119 r1 = dir_a(ii)
120 s1 = dir_a(ii+nel)
121 r2 = dir_b(ii)
122 s2 = dir_b(ii+nel)
123c
124 rs1= r1*s1
125 rs2= r2*s2
126 r12a = r1*r1
127 r22a = r2*r2
128 s12b = s1*s1
129 s22b = s2*s2
130 rs3 = s1*s2-r1*r2
131 r3r3= one+s1*r2+r1*s2
132 r3r3= half*r3r3
133 s3s3= one-s1*r2-r1*s2
134 s3s3= half*s3s3
135 t1 = sig(1)
136 t2 = sig(2)
137 t3 = sig(3)
138c
139 sig(1) = r12a*t1 + r22a*t2 - rs3*t3
140 sig(2) = s12b*t1 + s22b*t2 + rs3*t3
141 sig(3) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
142 ELSE
143 IF (ilaw /= 1 .and. ilaw /= 2 .and. ilaw /= 19 .and. ilaw /= 27 .and. ilaw /= 32) THEN
144 ii = jdir + i-1
145 dir(1) = dir_a(ii)
146 dir(2) = dir_a(ii+nel)
147 s1 = dir(1)*dir(1)*sig(1)
148 . + dir(2)*dir(2)*sig(2)
149 . -two*dir(1)*dir(2)*sig(3)
150 s2 = dir(2)*dir(2)*sig(1)
151 . + dir(1)*dir(1)*sig(2)
152 . +two*dir(2)*dir(1)*sig(3)
153 s3 = dir(1)*dir(2)*sig(1)
154 . - dir(2)*dir(1)*sig(2)
155 . +(dir(1)*dir(1)-dir(2)*dir(2))*sig(3)
156 s4 = dir(2)*sig(5)+dir(1)*sig(4)
157 s5 = dir(1)*sig(5)-dir(2)*sig(4)
158
159 sig(1)=s1
160 sig(2)=s2
161 sig(3)=s3
162 sig(4)=s4
163 sig(5)=s5
164 ENDIF
165 ENDIF
166
167 ENDIF
168C-----------------------------------
169C Rotation Element > Global
170C TENSOR ROTATION.
171C R passage Global -> Local.
172C R S Transpose(R)
173C------------------------------------
174
175 l11 =sig(1)
176 l22 =sig(2)
177 l33 =zero
178 l12 =sig(3)
179 l23 =sig(4)
180 l13 =sig(5)
181
182 r11 = e1x(i)
183 r12 = e1y(i)
184 r13 = e1z(i)
185
186 r21 = e2x(i)
187 r22 = e2y(i)
188 r23 = e2z(i)
189
190 r31 = e3x(i)
191 r32 = e3y(i)
192 r33 = e3z(i)
193
194 s11 =l11*r11+l12*r12+l13*r13
195 s12 =l11*r21+l12*r22+l13*r23
196 s13 =l11*r31+l12*r32+l13*r33
197 s21 =l12*r11+l22*r12+l23*r13
198 s22 =l12*r21+l22*r22+l23*r23
199 s23 =l12*r31+l22*r32+l23*r33
200 s31 =l13*r11+l23*r12
201 s32 =l13*r21+l23*r22
202 s33 =l13*r31+l23*r32
203
204 sig(1) =r11*s11+r12*s21+r13*s31
205 sig(2) =r21*s12+r22*s22+r23*s32
206 sig(3) =r31*s13+r32*s23+r33*s33
207 sig(4) =r11*s12+r12*s22+r13*s32
208 sig(5) =r21*s13+r22*s23+r23*s33
209 sig(6) =r11*s13+r12*s23+r13*s33
210C
211C-----------------------------------------------
212 RETURN