python+feon有限元分析|求解实例

目录

1、feon框架结构

2. 支持的单元类型

3、实例


1、feon框架结构

包含三个包:

sa:结构分析包

ffa:流体分析包

derivation:刚度矩阵包

2. 支持的单元类型

Spring1D11 - 一维弹簧单元

Spring2D11 - 二维弹簧单元

Spring3D11 - 三维弹簧单元

Link1D11 - 一维杆单元

Link2D11 - 二维弹簧单元

Link3D11 - 三维弹簧单元

Beam1D11- 一维梁单元

Beam2D11- 二维弹簧单元

Beam3D11- 三维弹簧单元

Tri2d11S---- 平面应力三角形单元

Tri2D11 ---- 平面应变三角形单元

Tetra3D11 ---- 四面体单元

Quad2D11S ---- 平面应力四边形单元

Quad2D11  ---- 平面应变四边形单元

Plate3D11 ---Midline 板单元

Brick3D11 --- 六面体单元

单元命名方式为 "Name" + "dimension" + 'order" + "type", type 1 means elastic

import feon.sa as fsa
#创建二维节点,(1,2)为坐标
n=fsa.Node(1,2)
#访问x坐标
print(n.x)
#访问y坐标
print(n.y)
#访问坐标
print(n.coord)
#访问节点位移keys
print(n.nAk)
#访问节点位移
print(n.disp)
#访问节点力
print(n.force)
#访问节力移keys
print(n.nBk)
#设置节点力
n.set_force(Fx=100,Fy=100)
#设置节点位移
n.set_disp(Ux=0.1)
​

1.0

2.0

(1.0, 2.0)

('Ux', 'Uy', 'Phz')

{'Ux': 0.0, 'Uy': 0.0, 'Phz': 0.0}

{'Fx': 0.0, 'Fy': 0.0, 'Mz': 0.0}

('Fx', 'Fy', 'Mz')

3、实例

python+feon有限元分析|求解实例_第1张图片

# 从feon.sa(结构分析子包)中导入所有的对象
from feon.sa import *
​
if __name__ == "__main__":
    # 定义材料参数
    E = 210e6  # 弹性模量
    A = 0.005  # 截面面积
    K = 79e3  # 弹簧刚度
​
    # 通过Node对象创建节点,需要输入节点坐标
    n0 = Node(0, 0)
    n1 = Node(5, 0)
    n2 = Node(10, 0)
    n3 = Node(15, 0)
    n4 = Node(5, 7)
    n5 = Node(10, 7)
    n6 = Node(15, -1)
​
    # 通过节点创建单元,Link2D11为二维杆单元,输入参数为单元节点,弹性模量和截面面积
    e0 = Link2D11((n0, n1), E, A)
    e1 = Link2D11((n1, n2), E, A)
    e2 = Link2D11((n2, n3), E, A)
    e3 = Link2D11((n4, n0), E, A)
    e4 = Link2D11((n4, n1), E, A)
    e5 = Link2D11((n4, n2), E, A)
    e6 = Link2D11((n4, n5), E, A)
    e7 = Link2D11((n5, n2), E, A)
    e8 = Link2D11((n5, n3), E, A)
​
    # 创建弹簧单元
    e9 = Spring2D11((n3, n6), K)
​
    # 创建一个有限元系统
    s = System()
​
    # 将节点和单元添加到系统中
    s.add_nodes(n0, n1, n2, n3, n4, n5, n6)
    s.add_elements(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
​
    # 添加力边界条件
    s.add_node_force(4, Fx=30)
​
    # 添加固定支座,输入节点的编号0和6
    s.add_fixed_sup(0, 6)
​
    # 求解系统
    s.solve()
​
#查看节点的水平和竖向位移。
print([nd.disp['Ux'] for nd in s.get_nodes()])
print([nd.disp['Uy'] for nd in s.get_nodes()])
​
#查看1号节点的位移
print(n1.disp)
​
#查看单元轴力
print([el.force['N'] for el in s.get_elements()])
#查看1号单元的轴力
print(e1.force)

[0.0, 9.523809523809543e-05, 0.00019047619047619086, 0.00023809523809523858, 0.0005274897818499404, 0.0004798707342308927, 0.0]

[0.0, -0.00020356152587617366, -0.0002710686299836396, -0.00017721518987341803, -0.00020356152587617366, -0.00017773529665030604, 0.0]

{'Ux': 9.523809523809543e-05, 'Uy': -0.00020356152587617366, 'Phz': 0.0}

[array([[-20.],

       [ 20.]]), array([[-20.],

       [ 20.]]), array([[-10.],

       [ 10.]]), array([[-17.20465053],

       [ 17.20465053]]), array([[0.],

       [0.]]), array([[ 17.20465053],

       [-17.20465053]]), array([[ 10.],

       [-10.]]), array([[-14.],

       [ 14.]]), array([[ 17.20465053],

       [-17.20465053]]), array([[ 14.],

       [-14.]])]

{'N': array([[-20.],

       [ 20.]])}

python+feon有限元分析|求解实例_第2张图片

# 从feon.sa(结构分析子包)中导入所有的对象
from feon.sa import *
​
if __name__ == "__main__":
    # 定义材料参数
    E = 210e6  # 弹性模量
    A = 0.005  # 截面面积
    K = 79e3  # 弹簧刚度
​
    # 通过Node对象创建节点,需要输入节点坐标
    n0 = Node(0, 0)
    n1 = Node(0.4, 0)
    n2 = Node(0.4, 0.3)
    n3 = Node(0, 0.3)
​
    # 通过节点创建单元,Link2D11为二维杆单元,输入参数为单元节点,弹性模量和截面面积
    e0 = Link2D11((n0, n1), E,A)
    e1 = Link2D11((n1, n2), E,A)
    e2 = Link2D11((n2, n3), E,A)
    e3 = Link2D11((n1, n3), E,A)
    e4 = Link2D11((n0, n2), E,A)
​
​
    # 创建一个有限元系统
    s = System()
​
    # 将节点和单元添加到系统中
    s.add_nodes(n0, n1, n2, n3)
    s.add_elements(e0, e1, e2, e3, e4)
​
    # 添加力边界条件
    s.add_node_force(1, Fx=20)
    s.add_node_force(2, Fy=-25)
​
    # 添加固定支座,输入节点的编号0和6
    s.add_fixed_sup(0, 3)
​
    # 求解系统
    s.solve()
​
#查看节点的水平和竖向位移。
print([nd.disp['Ux'] for nd in s.get_nodes()])
print([nd.disp['Uy'] for nd in s.get_nodes()])
​
#查看1号节点的位移
print(n1.disp)
​
#查看单元轴力
print([el.force['N'] for el in s.get_elements()])
#查看1号单元的轴力
print(e1.force)
[0.0, 4.891240446796015e-07, 5.5684891240446785e-06, 0.0]

[0.0, -1.791534391534391e-05, -2.1925925925925923e-05, 0.0]

{'Ux': 4.891240446796015e-07, 'Uy': -1.791534391534391e-05, 'Phz': 0.0}

[array([[-1.28395062],

       [ 1.28395062]]), array([[ 14.03703704],

       [-14.03703704]]), array([[-14.61728395],

       [ 14.61728395]]), array([[-23.39506173],

       [ 23.39506173]]), array([[ 18.27160494],

       [-18.27160494]])]

{'N': array([[ 14.03703704],

       [-14.03703704]])}

你可能感兴趣的:(python有限元分析,python,numpy,Feon,有限元分析)