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?

ひずみエネルギとそれを使った材料力学 基本例題8.31 P287 「材料力学演習(20221021)」をsympyでやってみた。

Last updated at Posted at 2025-05-30

パイソニスタの方へ
ver1.0について、def のネストをするつもりがありませんでした。どのようにするものですか?

・sympyのTrussで作図しました。縦横比が1:1でありません。(2025-06-10)
・作図はありません。(⊿⊿形)でイメージして下さい。

オリジナル

基本例題8.30 P287
http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=292

「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。>sympy
https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E7%A7%81%E3%81%AE%E8%A7%A3%E7%AD%94sympy

sympyで

ver0.1

# ver0.1
from sympy import *
var('P,l,AE')
var('NAB,NAC,NBD,NBC,NCD')
var('nAB,nAC,nBD,nBC,nCD')
rep  ={NAB:-P,NAC:sqrt(2)*P,NBD:-sqrt(2)*P,NBC:-P,NCD:P}
repDV={nAB:-1,nAC:sqrt(2)  ,nBD:-sqrt(2)  ,nBC:-1,nCD:1}
repDH={nAB: 0,nAC:sqrt(2)  ,nBD:0         ,nBC:-1,nCD:1}
print("#",(1/AE*(NAB*nAB*l+NAC*nAC*sqrt(2)*l+NBC*nBC*l+NBD*nBD*sqrt(2)*l+NCD*nCD*l).subs(rep).subs(repDV).simplify()))
print("#",(1/AE*(NAB*nAB*l+NAC*nAC*sqrt(2)*l+NBC*nBC*l+NBD*nBD*sqrt(2)*l+NCD*nCD*l).subs(rep).subs(repDH).simplify()))
# P*l*(3 + 4*sqrt(2))/AE
# 2*P*l*(1 + sqrt(2))/AE

sympyのTrussで

ver1.0

・Trussの 「property member_lengths」がありました。

# ver1.0
from sympy.physics.continuum_mechanics.truss import Truss
from sympy import *
var('P,Q,l,AE',positive=True)
def myTruss(l):
    def myAdd_member(*args):
        def make_triples(s):
            return (s,s[0],s[1])
        for s in args:
            t.add_member(make_triples(s))      
    t = Truss()
    t.add_node     (          ('C',l*1,l),('D',l*2,l)) 
    t.add_node     (('A',0,0),('B',l*1,0 )) 
    myAdd_member   ('AB','AC','BD','BC','CD')  
    t.apply_support(('A' ,'pinned'),('B','roller'))
    t.apply_load   (('D',P,270))
    t.solve()
    return t
t=myTruss(l)
# --------------------------------------------------------------------------------------------
# 垂直方向変位 δDV 
print("#",sum({k:1/(2*AE)*v1**2*v2  \
               for (k,v1),(_,v2) in zip(t.internal_forces.items(),t.member_lengths.items())} \
               .values()).diff(P).simplify())
# 水平方向変位 δDH
t.apply_load(('D',Q,0))
t.solve()
print("#",sum({k:1/(2*AE)*v1**2*v2  \
               for (k,v1),(_,v2) in zip(t.internal_forces.items(),t.member_lengths.items())} \
               .values()).diff(Q).simplify().subs({Q:0}))
# 作図のため,l=1
myTruss(1).draw().show()
# --------------------------------------------------------------------------------------------
# P*l*(3 + 4*sqrt(2))/AE
# 2*P*l*(1 + sqrt(2))/AE

・縦横比は1:1でありません。
111.png

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

(テンプレート)

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

wikipedia

Qiita内

類題

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?