30 . IDTANG1,IDTANG2,NELDIR,NELTANG1,NELTANG2,DIR,
31 . TAB_COINKNOT,L_TAB_COINKNOT,TAB_ELCUT,L_TAB_ELCUT,TAB_NEWEL,L_TAB_NEWEL,
32 . KNOT,IAD_KNOT,NKNOT1,NKNOT2,NKNOT3,IDFILS,KNOTLOCEL,NEWKNOT,IPARTIG3D,
33 . TAB_OLDIDCUT,IDCUT,FLAG)
43#include "implicit_f.inc"
52 INTEGER IXIG3D(*),KXIG3D(NIXIG3D,*),(NELTANG1,NELTANG2,NELDIR),
53 . IDDIR(*),IDTANG1(*),IDTANG2(*),TAB_ELCUT(L_TAB_ELCUT),
54 . TAB_NEWEL(L_TAB_NEWEL),IDFILS(NBFILSMAX,*),IPARTIG3D(*),TAB_OLDIDCUT(3,*)
55 INTEGER IDCUT,IDCUT_VOISIN,IEL,DIR,PTANG1,PTANG2,NELDIR,NELTANG1,NELTANG2,
56 . l_tab_elcut,l_tab_newel,l_tab_coinknot,flag
57 . nknot1,nknot2,nknot3
58 my_real tab_coinknot(2,*),knot(*)
59 my_real knotlocel(2,3,*),newknot
63 INTEGER I,J,K,L,M,IDMESHIGE,NBSEGMENTS,DIRTANG1,DIRTANG2
64 INTEGER IDNBCUT,ID1KNOT1,ID2KNOT1,ID1KNOT2,ID2KNOT2, IDNEXTG,
65 . IDNEXTD, IDNEXTEL,IAD_IXIG3D
66 INTEGER COINDEP(2),COIN(2),DIRECTION,WORK(70000),
67 . l_tabworkel, coinenglob(2,2),nb_newfils
68 INTEGER L_TABWORK, NEXT, REFNBCUT, IOUT, INTERSEC
69 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX, TABWORKEL, TABWORKELTRI
70 INTEGER OFFSET_KNOT,OFFSET_TANG1,,BORDHAUT,BORDDROIT
71 my_real COIN_TMP(2,20), DET, T1, T2, XA(5),YA(5),
72 . xb, yb, xc, yc, xd, yd, tol
119 idmeshige=iddir(kxig3d(6,iel))
120 offset_knot = iad_knot
121 offset_tang1 = iad_knot + nknot1
122 offset_tang2 = iad_knot + nknot1 + nknot2
131 idmeshige=iddir(kxig3d(7,iel))
132 offset_knot = iad_knot + nknot1
133 offset_tang1 = iad_knot + nknot1 + nknot2
134 offset_tang2 = iad_knot
143 idmeshige=iddir(kxig3d(8,iel))
144 offset_knot = iad_knot + nknot1 + nknot2
145 offset_tang1 = iad_knot
146 offset_tang2 = iad_knot + nknot1
156 coindep(1)=idtang1(kxig3d(id1knot1,iel))
157 coindep(2)=idtang2(kxig3d(id1knot2,iel))
161 coinenglob(1,1)=
min(coin(1),10000)
162 coinenglob(2,1)=
min(coin(2),10000)
163 coinenglob(1,2)=
max(coin(1),0)
164 coinenglob(2,2)=
max(coin(2),0)
172 ALLOCATE(tabworkel(l_tabwork))
173 ALLOCATE(tabworkeltri(l_tabwork))
178 refnbcut = kxig3d(idnbcut,iel)
183 l_tab_coinknot = l_tab_coinknot + 1
185 coinenglob(1,1)=
min(coin(1),coinenglob(1,1))
186 coinenglob(2,1)=
min(coin(2),coinenglob(2,1))
187 coinenglob(1,2)=
max(coin(1),coinenglob(1,2))
188 coinenglob(2,2)=
max(coin(2),coinenglob(2,2))
189 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
190 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
192 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige
193 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
205 DO WHILE (direction==1)
209 idnextd=meshige(coin(1),coin(2),idmeshige)
210 IF(kxig3d(idnbcut,idnextd)==1)
THEN
213 idcut_voisin = tab_oldidcut(dir,idnextd)-kxig3d(idnbcut,idnextd)+1
215 IF(idcut_voisin/=idcut)
THEN
219 l_tabworkel = l_tabworkel + 1
220 tabworkel(l_tabworkel) = idnextd
223 IF(coin(2)<neltang2)
THEN
225 idnextg=meshige(coin(1)-1,coin(2),idmeshige)
226 IF(kxig3d(idnbcut,idnextg)==1)
THEN
229 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
231 IF(idcut_voisin==idcut)
THEN
242 idnextg=meshige(coin(1)-1,coin(2),idmeshige)
243 IF(kxig3d(idnbcut,idnextg)==1)
THEN
246 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
248 IF(idcut_voisin==idcut)
THEN
267 nbsegments = nbsegments + 1
268 l_tab_coinknot = l_tab_coinknot + 1
270 coinenglob(1,1)=
min(coin(1),coinenglob(1,1))
271 coinenglob(2,1)=
min(coin(2),coinenglob(2,1))
272 coinenglob(1,2)=
max(coin(1),coinenglob(1,2))
273 coinenglob(2,2)=
max(coin(2),coinenglob(2,2))
275 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige
276 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
278 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige
279 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
282 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
283 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
285 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
286 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
290 DO WHILE (.NOT.(coin(1)==coindep(1).AND.coin(2)==coindep(2)).OR.l_tab_coinknot<5)
292 SELECT CASE (direction)
296 DO WHILE (direction==1)
300 idnextd=meshige(coin(1),coin(2),idmeshige)
301 IF(kxig3d(idnbcut,idnextd)==1)
THEN
304 idcut_voisin = tab_oldidcut(dir,idnextd)-kxig3d(idnbcut,idnextd)+1
306 IF(idcut_voisin==idcut)
THEN
307 l_tabworkel = l_tabworkel + 1
308 tabworkel(l_tabworkel) = idnextd
314 IF(coin(2)<neltang2)
THEN
317 idnextg=meshige(coin(1)-1,coin(2),idmeshige)
318 IF(kxig3d(idnbcut,idnextg)==1)
THEN
321 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
323 IF(idcut_voisin==idcut)
THEN
334 idnextg=meshige(coin(1)-1,coin(2),idmeshige)
335 IF(kxig3d(idnbcut,idnextg)==1)
THEN
338 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
340 IF(idcut_voisin==idcut)
THEN
359 nbsegments = nbsegments + 1
360 l_tab_coinknot = l_tab_coinknot + 1
363 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
364 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
366 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d
367 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
370 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
371 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
373 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
374 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
380 DO WHILE (direction==2)
385 idnextg=meshige(coin(1),coin(2),idmeshige)
386 IF(kxig3d(idnbcut,idnextg)==1)
THEN
389 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
391 IF(idcut_voisin==idcut)
THEN
392 l_tabworkel = l_tabworkel + 1
393 tabworkel(l_tabworkel) = idnextg
398 IF(coin(1)<neltang1)
THEN
411 idnextd=meshige(coin(1),coin(2)-1,idmeshige)
412 IF(kxig3d(idnbcut,idnextd)==1)
THEN
415 idcut_voisin = tab_oldidcut(dir,idnextd)-kxig3d(idnbcut,idnextd)+1
417 IF(idcut_voisin==idcut)
THEN
418 l_tabworkel = l_tabworkel + 1
419 tabworkel(l_tabworkel) = idnextd
425 IF(coin(1)<neltang1)
THEN
426 idnextg=meshige(coin(1),coin(2),idmeshige)
427 IF(kxig3d(idnbcut,idnextg)==1)
THEN
430 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
432 IF(idcut_voisin==idcut)
THEN
433 l_tabworkel = l_tabworkel + 1
434 tabworkel(l_tabworkel) = idnextg
442 idnextg=meshige(coin(1),coin(2),idmeshige)
443 IF(kxig3d(idnbcut,idnextg)==1)
THEN
446 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
448 IF(idcut_voisin==idcut)
THEN
449 l_tabworkel = l_tabworkel + 1
450 tabworkel(l_tabworkel) = idnextg
468 nbsegments = nbsegments + 1
469 l_tab_coinknot = l_tab_coinknot + 1
471 IF(borddroit==0)
THEN
473 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
474 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
476 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
477 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
480 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
481 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
483 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
484 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige
489 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id2knot1,meshige(coin(1),coin(2),idmeshige)))
490 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
492 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id2knot1,meshige(coin(1),coin(2),idmeshige)))
493 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin
496 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id2knot1,meshige
497 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin(2),idmeshige)))
499 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d
500 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id2knot2,meshige(coin(1),coin
507 DO WHILE (direction==3)
512 IF(borddroit==1)
THEN
527 IF(borddroit==1)
THEN
529 idnextg=meshige(coin(1),coin(2)-1,idmeshige)
530 IF(kxig3d(idnbcut,idnextg)==1)
THEN
533 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
535 IF(idcut_voisin==idcut)
THEN
536 l_tabworkel = l_tabworkel + 1
537 tabworkel(l_tabworkel) = idnextg
552 idnextd=meshige(coin(1)-1,coin(2)-1,idmeshige)
553 IF(kxig3d(idnbcut,idnextd)==1)
THEN
556 idcut_voisin = tab_oldidcut(dir,idnextd)-kxig3d(idnbcut,idnextd)+1
558 IF(idcut_voisin==idcut)
THEN
559 l_tabworkel = l_tabworkel + 1
560 tabworkel(l_tabworkel) = idnextd
565 idnextg=meshige(coin(1),coin(2)-1,idmeshige)
566 IF(kxig3d(idnbcut,idnextg
THEN
569 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
571 IF(idcut_voisin==idcut)
THEN
572 IF(borddroit==0)
THEN
576 l_tabworkel = l_tabworkel + 1
577 tabworkel(l_tabworkel) = idnextg
586 idnextg=meshige(coin(1),coin(2)-1,idmeshige)
587 IF(kxig3d(idnbcut,idnextg)==1)
THEN
590 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
592 IF(idcut_voisin/=idcut)
THEN
608 nbsegments = nbsegments + 1
609 l_tab_coinknot = l_tab_coinknot + 1
611 IF(borddroit==0)
THEN
612 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
613 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
615 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
616 tab_coinknot(2,l_tab_coinknot) = knot
619 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id2knot1,meshige(coin(1),coin(2),idmeshige)))
620 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
622 tab_coinknot(1,l_tab_coinknot
623 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
629 DO WHILE (direction==4)
633 IF(borddroit==1)
THEN
645 idnextd=meshige(coin(1)-1,coin(2),idmeshige)
646 IF(kxig3d(idnbcut,idnextd)==1)
THEN
649 idcut_voisin = tab_oldidcut
651 IF(idcut_voisin==idcut)
THEN
652 l_tabworkel = l_tabworkel + 1
653 tabworkel(l_tabworkel) = idnextd
660 idnextg=meshige(coin(1)-1,coin(2)-1,idmeshige
661 IF(kxig3d(idnbcut,idnextg)==1)
THEN
664 idcut_voisin = tab_oldidcut(dir,idnextg)-kxig3d(idnbcut,idnextg)+1
666 IF(idcut_voisin==idcut)
THEN
685 nbsegments = nbsegments + 1
686 l_tab_coinknot = l_tab_coinknot + 1
688 coin_tmp(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin
689 coin_tmp(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2
691 tab_coinknot(1,l_tab_coinknot) = knot(offset_tang1+kxig3d(id1knot1,meshige(coin(1),coin(2),idmeshige)))
692 tab_coinknot(2,l_tab_coinknot) = knot(offset_tang2+kxig3d(id1knot2,meshige(coin(1),coin(2),idmeshige)))
697 coinenglob(1,1)=
min(coin(1),coinenglob(1,1))
698 coinenglob(2,1)=
min(coin(2),coinenglob(2,1))
699 coinenglob(1,2)=
max(coin(1),coinenglob(1,2))
700 coinenglob(2,2)=
max(coin(2),coinenglob(2,2))
708 ALLOCATE(index(2*l_tabwork))
709 CALL my_orders(0, work, tabworkel, index, l_tabwork , 1)
712 tabworkeltri(i)=tabworkel(index(i))
719 IF(tabworkeltri(i)==ep06)
EXIT
721 IF(tabworkeltri(i-1)==tabworkeltri(i)) cycle
726 IF(newknot>=knotlocel(1,dir,tabworkeltri(i)).AND.
727 . newknot<=knotlocel(2,dir,tabworkeltri(i)))
THEN
728 l_tab_elcut = l_tab_elcut + 1
729 l_tab_newel = l_tab_newel + 1
731 DO j=1,idfils(1,tabworkeltri(i))-nb_newfils
732 IF(newknot>=knotlocel(1,dir,idfils(j+1,tabworkeltri(i))).AND.
733 . newknot<=knotlocel(2,dir,idfils(j+1,tabworkeltri(i))))
THEN
734 l_tab_elcut = l_tab_elcut + 1
735 l_tab_newel = l_tab_newel + 1
742 IF(tabworkeltri(i)==ep06)
EXIT
744 IF(tabworkeltri(i-1)==tabworkeltri(i)) cycle
749 IF(newknot>=knotlocel(1,dir,tabworkeltri(i)).AND.
750 . newknot<=knotlocel(2,dir,tabworkeltri(i)))
THEN
751 l_tab_elcut = l_tab_elcut + 1
752 tab_elcut(l_tab_elcut) = tabworkeltri(i)
754 addelig3d=addelig3d+1
756 l_tab_newel = l_tab_newel + 1
757 tab_newel(l_tab_newel) = numelig3d0+addelig3d
759 idfils(1,tabworkeltri(i))=idfils(1,tabworkeltri(i))+1
760 idfils(idfils(1,tabworkeltri(i))+1,tabworkeltri(i))=numelig3d0+addelig3d
762 nb_newfils=nb_newfils+1
764 kxig3d(:,numelig3d0+addelig3d) = kxig3d(:,tabworkeltri(i))
765 iad_ixig3d = sixig3d + addsixig3d + 1
766 kxig3d(4,numelig3d0+addelig3d) = iad_ixig3d
767 DO k=1,kxig3d(3,tabworkeltri(i))
768 ixig3d(iad_ixig3d+k-1) = ixig3d(kxig3d(4,tabworkeltri(i)
770 addsixig3d = addsixig3d + kxig3d(3,tabworkeltri(i))
772 kxig3d(5,numelig3d0+addelig3d) = numelig3d0+addelig3d
773 ipartig3d(numelig3d0+addelig3d) = ipartig3d(tabworkeltri(i))
775 kxig3d(15,numelig3d0+addelig3d) = inod_ige
776 inod_ige = inod_ige + 64
778 kxig3d(idnbcut,numelig3d0+addelig3d) = 1
780 knotlocel(:,:,numelig3d0+addelig3d) = knotlocel(:,:,tabworkeltri(i))
781 knotlocel(1,dir,numelig3d0+addelig3d) = newknot
783 knotlocel(2,dir,tabworkeltri(i)) = newknot
788 DO j=1,idfils(1,tabworkeltri(i))-nb_newfils
789 IF(newknot>=knotlocel(1,dir,idfils(j+1,tabworkeltri(i))).AND.
790 . newknot<=knotlocel(2,dir,idfils(j+1,tabworkeltri
THEN
791 l_tab_elcut = l_tab_elcut + 1
792 tab_elcut(l_tab_elcut) = idfils(j+1,tabworkeltri(i))
794 addelig3d=addelig3d+1
796 l_tab_newel = l_tab_newel + 1
797 tab_newel(l_tab_newel) = numelig3d0+addelig3d
799 idfils(1,tabworkeltri(i))=idfils(1,tabworkeltri(i))+1
800 idfils(idfils(1,tabworkeltri(i))+1
801 nb_newfils=nb_newfils+1
804 kxig3d(:,numelig3d0+addelig3d) = kxig3d(:,idfils(j+1,tabworkeltri(i)))
805 iad_ixig3d = sixig3d + addsixig3d + 1
806 kxig3d(4,numelig3d0+addelig3d) = iad_ixig3d
807 DO k=1,kxig3d(3,idfils(j+1,tabworkeltri(i)))
810 addsixig3d = addsixig3d + kxig3d(3,idfils(j+1,tabworkeltri(i)))
812 kxig3d(5,numelig3d0+addelig3d) = numelig3d0+addelig3d
813 ipartig3d(numelig3d0+addelig3d) = ipartig3d(idfils(j+1,tabworkeltri(i)))
815 kxig3d(15,numelig3d0+addelig3d) = inod_ige
816 inod_ige = inod_ige + 64
818 kxig3d(idnbcut,numelig3d0+addelig3d) = 1
820 knotlocel(:,:,numelig3d0+addelig3d) = knotlocel(:,:,idfils(j+1,tabworkeltri(i
821 knotlocel(1,dir,numelig3d0+addelig3d) = newknot
823 knotlocel(2,dir,idfils(j+1,tabworkeltri(i))) = newknot
828 kxig3d(idnbcut,tabworkeltri(i)) = kxig3d(idnbcut,tabworkeltri(i)) - 1
833 DEALLOCATE(tabworkel)
839 DO i=coinenglob(1,1),coinenglob(1,2)
840 DO j=coinenglob(2,1),coinenglob(2,2)
841 idnextel=meshige(i,j,idmeshige)
844 IF(idnextel==tabworkeltri(k))
THEN
853 xa(1) = knotlocel(1,dirtang1,idnextel) + tol
854 xa(2) = knotlocel(2,dirtang1,idnextel) - tol
855 xa(3) = knotlocel(2,dirtang1,idnextel) - tol
856 xa(4) = knotlocel(1,dirtang1,idnextel) + tol
859 ya(1) = knotlocel(1,dirtang2,idnextel) + tol
860 ya(2) = knotlocel(1,dirtang2,idnextel) + tol
861 ya(3) = knotlocel(2,dirtang2,idnextel) - tol
862 ya(4) = knotlocel(2,dirtang2,idnextel) - tol
871 DO l=1,l_tab_coinknot-1
878 det = (xb-xa(k))*(yc-yd) - (xc-xd)*(yb-ya(k))
881 t1 = ((xc-xa(k))*(yc-yd)-(xc-xd)*(yc-ya(k)))/det
882 t2 = ((xb-xa(k))*(yc-ya(k))-(xc-xa(k))*(yb-ya(k)))/det
883 IF(t1>1.OR.t1<0.OR.t2>1.OR.t2<=0)
THEN
885 intersec = intersec + 1
889 IF(mod(intersec,2)==0) iout=1
894 IF(kxig3d(idnbcut,idnextel)==1)
THEN
897 idcut_voisin = tab_oldidcut(dir,idnextel)-kxig3d(idnbcut,idnextel)+1
899 IF(idcut_voisin==idcut)
THEN
905 IF(newknot>=knotlocel(1,dir,idnextel).AND.
906 . newknot<=knotlocel(2,dir,idnextel))
THEN
907 l_tab_elcut = l_tab_elcut + 1
908 l_tab_newel = l_tab_newel + 1
910 DO k=1,idfils(1,idnextel)-nb_newfils
911 IF(newknot>=knotlocel(1,dir,idfils(k+1,idnextel)).AND.
912 . newknot<=knotlocel(2,dir,idfils(k+1,idnextel)))
THEN
913 l_tab_elcut = l_tab_elcut + 1
914 l_tab_newel = l_tab_newel + 1
922 IF(newknot>=knotlocel(1,dir,idnextel).AND.
923 . newknot<=knotlocel(2,dir,idnextel))
THEN
924 l_tab_elcut = l_tab_elcut + 1
925 tab_elcut(l_tab_elcut) = idnextel
927 addelig3d=addelig3d+1
929 l_tab_newel = l_tab_newel + 1
930 tab_newel(l_tab_newel) = numelig3d0+addelig3d
932 idfils(1,idnextel)=idfils(1,idnextel)+1
934 nb_newfils=nb_newfils+1
936 kxig3d(:,numelig3d0+addelig3d) = kxig3d(:,idnextel)
937 iad_ixig3d = sixig3d + addsixig3d + 1
938 kxig3d(4,numelig3d0+addelig3d) = iad_ixig3d
939 DO m=1,kxig3d(3,idnextel)
940 ixig3d(iad_ixig3d+m-1) = ixig3d(kxig3d(4,idnextel)+m-1)
942 addsixig3d = addsixig3d + kxig3d(3,idnextel)
944 kxig3d(5,numelig3d0+addelig3d) = numelig3d0+addelig3d
945 ipartig3d(numelig3d0+addelig3d) = ipartig3d(idnextel)
947 kxig3d(15,numelig3d0+addelig3d) = inod_ige
948 inod_ige = inod_ige + 64
951 kxig3d(idnbcut,numelig3d0+addelig3d) = 1
953 knotlocel(:,:,numelig3d0+addelig3d) = knotlocel(:,:,idnextel)
954 knotlocel(1,dir,numelig3d0+addelig3d) = newknot
956 knotlocel(2,dir,idnextel) = newknot
960 DO k=1,idfils(1,idnextel)-nb_newfils
961 IF(newknot>=knotlocel
962 . newknot<=knotlocel(2,dir,idfils(k+1,idnextel)))
THEN
963 l_tab_elcut = l_tab_elcut + 1
964 tab_elcut(l_tab_elcut) = idfils(k+1,idnextel)
966 addelig3d=addelig3d+1
968 l_tab_newel = l_tab_newel + 1
969 tab_newel(l_tab_newel) = numelig3d0+addelig3d
971 idfils(1,idnextel)=idfils(1,idnextel)+1
972 idfils(idfils(1,idnextel)+1,idnextel)=numelig3d0+addelig3d
973 nb_newfils=nb_newfils+1
975 kxig3d(:,numelig3d0+addelig3d) = kxig3d(:,idfils(k+1,idnextel))
976 iad_ixig3d = sixig3d + addsixig3d + 1
977 kxig3d(4,numelig3d0+addelig3d) = iad_ixig3d
978 DO m=1,kxig3d(3,idfils(k+1,idnextel))
979 ixig3d(iad_ixig3d+m-1) = ixig3d(kxig3d(4,idfils(k+1,idnextel))+m-1)
981 addsixig3d = addsixig3d + kxig3d(3,idfils(k+1,idnextel))
983 kxig3d(5,numelig3d0+addelig3d) = numelig3d0+addelig3d
984 ipartig3d(numelig3d0+addelig3d) = ipartig3d(idfils(k+1,idnextel))
986 kxig3d(15,numelig3d0+addelig3d) = inod_ige
987 inod_ige = inod_ige + 64
989 kxig3d(idnbcut,numelig3d0+addelig3d) = 1
991 knotlocel(:,:,numelig3d0+addelig3d) = knotlocel(:,:,idfils(k+1,idnextel))
992 knotlocel(1,dir,numelig3d0+addelig3d) = newknot
994 knotlocel(2,dir,idfils(k+1,idnextel)) = newknot
999 kxig3d(idnbcut,idnextel) = kxig3d(idnbcut,idnextel) - 1
1006 DEALLOCATE(tabworkeltri)