!  単純梁(B32要素)の座屈。
!  要素数とオイラー座屈理論値の関係。
         implicit real*8(a-h,o-z)
         dimension x(10000),y(10000),z(10000)
!  節点座標：x(節点番号),y(節点番号),z(節点番号)
         print'("**")'
         print'("** Structure: Simple Beam.")'
         print'("** Test objective: B32 elements.")'
         print'("**")'
         print'("*NODE, NSET=Nall")'
!  梁の断面
!  桁幅(x方向)：b(m)
!  桁高(y方向)：h(m)
!  梁の軸長(z方向)：ell(m)
         b=6.d-3
         h=163.d-3
         ell=760.d-3
!  z方向の要素分割数：nz
         nz=1
!
!  1要素のz方向の長さ：zn
         zn=ell/nz
!
!         print*,'要素数：',nz
!         print*,'節点数：',2*nz+1
!  節点番号ごとの節点座標
!  節点番号：nset
!  節点座標：x(nset),y(nset),z(nset)
           nset=0
         do  k=0,2*nz
           nset=nset+1
           x(nset)=0
           y(nset)=0
           z(nset)=(zn/2)*k
          print '(i4,a,f9.4,a,f9.4,a,f9.4)',                
     &         nset,',',x(nset),',',y(nset),',',z(nset)
         end do
!
!
!  要素番号とその要素の3節点の節点番号
!  要素番号：nyou
         print'("*ELEMENT, TYPE=B32, ELSET=Eall")'
         nyou=0
       do k=1,nz
         nyou=nyou+1
         n1=2*k-1
         n2=2*k
         n3=2*k+1
         print'(i4,a,i4,a,i4,a,i4)',
     &   nyou,',',n1,',',n2,',',n3
       end do
!
!
!  境界条件
!  拘束節点の(節点番号,拘束する最初の自由度,拘束する最後の自由度)
!  ヒンジ支承
         print'("*NSET,NSET=Hinge")'
!  拘束節点の節点番号
         print'(i4,a)',1,','
!  ローラー支承
         print'("*NSET,NSET=Roller")'
         print'(i4,a)',2*nz+1,','
!  両端以外の節点
         print'("*NSET,NSET=All")'
         nyou=1
        do i=1,2*nz-1
         nyou=nyou+1
        print'(i4,a)',nyou,','
        end do
!        
         print'("*BOUNDARY")'
         print'(" Hinge,1,3")'
         print'(" Hinge,5,6")'
         print'(" Roller,1,2")'
         print'(" Roller,5,6")'
         print'(" All,5,6")'
!  材料の定義…(ヤング率(MPa),ポアソン比)
         print'("*MATERIAL,NAME=EL")'
         print'("*ELASTIC")'
         print'(" 206.d3, 0.3")'
!  材料と要素の関連づけ
         print'("*BEAM SECTION,ELSET=Eall,MATERIAL=EL,SECTION=RECT")'
!  断面の第1軸方向の長さ,第2軸方向の長さ
!  断面の第1軸を定義するための単位ベクトル
         print*,h,',',b
         print*,1.,',',0.,',',0.
!
         print'("*STEP")'
         print'("*STATIC,SOLVER=SPOOLES")'
!  座屈解析
         print'("*BUCKLE")'
         print'(" 1,0.1")'
!  載荷条件         
         print'("*CLOAD")'
!  自由端(LAST)に載荷する場合
         LAST=2*nz+1
!  節点番号LAST,荷重をかける自由度番号,荷重値(MN)
         print*,LAST,',',("3,-1.")
!
         print'("*NODE PRINT,NSET=Nall")'
         print'("U")'
         print'("*EL PRINT,ELSET=Eall")'
         print'("S")'
         print'("*NODE FILE,output=")'
         print'("U")'
         print'("*EL FILE,POSITION=AVERAGED AT NODES")'
         print'("S")'
         print'("*END STEP")'
!
!
!
         end
