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)
41 use element_mod ,
only : nixs,nixq,nixtg
45#include "implicit_f.inc"
55INTEGER NSVOIS, NQVOIS, NTGVOIS, PROC, NUMEL,
56 . NUMELS_L,NUMELQ_L,NUMELTG_L,
57 . IXSF(NIXS,NSVOIS) ,IXQF(NIXQ,NQVOIS),IXTGF(NIXTG,NTGVOIS),
58 . iparg(nparg,*),cep(*),cel(*),
59 . ixs(nixs,*), ixq(nixq,*), ixtg(nixtg,*),nodlocal(*)
60 INTEGER,
DIMENSION(*),
INTENT(OUT) :: ID_GLOBAL_VOIS,FACE_VOIS
61 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
63 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_S
64 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_Q
65 INTEGER,
DIMENSION(*),
INTENT(in) :: INDX_TG
67 INTEGER,
DIMENSION(6*NUMELS,*),
INTENT(in) :: FACE_ELM_S
68 INTEGER,
DIMENSION(4*NUMELQ,*),
INTENT(in) :: FACE_ELM_Q
69 INTEGER,
DIMENSION(3*NUMELTG,*),
INTENT(in) :: FACE_ELM_TG
72 LOGICAL,
INTENT(IN) :: ISHADOW
76 INTEGER I, J, K, NG, IFS, IFQ, IFTG,IE_LOC, IV_LOC
77 INTEGER JTUR,JTHE,ITY,IE,NFT,NEL,IV,,NFT_LOC,IAD1, LGTH, IAD2
78 INTEGER NUMEL_L, TMP, IALEUL
79 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGE, nb_connect_l
80 LOGICAL IS_HEXA,IS_QUAD,IS_TRIA
87 IF (iparg(32, ng) == proc)
THEN
89 numel_l = numel_l + nel
92 ALLOCATE(ee_connect_l%iad_connect(numel_l + 1))
93 ee_connect_l%iad_connect(1:numel_l + 1) = 0
94 ALLOCATE(nb_connect_l(numel_l))
95 nb_connect_l(1:numel_l) = 0
100 IF (iparg(32, ng) == proc)
THEN
103 ialeul = iparg(7, ng) + iparg(11, ng)
108 IF(ity == 1)is_hexa=.true.
109 IF(ity == 2)is_quad=.true.
110 IF(ity == 7 .AND. n2d > 0)is_tria=.true.
111 IF(is_hexa .OR. is_quad .OR. is_tria)
THEN
112 IF (ialeul /= 0 .OR. ishadow)
THEN
119 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
120 nb_connect_l(ie_loc) = lgth
124 nft_loc = nft_loc + nel
127 ee_connect_l%iad_connect(1) = 1
128 DO i = 2, numel_l + 1
129 ee_connect_l%iad_connect(i) = ee_connect_l%iad_connect(i - 1) + nb_connect_l(i - 1)
131 tmp = ee_connect_l%iad_connect(numel_l + 1) - 1
132 ALLOCATE(ee_connect_l%connected(tmp)) ; ee_connect_l%connected(1:tmp) = 0
133 ALLOCATE(ee_connect_l%type(tmp)) ; ee_connect_l%type(1:tmp) = 0
134 ALLOCATE(ee_connect_l%iface2(tmp)) ; ee_connect_l%iface2(1:tmp) = 0
136 ALLOCATE(tage(numel))
148 IF(iparg(32,ng)==proc)
THEN
157 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
158 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
162 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
163 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
171 tage(iv) = numels_l+ifs
174 ixsf(k,ifs) = ixs(k,iv)
177 ixsf(k,ifs) = nodlocal(ixs(k,iv))
180 ixsf(k,ifs) = ixs(k,iv)
184 ee_connect_l%connected(iad2) = tage(iv)
186 id_global_vois( (ie_loc-1)*6+j ) = ixs(nixs,iv)
188 IF( ixs(nixs,iv)==face_elm_s(6*(ie-1)+k,2) )
THEN
189 face_vois( (ie_loc-1)*6+j ) = face_elm_s(6*(ie-1)+k,1)
194 ee_connect_l%connected(iad2) = iv_loc
195 id_global_vois( (ie_loc-1)*6+j ) = ixs(nixs,iv)
198 ee_connect_l%connected(iad2) = iv
199 id_global_vois( (ie_loc-1)*6+j ) = 0
201 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
202 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1 + j - 1)
205 nft_loc = nft_loc + nel
211 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
212 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
216 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
217 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
225 tage(iv) = numelq_l+ifq
228 ixqf(k,ifq) = ixq(k,iv)
231 ixqf(k,ifq) = nodlocal(ixq(k,iv))
234 ixqf(k,ifq) = ixq(k,iv)
238 ee_connect_l%connected(iad2) = tage(iv)
239 id_global_vois( (ie_loc-1)*4+j ) = ixq(nixq,iv)
241 IF( ixq(nixq,iv)==face_elm_q(4*(ie-1)+k,2) )
THEN
242 face_vois( (ie_loc-1)*4+j ) = face_elm_q(4*(ie-1)+k,1)
247 ee_connect_l%connected(iad2) = iv_loc
248 id_global_vois( (ie_loc-1)*4+j ) = ixq(nixq,iv)
251 ee_connect_l%connected(iad2) = iv
252 id_global_vois( (ie_loc-1)*4+j ) = 0
254 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
255 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1 + j - 1)
258 nft_loc = nft_loc + nel
259 ELSEIF(ity == 7 .AND. (n2d /= 0 .AND. multi_fvm%IS_USED))
THEN
264 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
265 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
269 iv = ale_connectivity%ee_connect%connected(iad1 + j - 1)
270 iad2 = ee_connect_l%iad_connect(ie_loc) + j - 1
278 tage(iv) = numeltg_l+iftg
281 ixtgf(k,iftg) = ixtg(k,iv)
284 ixtgf(k,iftg) = nodlocal(ixtg(k,iv))
287 ixtgf(k,iftg) = ixtg(k,iv)
291 ee_connect_l%connected(iad2) = tage(iv)
292 id_global_vois( (ie_loc-1)*3+j ) = ixtg(nixtg,iv)
295 IF( ixtg(nixtg,iv)==face_elm_tg(3*(ie-1)+k,2) )
THEN
296 face_vois( (ie_loc-1)*3+j ) = face_elm_tg(3*(ie-1)+k,1)
302 ee_connect_l%connected(iad2) = iv_loc
303 id_global_vois( (ie_loc-1)*3+j ) = ixtg(nixtg,iv)
306 ee_connect_l%connected(iad2) = iv
307 id_global_vois( (ie_loc-1)*3+j ) = 0
309 ee_connect_l%type(iad2) = ale_connectivity%ee_connect%type(iad1 + j - 1)
310 ee_connect_l%iface2(iad2) = ale_connectivity%ee_connect%iface2(iad1 + j - 1)
313 nft_loc = nft_loc + nel
318 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)