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

相关推荐
LitchiCheng2 分钟前
Mujoco 使用 Pinocchio 进行逆动力学及阻抗力矩控制维持当前位置
人工智能·python
殇者知忧25 分钟前
凯斯西储(CWRU)数据集解读与数据读取
python·凯斯西储(cwru)数据集
deephub1 小时前
Scikit-Learn 1.8引入 Array API,支持 PyTorch 与 CuPy 张量的原生 GPU 加速
人工智能·pytorch·python·机器学习·scikit-learn
free-elcmacom1 小时前
机器学习高阶教程<11>当数据开始“折叠”:流形学习与深度神经网络如何发现世界的隐藏维度
人工智能·python·神经网络·学习·算法·机器学习·dnn
月明长歌1 小时前
Java数据结构:PriorityQueue堆与优先级队列:从概念到手写大根堆
java·数据结构·python·leetcode·
波克布林的矩阵6332 小时前
VS code为python文件配置默认模板
python
dhdjjsjs2 小时前
Day44 PythonStudy
python
love530love2 小时前
在 PyCharm 中配置 x64 Native Tools Command Prompt for VS 2022 作为默认终端
ide·人工智能·windows·python·pycharm·prompt·comfyui
柒.梧.2 小时前
CSS 基础样式与盒模型详解:从入门到实战进阶
人工智能·python·tensorflow
free-elcmacom2 小时前
机器学习高阶教程<9>从实验室到生产线:机器学习模型推理与部署优化实战指南
人工智能·python·机器学习