386
387
388
389 USE elbufdef_mod
392 use element_mod , only : nixc,nixtg
393
394
395
396#include "implicit_f.inc"
397
398
399
400#include "param_c.inc"
401#include "units_c.inc"
402#include "task_c.inc"
403#include "com01_c.inc"
404#include "scr16_c.inc"
405#include "mvsiz_p.inc"
406
407
408
409 CHARACTER*10 KEY
410 CHARACTER*40 TEXT
411 INTEGER ITENS
412 INTEGER IPARG(NPARG,*), DD_IAD(NSPMD+1,*),SIZLOC,SIZP0,
413 . IGEO(NPROPGI,*),IXC(NIXC,*),IXTG(NIXTG,*),
414 . SIZ_WR
416 . thke(*),geo(npropg,*)
417 TYPE (), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
418 TYPE (STACK_PLY) :: STACK
419
420
421
422 INTEGER NG,NEL,NFT,ITY,LFT,NPT,
423 . LLT,MLW,ISTRAIN,
424 . I1,I3,IHBE,I,J,JJ,
425 . JJ_OLD,NGF,NGL,NN,K,NPG,IPG,NLAY,NPTS,NPTR,IL,ITHK,NPTT,,
426 . IGTYP,IXFEM,ISUBSTACK,NPT_ALL,MPT,COMPTEUR,L,II(8)
427 INTEGER, DIMENSION(NSPGROUP) :: JJ_LOC
428 INTEGER, DIMENSION(NSPGROUP+1,NSPMD) :
429
430 . wa(sizloc),wap0(siz_wr),wap0_loc(sizp0)
431
433 . func(6),hourg(5)
434
435 TYPE(BUF_LAY_) ,POINTER :: BUFLY
436 TYPE(G_BUFEL_) ,POINTER :: GBUF
437 TYPE(L_BUFEL_) ,POINTER :: LBUF
438 TYPE(DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
439 TYPE(DRAPEG_) :: DRAPEG
440
441 IF (ispmd == 0) THEN
442 WRITE(iugeo,'(2A)')'/SHELL /TENSOR /',key
443 WRITE(iugeo,'(A)')text
444 IF (itens == 95) THEN
445 WRITE(iugeo,'(A)')
446 . '#(NPG=Surface Quadratue Points; For QEPH,QBAT,DKT18: NPG>1) '
447 IF (outyy_fmt == 2) THEN
448 WRITE(iugeo,'(A)')
449 . .GT.'#FORMAT: (IF NPT0) (2I8/1P6E12.5/6E12.5) '
450 WRITE(iugeo,'(A)')
451 . '#NPT,NPG,THICK,EM,EB,H1,H2,H3'
452 WRITE(iugeo,'(2A)')
453 . '#(TX,TY,TXY,TXZ,TYZ,EPSP(K,J,I)',
454 . 'K=1,NPG),J=1,NPT),I=1,NUMSHL)'
455 WRITE(iugeo,'(A)')
456 . '#FORMAT: (IF NPT == 0) ((2I8/1P6E12.5/6E12.5/3E12.5)) '
457 WRITE(iugeo,'(A)')
458 . '#0,NPG,THICK,EM,EB,H1,H2,H3'
459 WRITE(iugeo,'(2A)')
460 . '#(NX,NY,NXY,NXZ,NYZ,EPSP,MX,MY,MXY(K,I)',
461 . 'K=1,NPG),I=1,NUMSHL)'
462 ELSE
463 WRITE(iugeo,'(A)')
464 . .GT.'#FORMAT: (IF NPT0) (2I10/1P6E20.13/6E20.13) '
465 WRITE(iugeo,'(A)')
466 . '#NPT,NPG,THICK,EM,EB,H1,H2,H3'
467 WRITE(iugeo,'(2A)')
468 . '#(TX,TY,TXY,TXZ,TYZ,EPSP(K,J,I)',
469 . 'K=1,NPG),J=1,NPT),I=1,NUMSHL)'
470 WRITE(iugeo,'(A)')
471 . '#FORMAT: (IF NPT == 0) ((2I10/1P6E20.13/6E20.13/3E20.13)) '
472 WRITE(iugeo,'(A)')
473 . '#0,NPG,THICK,EM,EB,H1,H2,H3'
474 WRITE(iugeo,'(2A)')
475 . '#(NX,NY,NXY,NXZ,NYZ,EPSP,MX,MY,MXY(K,I)',
476 . 'K=1,NPG),I=1,NUMSHL)'
477 ENDIF
478 ELSEIF (itens == 96) THEN
479 IF (outyy_fmt == 2) THEN
480 WRITE(iugeo,'(A)')
481 . '#FORMAT: (1P6E12.5/3E12.5) '
482 WRITE(iugeo,'(2A)')
483 . '#(EX(I),EY(I),EXY(I),EXZ(I),EYZ(I),',
484 . 'EPSP(I),KX(I),KY(I),KXY(I),I=1,NUMSHL)'
485 ELSE
486 WRITE(iugeo,'(A)')
487 . '#FORMAT: (1P6E20.13/3E20.13) '
488 WRITE(iugeo,'(2A)')
489 . '#(EX(I),EY(I),EXY(I),EXZ(I),EYZ(I),',
490 . 'EPSP(I),KX(I),KY(I),KXY(I),I=1,NUMSHL)'
491 ENDIF
492 ENDIF
493 ENDIF
494
495 jj_old = 1
496 ngf = 1
497 ngl = 0
498 jj = 0
499 compteur = 0
500 DO nn=1,nspgroup
501 ngl = ngl + dd_iad(ispmd+1,nn)
502 DO ng = ngf, ngl
503 ity = iparg(5,ng)
504 IF (ity == 3 .OR. ity == 7) THEN
505 mlw = iparg(1,ng)
506 nel = iparg(2,ng)
507 nft = iparg(3,ng)
508 lft = 1
509 llt = nel
510 npt = iparg(6,ng)
511 istrain= iparg(44,ng)
512 ihbe = iparg(23,ng)
513 ithk = iparg(28,ng)
514 igtyp = iparg(38,ng)
515 ixfem = iparg(54,ng)
516 isubstack=iparg(71,ng)
517
518 gbuf => elbuf_tab(ng)%GBUF
519 nlay = elbuf_tab(ng)%NLAY
520 nptr = elbuf_tab(ng)%NPTR
521 npts = elbuf_tab(ng)%NPTS
522 npg = nptr*npts
523
524 DO i=1,8
525 ii(i) = nel*(i-1)
526 ENDDO
527
528
529
530
531 mpt = iabs(npt)
532 IF (igtyp == 51 .OR. igtyp == 52 ) THEN
533 npt_all = 0
534 DO il=1,nlay
535 npt_all = npt_all + elbuf_tab(ng)%BUFLY(il)%NPTT
536 ENDDO
538 ENDIF
539
540 IF (mlw == 27 .OR. mlw == 25 .OR.
541 . mlw == 32 .OR. mlw == 15) istrain=1
542
543
544
545 IF (itens == 95) THEN
546 IF (ihbe == 0) THEN
547 DO i=lft,llt
548 wa(jj+1) = ihbe
549 jj=jj+1
550 ENDDO
551 ELSEIF (ihbe >= 11) THEN
552 CALL c_tf_ne(elbuf_tab(ng),ihbe ,nel ,npt ,mlw ,
553 . ity ,istrain ,jj ,wa ,1 ,
554 . nlay ,nptr ,npts ,ithk ,nft ,
555 . thke ,npg ,igtyp,geo ,igeo ,
556 . ixfem ,isubstack,stack,drape_sh4n, drape_sh3n,
557 . ixc ,ixtg ,mpt ,drapeg )
558 ELSE
559 IF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23) THEN
560 DO i=lft,llt
561 IF (gbuf%G_HOURG == 0) THEN
562 hourg(1) = zero
563 hourg(2) = zero
564 hourg(3) = zero
565 ELSE
566 hourg(1) = gbuf%HOURG(ii(1)+i)
567 hourg(2) = gbuf%HOURG(ii(2)+i)
568 hourg(3) = gbuf%HOURG(ii(3)+i)
569 ENDIF
570 wa(jj+1) = ihbe
571 jj=jj+1
572 wa(jj+1) = 0
573 IF (ithk >0 ) THEN
574 wa(jj+2) = gbuf%THK(i)
575 ELSE
576 wa(jj+2) = thke(i+nft)
577 END IF
578
579 wa(jj+3) = gbuf%EINT(i)
580 wa(jj+4) = gbuf%EINT(i+llt)
581 wa(jj+5) = hourg(1)
582 wa(jj+6) = hourg
583 wa(jj+7) = hourg(3)
584 wa(jj+8) = gbuf%FORPG(ii(1)+i)
585 wa(jj+9) = gbuf%FORPG(ii(2)+i)
586 wa(jj+10) = gbuf%FORPG(ii(3)+i)
587 wa(jj+11) = gbuf%FORPG(ii(4)+i)
588 wa(jj+12) = gbuf%FORPG(ii(5)+i)
589 IF (gbuf%G_PLA > 0) THEN
590 wa(jj+13) = gbuf%PLA(i)
591 ELSE
592 wa(jj+13)=zero
593 ENDIF
594 wa(jj+14) = gbuf%MOMPG(ii(1)+i)
595 wa(jj+15) = gbuf%MOMPG(ii(2)+i)
596 wa(jj+16) = gbuf%MOMPG(ii(3)+i)
597 jj = jj + 16
598 ENDDO
599 ELSE
600 DO i=lft,llt
601 IF (gbuf%G_HOURG == 0) THEN
602 hourg(1) = zero
603 hourg(2) = zero
604 hourg(3) = zero
605 ELSE
606 hourg(1) = gbuf%HOURG(ii(1)+i)
607 hourg(2) = gbuf%HOURG(ii(2)+i)
608 hourg(3) = gbuf%HOURG(ii(3)+i)
609 ENDIF
610 wa(jj+1) = ihbe
611 jj=jj+1
612 wa(jj+1) = mpt
613 IF (ithk > 0) THEN
614 wa(jj+2) = gbuf%THK(i)
615 ELSE
616 wa(jj+2) = thke(i+nft)
617 END IF
618 wa(jj+3) = gbuf%EINT(i)
619 wa(jj+4) = gbuf%EINT(i+llt)
620 wa(jj+5) = hourg(1)
621 wa(jj+6) = hourg(2)
622 wa(jj+7) = hourg(3)
623 jj = jj+7
624
625 IF (npt == 0) THEN
626
627 wa(jj+1) = gbuf%FORPG(ii(1)+i)
628 wa(jj+2) = gbuf%FORPG(ii(2)+i)
629 wa(jj+3) = gbuf%FORPG(ii(3)+i)
630 wa(jj+4) = gbuf%FORPG(ii(4)+i)
631 wa(jj+5) = gbuf%FORPG(ii(5)+i)
632 IF (gbuf%G_PLA > 0) THEN
633 wa(jj+6) = gbuf%PLA(i)
634 ELSE
635 wa(jj+6)=zero
636 ENDIF
637 wa(jj+7) = gbuf%MOMPG(ii(1)+i)
638 wa(jj+8) = gbuf%MOMPG(ii(2)+i)
639 wa(jj+9) = gbuf%MOMPG(ii(3)+i)
640 jj = jj+9
641
642 ELSE
643
644 IF (nlay == 1) THEN
645 bufly => elbuf_tab(ng)%BUFLY(1)
646 nptt = bufly%NPTT
647 DO it = 1,nptt
648 lbuf => bufly%LBUF(1,1,it)
649 wa(jj+1) = lbuf%SIG(ii(1)+i)
650 wa(jj+2) = lbuf%SIG(ii(2)+i)
651 wa(jj+3) = lbuf%SIG(ii(3)+i)
652 wa(jj+4) = lbuf%SIG(ii(4)+i)
653 wa(jj+5) = lbuf%SIG(ii(5)+i)
654 IF (bufly%L_PLA > 0) THEN
655 wa(jj+6) = lbuf%PLA(i)
656 ELSE
657 wa(jj+6) = zero
658 ENDIF
659 jj = jj+6
660 ENDDO
661 ELSEIF (nlay > 1) THEN
662 DO il = 1,nlay
663 bufly => elbuf_tab(ng)%BUFLY(il)
664 nptt = bufly%NPTT
665 DO it=1,nptt
666 lbuf => bufly%LBUF(1,1,it)
667 wa(jj+1) = lbuf%SIG(ii(1)+i)
668 wa(jj+2) = lbuf%SIG(ii(2)+i)
669 wa(jj+3) = lbuf%SIG(ii(3)+i)
670 wa(jj+4) = lbuf%SIG(ii(4)+i)
671 wa(jj+5) = lbuf%SIG(ii(5)+i)
672 IF (bufly%L_PLA > 0) THEN
673 wa(jj+6) = lbuf%PLA(i)
674 ELSE
675 wa(jj+6) = zero
676 ENDIF
677 jj = jj+6
678 ENDDO
679 ENDDO
680 ENDIF
681 ENDIF
682 ENDDO ! DO i=lft,llt
683 ENDIF
684 ENDIF
685
686
687
688 ELSEIF (itens == 96) THEN
689
690 IF (gbuf%G_STRA > 0) THEN
691 DO i=lft,llt
692 wa(jj+1) = gbuf%STRA(ii(1)+i)
693 wa(jj+2) = gbuf%STRA(ii(2)+i)
694 wa(jj+3) = gbuf%STRA(ii(3)+i)
695 wa(jj+4) = gbuf%STRA(ii(4)+i)
696 wa(jj+5) = gbuf%STRA(ii(5)+i)
697
698
699
700 IF (gbuf%G_PLA > 0) THEN
701 IF (nlay > 1) THEN
702 il = iabs(nlay)/2 + 1
703 bufly => elbuf_tab(ng)%BUFLY(il)
704 IF (bufly%L_PLA > 0) THEN
705 nptt = bufly%NPTT
706 IF (ihbe /= 11) THEN
707 func(6) = zero
708 DO it=1,nptt
709 lbuf => bufly%LBUF(1,1,it)
710 func(6) = func(6) + lbuf%PLA(i)/nptt
711 ENDDO
712 wa(jj+6) = func(6)
713 ELSE
714 wa(jj+6) = bufly%PLAPT(i)
715 ENDIF
716 ENDIF
717 ELSE
718 bufly => elbuf_tab(ng)%BUFLY(1)
719 IF (bufly%L_PLA > 0) THEN
720 nptt = bufly%NPTT
721 il = iabs(nptt)/2 + 1
722 IF (ihbe /= 11) THEN
723 wa(jj+6) = bufly%LBUF(1,1,il)%PLA(i)
724 ELSE
725 i3 = (il-1)*nel
726 wa(jj+6) = bufly%PLAPT(i3+i)
727 ENDIF
728 ENDIF
729 ENDIF
730 ELSE
731 wa(jj+6) = zero
732 ENDIF
733 wa(jj+7) = gbuf%STRA(ii(6)+i)
734 wa(jj+8) = gbuf%STRA(ii(7)+i)
735 wa(jj+9) = gbuf%STRA(ii(8)+i)
736 jj = jj+9
737 ENDDO
738 ELSE
739 DO i=lft,llt
740 i1 = 8*(i-1)
741 wa(jj+1) = zero
742 wa(jj+2) = zero
743 wa(jj+3) = zero
744 wa(jj+4) = zero
745 wa(jj+5) = zero
746
747
748
749 IF (gbuf%G_PLA > 0) THEN
750 IF (nlay > 1) THEN
751 il = iabs(nlay)/2 + 1
752 bufly => elbuf_tab(ng)%BUFLY(il)
753 IF (bufly%L_PLA > 0) THEN
754 nptt = bufly%NPTT
755 IF (ihbe /= 11) THEN
756 func(6) = zero
757 DO it=1,nptt
758 lbuf => bufly%LBUF(1,1,it)
759 func(6) = func(6) + lbuf%PLA(i)/nptt
760 ENDDO
761 wa(jj+6) = func(6)
762 ELSE
763 wa(jj+6) = bufly%PLAPT(i)
764 ENDIF
765 ENDIF
766 ELSE
767 bufly => elbuf_tab(ng)%BUFLY(1)
768 IF (bufly%L_PLA > 0) THEN
769 nptt = bufly%NPTT
770 il = iabs(nptt)/2 + 1
771 IF (ihbe /= 11) THEN
772 wa(jj+6) = bufly%LBUF(1,1,il)%PLA(i)
773 ELSE
774 i3 = (il-1)*nel
775 wa(jj+6) = bufly%PLAPT(i3+i)
776 ENDIF
777 ENDIF
778 ENDIF
779 ELSE
780 wa(jj+6) = zero
781 ENDIF
782 wa(jj+7) = zero
783 wa(jj+8) = zero
784 wa(jj+9) = zero
785 jj = jj+9
786 ENDDO
787 ENDIF
788
789 ENDIF
790 ENDIF
791 ENDDO
792
793 ngf = ngl + 1
794 jj_loc(nn) = jj - compteur
795 compteur = jj
796 ENDDO
797
798 IF( nspmd>1 ) THEN
800 ELSE
801 wap0_loc(1:jj) = wa(1:jj)
802 adress(1,1) = 1
803 DO nn = 2,nspgroup+1
804 adress(nn,1) = jj_loc(nn-1) + adress(nn-1,1)
805 ENDDO
806 ENDIF
807
808 IF(ispmd==0) THEN
809 DO nn=1,nspgroup
810 compteur = 0
811 DO k = 1,nspmd
812 IF((adress(nn+1,k)-1-adress(nn,k))>=0) THEN
813 DO l = adress(nn,k),adress(nn+1,k)-1
814 compteur = compteur + 1
815 wap0(compteur) = wap0_loc(l)
816 ENDDO
817 ENDIF
818 ENDDO
819
820
821 jj_old = compteur
822 IF(jj_old>0) THEN
823
824 IF (itens == 95) THEN
825 j = 1
826 DO WHILE (j < jj_old+1)
827 ihbe=nint(wap0(j))
828 j=j+1
829 IF (ihbe == 0) THEN
830 IF (outyy_fmt == 2) THEN
831 npt = 0
832 npg = 0
833 WRITE(iugeo,'(2I8/,1P6E12.5)')
834 . npt,npg,zero,zero,zero,
835 . zero,zero,zero
836 WRITE(iugeo,'(1P6E12.5)')
837 . zero,zero,zero,
838 . zero,zero,zero
839 WRITE(iugeo,'(1P3E12.5)')
840 . zero,zero,zero
841 ELSE
842 npt = 0
843 npg = 0
844 WRITE(iugeo,'(2I10/,1P6E20.13)')
845 . npt,npg,zero,zero,zero,
846 . zero,zero,zero
847 WRITE(iugeo,'(1P6E20.13)')
848 . zero,zero,zero,
849 . zero,zero,zero
850 WRITE(iugeo,'(1P3E20.13)')
851 . zero,zero,zero
852 ENDIF
853 ELSEIF (ihbe >= 11) THEN
854 IF (outyy_fmt == 2) THEN
855 npt = nint(wap0(j))
856 npg = nint(wap0(j+1))
857 WRITE(iugeo,'(2I8/,1P3E12.5)')npt,npg,
858 . (wap0(j+k),k=2,4)
859 j = j + 5
860 IF (npt == 0) THEN
861 DO ipg=1,npg
862 WRITE(iugeo,'(1P6E12.5/1P3E12.5)')
863 . (wap0(j+k),k=0,8)
864 j = j + 9
865 ENDDO
866 ELSE
867 DO i=1,npt
868 DO ipg=1,npg
869 WRITE(iugeo,'(1P6E12.5)')(wap0(j+k),k=0,5)
870 j = j + 6
871 ENDDO
872 ENDDO
873 ENDIF
874 ELSE
875 npt = nint(wap0(j))
876 npg = nint(wap0(j+1))
877 WRITE(iugeo,'(2I10/,1P3E20.13)')npt,npg,
878 . (wap0(j+k),k=2,4)
879 j = j + 5
880 IF (npt == 0) THEN
881 DO ipg=1,npg
882 WRITE(iugeo,'(1P6E20.13/1P3E20.13)')
883 . (wap0(j+k),k=0,8)
884 j = j + 9
885 ENDDO
886 ELSE
887 DO i=1,npt
888 DO ipg=1,npg
889 WRITE(iugeo,'(1P6E20.13)')(wap0(j+k),k=0,5)
890 j = j + 6
891 ENDDO
892 ENDDO
893 ENDIF
894 ENDIF
895 ELSE
896 npt = nint(wap0(j))
897 IF (npt == 0) THEN
898 IF (outyy_fmt == 2) THEN
899 WRITE(iugeo,'(I8/,1P6E12.5)')npt,(wap0(j+k),k=1,6)
900 WRITE(iugeo,'(1P6E12.5/1P3E12.5)')(wap0(j+k),k=7,15)
901 ELSE
902 WRITE(iugeo,'(I10/,1P6E20.13)')npt,(wap0(j+k),k=1,6)
903 WRITE(iugeo,'(1P6E20.13/1P3E20.13)')(wap0(j+k),k=7,15)
904 ENDIF
905 j = j + 16
906 ELSE
907 IF (outyy_fmt == 2) THEN
908 WRITE(iugeo,'(I8/,1P6E12.5)')npt,(wap0(j+k),k=1,6)
909 ELSE
910 WRITE(iugeo,'(I10/,1P6E20.13)')npt,(wap0(j+k),k=1,6)
911 ENDIF
912 j = j + 7
913 IF (outyy_fmt == 2) THEN
914 DO i=1,npt
915 WRITE(iugeo,'(1P6E12.5)')(wap0(j-1+k),k=1,6)
916 j = j + 6
917 ENDDO
918 ELSE
919 DO i=1,npt
920 WRITE(iugeo,'(1P6E20.13)')(wap0(j-1+k),k=1,6)
921 j = j + 6
922 ENDDO
923 ENDIF
924 ENDIF
925 ENDIF
926 ENDDO
927 ELSEIF (itens == 96) THEN
928 j = 1
929 IF (outyy_fmt == 2) THEN
930 DO WHILE (j < jj_old)
931 WRITE(iugeo,'(1P6E12.5)')(wap0(j-1+k),k=1,6)
932 WRITE(iugeo,'(1P3E12.5)')(wap0(j-1+k),k=7,9)
933 j = j + 9
934 ENDDO
935 ELSE
936 DO WHILE (j < jj_old)
937 WRITE(iugeo,'(1P6E20.13)')(wap0(j-1+k),k=1,6)
938 WRITE(iugeo,'(1P3E20.13)')(wap0(j-1+k),k=7,9)
939 j = j + 9
940 ENDDO
941 ENDIF
942 ENDIF
943 ENDIF
944 ENDDO
945 ENDIF
946
947 RETURN
subroutine c_tf_ne(elbuf_str, ihbe, nel, npt, mlw, ity, istrain, jj, wa, iw, nlay, nptr, npts, ithk, nft, thke, npg, igtyp, geo, igeo, ixfem, isubstack, stack, drape_sh4n, drape_sh3n, ixc, ixtg, mpt, drapeg)