はりの計算式を解く(9)-部分載荷(3スパン)-

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


本稿の弾性曲線式は
    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 とすれば普通の梁です。


今回は 部分載荷(3スパン)について考えます。

 

Mery で以下のスクリプトを書いて ファイル名 "000-6.bat" で保存して実行すれば部分載荷(3スパン)が処理されます。
単純支持、1スパンを1区間としています。

: 部分載荷(3スパン)
@echo off
path C:\maxima-5.47.0\bin;%path%
ruby -x %~f0 5 5 5 0 -10 0 0.15 0.3 6.5 6.5/15 1.2
pause
goto:eof

#!ruby
def pt_qm_tp_43(l1, l2, l3, w1, w2, w3, t, h, e, g, κ)
  f = open "| maxima --very-quiet", "w"
  f.print <<~Maxima
    [p1, p2, p3]: -[w1, w2, w3]$ /*(M1)*/
    [Q1, Q2, Q3]: [C1 + integrate(p1, x), C5 + integrate(p2, x), C9 + integrate(p3, x)]$ /*(M2)*/
    [M1, M2, M3]: [C2 + integrate(Q1, x), C6 + integrate(Q2, x), CA + integrate(Q3, x)]$ /*(M3)*/
    [r1, r2, r3]: -[M1, M2, M3]$ /*(M4)*/
    [G1, G2, G3]: κ * EI / GA * [Q1, Q2, Q3]$ /*(M4-1)*/
    [T1, T2, T3]: [C3 + integrate(r1, x), C7 + integrate(r2, x), CB + integrate(r3, x)]$ /*(M5)*/
    [V1, V2, V3]: [C4 + integrate(T1 + G1, x), C8 + integrate(T2 + G2, x), CC + integrate(T3 + G3, x)]$ /*(M6)*/
    s: solve([
      ev(M1, x = 0) = 0, ev(V1, x = 0) = 0, 
      ev(M1, x = L1) = ev(M2, x = 0),
      ev(T1, x = L1) = ev(T2, x = 0),
      ev(V1, x = L1) = 0, ev(V2, x = 0) = 0,
      ev(V2, x = L2) = 0, ev(V3, x = 0) = 0,
      ev(M2, x = L2) = ev(M3, x = 0),
      ev(T2, x = L2) = ev(T3, x = 0),
      ev(M3, x = L3) = 0, ev(V3, x = L3) = 0]
    , [C1, C2, C3, C4, C5, C6, C7, C8, C9, CA, CB, CC])$ /*(M7)*/
    [Q1, M1, T1, V1, G1]: ev([Q1, M1, T1/EI, V1/EI, G1/EI], s)$ /*(M8)*/
    [Q2, M2, T2, V2, G2]: ev([Q2, M2, T2/EI, V2/EI, G2/EI], s)$
    [Q3, M3, T3, V3, G3]: ev([Q3, M3, T3/EI, V3/EI, G3/EI], s)$
    p: if x < L1 then p1 elseif L1 <= x and x < L1 + L2 then p2 else p3$ /*(M8-1)*/
    Q: if x < L1 then Q1 elseif L1 <= x and x < L1 + L2 then ev(Q2, x = x - L1) else ev(Q3, x = x - L1 - L2)$
    M: if x < L1 then M1 elseif L1 <= x and x < L1 + L2 then ev(M2, x = x - L1) else ev(M3, x = x - L1 - L2)$
    T: 1000 * if x < L1 then T1 elseif L1 <= x and x < L1 + L2 then ev(T2, x = x - L1) else ev(T3, x = x - L1 - L2)$
    V: 1000 * if x < L1 then V1 elseif L1 <= x and x < L1 + L2 then ev(V2, x = x - L1) else ev(V3, x = x - L1 - L2)$
    G: 1000 * if x < L1 then G1 elseif L1 <= x and x < L1 + L2 then ev(G2, x = x - L1) else ev(G3, x = x - L1 - L2)$
    [L1, L2, L3, w1, w2, w3, t, D, e, g, κ]: [#{l1}, #{l2}, #{l3}, #{w1}, #{w2}, #{w3}, #{t}, #{h}, #{e}, #{g}, #{κ}]$ /* (M9) */
    [EI, GA]: [e*t*D^3/12, g*t*D] * 10^6$      /*(M10)*/
    plot2d([Q, M, T, V, p], [x, 0, L1+L2+L3], [legend, "Q", "M", "T", "V", "p"])$ /*(M11)*/
    ?sleep(5)$ /*(M12) 5秒表示*/
    pv: makelist([x, ev(Q), ev(M), ev(T), ev(V)], x, 0, L1+L2+L3, dx:0.5)$ /*(M12-1)*/
    write_data(float(pv), "C:/jww/ztemp_pv.txt")$ /*(M12-2)*/
    quit()$ /*(M13) 終了*/
  Maxima
  f.close
end
l1, l2, l3, w1, w2, w3, t, h, e, g, κ = ARGV.map { |x| eval(x) } # (R14) m, m, m, kN/m, kN/m, kN/m, m, m, kN/mm2, kN/mm2
pt_qm_tp_43(l1, l2, l3, w1, w2, w3, t, h, e, g, κ) # (R15)
p [" m kN kNm x1000 rad mm "] # (R16)
File.foreach("C:/jww/ztemp_pv.txt") do |line|
  p [" x  Q  M  T  V =", *line.split.map { |x| x.to_f.round(3) }] # (R17)
end
__END__


(M11)で

と表示されます。


(M12-1)と(M12-2)で 0.5m ではりを分割し、分割点の位置の応力と変位をテキストファイルに保存します。
その内容が (R17) で

と表示されます。


参考までに、その数値を利用すれば

のように ruby/tk で表示することができます。

 

次回は バネ支点について取り上げます。