!Code_Asterで計算した軸方向応力をgnuplot用にまとめる

! 使い方:見たい面をあらかじめgeometryでcreate groupして、その後、
!        Mesh_1を右クリック-->Create Groups from Geometry-->Nodesで選択。
!        commファイルを書き換えて、Code_Asterの結果をRESULTATファイルに出力。
!        viでrmedファイルを開き  :%s/N/\ /g  で余計なNを消して保存。

!        ./szz>hoge.d
!        gnuplot> set yrange[] reverse
!        gnuplot> set zrange[] reverse
!        gnuplot> splot 'hoge.d'

! 修正必要箇所: /# で跳ぶ

implicit none
!#--sub mesh の Mesh Information を見て入力
integer :: nmen=341              ! 見たい面の節点数
!#--Mesh_1 の Mesh Information を見て入力
integer :: nodes=924341          ! nodesの数
integer :: edges=8080            ! edgesの数
integer :: faces=80200           ! facesの数
integer :: volumes=200000        ! volumesの数
!#--rmedファイルを見て入力
integer :: youso=20              ! 1要素あたりの節点数
integer :: men=8                 ! 1面あたりの節点数
integer :: gcut1=4               ! グループ情報の読み飛ばしたい行数(先)
integer :: gcut2=49              ! グループ情報の読み飛ばしたい行数(後)
!---
integer,allocatable :: danmen(:) ! 見たい断面の節点番号
real(8),allocatable :: szz(:)    ! 軸方向応力
real(8),allocatable :: x(:)      ! 元のx座標
real(8),allocatable :: y(:)      ! 元のy座標
integer i,j,k,n
real rcut
character :: ccut*20
allocate(danmen(nmen))
allocate(szz(nodes))
allocate(x(nodes))
allocate(y(nodes))

!#--ファイル名
open(11,file='h1q2.rmed') !読み込みファイル名
!---

!---読み飛ばし
do i=1,8
   read(11,'()')
enddo

!---節点座標の読み取り
do i=1,nodes
   read(11,*) ccut,x(i),y(i),rcut
enddo

!---要素情報の読み飛ばし
do i=1,3+edges+3+faces*(int(men/7)+1)+3+volumes*(int(youso/7)+1)
   read(11,'()')
enddo

!---グループ情報の読み飛ばし(先)
do i=1,gcut1
   read(11,'()')
enddo

!---見たい断面に属する節点番号の取り出し
n=0
do i=1,int(nmen/7)
   n=n+1
   read(11,*) danmen(n),danmen(n+1),danmen(n+2),danmen(n+3)&
       &,danmen(n+4),danmen(n+5),danmen(n+6)
   n=n+6
enddo
n=n+1
if (mod(nmen,7)==1) then
   read(11,*) danmen(n)
else
   if (mod(nmen,7)==2) then
      read(11,*) danmen(n),danmen(n+1)
   else
      if (mod(nmen,7)==3) then
         read(11,*) danmen(n),danmen(n+1),danmen(n+2)
      else
         if (mod(nmen,7)==4) then
            read(11,*) danmen(n),danmen(n+1),danmen(n+2),danmen(n+3)
         else
            if (mod(nmen,7)==5) then
               read(11,*) danmen(n),danmen(n+1)&
                   &,danmen(n+2),danmen(n+3),danmen(n+4)
            else
               if (mod(nmen,7)==6) then
                  read(11,*) danmen(n),danmen(n+1),danmen(n+2)&
                      &,danmen(n+3),danmen(n+4),danmen(n+5)
               endif
            endif
         endif
      endif
   endif
endif

!---グループ情報の読み飛ばし(後)
do i=1,gcut2
   read(11,'()')
enddo

!---軸方向応力の取り出し
do i=1,nodes
   read(11,*) ccut,rcut,rcut,szz(i),rcut,rcut,rcut
enddo

!---出力
do i=1,nmen
   print*, szz(danmen(i)),x(danmen(i)),y(danmen(i))
enddo

end
