OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
q4coor2.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!|| q4rcoor2 ../starter/source/elements/solid_2d/quad4/q4coor2.F
25!||--- called by ------------------------------------------------------
26!|| q4init2 ../starter/source/elements/solid_2d/quad4/q4init2.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE q4rcoor2(X,IXQ,NGL ,MXT ,
30 . PID, IX1, IX2, IX3, IX4,
31 . Y1, Y2, Y3, Y4,
32 . Z1, Z2, Z3, Z4,YAVG,Y234,Y124,
33 . SY, SZ, TY, TZ, E1Y, E1Z , E2Y, E2Z)
34 use element_mod , only : nixq
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C G l o b a l P a r a m e t e r s
41C-----------------------------------------------
42#include "mvsiz_p.inc"
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "vect01_c.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER IXQ(NIXQ,*), NGL(*), MXT(*), PID(*)
51 INTEGER IX1(*), IX2(*), IX3(*), IX4(*)
52 my_real
53 . X(3,*),E1Y(*),E1Z(*),E2Y(*),E2Z(*)
54 my_real
55 . y1(*), y2(*), y3(*), y4(*),
56 . z1(*), z2(*), z3(*), z4(*),yavg(*),y234(*),y124(*)
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60 INTEGER I
61 my_real
62 . SY(MVSIZ) ,SZ(MVSIZ) ,
63 . TY(MVSIZ) ,TZ(MVSIZ), SUMA,CT,CS
64C--------------------------------------------------
65C connectivities and material
66C--------------------------------------------------
67 DO i=lft,llt
68 mxt(i)=ixq(1,i)
69 ix1(i)=ixq(2,i)
70 ix2(i)=ixq(3,i)
71 ix3(i)=ixq(4,i)
72 ix4(i)=ixq(5,i)
73 pid(i)=ixq(6,i)
74 ngl(i)=ixq(nixq,i)
75 END DO
76C
77C----------------------------
78C NODE COORDINATES |
79C----------------------------
80 DO i=lft,llt
81 y1(i)=x(2,ix1(i))
82 z1(i)=x(3,ix1(i))
83 y2(i)=x(2,ix2(i))
84 z2(i)=x(3,ix2(i))
85 y3(i)=x(2,ix3(i))
86 z3(i)=x(3,ix3(i))
87 y4(i)=x(2,ix4(i))
88 z4(i)=x(3,ix4(i))
89 END DO
90 DO i=lft,llt
91 yavg(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
92 y234(i)=y2(i)+y3(i)+y4(i)
93 y124(i)=y1(i)+y2(i)+y4(i)
94 END DO
95C---------------------------------------
96C LOCAL REFERENCE FRAME (ISOPARAMETRIC)
97C---------------------------------------
98 DO i=lft,llt
99 sy(i)=half*(y2(i)+y3(i)-y1(i)-y4(i))
100 sz(i)=half*(z2(i)+z3(i)-z1(i)-z4(i))
101 ty(i)=half*(y3(i)+y4(i)-y1(i)-y2(i))
102 tz(i)=half*(z3(i)+z4(i)-z1(i)-z2(i))
103 END DO
104C-----------
105C convected frame ORTHOGONALIZED
106C full integ: Same than the shell
107C-----------
108 DO i=lft,llt
109 ct = ty(i)*ty(i)+tz(i)*tz(i)
110 cs = sy(i)*sy(i)+sz(i)*sz(i)
111 IF(cs /= zero) THEN
112 suma = sqrt(ct/max(em20,cs))
113 e1y(i) = sy(i)*suma + tz(i)
114 e1z(i) = sz(i)*suma - ty(i)
115 ELSEIF(ct /= zero)THEN
116 suma = sqrt(cs/max(em20,ct))
117 e1y(i) = sy(i) + tz(i)*suma
118 e1z(i) = sz(i) - ty(i)*suma
119 END IF
120 suma=sqrt(e1y(i)**2+e1z(i)**2)
121 suma=one/max(suma,em20)
122 e1y(i)=e1y(i)*suma
123 e1z(i)=e1z(i)*suma
124 e2y(i)=-e1z(i)
125 e2z(i)= e1y(i)
126 ENDDO
127c
128 RETURN
129 END
#define max(a, b)
Definition macros.h:21
subroutine q4rcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, yavg, y234, y124, sy, sz, ty, tz, e1y, e1z, e2y, e2z)
Definition q4coor2.F:34