OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
qrota_vect.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!|| qrota_vect ../engine/source/output/anim/generate/qrota_vect.F
25!||--- called by ------------------------------------------------------
26!|| h3d_quad_vector ../engine/source/output/h3d/h3d_results/h3d_quad_vector.F
27!||====================================================================
28 SUBROUTINE qrota_vect(X, IXQ, KCVT, VECT, GAMA, NEL)
29C-----------------------------------------------
30C I m p l i c i t T y p e s
31C-----------------------------------------------
32#include "implicit_f.inc"
33C-----------------------------------------------
34C G l o b a l P a r a m e t e r s
35C-----------------------------------------------
36#include "mvsiz_p.inc"
37C-----------------------------------------------
38C D u m m y A r g u m e n t s
39C-----------------------------------------------
41 . x(3,*),vect(3,*),gama(6,*)
42 INTEGER IXQ(NIXQ,*), KCVT, NEL
43C-----------------------------------------------
44C L o c a l V a r i a b l e s
45C-----------------------------------------------
47 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
48 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
49 . r22(mvsiz),r23(mvsiz),r32(mvsiz),r33(mvsiz),
50 . sy(mvsiz),sz(mvsiz),ty(mvsiz),tz(mvsiz),
51 . ct,cs,suma,s1,s2,s3
52 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ)
53 INTEGER I
54C-----------------------------------------------
55 IF (kcvt == 0) THEN
56 DO i=1,nel
57 nc1(i)=ixq(2,i)
58 nc2(i)=ixq(3,i)
59 nc3(i)=ixq(4,i)
60 nc4(i)=ixq(5,i)
61C----------------------------
62C COORDONNEES NODALES
63C----------------------------
64 y1(i)=x(2,nc1(i))
65 z1(i)=x(3,nc1(i))
66 y2(i)=x(2,nc2(i))
67 z2(i)=x(3,nc2(i))
68 y3(i)=x(2,nc3(i))
69 z3(i)=x(3,nc3(i))
70 y4(i)=x(2,nc4(i))
71 z4(i)=x(3,nc4(i))
72C---------------------------------------
73C REPERE LOCAL (ISOPARAMETRIQUE)
74C---------------------------------------
75 sy(i)=half*(y2(i)+y3(i)-y1(i)-y4(i))
76 sz(i)=half*(z2(i)+z3(i)-z1(i)-z4(i))
77 ty(i)=half*(y3(i)+y4(i)-y1(i)-y2(i))
78 tz(i)=half*(z3(i)+z4(i)-z1(i)-z2(i))
79 ENDDO
80C-----------
81C REPERE CONVECTE
82C-----------
83 DO i=1,nel
84 ct = ty(i)*ty(i)+tz(i)*tz(i)
85 cs = sy(i)*sy(i)+sz(i)*sz(i)
86 IF(cs /= zero) THEN
87 suma = sqrt(ct/max(em20,cs))
88 sy(i) = sy(i)*suma + tz(i)
89 sz(i) = sz(i)*suma - ty(i)
90 ELSEIF(ct /= zero)THEN
91 suma = sqrt(cs/max(em20,ct))
92 sy(i) = sy(i) + tz(i)*suma
93 sz(i) = sz(i) - ty(i)*suma
94 END IF
95 suma=one/max(sqrt(sy(i)**2+sz(i)**2),em20)
96 sy(i)=sy(i)*suma
97 sz(i)=sz(i)*suma
98C-----------
99C MATRICE DE PASSAGE GLOBAL -> CONVECTE
100C-----------
101 r22(i)= sy(i)
102 r32(i)=-sz(i)
103 r23(i)= sz(i)
104 r33(i)= sy(i)
105 ENDDO
106 END IF
107c
108 DO i=1,nel
109C-----------
110C CHANGEMENT DE REPERE
111C-----------
112 s1=vect(1,i)
113 s2=vect(2,i)
114 s3=vect(3,i)
115 vect(1,i)=s2*r22(i)+s3*r23(i)
116 vect(2,i)=s2*r32(i)+s3*r33(i)
117 vect(3,i)=zero
118 ENDDO
119C-----------
120 RETURN
121 END
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
subroutine qrota_vect(x, ixq, kcvt, vect, gama, nel)
Definition qrota_vect.F:29