0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

simple beam,uniformly distributed load はりの応力とSFD,BMD ver0.1 基本例題4.23 P101 「材料力学演習(20221021)」をsympyでやってみたい。

Last updated at Posted at 2024-11-13

等分布荷重
申し訳ありません。sympyのBeamができていません。数をこなして戻ってきます。
・Slope と BMDがでました。
・SFDはエラーがでたので?、SFDは、自作plotです。

オリジナル

基本例題4.23 P101「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。#sympy
          ???タブレット等で、pdfを開く事ができないかも。??? 

sympyで。微分で(オリジナル 様の方法です。)

・ver0.1 基本例題4.23 P101

# ver0.1 基本例題4.23 P101
from sympy import *
from decimal import Decimal, ROUND_HALF_UP
var('q,RA,RA,RB,l,x'                   ,real=True)
def myRound1(x, d=1):
    p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
    p = float(p)
    return p
M=RA*x-Rational(1,2)*q*x**2            ;print("# M  =",M)
F=diff(M,x)                            ;print("# F  =",F)
RA_sol=solve(Eq(M.subs({x:l}),0),RA)[0];print("# RA =",RA_sol)
print()
rep={l:1.0,q:1000.0,RA:RA_sol}
print("# RA =",myRound1(RA.subs(rep),1))
print("# F  =",         F .subs(rep)   )
# M  = RA*x - q*x**2/2
# F  = RA - q*x
# RA = l*q/2

# RA = 500.0
# F  = 500.0 - 1000.0*x

sympyのBeamで

・ver0.2 基本例題4.23 P101
??? 以下はエラーです。
(1)SFDで、...ValueError: value of A was not passed.
  SFDはエラーがでたので?、SFDは、自作plotです。
(2)計算と作図が、同時にできませんでした。?b2にしてもだめでした。

以下のため。def remove_last_term(expr):

# ??? 以下はエラーです。
# ver0.2 基本例題4.23 P101
from sympy import *
from decimal import Decimal, ROUND_HALF_UP
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E ,I =symbols('E ,I ')
l,myl=symbols('l,myl',postive=True)
R1,M1=symbols('R1,M1')
R2,M2=symbols('R2,M2')
var('  q,x')
var('myq,myE,myI')
def remove_last_term(expr):
    # 式を項ごとに分解し、最後の項を除去
    terms = expr.as_ordered_terms()[:-1]  # 最後の項を取り除く
    # 残りの項を使って式を再構成
    return Add(*terms)
def myRound1(x, d=1):
    p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
    p = float(p)
    return p
def myBeam_Tanjun_reaction_loads(l,E,I,q):
    b1=Beam(l,E,I)
    b1.apply_load(R1,0,-1)
    b1.apply_load(q ,0, 0,end=l)
    b1.apply_load(R2,l,-1)
    b1.solve_for_reaction_loads(R1,R2)
    R1R2=b1.reaction_loads
    return R1R2[R1],R1R2[R2]
def myBeam_Tanjun_Sakuzu_draw   (l,E,I,q):
    b2=Beam(l,E,I)
    b2.apply_load   (q ,0, 0,end=l)
    b2.apply_support(0 ,'pin')
    b2.apply_support(l ,'roller')
    p = b2.draw()  
    p.show() 
    return 
def MYshear_stress(expr):
    var('A')
    return remove_last_term(sympify(expr.subs({A:1})))
def myBeam_Tanjun_Sakuzu_SFDBMD (l,E,I,q):
    b3=Beam(l,E,I)
    b3.apply_load(R1,0,-1)
    b3.apply_load(q ,0, 0,end=l)
    b3.apply_load(R2,l,-1)
    b3.bc_deflection = [(0,0),(l,0)]
    b3.solve_for_reaction_loads(R1,R2)
    b3.plot_slope()
    b3.plot_bending_moment()
    # b3.plot_shear_stress()
    plot (MYshear_stress(b3.shear_stress()),(x,0,l))
    return 
# --------------------------------------------------------------------------------------------------------------------
myl,myE,myI,myq=1.0,200*(10**9),400*(10**6),1000
R1,R2          =myBeam_Tanjun_reaction_loads(myl,myE,myI,myq);print  ("#",myRound1(R1),myRound1(R2))
myBeam_Tanjun_Sakuzu_draw                   (myl,myE,myI,myq)
myBeam_Tanjun_Sakuzu_SFDBMD                 (myl,myE,myI,myq)
# -500.0 -500.0

・作図の順番が変で申し訳ありません。
000.png

111.png

222.png

??? SFDは、自作plotです。

333.png

(勉強中) Mathematicaで

(勉強中) MATLAB 追加のオプションSymbolic Math Toolbox で

いつもの? sympyの実行環境と 参考のおすすめです。

(テンプレート)

いつもと違うおすすめです。

参考文献

>一部に等分布荷重を受ける単純支持はり
>JSME p89
 
>単純ばり 2)
>構造力学公式集 表5.2 単純ばりの公式 p134

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?