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
58INTENT(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 () ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
66 INTEGER :: I, IMAT, KK
67 TYPE(G_BUFEL_) ,
POINTER :: GBUF
68 TYPE() ,
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 uvar(i,1+kk) = kvol(imat,i)
113 uvar(i,23+kk) = kvol(imat,i)
117 IF(ipart(i+nft) /= idp)cycle
118 kk = m51_n0phas + (1-1)*m51_nvphas
120 kk = m51_n0phas + (2-1)*m51_nvphas
122 kk = m51_n0phas + (3-1)*m51_nvphas
124 kk = m51_n0phas + (4-1)*m51_nvphas
126 sumvf=sum(kvol(1:nbsubmat,i))
127 p = kvol(1,i)*p1 + kvol(2,i)*p2 + kvol(3,i)*p3 + kvol(4,i)*p4
130 ELSEIF(mlw == 37)
THEN
132 IF(ipart(i+nft) /= idp)cycle
133 uvar(i,4) = kvol(1,i)
134 uvar(i,5) = kvol(2,i)
136 ELSEIF(mlw == 151)
THEN
137 gbuf => elbuf_tab(ng)%GBUF
138 DO imat=1,multi_fvm%NBMAT
139 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
141 IF(ipart(i+nft) /= idp)cycle
142 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)