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日 加除修正

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です