はりの計算式を解く(10)-バネ支点-

はりの計算式を解くやり方をいろいろと紹介しています。


本稿の弾性曲線式は
    V''''(x) = p(x),  x | 0 => L (technical theory of beam, Euler–Bernoulli beam theory)
    V''''(x) = p(x) - κ * EI / GA * p''(x),  x | 0 => L (Timoshenko beam theory)
と改めます。上は普通の梁で、下はせん断変形を考慮した梁の式です。


はりの計算式は
  V''''(x) = p(x) = -w         (1)
  V''' (x) = Q(x) = C1 + ∫ p(x) dx   (2)
  V''  (x) = M(x) = C2 + ∫ Q(x) dx    (3)
  r(x) = -M(x)           (4)
     G(x) = κ * EI / GA * Q(x)     (4-1)
  V'   (x) = T(x) = C3 + ∫ r(x) dx    (5)
  V    (x) = V(x) = C4 + ∫ T(x) + G(x) dx (6)
  ただし
  κ   せん断変形の形状係数
  EI   曲げ剛性(一定)
  GA   せん断剛性(一定)
  x   位置
  L   スパン長
  p(x)  分布荷重
  w   等分布荷重
  Q(x)  せん断力
  M(x)  曲げモーメント
  r(x)    曲率(δ''=φ=r(x)/EI)
  G(x)  せん断角(γ=G(x)/EI、鉛直方向のせん断歪は全断面で一定とし、材軸方向は0とする)
  T(x)  たわみ角(θ=T(x)/EI)
  V(x)  たわみ(δ=V(x)/EI)
  C1    積分定数(Q(x=0))
  C2    積分定数(M(x=0))
  C3    積分定数(T(x=0))
  C4    積分定数(V(x=0))
とします。G(x) = 0 とすれば普通の梁です。


この計算式は 荷重 p(x) を 与えると 機械的に解けます。パソコンを利用すれば 境界条件 C1, C2, C3, C4 を計算することは それほど難しくはありません。数式処理ソフトを使えば、手計算のように 静定 と 不静定を区別したり 仮想仕事や相反作用の原理を 持ち出す必要がないからです。
本稿のアイデアは たわみ角 T(x) と たわみ V(x) の与え方にあります。曲げ剛性とせん断剛性が一定のとき、T(x) と V(x) を たわみ角とたわみとみなすことで 弾性曲線式は積分を繰り返すとその都度 Q(x)、M(x)、T(x)、V(x) として与えられます。たわみ角とたわみは T(x)/EI と V(x)/EI とすればもとに戻せます。

 

今回は バネ支点について考えます。


Mery で以下のスクリプトを書いて ファイル名 "000-7.bat" で保存して実行すればバネ支点が処理されます。
等分布荷重として、支点に鉛直と回転のバネ、材端に鉛直と回転の外力を与えます。

: バネ支点
@echo off
path C:\maxima-5.47.0\bin;%path%
ruby -x %~f0 5 -10 0.15 0.3 6.5 6.5/15 1.2 1 1 0 0 25*0 25*0 20 30
pause
goto:eof

#!ruby
def pt_qm_tp_3(l, w, t, h, e, g, κ, k1=1e20, k2=1e20, km1=1e20, km2=1e20, p1=0, p2=0, pm1=0, pm2=0)
  f = open "| maxima --very-quiet", "w"
  f.print <<~Maxima
    p: -w$ /*(M1)*/
    Q: C1 + integrate(p, x)$ /*(M2)*/
    M: C2 + integrate(Q, x)$ /*(M3)*/
    r: -M$ /*(M4)*/
    G: κ * EI / GA * Q$ /*(M4-1)*/
    T: C3 + integrate(r, x)$ /*(M5)*/
    V: C4 + integrate(T + G, x)$ /*(M6)*/
    s: solve([
      ev(M, x = 0) = -ev(T, x = 0) * KM1 + PM1, 
      ev(V, x = 0) = (ev(Q, x = 0) + P1) / K1, 
      ev(M, x = L) =  ev(T, x = L) * KM2 - PM2, 
      ev(V, x = L) = (-ev(Q, x = L) + P2) / K2]
    , [C1, C2, C3, C4])$ /*(M7)*/
    [Q, M, T, V, G]: ev([Q, M, T*1000/EI, V*1000/EI, G*1000/EI], s)$ /*(M8)*/
    [L, w, t, D, e, g, κ, K1, K2, KM1, KM2, P1, P2, PM1, PM2]: [#{l}, #{w}, #{t}, #{h}, #{e}, #{g}, #{κ}, #{k1}, #{k2}, #{km1}, #{km2}, #{p1}, #{p2}, #{pm1}, #{pm2}]$ /* (M9) */
    [EI, GA]: [e*t*D^3/12, g*t*D] * 10^6$      /*(M10)*/
    plot2d([Q, M, T, V], [x, 0, L], [legend, "Q", "M", "T", "V"])$ /*(M11)*/
    ?sleep(5)$ /*(M12) 5秒表示*/
    print("R1 kN =", -float(ev(Q, x=0)))$
    print("R2 kN =", -float(-ev(Q, x=L)))$
    print("RM1 kNm =", -float(-ev(M, x=0)))$
    print("RM2 kNm =", -float(ev(M, x=L)))$
    quit()$ /*(M13) 終了*/
  Maxima
  f.close
end
l, w, t, h, e, g, κ, k1, k2, km1, km2, p1, p2, pm1, pm2 = ARGV.map { |x| eval(x) } # (R14) m, kN/m, m, m, kN/mm2, kN/mm2, kN/mm, kN/mm, kNm/rad, kNm/rad, kN, kN, kNm, kNm
pt_qm_tp_3(l, w, t, h, e, g, κ, k1, k2, km1, km2) # (R15)
__END__


(M11)で

と表示されます。


(M12-1)~(M12-4)で 支点反力が

と表示されます。


座標系は右手右ねじ系としています。
(x) は材軸方向
(y) は上下方向で上向きが正、下向きが負
(z) は回転方向で左回りが正、右回りが負

      y
      |
      |___________x
   /
  z

 

慣用の座標系も右手右ねじ系ですが向きが違います。
(x) は材軸方向
(y) は上下方向で下向きが正、上向きが負
(z) は回転方向で右回りが正、左回りが負

           z
        /
     /__________x
     |
     |
     y

 


次回は 強制変位について取り上げます。