32 SUBROUTINE c_ixfloc(NUMEL,IXSF,IXQF,IXTGF,NSVOIS,
33 + NQVOIS,NTGVOIS,PROC,IPARG,CEP,CEL,
34 + ALE_CONNECTIVITY,ee_connect_l,IXS,IXQ,IXTG,NODLOCAL,NUMELS_L,NUMELQ_L,NUMELTG_L,MULTI_FVM,
35 + ID_GLOBAL_VOIS,INDX_S,INDX_Q,INDX_TG,FACE_ELM_S,FACE_ELM_Q,FACE_ELM_TG,FACE_VOIS,ISHADOW)
44#include "implicit_f.inc"
54 INTEGER NSVOIS, NQVOIS, NTGVOIS, PROC, NUMEL,
55 . NUMELS_L,NUMELQ_L,NUMELTG_L,
56 . IXSF(NIXS,NSVOIS) ,IXQF(NIXQ,NQVOIS),IXTGF(NIXTG,NTGVOIS),
57 . iparg(nparg,*),cep(*),cel(*),
58 . ixs(nixs,*), ixq(nixq,*), ixtg(nixtg,*),nodlocal(*)
59 INTEGER,
DIMENSION(*),
INTENT(OUT) :: ID_GLOBAL_VOIS,FACE_VOIS
60 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
62 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_S
63 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_Q
64 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_TG
66 INTEGER,
DIMENSION(6*NUMELS,*),
INTENT(in) :: FACE_ELM_S
67 INTEGER,
DIMENSION(4*NUMELQ,*),
INTENT(in) :: FACE_ELM_Q
68 INTEGER,
DIMENSION(3*NUMELTG,*),
INTENT(in) :: FACE_ELM_TG
71 LOGICAL,
INTENT(IN) :: ISHADOW
75 INTEGER I, J, K, NG, IFS, IFQ, IFTG,IE_LOC, IV_LOC
76 INTEGER JTUR,JTHE,ITY,IE,NFT,NEL,IV,PROC2,NFT_LOC,IAD1, LGTH, IAD2
77 INTEGER NUMEL_L, TMP, IALEUL
78 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGE, nb_connect_l
79 LOGICAL IS_HEXA,IS_QUAD,IS_TRIA
86 IF (iparg(32, ng) == proc)
THEN
88 numel_l = numel_l + nel
91 ALLOCATE(ee_connect_l%iad_connect(numel_l + 1))
92 ee_connect_l%iad_connect(1:numel_l + 1) = 0
93 ALLOCATE(nb_connect_l(numel_l))
94 nb_connect_l(1:numel_l) = 0
99 IF (iparg(32, ng) == proc)
THEN
102 ialeul = iparg(7, ng) + iparg(11, ng)
107 IF(ity == 1)is_hexa=.true.
108 IF(ity == 2)is_quad=.true.
109 IF(ity == 7 .AND. n2d > 0)is_tria=.true.
110 IF(is_hexa .OR. is_quad .OR. is_tria)
THEN
111 IF (ialeul /= 0 .OR. ishadow)
THEN
118 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
119 nb_connect_l(ie_loc) = lgth
123 nft_loc = nft_loc + nel
126 ee_connect_l%iad_connect(1) = 1
127 DO i = 2, numel_l + 1
128 ee_connect_l%iad_connect(i) = ee_connect_l%iad_connect(i - 1) + nb_connect_l(i - 1)
130 tmp = ee_connect_l%iad_connect(numel_l + 1) - 1
131 ALLOCATE(ee_connect_l%connected(tmp)) ; ee_connect_l%connected(1:tmp) = 0
132 ALLOCATE(ee_connect_l%type(tmp)) ; ee_connect_l%type(1:tmp) = 0
133 ALLOCATE(ee_connect_l%iface2(tmp)) ; ee_connect_l%iface2(1:tmp) = 0
135 ALLOCATE(tage(numel))
147 IF(iparg(32,ng)==proc)
THEN
156 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
157 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
161 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
162 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
170 tage(iv) = numels_l+ifs
173 ixsf(k,ifs) = ixs(k,iv)
176 ixsf(k,ifs) = nodlocal(ixs(k,iv))
183 ee_connect_l%connected(iad2) = tage(iv)
185 id_global_vois( (ie_loc-1)*6+j ) = ixs(nixs,iv)
187 IF( ixs(nixs,iv)==face_elm_s(6*(ie-1)+k,2) )
THEN
188 face_vois( (ie_loc-1)*6+j ) = face_elm_s(6*(ie-1)+k,1)
193 ee_connect_l%connected(iad2) = iv_loc
194 id_global_vois( (ie_loc-1)*6+j ) = ixs(nixs,iv)
197 ee_connect_l%connected(iad2) = iv
198 id_global_vois( (ie_loc-1)*6+j
200 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
201 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1 + j - 1)
204 nft_loc = nft_loc + nel
210 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
211 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
215 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
216 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
224 tage(iv) = numelq_l+ifq
227 ixqf(k,ifq) = ixq(k,iv)
230 ixqf(k,ifq) = nodlocal(ixq(k,iv))
233 ixqf(k,ifq) = ixq(k,iv)
237 ee_connect_l%connected(iad2) = tage(iv)
238 id_global_vois( (ie_loc-1)*4+j ) = ixq(nixq,iv)
240 IF( ixq(nixq,iv)==face_elm_q(4*(ie-1)+k,2) )
THEN
241 face_vois( (ie_loc-1)*4+j ) = face_elm_q(4*(ie-1)+k,1)
246 ee_connect_l%connected(iad2) = iv_loc
247 id_global_vois( (ie_loc-1)*4+j ) = ixq(nixq,iv)
250 ee_connect_l%connected(iad2) = iv
251 id_global_vois( (ie_loc-1)*4+j ) = 0
253 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
254 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1
257 nft_loc = nft_loc + nel
258 ELSEIF(ity == 7 .AND. (n2d /= 0 .AND. multi_fvm%IS_USED))
THEN
263 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
264 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
268 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
269 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
277 tage(iv) = numeltg_l+iftg
280 ixtgf(k,iftg) = ixtg(k,iv)
283 ixtgf(k,iftg) = nodlocal(ixtg(k,iv))
286 ixtgf(k,iftg) = ixtg(k,iv)
290 ee_connect_l%connected(iad2) = tage(iv)
291 id_global_vois( (ie_loc-1)*3+j ) = ixtg(nixtg,iv)
294 IF( ixtg(nixtg,iv)==face_elm_tg(3*(ie-1)+k,2) )
THEN
295 face_vois( (ie_loc-1)*3+j ) = face_elm_tg(3*(ie-1)+k,1)
301 ee_connect_l%connected(iad2) = iv_loc
302 id_global_vois( (ie_loc-1)*3+j ) = ixtg(nixtg,iv)
305 ee_connect_l%connected(iad2) = iv
306 id_global_vois( (ie_loc-1)*3+j ) = 0
308 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
309 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1 + j -
312 nft_loc = nft_loc + nel
317 DEALLOCATE(nb_connect_l)
subroutine c_ixfloc(numel, ixsf, ixqf, ixtgf, nsvois, nqvois, ntgvois, proc, iparg, cep, cel, ale_connectivity, ee_connect_l, ixs, ixq, ixtg, nodlocal, numels_l, numelq_l, numeltg_l, multi_fvm, id_global_vois, indx_s, indx_q, indx_tg, face_elm_s, face_elm_q, face_elm_tg, face_vois, ishadow)