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