53
54
55
59
60
61
62#include "implicit_f.inc"
63
64
65
66#include "mvsiz_p.inc"
67
68 INTEGER NVECSZ
69 parameter(nvecsz = mvsiz)
70
71
72
73#include "param_c.inc"
74
75
76
77
78
79
80
81
82
83 INTEGER, INTENT(in) :: S_REMNODE_EDG
84 LOGICAL, INTENT(in) :: FLAG_REMOVED_NODE
85 INTEGER, INTENT(in) :: S_KREMNODE_E2S
86 INTEGER, INTENT(in) :: S_REMNODE_E2S
87 INTEGER, INTENT(in) :: S_KREMNODE_EDG
88
89 INTEGER I_MEM(2),INACTI,ITASK,IGAP,IEDGE,NEDGE,ESHIFT,NEDGE_T,SSHIFT,NRTM_T,IGAP0,
90 . MULNSNE,MULNSNS,NOINT,NBX,NBY,NBZ,
91 . CANDS_E2E(*),CANDM_E2E(*),
92 . IRECT(4,*), VOXEL(NBX+2,NBY+2,NBZ+2),II_STOK,LL_STOK,ITAB(*),
93 . MBINFLG(*),EBINFLG(*),ILEV,CAND_A(*),LEDGE(NLEDGE,*),ADMSR(4,*),MSEGTYP(*),
94 . CANDM_E2S(*),CANDS_E2S(*),CAND_B(*),
95 . FLAGREMNODE,KREMNODE(S_KREMNODE_EDG),REMNODE(*)
96 INTEGER, DIMENSION(S_KREMNODE_E2S), INTENT(in) :: KREMNODE_E2S
97 INTEGER, DIMENSION(S_REMNODE_E2S), INTENT(in) :: REMNODE_E2S
98
100 . x(3,*),xyzm(6),stf(*),gap_m(*),gap_m_l(*),gape(*),gap_e_l(*),cand_p(*), cand_ps(*),
101 . marge,bgapemx,vmaxdt,drad
102 my_real ,
INTENT(IN) :: dgapload
103 real*4 edg_bisector(3,4,*), vtx_bisector(3,2,*)
104
105
106
107 INTEGER I,J,I_STOK, SOL_EDGE, SH_EDGE,
108 . N1,N2,NN,NE,K,L,J_STOK,II,JJ,NA,NB,
109 . PROV_S(MVSIZ),PROV_M(MVSIZ),
110 . M,NS1,NS2,NSE,NS,SIZE,Z_FIRST,Z_LAST
111
113 . dx,dy,dz,xs,ys,zs,xx,sx,sy,sz,s2,
114 . xmin, xmax,ymin,
ymax,zmin, zmax, tz, gapsmx, gapl,
115 . xx1,xx2,xx3,xx4,yy1,yy2,yy3,yy4,zz1,zz2,zz3,zz4,
116 . d1x,d1y,d1z,d2x,d2y,d2z,dd1,dd2,d2,a2,gs
117
118 INTEGER TAGEDG(NEDGE)
119 INTEGER IX,IY,IZ,IEDG,
120 . M1, M2, M3, M4, MM1,MM2,MM3,MM4,SS1,SS2,
121 . IMS1,IMS2,ISS1,ISS2,
122 . AM1,AM2,AS1,AS2,
123 . IX1,IY1,IZ1,IX2,IY2,IZ2
124 INTEGER, DIMENSION(3) :: TMIN,TMAX
126 . xminb,yminb,zminb,xmaxb,ymaxb,zmaxb,aaa,drad2,
127 . xmax_edgs, xmin_edgs,
128 . ymax_edgs, ymin_edgs,
129 . zmax_edgs, zmin_edgs,
130 . xmax_edgm, xmin_edgm,
131 . ymax_edgm, ymin_edgm,
132 . zmax_edgm, zmin_edgm
133 INTEGER FIRST_ADD, PREV_ADD, CHAIN_ADD, CURRENT_ADD, MAX_ADD
134 INTEGER BITGET
135 INTEGER WORK(70000)
136 INTEGER, DIMENSION(:,:),ALLOCATABLE :: IIXYZ,LEDGE_TMP
137 INTEGER, DIMENSION(:),ALLOCATABLE :: INDEX
139
140
141 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGREMLINE
142
143
144 drad2 = zero
145
146 IF(flag_removed_node)THEN
147 ALLOCATE(tagremline(nedge))
148 tagremline(1:nedge) = 0
149 ENDIF
150
151 sol_edge =iedge/10
152 sh_edge =iedge-10*sol_edge
153
160
161
162
163
164 max_add =
max(1,4*nedge)
168
169 ALLOCATE(iixyz(4,nedge),ledge_tmp(nledge,nedge),index(2*nedge))
170
171
172
173 xmin = xyzm(1)
174 ymin = xyzm(2)
175 zmin = xyzm(3)
176 xmax = xyzm(4)
178 zmax = xyzm(6)
179
180
181 xminb = xmin
182 yminb = ymin
183 zminb = zmin
184 xmaxb = xmax
186 zmaxb = zmax
187
188
189
190
191 IF(itask == 0)THEN
192
193 iixyz(1:4,1:nedge)=0
194 DO i=1,nedge
195 index(i) =i
196 END DO
197
198 DO i=1,nedge
199
200 ne =ledge(1,i)
201 IF(stf(ne)==0) cycle
202
203
204
205 n1 = ledge(5,i)
206 n2 = ledge(6,i)
207
208
209 xx1=x(1,n1)
210 xx2=x(1,n2)
211 yy1=x(2,n1)
212 yy2=x(2,n2)
213 zz1=x(3,n1)
214 zz2=x(3,n2)
215 IF(igap0 == 0)THEN
216 xmax_edgs=
max(xx1,xx2);
IF(xmax_edgs < xmin) cycle
217 xmin_edgs=
min(xx1,xx2);
IF(xmin_edgs > xmax) cycle
218 ymax_edgs=
max(yy1,yy2);
IF(ymax_edgs < ymin) cycle
219 ymin_edgs=
min(yy1,yy2);
IF(ymin_edgs >
ymax) cycle
220 zmax_edgs=
max(zz1,zz2);
IF(zmax_edgs < zmin) cycle
221 zmin_edgs=
min(zz1,zz2);
IF(zmin_edgs > zmax) cycle
222 ELSE
223 xmax_edgs=
max(xx1,xx2)+gap_m(ne);
IF(xmax_edgs < xmin) cycle
224 xmin_edgs=
min(xx1,xx2)-gap_m(ne);
IF(xmin_edgs > xmax) cycle
225 ymax_edgs=
max(yy1,yy2)+gap_m(ne);
IF(ymax_edgs < ymin) cycle
226 ymin_edgs=
min(yy1,yy2)-gap_m(ne);
IF(ymin_edgs >
ymax) cycle
227 zmax_edgs=
max(zz1,zz2)+gap_m(ne);
IF(zmax_edgs < zmin) cycle
228 zmin_edgs=
min(zz1,zz2)-gap_m(ne);
IF(zmin_edgs > zmax) cycle
229 END IF
230
231
232
233
234
235 ix1=int(nbx*(xmin_edgs-xminb)/(xmaxb-xminb))
236 iy1=int(nby*(ymin_edgs-yminb)/(ymaxb-yminb))
237 iz1=int(nbz*(zmin_edgs-zminb)/(zmaxb-zminb))
241
242 ix2=int(nbx*(xmax_edgs-xminb)/(xmaxb-xminb))
243 iy2=int(nby*(ymax_edgs-yminb)/(ymaxb-yminb))
244 iz2=int(nbz*(zmax_edgs-zminb)/(zmaxb-zminb))
248
249 iixyz(1,i)=
min(n1,n2)
250 iixyz(2,i)=0
251 iixyz(3,i)=0
252 iixyz(4,i)=0
253
254 index(i) =i
255
256 END DO
257
258 CALL my_orders(0,work,iixyz,index,nedge,4)
259 ledge_tmp(1:nledge,1:nedge)=ledge(1:nledge,1:nedge)
260 DO i=1,nedge
261 k=index(i)
262 ledge(1:nledge,i)=ledge_tmp(1:nledge,k)
263
264 END DO
265 DEALLOCATE(iixyz,index,ledge_tmp)
266
267 current_add=1
268
269 DO i=1,nedge
270
271 ne =ledge(1,i)
272 IF(stf(ne)==zero) cycle
273
274 IF(ledge(7,i) < 0) cycle
275
276 n1 = ledge(5,i)
277 n2 = ledge(6,i)
278
279
280 xx1=x(1,n1)
281 xx2=x(1,n2)
282 yy1=x(2,n1)
283 yy2=x(2,n2)
284 zz1=x(3,n1)
285 zz2=x(3,n2)
286 IF(igap0 == 0)THEN
287 xmax_edgs=
max(xx1,xx2);
IF(xmax_edgs < xmin) cycle
288 xmin_edgs=
min(xx1,xx2);
IF(xmin_edgs > xmax) cycle
289 ymax_edgs=
max(yy1,yy2);
IF(ymax_edgs < ymin) cycle
290 ymin_edgs=
min(yy1,yy2);
IF(ymin_edgs >
ymax) cycle
291 zmax_edgs=
max(zz1,zz2);
IF(zmax_edgs < zmin) cycle
292 zmin_edgs=
min(zz1,zz2);
IF(zmin_edgs > zmax) cycle
293 ELSE
294 xmax_edgs=
max(xx1,xx2)+gape(i);
IF(xmax_edgs < xmin) cycle
295 xmin_edgs=
min(xx1,xx2)-gape(i);
IF(xmin_edgs > xmax) cycle
296 ymax_edgs=
max(yy1,yy2)+gape(i);
IF(ymax_edgs < ymin) cycle
297 ymin_edgs=
min(yy1,yy2)-gape(i);
IF(ymin_edgs >
ymax) cycle
298 zmax_edgs=
max(zz1,zz2)+gape(i);
IF(zmax_edgs < zmin) cycle
299 zmin_edgs=
min(zz1,zz2)-gape(i);
IF(zmin_edgs > zmax) cycle
300 END IF
301
302
303
304
305
306 ix1=int(nbx*(xmin_edgs-xminb)/(xmaxb-xminb))
307 iy1=int(nby*(ymin_edgs-yminb)/(ymaxb-yminb))
308 iz1=int(nbz*(zmin_edgs-zminb)/(zmaxb-zminb))
312
313 ix2=int(nbx*(xmax_edgs-xminb)/(xmaxb-xminb))
314 iy2=int(nby*(ymax_edgs-yminb)/(ymaxb-yminb))
315 iz2=int(nbz*(zmax_edgs-zminb)/(zmaxb-zminb))
319
320
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355 DO iz = iz1,iz2
356 DO iy = iy1,iy2
357 DO ix = ix1,ix2
358
359 first_add = voxel(ix,iy,iz)
360
361 IF(first_add == 0)THEN
362
363 voxel(ix,iy,iz) = current_add
367 ELSE
368
374 ENDIF
375
376 current_add = current_add+1
377
378 IF( current_add>=max_add)THEN
379
380
381 max_add = 2 * max_add
382
386 ENDIF
387
388 ENDDO
389 ENDDO
390 ENDDO
391
392 ENDDO
393
394 END IF
395
396 tagedg(1:nedge)=0
397
398
399
400
401
402 IF(sh_edge==0) GOTO 300
403
404
405
406
407
408
409
410 j_stok = 0
411
412 DO i=1,nedge_t
413
414 iedg=eshift+i
415
416 ne=ledge(1,iedg)
417 IF(stf(ne)==zero) cycle
418
419 IF(iabs(ledge(7,iedg))==1) cycle
420
421
422
423
424
425 aaa = marge+bgapemx+gape(iedg)+dgapload
426
427 n1 = ledge(5,iedg)
428 n2 = ledge(6,iedg)
429 mm1 = itab(n1)
430 mm2 = itab(n2)
433
434 IF(ilev==2)THEN
435 ims1 =
bitget(ebinflg(iedg),0)
436 ims2 =
bitget(ebinflg(iedg),1)
437 END IF
438
439
440
441
442
443 xx1=x(1,n1)
444 xx2=x(1,n2)
445 yy1=x(2,n1)
446 yy2=x(2,n2)
447 zz1=x(3,n1)
448 zz2=x(3,n2)
449 xmax_edgm=
max(xx1,xx2)+gape(iedg)
450 xmin_edgm=
min(xx1,xx2)-gape(iedg) ! -tzinf
451 ymax_edgm=
max(yy1,yy2)+gape(iedg)
452 ymin_edgm=
min(yy1,yy2)-gape(iedg)
453 zmax_edgm=
max(zz1,zz2)+gape(iedg)
454 zmin_edgm=
min(zz1,zz2)-gape(iedg)
455
456
457
458
459 ix1=int(nbx*(xmin_edgm-aaa-xminb)/(xmaxb-xminb))
460 iy1=int(nby*(ymin_edgm-aaa-yminb)/(ymaxb-yminb))
461 iz1=int(nbz*(zmin_edgm-aaa-zminb)/(zmaxb-zminb))
465
466 ix2=int(nbx*(xmax_edgm+aaa-xminb)/(xmaxb-xminb))
467 iy2=int(nby*(ymax_edgm+aaa-yminb)/(ymaxb-yminb))
468 iz2=int(nbz*(zmax_edgm+aaa-zminb)/(zmaxb-zminb))
472
473
474 IF(flag_removed_node .AND. s_kremnode_edg > 0)THEN
475 k = kremnode(iedg)
476 l = kremnode(iedg+1)-1
477 DO m=k,l
478 tagremline(remnode(m)) = 1
479 ENDDO
480 ENDIF
481
482 DO iz = iz1,iz2
483 DO iy = iy1,iy2
484 DO ix = ix1,ix2
485
486 chain_add = voxel(ix,iy,iz)
487 DO WHILE(chain_add /= 0)
489
490 IF(tagedg(jj)/=0)THEN
492 cycle
493 END IF
494
495
496 IF (jj<=nedge)THEN
497 ss1= itab(ledge(5,jj))
498 ss2= itab(ledge(6,jj))
499 END IF
500
501 IF( (ss1==mm1).OR.(ss1==mm2).OR.
502 . (ss2==mm1).OR.(ss2==mm2) )THEN
504 cycle
505 END IF
506
507 IF(ilev==2)THEN
508 IF(jj <= nedge) THEN
509 iss1=
bitget(ebinflg(jj),0)
510 iss2=
bitget(ebinflg(jj),1)
511 ENDIF
512 IF(.NOT.((ims1 == 1 .and. iss2==1).or.(ims2 == 1 .and. iss1==1)))THEN
514 cycle
515 ENDIF
516 ENDIF
517
518
519 IF(iabs(ledge(7,iedg))/=1 .AND. ledge(7,jj)/=1)THEN
520
521
524
525 IF(am1 < as1 .OR. (am1 == as1 .AND. am2 < as2))THEN
527 cycle
528 ENDIF
529 ENDIF
530
531
532 IF(flag_removed_node)THEN
533 IF(tagremline(jj)==1) THEN
535 cycle
536 ENDIF
537 ENDIF
538
539 tagedg(jj)=1
540
541 j_stok = j_stok + 1
542 prov_s(j_stok) = jj
543 prov_m(j_stok) = iedg
544
545
546
548
549 IF(j_stok==nvsiz)THEN
551 1 nvsiz ,irect ,x ,ii_stok,inacti,
552 2 cands_e2e,candm_e2e ,mulnsne,noint
553 3 i_mem(1) ,prov_s ,prov_m ,igap0,cand_a,
554 4 nedge ,ledge ,itab ,drad2 ,igap ,
555 5 gape ,gap_e_l,admsr ,edg_bisector,vtx_bisector ,
556 6 cand_p,dgapload)
557 IF(i_mem(1)/=0) GOTO 300
558 j_stok = 0
559 ENDIF
560
561
562 ENDDO ! WHILE(chain_add /= 0)
563
564 ENDDO
565 ENDDO
566 ENDDO
567
568
569 DO iz = iz1,iz2
570 DO iy = iy1,iy2
571 DO ix = ix1,ix2
572
573 chain_add = voxel(ix,iy,iz)
574 DO WHILE(chain_add /= 0)
575
577 tagedg(jj)=0
578
580
581 END DO
582
583 ENDDO
584 ENDDO !next iy
585 ENDDO
586
587
588 IF(flag_removed_node .AND. s_kremnode_edg > 0)THEN
589 k = kremnode(iedg)
590 l = kremnode(iedg+1)-1
591 DO m=k,l
592 tagremline(remnode(m)) = 0
593 ENDDO
594 ENDIF
595
596
597 ENDDO
598
599
600
601
602
604 1 j_stok ,irect ,x ,ii_stok,inacti,
605 2 cands_e2e,candm_e2e ,mulnsne,noint ,marge ,
606 3 i_mem(1) ,prov_s ,prov_m ,igap0,cand_a,
607 4 nedge ,ledge ,itab ,drad2 ,igap ,
608 5 gape ,gap_e_l,admsr ,edg_bisector,vtx_bisector ,
609 6 cand_p,dgapload)
610
611 300 CONTINUE
612
613
614
615 IF(sol_edge==0) GOTO 400
616
617
618
619
620
621
622
623 j_stok = 0
624
625 DO i=1,nrtm_t
626
627 ne =sshift+i
628
629 IF(msegtyp(ne)/=0) cycle
630 IF(stf(ne)==zero) cycle
631
632 m1 = irect(1,ne)
633 m2 = irect(2,ne)
634 m3 = irect(3,ne)
635 m4 = irect(4,ne)
636 mm1= itab(m1)
637 mm2= itab(m2)
638 mm3= itab(m3)
639 mm4= itab(m4)
640
641 xx1=x(1,m1)
642 yy1=x(2,m1)
643 zz1=x(3,m1)
644 xx2=x(1,m2)
645 yy2=x(2,m2)
646 zz2=x(3,m2)
647 xx3=x(1,m3)
648 yy3=x(2,m3)
649 zz3=x(3,m3)
650 xx4=x(1,m4)
651 yy4=x(2,m4)
652 zz4=x(3,m4)
653
654 xmax_edgm=
max(xx1,xx2,xx3,xx4)
655 xmin_edgm=
min(xx1,xx2,xx3,xx4)
656 ymax_edgm=
max(yy1,yy2,yy3,yy4)
657 ymin_edgm=
min(yy1,yy2,yy3,yy4)
658 zmax_edgm=
max(zz1,zz2,zz3,zz4)
659 zmin_edgm=
min(zz1,zz2,zz3,zz4)
660
661 dx=em02*(xmax_edgm-xmin_edgm)
662 dy=em02*(ymax_edgm-ymin_edgm)
663 dz=em02*(zmax_edgm-zmin_edgm)
664
665 xmax_edgm=xmax_edgm+dx
666 xmin_edgm=xmin_edgm-dx
667 ymax_edgm=ymax_edgm+dy
668 ymin_edgm=ymin_edgm-dy
669 zmax_edgm=zmax_edgm+dz
670 zmin_edgm=zmin_edgm-dz
671
672 aaa = marge+bgapemx +dgapload
673
674
675
676
677
678 ix1=int(nbx*(xmin_edgm-aaa-xminb)/(xmaxb-xminb))
679 iy1=int(nby*(ymin_edgm-aaa-yminb)/(ymaxb-yminb))
680 iz1=int(nbz*(zmin_edgm-aaa-zminb)/(zmaxb-zminb))
684
685 ix2=int(nbx*(xmax_edgm+aaa-xminb)/(xmaxb-xminb))
686 iy2=int(nby*(ymax_edgm+aaa-yminb)/(ymaxb-yminb))
687 iz2=int(nbz*(zmax_edgm+aaa-zminb)/(zmaxb-zminb))
691
692 IF(ilev==2)THEN
693 ims1 =
bitget(mbinflg(ne),0)
694 ims2 =
bitget(mbinflg(ne),1)
695 END IF
696
697 IF(flag_removed_node .AND. s_remnode_e2s > 0)THEN
698 k = kremnode_e2s(2*(ne-1)+1)
699 l = kremnode_e2s(2*(ne-1)+2)-1
700 DO m=k,l
701 tagremline(remnode_e2s(m)) = 1
702 ENDDO
703 ENDIF
704
705 DO iz = iz1,iz2
706 DO iy = iy1,iy2
707 DO ix = ix1,ix2
708
709 chain_add = voxel(ix,iy,iz)
710 DO WHILE(chain_add /= 0)
712
713 IF(tagedg(jj)/=0)THEN
715 cycle
716 END IF
717
718
719 IF (jj<=nedge)THEN
720 ss1= itab(ledge(5,jj))
721 ss2= itab(ledge(6,jj))
722 END IF
723
724 IF((ss1==mm1).OR.(ss1==mm2).OR.(ss1==mm3).OR.(ss1==mm4).OR.
725 . (ss2==mm1).OR.(ss2==mm2).OR.(ss2==mm3).OR.(ss2==mm4))THEN
727 cycle
728 END IF
729
730 IF(ilev==2)THEN
731 IF(jj <= nedge) THEN
732 iss1=
bitget(ebinflg(jj),0)
733 iss2=
bitget(ebinflg(jj),1)
734 ENDIF
735
736 IF(.NOT.((ims1 == 1 .and. iss2==1).or.(ims2 == 1 .and. iss1==1)))THEN
738 cycle
739 ENDIF
740 ENDIF
741
742 IF (flag_removed_node) THEN
743 IF(tagremline(jj)==1) THEN
745 cycle
746 ENDIF
747 ENDIF
748 tagedg(jj)=1
749
750
751
752
753 j_stok = j_stok + 1
754 prov_s(j_stok) = jj
755 prov_m(j_stok) = ne
756
757
758 IF(j_stok==nvsiz)THEN
760 1 nvsiz ,irect ,x ,ll_stok,inacti,
761 2 cands_e2s,candm_e2s,mulnsns,noint ,marge ,
762 3 i_mem(2) ,prov_s ,prov_m ,igap0,cand_b,
763 4 nedge ,ledge ,itab ,drad2 ,igap ,
764 5 gap_m ,gap_m_l,gape ,gap_e_l,admsr ,
765 6 edg_bisector,vtx_bisector ,cand_ps,dgapload)
766 IF(i_mem(2)/=0) GOTO 400
767 j_stok = 0
768 ENDIF
769
770
772
773 ENDDO
774
775 ENDDO
776 ENDDO
777 ENDDO
778
779
780 DO iz = iz1,iz2
781 DO iy = iy1,iy2
782 DO ix = ix1,ix2
783
784 chain_add = voxel(ix,iy,iz)
785 DO WHILE(chain_add /= 0)
786
788 tagedg(jj)=0
789
791
792 END DO
793
794 ENDDO
795 ENDDO
796 ENDDO
797
798 IF(flag_removed_node.AND.s_remnode_e2s>0)THEN
799 k = kremnode_e2s(2*(ne-1)+1)
800 l = kremnode_e2s(2*(ne-1)+2)-1
801 DO m=k,l
802 tagremline(remnode_e2s(m)) = 0
803 ENDDO
804 ENDIF
805
806 ENDDO
807
808
809
811 1 j_stok ,irect ,x ,ll_stok,inacti,
812 2 cands_e2s,candm_e2s,mulnsns,noint ,marge ,
813 3 i_mem(2) ,prov_s ,prov_m ,igap0,cand_b,
814 4 nedge ,ledge ,itab ,drad2 ,igap ,
815 5 gap_m ,gap_m_l,gape ,gap_e_l,admsr ,
816 6 edg_bisector,vtx_bisector ,cand_ps,dgapload)
817
818
819
820
821 400 CONTINUE
822
823
824
825
829
833
834 IF (itask==0)THEN
835
836 DO k= tmin(3),tmax(3)
837 DO j= tmin(2),tmax(2)
838 DO i= tmin(1),tmax(1)
839 voxel(i,j,k) = 0
840 END DO
841 END DO
842 END DO
843
847 IF(flag_removed_node) DEALLOCATE(tagremline)
848 ENDIF
849
850
851 RETURN
integer function bitget(i, n)
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer function, dimension(:), pointer ireallocate(ptr, new_size)
integer, dimension(:), pointer lchain_elem
integer, dimension(:), pointer lchain_last
integer, dimension(:), pointer lchain_next
subroutine i25sto_e2s(j_stok, irect, x, ii_stok, inacti, cand_s, cand_m, mulnsn, noint, marge, i_mem, prov_s, prov_m, igap0, cand_a, nedge, ledge, itab, drad, igap, gap_m, gap_m_l, gape, gap_e_l, admsr, edg_bisector, vtx_bisector, cand_p, dgapload)
subroutine i25sto_edg(j_stok, irect, x, ii_stok, inacti, cand_s, cand_m, mulnsn, noint, marge, i_mem, prov_s, prov_m, igap0, cand_a, nedge, ledge, itab, drad, igap, gape, gap_e_l, admsr, edg_bisector, vtx_bisector, cand_p, dgapload)