389
390
391
394
395
396
397
398
399
400
401
402
403
404#include "implicit_f.inc"
405
406
407
408#include "mvsiz_p.inc"
409
410
411
412#include "units_c.inc"
413#include "scr06_c.inc"
414
415
416
417 INTEGER NMN, NRTM, NSN, NOINT,I_STOK,NRTS,MULTIMP,MAXSIZ,I_MEM
418 INTEGER IRECTS(2,*),IRECTM(2,*),MWA(*)
419 INTEGER CAND_M(*),CAND_S(*),MSR(*),NSV(*),ADDCM(*),CHAINE(2,*),
420 * II_STOK, IDDLEVEL, IT19
422 . x(3,*),xyzm(6,*),dist,
423 . bumult,gap,tzinf,maxbox,minbox,drad
424 INTEGER ID
425 CHARACTER(LEN=NCHARTITLE) :: TITR
426
427
428
429 INTEGER I_ADD_MAX
430 parameter(i_add_max = 1001)
431
432 INTEGER PROV_S(2*MVSIZ),PROV_M(2*MVSIZ)
433 INTEGER I, J, L, N1, N2, N3, N4, I_AMAX,IADFIN
434 INTEGER I_ADD, ADESTK, NB_NC, NB_EC, ADNSTK,ISTOP, IBID
435 INTEGER IP1, IP2, IP21, IP22, IP31,J_STOK,I_BID,NB_N_B,
436 . ADD(2,0:I_ADD_MAX)
437
439 . dx1,dy1,dz1,
440 . dx3,dy3,dz3,
441 . dx4,dy4,dz4,
442 . dx6,dy6,dz6,
443 . dd1,dd2,dd3,dd4,dd,xmin,ymin,zmin,
444 . xmax,
ymax,zmax,tzinf0,minbox0,maxbox0,
445 . bid,marge,tzinf_st,marge_st
446
447
448
449
450
451 dd=zero
452 DO l=1,nrts
453
454 n1=irects(1,l)
455 n2=irects(2,l)
456
457 dx1=(x(1,n1)-x(1,n2))
458 dy1=(x(2,n1)-x(2,n2))
459 dz1=(x(3,n1)-x(3,n2))
460 dd1=sqrt(dx1**2+dy1**2+dz1**2)
461 dd=dd+ dd1
462 ENDDO
463 DO l=1,nrtm
464
465 n1=irectm(1,l)
466 n2=irectm(2,l)
467
468 dx1=(x(1,n1)-x(1,n2))
469 dy1=(x(2,n1)-x(2,n2))
470 dz1=(x(3,n1)-x(3,n2))
471 dd1=sqrt(dx1**2+dy1**2+dz1**2)
472 dd=dd+ dd1
473 ENDDO
474
475
476
477 dd = dd/(nrts+nrtm)
478
479 marge = bumult*dd
480 tzinf = marge +
max(gap,drad)
481
482 marge_st = bmul0*dd
483
484
485
486
487
488
489
490
491
492 IF(iddlevel==0) marge_st = marge
493 tzinf_st = marge_st +
max(gap,drad)
494
495 minbox= dd + tzinf
496 maxbox= two*minbox
497 tzinf0 = tzinf
498 minbox0 = minbox
499 maxbox0 = maxbox
500
501 dist = zero
502
503
504
505 xmin=ep30
506 xmax=-ep30
507 ymin=ep30
509 zmin=ep30
510 zmax=-ep30
511
512 DO 20 i=1,nmn
513 j=msr(i)
514 xmin=
min(xmin,x(1,j))
515 ymin=
min(ymin,x(2,j))
516 zmin=
min(zmin,x(3,j))
517 xmax=
max(xmax,x(1,j))
519 zmax=
max(zmax,x(3,j))
520 20 CONTINUE
521 xmin=xmin-tzinf_st
522 ymin=ymin-tzinf_st
523 zmin=zmin-tzinf_st
524 xmax=xmax+tzinf_st
526 zmax=zmax+tzinf_st
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551 nb_n_b = 1
552 i_mem = 0
553 ii_stok = 0
554
555
556 100 CONTINUE
557
558
559
560
561
562
563
564 maxsiz = 3*(
max(nrtm,nrts)+100)
565 ip1 = 1
566 ip2 = ip1+nrtm+100
567 ip21= ip2+maxsiz
568 ip22= ip21+nrts+100
569
570
571
572
573
574
575
576 add(1,1) = 0
577 add(2,1) = 0
578 add(1,2) = 0
579 add(2,2) = 0
580 i_add = 1
581 i_amax = 1
582 xyzm(1,i_add) = xmin
583 xyzm(2,i_add) = ymin
584 xyzm(3,i_add) = zmin
585 xyzm(4,i_add) = xmax
587 xyzm(6,i_add) = zmax
588 i_stok = 0
589 ii_stok = 0
590 j_stok = 0
591 adnstk = 0
592 adestk = 0
593 nb_nc = nrts
594 nb_ec = nrtm
595 istop = 0
596 iadfin = 0
597
598
599
600 DO 120 i=1,nb_ec
601 addcm(i)=0
602 mwa(ip1+i-1) = i
603 120 CONTINUE
604 DO 140 i=1,nb_nc
605 mwa(ip21+i-1) = i
606 140 CONTINUE
607
608
609
610
611
612 200 CONTINUE
613
614
615
617 1 mwa(ip1),mwa(ip2),mwa(ip21),mwa(ip22),add,
618 2 irects ,x ,nb_nc ,nb_ec ,xyzm,
619 3 i_add ,irectm ,i_amax ,istop ,
620 4 maxsiz ,i_stok ,i_mem ,nb_n_b ,iadfin,
621 5 cand_s ,cand_m ,nsn ,noint ,tzinf_st,
622 6 maxbox ,minbox ,j_stok ,addcm ,chaine,
623 7 prov_s ,prov_m ,ii_stok ,multimp,
id,titr)
624
625 IF (i_mem == 2) RETURN
626
627
628 IF(i_mem==1)THEN
629 nb_n_b = nb_n_b + 1
630 i_mem = 0
631 GO TO 100
632 ENDIF
633 IF(i_add/=0) GO TO 200
634
635
636
637
638
639 i_stok=ii_stok
641 1 j_stok,irects,irectm,x ,ii_stok,
642 2 cand_s,cand_m,nsn ,noint ,tzinf_st,
643 3 i_mem ,prov_s,prov_m,multimp,addcm,
644 4 chaine,iadfin)
645 IF (i_mem == 2) RETURN
646
647 i_stok=ii_stok
648 IF ((nsn/=0).AND.(it19==0)) THEN
649 WRITE(iout,*)' POSSIBLE IMPACT NUMBER:',i_stok,' (<=',
650 . 1+(i_stok-1)/nsn,'*NSN)'
651
652
653
654
655
656 ELSEIF(nsn==0) THEN
658 . msgtype=msgwarning,
659 . anmode=aninfo_blind_2,
661 . c1=titr)
662 ENDIF
663
664 RETURN
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
integer, parameter nchartitle
subroutine i11sto(j_stok, irects, irectm, x, ii_stok, cand_n, cand_e, nsn, noint, tzinf, i_mem, prov_n, prov_e, multimp, addcm, chaine, iadfin)
subroutine i11tri(bpe, pe, bpn, pn, add, irects, x, nb_sc, nb_mc, xyzm, i_add, irectm, i_amax, istop, maxsiz, i_stok, i_mem, nb_n_b, iadfin, cand_s, cand_m, nsn, noint, tzinf, maxbox, minbox, j_stok, addcm, chaine, prov_s, prov_m, ii_stok, multimp, id, titr)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)