python+feon有限元分析|Feon框架

关键字

二维节点:nAk=("Ux", "Uy", "Phz"),nBk=("Fx", "Fy", "Mz")

三维节点:nAk=("Ux", "Uy", "Uz", "Phx" , "Phy" , "Phz"),nBk=("Fx", "Fy", ,"Fz", "Mx" , "My" , "Mz")

Ux、Uy、Uz表示节点在总体坐标系中沿X、Y、Z三个方向的位移

Phx、Phy、Phz表示节点沿三个坐标轴方向的转角

Fx、Fy、Fz、Mx、My、Mz分别表示节点在总体坐标系中的力和弯矩

sx、sy、sz、sxy、syz、szx分别代表单元的正应力和剪应力

三个模块

三个包

  • sa

  • ffa

  • derivation

|----|------------|-----------------|
| 包 | sa | node.py |
| 包 | sa | element.py |
| 包 | sa | system.py |
| 包 | sa | solver.py |
| 包 | sa | draw2d.py |
| 包 | sa | post_process.py |
| 包 | ffa | node.py |
| 包 | ffa | element.py |
| 包 | ffa | system.py |
| 包 | ffa | solver.py |
| 包 | derivation | base.py |
| 包 | derivation | dElement.py |
| 包 | derivation | integration.py |
| 包 | derivation | lagrange.py |
| 模块 | base.py ||
| 模块 | tools.py ||
| 模块 | mesh.py ||

Feon.sa.node.Node类

|----|---------------------------|--------------------------|
| class node |||
| 属性 | coord | tuple,节点坐标 |
| 属性 | dim | int,节点维度 |
| 属性 | x | float,节点x坐标 |
| 属性 | y | float,节点y坐标 |
| 属性 | z | float,节点z坐标 |
| 属性 | nAk | list或tuple,节点位移keys |
| 属性 | nBk | list或tuple,节点力keys |
| 属性 | ID | None或int,节点编号 |
| 属性 | force | dictionary,节点力 |
| 属性 | disp | dictionary,节点位移 |
| 方法 | init(*coord) | 根据坐标输入类型定义节点坐标和维度,输入节点坐标 |
| 方法 | init_unknowns(*unknowns) | 设置节点自由度 |
| 方法 | init_keys() | 初始化节点keys |
| 方法 | set_force(**forces) | 设置节点力 |
| 方法 | get_force() | 获取节点力 |
| 方法 | clear_force() | 节点力数值归零 |
| 方法 | set_disp(**disp) | 设置节点位移 |
| 方法 | get_disp() | 获取节点位移 |
| 方法 | clear_disp() | 节点位移数值归零 |

Feon.sa.element.StructElement类

|----|----------------------------|-------------------------------|
| class StructElement |||
| 属性 | nodes | tuple、list或numpy.ndarray,单元节点 |
| 属性 | dim | int,单元维度 |
| 属性 | elk | list或tuple,单元keys |
| 属性 | ndof | int,单元节点自由度 |
| 属性 | ID | None或int,单元编号 |
| 属性 | volume | float,单元体积,一维返回长度,二维返回体积 |
| 属性 | non | int,单元节点数量 |
| 属性 | force | dictionary,单元力 |
| 属性 | etype | string,单元类型 |
| 属性 | T | numpy.ndarray,坐标转换矩阵 |
| 属性 | B | numpy.ndarray,单元应变矩阵 |
| 属性 | D | numpy.ndarray,单元本构矩阵 |
| 属性 | ke | numpy.ndarray,局部坐标系中的单元刚度矩阵 |
| 属性 | me | numpy.ndarray,局部坐标系中的单元质量矩阵 |
| 属性 | Ke | numpy.ndarray,整体坐标系中的单元刚度矩阵 |
| 属性 | Me | numpy.ndarray,整体坐标系中的单元质量矩阵 |
| 属性 | t | float,单元厚度,对于板、壳单元 |
| 方法 | init(nodes) | 初始化方法,输入节点,计算单元体积 |
| 方法 | init_unknowns() | 定义单元节点自由度 |
| 方法 | init_keys() | 初始化单元keys |
| 方法 | calc_T() | 计算单元坐标转换矩阵 |
| 方法 | calc_ke() | 计算局部坐标系中的单元刚度矩阵 |
| 方法 | calc_Ke() | 计算整体坐标系中的单元刚度矩阵 |
| 方法 | calc_me() | 计算局部坐标系中的单元质量矩阵 |
| 方法 | calc_Me() | 计算整体坐标系中的单元质量矩阵 |
| 方法 | evaluate() | 通过节点位移计算单元力 |
| 方法 | load_equivalent(ltype,val) | 分布载荷等效为节点载荷方法,目前只支持梁单元 |

Feon.sa.element.SolidElement类

