34
35
36
38 USE elbufdef_mod
39 USE multi_fvm_mod
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "com01_c.inc"
48#include "param_c.inc"
49
50
51
52 INTEGER, INTENT(IN) :: IMAT, NG, LOCAL_MATID
53 my_real,
INTENT(IN) :: pm(npropm, *), volnew(*)
54 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
55 INTEGER, INTENT(IN) :: IPARG(NPARG, *)
56 INTEGER, INTENT(IN) :: ITASK
57 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
58
59
60
61 TYPE(G_BUFEL_), POINTER :: GBUF
62 TYPE(L_BUFEL_), POINTER :: LBUF
63 INTEGER :: II, I, NEL, NFT
64 my_real :: tmp2, tmp3, tmp4, rho0, e0
65
66
67
68 gbuf => elbuf_tab(ng)%GBUF
69 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1, 1, 1)
70 rho0 = pm(1, local_matid)
71 e0 = pm(23, local_matid)
72 nel = iparg(2, ng)
73 nft = iparg(3, ng)
74
75 DO ii = 1, nel
76 i = ii + nft
77
78 tmp4 = multi_fvm%PHASE_ALPHA(imat, i)
79
80 tmp2 = multi_fvm%PHASE_RHO(imat, i)
81
82 tmp3 = multi_fvm%PHASE_EINT(imat, i)
83
84
85 IF (tmp4 / gbuf%VOL(ii) < em08) THEN
86 multi_fvm%PHASE_ALPHA(imat, i) = zero
87 multi_fvm%PHASE_RHO(imat, i) = rho0
88 multi_fvm%PHASE_EINT(imat, i) = e0
89 ELSE
90 IF (tmp2 < zero) THEN
91 multi_fvm%PHASE_RHO(imat, i) = lbuf%RHO(ii)
92 multi_fvm%PHASE_EINT(imat, i) = lbuf%EINT(ii)
93 multi_fvm%PHASE_ALPHA(imat, i) = tmp4 / volnew(ii)
94 ELSE
95
96 multi_fvm%PHASE_RHO(imat, i) = tmp2 / tmp4
97
98 multi_fvm%PHASE_EINT(imat, i) = tmp3 / tmp4
99
100 multi_fvm%PHASE_ALPHA(imat, i) = tmp4 / volnew(ii)
101 ENDIF
102 ENDIF
103 ENDDO
104
105
106