35
36
37
38
39
40
41
42
43
44
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "spmd_c.inc"
56#include "com04_c.inc"
57#include "com08_c.inc"
58#include "vect01_c.inc"
59
60
61
62 INTEGER IXQ(NIXQ,NUMELQ),N4_VOIS(NUMELQ+NQVOIS,4),ITAB(NUMNOD)
63 INTEGER,INTENT(IN) :: ITRIMAT
64 my_real flux(4,*),alph(*),vol(*),flux_vois(numelq+nqvois,6)
65 TYPE(t_segvar),INTENT(IN) :: SEGVAR
66 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
67
68
69
70 INTEGER I,II,K,JV(6),KV(6),IAD2,IAD3
72 . vol0,av0,uav0,alphi,ualphi,aaa,ff(6),udt,phi0
73
74
75
76 jv = -huge(jv(1))
77 kv = -huge(kv(1))
78 ff = -huge(ff(1))
79
80
81
82 IF(dt1 > zero)THEN
83 udt = one/dt1
84 ELSE
85 udt = zero
86 ENDIF
87
88 DO i=lft,llt
89 ii = i + nft
90 iad2 = ale_connect%ee_connect%iad_connect(ii)
91 vol0 = vol(i)*udt
92 av0 = alph(ii) * vol0
93 uav0 = vol0 - av0
94 alphi = zero
95 ualphi = zero
96 phi0 = zero
97
98
99
100 DO k=1,4
101 IF(flux(k,ii) > zero)THEN
102 jv(k) = ale_connect%ee_connect%connected(iad2 + k - 1)
103 kv(k) = k
104 IF(jv(k) == 0)THEN
105 jv(k) = ii
106 ff(k) = alph(ii)*flux(k,ii)
107 ELSEIF(jv(k) < 0)THEN
108
109 ff(k) = segvar%PHASE_ALPHA(itrimat,-jv(k)) *flux(k,ii)
110 ELSEIF(jv(k) <= numelq)THEN
111 iad3 = ale_connect%ee_connect%iad_connect(jv(k))
112 IF(ale_connect%ee_connect%connected(iad3 + 1 - 1) == ii) kv(k) = 1
113 IF(ale_connect%ee_connect%connected(iad3 + 2 - 1) == ii) kv(k) =
114 IF(ale_connect%ee_connect%connected(iad3 + 3 - 1) == ii) kv(k) = 3
115 IF(ale_connect%ee_connect%connected(iad3 + 4 - 1) == ii) kv(k) = 4
116 ff(k) = alph(jv(k))*flux(k,ii)
117 ELSE
118
119 ff(k) = alph(jv(k))*flux(k,ii)
120 ENDIF
121
122 alphi = alphi + ff(k)
123
124 phi0 = phi0 + flux(k,ii)
125 ENDIF
126 ENDDO
127
128 ualphi = phi0 - alphi
129
130
131
132 IF(alphi > av0.AND.av0 > zero)THEN
133
134
135
136 aaa = av0 / alphi
137 DO k=1,4
138 IF(flux(k,ii) > zero)THEN
139 ff(k
140 ENDIF
141 ENDDO
142 ELSEIF(ualphi > uav0.AND.uav0 > zero)THEN
143
144
145
146
147 aaa = uav0/ualphi
148 DO k=1,4
149 IF(flux(k,ii) > zero)THEN
150 ff(k) = flux(k,ii) + (ff(k)-flux(k,ii))*aaa
151 ENDIF
152 ENDDO
153
154 ENDIF
155
156
157
158 DO k=1,4
159 IF(flux(k,ii) > zero)THEN
160 ff(k) = 0.5* (ff(k)*(1.-
ale%UPWIND%UPWSM)
161 . + alph(ii)*flux(k,ii)*(1.+
ale%UPWIND%UPWSM))
162 flux(k,ii) = ff(k)
163 IF(jv(k) < 0)THEN
164
165 ELSEIF(jv(k) <= numelq)THEN
166 flux(kv(k),jv(k)) = -flux(k,ii)
167 ELSE
168 flux_vois(ii,k) = flux(k,ii)
169 n4_vois(ii,1) = itab(ixq(2,ii))
170 n4_vois(ii,2) = itab(ixq(3,ii))
171 n4_vois(ii,3) = itab(ixq(4,ii))
172 n4_vois(ii,4) = itab(ixq(5,ii))
173 ENDIF
174 ENDIF
175 ENDDO
176
177
178
179 IF(nsegflu > 0)THEN
180 iad2 = ale_connect%ee_connect%iad_connect(ii)
181 DO k=1,4
182 IF(flux(k,ii) < zero .AND. ale_connect%ee_connect%connectedTHEN
183 flux(k,ii) = segvar%PHASE_ALPHA(itrimat,-ale_connect%ee_connect%connected
184 ENDIF
185 ENDDO
186 ENDIF
187
188 enddo
189
190 RETURN