31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 USE elbufdef_mod
49 USE multi_fvm_mod
51 USE multi_fvm_mod
53
54
55
56 implicit none
57#include "my_real.inc"
58
59
60
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "vect01_c.inc"
65
66
67
68 INTEGER,INTENT(IN) :: IPARG(NPARG,NGROUP),IPM(NPROPMI,)
69 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP),INTENT(INOUT) :: ELBUF_TAB
70 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
71
72
73
74 LOGICAL IS_JWL
75 INTEGER :: NEL,IG,OFFSET,NG,SUBMATLAW,ILAY,NLAY,II
77 TYPE(L_BUFEL_) ,POINTER :: LBUF
78 TYPE(G_BUFEL_) ,POINTER :: GBUF
79 TYPE(BUF_MAT_) ,POINTER :: MBUF
80
81
82
83 IF(multi_fvm%IS_USED)THEN
84 DO ng=1,ngroup
85 mtn = iparg(1,ng)
86 nel = iparg(2,ng)
87 nft = iparg(3,ng)
88 ity = iparg(5,ng)
89 gbuf => elbuf_tab(ng)%GBUF
90
91 IF(gbuf%G_TB > 0)THEN
92
93 IF (mtn == 151) THEN
94 nlay = elbuf_tab(ng)%NLAY
95 DO ig=1,nel,nvsiz
96 offset = ig - 1
97 lft = 1
98 llt =
min(nvsiz,nel-offset)
99 nft = iparg(3,ng) + offset
100 is_jwl = .false.
101
102 IF (nlay > 1) THEN
103 gbuf%TB(lft:llt) = -ep21
104 DO ilay = 1, nlay
105
106 submatlaw = elbuf_tab(ng)%BUFLY(ilay)%ILAW
107 IF (submatlaw == 5) THEN
108 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(1,1,1)
109 DO ii = lft, llt
110 vfrac = lbuf%VOL(ii)/gbuf%VOL(ii)
111 IF(vfrac >= zero)THEN
112 gbuf%TB(ii) =
max(gbuf%TB(ii), lbuf%TB(ii))
113 ENDIF
114 ENDDO
115 is_jwl = .true.
116 ENDIF
117 ENDDO
118 IF(.NOT.is_jwl)THEN
119 DO ii = lft, llt
120 gbuf%TB(ii) = zero
121 ENDDO
122 ELSE
123 DO ii = lft, llt
124 IF(gbuf%TB(ii) <= -ep21)THEN
125 gbuf%TB(ii) = zero
126 ENDIF
127 ENDDO
128 ENDIF
129 ENDIF
130 ENDDO
131 ENDIF
132 ENDIF
133 ENDDO
134
135 ENDIF
136