FEALPy:用 Python 手写有限元全流程的仿真引擎
2026/8/22 17:40:19 网站建设 项目流程

FEALPy:用 Python 手写有限元全流程的仿真引擎

【免费下载链接】fealpyFinite Element Analysis Library in Python项目地址: https://gitcode.com/gh_mirrors/fe/fealpy

想用自己的代码控制有限元流程的每一步,FEALPy 就是为这种需求写的 Python 有限元仿真库:从网格生成、函数空间构造到弱形式装配、线性方程组求解,整条数值管线都在库内。相比 FEniCS 一类的形式语言库,它的装配代码全是可直接阅读的纯 Python,计算后端还能切到 JAX、PyTorch。

它和别的不一样在哪 🤔

模型类是“五步脚本”,不是形式语言

FEniCS 用 UFL 形式语言写弱形式,FEALPy 走另一条路:每个 PDE 对应一个 Model 类,比如PoissonLFEMModel只有set_pde()set_init_mesh()set_space_degree()solverun五个入口,网格到解的代码路径全是可读可改的纯 Python。代价是没有形式语言抽象,弱形式要自己保证;换来的是装配、积分器、边界条件处理都能逐行改。

计算后端可以一行切换

fealpy/backend/里内置 NumPy、PyTorch、JAX 等后端,bm.set_backend('jax')全局切换。同样的装配代码可以带着自动微分跑、也可以跑在 GPU 上,这是传统 FEM 库基本固定 NumPy + SciPy 给不了的。

它是库,不是 CAE 工具

没有图形界面,也没有 CAD 前处理,几何建模主要靠MeshFactoryfealpy/mesher/模块。它不追求"一键仿真工程零件",追求的是让你能看懂并改动机理管线的每一行。

五分钟跑通 ⏱️

conda create -n fealpy310 python=3.10 -y # 3.10 与 README 维护的依赖版本一致 conda activate fealpy310 conda install numpy=2.0.1 scipy matplotlib -c conda-forge git clone https://gitcode.com/gh_mirrors/fe/fealpy && cd fealpy pip install -e .

装好后,六行代码解一个二维 Poisson 问题:

from fealpy.fem import PoissonLFEMModel model = PoissonLFEMModel() # 二维 Poisson 模型 model.set_pde() # 设置 PDE 与精确解 model.set_init_mesh(nx=20, ny=20) # 20x20 三角形网格 model.set_space_degree() # 一次 Lagrange 单元 model.solve.set('cg') # 共轭梯度法 model.run['uniform_refine']() # 求解并逐次加密至收敛

这段代码跑通了"网格 → 函数空间 → 装配 → 线性求解 → 加密收敛"的完整闭环,输出是 FEALPy 解二维 Poisson 问题的收敛历史。

能解决哪些实际问题 🧊

椭圆问题:二维 Poisson 方程与收敛阶验证

fealpy/fem/poisson_lfem_model.pyPoissonLFEMModel内置标准测试问题与误差估计工具,一次run['uniform_refine']()就能做收敛阶验证;想提高精度,把函数空间换成LagrangeFiniteElementSpace(mesh, p=2)就是二次单元。

热传导:二维平板上的非稳态热方程

fealpy/model/下 parabolic 目录存放抛物型扩散模型,时间步进内置,适合二维平板非均匀热源这类热传导场景;example/fem/tutorial/里的脚本可直接对照复现。

线性弹性:二维位移场求解

fealpy/fem/linear_elasticity_lfem_model.pyLinearElasticityLFEMModel解位移场,配合fealpy/material/的弹性材料类设置 Lamé 参数;example/fem/linear_elasticity_lfem_example.py是仓库里现成的可运行脚本。

不可压流动:Stokes 速度压力耦合

fealpy/fem/stokes_lfem_model.pyStokesLFEMModel处理速度与压力的耦合线性系统;fealpy/fvm/模块另有有限体积法 Stokes 实现,可以用来交叉核对有限元结果。

它和谁搭配 🔗

  • NumPy:默认计算后端,矩阵装配与线性代数都走它。
  • SciPy:稀疏矩阵存储与共轭梯度、直接稀疏求解器,线性求解环节接在这里。
  • JAX / PyTorch:通过bm.set_backend()切换,装配过程需要自动微分时接上。
  • matplotlib:解云图与收敛曲线出图,tutorial/pde_solve.py里的uh.add_plot(axes)就是现成用法。
  • 完整可运行脚本在example/目录,如example/fem/poisson_lfem_example.py

想手写装配或把 FEM 嵌入机器学习管线的研究者,打开example/fem/poisson_lfem_example.py,上面所有结果五分钟可复现。

【免费下载链接】fealpyFinite Element Analysis Library in Python项目地址: https://gitcode.com/gh_mirrors/fe/fealpy

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询