84 . NIGETMP, NIGE, RIGETMP, RIGE,
85 . XIGETMP, XIGE, VIGETMP, VIGE,
94#include "implicit_f.inc"
102 INTEGER IADTABIGEINI,NDOUBLONSTOT,PERM(*), NIGETMP(*),NIGE(*)
107 . rigetmp(3,*), xigetmp(3,*), vigetmp(3,*),
108 . rige(3,*) , xige(3,*) , vige(3,*)
109 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
113 INTEGER NVALEURS, PERMUTE(IADTABIGEINI),NDOUBLONS,NBTABIGE
127 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
129 igrsurf(itsurf)%IAD_IGE = i-1
130 decalsurf=i+ndoublonstot-1
131 nbtabige=16*igrsurf(itsurf)%NSEG_IGE/9
132 iadtabige = iadtabige + nbtabige
135 DO WHILE(i+ndoublonstot+ndoublons<=iadtabige)
137 nige(i) = nigetmp(perm(i+ndoublonstot+ndoublons)+decalsurf)
138 rige(:,i) = rigetmp(:,perm(i+ndoublonstot+ndoublons)+decalsurf)
139 xige(:,i) = xigetmp(:,i+ndoublonstot+ndoublons)
140 vige(:,i) = vigetmp(:,perm(i+ndoublonstot+ndoublons)+decalsurf)
141 permute(perm(i+ndoublonstot+ndoublons)+decalsurf) = i - igrsurf(itsurf)%IAD_IGE
142 DO WHILE (((i+ndoublonstot+ndoublons+nvaleurs+1)<=decalsurf+nbtabige)
143 . .AND. (abs(xigetmp(1,i+ndoublonstot+ndoublons)-
144 . xigetmp(1,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol)
145 . .AND. (abs(xigetmp(2,i+ndoublonstot+ndoublons)-
146 . xigetmp(2,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol)
147 . .AND. (abs(xigetmp(3,i+ndoublonstot+ndoublons)-
148 . xigetmp(3,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol))
149 nvaleurs = nvaleurs + 1
150 permute(perm(i+ndoublonstot
152 ndoublons=ndoublons+nvaleurs
155 ndoublonstot=ndoublonstot+ndoublons
157 DO j=1,igrsurf(itsurf)%NSEG_IGE
159 igrsurf(itsurf)%NODES_IGE(j,k)=permute
166 numfakenodigeo=numfakenodigeo-ndoublonstot
176 . NIGETMP, NIGE, RIGETMP, RIGE,
177 . XIGETMP, XIGE, VIGETMP, VIGE,
186#include "implicit_f.inc"
190#include "com04_c.inc"
194 INTEGER IADTABIGEINI,NDOUBLONSTOT,PERM(*), NIGETMP(*),NIGE(*)
199 . RIGETMP(3,*), XIGETMP(3,*), VIGETMP(3,*),
200 . rige(3,*) , xige(3,*) , vige(3,*)
201 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
205 INTEGER NVALEURS, PERMUTE(IADTABIGEINI),NDOUBLONS,NBTABIGE
206 INTEGER I,J,ITSURF,DECALSURF,IADTABIGE
218 decalsurf=i+ndoublonstot-1
220 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
221 nbtabige=16*igrsurf(itsurf)%NSEG_IGE/9
224 DO WHILE(i+ndoublonstot+ndoublons<=decalsurf+nbtabige)
226 nige(i) = nigetmp(perm(i+ndoublonstot+ndoublons)+decalsurf)
227 rige(:,i) = rigetmp(:,perm(i+ndoublonstot+ndoublons)+decalsurf)
228 xige(:,i) = xigetmp(:,i+ndoublonstot+ndoublons)
229 vige(:,i) = vigetmp(:,perm(i+ndoublonstot+ndoublons)+decalsurf)
230 permute(perm(i+ndoublonstot
231 DO WHILE (((i+ndoublonstot+ndoublons+nvaleurs
232 . .AND. (abs(xigetmp(1,i+ndoublonstot+ndoublons)-
233 . xigetmp(1,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol)
234 . .AND. (abs(xigetmp(2,i+ndoublonstot+ndoublons
235 . xigetmp(2,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol)
236 . .AND. (abs(xigetmp(3,i+ndoublonstot+ndoublons)-
237 . xigetmp(3,i+ndoublonstot+ndoublons+nvaleurs+1)) <= tol))
238 nvaleurs = nvaleurs + 1
239 permute(perm(i+ndoublonstot+ndoublons+nvaleurs)+decalsurf) = i
241 ndoublons=ndoublons+nvaleurs
244 ndoublonstot=ndoublonstot+ndoublons
251 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
252 DO i=1,igrsurf(itsurf)%NSEG_IGE
254 igrsurf(itsurf)%NODES_IGE(i,j)=permute(igrsurf(itsurf)%NODES_IGE(i,j)-numnod)+numnod
257 nbtabige=16*igrsurf(itsurf)%NSEG_IGE/9
258 iadtabige = iadtabige + nbtabige
263 numfakenodigeo=numfakenodigeo-ndoublonstot
273c SUBROUTINE SEARCHIGEO3D(IGRSURF,N, NSEGIGE ,PERM,
274 . NIGETMP, NIGE, RIGETMP, RIGE,
275 . XIGETMP, XIGE, VIGETMP, VIGE,
285#include "implicit_f.inc"
289#include "com04_c.inc"
293 INTEGER N,NDOUBLONSTOT,PERM(*), NIGETMP(*),NIGE(*)
298 . RIGETMP(3,*), XIGETMP(3,*), VIGETMP(3,*),
299 . RIGE(3,*) , XIGE(3,*) , VIGE(3,*)
300 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
304 INTEGER NVALEURS, PERMUTE(N-1),NDOUBLONS,NBTABIGE,IADTABIGE,
306 INTEGER I,J,ITSURF,DECALSURF,DECAL
324 decalsurf=decalsurf+i-1
325 decal = decal+nbtabige
330 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
331 nbtabige=16*igrsurf(itsurf)%NSEG_IGE/9
338 DO WHILE(i+ndoublons<=nbtabige)
341 nige(i+decalsurf) = nigetmp(perm(i+ndoublons+decal))
342 rige(:,i+decalsurf) = rigetmp(:,perm(i+ndoublons+decal))
343 xige(:,i+decalsurf) = xigetmp(:,i+decalsurf+ndoublons)
344 vige(:,i+decalsurf) = vigetmp(:,perm(i+ndoublons+decal))
345 permute(perm(i+ndoublons+decal)) = i+decalsurf
347 DO WHILE (((i+ndoublons+nvaleurs+1)<=nbtabige)
349 . .AND. (abs(xigetmp(1,i+decalsurf+ndoublons)-
350 . xigetmp(1,i+decalsurf+ndoublons+nvaleurs+1)) <= tol)
351 . .AND. (abs(xigetmp(2,i+decalsurf+ndoublons)-
352 . xigetmp(2,i+decalsurf+ndoublons+nvaleurs+1)) <= tol)
353 . .AND. (abs(xigetmp(3,i+decalsurf+ndoublons)-
354 . xigetmp(3,i+decalsurf+ndoublons+nvaleurs+1)) <= tol))
355 nvaleurs = nvaleurs + 1
356 permute(perm(i+ndoublons+nvaleurs+decal)) = i+decalsurf
359 ndoublons=ndoublons+nvaleurs
362 ndoublonstot=ndoublonstot+ndoublons
368 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
369 DO i=1,igrsurf(itsurf)%NSEG_IGE
371 igrsurf(itsurf)%NODES_IGE(i,j)=permute(igrsurf(itsurf)%NODES_IGE(i,j)-numnod)+numnod
378 numfakenodigeo=numfakenodigeo-ndoublonstot
391 . NIGETMP, NIGE, RIGETMP, RIGE,
392 . XIGETMP, XIGE, VIGETMP, VIGE,
401#include "implicit_f.inc"
405#include "com04_c.inc"
409 INTEGER NDOUBLONS,PERM(*), NIGETMP(*),NIGE(*),
413 . rigetmp(3,*), xigetmp(3,*), vigetmp(3,*),
414 . rige(3,*) , xige(3,*) , vige(3,*)
415 TYPE (SURF_) ,
DIMENSION(NSURF) ::
419 INTEGER NVALEURS, PERMUTE(IADTABIGE)
431 DO WHILE(i+ndoublons<=iadtabige)
433 nige(i) = nigetmp(perm(i+ndoublons))
434 rige(:,i) = rigetmp(:,perm(i+ndoublons))
435 xige(:,i) = xigetmp(:,i+ndoublons)
436 vige(:,i) = vigetmp(:,perm(i+ndoublons))
437 permute(perm(i+ndoublons)) = i
438 DO WHILE (((i+ndoublons+nvaleurs+1)<=iadtabige))
439 IF(abs(xigetmp(3,i+ndoublons)-xigetmp(3,i+ndoublons+nvaleurs+1)) > tol)
EXIT
440 IF(abs(xigetmp(2,i+ndoublons)-xigetmp(2,i+ndoublons+nvaleurs+1)) > tol)
EXIT
441 IF(abs(xigetmp(1,i+ndoublons)-xigetmp(1,i+ndoublons+nvaleurs+1)) > tol)
EXIT
448 nvaleurs = nvaleurs + 1
449 permute(perm(i+ndoublons+nvaleurs)) = i
451 ndoublons=ndoublons+nvaleurs
456 IF(igrsurf(itsurf)%NSEG_IGE>0)
THEN
457 DO i=1,igrsurf(itsurf)%NSEG_IGE
459 igrsurf(itsurf)%NODES_IGE(i,j)=permute(igrsurf(itsurf)%NODES_IGE(i,j)-numnod)+numnod
465 numfakenodigeo=iadtabige-ndoublons
466 iadtabige=numfakenodigeo
482#include "implicit_f.inc"
492 my_real,
DIMENSION(:,:),
ALLOCATABLE:: x_copy
493 my_real,
DIMENSION(:),
ALLOCATABLE :: rkey
498 ALLOCATE(X_copy(3,n))
502 x_copy(1:3,1:n) = x(1:3,1:n)
505 maxi =
max(abs(x(1,i)),maxi)
506 maxi =
max(abs(x(2,i)),maxi)
507 maxi =
max(abs(x(3,i)),maxi)
510 rkey(i) = (x(1,i)+maxi) * maxi * maxi + (x(2,i)+maxi) * maxi + (x(3,i)+maxi)
512 CALL myqsort(3*n,rkey,perm,error)
514 x(1,i) = x_copy(1,perm(i))
515 x(2,i) = x_copy(2,perm(i))
516 x(3,i) = x_copy(3,perm(i))
subroutine searchigeo3d3(igrsurf, n, perm, nigetmp, nige, rigetmp, rige, xigetmp, xige, vigetmp, vige, ndoublonstot)
subroutine searchigeo3d(igrsurf, iadtabigeini, perm, nigetmp, nige, rigetmp, rige, xigetmp, xige, vigetmp, vige, ndoublonstot)
subroutine searchigeo3d2(igrsurf, iadtabige, perm, nigetmp, nige, rigetmp, rige, xigetmp, xige, vigetmp, vige, ndoublons)
subroutine searchigeo3dold(igrsurf, iadtabigeini, perm, nigetmp, nige, rigetmp, rige, xigetmp, xige, vigetmp, vige, ndoublonstot)