OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
multi_fluxout_ebcs.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine multi_fluxout_ebcs (multi_fvm, nelem, elem_list, face_list, ixs, ixq, ixtg, xgrid, wgrid)

Function/Subroutine Documentation

◆ multi_fluxout_ebcs()

subroutine multi_fluxout_ebcs ( type(multi_fvm_struct), intent(inout) multi_fvm,
integer, intent(in) nelem,
integer, dimension(nelem), intent(in) elem_list,
integer, dimension(nelem), intent(in) face_list,
integer, dimension(nixs, *), intent(in) ixs,
integer, dimension(nixq, *), intent(in) ixq,
integer, dimension(nixtg, *), intent(in) ixtg,
dimension(3, *), intent(in) xgrid,
dimension(3, *), intent(in) wgrid )

Definition at line 28 of file multi_fluxout_ebcs.F.

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-----------------------------------------------
#define my_real
Definition cppsort.cpp:32