c まずは、beam8p.inpと同じデータを、要素番号と節点番号の
c 並び順を変えて任意の要素数で生成するプログラムを作ってみる。
         implicit real*8(a-h,o-z)
         dimension x(10000),y(10000),z(10000)
c 節点座標：x(節点番号),y(節点番号),z(節点番号)
         write(*,110)
         write(*,120)
         write(*,130)
         write(*,140)
         write(*,150)
110      format('**')
120      format('** beam8p.inpと同じデータを要素番号と節点番号の')
130      format('** 並び順(と要素数)を変えたデータ')
140      format('**')
150      format('*NODE, NSET=Nall')
c 桁幅(x方向)：b(m)
c 桁高(y方向)：h(m)
c 梁の軸長(z方向)：ell(m)
         b=1.d0
         h=1.d0
         ell=8.d0
c x,y,z方向の要素分割数：nx,ny,nz
         nx=4
         ny=4
         nz=16
c
c 1要素のx,y,z方向の長さ：xn,yn,zn
         xn=b/nx
         yn=h/ny
         zn=ell/nz
c
c         print*,'要素数：',nx*ny*nz
c         print*,'節点数：',(nx+1)*(ny+1)*(nz+1)
c 節点番号ごとの節点座標
c 節点番号：nset
           nset=0
        do k=0,nz
        do j=0,ny
        do i=0,nx
           nset=nset+1
           x(nset)=xn*i
           y(nset)=yn*j
           z(nset)=zn*k
           write(*,210), nset,x(nset),y(nset),z(nset)
         end do
         end do
         end do
210      format(i6,',',f9.3,',',f9.3,',',f9.3)
c
c
c 要素番号とその要素の8節点の節点番号
         nyou=0
        do k=1,nz
        do j=1,ny
        do i=1,nx
         nyou=nyou+1
         n1=(nx+1)*(ny+1)*(k-1)+(nx+1)*(j-1)+i
         n2=n1+1
         n3=n1+(nx+1)
         n4=n3+1
         n5=n1+(nx+1)*(ny+1)
         n6=n2+(nx+1)*(ny+1)
         n7=n3+(nx+1)*(ny+1)
         n8=n4+(nx+1)*(ny+1)
         write(*,220)
         write(*,230) nyou,n1,n3,n7,n5,n2,n4,n8,n6
         end do
         end do
         end do
220      format('*ELEMENT, TYPE=C3D8, ELSET=Eall')
230      format(i6,',',
     & i6,',',i6,',',i6,',',i6,',',i6,',',i6,',',i6,',',i6)
c
c
c 境界条件
c 節点ごとに異なる拘束条件を与える場合をふまえて、
c 拘束条件の種類に対して適当な名前(FIXとか)を付ける
c 後藤メモ：FIXの意味が上記でいいかどうか確認して下さい
         write(*,310)
310      format('*NSET,NSET=FIX')
c 拘束節点の節点番号
         nx1ny1=(nx+1)*(ny+1)
         do i=1,nx1ny1
            write(*,320) i
         end do
320      format(i6,',')
c
c 上記(NSET=FIX)の拘束節点の拘束変位
         write(*,330)
330      format('*BOUNDARY')
         write(*,340)
340      format('FIX,1,3')
c 節点ごとに異なる拘束条件を与える場合は、
c FIX2とかとして上記を繰り返すのかな(? 調べて)。
         write(*,350)
         write(*,360)
         write(*,370)
         write(*,380)
350      format('*MATERIAL,NAME=EL')
360      format('*ELASTIC')
c ヤング率とポアソン比(てことは異方性のときはどうすんのかな)
370      format('210000.,.3')
380      format('*SOLID SECTION,ELSET=Eall,MATERIAL=EL')
c
c 載荷条件
c 節点ごとに異なる載荷条件を与える場合をふまえて、
c 載荷条件の種類に対して適当な名前(LASTとか)を付ける
c 後藤メモ：LASTの意味が上記でいいかどうか確認して下さい
c
c
         write(*,410)
410      format('*NSET,NSET=LAST')
c
         nhasi=nset-nx1ny1+1
         do i=nhasi,nset
         write(*,420) i
         end do
420      format(i6,',')
c
         write(*,430)
         write(*,440)
         write(*,450)
         write(*,460)
430      format('*STEP')
440      format('*STATIC,SOLVER=SPOOLES')
450      format('*CLOAD')
c 2と0.36の意味はなんだろう? y方向に0.36とか?(調べて)
460      format('LAST,2,0.36')
c 節点ごとに異なる載荷条件を与える場合は、
c LAST2とかとして上記を繰り返すのかな(? 調べて)。
c
         write(*,510)
         write(*,520)
         write(*,530)
         write(*,540)
         write(*,550)
         write(*,560)
         write(*,570)
         write(*,580)
         write(*,590)
510      format('*NODE PRINT,NSET=Nall')
520      format('U')
530      format('*EL PRINT,ELSET=Eall')
540      format('S')
550      format('*NODE FILE')
560      format('U')
570      format('*EL FILE,POSITION=AVERAGED AT NODES')
580      format('S')
590      format('*END STEP')
c
c
c
         end
