OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_fluxout_ebcs.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!|| multi_fluxout_ebcs ../engine/source/multifluid/multi_fluxout_ebcs.F
25!||--- uses -----------------------------------------------------
26!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
27!||====================================================================
28 SUBROUTINE multi_fluxout_ebcs(MULTI_FVM, NELEM, ELEM_LIST, FACE_LIST,
29 . IXS, IXQ, IXTG, XGRID, WGRID)
30C-----------------------------------------------
31C M o d u l e s
32C-----------------------------------------------
33 USE multi_fvm_mod
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41! NIXS
42! ISPMD
43! ALE
44! NUMELS, NUMELQ, NUMELTG
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 TYPE(multi_fvm_struct), INTENT(INOUT) :: MULTI_FVM
49 INTEGER, INTENT(IN) :: NELEM, ELEM_LIST(NELEM), FACE_LIST(NELEM)
50 INTEGER, INTENT(IN) :: IXS(NIXS, *), IXQ(NIXQ, *), IXTG(NIXTG, *)
51 my_real, INTENT(IN) :: xgrid(3, *), wgrid(3, *)
52C-----------------------------------------------
53C L o c a l V a r i a b l e s
54C-----------------------------------------------
55 INTEGER :: IELEM, ELEMID, NODE_ID
56 INTEGER :: KFACE, NB_NOD_FOUND, KNOD, KK, JJ
57 my_real :: x1(3), x2(3), x3(3), x4(3), p, normvel, vx, vy, vz, ssp, surf, nx, ny, nz
58 my_real :: rho, sstar, pstar, pfac, sl, sr, wfac(3), vii(5), vjj(5), vel2, normalw
59 my_real :: fii(5), fjj(5), viistar(5), vjjstar(5), fiistar(5), fjjstar(5), pp(5)
60 INTEGER :: NODE1, NODE2, IMAT
61C-----------------------------------------------
62C B e g i n n i n g o f s u b r o u t i n e
63C-----------------------------------------------
64 DO ielem = 1, nelem
65 elemid = elem_list(ielem)
66
67C Face of the element
68 kface = face_list(ielem)
69
70 nx = multi_fvm%FACE_DATA%NORMAL(1, kface, elemid)
71 ny = multi_fvm%FACE_DATA%NORMAL(2, kface, elemid)
72 nz = multi_fvm%FACE_DATA%NORMAL(3, kface, elemid)
73 surf = multi_fvm%FACE_DATA%SURF(kface, elemid)
74 wfac(1:3) = multi_fvm%FACE_DATA%WFAC(1:3, kface, elemid)
75 vx = multi_fvm%VEL(1, elemid)
76 vy = multi_fvm%VEL(2, elemid)
77 vz = multi_fvm%VEL(3, elemid)
78 normvel = vx * nx + vy * ny + vz * nz
79 normalw = wfac(1) * nx + wfac(2) * ny + wfac(3) * nz
80 ssp = multi_fvm%SOUND_SPEED(elemid)
81 p = multi_fvm%PRES(elemid)
82 rho = multi_fvm%RHO(elemid)
83
84 vel2 = vx * vx + vy * vy + vz * vz
85
86 vii(1) = rho
87 vii(2) = rho * vx
88 vii(3) = rho * vy
89 vii(4) = rho * vz
90 vii(5) = multi_fvm%EINT(elemid) + half * rho * vel2
91
92 fii(1) = vii(1) * normvel
93 fii(2) = vii(2) * normvel + p * nx
94 fii(3) = vii(3) * normvel + p * ny
95 fii(4) = vii(4) * normvel + p * nz
96 fii(5) = (vii(5) + p) * normvel
97
98 multi_fvm%FLUXES(1:5, kface, elemid) = (fii(1:5) - normalw * vii(1:5)) * surf
99 multi_fvm%FLUXES(6, kface, elemid) = surf * normvel
100
101 IF (multi_fvm%NBMAT > 1) THEN
102 multi_fvm%FLUXES(1, kface, elemid) = zero
103 DO imat = 1, multi_fvm%NBMAT
104 vii(1) = multi_fvm%PHASE_ALPHA(imat, elemid)
105 vii(2) = multi_fvm%PHASE_ALPHA(imat, elemid) *
106 . multi_fvm%PHASE_RHO(imat, elemid)
107 vii(3) = multi_fvm%PHASE_ALPHA(imat, elemid) *
108 . multi_fvm%PHASE_EINT(imat, elemid)
109 fii(1:3) = vii(1:3) * normvel
110 multi_fvm%SUBVOL_FLUXES(imat, kface, elemid) =
111 . (fii(1) - normalw * vii(1)) * surf
112 multi_fvm%SUBMASS_FLUXES(imat, kface, elemid) =
113 . (fii(2) - normalw * vii(2)) * surf
114 multi_fvm%SUBENER_FLUXES(imat, kface, elemid) =
115 . (fii(3) - normalw * vii(3)) * surf
116 multi_fvm%FLUXES(1, kface, elemid) = multi_fvm%FLUXES(1, kface, elemid) +
117 . (fii(2) - normalw * vii(2)) * surf
118 ENDDO
119 ENDIF
120 ENDDO
121C-----------------------------------------------
122C E n d o f s u b r o u t i n e
123C-----------------------------------------------
124 END SUBROUTINE multi_fluxout_ebcs
#define my_real
Definition cppsort.cpp:32
subroutine multi_fluxout_ebcs(multi_fvm, nelem, elem_list, face_list, ixs, ixq, ixtg, xgrid, wgrid)