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

相关推荐
程序猿小D7 分钟前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此1 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
zaim14 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
PythonFun8 小时前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
炼丹师小米8 小时前
Ubuntu24.04.1系统下VideoMamba环境配置
python·环境配置·videomamba
GFCGUO8 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
985小水博一枚呀10 小时前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm
萧鼎11 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
IFTICing11 小时前
【文献阅读】Attention Bottlenecks for Multimodal Fusion
人工智能·pytorch·python·神经网络·学习·模态融合
大神薯条老师11 小时前
Python从入门到高手4.3节-掌握跳转控制语句
后端·爬虫·python·深度学习·机器学习·数据分析