31 . ELBUF_TAB, NG , NBSUBMAT, MULTI_FVM ,
32 . IDP , IPART , NFT , IMID,
42 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
43 USE matparam_def_mod ,
ONLY : matparam_struct_
47#include "implicit_f.inc"
56 INTEGER,
INTENT(IN) :: IMID
57 INTEGER,
INTENT(IN) :: NEL, NUVAR, MLW, NG, NBSUBMAT,IDP,IPART(*),NFT
58 my_real,
INTENT(INOUT) :: KVOL(NBSUBMAT,NEL)
59 my_real,
INTENT(INOUT) :: uvar(nel,nuvar)
60 TYPE(multi_fvm_struct),
INTENT(IN) :: MULTI_FVM
61 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP),
INTENT(INOUT) :: ELBUF_TAB
62 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
66 INTEGER :: I, IMAT, KK
67 TYPE(G_BUFEL_) ,
POINTER :: GBUF
68 TYPE(L_BUFEL_) ,
POINTER :: LBUF
69 my_real :: p, p1,p2,p3,p4,sumvf,ratio
70 my_real :: vfrac0(nbsubmat)
71 INTEGER :: default_SUBMAT_id(NEL)
77 vfrac0(1:nbsubmat) = mat_param(imid)%MULTIMAT%VFRAC(1:nbsubmat)
78 default_submat_id(1:nel) =
max(1, maxloc(vfrac0,1))
82 IF(ipart(i+nft) /= idp)cycle
83 sumvf = sum(kvol(1:nbsubmat,i))
84 imat = default_submat_id(i)
85 IF(sumvf > one+em06)
THEN
87 sumvf = sum(kvol(1:nbsubmat,i))
88 sumvf = sumvf - kvol(imat,i)
89 IF(sumvf <= one .AND. sumvf > zero)
THEN
90 kvol(imat,i)=one-sumvf
92 sumvf = sum(kvol(1:nbsubmat,i))
94 kvol(1:nbsubmat,i)=ratio*kvol(1:nbsubmat,i)
96 ELSEIF(sumvf < one-em06)
THEN
98 kvol(imat,i) = kvol(imat,i) + one-sumvf
99 ELSEIF(sumvf >= one-em06 .AND. sumvf <= one+em06)
THEN
102 kvol(1:nbsubmat,i)=ratio*kvol(1:nbsubmat,i)
109 kk = m51_n0phas + (imat-1)*m51_nvphas
111 IF(ipart(i+nft) /= idp)cycle
112 ratio =
min(
max(zero,kvol(imat,i)), one)
114 uvar(i,23+kk) = ratio
118 IF(ipart(i+nft) /= idp)cycle
119 kk = m51_n0phas + (1-1)*m51_nvphas
121 kk = m51_n0phas + (2-1)*m51_nvphas
123 kk = m51_n0phas + (3-1)*m51_nvphas
125 kk = m51_n0phas + (4-1)*m51_nvphas
127 sumvf=sum(kvol(1:nbsubmat,i))
128 p = kvol(1,i)*p1 + kvol(2,i)*p2 + kvol(3,i)*p3 + kvol(4,i)*p4
131 ELSEIF(mlw == 37)
THEN
133 IF(ipart(i+nft) /= idp)cycle
134 uvar(i,4) = kvol(1,i)
135 uvar(i,5) = kvol(2,i)
137 ELSEIF(mlw == 151)
THEN
138 gbuf => elbuf_tab(ng)%GBUF
139 DO imat=1,multi_fvm%NBMAT
140 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
142 IF(ipart(i+nft) /= idp)cycle
143 lbuf%VOL(i) = kvol(imat,i) * gbuf%VOL(i)
subroutine inivol_set(uvar, nuvar, nel, kvol, mlw, elbuf_tab, ng, nbsubmat, multi_fvm, idp, ipart, nft, imid, mat_param)