OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
qrota3.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!|| qrota3 ../engine/source/output/anim/generate/qrota3.F
25!||--- called by ------------------------------------------------------
26!|| thquad ../engine/source/output/th/thquad.F
27!||====================================================================
28 SUBROUTINE qrota3(
29 1 X, IXQ, KCVT, TENS,
30 2 GAMA, ISORTH)
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C C o m m o n B l o c k s
37C-----------------------------------------------
38C-----------------------------------------------
39C D u m m y A r g u m e n t s
40C-----------------------------------------------
41 INTEGER, INTENT(IN) :: ISORTH
42 my_real
43 . x(3,*),tens(6),gama(6)
44 INTEGER IXQ(NIXQ), KCVT
45C-----------------------------------------------
46C L o c a l V a r i a b l e s
47C-----------------------------------------------
48 my_real
49 . x1, x2, x3, x4,
50 . y1, y2, y3, y4,
51 . z1, z2, z3, z4,
52 . l11,l12,l13,l22,l23,l33,
53 . r22,r23,r32,r33,
54 . g22,g33,g23,g32,
55 . t22,t33,t23,t32,
56 . s11,s12,s21,s13,s31,s22,s23,s32,s33,
57 . sy,sz,ty,tz,ct,cs,suma,
58 . t1,t2,t3,t4,s1,s2,s3,s4
59 INTEGER NC1, NC2, NC3, NC4, N, I
60C-----------------------------------------------
61 nc1=ixq(2)
62 nc2=ixq(3)
63 nc3=ixq(4)
64 nc4=ixq(5)
65C----------------------------
66C COORDONNEES NODALES
67C----------------------------
68 y1=x(2,nc1)
69 z1=x(3,nc1)
70 y2=x(2,nc2)
71 z2=x(3,nc2)
72 y3=x(2,nc3)
73 z3=x(3,nc3)
74 y4=x(2,nc4)
75 z4=x(3,nc4)
76C-----------
77C REPERE CONVECTE
78C-----------
79 sy=half*(y2+y3-y1-y4)
80 sz=half*(z2+z3-z1-z4)
81 ty=half*(y3+y4-y1-y2)
82 tz=half*(z3+z4-z1-z2)
83 ct = ty*ty+tz*tz
84 cs = sy*sy+sz*sz
85 IF(cs /= zero) THEN
86 suma = sqrt(ct/max(em20,cs))
87 sy = sy*suma + tz
88 sz = sz*suma - ty
89 ELSEIF(ct /= zero)THEN
90 suma = sqrt(cs/max(em20,ct))
91 sy = sy + tz*suma
92 sz = sz - ty*suma
93 END IF
94 suma=one/max(sqrt(sy*sy+sz*sz),em20)
95 sy=sy*suma
96 sz=sz*suma
97C-----------
98C MATRICE DE PASSAGE GLOBAL -> CONVECTE
99C-----------
100 r22= sy
101 r32=-sz
102 r23= sz
103 r33= sy
104c
105 IF (isorth /= 0) THEN
106 IF (kcvt == 0) THEN
107 g22=gama(1)
108 g32=gama(2)
109 g23=gama(4)
110 g33=gama(5)
111C-----------
112c MATRICE DE PASSAGE GLOBAL -> ORTHOTROPE.
113C-----------
114 t22=r22*g22+r23*g32
115 t23=r22*g23+r23*g33
116 t32=r32*g22+r33*g32
117 t33=r32*g23+r33*g33
118 r22=t22
119 r23=t23
120 r32=t32
121 r33=t33
122 ELSEIF (kcvt /=0) THEN
123 g22=gama(2)
124 g32=gama(3)
125 g23=gama(5)
126 g33=gama(6)
127 t22=r22*g22+r23*g32
128 t23=r22*g23+r23*g33
129 t32=r32*g22+r33*g32
130 t33=r32*g23+r33*g33
131C-----------
132c MATRICE DE PASSAGE ORTHOTROPE -> GLOBAL
133C-----------
134 r22=t22
135 r23=t23
136 r32=t32
137 r33=t33
138 ENDIF
139 END IF
140C-----------
141C SIZE(TENS)=6 ON STOCKE COMME DES SOLIDES MAIS ON N'UTILISE QUE 1, 2 et 4
142C-----------
143 s1=tens(1)
144 s2=tens(2)
145 s4=tens(4)
146C-----------
147 IF (kcvt == 0) THEN
148C-----------
149C Rotation from GLOBAL FRAME TO CONVECTED OR ORTHO
150C-----------
151 t1=s1*r22+s4*r23
152 t2=s4*r32+s2*r33
153 t3=s1*r32+s4*r33
154 t4=s4*r22+s2*r23
155 tens(1)=r22*t1+r23*t4
156 tens(2)=r32*t3+r33*t2
157 tens(4)=r22*t3+r23*t2
158 ELSE
159C-----------
160C Rotation from CONVECTE FRAME OR ORTHO TO GLOBAL FRAME
161C-----------
162 t1=s1*r22-s4*r23
163 t2=-s4*r32+s2*r33
164 t3=-s1*r32+s4*r33
165 t4=s4*r22-s2*r23
166 tens(1)=r22*t1-r23*t4
167 tens(2)=-r32*t3+r33*t2
168 tens(4)=r22*t3-r23*t2
169 ENDIF
170C-----------
171 RETURN
172 END
#define max(a, b)
Definition macros.h:21
subroutine qrota3(x, ixq, kcvt, tens, gama, isorth)
Definition qrota3.F:31