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)
47 use element_mod ,
only :nixs,nixc,nixtg
51#include "implicit_f.inc"
61 INTEGER IRECT(4,*), MSR(*), NSV(*),IRTL(*),
62 . ITAB(*),IKINE(*),IKINE1(*),IPARI(*),
63 . IXS(NIXS,*),IXC(NIXC,*),IXS10(6,*),IXS16(8,*),IXS20(12,*),IXTG(NIXTG,*)
64 INTEGER IDDLEVEL,IPROJ,NSN_MULTI_CONNEC,T2_ADD_CONNEC(*),T2_CONNEC(*),T2_NB_CONNEC(*)
67 . x(3,*),st(2,*),dmin(*),tzinf,dsearch,stb(2,*)
69 CHARACTER(LEN=NCHARTITLE) :: TITR
71 TYPE(intbuf_struct_) INTBUF_TAB
75 INTEGER II,JJ,I,J,K,L,M,IGNORE,ILEV,NUVAR,IDEL7N,
76 . nsn, nmn,nsnu,nmnu,nrtm,intth,iib,kk,common_nodes,doublon,iadd,idip
77 INTEGER CPT,N1,N2,N3,N4,FLAG_SOLID,FLAG_SHELL,NNOD,NB_LIST_COMPT,
78 . LIST_COMPT(2,NINTER),FOUND,FOUND_NOD(4)
81 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGS,TAGM
83 ALLOCATE( tags(numnod),tagm(numnod) )
101 IF (ilev /= 25 .and. ilev /= 26 .and. ilev /= 27 .and. ilev /= 28 .and. l /= 0)
THEN
102 CALL kinset(2,itab(i),ikine(i),1,0,ikine1(i))
103 CALL kinset(2,itab(i),ikine(i),2,0,ikine1(i))
104 CALL kinset(2,itab(i),ikine(i),3,0,ikine1(i))
105 CALL kinset(2,itab(i),ikine(i),4,0,ikine1(i))
106 CALL kinset(2,itab(i),ikine(i),5,0,ikine1(i))
107 CALL kinset(2,itab(i),ikine(i),6,0,ikine1(i))
109 IF (l == 0 .AND. ignore == 0)
THEN
112 . anmode=aninfo_blind_1,
116 ELSEIF (l == 0 .AND. ignore >= 2 .AND. dsearch == 0)
THEN
118 . msgtype=msgwarning,
119 . anmode=aninfo_blind_1,
123 ELSEIF (l == 0 .AND. ignore >= 1)
THEN
125 . msgtype=msgwarning,
126 . anmode=aninfo_blind_1,
132 ELSEIF ((ilev == 25 .OR. ((ilev == 27).AND.(irect(3,l)/=irect(4,l))) .OR. ilev == 26 .OR. ilev == 28) .and.
133 . (st(1,ii) > onep5 .OR. st(2,ii) > onep5 .OR.
134 . st(1,ii) <-onep5 .OR. st(2,ii) <-onep5))
THEN
137 . msgtype=msgwarning,
138 . anmode=aninfo_blind_1,
141 . i3=itab(irect(1,l)),
142 . i4=itab(irect(2,l)),
143 . i5=itab(irect(3,l)),
144 . i6=itab(irect(4,l)),
149 ELSEIF ((ilev == 27).AND.(irect(3,l)==irect(4,l))
150 . .and.(st(1,ii) < -fourth .OR. st(2,ii) < -fourth .OR.
151 . st(1,ii)+ st(2,ii) > onep25))
THEN
155 . msgtype=msgwarning,
156 . anmode=aninfo_blind_1,
159 . i3=itab(irect(1,l)),
160 . i4=itab(irect(2,l)),
161 . i5=itab(irect(3,l)),
166 ELSEIF ((ilev == 27).AND.(irect(3,l)==irect(4,l))
167 . .and.(st(1,ii) < -zep01 .OR. st(2,ii) < -zep01 .OR.
168 . st(1,ii) + st(2,ii) > onep01))
THEN
171 . msgtype=msgwarning,
172 . anmode=aninfo_blind_1,
175 . i3=itab(irect(1,l)),
176 . i4=itab(irect(2,l)),
177 . i5=itab(irect(3,l)),
182 ELSEIF (st(1,ii) > onep02 .OR. st(2,ii) > onep02 .OR.
183 . st(1,ii) <-onep02 .OR. st(2,ii) <-onep02)
THEN
185 . msgtype=msgwarning,
186 . anmode=aninfo_blind_1,
189 . i3=itab(irect(1,l)),
190 . i4=itab(irect(2,l)),
191 . i5=itab(irect(3,l)),
192 . i6=itab(irect(4,l)),
198 IF ((ilev==27).and.(irect(3,l)==irect(4,l)))
THEN
217 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)
225 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)
232 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)
242 . msgtype=msgwarning,
243 . anmode=aninfo_blind_1,
249 IF (l == 0 .AND. ignore >= 2 .AND. dsearch == 0)
THEN
251 . msgtype=msgwarning,
252 . anmode=aninfo_blind_1,
257 ELSEIF (l == 0 .AND. ignore >= 1)
THEN
260 . msgtype=msgwarning,
261 . anmode=aninfo_blind_1,
271 . anmode=aninfo_blind_1,
278 . msgtype=msgwarning,
279 . anmode=aninfo_blind_1,
285 . msgtype=msgwarning,
286 . anmode=aninfo_blind_1,
292 . msgtype=msgwarning,
293 . anmode=aninfo_blind_1,
299 . msgtype=msgwarning,
300 . anmode=aninfo_blind_1,
306 . msgtype=msgwarning,
307 . anmode=aninfo_blind_1,
325 IF (i > 0 .AND. j > 0)
THEN
329 IF (m > 0) tagm(m) = 1
336 IF (((ilev == 27).OR.(ilev == 28)).AND.(nsn_multi_connec > 0))
THEN
341 IF ((tags(ii) == 1).AND.(t2_nb_connec(i)>1))
THEN
342 iadd = t2_add_connec(i)
345 DO idip=1,t2_connec(iadd)
350 IF (t2_connec(iadd+5*(idip-1)+k) == irect(kk,j)) common_nodes = common_nodes + 1
353 IF (common_nodes == 4)
THEN
359 IF (m > 0) tagm(m) = 0
364 IF (list_compt(1,k)==t2_connec(iadd+5*(idip-1)+5)) found=k
367 nb_list_compt = nb_list_compt + 1
368 list_compt(1,nb_list_compt)=t2_connec(iadd+5*(idip-1)+5)
369 list_compt(2,nb_list_compt)= 1
371 list_compt(2,found) = list_compt(2,found) + 1
377 IF (doublon == 0)
THEN
379 idip = t2_connec(iadd)
380 t2_connec(iadd) = t2_connec(iadd) + 1
382 t2_connec(iadd+5*idip+k) = irect(k,j)
384 IF (irect(3,j) /= irect(4,j)) t2_connec(iadd+5*idip+4) = irect(4,j)
385 t2_connec(iadd+5*idip+5) = id
391 IF (nb_list_compt > 0)
THEN
393 DO i = 1,nb_list_compt
395 . msgtype=msgwarning,
396 . anmode=aninfo_blind_1,
397 . i1=list_compt(2,i),
398 . i2=list_compt(1,i),
403 . msgtype=msgwarning,
404 . anmode=aninfo_blind_1,
414 IF (iproj == 1 .and. ilev/=1 .and. ilev/=30 .and. ilev/=28)
THEN
417 IF (tags(ii) == 1)
THEN
419 IF (irect(3,j)/=irect(4,j))
THEN
421 stb(1,ii)=
min(one,
max(-1*one,st(1,ii)))
422 stb(2,ii)=
min(one,
max(-1*one,st(2,ii)))
433 lb1=fourth*(one - st(2,ii))*(one - st(1,ii))
434 lc1=fourth*(one - st(2,ii))*(one + st(1,ii))
437 IF(la1 < zero .or. lb1 < zero .or. lc1 < zero)
THEN
438 IF(la1<zero.and.lb1<zero)
THEN
442 ELSEIF(lb1<zero.and.lc1<zero)
THEN
446 ELSEIF(lc1<zero.and.la1<zero)
THEN
473 stb(2,ii) = one - two*lb1 - two*lc1
474 IF (stb(2,ii) < one-em10)
THEN
475 stb(1,ii)= (lc1-lb1)/(lc1+lb1)
476 ELSEIF (lb1 < -em10)
THEN
478 ELSEIF (lc1 < -em10)
THEN
489 ELSEIF (iproj == 3 .and. ilev/=1 .and. ilev/=30 .and. ilev/=28)
THEN
492 IF (tags(ii) == 1)
THEN
494 IF (irect(3,j)/=irect(4,j))
THEN
496 st(1,ii)=
min(one,
max(-1*one,st(1,ii)))
497 st(2,ii)=
min(one,
max(-1*one,st(2,ii)))
506 lb1=fourth*(one - st(2,ii))*(one - st(1,ii))
507 lc1=fourth*(one - st(2,ii))*(one + st(1,ii))
510 IF(la1 < zero .or. lb1 < zero .or. lc1 < zero)
THEN
511 IF(la1<zero.and.lb1<zero)
THEN
515 ELSEIF(lb1<zero.and.lc1<zero)
THEN
519 ELSEIF(lc1<zero.and.la1<zero)
THEN
546 st(2,ii) = one - two*lb1 - two*lc1
547 IF (st(2,ii) < one-em10)
THEN
548 st(1,ii)= (lc1-lb1)/(lc1+lb1)
549 ELSEIF (lb1 < -em10)
THEN
551 ELSEIF (lc1 < -em10)
THEN
576 IF (tags(i) == 1)
THEN
578 intbuf_tab%NSV(nsnu) = intbuf_tab%NSV(i)
585 IF (tagm(m) == 1)
THEN
587 intbuf_tab%MSR(nmnu) = intbuf_tab%MSR(i)
598 IF (tags(i) == 1)
THEN
600 intbuf_tab%IRTLM(j) = intbuf_tab%IRTLM(i)
603 IF (ilev == 10 .OR. ilev == 11 .OR. ilev == 12 .OR.
604 . ilev == 20 .OR. ilev == 21 .OR. ilev == 22)
THEN
607 IF (tags(i) == 1)
THEN
609 intbuf_tab%IRUPT(j) = intbuf_tab%IRUPT(i)
612 ELSEIF ((ilev == 27).OR.(ilev == 28))
THEN
615 IF (tags(i) == 1)
THEN
617 intbuf_tab%IRUPT(j) = intbuf_tab%IRUPT(i)
629 IF (tags(i) == 1)
THEN
631 intbuf_tab%CSTS(1+2*(j-1)) = intbuf_tab%CSTS(1+2*(i-1))
632 intbuf_tab%CSTS(1+2*(j-1)+1) = intbuf_tab%CSTS(1+2*(i-1)+1)
633 intbuf_tab%CSTS_BIS(1+2*(j-1)) = intbuf_tab%CSTS_BIS(1+2*(i-1))
634 intbuf_tab%CSTS_BIS(1+2*(j-1)+1) = intbuf_tab%CSTS_BIS(1+2*(i-1)+1)
639 IF (tags(i) == 1)
THEN
641 intbuf_tab%DPARA(1+7*(j-1)) = intbuf_tab%DPARA(1+7*(i-1))
642 intbuf_tab%DPARA(1+7*(j-1)+1) = intbuf_tab%DPARA(1+7*(i-1)+1)
643 intbuf_tab%DPARA(1+7*(j-1)+2) = intbuf_tab%DPARA(1+7*(i-1)+2)
644 intbuf_tab%DPARA(1+7*(j-1)+3) = intbuf_tab%DPARA(1+7*(i-1)+3)
645 intbuf_tab%DPARA(1+7*(j-1)+4) = intbuf_tab%DPARA(1+7*(i-1)+4)
646 intbuf_tab%DPARA(1+7*(j-1)+5) = intbuf_tab%DPARA(1+7*(i-1)+5)
647 intbuf_tab%DPARA(1+7*(j-1)+6) = intbuf_tab%DPARA(1+7*(i-1)+6)
652 IF (tagm(msr(i)) == 1)
THEN
654 intbuf_tab%NMAS(j) = intbuf_tab%NMAS(i)
655 intbuf_tab%NMAS(nmnu+j) = intbuf_tab%NMAS(nmn+i)
661 IF (tags(i) == 1)
THEN
663 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
664 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
669 IF (ilev==10 .OR. ilev==11 .OR. ilev==12 .OR. ilev==20 .OR.
670 . ilev==21 .OR. ilev==22 .OR. intth > 0)
THEN
673 IF (tags(i) == 1)
THEN
675 intbuf_tab%AREAS2(j) = intbuf_tab%AREAS2(i)
677 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
678 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
683 IF (ilev==10 .OR. ilev==11 .OR. ilev==12)
THEN
686 IF (tags(i) == 1)
THEN
688 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
689 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
692 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
693 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
696 intbuf_tab%XM0(1+3*(j-1)+k) = intbuf_tab%XM0(1+3*(i-1)+k)
697 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
698 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
702 ELSEIF (ilev==20 .OR. ilev==21 .OR. ilev==22)
THEN
705 IF (tags(i) == 1)
THEN
707 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
708 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
711 intbuf_tab%UVAR(1+nuvar*(j-1)+k) =
712 . intbuf_tab%UVAR(1+nuvar*(i-1)+k)
715 intbuf_tab%XM0(1+3*(j-1)+k) = intbuf_tab%XM0(1+3*(i-1)+k)
716 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
717 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
722 intbuf_tab%RUPT(1+k) = intbuf_tab%RUPT(1+k)
724 ELSEIF (ilev == 25)
THEN
727 IF (tags(i) == 1)
THEN
729 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
730 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
731 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
732 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
734 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
737 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
738 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
739 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
743 ELSEIF (ilev == 26)
THEN
746 IF (tags(i) == 1)
THEN
748 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
749 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
750 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
751 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
753 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
756 intbuf_tab%DSM(1+12*(j-1)+k) = intbuf_tab%DSM(1+12*(i-1)+k)
757 intbuf_tab%FSM(1+12*(j-1)+k) = intbuf_tab%FSM(1+12*(i-1)+k)
760 intbuf_tab%FINI(1+24*(j-1)+k) = intbuf_tab%FINI(1+24*(i-1)+k)
764 ELSEIF (ilev == 27)
THEN
767 IF (tags(i) == 1)
THEN
769 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
770 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
771 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
772 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
774 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
777 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
778 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
779 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
792 intbuf_tab%MSEGTYP2(i) = 0
806 IF (ixs(k,ii)==n2) found_nod(2) = 1
807 IF (ixs(k,ii)==n3) found_nod(3) = 1
808 IF (ixs(k,ii)==n4) found_nod(4) = 1
810 IF ((ii>numels8).AND.(ii<=numels8+numels10))
THEN
813 IF (ixs10(k,iib)==n2) found_nod(2) = 1
814 IF (ixs10(k,iib)==n3) found_nod(3) = 1
815 IF (ixs10(k,iib)==n4) found_nod(4) = 1
817 ELSEIF ((ii>numels8+numels10).AND.(ii<= numels8+numels10+numels16))
THEN
818 iib = ii-numels8-numels10
820 IF (ixs16(k,iib)==n2) found_nod(2) = 1
821 IF (ixs16(k,iib)==n3) found_nod(3) = 1
822 IF (ixs16(k,iib)==n4) found_nod(4) = 1
824 ELSEIF (ii>numels8+numels10+numels16)
THEN
825 iib = ii-numels8-numels10-numels16
827 IF (ixs20(k,iib)==n2) found_nod(2) = 1
828 IF (ixs20(k,iib)==n3) found_nod(3) = 1
829 IF (ixs20(k,iib)==n4) found_nod(4) = 1
832 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
833 IF (nnod == 4) flag_solid = 1
842 IF (ixc(k,ii)==n2) found_nod(2) = 1
843 IF (ixc(k,ii)==n3) found_nod(3) = 1
844 IF (ixc(k,ii)==n4) found_nod(4) = 1
846 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
847 IF (nnod == 4) flag_shell = 1
854 IF (ixtg(k,ii)==n2) found_nod(2) = 1
855 IF (ixtg(k,ii)==n3) found_nod(3) = 1
856 IF (ixtg(k,ii)==n4) found_nod(4) = 1
858 nnod = found_nod(1)+found_nod(2)+found_nod(3)+found_nod(4)
859 IF (nnod == 4) flag_shell = 1
862 IF ((flag_shell == 1).AND.(flag_solid == 0))
THEN
864 intbuf_tab%MSEGTYP2(i) = 1
867 intbuf_tab%MSEGTYP2(i) = 0
871 ELSEIF (ilev == 28)
THEN
874 IF (tags(i) == 1)
THEN
876 intbuf_tab%SMAS(j) = intbuf_tab%SMAS(i)
877 intbuf_tab%SINER(j) = intbuf_tab%SINER(i)
878 intbuf_tab%SPENALTY(j) = intbuf_tab%SPENALTY(i)
879 intbuf_tab%STFR_PENALTY(j) = intbuf_tab%STFR_PENALTY(i)
881 intbuf_tab%SKEW(1+9*(j-1)+k) = intbuf_tab%SKEW(1+9*(i-1)+k)
884 intbuf_tab%DSM(1+3*(j-1)+k) = intbuf_tab%DSM(1+3*(i-1)+k)
885 intbuf_tab%FSM(1+3*(j-1)+k) = intbuf_tab%FSM(1+3*(i-1)+k)
886 intbuf_tab%FINI(1+3*(j-1)+k) = intbuf_tab%FINI(1+3*(i-1)+k)
894 +
' SECONDARY NODE NEAREST SEGMENT MAIN NODES',
899 +
' SECONDARY NEAREST MAIN NODES SECONDARY '/
900 +
' NODE SEGMENT S T DIST')
901 2023
FORMAT(//
' PROJECTION ON 4 NODES SEGMENTS '//
902 +
' SECONDARY NEAREST MAIN NODES SECONDARY '/
903 +
' NODE SEGMENT S T DIST')
904 2024
FORMAT(//
' PROJECTION ON 3 NODES SEGMENTS '//
905 +
' SECONDARY NEAREST MAIN NODES SECONDARY '/
906 +
' NODE SEGMENT S T DIST')
909 DEALLOCATE( tags,tagm )