34 SUBROUTINE i2tid3(X ,IRECT ,ST ,MSR ,NSV ,
35 2 IRTL ,ITAB ,IKINE ,IKINE1,DMIN ,
36 3 IPARI ,TZINF ,IDDLEVEL,
37 4 ID,TITR,INTBUF_TAB ,DSEARCH, IPROJ,
38 5 IXS,IXC,IXS10,IXS16,IXS20,STB ,
39 6 NSN_MULTI_CONNEC,T2_ADD_CONNEC,T2_NB_CONNEC,T2_CONNEC,IXTG)
50#include "implicit_f.inc"
60 INTEGER IRECT(4,*), MSR(*), (*),IRTL(*),
61 . ITAB(*),IKINE(*),IKINE1(*),IPARI(*),
62 . IXS(NIXS,*),IXC(NIXC,*),IXS10(6,*),IXS16(8,*),IXS20(12,*),IXTG(NIXTG,*)
63 INTEGER IDDLEVEL,IPROJ,NSN_MULTI_CONNEC,T2_ADD_CONNEC(*),T2_CONNEC(*),T2_NB_CONNEC(*)
66 . x(3,*),st(2,*),dmin(*),tzinf,dsearch,stb(2,*)
68 CHARACTER(LEN=NCHARTITLE) :: TITR
70 TYPE(intbuf_struct_) INTBUF_TAB
74 INTEGER II,JJ,I,J,K,L,M,IGNORE,ILEV,NUVAR,IDEL7N,
75 . nsn, nmn,nsnu,nmnu,nrtm,intth,idn,iib,kk,common_nodes,doublon,iadd,idip
76 INTEGER CPT,N1,N2,N3,N4,FLAG_SOLID,FLAG_SHELL,NNOD,NB_LIST_COMPT,
77 . LIST_COMPT(2,NINTER),FOUND,FOUND_NOD(4)
80 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGS,TAGM
82 ALLOCATE( tags(numnod),tagm(numnod) )
100 IF (ilev /= 25 .and. ilev /= 26 .and. ilev /= 27 .and. ilev /= 28 .and. l /= 0)
THEN
101 CALL kinset(2,itab(i),ikine(i),1,0,ikine1(i))
102 CALL kinset(2,itab(i),ikine(i),2,0,ikine1(i))
103 CALL kinset(2,itab(i),ikine(i),3,0,ikine1(i))
104 CALL kinset(2,itab(i),ikine(i),4,0,ikine1(i))
105 CALL kinset(2,itab(i),ikine(i),5,0,ikine1(i))
106 CALL kinset(2,itab(i),ikine(i),6,0,ikine1(i))
108 IF (l == 0 .AND. ignore == 0)
THEN
111 . anmode=aninfo_blind_1,
115 ELSEIF (l == 0 .AND. ignore >= 2 .AND. dsearch == 0)
THEN
117 . msgtype=msgwarning,
118 . anmode=aninfo_blind_1,
122 ELSEIF (l == 0 .AND. ignore >= 1)
THEN
124 . msgtype=msgwarning,
125 . anmode=aninfo_blind_1,
131 ELSEIF ((ilev == 25 .OR. (
132 . (st(1,ii) > onep5 .OR. st(2,ii) > onep5 .OR.
133 . st(1,ii) <-onep5 .OR. st(2,ii) <-onep5))
THEN
136 . msgtype=msgwarning,
137 . anmode=aninfo_blind_1,
140 . i3=itab(irect(1,l)),
141 . i4=itab(irect(2,l)),
142 . i5=itab(irect(3,l)),
143 . i6=itab(irect(4,l)),
148 ELSEIF ((ilev == 27).AND.(irect(3,l)==irect(4,l))
149 . .and.(st(1,ii) < -fourth .OR. st(2,ii) < -fourth .OR.
150 . st(1,ii)+ st(2,ii) > onep25))
THEN
154 . msgtype=msgwarning,
155 . anmode=aninfo_blind_1,
158 . i3=itab(irect(1,l)),
159 . i4=itab(irect(2,l)),
160 . i5=itab(irect(3,l)),
165 ELSEIF ((ilev == 27).AND.(irect(3,l)==irect(4,l))
166 . .and.(st(1,ii) < -zep01 .OR. st(2,ii) < -zep01 .OR.
167 . st(1,ii) + st(2,ii) > onep01))
THEN
170 . msgtype=msgwarning,
171 . anmode=aninfo_blind_1,
174 . i3=itab(irect(1,l)),
175 . i4=itab(irect(2,l)),
176 . i5=itab(irect(3,l)),
181 ELSEIF (st(1,ii) > onep02 .OR. st(2,ii) > onep02 .OR.
182 . st(1,ii) <-onep02 .OR. st(2,ii) <-onep02)
THEN
184 . msgtype=msgwarning,
185 . anmode=aninfo_blind_1,
188 . i3=itab(irect(1,l)),
189 . i4=itab(irect(2,l)),
190 . i5=itab(irect(3,l)),
191 . i6=itab(irect(4,l)),
197 IF ((ilev==27).and.(irect(3,l)==irect(4,l)))
THEN
216 IF (tags(i) == 1)
WRITE(iout,
'(6I10,2F8.4,1PG20.13)') itab(i),l,(itab(irect(jj,l)),jj=1,4),st(1,ii),st(2,ii),dmin(ii)
224 IF (tags(i) == 1)
WRITE(iout,
'(6I10,2F8.4,1PG20.13)') itab(i
231 IF (tags(i) == 2)
WRITE(iout,
'(5I10,2F8.4,1PG20.13)') itab(i),l,(itab(irect(jj,l)),jj=1,3),st(1,ii),st(2,ii),dmin(ii)
241 . msgtype=msgwarning,
242 . anmode=aninfo_blind_1,
248 IF (l == 0 .AND. ignore >= 2 .AND. dsearch == 0)
THEN
250 . msgtype=msgwarning,
251 . anmode=aninfo_blind_1,
256 ELSEIF (l == 0 .AND. ignore >= 1)
THEN
259 . msgtype=msgwarning,
260 . anmode=aninfo_blind_1,
270 . anmode=aninfo_blind_1,
277 . msgtype=msgwarning,
278 . anmode=aninfo_blind_1,
284 . msgtype=msgwarning,
285 . anmode=aninfo_blind_1,
291 . msgtype=msgwarning,
292 . anmode=aninfo_blind_1,
298 . msgtype=msgwarning,
299 . anmode=aninfo_blind_1,
305 . msgtype=msgwarning,
306 . anmode=aninfo_blind_1,
324 IF (i > 0 .AND. j > 0)
THEN
328 IF (m > 0) tagm(m) = 1
335 IF (((ilev == 27).OR.(ilev == 28)).AND.(nsn_multi_connec > 0))
THEN
340 IF ((tags(ii) == 1).AND.(t2_nb_connec(i)>1))
THEN
341 iadd = t2_add_connec(i)
344 DO idip=1,t2_connec(iadd)
349 IF (t2_connec(iadd+5*(idip-1)+k) == irect(kk,j)) common_nodes = common_nodes + 1
352 IF (common_nodes == 4)
THEN
358 IF (m > 0) tagm(m) = 0
363 IF (list_compt(1,k)==t2_connec(iadd
366 nb_list_compt = nb_list_compt
367 list_compt(1,nb_list_compt)=t2_connec(iadd+5*(idip-1)+5)
368 list_compt(2,nb_list_compt)= 1
370 list_compt(2,found) = list_compt(2,found) + 1
376 IF (doublon == 0)
THEN
378 idip = t2_connec(iadd)
379 t2_connec(iadd) = t2_connec(iadd) + 1
381 t2_connec(iadd+5*idip+k) = irect(k,j)
383 IF (irect(3,j) /= irect(4,j)) t2_connec(iadd+5*idip+4) = irect(4,j)
384 t2_connec(iadd+5*idip+5) = id
390 IF (nb_list_compt > 0)
THEN
392 DO i = 1,nb_list_compt
394 . msgtype=msgwarning,
395 . anmode=aninfo_blind_1,
396 . i1=list_compt(2,i),
397 . i2=list_compt(1,i),
402 . msgtype=msgwarning,
403 . anmode=aninfo_blind_1,
413 IF (iproj == 1 .and. ilev/=1 .and. ilev/=30 .and. ilev/=28)
THEN
416 IF (tags(ii) == 1)
THEN
418 IF (irect(3,j)/=irect(4,j))
THEN
420 stb(1,ii)=
min(one,
max(-1*one,st(1,ii)))
421 stb(2,ii)=
min(one,
max(-1*one,st(2,ii)))
432 lb1=fourth*(one - st(2,ii))*(one - st(1,ii))
433 lc1=fourth*(one - st(2,ii))*(one + st(1,ii))
436 IF(la1 < zero .or. lb1 < zero .or. lc1 < zero)
THEN
437 IF(la1<zero.and.lb1<zero)
THEN
441 ELSEIF(lb1<zero.and.lc1<zero)
THEN
445 ELSEIF(lc1<zero.and.la1<zero)
THEN
472 stb(2,ii) = one - two*lb1 - two*lc1
473 IF (stb(2,ii) < one-em10)
THEN
474 stb(1,ii)= (lc1-lb1)/(lc1+lb1)
475 ELSEIF (lb1 < -em10)
THEN
477 ELSEIF (lc1 < -em10)
THEN
488 ELSEIF (iproj == 3 .and. ilev
THEN
491 IF (tags(ii) == 1)
THEN
493 IF (irect(3,j)/=irect(4,j))
THEN
495 st(1,ii)=
min(one,
max(-1*one,st(1,ii)))
496 st(2,ii)=
min(one,
max(-1*one,st(2,ii)))
505 lb1=fourth*(one - st(2,ii))*(one - st(1,ii))
506 lc1=fourth*(one - st(2,ii))*(one + st(1,ii))
509 IF(la1 < zero .or. lb1 < zero .or. lc1 < zero)
THEN
510 IF(la1<zero.and.lb1<zero)
THEN
514 ELSEIF(lb1<zero.and.lc1<zero)
THEN
518 ELSEIF(lc1<zero.and.la1<zero)
THEN
545 st(2,ii) = one - two*lb1 - two*lc1
546 IF (st(2,ii) < one-em10)
THEN
547 st(1,ii)= (lc1-lb1)/(lc1+lb1)
548 ELSEIF (lb1 < -em10)
THEN
550 ELSEIF (lc1 < -em10)
THEN
575 IF (tags(i) == 1)
THEN
577 intbuf_tab%NSV(nsnu) = intbuf_tab%NSV(i)
584 IF (tagm(m) == 1)
THEN
586 intbuf_tab%MSR(nmnu) = intbuf_tab%MSR(i)
597 IF (tags(i) == 1)
THEN
599 intbuf_tab%IRTLM(j) = intbuf_tab%IRTLM(i)
602 IF (ilev == 10 .OR. ilev == 11 .OR. ilev == 12 .OR.
603 . ilev == 20 .OR. ilev == 21 .OR. ilev == 22)
THEN
606 IF (tags(i) == 1)
THEN
608 intbuf_tab%IRUPT(j) = intbuf_tab%IRUPT(i)
611 ELSEIF ((ilev == 27).OR.(ilev == 28))
THEN
614 IF (tags(i) == 1)
THEN
616 intbuf_tab%IRUPT(j) = intbuf_tab%IRUPT(i)
628 IF (tags(i) == 1)
THEN
630 intbuf_tab%CSTS(1+2*(j-1)) = intbuf_tab%CSTS(1+2*(i-1))
631 intbuf_tab%CSTS(1+2*(j-1)+1) = intbuf_tab%CSTS(1+2*(i-1)+1)
632 intbuf_tab%CSTS_BIS(1+2*(j-1)) = intbuf_tab%CSTS_BIS(1+2*(i
633 intbuf_tab%CSTS_BIS(1+2*(j-1)+1) = intbuf_tab%CSTS_BIS(1+2*(i-1)+1)
638 IF (tags(i) == 1)
THEN
640 intbuf_tab%DPARA(1+7*(j-1)) = intbuf_tab%DPARA(1+7*(i-1))
641 intbuf_tab%DPARA(1+7*(j-1)+1) = intbuf_tab%DPARA(1+7*(i-1)+1)
642 intbuf_tab%DPARA(1+7*(j-1)+2) = intbuf_tab%DPARA(1+7*(i-1)+2)
643 intbuf_tab%DPARA(1+7*(j-1)+3) = intbuf_tab%DPARA(1+7*(i-1)+3)
644 intbuf_tab%DPARA(1+7*(j-1)+4) = intbuf_tab%DPARA(1+7*(i-1)+4)
645 intbuf_tab%DPARA(1+7*(j-1)+5) = intbuf_tab%DPARA(1+7*(i-1)+5)
646 intbuf_tab%DPARA(1+7*(j-1)+6) = intbuf_tab%DPARA(1+7*(i-1)+6)
651 IF (tagm(msr(i)) == 1)
THEN
653 intbuf_tab%NMAS(j) = intbuf_tab%NMAS(i)
654 intbuf_tab%NMAS(nmnu+j) = intbuf_tab%NMAS(nmn+i)
660 IF (tags(i) == 1)
THEN
662 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
663 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
668 IF (ilev==10 .OR. ilev==11 .OR. ilev==12 .OR. ilev==20 .OR.
669 . ilev==21 .OR. ilev==22 .OR. intth > 0)
THEN
672 IF (tags(i) == 1)
THEN
674 intbuf_tab%AREAS2(j) = intbuf_tab%AREAS2(i)
676 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
677 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
682 IF (ilev==10 .OR. ilev==11 .OR. ilev==12)
THEN
685 IF (tags(i) == 1)
THEN
687 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
688 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
691 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
692 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
695 intbuf_tab%XM0(1+3*(j-1)+k) = intbuf_tab%XM0(1+3*(i-1)+k)
696 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
697 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
701 ELSEIF (ilev==20 .OR. ilev==21 .OR. ilev==22)
THEN
704 IF (tags(i) == 1)
THEN
706 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
707 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
710 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
711 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
714 intbuf_tab%XM0(1+3*(j-1)+k) = intbuf_tab%XM0(1+3*(i-1)+k)
715 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
716 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
721 intbuf_tab%RUPT(1+k) = intbuf_tab%RUPT(1+k)
723 ELSEIF (ilev == 25)
THEN
726 IF (tags(i) == 1)
THEN
728 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
729 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
730 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
731 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
733 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
736 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
737 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
738 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
742 ELSEIF (ilev == 26)
THEN
745 IF (tags(i) == 1)
THEN
747 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
748 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
749 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
750 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
752 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
755 intbuf_tab%DSM(1+12*(j-1)+k) = intbuf_tab%DSM(1+12*(i-1)+k)
756 intbuf_tab%FSM(1+12*(j-1)+k) = intbuf_tab%FSM(1+12*(i-1)+k)
759 intbuf_tab%FINI(1+24*(j-1)+k) = intbuf_tab%FINI(1+24*(i-1)+k)
763 ELSEIF (ilev == 27)
THEN
766 IF (tags(i) == 1)
THEN
768 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
769 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
770 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
771 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
773 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
776 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
777 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
778 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
791 intbuf_tab%MSEGTYP2(i) = 0
805 IF (ixs(k,ii)==n2) found_nod(2) = 1
806 IF (ixs(k,ii)==n3) found_nod(3) = 1
807 IF (ixs(k,ii)==n4) found_nod(4) = 1
809 IF ((ii>numels8).AND.(ii<=numels8+numels10))
THEN
812 IF (ixs10(k,iib)==n2) found_nod(2) = 1
813 IF (ixs10(k,iib)==n3) found_nod(3) = 1
814 IF (ixs10(k,iib)==n4) found_nod(4) = 1
816 ELSEIF ((ii>numels8+numels10).AND.(ii<= numels8+numels10+numels16))
THEN
817 iib = ii-numels8-numels10
819 IF (ixs16(k,iib)==n2) found_nod(2) = 1
820 IF (ixs16(k,iib)==n3) found_nod(3) = 1
821 IF (ixs16(k,iib)==n4) found_nod(4) = 1
823 ELSEIF (ii>numels8+numels10+numels16)
THEN
824 iib = ii-numels8-numels10-numels16
826 IF (ixs20(k,iib)==n2) found_nod(2) = 1
827 IF (ixs20(k,iib)==n3) found_nod(3) = 1
828 IF (ixs20(k,iib)==n4) found_nod(4) = 1
831 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
832 IF (nnod == 4) flag_solid = 1
841 IF (ixc(k,ii)==n2) found_nod(2) = 1
842 IF (ixc(k,ii)==n3) found_nod(3) = 1
843 IF (ixc(k,ii)==n4) found_nod(4) = 1
845 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
846 IF (nnod == 4) flag_shell = 1
853 IF (ixtg(k,ii)==n2) found_nod(2) = 1
854 IF (ixtg(k,ii)==n3) found_nod(3) = 1
855 IF (ixtg(k,ii)==n4) found_nod(4) = 1
857 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
858 IF (nnod == 4) flag_shell = 1
861 IF ((flag_shell == 1).AND.(flag_solid == 0))
THEN
863 intbuf_tab%MSEGTYP2(i) = 1
866 intbuf_tab%MSEGTYP2(i) = 0
870 ELSEIF (ilev == 28)
THEN
873 IF (tags(i) == 1)
THEN
875 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
876 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
877 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
878 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
880 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
883 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
884 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
885 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
893 +
' SECONDARY NODE NEAREST SEGMENT MAIN NODES',
898 +
' SECONDARY NEAREST MAIN NODES SECONDARY '/
899 +
' NODE SEGMENT S T DIST')
900 2023
FORMAT(//
' PROJECTION ON 4 NODES SEGMENTS '//
901 +' secondary nearest
main nodes secondary
'/
902 +' node segment s t dist
')
903 2024 FORMAT(//' projection on
'//
904 +' secondary nearest
main nodes secondary
'/
905 +' node segment s t dist
')
908 DEALLOCATE( TAGS,TAGM )