OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
epxle3.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!|| epxle3 ../engine/source/elements/solid/solide/epxle3.F
25!||--- called by ------------------------------------------------------
26!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
27!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
28!||--- uses -----------------------------------------------------
29!|| ale_mod ../common_source/modules/ale/ale_mod.F
30!|| alefvm_mod ../common_source/modules/ale/alefvm_mod.F
31!||====================================================================
32 SUBROUTINE epxle3(
33 1 VOL, VEUL, X1, X2,
34 2 X3, X4, X5, X6,
35 3 X7, X8, Y1, Y2,
36 4 Y3, Y4, Y5, Y6,
37 5 Y7, Y8, Z1, Z2,
38 6 Z3, Z4, Z5, Z6,
39 7 Z7, Z8, PX1, PX2,
40 8 PX3, PX4, PY1, PY2,
41 9 PY3, PY4, PZ1, PZ2,
42 A PZ3, PZ4, PX5, PX6,
43 B PX7, PX8, PY5, PY6,
44 C PY7, PY8, PZ5, PZ6,
45 D PZ7, PZ8, PX1H1, PX1H2,
46 E PX1H3, PX2H1, PX2H2, PX2H3,
47 F PX3H1, PX3H2, PX3H3, PX4H1,
48 G PX4H2, PX4H3, DET, DELTAX,
49 H N1X, N2X, N3X, N4X,
50 I N5X, N6X, N1Y, N2Y,
51 J N3Y, N4Y, N5Y, N6Y,
52 K N1Z, N2Z, N3Z, N4Z,
53 L N5Z, N6Z, NEL, NFT,
54 M JHBE)
55C-----------------------------------------------
56C M o d u l e s
57C-----------------------------------------------
58 USE alefvm_mod , only:alefvm_param
59 USE ale_mod
60C-----------------------------------------------
61C I m p l i c i t T y p e s
62C-----------------------------------------------
63#include "implicit_f.inc"
64C-----------------------------------------------
65C G l o b a l P a r a m e t e r s
66C-----------------------------------------------
67#include "mvsiz_p.inc"
68C-----------------------------------------------
69C C o m m o n B l o c k s
70C-----------------------------------------------
71#include "com01_c.inc"
72#include "param_c.inc"
73C-----------------------------------------------
74C D u m m y A r g u m e n t s
75C-----------------------------------------------
76 INTEGER, INTENT(IN) :: NEL
77 INTEGER, INTENT(IN) :: NFT
78 INTEGER, INTENT(IN) :: JHBE
79 my_real
80 . vol(*), veul(lveul,*),
81 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
82 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
83 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*),
84 . px1(*), px2(*), px3(*), px4(*),
85 . py1(*), py2(*), py3(*), py4(*),
86 . pz1(*), pz2(*), pz3(*), pz4(*),
87 . px5(*), px6(*), px7(*), px8(*),
88 . py5(*), py6(*), py7(*), py8(*),
89 . pz5(*), pz6(*), pz7(*), pz8(*),
90 . px1h1(*), px1h2(*), px1h3(*),
91 . px2h1(*), px2h2(*), px2h3(*),
92 . px3h1(*), px3h2(*), px3h3(*),
93 . px4h1(*), px4h2(*), px4h3(*),
94 . det(*),deltax(*)
95 my_real
96 . n1x(*), n2x(*), n3x(*), n4x(*), n5x(*), n6x(*),
97 . n1y(*), n2y(*), n3y(*), n4y(*), n5y(*), n6y(*),
98 . n1z(*), n2z(*), n3z(*), n4z(*), n5z(*), n6z(*)
99C-----------------------------------------------
100C L o c a l V a r i a b l e s
101C-----------------------------------------------
102 INTEGER I, II
103 my_real
104 . HX,HY,HZ,
105 . PMX1(MVSIZ), PMX2(MVSIZ), PMX3(MVSIZ), PMX4(MVSIZ),
106 . PMY1(MVSIZ), PMY2(MVSIZ), PMY3(MVSIZ), PMY4(MVSIZ),
107 . PMZ1(MVSIZ), PMZ2(MVSIZ), PMZ3(MVSIZ), PMZ4(MVSIZ)
108C-----------------------------------------------
109C S o u r c e L i n e s
110C-----------------------------------------------
111 IF(INTEG8==0)then
112 DO i=1,nel
113 ii=i+nft
114 px1(i)=veul(1,ii)
115 px2(i)=veul(2,ii)
116 px3(i)=veul(3,ii)
117 px4(i)=veul(4,ii)
118
119 py1(i)=veul(5,ii)
120 py2(i)=veul(6,ii)
121 py3(i)=veul(7,ii)
122 py4(i)=veul(8,ii)
123
124 pz1(i)=veul(9,ii)
125 pz2(i)=veul(10,ii)
126 pz3(i)=veul(11,ii)
127 pz4(i)=veul(12,ii)
128 ENDDO
129 ELSE
130 DO i=1,nel
131 ii=i+nft
132 px1(i)=veul(1,ii)
133 px2(i)=veul(2,ii)
134 px3(i)=veul(3,ii)
135 px4(i)=veul(4,ii)
136 px5(i)=veul(5,ii)
137 px6(i)=veul(6,ii)
138 px7(i)=veul(7,ii)
139 px8(i)=veul(8,ii)
140
141 py1(i)=veul(9,ii)
142 py2(i)=veul(10,ii)
143 py3(i)=veul(11,ii)
144 py4(i)=veul(12,ii)
145 py5(i)=veul(32,ii)
146 py6(i)=veul(33,ii)
147 py7(i)=veul(34,ii)
148 py8(i)=veul(35,ii)
149
150 pz1(i)=veul(36,ii)
151 pz2(i)=veul(37,ii)
152 pz3(i)=veul(38,ii)
153 pz4(i)=veul(39,ii)
154 pz5(i)=veul(40,ii)
155 pz6(i)=veul(41,ii)
156 pz7(i)=veul(42,ii)
157 pz8(i)=veul(43,ii)
158 ENDDO
159 ENDIF
160
161 DO i=1,nel
162 ii=i+nft
163 deltax(i)=veul(13,ii)
164 det(i)=vol(i)
165 ENDDO
166 IF(jhbe/=0)THEN
167 IF(integ8==0)THEN
168 DO i=1,nel
169 pmx1(i)=px1(i)
170 pmy1(i)=py1(i)
171 pmz1(i)=pz1(i)
172 pmx2(i)=px2(i)
173 pmy2(i)=py2(i)
174 pmz2(i)=pz2(i)
175 pmx3(i)=px3(i)
176 pmy3(i)=py3(i)
177 pmz3(i)=pz3(i)
178 pmx4(i)=px4(i)
179 pmy4(i)=py4(i)
180 pmz4(i)=pz4(i)
181 ENDDO
182 ELSE
183 DO i=1,nel
184 pmx1(i)=half*(px1(i)-px7(i))
185 pmy1(i)=half*(py1(i)-py7(i))
186 pmz1(i)=half*(pz1(i)-pz7(i))
187 pmx2(i)=half*(px2(i)-px8(i))
188 pmy2(i)=half*(py2(i)-py8(i))
189 pmz2(i)=half*(pz2(i)-pz8(i))
190 pmx3(i)=half*(px3(i)-px5(i))
191 pmy3(i)=half*(py3(i)-py5(i))
192 pmz3(i)=half*(pz3(i)-pz5(i))
193 pmx4(i)=half*(px4(i)-px6(i))
194 pmy4(i)=half*(py4(i)-py6(i))
195 pmz4(i)=half*(pz4(i)-pz6(i))
196 ENDDO
197 ENDIF
198 DO i=1,nel
199 ! 1 -1 1 -1 1 -1 1 -1
200 hx=(x1(i)-x2(i)+x3(i)-x4(i)+x5(i)-x6(i)+x7(i)-x8(i))
201 hy=(y1(i)-y2(i)+y3(i)-y4(i)+y5(i)-y6(i)+y7(i)-y8(i))
202 hz=(z1(i)-z2(i)+z3(i)-z4(i)+z5(i)-z6(i)+z7(i)-z8(i))
203 px1h1(i)=pmx1(i)*hx+ pmy1(i)*hy+pmz1(i)*hz
204 px2h1(i)=pmx2(i)*hx+ pmy2(i)*hy+pmz2(i)*hz
205 px3h1(i)=pmx3(i)*hx+ pmy3(i)*hy+pmz3(i)*hz
206 px4h1(i)=pmx4(i)*hx+ pmy4(i)*hy+pmz4(i)*hz
207 ENDDO
208 ! 1 1 -1 -1 -1 -1 1 1
209 DO i=1,nel
210 hx=(x1(i)+x2(i)-x3(i)-x4(i)-x5(i)-x6(i)+x7(i)+x8(i))
211 hy=(y1(i)+y2(i)-y3(i)-y4(i)-y5(i)-y6(i)+y7(i)+y8(i))
212 hz=(z1(i)+z2(i)-z3(i)-z4(i)-z5(i)-z6(i)+z7(i)+z8(i))
213 px1h2(i)=pmx1(i)*hx+ pmy1(i)*hy+pmz1(i)*hz
214 px2h2(i)=pmx2(i)*hx+ pmy2(i)*hy+pmz2(i)*hz
215 px3h2(i)=pmx3(i)*hx+ pmy3(i)*hy+pmz3(i)*hz
216 px4h2(i)=pmx4(i)*hx+ pmy4(i)*hy+pmz4(i)*hz
217 ENDDO
218 ! 1 -1 -1 1 -1 1 1 -1
219 DO i=1,nel
220 hx=(x1(i)-x2(i)-x3(i)+x4(i)-x5(i)+x6(i)+x7(i)-x8(i))
221 hy=(y1(i)-y2(i)-y3(i)+y4(i)-y5(i)+y6(i)+y7(i)-y8(i))
222 hz=(z1(i)-z2(i)-z3(i)+z4(i)-z5(i)+z6(i)+z7(i)-z8(i))
223 px1h3(i)=pmx1(i)*hx+ pmy1(i)*hy+pmz1(i)*hz
224 px2h3(i)=pmx2(i)*hx+ pmy2(i)*hy+pmz2(i)*hz
225 px3h3(i)=pmx3(i)*hx+ pmy3(i)*hy+pmz3(i)*hz
226 px4h3(i)=pmx4(i)*hx+ pmy4(i)*hy+pmz4(i)*hz
227 ENDDO
228 ENDIF
229
230 IF(ale%GLOBAL%ICAA/=0 .OR. alefvm_param%IENabled/=0 .OR. ale%GLOBAL%ISFINT>=2)THEN
231 DO i=1,nel
232 ii=i+nft
233 n1x(i)=veul(14,ii)
234 n2x(i)=veul(15,ii)
235 n3x(i)=veul(16,ii)
236 n4x(i)=veul(17,ii)
237 n5x(i)=veul(18,ii)
238 n6x(i)=veul(19,ii)
239 n1y(i)=veul(20,ii)
240 n2y(i)=veul(21,ii)
241 n3y(i)=veul(22,ii)
242 n4y(i)=veul(23,ii)
243 n5y(i)=veul(24,ii)
244 n6y(i)=veul(25,ii)
245 n1z(i)=veul(26,ii)
246 n2z(i)=veul(27,ii)
247 n3z(i)=veul(28,ii)
248 n4z(i)=veul(29,ii)
249 n5z(i)=veul(30,ii)
250 n6z(i)=veul(31,ii)
251 ENDDO
252 ENDIF
253
254 RETURN
255
256 END
subroutine epxle3(vol, veul, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, px5, px6, px7, px8, py5, py6, py7, py8, pz5, pz6, pz7, pz8, px1h1, px1h2, px1h3, px2h1, px2h2, px2h3, px3h1, px3h2, px3h3, px4h1, px4h2, px4h3, det, deltax, n1x, n2x, n3x, n4x, n5x, n6x, n1y, n2y, n3y, n4y, n5y, n6y, n1z, n2z, n3z, n4z, n5z, n6z, nel, nft, jhbe)
Definition epxle3.F:55
type(ale_) ale
Definition ale_mod.F:249
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121