・(2024−12−05)タイトルに#使用例を追加しました。
旧タイトル
「機械工学で学ぶオブジェクト指向プログラミング」様を参考に、sympyのBeamでやってみたい。
・SFD と BMDは、ver0.2で対応予定です。
オリジナル
・#使用例
sympyのBeamで 「集中荷重による変位」
・作図しました。
# ver0.1
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E,I,P =symbols('E,I,P')
l,a,lp=symbols('l,a,lp',positive=True)
var("R,x,M,A1,A2,M1,M2")
var("p0,m0")
R1,M1=symbols('R1,M1')
R2,M2=symbols('R2,M2')
def myBeam_Katamoti_Tawami(l,E,I,P):
b=Beam(l,E,I)
b.apply_load(P,l,-1)
b.apply_load(R,0,-1)
b.apply_load(M,0,-2)
b.bc_deflection.append((0,0))
b.bc_slope .append((0,0))
b.solve_for_reaction_loads(R,M)
return b.deflection()
def myBeam_Katamoti_lP_Sakuzu(l,E,I,P ,lp):
b=Beam(l,E,I)
b.apply_load(P,lp,-1)
b.apply_support(0, 'fixed')
p = b.draw()
p.show()
return
δ =myBeam_Katamoti_Tawami(a,E,I,P)
δa=myBeam_Katamoti_Tawami(a,E,I,P).subs({x:a}) #;print("#",δa)
θa=diff(δ,x) .subs({x:a}) #;print("#",θa)
δl=δa+(l-a)*θa
rep={l:5000,a:4000,E:205,I:8333333,P:1}
print("# 集中荷重による変位:",float(δl.subs(rep)))
# # 作図
myBeam_Katamoti_lP_Sakuzu(5000,205,8333333,1,4000)
# 集中荷重による変位: 17.17073239414637
sympyのBeamで 「分布荷重による変位」
・勉強中
いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート) 開発環境
いつもと違うおすすめです。