36
37
38
39
40
41
42
43
44
50
51
52
53#include "implicit_f.inc"
54
55
56
57#include "spmd_c.inc"
58#include "vect01_c.inc"
59#include "com04_c.inc"
60
61
62
63 INTEGER, INTENT(IN) :: NV46
64 my_real,
INTENT(OUT) :: flux(nv46, *)
65 my_real,
INTENT(IN) :: x(3, numnod)
66 INTEGER, INTENT(IN) :: IXQ(NIXQ, NUMELQ)
67 my_real,
INTENT(OUT) :: flux_vois(numelq+nqvois, nv46)
68 INTEGER, INTENT(OUT) :: N4_VOIS(NUMELQ+NQVOIS,8)
69 INTEGER, INTENT(IN) :: ITAB(NUMNOD)
70 INTEGER, INTENT(IN) :: ITRIMAT
71 TYPE(t_segvar),INTENT(IN) :: SEGVAR
72 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
73
74
75
76 INTEGER :: I, II, KK, JJ, IAD2, IAD3
77 INTEGER :: NEIGHBOOR_LIST(NV46), FACE_NEIGHBOOR(NV46)
81 INTEGER :: FACE_TO_NODE_LOCAL_ID(4, 2), NODEID1, NODEID2
82
83
84
85
86
87 face_to_node_local_id(1, 1) = 1 ; face_to_node_local_id(1, 2) = 2
88
89 face_to_node_local_id(2, 1) = 2 ; face_to_node_local_id(2, 2) = 3
90
91 face_to_node_local_id(3, 1) = 3 ; face_to_node_local_id(3, 2) = 4
92
93 face_to_node_local_id(4, 1) = 4 ; face_to_node_local_id(4, 2) = 1
94
95 DO i = lft, llt
96 ii = i + nft
97 iad2 = ale_connect%ee_connect%iad_connect(ii)
98
101
102 DO kk = 1, nv46
103
104 IF (flux(kk, ii) > zero) THEN
105
106 neighboor_list(kk) = ale_connect%ee_connect%connected(iad2 + kk - 1)
107 face_neighboor(kk) = kk
108 IF (neighboor_list(kk) <= 0) THEN
109 IF(neighboor_list(kk)==0)neighboor_list(kk) = ii
110
111 ELSEIF (neighboor_list(kk) <= numelq) THEN
112 iad3 = ale_connect%ee_connect%iad_connect(neighboor_list(kk))
113
114 DO jj = 1, nv46
115 IF (ale_connect%ee_connect%connected(iad3 + jjTHEN
116 face_neighboor(kk) = jj
117 ENDIF
118 ENDDO
119 ENDIF
120
121 nodeid1 = ixq(1 + face_to_node_local_id(kk, 1), ii)
122 nodeid2 = ixq(1 + face_to_node_local_id(kk, 2), ii)
123
124 yf = half * (x(2, nodeid1) + x(2, nodeid2))
125 zf = half * (x(3, nodeid1) + x(3, nodeid2))
126
127
131
132
133 flux(kk, ii) = alphak * flux(kk, ii)
134 IF (neighboor_list(kk) > 0)THEN
135 IF (neighboor_list(kk) <= numelq) THEN
136
137 flux(face_neighboor(kk), neighboor_list(kk)) = -flux
138 ELSE
139
140 flux_vois(ii, kk) = flux(kk, ii)
141 n4_vois(ii, 1) = itab(ixq(2, ii))
142 n4_vois(ii, 2) = itab(ixq(3, ii))
143 n4_vois(ii, 3) = itab(ixq(4, ii))
144 n4_vois(ii, 4) = itab(ixq(5, ii))
145 ENDIF
146 ENDIF
147 ENDIF
148 ENDDO
149 ENDDO
150
151
152
153
154 IF(nsegflu > 0)THEN
155 DO i = lft, llt
156 ii = i + nft
157 iad2 = ale_connect%ee_connect%iad_connect(ii)
158 DO kk=1,4
159 IF(flux(kk,ii) < zero .AND. ale_connect%ee_connect%connected(iad2 +THEN
160 flux(kk,ii) = segvar%PHASE_ALPHA(itrimat,-ale_connect%ee_connect%connected(iad2 + kk - 1))*flux(kk,ii)
161 ENDIF
162 ENDDO
163 ENDDO
164 ENDIF
165
166
type(alemuscl_buffer_) alemuscl_buffer