31 . X_TMP,D_TMP,V_TMP,MS_TMP,WIGE_TMP,
32 . TAB_REMOVE,TAB_NEWFCT,EL_CONNECT,
33 . IPARTIG3D,IGEO,TAB_STAY,FLAG_PRE,FLAG_DEBUG)
46#include "implicit_f.inc"
56 INTEGER IXIG3D(*),KXIG3D(NIXIG3D,*),IGEO(NPROPGI,*),
57 . IPARTIG3D(*),TAB_NEWFCT(*),TAB_REMOVE(*),
58 . TAB_STAY(*),FLAG_PRE,EL_CONNECT(*),FLAG_DEBUG
59 my_real knotlocpc(deg_max,3,*),knotlocel(2,3,*)
60 my_real x_tmp(3,*),v_tmp(3,*),d_tmp(3,*),ms_tmp(*),wige_tmp(*)
64 INTEGER I,J,K,L,M,IAD_IXIG3D,INCTRL,L_TABWORK,WORK(70000),
65 . NDOUBLON_REMOVE, NDOUBLON_NEWFCT, L_REAL_REMOVE, L_REAL_NEWFCT,NVALEURS,
66 . DECALIXIG3D,DECALGEO,DECALGEOFINAL,
67 . nzero_remove,nzero_newfct,itpatch,numpcstay,numpcleave,
68 . nctrl,ipid,px,py,pz,ndoublonige,itnctrl,inctrl2,inctrl3,inctrl4
69 INTEGER TMPZ(4),TMPZY(4),TABPOSZ(64),TABPOSZY(64),TABPOSZYX(64)
71 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX, TAB_REMOVE_TRI, TAB_NEWFCT_TRI
72 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PERMIGE
73 my_real,
DIMENSION(:,:),
ALLOCATABLE :: x_trie
82 ALLOCATE(tab_remove_tri(l_tab_remove))
84 ALLOCATE(index(2*l_tab_remove))
85 CALL my_orders(0, work, tab_remove, index, l_tab_remove , 1)
87 tab_remove_tri(i)=tab_remove(index(i))
94 ALLOCATE(tab_newfct_tri(l_tab_newfct))
96 ALLOCATE(index(2*l_tab_newfct))
97 CALL my_orders(0, work, tab_newfct, index, l_tab_newfct , 1)
99 tab_newfct_tri(i)=tab_newfct(index(i))
112 IF(nbpart_ig3d>1)
THEN
114 DO WHILE (i<=l_tab_remove-ndoublon_remove-1)
116 tab_remove(i) = tab_remove_tri(i+ndoublon_remove)
117 DO WHILE (((i+ndoublon_remove+nvaleurs+1)<=l_tab_remove
118 . .AND. (tab_remove(i+ndoublon_remove)==tab_remove
119 nvaleurs = nvaleurs + 1
121 ndoublon_remove = ndoublon_remove + nvaleurs
126 l_real_remove = l_tab_remove - ndoublon_remove
131 DO WHILE (i<=l_tab_newfct
133 tab_newfct(i) = tab_newfct_tri(i+ndoublon_newfct
134 DO WHILE (((i+ndoublon_newfct+nvaleurs+1)<=l_tab_newfct)
135 . .AND. (tab_newfct(i+ndoublon_newfct)==tab_newfct(i+ndoublon_newfct+nvaleurs+1)))
136 nvaleurs = nvaleurs + 1
138 ndoublon_newfct = ndoublon_newfct + nvaleurs
143 l_real_newfct = l_tab_newfct - ndoublon_newfct
150 DO WHILE (i<=l_real_remove)
152 DO WHILE (j<=l_real_newfct)
153 IF(tab_remove_tri(i)==tab_newfct_tri(j))
THEN
154 tab_remove_tri(i) = 0
155 tab_newfct_tri(j) = 0
164 DO WHILE (i<=l_real_remove-nzero_remove)
166 DO WHILE ((i+nzero_remove+nvaleurs)<=l_real_remove.AND.
167 . tab_remove_tri(i+nzero_remove+nvaleurs)==0)
170 nzero_remove = nzero_remove + nvaleurs
171 tab_remove_tri(i) = tab_remove_tri(i+nzero_remove)
177 DO WHILE (i<=l_real_newfct-nzero_newfct)
179 DO WHILE ((i+nzero_newfct+nvaleurs)<=l_real_newfct.AND.
180 . tab_newfct_tri(i+nzero_newfct+nvaleurs)==0)
183 nzero_newfct = nzero_newfct + nvaleurs
184 tab_newfct_tri(i) = tab_newfct_tri(i+nzero_newfct)
188 l_real_remove = l_tab_remove - nzero_remove
189 l_real_newfct = l_tab_newfct - nzero_newfct
190 nbnewx_final = l_real_newfct - l_real_remove
202 DO WHILE (i<=l_real_remove)
203 x_tmp(:,tab_remove_tri(i)) = x_tmp(:,tab_newfct_tri(i))
204 d_tmp(:,tab_remove_tri(i)) = d_tmp(:,tab_newfct_tri(i))
205 v_tmp(:,tab_remove_tri(i)) = v_tmp(:,tab_newfct_tri(i))
206 ms_tmp(tab_remove_tri(i)) = ms_tmp(tab_newfct_tri(i))
207 wige_tmp(tab_remove_tri(i)) = wige_tmp(tab_newfct_tri(i))
211 decalgeo=(itpatch-1)*(numnod+nbnewx_tmp)
212 knotlocpc(:,1,decalgeo+tab_remove_tri(i)) = knotlocpc(:,1,decalgeo
213 knotlocpc(:,2,decalgeo+tab_remove_tri(i)) = knotlocpc(:,2,decalgeo+tab_newfct_tri(i))
214 knotlocpc(:,3,decalgeo+tab_remove_tri(i)) = knotlocpc(:,3,decalgeo+tab_newfct_tri(i))
217 DO WHILE(j<=sixig3d+addsixig3d)
218 DO WHILE(ixig3d(j)==tab_newfct_tri(i).AND.j<=sixig3d
229 DO WHILE (i<=l_real_newfct)
230 x_tmp(:,numnodige0+j) = x_tmp(:,tab_newfct_tri(i))
231 d_tmp(:,numnodige0+j) = d_tmp(:,tab_newfct_tri(i))
232 v_tmp(:,numnodige0+j) = v_tmp(:,tab_newfct_tri(i))
233 ms_tmp(numnodige0+j) = ms_tmp(tab_newfct_tri(i))
234 wige_tmp(numnodige0+j) = wige_tmp(tab_newfct_tri
236 decalgeo=(itpatch-1)*(numnod+nbnewx_tmp)
237 knotlocpc(:,1,decalgeo+numnodige0+j) = knotlocpc(:,1,decalgeo+tab_newfct_tri(i))
238 knotlocpc(:,2,decalgeo+numnodige0+j) = knotlocpc(:,2,decalgeo+tab_newfct_tri(i))
239 knotlocpc(:,3,decalgeo+numnodige0+j) = knotlocpc(:,3,decalgeo+tab_newfct_tri(i))
242 DO WHILE(k<=sixig3d+addsixig3d)
243 DO WHILE(ixig3d(k)==tab_newfct_tri(i).AND.k<=sixig3d+addsixig3d)
245 ixig3d(k)=numnodige0+j
265 IF(nbpart_ig3d>1)
THEN
266 ALLOCATE(permige(numnod))
267 ALLOCATE(x_trie(3,numnod))
269 x_trie(:,i) = x_tmp(:,i)
275 DO WHILE (i <= numnod-ndoublonige-1)
277 DO WHILE (((i+ndoublonige+nvaleurs+1) <= numnod)
278 . .AND. (abs(x_trie(1,i+ndoublonige)-x_trie
279 . .AND. (abs(x_trie(2,i+ndoublonige
280 . .AND. (abs(x_trie(3,i+ndoublonige)-x_trie(3,i+ndoublonige+nvaleurs+1)) <= tol))
291 IF(permige(i+ndoublonige)==tab_stay(k))
THEN
292 numpcstay = permige(i+ndoublonige)
293 numpcleave = permige(i+ndoublonige+nvaleurs+1)
296 IF(permige(i+ndoublonige+nvaleurs+1)==tab_stay(k))
THEN
297 numpcstay = permige(i+ndoublonige+nvaleurs+1)
298 numpcleave = permige(i+ndoublonige)
302 IF(numpcstay==0.AND.numpcleave==0)
THEN
303 numpcstay = permige(i+ndoublonige)
304 numpcleave = permige(i+ndoublonige+nvaleurs+1)
311 DO WHILE(j<=sixig3d+addsixig3d)
312 DO WHILE(ixig3d(j)==numpcleave.AND.j<=sixig3d+addsixig3d)
321 DO itpatch=1,nbpart_ig3d
322 decalgeo=(itpatch-1)*(numnod+nbnewx_tmp)
325 IF(knotlocpc(k,1,decalgeo+numpcleave)/=0)
THEN
326 knotlocpc(:,1,decalgeo+numpcstay)=knotlocpc(:,1,decalgeo+numpcleave)
327 knotlocpc(:,2,decalgeo+numpcstay)=knotlocpc(:,2,decalgeo+numpcleave)
328 knotlocpc(:,3,decalgeo+numpcstay)=knotlocpc(:,3,decalgeo+numpcleave)
334 nvaleurs = nvaleurs + 1
337 ndoublonige = ndoublonige + nvaleurs
351 DEALLOCATE(tab_remove_tri)
352 DEALLOCATE(tab_newfct_tri)
362 DO i=1,numelig3d0+addelig3d
364 IF(el_connect(i)/=1) cycle
366 decalixig3d=kxig3d(4,i)
367 decalgeo=(kxig3d(2,i)-1)*(numnod+nbnewx_tmp)
378 IF(knotlocpc(k,3,decalgeo+ixig3d(decalixig3d+j-1))<knotlocel(1,3,i)+tol.AND.
379 . knotlocpc(k+1,3,decalgeo+ixig3d(decalixig3d+j-1))>knotlocel(2,3,i)-tol)
THEN
382 tabposz((k-1)*(px*py)+tmpz(k)) = ixig3d(decalixig3d+j-1)
392 IF(knotlocpc(l,2,decalgeo+tabposz((j-1)*(px*py)+k))<knotlocel(1,2,i)+tol.AND.
393 . knotlocpc(l+1,2,decalgeo+tabposz((j-1)*(px*py)+k))>knotlocel(2,2,i)-tol)
THEN
396 tabposzy((j-1)*(px*py)+(l-1)*py+tmpzy(l)) = tabposz((j-1)*(px*py)+k)
407 IF(knotlocpc(m,1,decalgeo+tabposzy((j-1)*(px*py)+(k-1)*py+l))<knotlocel(1,1,i)+tol.AND.
408 . knotlocpc(m+1,1,decalgeo+tabposzy((j-1)*(px*py)+(k-1)*py+l))>knotlocel(2,1,i)-tol)
THEN
410 tabposzyx((j-1)*(px*py)+(k-1)*py+m) = tabposzy((j-1)*(px*py)+(k-1)*py+l)
423 ixig3d(decalixig3d+j-1)=tabposzyx(j)
431 IF(flag_debug==1)
THEN
433 inctrl=ixig3d(kxig3d(4,i)+j-1)
434 IF(knotlocel(1,1,i)<knotlocpc(1,1,decalgeo+inctrl)-em06 .OR.
435 . knotlocel(2,1,i)>knotlocpc(4,1,decalgeo+inctrl)+em06 .OR.
436 . knotlocel(1,2,i)<knotlocpc(1,2,decalgeo+inctrl)-em06 .OR.
437 . knotlocel(2,2,i)>knotlocpc(4,2,decalgeo+inctrl)+em06 .OR.
438 . knotlocel(1,3,i)<knotlocpc(1,3,decalgeo+inctrl)-em06 .OR.
439 . knotlocel(2,3,i)>knotlocpc(4,3,decalgeo+inctrl)+em06)
THEN
440 print*,
'DECALAGE : element : ',i,
'point',inctrl
441 print*,
'*************'
443 print*,ixig3d(decalixig3d+k-1)
456 itnctrl=(px*py)*(j-1)+px*(k-1)+l
458 inctrl=ixig3d(kxig3d(4,i)+itnctrl-1)
459 inctrl2=ixig3d(kxig3d(4,i)+itnctrl-1+1)
460 IF(knotlocpc(1,1,decalgeo+inctrl)<knotlocpc(1,1,decalgeo+inctrl2))
THEN
461 print*,
'MAUVAIS RANGEMENT DANS IXIG3D : element : ',i,
'point',inctrl
464 inctrl3=ixig3d(kxig3d(4,i)+itnctrl-1+px)
465 IF(knotlocpc(1,2,decalgeo+inctrl)<knotlocpc(1,2,decalgeo+inctrl3))
THEN
466 print*,
'MAUVAIS RANGEMENT DANS IXIG3D : element : ',i,
'point',inctrl
469 inctrl4=ixig3d(kxig3d(4,i)+itnctrl-1+px*py)
470 IF(knotlocpc(1,3,decalgeo+inctrl)<knotlocpc(1,3,decalgeo+inctrl4))
THEN
471 print*,
'MAUVAIS RANGEMENT DANS IXIG3D : element : ',i,
'point',inctrl