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、实例

# 从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和6s.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.]])}

# 从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和6s.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]])}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL运行在docker容器中会损失多少性能

前言 自从使用docker以来,就经常听说MySQL数据库最好别运行在容器中,性能会损失很多。一些之前没使用过容器的同事,对数据库运行在容器中也是忌讳莫深,甚至只要数据库跑在容器中出现性能问题时,首先就把问题推到容器上…

Java学习路线第一篇:Java基础(2)

这篇则分享Java学习路线第一part:Java基础(2) 从看到这篇内容开始,你就是被选定的天命骚年,将承担起学完Java基础的使命,本使命为单向契约,你可选择YES或者选择YES。 具体路线安排&#xff1a…

ubuntu 下载编译 opencv4.2.0并检验

如有帮助点赞收藏关注! 如需转载,请注明出处! ubuntu 的opencv4.2.0下载与编译 下载依赖开始编译安装配置OpenCV编译环境检验* 完成 下载 首先下载opencv源码网址: https://opencv.org/releases/page/3/ 下载成zip后,…

QMap key()和value(const Key key, const T defaultValue = T()) const第二个参数作用

value()函数介绍 返回与键key关联的值。 如果map不包含键为key的项,则该函数返回defaultValue。 如果没有指定defaultValue,该函数返回一个默认构造的值。 如果映射中有多个key项,则返回最近插入的项的值。 示例 定义自定义类型&#xff…

3D模型顶点颜色转纹理【SIMPLYGON】

在这篇博客中,我们将了解如何将顶点颜色烘焙到纹理中。 其用例是某些照片扫描资产,其中颜色数据保存到顶点颜色中。 我们将了解如何使用 remesher 和聚合器管道来完成此操作。 我们还将介绍如何为顶点颜色材质创建着色网络以及如何从模型后处理中删除顶点…

6.Spring源码解析-loadBeanDefinitions(String location)

这里resourceLoader其实就是ClassPathXmlApplicationContext 1.ClassPathXmlApplicationContext 在上文中图例就能看出来 获取资源组可能存在多个bean.xml 循环单独加载资源组 创建一个编码资源并解析 获取当前正在加载的资源发现是空 创建了一个字节输入流&#xff0c…

pytorch分布式训练

1 基本概念 rank:进程号,在多进程上下文中,我们通常假定rank 0是第一个进程或者主进程,其它进程分别具有1,2,3不同rank号,这样总共具有4个进程 node:物理节点,可以是一个…

Find My键盘|苹果Find My技术与键盘结合,智能防丢,全球定位

键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母、汉字、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。还有一些带有各种快捷键的键盘。随着时间的推移,渐渐的市场上也出现独立的具有各种快捷功能的产品单独…

自己动手实现一个深度学习算法——八、深度学习

深度学习是加深了层的深度神经网络。 1.加深网络 1)向更深的网络出发 创建一个如下图所示的网络结构的CNN 这个网络的层比之前实现的网络都更深。这里使用的卷积层全都是33 的小型滤波器,特点是随着层的加深,通道数变大(卷积…

FLASK博客系列7——我要插入数据库

我们来继续上次的内容,实现将数据插入数据库。 我们先更改下models.py,由于上次笔误,把外键关联写错了。在这里给大家说声抱歉。不过竟然没有小伙伴发现。 models.py from app import dbclass User(db.Model): # 表名将会是 user&#xff0…

针对无法创建JDK8版本的SpringBoot项目

自从昨日起,JDK突然改版了,不能在使用JDK8来进行创建Spring Boot项目了,导致目前小编的JDK无从下手~~ 因此,在仔细琢磨了一晚之后,想起来了以下几个方法,与大家共勉。希望能够得到大家的认可! …

生命科学领域 - 新药从研发到上市全流程

新药是指新研制的、临床尚未应用的药物,其化学本质应为新的化合物或称新化学实体、 新 分子实体、新活性实体。新药研发的根本目的是治疗疑难危重疾病,研制出来的药物即使是全新的化学结构,但是疗效或安全性却不及现有的药物便失去新药价值&a…

Redis面试题:哨兵模式相关问题,以及脑裂问题

目录 面试官:怎么保证Redis的高并发高可用 面试官:你们使用redis是单点还是集群,哪种集群 面试官:redis集群脑裂,该怎么解决呢? 面试官:怎么保证Redis的高并发高可用 候选人:首先…

人工智能-优化算法之凸集

凸性 凸性(convexity)在优化算法的设计中起到至关重要的作用, 这主要是由于在这种情况下对算法进行分析和测试要容易。 换言之,如果算法在凸性条件设定下的效果很差, 那通常我们很难在其他条件下看到好的结果。 此外&…

统信UOS安装Virtualbox虚拟机和Windows10系统

在UOS统信系统中部署Windows环境我可以通过安装虚拟机来实现,这也可以解决软件不适配带来的一些问题,当然对硬件配置也有一定的要求,不建议性能过低的设备使用。 接下来请按照以下步骤进行安装Virtualbox及Win10虚拟系统的设置。 1、安装Vi…

ETL+BI结合的数据集成工具

在当今信息化时代,企业积累了大量的数据资产,如何高效地提取、转换和加载(ETL)这些数据,并将其转化为有用的洞察力成为了企业取得竞争优势的关键。同时,商业智能(BI)作为一种数据驱动…

微软重磅更新:Bing Chat全线改名Copilot,用户可免费使用GPT4!(文末附Copilot使用教程)

原创 | 文 BFT机器人 微软在2023年的Ignite大会上宣布了许多新产品和功能。其中最引人注目的是Bing Chat更名为Copilot,Copilot基于最新的OpenAI模型,包括GPT-4和DALL・E 3,为用户提供文本和图像生成功能。也就是说,只要你拥有微…

Flutter 桌面应用开发之读写Windows注册表

文章目录 需求来源Windows查询Windows版本号方法1. 如何查看Windows版本号2. Windows开发如何通过代码查询Windows版本号(1) 使用C#代码:(2) 使用VB.NET代码 3.通过注册表查看Windows版本信息 Flutter查询Windows版本号方法依赖库支持平台实现步骤1. 在pubspec.yaml…

opencv-医学图像预处理

医学图像预处理通常需要针对特定任务和数据集的特点进行定制。以下是一些常见的医学图像预处理步骤,可以使用OpenCV以及其他相关库来实现: 导入相关的库 import cv2 import matplotlib.pyplot as plt1. 读取图像 image cv2.imread(r"C:\Users\m…

【图像分类】基于深度学习的中草药分类系统的设计与实现(ResNet网络,附代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…