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() | 获取系统的单元信息 |

相关推荐
一念之坤1 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
wxl7812272 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder2 小时前
Python入门(12)--数据处理
开发语言·python
LKID体3 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j
小尤笔记3 小时前
利用Python编写简单登录系统
开发语言·python·数据分析·python基础
FreedomLeo13 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
007php0073 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
Tech Synapse3 小时前
Python网络爬虫实践案例:爬取猫眼电影Top100
开发语言·爬虫·python
一行玩python4 小时前
SQLAlchemy,ORM的Python标杆!
开发语言·数据库·python·oracle
数据小爬虫@5 小时前
利用Python爬虫获取淘宝店铺详情
开发语言·爬虫·python