530
531
532
534 use element_mod , only : nixs
535
536
537
538#include "implicit_f.inc"
539
540
541
542#include "com04_c.inc"
543#include "units_c.inc"
544#include "scr03_c.inc"
545#include "sphcom.inc"
546#include "param_c.inc"
547#include "titr_c.inc"
548#include "scr17_c.inc"
549
550
551
552 INTEGER IXS(NIXS,*), ISEL(*), IPOINT(2,*), ITAB(*), ITABM1(*),
553 . ICODE(*),IPARTS(*),ISOLNOD(*),
554 . IXS10(6,*),IPART(LIPART1,*),IXS20(12,*),IXS16(8,*),
555 . KNOD2ELS(*),NOD2ELS(*),SPH2SOL(*),SOL2SPH(2,*)
556 my_real pm(npropm,nummat),geo(npropg,*)
557
558 TYPE (GROUP_) ,DIMENSION(NGRBRIC) :: IGRBRIC
559 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
560
561
562
563 INTEGER I, J, MT, MLAW, JTUR, I1, I2, INEW, K, N, NN
564 INTEGER IC,IC1,IC2,IC3,IC4
565 CHARACTER MESS*40, MESS2*40
566
567
568
569
570 DATA mess/'3D SOLID ELEMENTS DEFINITION '/
571 DATA mess2/'3D SOLID ELEMENTS SELECTION FOR TH PLOT '/
572
573
574
575
576
577 DO i=1,numels8
578 mt=ixs(1,i)
579 mlaw=nint(pm(19,mt))
580 jtur=nint(pm(70,mt))
581 DO j=2,9
582 IF((mlaw==6.AND.jtur/=0) .OR. mlaw==46) THEN
583 ic=icode(ixs(j,i))
584 ic1=ic/512
585 ic2=(ic-512*ic1)/64
586 ic3=(ic-512*ic1-64*ic2)/8
587 ic4=(ic-512*ic1-64*ic2-8*ic3)
588 IF(ic1==7 .OR. ic4==7)ixs(1,i)=-iabs(ixs(1,i))
589 ENDIF
590 ENDDO
591 ENDDO
592
593
594
595 CALL reordr(ixs ,nixs ,numels8,pm ,ipoint ,
596 . iparts,ngrbric,igrbric,nummat)
597
598
599
600 DO i=1,nsurf
601 nn =igrsurf(i)%NSEG
602 DO j=1,nn
603 IF (igrsurf(i)%ELTYP(j) == 1) THEN
604 IF (igrsurf(i)%ELEM(j) <= numels8)
605 . igrsurf(i)%ELEM(j)=ipoint(1,igrsurf(i)%ELEM(j))
606 END IF
607 ENDDO
608 ENDDO
609
610
611
612 IF(nsphsol/=0)THEN
613 DO i=1,numsph
614 IF(sph2sol(i)/=0)sph2sol(i)=ipoint(1,sph2sol(i))
615 ENDDO
616
617
618 DO n=1,numels8
619 sol2sph(1,n)=0
620 sol2sph(2,n)=0
621 END DO
622 n=sph2sol(first_sphsol)
623 sol2sph(1,n)=0
624 sol2sph(2,n)=sol2sph(1,n)+1
625 DO i=first_sphsol+1,first_sphsol+nsphsol-1
626 IF(sph2sol(i)==n)THEN
627 sol2sph(2,n)=sol2sph(2,n)+1
628 ELSE
629 n=sph2sol(i)
630 sol2sph(1,n)=i-1
631 sol2sph(2,n)=sol2sph(1,n)+1
632 END IF
633 END DO
634 END IF
635
636
637
638 DO i=1,numels8
639 ipoint(2,i)=isolnod(i)
640 ENDDO
641 DO i=1,numels8
642 isolnod(ipoint(1,i))=ipoint(2,i)
643 ENDDO
644
645
646
647 DO k=2,9
648 DO i=1,numels
649 n = ixs(k,i)
650 knod2els(n) = knod2els(n) + 1
651 IF(n/=0) nod2els(knod2els(n)) = i
652 END DO
653 END DO
654
655 DO k=1,6
656 DO i=1,numels10
657 n = ixs10(k,i)
658 IF (n/=0) THEN
659 knod2els(n) = knod2els(n) + 1
660 nod2els(knod2els(n)) = numels8+i
661 END IF
662 END DO
663 END DO
664
665 DO k=1,12
666 DO i=1,numels20
667 n = ixs20(k,i)
668 IF (n/=0) THEN
669 knod2els(n) = knod2els(n) + 1
670 nod2els(knod2els(n)) = numels10+numels8+i
671 END IF
672 END DO
673 END DO
674
675 DO k=1,8
676 DO i=1,numels16
677 n = ixs16(k,i)
678 IF (n/=0) THEN
679 knod2els(n) = knod2els(n) + 1
680 nod2els(knod2els(n)) = numels20+numels10+numels8+i
681 END IF
682 END DO
683 END DO
684
685 DO n=numnod,1,-1
686 knod2els(n+1)=knod2els(n)
687 END DO
688 knod2els(1)=0
689
690
691
692 i1=1
693 i2=50
694
695 IF(ipri>=5)THEN
696 WRITE (iout,'(//A//)') titre(206)
697 90 CONTINUE
698 i2=min0(i2,numels8)
699 WRITE (iout,'(//A/A//A/A,A/)')
700 . titre(90),titre(91),
701 . ' ELEMENT INTERNAL PART MATER PRSET',
702 . ' node1 node2 node3 node4 node5',
703 . ' node6 node7 node8'
704 DO I=I1,I2
705 INEW=IPOINT(1,I)
706 WRITE (IOUT,'(5i10)')
707 . IXS(11,INEW),INEW,IPART(4,IPARTS(INEW)),
708 . IPART(5,IPARTS(INEW)),IPART(6,IPARTS(INEW))
709 IF(ISOLNOD(INEW)==4)THEN
710 WRITE (IOUT,'(8i10)')
711 . ITAB(IXS(2,INEW)),ITAB(IXS(4,INEW)),
712 . ITAB(IXS(7,INEW)),ITAB(IXS(6,INEW))
713 ELSEIF(ISOLNOD(INEW)==6)THEN
714 WRITE (IOUT,'(6i10)')
715 . ITAB(IXS(5,INEW)),ITAB(IXS(3,INEW)),ITAB(IXS(4,INEW)),
716 . ITAB(IXS(6,INEW)),ITAB(IXS(7,INEW)),ITAB(IXS(8,INEW))
717 ELSE
718 WRITE (IOUT,'(8i10)')
719 . (ITAB(IXS(J,INEW)),J=2,9)
720 ENDIF
721 ENDDO
722 IF(I2==NUMELS8)GOTO 200
723 I1=I1+50
724 I2=I2+50
725 GOTO 90
726
727 200 CONTINUE
728 I1=1
729 I2=50
730
731 290 CONTINUE
732 WRITE (IOUT,'(//a/a//a/a,a/)')
733 . ' ten node tetra elements',
734 . ' -----------------------',
735 . ' element internal part mater prset',
736 . ' node1 node2 node3 node4 node5',
737 . ' node6 node7 node8 node9 node10'
738 I2=MIN0(I2,NUMELS10)
739 DO I=I1,I2
740 INEW=I+NUMELS8
741 WRITE (IOUT,'(5i10)')
742 . IXS(11,INEW),INEW,IPART(4,IPARTS(INEW)),
743 . IPART(5,IPARTS(INEW)),IPART(6,IPARTS(INEW))
744 WRITE (IOUT,'(10i10)')
745 . ITAB(IXS(2,INEW)),ITAB(IXS(4,INEW)),
746 . ITAB(IXS(7,INEW)),ITAB(IXS(6,INEW)),
747 . (ITAB(IXS10(J,I)),J=1,6)
748 ENDDO
749 IF(I2==NUMELS10)GOTO 300
750 I1=I1+50
751 I2=I2+50
752 GOTO 290
753
754 300 CONTINUE
755 I1=1
756 I2=50
757
758 DOWHILE(I1<=NUMELS20)
759 WRITE (IOUT,'(//a/a//a/a,a/a/a)')
760 . ' twenty node brick elements',
761 . ' --------------------------',
762 . ' element internal part mater prset',
763 . ' node1 node2 node3 node4 node5',
764 . ' node6 node7 node8',
765 . ' node9 node10 node11 node12 node13 node14',
766 . ' node15 node16 node17 node18 node19 node20'
767 I2=MIN0(I2,NUMELS20)
768 DO I=I1,I2
769 INEW=I+NUMELS8+NUMELS10
770 WRITE (IOUT,'(5i10)')
771 . IXS(11,INEW),INEW,IPART(4,IPARTS(INEW)),
772 . IPART(5,IPARTS(INEW)),IPART(6,IPARTS(INEW))
773 WRITE (IOUT,'(8i10/6i10/6i10)')
774 . (ITAB(IXS(J,INEW)),J=2,9),
775 . (ITAB(IXS20(J,I)),J=1,12)
776 ENDDO
777 I1=I1+50
778 I2=I2+50
779 ENDDO
780 I1=1
781 I2=50
782
783 DOWHILE(I1<=NUMELS16)
784 WRITE (IOUT,'(//a/a//a/a,a/a,a)')
785 . ' sixteen node shell elements',
786 . ' ---------------------------',
787 . ' element internal part mater prset',
788 . ' node1 node2 node3 node4 node5',
789 . ' node6 node7 node8',
790 . ' node9 node10 node11 node12 node13 node14',
791 . ' node15 node16'
792 I2=MIN0(I2,NUMELS16)
793 DO I=I1,I2
794 INEW=I+NUMELS8+NUMELS10+NUMELS20
795 WRITE (IOUT,'(5i10)')
796 . IXS(11,INEW),INEW,IPART(4,IPARTS(INEW)),
797 . IPART(5,IPARTS(INEW)),IPART(6,IPARTS(INEW))
798 WRITE (IOUT,'(8i10/8i10)')
799 . (ITAB(IXS(J,INEW)),J=2,9),
800 . (ITAB(IXS16(J,I)),J=1,8)
801 ENDDO
802 I1=I1+50
803 I2=I2+50
804 ENDDO
805 ENDIF
806
807 RETURN
subroutine reordr(ix, nx, nel, pm, ipoint, iparts, ngrele, igrelem, nummat)