!オンサイト木橋(一体化モデル)のCCXの計算結果をgnuplot用にまとめる
! (荷重-たわみ 関係)、(たわみ-幅方向 関係)

! 実行例：
! $ ./plonsi<onsi.dat
! gnuplot< pl 'pd.d' using 1:2 w l,'pd.d' using 3:4 w l,'pd.d' using 5:6 w l

! gnuplot< set yrange[] reverse
! gnuplot< pl 'db.d' w l

implicit none
!#--入力---
integer :: nstep=1             !    :datファイルの出力ステップ数
integer :: nx1=28              !    :木材の幅員方向(x)分割数
integer :: nx2=4               !    :鋼板の厚さ方向(x)分割数
integer :: ny1=8               !    :上下木材の高さ方向(y)分割数
integer :: ny2=16              !    :上下木材間隔の高さ方向(y)分割数
real    :: b1=840d-3/2         ! m  :木材全体の幅(x)/2
real    :: b2=9.0d-3           ! m  :鋼板の厚さ(x)
real    :: py=100.d-3          ! MN :荷重
!---
real(8),allocatable :: v0(:,:) ! m  :変位計のの載荷方向(y)の節点変位
real(8),allocatable :: v1(:,:) ! m  :載荷した上縁の載荷方向(y)の節点変位
real(8),allocatable :: v2(:,:) ! m  :載荷した下縁の載荷方向(y)の節点変位
real(8),allocatable :: v3(:,:) ! m  :梁中央の面の載荷方向(y)の節点変位
real(8),allocatable :: d1(:)   ! m  :載荷した上縁の載荷方向(y)の平均変位
real(8),allocatable :: d2(:)   ! m  :載荷した下縁の載荷方向(y)の平均変位
real(8),allocatable :: d3(:)   ! m  :梁中央の面の載荷方向(y)の平均変位
real(8),allocatable :: p(:)    ! MN :荷重
integer    nitimen             !    :断面の節点数
integer    njouen              !    :上縁の節点数
integer    nkaen               !    :下縁の節点数
integer    i,j,k,icut
real       rcut,dx1,dx2
character  ccut*20 
real(8)    step
nitimen=(nx2+1)*(ny1*2+ny2+1)+nx1*(ny1+1)*2
njouen=nx1+nx2+1
nkaen=nx1+1
dx1=b1/nx1
dx2=b2/nx2
allocate(v0(njouen,nstep))
allocate(v1(njouen,nstep))
allocate(v2(nkaen,nstep))
allocate(v3(nitimen,nstep))
allocate(d1(nstep),d2(nstep),d3(nstep),p(nstep))

!#--出力ファイル名
open(11,file='pdi6m.d',status='replace')
open(12,file='dbi6m.d',status='replace')

v0=0.d0
v1=0.d0
v2=0.d0
v3=0.d0
d1=0.d0
d2=0.d0
d3=0.d0
p=0.d0
do j=1,nstep
   !変位計(henni)のデータ
   read(*,'()')
   read(*,*) ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,step
   p(j)=(step-1.d0)*py*1.d3
   read(*,'()')
   do i=1,njouen
      read(*,*) icut,rcut,v0(i,j),rcut
   enddo
   !上縁(jouen)のデータ
   read(*,'()')
   read(*,*) ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,step
   p(j)=step*py*1.d3
   read(*,'()')
   do i=1,njouen
      read(*,*) icut,rcut,v1(i,j),rcut
   enddo
   !下縁(kaen)のデータ
   read(*,'()')
   read(*,*) ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,step
   p(j)=step*py*1.d3
   read(*,'()')
   do i=1,nkaen
      read(*,*) icut,rcut,v2(i,j),rcut
   enddo
   !中央面(koteiz)のデータ
   read(*,'()')
   read(*,*) ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,ccut,step
   read(*,'()')
   do i=1,nitimen
      read(*,*) icut,rcut,v3(i,j),rcut
   enddo
enddo
!---断面の変位を平均化
do j=1,nstep
   d1(j)=sum(v1(:,j))/size(v1(:,j))*1.d3
   d2(j)=sum(v2(:,j))/size(v2(:,j))*1.d3
   d3(j)=sum(v3(:,j))/size(v3(:,j))*1.d3
enddo
!---gnuplot用のデータの出力(荷重−たわみ)
write(11,'(A)') '# danmen (mm)    P (kN)   kaen (mm)    P (kN)   jouen (mm)    P (kN)'
write(11,'(A)') ' 0E+00 0E+00 0E+00 0E+00 0E+00 0E+00'
j=nstep
write(11,'(1pe13.5,1pe13.5,1pe13.5,1pe13.5,1pe13.5,1pe13.5)') d3(j),p(j),d2(j),p(j),d1(j),p(j)
!---gnuplot用のデータの出力(たわみ-幅)
write(12,'(A)') '# haba (mm)    tawami(mm)'
j=nstep
do k=1,nx2+1!鋼板
   i=k
   write(12,'(1pe13.5,1pe13.5)') (dx2*(k-1))*1.d3,v0(i,j)*1.d3
enddo
do k=nx2+1,nx2+nx1!木材
   i=k+1
   write(12,'(1pe13.5,1pe13.5)') (b2+dx1*(k-nx2))*1.d3,v0(i,j)*1.d3
enddo
do k=nx2+nx1-1,nx2+1,-1!折り返し木材
   i=k+1
   write(12,'(1pe13.5,1pe13.5)') (b2*2+b1*2-(b2+dx1*(k-nx2)))*1.d3,v0(i,j)*1.d3
enddo
do k=nx2+1,1,-1!折り返し鋼板
   i=k
   write(12,'(1pe13.5,1pe13.5)') (b2*2+b1*2-(dx2*(k-1)))*1.d3,v0(i,j)*1.d3
enddo

end
