Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
! まずは、beam8p.inpと同じデータを、要素番号と節点番号の ! 並び順を変えて任意の要素数で生成するプログラムを作ってみる。 implicit real*8(a-h,o-z) dimension x(10000),y(10000),z(10000),es66(6,6),ew66(6,6) ! 節点座標:x(節点番号),y(節点番号),z(節点番号) print'("**")' print'("** beam8p.inpと同じデータを要素番号と節点番号の")' print'("** 並び順(と要素数)を変えたデータ")' print'("**")' print'("*NODE, NSET=Nall")' ! 桁幅(x方向):b(m) !bs=6.d-3 ! 鋼板の桁幅(x方向):bs(m) bs=9.d-3 ! 鋼板の桁幅(x方向):bs(m) bw=840.d-3/2 ! 木材の桁幅(x方向):bw(m) hw=120.d-3 ! 木材の桁高(y方向):hw(m) h=500.d-3 ! 桁高(y方向):h(m) hs=h-hw*2 ! 鋼板中央部の高さ(m) ell=3.d0 ! 梁の軸長(z方向):ell(m) p=0.1d0 !中央集中荷重(MN) ! !bs=2.d-3: bw=8.d-3 hw=4.d-3: h=10.d-3: hs=3.d-3: ell=10.d-3 ! ! x,y,z方向の要素分割数:nx,ny,nz nx=4 ny=6 nz=8 nxs=1 !鋼板の幅(x)方向の要素分割数 nxw=nx-nxs !木材の幅(x)方向の要素分割数 nyw=1 !木材の高さ(y)方向の要素分割数 nys=ny-nyw*2 !鋼板中央部の高さ(y)方向の要素分割数 nsiten=1 !梁両端から支点までの要素数 nmen=(nx+1)*(nyw+1)*2+(nxs+1)*(nys-1) !断面の全節点数 ! ! 1要素のx,y,z方向の長さ:xn,yn,zn xw=bw/nxw !木材要素1要素のx方向の長さ xs=bs/nxs !木材要素1要素のx方向の長さ yw=hw/nyw !木材要素1要素のy方向の長さ ys=hs/nys !鋼板中央部要素1要素のy方向の長さ zn=ell/nz !各要素の1要素のz方向の長さ ! ! print*,'要素数:',(2*nx*nyw+nxs*nys)*nz ! print*,'節点数:',(2*(nx+1)*(nyw+1)+(nxs+1)*(nys-1))*(nz+1) ! ! 鋼板の材料定数 es=206.d9 /1.d6 pois=0.3d0 gs=es/2.d0/(1.d0+pois) call zeromx(6,ew66) es66(1,1)= 1.d0/es ; es66(1,2)=-pois/es ; es66(1,3)=-pois/es es66(2,1)=-pois/es ; es66(2,2)= 1.d0/es ; es66(2,3)=-pois/es es66(3,1)=-pois/es ; es66(3,2)=-pois/es ; es66(3,3)= 1.d0/es es66(4,4)=gs !逆行列を取るのは左上の3*3だけなので es66(5,5)=gs !右下3*3は最初からGを入れておく es66(6,6)=gs call gyaku(es66) ! 木材の材料定数 ezz=6.d9 /1.d6 exx=ezz/25.d0 eyy=ezz/25.d0 poixy=0.016d0 poixz=poixy poiyx=poixy poiyz=poixy poizx=0.4d0 poizy=poizx gyz=ezz/15.d0 gxz=gyz gxy=gyz call zeromx(6,ew66) ew66(1,1)= 1.d0/exx ; ew66(1,2)=-poixy/exx ; ew66(1,3)=-poixz/exx ew66(2,1)=-poiyx/eyy ; ew66(2,2)= 1.d0/eyy ; ew66(2,3)=-poiyz/eyy ew66(3,1)=-poizx/ezz ; ew66(3,2)=-poizy/ezz ; ew66(3,3)= 1.d0/ezz call gyaku(ew66) ew66(4,4)=gyz ew66(5,5)=gxz ew66(6,6)=gxy ! !do i=1,6 ! write(*,*) (ew66(i,j),j=1,6) !end do ! ! ! 節点番号ごとの節点座標 ! 節点番号:nset nset=0 do k=0,nz do j=0,ny if(j<=nyw) then do i=0,nx nset=nset+1 if(i<=nxs) then x(nset)=xs*i y(nset)=yw*j z(nset)=zn*k print'(i6,a,1pe13.5,a,1pe13.5,a,1pe13.5)' & &,nset,',',x(nset),',',y(nset),',',z(nset) else x(nset)=xs*nxs+xw*(i-nxs) y(nset)=yw*j z(nset)=zn*k print'(i6,a,1pe13.5,a,1pe13.5,a,1pe13.5)' & &,nset,',',x(nset),',',y(nset),',',z(nset) end if end do else if(jny-nyw) then print'(i6,a)',nmen*(k-1)+(nx+1)*(nyw+1)+(nxs+1)*(nys-1)+(nx+1)*(j-nyw-nys),',' end if end do end do ! !! ヒンジ支承 !print'("*NSET,NSET=hinzi")' !nowari=nmen*(nsiten+1) !nhazime=nowari-nx !do i=nhazime,nowari ! print'(i6,a)',i,',' !end do !! ローラー支承 !print'("*NSET,NSET=rooraa")' !nowari=nset-nmen*nsiten !nhazime=nowari-nx !do i=nhazime,nowari ! print'(i6,a)',i,',' !end do ! ! 固定端 print'("*NSET,NSET=koteitan")' do i=1,nmen print'(i6,a)',i,',' end do ! ! 上記(NSET=taisyou)の拘束節点の拘束変位 print'("*BOUNDARY")' print'("taisyou,1")' ! print'("hinzi,2,3")' ! print'("rooraa,2")' print'("koteitan,2,3")' ! ! 材料条件 ! print'("*MATERIAL,NAME=kouhan")' print'("*ELASTIC,TYPE=ORTHO")' print'(f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a)',& es66(1,1),',',es66(1,2),',',es66(2,2),',',es66(1,3),',',& &es66(2,3),',',es66(3,3),',',es66(6,6),',',es66(5,5),',' print*,es66(4,4),',',293.d0 ! ! print'("*MATERIAL,NAME=mokuzai")' print'("*ELASTIC,TYPE=ORTHO")' print'(f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a,f12.4,a)',& ew66(1,1),',',ew66(1,2),',',ew66(2,2),',',ew66(1,3),',',& &ew66(2,3),',',ew66(3,3),',',ew66(6,6),',',ew66(5,5),',' print*,ew66(4,4),',',293.d0 ! print'("*SOLID SECTION,ELSET=mokuzai,MATERIAL=mokuzai")' print'("*SOLID SECTION,ELSET=kouhan,MATERIAL=kouhan")' ! ! 載荷条件 print'("*NSET,NSET=saika")' !nhazime=nmen*(nz/2)+1 !nowari=nhazime+nx !do i=nhazime,nowari ! print'(i6,a)',i,',' !end do ! !自由端載荷 print'("*NSET,NSET=saika")' do i=nset-nmen+1,nset print'(i6,a)',i,',' end do ! ! print'("*STEP")' print'("*STATIC,SOLVER=SPOOLES")' print'("*CLOAD")' ! y方向に載荷 ! pn=p/(nx+1) !中央に線載荷 pn=p/nmen !自由端に面載荷 write(*,*)'saika,2,',pn ! print'("*NODE PRINT,NSET=Nall")' print'("U")' print'("*EL PRINT,ELSET=kouhan")' print'("S")' print'("*EL PRINT,ELSET=mokuzai")' print'("S")' print'("*NODE FILE")' print'("U")' print'("*EL FILE,POSITION=AVERAGED AT NODES")' print'("S")' print'("*END STEP")' ! ! ! end ! ! ! ひずみ−応力行列の逆数を取って、応力−ひずみ行列を求める。 ! subroutine gyaku(a) implicit real*8(a-h, o-z) dimension a(6,6), b(3,3) det=a(1,1)*a(2,2)*a(3,3)+a(2,1)*a(3,2)*a(1,3)& & +a(3,1)*a(1,2)*a(2,3)-a(2,1)*a(1,2)*a(3,3)& & -a(3,1)*a(2,2)*a(1,3)-a(1,1)*a(3,2)*a(2,3) b(1,1)=(-1.d0)**(1+1)*(a(2,2)*a(3,3)-a(3,2)*a(2,3)) b(1,2)=(-1.d0)**(1+2)*(a(2,1)*a(3,3)-a(3,1)*a(2,3)) b(1,3)=(-1.d0)**(1+3)*(a(2,1)*a(3,2)-a(3,1)*a(2,2)) b(2,1)=(-1.d0)**(2+1)*(a(1,2)*a(3,3)-a(3,2)*a(1,3)) b(2,2)=(-1.d0)**(2+2)*(a(1,1)*a(3,3)-a(3,1)*a(1,3)) b(2,3)=(-1.d0)**(2+3)*(a(1,1)*a(3,2)-a(3,1)*a(1,2)) b(3,1)=(-1.d0)**(3+1)*(a(1,2)*a(2,3)-a(2,2)*a(1,3)) b(3,2)=(-1.d0)**(3+2)*(a(1,1)*a(2,3)-a(2,1)*a(1,3)) b(3,3)=(-1.d0)**(3+3)*(a(1,1)*a(2,2)-a(2,1)*a(1,2)) do i=1,3 do j=1,3 a(i,j)=b(j,i)/det end do end do return end ! ! subroutine zeromx(n,a) implicit real*8(a-h,o-z) dimension a(n,n) do i=1,n do j=1,n a(i,j)=0.d0 end do end do return end ! !