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

本稿は
実用梁理論(technical theory of beam, Euler-Bernoulli beam theory)とティモシェンコ梁理論(Timoshenko beam theory)をシームレスに解くための実用式を紹介しています。

 

はっぁ~、いかにも堅いのでやめて
はりの計算式を解くやり方をいろいろと紹介します。風でいきます。


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


上式を数式処理ソフト 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) = 0, ev(V, x = 0) = 0, 
              ev(M, x = L) = 0, ev(V, x = L) = 0], [C1, C2, C3, C4])$ /*(M7)*/
1端自由・他端固定なら
    s: solve([ev(M, x = 0) = 0, ev(Q, x = 0) = 0, 
              ev(T, x = L) = 0, ev(V, x = L) = 0], [C1, C2, C3, C4])$ /*(M7)*/
両端固定なら
    s: solve([ev(T, x = 0) = 0, ev(V, x = 0) = 0, 
              ev(T, x = L) = 0, ev(V, x = L) = 0], [C1, C2, C3, C4])$ /*(M7)*/
1端ピン・他端固定なら
    s: solve([ev(M, x = 0) = 0, ev(V, x = 0) = 0, 
              ev(T, x = L) = 0, ev(V, x = L) = 0], [C1, C2, C3, C4])$ /*(M7)*/
として境界条件を解いて評価すれば
    [Q, M, T, V, G]: ev([Q, M, T/EI, V/EI, G/EI], s)$ /*(M8)*/
せん断、曲げモーメント、たわみ角、たわみ、せん断角の数式が得られます。


数式処理ソフトで解けると言われても、ピンとこないと思います。それでも、これで解けるから不思議です。安心してください。解けてますよ。ということでしょうか。


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


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

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

#!ruby
def pt_qm_tp_4(l, w, a, c, t, h, e, g, κ)
  f = open "| maxima --very-quiet", "w"
  f.print <<~Maxima
    [p1, p2, p3]: -[0, w, 0]$ /*(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)*/
    b: L - a - c$ /*(M6-1)*/
    s: solve([
      ev(M1, x = 0) = 0, ev(V1, x = 0) = 0, 
      ev(M1, x = a) = ev(M2, x = a),
      ev(T1, x = a) = ev(T2, x = a),
      ev(Q1, x = a) = ev(Q2, x = a),
      ev(V1, x = a) = ev(V2, x = a),
      ev(M2, x = a + b) = ev(M3, x = a + b),
      ev(T2, x = a + b) = ev(T3, x = a + b),
      ev(Q2, x = a + b) = ev(Q3, x = a + b),
      ev(V2, x = a + b) = ev(V3, x = a + b),
      ev(M3, x = L) = 0, ev(V3, x = L) = 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)$
    print("Q1 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, Q1))))$ /*(M8-1)*/
    print("M1 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, M1))))$
    print("T1 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, T1))))$
    print("V1 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, V1))))$
    print("Q2 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, Q2))))$
    print("M2 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, M2))))$
    print("T2 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, T2))))$
    print("V2 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, V2))))$
    print("Q3 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, Q3))))$
    print("M3 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, M3))))$
    print("T3 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, T3))))$
    print("V3 =", string(factor(ratsubst(__g__, κ*EI/GA/L^2, V3))))$
    p: if x < a then p1 elseif a <= x and x < a + b then p2 else p3$ /*(M8-2)*/
    Q: if x < a then Q1 elseif a <= x and x < a + b then Q2 else Q3$
    M: if x < a then M1 elseif a <= x and x < a + b then M2 else M3$
    T: 1000 * if x < a then T1 elseif a <= x and x < a + b then T2 else T3$
    V: 1000 * if x < a then V1 elseif a <= x and x < a + b then V2 else V3$
    G: 1000 * if x < a then G1 elseif a <= x and x < a + b then G2 else G3$
    [L, w, a, c, t, D, e, g, κ]: [#{l}, #{w}, #{a}, #{c}, #{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, L], [legend, "Q", "M", "T", "V", "p"])$ /*(M11)*/
    ?sleep(5)$ /*(M12) 5秒表示*/
    quit()$ /*(M13) 終了*/
  Maxima
  f.close
end
l, w, a, c, t, h, e, g, κ = ARGV.map { |x| eval(x) } # m, kN/m, m, m, m, m, kN/mm2, kN/mm2
pt_qm_tp_4(l, w, a, c, t, h, e, g, κ)
__END__


(M11)で

と表示されます。

 


数式は

と表示されます。

 

画面表示の内容を貼り付けておきます。

Q1 = -( ( (c-a+L)*(c+a-L)*w)/(2*L))
M1 = -( ( (c-a+L)*(c+a-L)*w*x)/(2*L))
T1 = ( (c-a+L)*(c+a-L)*w*(6*x^2+c^2+a^2-2*L*a-L^2))/(24*EI*L)
V1 = ( (c-a+L)*(c+a-L)*w*x*(2*x^2+c^2+a^2-2*L*a-12*L^2*__g__-L^2))/(24*EI*L)
Q2 = -( (w*(2*L*x+c^2-a^2-L^2))/(2*L))
M2 = -( (w*(L*x^2+c^2*x-a^2*x-L^2*x+L*a^2))/(2*L))
T2 = (w*(4*L*x^3+6*c^2*x^2-6*a^2*x^2-6*L^2*x^2+12*L*a^2*x+c^4-2*L^2*c^2-a^4-4*\
L^2*a^2+L^4))/(24*EI*L)
V2 = (w*(L*x^4+2*c^2*x^3-2*a^2*x^3-2*L^2*x^3+6*L*a^2*x^2-12*L^3*__g__*x^2+c^4*\
x-12*L^2*__g__*c^2*x-2*L^2*c^2*x-a^4*x+12*L^2*__g__*a^2*x-4*L^2*a^2*x+12*L^4*_\
_g__*x+L^4*x+L*a^4-12*L^3*__g__*a^2))/(24*EI*L)
Q3 = -( ( (c-a-L)*(c+a-L)*w)/(2*L))
M3 = -( ( (c-a-L)*(c+a-L)*w*(x-L))/(2*L))
T3 = ( (c-a-L)*(c+a-L)*w*(6*x^2-12*L*x+c^2-2*L*c+a^2+5*L^2))/(24*EI*L)
V3 = ( (c-a-L)*(c+a-L)*w*(x-L)*(2*x^2-4*L*x+c^2-2*L*c+a^2-12*L^2*__g__+L^2))/(2\
4*EI*L)
続行するには何かキーを押してください . . .

 

ここで必要なソフトはすべてフリーソフトです。市販ソフトと比べても遜色ないと勝手に思っています。パソコンがインターネットに繋がっていて、やる気さえあれば内容は理解していただけるものと思います。


本稿の計算式自体は古くからあるものですが、せん断変形の項を追加するアイデアはオリジナルです。いま探してもほかにはないと思います。こんなに簡単にしていいものかとも思い、何度もチェックを繰り返ししたのですが、どうも本当らしいので紹介しています。


次回は 部分載荷(2スパン)について取り上げます。