c 端部荷重を受ける片持ち梁の横ねじれ座屈を hari.f に解かせるための
c 入力データを作るプログラム。kata を実行させると kata.d という
c データファイルができるから、hari<kata.d と実行させればよい。
c
program kata
implicit real*8 (a-h,o-z)
dimension alp(256),gmm(256),phi(256)
write(*,*) '要素数を入れて下さい'
read(*,*) nofe
mode=1
write(*,*)'外乱を入れる場合は、その倍率を入れて下さい'
write(*,*)'(0 を入れた場合は座屈点を捜します)'
read(*,*) gmode
write(*,*)'モード計算のための出力が要りますか 要1/不要0 '
read(*,*) modeo
th=0.d0
pi=2.d0*asin(1.d0)
th=th*pi/180.d0
c 断面定数
c x軸回りの曲げ試験で測定されるヤング率:ex
ex=200.d6
c y軸回りの曲げ試験で測定されるヤング率:ey
ey=ex
c ねじり試験で測定されるせん断弾性係数:g
g=77.2d6
c 軸長:ell
ell=10.244
c 断面積:a
a=9.288d-2
c x軸(強軸)回りの断面二次モーメント:xi
xi=1.1363d-4
c Trahair の解と比較するために面内変位を無視するときは
c xi を仮想的にyiに対して極端に大きくする
xi=xi*1.d6
c y軸(弱軸)回りの断面二次モーメント:yi
yi=3.871d-5
c ねじり定数:ej
ej=5.89d-7
c そりねじり定数:wi
wi=5.5869d-7
eix=ex*xi
eiy=ey*yi
ea=a*sqrt(ex*ey)
eiw=wi*sqrt(ex*ey)
gj=g*ej
el=ell/float(nofe)
c 片持ち梁の横ねじれ座屈のトラヘアの解(座屈前面内変位無視)
a1=sqrt(eiy*gj)/ell/ell
a2=sqrt(eiw/gj)*pi/ell
tra=a1*(3.95d0+3.52d0*a2)
write(*,*) 'Trahair=',tra
write(*,*)' 一発目の弧長を入れて下さい'
read(*,*) r
write(*,*)' 増分弧長を入れて下さい'
read(*,*) rn
c ### データの出力 ###
open(7,file='kata.d')
write(7,150) nofe
write(7,150) mode
write(7,300) gmode
write(7,150) modeo
do 20 i=1,nofe
write(7,200) 0.d0, 0.d0, 0.d0
20 continue
write(7,300) ea
write(7,300) eix
write(7,300) eiy
write(7,300) gj
write(7,300) eiw
write(7,300) el
c 比較対照解の種類:nhikak
c nhikak=1:圧縮単純梁のオイラー座屈の解
c nhikak=2:等曲げ円弧アーチの横ねじれ座屈のウラソフの解
c nhikak=3: 片持ち梁の横ねじれ座屈のトラヘアの解(面内変位無視)
nhikak=3
write(7,150) nhikak
c 載荷条件
c 載荷箇所は右端の1箇所
write(7,150) 1
c 右端の節点 nofe+1 では
write(7,150) nofe+1
c Fy に載荷
write(7,400) 0.d0
write(7,400) 1.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
c 境界条件
c 左端の1箇所
write(7,150) 1
c 左端では
write(7,150) 1
c u,v,w,θx,θy,θz,λの全てを拘束
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
write(7,400) 0.d0
c 境界条件を局所系で与える要素はない
write(7,150) 0
c
c 画面出力させたい要素
c 要素の左節点を出力させたいのが0箇所
write(7,150) 0
c 要素の右節点を出力させたいのが1箇所
write(7,150) 1
c 右端
write(7,150) nofe
c ファイル出力させたい要素(以下同様)
write(7,150) 0
write(7,150) 1
write(7,150) nofe
c 弧長
write(7,100) r
write(7,100) rn
close(7)
150 format(i3)
100 format(f15.5)
200 format(1p3d17.9)
300 format(1pd13.5)
400 format(1pd9.1)
500 format(4i2)
stop
end