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

Go to the source code of this file.

Functions/Subroutines

subroutine qrota_vect (x, ixq, kcvt, vect, gama, nel)

Function/Subroutine Documentation

◆ qrota_vect()

subroutine qrota_vect ( x,
integer, dimension(nixq,*) ixq,
integer kcvt,
vect,
gama,
integer nel )

Definition at line 30 of file qrota_vect.F.

31 use element_mod , only : nixq
32C-----------------------------------------------
33C I m p l i c i t T y p e s
34C-----------------------------------------------
35#include "implicit_f.inc"
36C-----------------------------------------------
37C G l o b a l P a r a m e t e r s
38C-----------------------------------------------
39#include "mvsiz_p.inc"
40C-----------------------------------------------
41C D u m m y A r g u m e n t s
42C-----------------------------------------------
44 . x(3,*),vect(3,*),gama(6,*)
45 INTEGER IXQ(NIXQ,*), KCVT, NEL
46C-----------------------------------------------
47C L o c a l V a r i a b l e s
48C-----------------------------------------------
50 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
51 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
52 . r22(mvsiz),r23(mvsiz),r32(mvsiz),r33(mvsiz),
53 . sy(mvsiz),sz(mvsiz),ty(mvsiz),tz(mvsiz),
54 . ct,cs,suma,s1,s2,s3
55 INTEGER NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ)
56 INTEGER I
57C-----------------------------------------------
58 IF (kcvt == 0) THEN
59 DO i=1,nel
60 nc1(i)=ixq(2,i)
61 nc2(i)=ixq(3,i)
62 nc3(i)=ixq(4,i)
63 nc4(i)=ixq(5,i)
64C----------------------------
65C NODE COORDINATES
66C----------------------------
67 y1(i)=x(2,nc1(i))
68 z1(i)=x(3,nc1(i))
69 y2(i)=x(2,nc2(i))
70 z2(i)=x(3,nc2(i))
71 y3(i)=x(2,nc3(i))
72 z3(i)=x(3,nc3(i))
73 y4(i)=x(2,nc4(i))
74 z4(i)=x(3,nc4(i))
75C---------------------------------------
76C LOCAL REFERENCE FRAME (ISOPARAMETRIC)
77C---------------------------------------
78 sy(i)=half*(y2(i)+y3(i)-y1(i)-y4(i))
79 sz(i)=half*(z2(i)+z3(i)-z1(i)-z4(i))
80 ty(i)=half*(y3(i)+y4(i)-y1(i)-y2(i))
81 tz(i)=half*(z3(i)+z4(i)-z1(i)-z2(i))
82 ENDDO
83C-----------
84C convected frame
85C-----------
86 DO i=1,nel
87 ct = ty(i)*ty(i)+tz(i)*tz(i)
88 cs = sy(i)*sy(i)+sz(i)*sz(i)
89 IF(cs /= zero) THEN
90 suma = sqrt(ct/max(em20,cs))
91 sy(i) = sy(i)*suma + tz(i)
92 sz(i) = sz(i)*suma - ty(i)
93 ELSEIF(ct /= zero)THEN
94 suma = sqrt(cs/max(em20,ct))
95 sy(i) = sy(i) + tz(i)*suma
96 sz(i) = sz(i) - ty(i)*suma
97 END IF
98 suma=one/max(sqrt(sy(i)**2+sz(i)**2),em20)
99 sy(i)=sy(i)*suma
100 sz(i)=sz(i)*suma
101C-----------
102C TRANSFORMATION MATRIX GLOBAL -> CONVECTED
103C-----------
104 r22(i)= sy(i)
105 r32(i)=-sz(i)
106 r23(i)= sz(i)
107 r33(i)= sy(i)
108 ENDDO
109 END IF
110c
111 DO i=1,nel
112C-----------
113C change of reference frame
114C-----------
115 s1=vect(1,i)
116 s2=vect(2,i)
117 s3=vect(3,i)
118 vect(1,i)=s2*r22(i)+s3*r23(i)
119 vect(2,i)=s2*r32(i)+s3*r33(i)
120 vect(3,i)=zero
121 ENDDO
122C-----------
123 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21