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()、solve、run五个入口,网格到解的代码路径全是可读可改的纯 Python。代价是没有形式语言抽象,弱形式要自己保证;换来的是装配、积分器、边界条件处理都能逐行改。
计算后端可以一行切换
fealpy/backend/里内置 NumPy、PyTorch、JAX 等后端,bm.set_backend('jax')全局切换。同样的装配代码可以带着自动微分跑、也可以跑在 GPU 上,这是传统 FEM 库基本固定 NumPy + SciPy 给不了的。
它是库,不是 CAE 工具
没有图形界面,也没有 CAD 前处理,几何建模主要靠MeshFactory和fealpy/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.py的PoissonLFEMModel内置标准测试问题与误差估计工具,一次run['uniform_refine']()就能做收敛阶验证;想提高精度,把函数空间换成LagrangeFiniteElementSpace(mesh, p=2)就是二次单元。
热传导:二维平板上的非稳态热方程
fealpy/model/下 parabolic 目录存放抛物型扩散模型,时间步进内置,适合二维平板非均匀热源这类热传导场景;example/fem/和tutorial/里的脚本可直接对照复现。
线性弹性:二维位移场求解
fealpy/fem/linear_elasticity_lfem_model.py的LinearElasticityLFEMModel解位移场,配合fealpy/material/的弹性材料类设置 Lamé 参数;example/fem/linear_elasticity_lfem_example.py是仓库里现成的可运行脚本。
不可压流动:Stokes 速度压力耦合
fealpy/fem/stokes_lfem_model.py的StokesLFEMModel处理速度与压力的耦合线性系统;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),仅供参考