30
31
32
33 USE multi_fvm_mod
34
35
36
37#include "implicit_f.inc"
38
39
40
41! nixs
42
43
44
45
46
47
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, *)
52
53
54
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
60 INTEGER :: NODE1, NODE2, IMAT
61
62
63
64 DO ielem = 1, nelem
65 elemid = elem_list(ielem)
66
67
68 kface = face_list(ielem)
69
70 nx = multi_fvm%FACE_DATA%NORMAL(1, kface,
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 *
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
121
122
123