Python で等分布荷重を受ける単純支持はりのたわみを計算
本稿では,Python を用いて,等分布荷重を受ける単純支持はりについて各種計算を行う。具体的には,せん断力,曲げモーメント,たわみの計算である。また,計算により得られた結果をグラフ化する方法についても説明する。
検討モデル
等分布荷重 (uniformly distributed load, uniform load) による単純支持はり(simply supported beam)のせん断力(shearing force),曲げモーメント(bending moment)およびたわみ(deflection)を検討するモデルを下図に示す。
支点 A は回転はできるが移動できない回転支点(hinged support),支点 B は回転と共に一方に移動できる移動支点(movable support)とした。
支点 A を xy 座標の原点とし,x については,支点 B 方向を正,y については,鉛直下向きを正とする。また,単純支持はりの長さは l [mm] (= 1,000 [mm]) とする。
単純支持はりに作用する荷重 w(x) は,単純支持はりに一様に分布する q [N/mm] (1 [N/mm])の等分布荷重とする。
Python コード
等分布荷重を受ける単純支持はりのせん断力,曲げモーメント,たわみの計算し,プロットする Python コードを示す。
ライブラリの読み込み
今回の計算では,numpy,matplotlib を用いる。
import numpy as np
import matplotlib.pyplot as plt
定数の定義
計算に用いる諸条件を定数として定義する。具体的には,はりの長さを 1 [mm],等分布荷重を 1,000 [N/m],はりの縦弾性係数を 200,000 [N/m2],断面二次モーメントを 3,000 [mm4] とした。合わせて,x 軸も定義しておく。
beam_length = 1000 # [mm] 単純支持はりの長さ
dx = beam_length / 1000 # [mm] 単純支持はりの x 軸の粒度
uniform_load = 1 # [N/mm] 等分布荷重
youngs_modulus = 200000 # [N/mm] 縦弾性係数
Iz = 3000 # [mm^4] 断面二次モーメント
せん断力,曲げモーメント,たわみの計算関数
せん断力,曲げモーメント,たわみを計算する関数を定義する。
計算式については「等分布荷重を受ける単純支持はりのたわみ」を参照してほしい。
def calculate_values(xx, beam_length, uniform_load, youngs_modulus, Iz):
Qx = uniform_load * (beam_length / 2 - xx)
Mx = uniform_load / 2 * xx * (beam_length - xx)
yy = uniform_load / 24 / youngs_modulus / Iz * (xx**4 - 2 * beam_length * xx**3 + beam_length**3 * xx)
return Qx, Mx, yy
プロットする関数
計算結果より,せん断力図 (SFD),曲げモーメント図 (BMD),たわみ曲線をプロットする関数を定義する。
def plot_graph(x, y, xlabel, ylabel, title, filename, invert_yaxis_flag):
plt.figure()
plt.plot(x, y, label=title)
plt.grid(True)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.xlim([min(x), max(x)])
if invert_yaxis_flag == True:
plt.gca().invert_yaxis()
plt.legend()
plt.savefig(filename, dpi=300)
plt.show()
x 軸の定義 ~描画
x 軸の定義,せん断力,曲げモーメント,たわみの計算関数,各図の描画を行う。
# x軸の定義
xx = np.arange(0, beam_length + dx, dx)
# せん断力、曲げモーメント、たわみの計算
Qx, Mx, yy = calculate_values(xx, beam_length, uniform_load, youngs_modulus, Iz)
# プロット範囲の定義
xmin, xmax = min(xx), max(xx)
# せん断力図 (SFD) の描画
plot_graph(xx, Qx, 'x [mm]', 'Shearing Force [N]', 'Shearing Force', "SFD.png", False)
# 曲げモーメント図 (BMD) の描画
plot_graph(xx, Mx, 'x [mm]', 'Bending Moment [Nmm]', 'Bending Moment', "BMD.png", False)
# たわみ曲線の描画
plot_graph(xx, yy, 'x [mm]', 'Deflection [mm]', 'Deflection', "deflection_curve.png", True)
プロット結果
プロットしたせん断力図,曲げモーメント,たわみ曲線を示す
せん断力図
せん断力図 (SFD) の出力結果を以下に示す。
等分布荷重を受ける単純支持はりのせん断力は,単純支持はりの左端(x = 0 [mm])で最大,左端(x = l [mm])で最小となり,単純減少する一次関数で表される。
なお,単純支持はりの中央部分(x = l/2 = 500 [mm])でせん断力は 0 となり,正から負に転じている。
曲げモーメント図
曲げモーメント図 (BMD) の出力結果を以下に示す。
等分布荷重を受ける単純支持はりの曲げモーメント図は,上に凸の二次関数で表される。単純支持はりの中央部分(x = 500 [mm])において,最大曲げモーメント Mmax = 125,000 [N·mm] となる。
たわみ曲線
たわみ曲線の出力結果を以下に示す(y 軸を反転させている)。
等分布荷重を受ける単純支持はりのたわみ曲線は,上に凸の四次関数で表される。また,たわみの最大値 ymax は 21.7 [mm] となる。
参考文献
更新履歴
- 2025年1月3日 新規作成
- 2025年1月6日 加除修正