PyNite(包名:PyNiteFEA)

PyNite 是一个面向结构工程的 Python 三维有限元分析库,开源、轻量,适合做框架、桁架、板壳、剪力墙、筏板基础的弹性有限元计算,非常适合自动化结构计算、参数化建模、批量工况分析。

GitHub:bjhowie/PyNite;PyPI 包名叫 PyNiteFEA,大家习惯直接叫 PyNite

✅ 核心能力

  1. 三维弹性静力分析
    • 梁柱单元(beam-column)、桁架单元、板单元(DKMQ四边形板、矩形板)、弹簧单元(双向/仅拉/仅压弹簧)
    • 支持P-Δ二阶效应、模态分析;新版增加钢框架非线性推覆分析(pushover)
    • 荷载:节点荷载、集中力、分布荷载;支持多荷载工况 + 荷载组合,可给组合打标签提取包络结果
  2. 结果输出
    • 构件剪力、弯矩、轴力、挠度图;支座反力;板壳弯矩/膜力/剪力
    • 自动生成 HTML / PDF 计算报告书
  3. 可视化
    • 基于 PyVista/VTK 的交互式3D视图:原始模型、变形图、内力云图
    • Jupyter Notebook 友好;第三方扩展 pynite-plotly 支持 Plotly 交互式绘图
  4. 网格工具
    • 内置板壳网格生成器:矩形、圆环、圆柱、锥台,支持开洞,适合剪力墙、筏板建模

📦 安装

# 基础安装
pip install PyNiteFEA

# 完整依赖(绘图、PDF报告、可视化)
pip install PyNiteFEA[all]

依赖:numpy、scipy;可选:matplotlib、pyvista、jinja2、wkhtmltopdf(PDF报告)

🧩 最简示例(单根悬臂梁)

from PyNite import FEModel3D

# 新建三维有限元模型
model = FEModel3D()

# 定义节点
model.add_node("N0", 0, 0, 0)
model.add_node("N1", 5, 0, 0)

# 添加材料与截面
model.add_material("Steel", E=200e9, G=77e9, nu=0.3, rho=7850)
model.add_section("Sec", A=0.01, Iy=1e-6, Iz=1e-6, J=1e-7)

# 添加梁单元
model.add_member("M0", "N0", "N1", "Steel", "Sec")

# 固定支座 N0
model.def_support("N0", True, True, True, True, True, True)

# 在 N1 施加竖向集中力
model.add_node_load("N1", "FY", -1000)

# 运行静力求解
model.analyze()

# 读取结果
print("端部挠度:", model.nodes["N1"].DY)
print("支座反力 FY:", model.nodes["N0"].RxnFY)

🎯 适用场景

  • 结构工程师做参数化脚本计算(风电支架、厂房框架、幕墙、小型钢结构)
  • 教学/研究:理解FEM原理,替代手算,不依赖商业FEA软件(SAP2000、ETABS)
  • 批量扫描多方案、自动生成计算书
  • 快速原型验证,和Python生态(pandas、plotly)打通做自动化报告

⚠️ 局限(重点)

  1. 以弹性分析为主,非线性能力有限;不适合复杂混凝土塑性、大变形
  2. 板单元是壳/薄板单元,不是实体单元,没有3D实体brick单元
  3. 大型模型求解速度不如商业FEA,适合中小规模模型
  4. 没有GUI,纯代码驱动;建模需要写Python脚本

🆚 和 OpenSeesPy 简单区分

  • PyNite:API更简洁,自带板壳网格、PDF报告、3D可视化,上手更容易;主打弹性框架+板壳,适合日常工程校核
  • OpenSeesPy:强非线性、地震分析能力极强;学习曲线陡,原生可视化弱
免责声明:本网站仅提供网址导航服务,对链接内容不负任何责任或担保。
相关资讯