37 . IADMERGE2,NMERGE_TOT,MERGE_NODE_TAB,MERGE_NODE_TOL,
38 . NMERGE_NODE_CAND,NMERGE_NODE_DEST,IXS,IXS10,IXS20,
39 . IXS16,IXQ,IXC,IXT,IXP,
40 . IXR,IXTG,EANI,IGRNOD)
47#include "implicit_f.inc"
56 INTEGER ITAB(NUMNOD), ITABM1(2*NUMNOD),IMERGE(*),
57 . IMERGE2(NUMNOD+1),IADMERGE2(NUMNOD+1),MERGE_NODE_TAB(4,*),
58 . NMERGE_NODE_CAND,NMERGE_NODE_DEST,NMERGE_TOT
59 INTEGER IXS(NIXS,*),IXS10(6,*),IXS16(8,*),IXS20(12,*),IXQ(NIXQ,*),
60 . ixc(nixc,*),ixt(nixt,*),ixp(nixp,*),ixr(nixr,*),
61 . ixtg(nixtg,*),eani(*)
64 . x(3,numnod),merge_node_tol(*)
65 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
69 INTEGER I,J,K,M,N,NUMNOD1,NM,FLAG,N_DEST,N_DEST_DEST,NN1,NN2,CUR_ID,GR_IDS,ALL_VS_ALL,
72 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IMERGE0,IADMERGE2TMP,LIST1
73INTEGER,
DIMENSION(:),
ALLOCATABLE :
74INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD_TEMP
75 ,
DIMENSION(:),
ALLOCATABLE :: DIST
91 numnod1 = numnod0-numcnod
95 dbuc =
max(dbuc,merge_node_tol(i
96 gr_ids = merge_node_tab(2,i)
97 IF (gr_ids == 0) all_vs_all = 1
104 nn1 = nmerge_node_cand
105 nn2 = nmerge_node_dest
107 ALLOCATE(imerge0(nn1),dist(nn1),list1(nmerge_node_cand),list2(nmerge_node_dest))
108 ALLOCATE(list1_inv(numnod),list2_inv(numnod),iadmerge2tmp(numnod+1))
109 ALLOCATE(list1_idmerge(nmerge_node_cand),list2_idmerge(nmerge_node_dest))
110 ALLOCATE(list1_nbmerge(nmerge_node_cand),list2_nbmerge(nmerge_node_dest))
111 ALLOCATE(tagnod_temp(numnod))
129 IF (all_vs_all == 1)
THEN
141 gr_ids = merge_node_tab(2,i)
142 DO j=1,igrnod(gr_ids)%NENTITY
143 IF (list1_inv(igrnod(gr_ids)%ENTITY(j)) == 0)
THEN
146 list1(nm) = igrnod(gr_ids)%ENTITY(j)
147 list1_inv(igrnod(gr_ids)%ENTITY(j)) = nm
148 list1_nbmerge(nm) = 1
149 list1_idmerge(nm) = i
152 nm_l = list1_inv(igrnod(gr_ids)%ENTITY(j))
154 list1_nbmerge(nm_l) = list1_nbmerge(nm_l) + 1
155 list1_idmerge(nm_l) = list1_idmerge(nm_l) + i*((2*nb_merge_node)**(list1_nbmerge(nm_l)-1))
162 IF (all_vs_all == 1)
THEN
174 gr_ids = merge_node_tab(2,i)
175 IF (merge_node_tab(1,i) == 1)
THEN
177 DO j=1,igrnod(gr_ids)%NENTITY
178 IF (list2_inv(igrnod(gr_ids)%ENTITY(j)) == 0)
THEN
181 list2(nm) = igrnod(gr_ids)%ENTITY(j)
182 list2_inv(igrnod(gr_ids)%ENTITY(j)) = nm
183 list2_nbmerge(nm) = 1
184 list2_idmerge(nm) = i
187 nm_l = list2_inv(igrnod(gr_ids)%ENTITY(j))
189 list2_nbmerge(nm_l) = list2_nbmerge(nm_l) + 1
190 list2_idmerge(nm_l) = list2_idmerge(nm_l) + i*((2*nb_merge_node)**(list2_nbmerge(nm_l)-1))
195 iss = i+nb_merge_node
196 tagnod_temp(1:numnod) = 0
197 DO j=1,igrnod(gr_ids)%NENTITY
198 tagnod_temp(igrnod(gr_ids)%ENTITY(j)) = 1
201 IF (tagnod_temp(j)==0)
THEN
202 IF (list2_inv(j) == 0)
THEN
207 list2_nbmerge(nm) = 1
208 list2_idmerge(nm) = iss
213 list2_nbmerge(nm_l) = list2_nbmerge(nm_l) + 1
214 list2_idmerge(nm_l) = list2_idmerge(nm_l) + iss*((2*nb_merge_node)**(list2_nbmerge(nm_l)-1))
223 . dbuc,nn1,nn2,list1,list2,
224 . dist,flag,list1_idmerge,list1_nbmerge,list2_idmerge,
232 IF (imerge0(i) > 0)
THEN
234 n_dest =
usrtos(imerge0(i),itabm1)
241 IF (ixc(k,
nod2elc(j)) == n_dest) flag = 1
254 IF(ixs(k,
nod2els(j)) == n_dest) flag = 1
256 IF (eani(cur_id)==10)
THEN
258 IF(ixs10(k,cur_id-numels8) == n_dest) flag = 1
260 ELSEIF (eani(cur_id)==20)
THEN
262 IF(ixs20(k,cur_id-numels8-numels10) == n_dest) flag = 1
264 ELSEIF (eani(cur_id)==16)
THEN
266 IF(ixs16(k,cur_id-numels8-numels10
273 IF (cur_id <= numelt
THEN
275 IF (ixt(k,
nod2el1d(j)) == n_dest) flag = 1
277 ELSEIF (cur_id <= numelt + numelp)
THEN
279 IF (ixp(k,cur_id-numelt) == n_dest) flag = 1
283 IF (ixr(k,cur_id-numelt-numelp) == n_dest) flag = 1
290 IF (cur_id <= numelt)
THEN
292 IF (ixt(k,
nod2el1d(j)) == n) flag = 1
294 ELSEIF (cur_id <= numelt + numelp)
THEN
296 IF (ixp(k,cur_id-numelt) == n) flag = 1
300 IF (ixr(k,cur_id-numelt-numelp) == n) flag = 1
307 IF (ixq(k,
nod2elq(j)) == n_dest) flag = 1
315 . msgtype=msgwarning,
316 . anmode=aninfo_blind_1,
317 . i1=itab(n),i2=itab(n_dest),
326 . msgtype=msgwarning,
327 . anmode=aninfo_blind_1,
334 IF (imerge0(i) > 0)
THEN
336 n_dest =
usrtos(imerge0(i),itabm1)
337 IF (list1_inv(n_dest) > 0)
THEN
338 IF (imerge0(list1_inv(n_dest)) > 0)
THEN
339 n_dest_dest =
usrtos(imerge0(list1_inv(n_dest)),itabm1)
341 IF (dist(list1_inv(n_dest)) > dist(i))
THEN
342 imerge0(list1_inv(n_dest)) = 0
344 . msgtype=msgwarning,
345 . anmode=aninfo_blind_1,
346 . i1=itab(n_dest),i2=itab(n_dest_dest),
347 . r1=dist(list1_inv(n_dest)),
353 . msgtype=msgwarning,
354 . anmode=aninfo_blind_1,
355 . i1=itab(n),i2=itab(n_dest),
365 . msgtype=msgwarning,
366 . anmode=aninfo_blind_1,
374 IF (imerge0(i) > 0)
THEN
377 imerge(nmerge_tot+numcnod+nm) =
usrtos(imerge0(i),itabm1)
378 imerge(numcnod+nm) = n
381 nmerged = nmerged + nm
386 IF (nmerged > 0)
THEN
387 tagnod_temp(1:numnod) = 0
389 IF (imerge(nmerge_tot+i) > 0)
THEN
390 n = imerge(nmerge_tot+i)
391 tagnod_temp(n) = tagnod_temp(n) + 1
397 iadmerge2(i) = iadmerge2(i-1) + tagnod_temp(i-1)
398 iadmerge2tmp(i) = iadmerge2tmp(i-1) + tagnod_temp(i-1)
401 IF (imerge(nmerge_tot+i) > 0)
THEN
402 n = imerge(nmerge_tot+i)
403 imerge2(iadmerge2tmp(n)) = imerge(i)
404 iadmerge2tmp(n)=iadmerge2tmp(n)+1
410 IF (numcnod == 0)
WRITE(iout,1000)
418 WRITE(iout,
'(5X,I10,8X,I10)')
419 . itab(imerge(numcnod+i)),itab(imerge(numcnod+nmerge_tot+i))
423 DEALLOCATE(imerge0,dist,list1,list2)
424 DEALLOCATE(list1_inv,list2_inv,iadmerge2tmp)
425 DEALLOCATE(list1_idmerge,list2_idmerge)
426 DEALLOCATE(list1_nbmerge,list2_nbmerge)
427 DEALLOCATE(tagnod_temp)
433 .
' --------------------------------------')
435 .
' NODE MERGED TO NODE '/)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)