34
35
36
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "mvsiz_p.inc"
46
47
48
49#include "com01_c.inc"
50#include "com04_c.inc"
51#include "vect01_c.inc"
52#include "param_c.inc"
53
54
55
56 INTEGER IXQ(NIXQ,NUMELQ), ITRIMAT,IFLG,IAD2
57 my_real pm(npropm,nummat), flux(4,*), flu1(*),ddvol(*),qmv(8,*), x(3,numnod)
58 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
59
60
61
62 INTEGER I,J,II,MAT(MVSIZ)
63 my_real reduc,qmv5,qmv6,qmv7,qmv8,
64 . flux1(mvsiz), flux2(mvsiz), flux3(mvsiz), flux4(mvsiz),
65 . upwl(4,mvsiz), r1, r2, r3, r4
66
67 DO i=lft,llt
68 flux1(i) = flux(1,i)
69 flux2(i) = flux(2,i)
70 flux3(i) = flux(3,i)
71 flux4(i) = flux(4,i)
72 ENDDO
73
74 DO i=lft,llt
75 ii=i+nft
76 mat(i)=ixq(1,ii)
77 ENDDO
78
79
80
81 DO j=1,4
82 DO i=lft,llt
83 upwl(j,i)=pm(16,mat(i))
84 ENDDO
85 ENDDO
86
87
88
89
90
91 DO i=lft,llt
92 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
93 reduc=pm(92,mat(i))
94 ii=ale_connect%ee_connect%connected(iad2 + 1 - 1)
95 IF(ii == 0)THEN
96 flux1(i)=flux1(i)*reduc
97 ENDIF
98
99 ii=ale_connect%ee_connect%connected(iad2 + 2 - 1)
100 IF(ii == 0)THEN
101 flux2(i)=flux2(i)*reduc
102 ENDIF
103
104 ii=ale_connect%ee_connect%connected(iad2 + 3 - 1)
105 IF(ii == 0)THEN
106 flux3(i)=flux3(i)*reduc
107 ENDIF
108
109 ii=ale_connect%ee_connect%connected(iad2 + 4 - 1)
110 IF(ii == 0)THEN
111 flux4(i)=flux4(i)*reduc
112 ENDIF
113
114 ENDDO
115
116 IF(iflg == 1)THEN
117 IF (n2d == 1) THEN
118
119 DO i=lft,llt
120 ii = i + nft
121 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
122 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2
123 flux(3,i) = flux3(i)-upwl(3,i)*abs(flux3(i))
124 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
125
126
127 qmv(5,i) = flux1(i)+upwl(1,i)*abs(flux1(i))
128 qmv(6,i) = flux2
129 qmv(7,i) = flux3(i)+upwl(3,i)*abs(flux3(i))
130 qmv(8,i) = flux4(i)+upwl(4,i)*abs(flux4(i))
131
132 flu1(i) = qmv(5,i) + qmv(6,i) + qmv(7,i) + qmv(8,i)
133
134 r1 = half * (x(2, ixq(2, ii)) + x(2, ixq(3, ii)))
135 r2 = half * (x(2, ixq(3, ii)) + x(2, ixq(4, ii)))
136 r3 = half * (x(2, ixq(4, ii)) + x(2, ixq(5, ii)))
137 r4 = half * (x(2, ixq(5, ii)) + x(2, ixq(2, ii)))
138
139
140 IF (r1 /= zero) qmv(5,i) = qmv(5,i) / r1
141 IF (r2 /= zero) qmv(6,i) = qmv(6,i) / r2
142 IF (r3 /= zero) qmv(7,i) = qmv(7,i) / r3
143 IF (r4 /= zero) qmv(8,i) = qmv(8,i) / r4
144 ENDDO
145 ELSE
146 DO i=lft,llt
147 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
148 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2(i))
149 flux(3,i) = flux3(i)-upwl(3,i)*abs
150 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
151
152 qmv(5,i) = flux1(i)+upwl(1,i)*abs(flux1(i))
153 qmv(6,i) = flux2(i)+upwl(2,i)*abs(flux2(i))
154 qmv(7,i) = flux3(i)+upwl(3,i)*abs(flux3(i))
155 qmv(8,i) = flux4(i)+upwl(4,i)*abs(flux4(i))
156
157 flu1(i) = qmv(5,i) + qmv(6,i) + qmv(7,i) + qmv(8,i)
158 ENDDO
159 ENDIF
160 ELSE
161 DO i=lft,llt
162 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
163 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2(i))
164 flux(3,i) = flux3(i)-upwl(3,i)*abs(flux3(i))
165 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
166
167 qmv5 = flux1(i)+upwl(1,i)*abs(flux1(i))
168 qmv6 = flux2(i)+upwl(2,i)*abs(flux2(i))
169 qmv7 = flux3(i)+upwl(3,i)*abs(flux3(i))
170 qmv8 = flux4(i)+upwl(4,i)*abs(flux4(i))
171
172 flu1(i) = qmv5 + qmv6 + qmv7 + qmv8
173 ENDDO
174 END IF
175
176 IF(itrimat > 0)THEN
177 DO i=lft,llt
178 ddvol(i)=half * ( flu1(i)+flux(1,i)+flux(2,i)+flux(3,i)+flux(4,i) )
179 ENDDO
180 ENDIF
181
182 RETURN