|----|----------------------------|-------------------------------|
| class SolidElement |||
| 属性 | nodes | tuple、list或numpy.ndarray,单元节点 |
| 属性 | dim | int,单元维度 |
| 属性 | elk | list或tuple,单元keys |
| 属性 | ndof | int,单元节点自由度 |
| 属性 | ID | None或int,单元编号 |
| 属性 | volume | float,单元体积,一维返回长度,二维返回体积 |
| 属性 | non | int,单元节点数量 |
| 属性 | stress | dictionary,单元应力 |
| 属性 | etype | string,单元类型 |
| 属性 | B | numpy.ndarray,单元应变矩阵 |
| 属性 | D | numpy.ndarray,单元本构矩阵 |
| 属性 | ke | numpy.ndarray,局部坐标系中的单元刚度矩阵 |
| 属性 | Ke | numpy.ndarray,整体坐标系中的单元刚度矩阵 |
| 属性 | Me | numpy.ndarray,整体坐标系中的单元质量矩阵 |
| 方法 | init(nodes) | 初始化方法,输入节点,计算单元体积 |
| 方法 | init_unknowns() | 定义单元节点自由度 |
| 方法 | init_keys() | 初始化单元keys |
| 方法 | calc_D() | 计算单元本构矩阵 |
| 方法 | calc_B() | 计算单元应变矩阵 |
| 方法 | calc_Ke() | 计算单元刚度矩阵 |
| 方法 | evaluate() | 通过节点位移计算单元力 |
| 方法 | load_equivalent(ltype,val) | 分布载荷等效为节点载荷方法,目前只支持梁单元 |

Feon.sa.system.System类

|----|---------------------------------|------------------------------|
| class System |||
| 属性 | nodes | dictionary,系统节点 |
| 属性 | elements | dictionary,系统单元 |
| 属性 | dim | int,系统维度 |
| 属性 | nAk | list或tuple,系统节点位移keys |
| 属性 | nBk | list或tuple,系统节点力keys |
| 属性 | mndof | int,系统中节点最大自由度 |
| 属性 | non | int,系统节点数量 |
| 属性 | noe | int,系统单元数量 |
| 属性 | Force | list,系统节点力,元素为字典类型 |
| 属性 | Disp | list,系统节点位移,元素为字典类型 |
| 属性 | ForceValue | list,系统节点力列阵 |
| 属性 | DispValue | list,系统节点位移列阵 |
| 属性 | KG | numpy.ndarray,总体刚度矩阵 |
| 属性 | KG_keeped | numpy.ndarray,处理后的总体刚度矩阵 |
| 属性 | MG | numpy.ndarray,总体质量矩阵 |
| 属性 | MG_keeped | numpy.ndarray,处理后的总体质量矩阵 |
| 属性 | Force_keeped | numpy.ndarray,处理后的节点力列阵 |
| 属性 | Disp_keeped | numpy.ndarray,求解方程组获得的节点位移列阵 |
| 属性 | deleted | list,被删除的节点位移在DistValue中的索引 |
| 属性 | keeped | list,保留的节点位移在DistValue中的索引 |
| 属性 | nonzeros | 位移不为零的节点位移在DistValue中的索引及值 |
| 方法 | add_node(node) | 向系统中添加单个节点并进行编号 |
| 方法 | add_nodes(*nodes) | 向系统中添加多个节点并进行编号 |
| 方法 | add_element(element) | 向系统中添加单个单元并进行编号 |
| 方法 | add_elements(*elements) | 向系统中添加多个单元并进行编号 |
| 方法 | init() | 系统初始化方法 |
| 方法 | calc_KG() | 计算总体刚度矩阵 |
| 方法 | calc_MG() | 计算总体质量矩阵 |
| 方法 | add_node_force(nid,**forces) | 施加节点力 |
| 方法 | add_node_disp(nid,**disp) | 施加节点位移 |
| 方法 | add_element_load(eid,ltype,val) | 对单元施加分布载荷,只支持梁单元 |
| 方法 | add_fixed_sup(*nids) | 向系统添加固定支座 |
| 方法 | add_hinged_sup(*nids) | 向系统添加铰支座 |
| 方法 | add_rolled_sup(nid,direction) | 向系统添加滚动支座 |
| 方法 | calc_deleted_KG_matrix() | 处理总体刚度矩阵 |
| 方法 | calc_deleted_MG_matrix() | 处理总体质量矩阵 |
| 方法 | check_boundary_condition(KG) | 检查边界条件,并对位移边界条件进行处理 |
| 方法 | check_deleted_KG_matrix() | 检查处理后的总体刚度矩阵 |
| 方法 | check_deleted_MG_matrix() | 检查处理后的总体质量矩阵 |
| 方法 | solve(model) | 求解系统 |
| 方法 | get_nodes() | 获取系统的节点信息 |
| 方法 | get_elements() | 获取系统的单元信息 |

相关推荐
FBI78098045941 小时前
API接口在电商行业中的创新应用与趋势
运维·网络·人工智能·爬虫·python
程序员黄同学1 小时前
如何使用 Flask 框架创建简单的 Web 应用?
前端·python·flask
凡人的AI工具箱1 小时前
每天40分玩转Django:Django管理界面
开发语言·数据库·后端·python·django
utmhikari1 小时前
【Python随笔】如何用pyside6开发并部署简单的postman工具
python·postman·pyqt·pyside6·桌面工具
碧水澜庭1 小时前
django中cookie与session的使用
python·django
鬼义II虎神1 小时前
将Minio设置为Django的默认Storage(django-storages)
python·django·minio·django-storages
数据小爬虫@2 小时前
Python爬虫抓取数据,有哪些常见的问题?
开发语言·爬虫·python
Byron Loong2 小时前
Python+OpenCV系列:【打卡系统-工具模块设计】工具模块深度揭秘,考勤智能化的核心秘籍!
python·opencv·webpack
漫无目的行走的月亮2 小时前
基于Python Scrapy的豆瓣Top250电影爬虫程序
爬虫·python·scrapy
这里有鱼汤2 小时前
数据分析从入门到放飞:Python三大金刚来助阵!
后端·python