本稿は
実用梁理論(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 とすれば実用梁として扱えます。
今回は 集中荷重と集中曲げを取り上げます。
Mery で以下のスクリプトを書いて ファイル名 "000-4.bat" で保存して実行すれば集中荷重と集中曲げが処理されます。
単純支持、荷重点で2区間に分けています。
: 集中荷重と集中曲げ
@echo off
path C:\maxima-5.47.0\bin;%path%
ruby -x %~f0 5 -10 -50 0 3 0.15 0.3 6.5 6.5/15 1.2
pause
goto:eof
#!ruby
def pt_qm_tp_1(l, pw, pm, a, b, h, e, g, κ)
f = open "| maxima --very-quiet", "w"
f.print <<~Maxima
p1: -0$
Q1: C1 + integrate(p1, x)$
M1: C2 + integrate(Q1, x)$
r1: -M1$
G1: κ * EI / GA * Q1$
T1: C3 + integrate(r1, x)$
V1: C4 + integrate(T1 + G1, x)
p2: -0$
Q2: C5 + integrate(p2, x)$
M2: C6 + integrate(Q2, x)$
r2: -M2$
G2: κ * EI / GA * Q2$
T2: C7 + integrate(r2, x)$
V2: C8 + integrate(T2 + G2, x)$
s: solve([
ev(M1, x = 0) = 0, ev(V1, x = 0) = 0,
ev(Q1, x = a) - ev(Q2, x = a) = P, /* P は 上向きが正 */
ev(M1, x = a) - ev(M2, x = a) = -PM, /* PM は 左回りが正 */
ev(T1, x = a) = ev(T2, x = a),
ev(V1, x = a) = ev(V2, x = a),
ev(M2, x = L) = 0, ev(V2, x = L) = 0],
, [C1, C2, C3, C4, C5, C6, C7, C8])$ /*(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)$
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))))$
Q: if x < a then Q1 else Q2$ /* (M8-2) */
M: if x < a then M1 else M2$
T: 1000 * if x < a then T1 else T2$
V: 1000 * if x < a then V1 else V2$
G: 1000 * if x < a then G1 else G2$
[L, P, PM, a, b, D, e, g, κ]: [#{l}, #{pw}, #{pm}, #{a}, #{b}, #{h}, #{e}, #{g}, #{κ}]$ /* (M9) */
[EI, GA]: [e*b*D^3/12, g*b*D] * 10^6$ /* (M10) */
plot2d([Q, M, T, V], [x, 0, L], [legend, "Q", "M", "T", "V"])$ /* (M11) */
?sleep(5)$ /* (M12) 5秒表示 */
quit()$ /* (M13) 終了 */
Maxima
f.close
end
l, pw, pm, a, b, h, e, g, κ = ARGV.map { |x| eval(x) } # m, kN, kNm, m, m, m, kN/mm2, kN/mm2
pt_qm_tp_1(l, pw, pm, a, b, h, e, g, κ)
__END__
(M11)で
と表示されます。
応力と変位の数式は
と表示されます。
表示画面を貼り付けておきます。
集中荷重 P、集中曲げ PM、荷重点の位置 a、スパン L
__g__ = κ*EI/GA/L^2
EI 曲げ剛性、GA せん断剛性、κ せん断変形の形状係数(矩形で1.2)
Q1 = -( (P*a-PM-L*P)/L)
M1 = -( ( (P*a-PM-L*P)*x)/L)
T1 = (3*P*a*x^2-3*PM*x^2-3*L*P*x^2+P*a^3-3*PM*a^2-3*L*P*a^2+6*L*PM*a+2*L^2*P*a\
-6*L^2*PM*__g__-2*L^2*PM)/(6*EI*L)
V1 = (x*(P*a*x^2-PM*x^2-L*P*x^2+P*a^3-3*PM*a^2-3*L*P*a^2-6*L^2*P*__g__*a+6*L*P\
M*a+2*L^2*P*a+6*L^3*P*__g__-2*L^2*PM))/(6*EI*L)
Q2 = -( (P*a-PM)/L)
M2 = -( ( (P*a-PM)*(x-L))/L)
T2 = (3*P*a*x^2-3*PM*x^2-6*L*P*a*x+6*L*PM*x+P*a^3-3*PM*a^2+2*L^2*P*a-6*L^2*PM*\
__g__-2*L^2*PM)/(6*EI*L)
V2 = ( (x-L)*(P*a*x^2-PM*x^2-2*L*P*a*x+2*L*PM*x+P*a^3-3*PM*a^2-6*L^2*P*__g__*a)\
)/(6*EI*L)
続行するには何かキーを押してください . . .
(M7) で支持条件(境界条件)を変更することができます。
数式処理ソフト maxima と ruby と Mery を利用してはりを解くとたわみの計算式が画面に表示できます。これがスマートフォンでもできるらしい?のです(当方はそれを持っていない)。これが、電卓で三角関数ができるようになって三角関数表が不要になった感じなのか、望遠鏡で月を見るようなものなのか、いまはわかりません。ただただ、技術者にやさしい時代になりますようにと願うのみです。
次回は 部分載荷について取り上げます。