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