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