OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sfint3.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!|| sfint3 ../engine/source/elements/solid/solide/sfint3.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 sfint3(
33 1 SIG, PX1, PX2, PX3,
34 2 PX4, PY1, PY2, PY3,
35 3 PY4, PZ1, PZ2, PZ3,
36 4 PZ4, PX5, PX6, PX7,
37 5 PX8, PY5, PY6, PY7,
38 6 PY8, PZ5, PZ6, PZ7,
39 7 PZ8, F11, F21, F31,
40 8 F12, F22, F32, F13,
41 9 F23, F33, F14, F24,
42 A F34, F15, F25, F35,
43 B F16, F26, F36, F17,
44 C F27, F37, F18, F28,
45 D F38, VOL, QVIS, N1X,
46 E N2X, N3X, N4X, N5X,
47 F N6X, N1Y, N2Y, N3Y,
48 G N4Y, N5Y, N6Y, N1Z,
49 H N2Z, N3Z, N4Z, N5Z,
50 I N6Z, DFE, Pbak, IXS,
51 J NEL, NFT, JALE, JEUL,
52 K SVIS)
53C-----------------------------------------------
54C D e s c r i p t i o n
55C-----------------------------------------------
56 !-------------------------------------------------!
57 ! ISFINT=1 : volume integration for SIG_total !
58 ! ISFINT=2 : volume integration for SIG_dev only !
59 ! ISFINT=3 : surface integration for SIG_total !
60 !-------------------------------------------------!
61C-----------------------------------------------
62C M o d u l e s
63C-----------------------------------------------
64 USE alefvm_mod , only:alefvm_param
65 USE ale_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C G l o b a l P a r a m e t e r s
72C-----------------------------------------------
73#include "mvsiz_p.inc"
74C-----------------------------------------------
75C C o m m o n B l o c k s
76C-----------------------------------------------
77#include "com01_c.inc"
78#include "inter22.inc"
79C-----------------------------------------------
80C D u m m y A r g u m e n t s
81C-----------------------------------------------
82 INTEGER, INTENT(IN) :: NFT
83 INTEGER, INTENT(IN) :: JALE
84 INTEGER, INTENT(IN) :: JEUL
85 INTEGER IXS(NIXS,*),NEL
86 my_real
87 . SIG(NEL,6),
88 . PX1(*), PX2(*), PX3(*), PX4(*),
89 . PY1(*), PY2(*), PY3(*), PY4(*),
90 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
91 . PX5(*), PX6(*), PX7(*), PX8(*),
92 . PY5(*), PY6(*), PY7(*), PY8(*),
93 . PZ5(*), PZ6(*), PZ7(*), PZ8(*),
94 . F11(*),F21(*),F31(*),F12(*),F22(*),F32(*),
95 . F13(*),F23(*),F33(*),F14(*),F24(*),F34(*),
96 . F15(*),F25(*),F35(*),F16(*),F26(*),F36(*),
97 . F17(*),F27(*),F37(*),F18(*),F28(*),F38(*),
98 . VOL(*),QVIS(*)
99 my_real
100 . N1X(*), N2X(*), N3X(*), N4X(*), N5X(*), N6X(*),
101 . N1Y(*), N2Y(*), N3Y(*), N4Y(*), N5Y(*), N6Y(*),
102 . n1z(*), n2z(*), n3z(*), n4z(*), n5z(*), n6z(*),
103 . dfe(mvsiz,3),pbak(mvsiz),
104 . tx,ty,tz
105 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
106C-----------------------------------------------
107C L o c a l V a r i a b l e s
108C-----------------------------------------------
109 INTEGER I, J
110 my_real S1(MVSIZ), S2(MVSIZ), S3(MVSIZ),S4(MVSIZ), S5(MVSIZ), S6(MVSIZ),FINT,FINTD,QVIS_LOC,VOL_LOC,P(MVSIZ)
111C-----------------------------------------------
112
113 !-------------------------------------------------!
114 ! ISFINT=3 : surface integration for SIG_total !
115 !-------------------------------------------------!
116 IF(ALE%GLOBAL%ISFINT==3 .AND. jale+jeul/=0)THEN
117 !------------------------------!
118 ! TOTAL STRESS TENSOR !
119 !------------------------------!
120 DO i=1,nel
121 qvis_loc = qvis(i)
122 s1(i)=sig(i,1)+svis(i,1)-qvis_loc
123 s2(i)=sig(i,2)+svis(i,2)-qvis_loc
124 s3(i)=sig(i,3)+svis(i,3)-qvis_loc
125 s4(i)=sig(i,4)+svis(i,4)
126 s5(i)=sig(i,5)+svis(i,5)
127 s6(i)=sig(i,6)+svis(i,6)
128 ENDDO
129 !------------------------------!
130 ! PRESSURE !
131 !------------------------------!
132 DO i=1,nel
133 p(i)=third*(s1(i)+s2(i)+s3(i))
134 pbak(i)=one_over_8*p(i)
135 ENDDO
136 !------------------------------!
137 ! DIV(SIGMA) !
138 !------------------------------!
139 ! Integral ( div(sigma) ) dV = Integral (sigma:n) dS
140 DO i=1,nel
141 ! node-1 : faces 1,4,6
142 tx=n1x(i)+n4x(i)+n6x(i)
143 ty=n1y(i)+n4y(i)+n6y(i)
144 tz=n1z(i)+n4z(i)+n6z(i)
145 f11(i)=f11(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
146 !print *, "ID,FINT(11)=", IXS(11,I+NFT), -ONE_OVER_8*(S1(I)*TX + S4(I)*TY + S6(I)*TZ)
147 f21(i)=f21(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
148 f31(i)=f31(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
149 ! node-2 : faces 1,4,5
150 tx=n1x(i)+n4x(i)+n5x(i)
151 ty=n1y(i)+n4y(i)+n5y(i)
152 tz=n1z(i)+n4z(i)+n5z(i)
153 f12(i)=f12(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
154 f22(i)=f22(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
155 f32(i)=f32(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
156 ! node-3 : faces 1,2,5
157 tx=n1x(i)+n2x(i)+n5x(i)
158 ty=n1y(i)+n2y(i)+n5y(i)
159 tz=n1z(i)+n2z(i)+n5z(i)
160 f13(i)=f13(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
161 f23(i)=f23(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
162 f33(i)=f33(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
163 ! node-4 : faces 1,2,6
164 tx=n1x(i)+n2x(i)+n6x(i)
165 ty=n1y(i)+n2y(i)+n6y(i)
166 tz=n1z(i)+n2z(i)+n6z(i)
167 f14(i)=f14(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
168 f24(i)=f24(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
169 f34(i)=f34(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
170 ! node-5 : faces 3,4,6
171 tx=n3x(i)+n4x(i)+n6x(i)
172 ty=n3y(i)+n4y(i)+n6y(i)
173 tz=n3z(i)+n4z(i)+n6z(i)
174 f15(i)=f15(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
175 f25(i)=f25(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
176 f35(i)=f35(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
177 ! node-6 : faces 3,4,5
178 tx=n3x(i)+n4x(i)+n5x(i)
179 ty=n3y(i)+n4y(i)+n5y(i)
180 tz=n3z(i)+n4z(i)+n5z(i)
181 f16(i)=f16(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
182 f26(i)=f26(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
183 f36(i)=f36(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
184 ! node-7 : faces 2,3,5
185 tx=n2x(i)+n3x(i)+n5x(i)
186 ty=n2y(i)+n3y(i)+n5y(i)
187 tz=n2z(i)+n3z(i)+n5z(i)
188 f17(i)=f17(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
189 f27(i)=f27(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
190 f37(i)=f37(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
191 ! node-8 : faces 2,3,6
192 tx=n2x(i)+n3x(i)+n6x(i)
193 ty=n2y(i)+n3y(i)+n6y(i)
194 tz=n2z(i)+n3z(i)+n6z(i)
195 f18(i)=f18(i)-one_over_8*(s1(i)*tx + s4(i)*ty + s6(i)*tz)
196 f28(i)=f28(i)-one_over_8*(s4(i)*tx + s2(i)*ty + s5(i)*tz)
197 f38(i)=f38(i)-one_over_8*(s6(i)*tx + s5(i)*ty + s3(i)*tz)
198 ENDDO
199 RETURN
200 ENDIF
201
202 !-------------------------------------------------!
203 ! ISFINT=1 : volume integration for SIG_total !
204 ! ISFINT=2 : volume integration for SIG_dev only !
205 !-------------------------------------------------!
206 IF((ale%GLOBAL%ICAA==1.OR.ale%GLOBAL%ISFINT==2) .AND. jale+jeul/=0)THEN
207 DO i=1,nel
208 qvis_loc = qvis(i)
209 vol_loc = vol(i)
210 s1(i)=sig(i,1)+svis(i,1)-qvis_loc
211 s2(i)=sig(i,2)+svis(i,2)-qvis_loc
212 s3(i)=sig(i,3)+svis(i,3)-qvis_loc
213 p(i)=(s1(i)+s2(i)+s3(i))/three
214 s1(i)=(s1(i)-p(i))*vol_loc
215 s2(i)=(s2(i)-p(i))*vol_loc
216 s3(i)=(s3(i)-p(i))*vol_loc
217 s4(i)=(sig(i,4)+svis(i,4))*vol_loc
218 s5(i)=(sig(i,5)+svis(i,5))*vol_loc
219 s6(i)=(sig(i,6)+svis(i,6))*vol_loc
220 p(i)=p(i)*0.125
221 ENDDO
222 DO i=1,nel
223 pbak(i) = p(i)
224 ENDDO
225 !--------------------------------------------------------------!
226 ! fint from spherical tensor : FVM !
227 !--------------------------------------------------------------!
228 DO i=1,nel
229 f11(i)=f11(i)-p(i)*(n1x(i) +n4x(i) +n6x(i))
230 f21(i)=f21(i)-p(i)*(n1y(i) +n4y(i) +n6y(i))
231 f31(i)=f31(i)-p(i)*(n1z(i) +n4z(i) +n6z(i))
232 f12(i)=f12(i)-p(i)*(n1x(i) +n4x(i)+n5x(i) )
233 f22(i)=f22(i)-p(i)*(n1y(i) +n4y(i)+n5y(i) )
234 f32(i)=f32(i)-p(i)*(n1z(i) +n4z(i)+n5z(i) )
235 f13(i)=f13(i)-p(i)*(n1x(i)+n2x(i) +n5x(i) )
236 f23(i)=f23(i)-p(i)*(n1y(i)+n2y(i) +n5y(i) )
237 f33(i)=f33(i)-p(i)*(n1z(i)+n2z(i) +n5z(i) )
238 f14(i)=f14(i)-p(i)*(n1x(i)+n2x(i) +n6x(i))
239 f24(i)=f24(i)-p(i)*(n1y(i)+n2y(i) +n6y(i))
240 f34(i)=f34(i)-p(i)*(n1z(i)+n2z(i) +n6z(i))
241 f15(i)=f15(i)-p(i)*( +n3x(i)+n4x(i) +n6x(i))
242 f25(i)=f25(i)-p(i)*( +n3y(i)+n4y(i) +n6y(i))
243 f35(i)=f35(i)-p(i)*( +n3z(i)+n4z(i) +n6z(i))
244 f16(i)=f16(i)-p(i)*( +n3x(i)+n4x(i)+n5x(i) )
245 f26(i)=f26(i)-p(i)*( +n3y(i)+n4y(i)+n5y(i) )
246 f36(i)=f36(i)-p(i)*( +n3z(i)+n4z(i)+n5z(i) )
247 f17(i)=f17(i)-p(i)*( +n2x(i)+n3x(i) +n5x(i) )
248 f27(i)=f27(i)-p(i)*( +n2y(i)+n3y(i) +n5y(i) )
249 f37(i)=f37(i)-p(i)*( +n2z(i)+n3z(i) +n5z(i) )
250 f18(i)=f18(i)-p(i)*( +n2x(i)+n3x(i) +n6x(i))
251 f28(i)=f28(i)-p(i)*( +n2y(i)+n3y(i) +n6y(i))
252 f38(i)=f38(i)-p(i)*( +n2z(i)+n3z(i) +n6z(i))
253 ENDDO
254 ELSE !IF(ICAA == 0 .OR. JALE+JEUL==0 )
255 DO i=1,nel
256 qvis_loc = qvis(i)
257 vol_loc = vol(i)
258 s1(i)=(sig(i,1)+svis(i,1)-qvis_loc)*vol_loc
259 s2(i)=(sig(i,2)+svis(i,2)-qvis_loc)*vol_loc
260 s3(i)=(sig(i,3)+svis(i,3)-qvis_loc)*vol_loc
261 s4(i)=(sig(i,4)+svis(i,4))*vol_loc
262 s5(i)=(sig(i,5)+svis(i,5))*vol_loc
263 s6(i)=(sig(i,6)+svis(i,6))*vol_loc
264 ENDDO
265 IF(alefvm_param%IEnabled/=0)THEN
266 DO i=1,nel
267 pbak(i) =0.125 * (s1(i)+s2(i)+s3(i))/three/vol(i)
268 ENDDO
269 ENDIF
270 ENDIF
271 IF(int22==0)THEN !no yet deviatoric stress contribution with inter22 to simplify (priority : ditching)
272 !--------------------------------------------------------------!
273 ! FEM internal forces !
274 ! /CAA or /INTER/TYPE22 : deviatoric stress tensor !
275 ! otherwise : total stress tensor !
276 !--------------------------------------------------------------!
277 IF(jeul==0 .OR. (jeul==1.AND.integ8==0))THEN
278 DO i=1,nel
279 !shape functions hypothesis : phi1=-phi7, phi2=-phi8, phi3=-phi5, phi4=-phi6
280 !---nodes 1-7 ---!
281 fint=s1(i)*px1(i)+s4(i)*py1(i)+s6(i)*pz1(i)
282 f11(i)=f11(i)-fint
283 f17(i)=f17(i)+fint
284 fint=s2(i)*py1(i)+s4(i)*px1(i)+s5(i)*pz1(i)
285 f21(i)=f21(i)-fint
286 f27(i)=f27(i)+fint
287 fint=s3(i)*pz1(i)+s6(i)*px1(i)+s5(i)*py1(i)
288 f31(i)=f31(i)-fint
289 f37(i)=f37(i)+fint
290 !---nodes 2-8 ---!
291 fint=s1(i)*px2(i)+s4(i)*py2(i)+s6(i)*pz2(i)
292 f12(i)=f12(i)-fint
293 f18(i)=f18(i)+fint
294 fint=s2(i)*py2(i)+s4(i)*px2(i)+s5(i)*pz2(i)
295 f22(i)=f22(i)-fint
296 f28(i)=f28(i)+fint
297 fint=s3(i)*pz2(i)+s6(i)*px2(i)+s5(i)*py2(i)
298 f32(i)=f32(i)-fint
299 f38(i)=f38(i)+fint
300 !---nodes 3-5 ---!
301 fint=s1(i)*px3(i)+s4(i)*py3(i)+s6(i)*pz3(i)
302 f13(i)=f13(i)-fint
303 f15(i)=f15(i)+fint
304 fint=s2(i)*py3(i)+s4(i)*px3(i)+s5(i)*pz3(i)
305 f23(i)=f23(i)-fint
306 f25(i)=f25(i)+fint
307 fint=s3(i)*pz3(i)+s6(i)*px3(i)+s5(i)*py3(i)
308 f33(i)=f33(i)-fint
309 f35(i)=f35(i)+fint
310 !---nodes 4-6 ---!
311 fint=s1(i)*px4(i)+s4(i)*py4(i)+s6(i)*pz4(i)
312 f14(i)=f14(i)-fint
313 f16(i)=f16(i)+fint
314 fint=s2(i)*py4(i)+s4(i)*px4(i)+s5(i)*pz4(i)
315 f24(i)=f24(i)-fint
316 f26(i)=f26(i)+fint
317 fint=s3(i)*pz4(i)+s6(i)*px4(i)+s5(i)*py4(i)
318 f34(i)=f34(i)-fint
319 f36(i)=f36(i)+fint
320 ENDDO
321 ELSE
322 !--------------------------------------------------------------!
323 ! FEM internal forces + INTEG8 !
324 ! /CAA or /INTER/TYPE22 : deviatoric stress tensor !
325 ! otherwise : total stress tensor !
326 !--------------------------------------------------------------!
327 !shape functions are different with hidden flag INTEG8 in /ANALY control card
328 DO i=1,nel
329 f11(i)=f11(i)-(s1(i)*px1(i)+s4(i)*py1(i)+s6(i)*pz1(i))
330 f21(i)=f21(i)-(s2(i)*py1(i)+s4(i)*px1(i)+s5(i)*pz1(i))
331 f31(i)=f31(i)-(s3(i)*pz1(i)+s6(i)*px1(i)+s5(i)*py1(i))
332 f12(i)=f12(i)-(s1(i)*px2(i)+s4(i)*py2(i)+s6(i)*pz2(i))
333 f22(i)=f22(i)-(s2(i)*py2(i)+s4(i)*px2(i)+s5(i)*pz2(i))
334 f32(i)=f32(i)-(s3(i)*pz2(i)+s6(i)*px2(i)+s5(i)*py2(i))
335 f13(i)=f13(i)-(s1(i)*px3(i)+s4(i)*py3(i)+s6(i)*pz3(i))
336 f23(i)=f23(i)-(s2(i)*py3(i)+s4(i)*px3(i)+s5(i)*pz3(i))
337 f33(i)=f33(i)-(s3(i)*pz3(i)+s6(i)*px3(i)+s5(i)*py3(i))
338 f14(i)=f14(i)-(s1(i)*px4(i)+s4(i)*py4(i)+s6(i)*pz4(i))
339 f24(i)=f24(i)-(s2(i)*py4(i)+s4(i)*px4(i)+s5(i)*pz4(i))
340 f34(i)=f34(i)-(s3(i)*pz4(i)+s6(i)*px4(i)+s5(i)*py4(i))
341 f15(i)=f15(i)-(s1(i)*px5(i)+s4(i)*py5(i)+s6(i)*pz5(i))
342 f25(i)=f25(i)-(s2(i)*py5(i)+s4(i)*px5(i)+s5(i)*pz5(i))
343 f35(i)=f35(i)-(s3(i)*pz5(i)+s6(i)*px5(i)+s5(i)*py5(i))
344 f16(i)=f16(i)-(s1(i)*px6(i)+s4(i)*py6(i)+s6(i)*pz6(i))
345 f26(i)=f26(i)-(s2(i)*py6(i)+s4(i)*px6(i)+s5(i)*pz6(i))
346 f36(i)=f36(i)-(s3(i)*pz6(i)+s6(i)*px6(i)+s5(i)*py6(i))
347 f17(i)=f17(i)-(s1(i)*px7(i)+s4(i)*py7(i)+s6(i)*pz7(i))
348 f27(i)=f27(i)-(s2(i)*py7(i)+s4(i)*px7(i)+s5(i)*pz7(i))
349 f37(i)=f37(i)-(s3(i)*pz7(i)+s6(i)*px7(i)+s5(i)*py7(i))
350 f18(i)=f18(i)-(s1(i)*px8(i)+s4(i)*py8(i)+s6(i)*pz8(i))
351 f28(i)=f28(i)-(s2(i)*py8(i)+s4(i)*px8(i)+s5(i)*pz8(i))
352 f38(i)=f38(i)-(s3(i)*pz8(i)+s6(i)*px8(i)+s5(i)*py8(i))
353 ENDDO
354 ENDIF
355 ENDIF
356
357 RETURN
358 END
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
subroutine sfint3(sig, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, px5, px6, px7, px8, py5, py6, py7, py8, pz5, pz6, pz7, pz8, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, vol, qvis, n1x, n2x, n3x, n4x, n5x, n6x, n1y, n2y, n3y, n4y, n5y, n6y, n1z, n2z, n3z, n4z, n5z, n6z, dfe, pbak, ixs, nel, nft, jale, jeul, svis)
Definition sfint3.F:53