34
35
36
37 USE elbufdef_mod
38 USE multi_fvm_mod
39 USE elbufdef_mod
42 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
43 USE matparam_def_mod , ONLY : matparam_struct_
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "com01_c.inc"
52#include "com04_c.inc"
53
54
55
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(),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
63
64
65
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
71 INTEGER :: default_SUBMAT_id(NEL)
72
73
74
75
76
77 vfrac0(1:nbsubmat) = mat_param(imid)%MULTIMAT%VFRAC(1:nbsubmat)
78 default_submat_id(1:nel) =
max(1, maxloc(vfrac0,1))
79
80
81 DO i=1,nel
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
86
87 sumvf = sum(kvol(1:nbsubmat
88 sumvf = sumvf - kvol(imat,i)
89 IF(sumvf <= one .AND. sumvf > zero)THEN
90 kvol(imat,i)=one-sumvf
91 ELSE
92 sumvf = sum(kvol(1:nbsubmat,i))
93 ratio=one/sumvf
94 kvol(1:nbsubmat,i)=ratio*kvol(1:nbsubmat,i)
95 ENDIF
96 ELSEIF(sumvf < one-em06)THEN
97
98 kvol(imat,i) = kvol(imat,i) + one-sumvf
99 ELSEIF(sumvf >= oneTHEN
100
101 ratio=one/sumvf
102 kvol(1:nbsubmat,i)=ratio*kvol(1:nbsubmat,i)
103 ENDIF
104 ENDDO
105
106
107 IF(mlw == 51)THEN
108 DO imat=1,4
109 kk = m51_n0phas + (imat-1)*m51_nvphas
110 DO i=1,nel
111 IF(ipart(i+nft) /= idp)cycle
112 uvar(i,1+kk) = kvol(imat,i)
113 uvar(i,23+kk) = kvol(imat
114 ENDDO
115 ENDDO
116 DO i=1,nel
117 IF(ipart(i+nft) /= idp)cycle
118 kk = m51_n0phas + (1-1)*m51_nvphas
119 p1 = uvar(i,18+kk)
120 kk = m51_n0phas + (2-1)*m51_nvphas
121 p2 = uvar(i,18+kk)
122 kk = m51_n0phas + (3-1)*m51_nvphas
123 p3 = uvar(i,18+kk)
124 kk = m51_n0phas + (4-1)*m51_nvphas
125 p4 = uvar(i,18+kk)
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
128 uvar(i,4) = p
129 ENDDO
130 ELSEIF(mlw == 37)THEN
131 DO i=1,nel
132 IF(ipart(i+nft) /= idp)cycle
133 uvar(i,4) = kvol(1,i)
134 uvar(i,5) = kvol(2,i)
135 ENDDO
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)
140 DO i=1,nel
141 IF(ipart(i+nft) /= idp)cycle
142 lbuf%VOL(i) = kvol(imat,i) * gbuf%VOL(i)
143 ENDDO
144 ENDDO
145 ENDIF
146
147
148 RETURN