Python で集中荷重を受ける片持ちはりのたわみを計算
集中荷重を受ける片持ちはりのせん断力,曲げモーメントおよびたわみを Python で計算し,プロットする。
検討モデル
はりの先端に集中荷重(cpmcemtrated load)P を受ける片持はり(cantilever)のせん断力(shearing force),曲げモーメント(bending moment)およびたわみ(deflection)を検討するモデルを下図に示す。
片持はりでは,回転も移動もできない固定支点(fixed support)で支持される。
はりの先端 を xy 座標の原点とし,x については,固定支持方向を正,y については,鉛直下向きを正とする。はりの長さは l (= 1,000 [mm])とする。
片持ちはりの先端(x=0)において,集中荷重 P (= 50 [N]) を想定する。
Python コード
集中荷重を受ける片持ちはりのせん断力,曲げモーメントおよびたわみを計算し,プロットする Python コードを示す。
ライブラリ読み込み
計算,プロットに必要なライブラリを読み込む。
import numpy as np
import matplotlib.pyplot as plt
定数の定義
計算に用いる定数を定義する。
beam_length = 1000 # [mm] 単純支持はりの長さ
dx = beam_length / 1000 # [mm] 単純支持はりの x 軸の粒度
concentrated_load = 50 # [N] 集中荷重
youngs_modulus = 200000 # [N/mm] 縦弾性係数
Iz = 3000 # [mm^4] 断面二次モーメント
せん断力,曲げモーメント,たわみを計算する関数を定義
せん断力,曲げモーメント,たわみを計算する関数を定義する。
def calculate_values(xx, beam_length, concentrated_load, youngs_modulus, Iz):
Qx = np.ones(beam_length + 1)
Qx = - concentrated_load * Qx
Mx = - concentrated_load * xx
yy = concentrated_load / 6 / youngs_modulus / Iz * (xx**3 - 3 * beam_length**2 * xx + 2 * beam_length**3)
return Qx, Mx, yy
プロット関数
せん断力図,曲げモーメント図,たわみ曲線をプロットする関数を定義する。
def plot_graph(x, y, xlabel, ylabel, title, filename, flag):
plt.figure()
plt.plot(x, y, label=title)
plt.grid(True)
plt.xlabel(xlabel)
plt.ylabel(ylabel)
plt.xlim([min(x), max(x)])
plt.legend()
if flag == False:
plt.gca().invert_yaxis()
plt.savefig(filename, dpi=300)
plt.show()
x 軸の定義~描画
x 軸の定義,せん断力,曲げモーメント,たわみの計算,プロット範囲の定義,せん断力図 (SFD) の描画,曲げモーメント図 (BMD) の描画,たわみ曲線の描画を行う。
# x軸の定義
xx = np.arange(0, beam_length + dx, dx)
# せん断力、曲げモーメント、たわみの計算
Qx, Mx, yy = calculate_values(xx, beam_length, concentrated_load, youngs_modulus, Iz)
# プロット範囲の定義
xmin, xmax = min(xx), max(xx)
# せん断力図 (SFD) の描画
plot_graph(xx, Qx, 'x [mm]', 'Shearing Force [N]', 'Shearing Force', "SFD.png", True)
# 曲げモーメント図 (BMD) の描画
plot_graph(xx, Mx, 'x [mm]', 'Bending Moment [Nmm]', 'Bending Moment', "BMD.png", True)
# たわみ曲線の描画
plot_graph(xx, yy, 'x [mm]', 'Deflection [mm]', 'Deflection', "deflection_curve.png", False)
プロットした結果
プロットしたせん断力図 (SFD),曲げモーメント (BMD),たわみ曲線を示す。
せん断力図 (SFD)
せん断力図(SFD:Shearing Force Diagram)を下図に示す。先端に集中荷重 (50 [N]) を受ける片持ちはりのせん断力は,-50 [N] で一定となる。
曲げモーメント図 (BMD)
曲げモーメント図(BMD:Bending Moment Diagram)を下図に示す。先端に集中荷重を受ける片持ちはりの曲げモーメントは,単純減少する一次関数で表される。最大曲げモーメントは,はりの支持点(x=l)で生じ,その大きさは -50,000 [N·mm] である。
たわみ曲線
たわみ曲線を下図に示す(y 軸を反転させた)。
先端に集中荷重を受ける片持ちはりのたわみ曲線は,単純減少する三次関数で表される。