33
34
35
38
39
40
41#include "implicit_f.inc"
42
43
44
45 INTEGER, INTENT(IN) :: N2D
46 INTEGER, INTENT(IN) :: NGROUP, NPARG
47 INTEGER, INTENT(IN) :: PROC, NUMEL
48 INTEGER, INTENT(IN) :: NUMELS_L, NUMELQ_L, NUMELTG_L
49 INTEGER, INTENT(IN) :: NUMELS_G, NUMELQ_G, NUMELTG_G
50 INTEGER, INTENT(IN) :: CEL(*), CEP(*)
51 INTEGER, INTENT(IN) :: IXS(NIXS, NUMELS_G), IXQ(NIXQ, NUMELQ_G), IXTG(NIXTG, NUMELTG_G)
52 INTEGER, INTENT(IN) :: IPARG(NPARG, NGROUP)
53 INTEGER, INTENT(INOUT) :: IDGLOB_L(*), UIDGLOB_L(*)
54 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
55
56
57
58 INTEGER :: PROCI, II, JJ, I, J, I_LOC, NEL, ITY, NFT, ICOUNT,NG, PROCJ, IAD1, LGTH
59 INTEGER :: NELEM_L
60 INTEGER, DIMENSION(:), ALLOCATABLE :: TAG
61
62
63
64 ALLOCATE(tag(numel))
65 tag(1:numel) = 0
66
67 icount = 0
68 nelem_l = 0
69 DO ng = 1, ngroup
70 nel = iparg(2, ng)
71 nft = iparg(3, ng)
72 ity = iparg(5, ng)
73 IF (ity == 1) THEN
74
75 nelem_l = numels_l
76 DO ii = 1, nel
77 i = ii + nft
78 iad1 = ale_connectivity%ee_connect%iad_connect(i)
79 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
80 proci = cep(i)
81 IF (proci == proc) THEN
82 i_loc = cel(i)
84 uidglob_l(i_loc) = ixs(nixs, i)
85 DO jj = 1, lgth
86 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
87 IF (j > 0) THEN
88 procj = cep(j)
89 IF (procj /= proc .AND. tag(j) == 0) THEN
90 icount = icount + 1
92 uidglob_l(nelem_l + icount) = ixs(nixs, j)
93 tag(j) = 1
94 ENDIF
95 ENDIF
96 ENDDO
97 ENDIF
98 ENDDO
99
100 ELSEIF( ity == 2)THEN
101
102 nelem_l = numelq_l
103 DO ii = 1, nel
104 i = ii + nft
105 iad1 = ale_connectivity%ee_connect%iad_connect(i)
106 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
107 proci = cep(i)
108 IF (proci == proc) THEN
109 i_loc = cel(i)
111 uidglob_l(i_loc) = ixq(nixq, i)
112 DO jj = 1, lgth
113 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
114 IF (j > 0) THEN
115 procj = cep(j)
116 IF (procj /= proc .AND. tag(j) == 0) THEN
117 icount = icount + 1
119 uidglob_l(nelem_l + icount) = ixq(nixq, j)
120 tag(j) = 1
121 ENDIF
122 ENDIF
123 ENDDO
124 ENDIF
125 ENDDO
126
127 ELSEIF(ity == 7 .AND. n2d >= 0)THEN
128
129 nelem_l = numeltg_l
130 DO ii = 1, nel
131 i = ii + nft
132 iad1 = ale_connectivity%ee_connect%iad_connect(i)
133 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
134 proci = cep(i)
135 IF (proci == proc) THEN
136 i_loc = cel(i)
138 uidglob_l(i_loc) = ixtg(nixtg, i)
139 DO jj = 1, lgth
140 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
141 IF (j > 0) THEN
142 procj = cep(j)
143 IF (procj /= proc .AND. tag(j) == 0) THEN
144 icount = icount + 1
146 uidglob_l(nelem_l + icount) = ixtg(nixtg , j)
147 tag(j) = 1
148 ENDIF
149 ENDIF
150 ENDDO
151 ENDIF
152 ENDDO
153 ELSE
154
155 cycle
156 ENDIF
157
158 ENDDO
159
160 DEALLOCATE(tag)
type(reorder_struct_) permutation