OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
qrdefo2.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!|| qrdefo2 ../engine/source/elements/solid_2d/quad/qrdefo2.F
25!||--- called by ------------------------------------------------------
26!|| qforc2 ../engine/source/elements/solid_2d/quad/qforc2.F
27!||====================================================================
28 SUBROUTINE qrdefo2(
29 1 V, Y1, Y2, Y3,
30 2 Y4, Z1, Z2, Z3,
31 3 Z4, VY1, VY2, VY3,
32 4 VY4, VZ1, VZ2, VZ3,
33 5 VZ4, PY1, PY2, PZ1,
34 6 PZ2, WYZ, DYZ, DZY,
35 7 EYY, EZZ, ETT, EYZ,
36 8 EYT, EZT, RX, RY,
37 9 RZ, SX, SY, SZ,
38 A TX, TY, TZ, VOLN,
39 B AIRE, AIREM, NC1, NC2,
40 C NC3, NC4, R22, R23,
41 D R32, R33, NEL, JCVT)
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER, INTENT(IN) :: NEL
54 INTEGER, INTENT(IN) :: JCVT
55C REAL
56 my_real
57 . V(3,*),
58 . Y1(*),Y2(*),Y3(*),Y4(*),Z1(*),Z2(*),Z3(*),Z4(*),
59 . VY1(*),VY2(*),VY3(*),VY4(*),VZ1(*),VZ2(*),VZ3(*),VZ4(*),
60 . PY1(*), PY2(*), PZ1(*), PZ2(*),
61 . WYZ(*), DYZ(*), DZY(*),
62 . EYY(*),EZZ(*), ETT(*), EYZ(*), EYT(*), EZT(*),
63 . RX(*),RY(*), RZ(*), SX(*), SY(*), SZ(*), TX(*), TY(*), TZ(*),
64 . VOLN(*),AIRE(*),AIREM(*),
65 . R22(*),R23(*),R32(*),R33(*)
66C
67 INTEGER NC1(*), NC2(*), NC3(*), NC4(*)
68C-----------------------------------------------
69C C o m m o n B l o c k s
70C-----------------------------------------------
71#include "com01_c.inc"
72#include "com08_c.inc"
73C-----------------------------------------------
74C L o c a l V a r i a b l e s
75C-----------------------------------------------
76 INTEGER I
77C REAL
78 my_real
79 . VY13(MVSIZ), VY24(MVSIZ), VZ13(MVSIZ),VZ24(MVSIZ),
80 . ym1(mvsiz), ym2(mvsiz), ym3(mvsiz), ym4(mvsiz),
81 . zm1(mvsiz), zm2(mvsiz), zm3(mvsiz), zm4(mvsiz),
82 . yavg(mvsiz),a1(mvsiz) , a2(mvsiz), zavg(mvsiz),
83 . vyg(mvsiz),vy,vz,y,z
84C-----------------------------------------------
85C
86C JCVT/=0 Lagrangian case only
87 DO i=1,nel
88 vy1(i)=v(2,nc1(i))
89 vz1(i)=v(3,nc1(i))
90 vy2(i)=v(2,nc2(i))
91 vz2(i)=v(3,nc2(i))
92 vy3(i)=v(2,nc3(i))
93 vz3(i)=v(3,nc3(i))
94 vy4(i)=v(2,nc4(i))
95 vz4(i)=v(3,nc4(i))
96 END DO
97C
98 DO i=1,nel
99 vy=r22(i)*vy1(i)+r32(i)*vz1(i)
100 vz=r23(i)*vy1(i)+r33(i)*vz1(i)
101 vy1(i)=vy
102 vz1(i)=vz
103 vy=r22(i)*vy2(i)+r32(i)*vz2(i)
104 vz=r23(i)*vy2(i)+r33(i)*vz2(i)
105 vy2(i)=vy
106 vz2(i)=vz
107 vy=r22(i)*vy3(i)+r32(i)*vz3(i)
108 vz=r23(i)*vy3(i)+r33(i)*vz3(i)
109 vy3(i)=vy
110 vz3(i)=vz
111 vy=r22(i)*vy4(i)+r32(i)*vz4(i)
112 vz=r23(i)*vy4(i)+r33(i)*vz4(i)
113 vy4(i)=vy
114 vz4(i)=vz
115 END DO
116C
117 DO i=1,nel
118 py1(i)=half*(z2(i)-z4(i))
119 py2(i)=half*(z3(i)-z1(i))
120 pz1(i)=half*(y4(i)-y2(i))
121 pz2(i)=half*(y1(i)-y3(i))
122 END DO
123C
124 DO i=1,nel
125 a1(i) =y2(i)*(z3(i)-z4(i))+y3(i)*(z4(i)-z2(i))+
126 & y4(i)*(z2(i)-z3(i))
127 a2(i) =y2(i)*(z4(i)-z1(i))+y4(i)*(z1(i)-z2(i))+
128 & y1(i)*(z2(i)-z4(i))
129 airem(i)=(a1(i)+a2(i))*half
130C AUTRE FORMULE AIREM(I)=2.*(PZ2(I)*PY1(I)-PZ1(I)*PY2(I))
131 END DO
132C
133 IF(n2d==1)THEN
134 DO i=1,nel
135 y =y1(i)+y2(i)+y3(i)+y4(i)
136 z =z1(i)+z2(i)+z3(i)+z4(i)
137 yavg(i) =r22(i)*y+r23(i)*z
138 END DO
139 END IF
140C
141 DO i=1,nel
142 vy13(i)=vy1(i)-vy3(i)
143 vy24(i)=vy2(i)-vy4(i)
144 vz13(i)=vz1(i)-vz3(i)
145 vz24(i)=vz2(i)-vz4(i)
146 END DO
147C
148 DO i=1,nel
149 IF(airem(i)>zero) THEN
150 eyy(i)=(py1(i)*vy13(i)+py2(i)*vy24(i))/airem(i)
151 ezz(i)=(pz1(i)*vz13(i)+pz2(i)*vz24(i))/airem(i)
152 ett(i)=zero
153 dzy(i)=(py1(i)*vz13(i)+py2(i)*vz24(i))/airem(i)
154 dyz(i)=(pz1(i)*vy13(i)+pz2(i)*vy24(i))/airem(i)
155 eyt(i)=zero
156 ezt(i)=zero
157 ELSE
158 eyy(i)=zero
159 ezz(i)=zero
160 ett(i)=zero
161 dzy(i)=zero
162 dyz(i)=zero
163 eyt(i)=zero
164 ezt(i)=zero
165 END IF
166 END DO
167C
168 IF(n2d==1) THEN
169 DO i=1,nel
170 IF (yavg(i)>zero)THEN
171 vy=vy1(i)+vy2(i)+vy3(i)+vy4(i)
172 vz=vz1(i)+vz2(i)+vz3(i)+vz4(i)
173 vyg(i) =r22(i)*vy+r23(i)*vz
174 ett(i)=vyg(i)/yavg(i)
175 END IF
176 END DO
177 ENDIF
178C
179C correction due to rotation of the skew:
180 DO i=1,nel
181 eyz(i) = dyz(i)+dzy(i)
182 . -dt1*(eyy(i)*dyz(i)+dzy(i)*ezz(i))
183 eyy(i) = eyy(i)
184 . -0.5*dt1*(eyy(i)*eyy(i)+dzy(i)*dzy(i))
185 ezz(i) = ezz(i)
186 . -0.5*dt1*(ezz(i)*ezz(i)+dyz(i)*dyz(i))
187 ett(i) = ett(i)
188C pas de rotation => pas de terme . -0.5*DT1*ETT(I)*ETT(I)
189 wyz(i)= zero
190 ENDDO
191C---------------------------------------
192C REPERE LOCAL POUR MATERIAUX NON ISOTROPES
193C---------------------------------------
194 DO 90 i=1,nel
195 rx(i)=one
196 ry(i)=zero
197 rz(i)=zero
198 sx(i)=zero
199 sy(i)=-pz1(i)-pz2(i)
200 sz(i)=+py1(i)+py2(i)
201 tx(i)=zero
202 ty(i)=+pz1(i)-pz2(i)
203 tz(i)=-py1(i)+py2(i)
204 90 CONTINUE
205C
206 RETURN
207 END
subroutine qrdefo2(v, y1, y2, y3, y4, z1, z2, z3, z4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, py1, py2, pz1, pz2, wyz, dyz, dzy, eyy, ezz, ett, eyz, eyt, ezt, rx, ry, rz, sx, sy, sz, tx, ty, tz, voln, aire, airem, nc1, nc2, nc3, nc4, r22, r23, r32, r33, nel, jcvt)
Definition qrdefo2.F:42