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

相关推荐
郭庆汝3 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变6 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络7 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find8 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取9 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector10 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习11 小时前
Python入门Day2
开发语言·python
Vertira11 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉11 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗11 小时前
黑马python(二十四)
开发语言·python