TensorMesh 文档¶
████████╗███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ███╗ ███╗███████╗███████╗██╗ ██╗
╚══██╔══╝██╔════╝████╗ ██║██╔════╝██╔═══██╗██╔══██╗████╗ ████║██╔════╝██╔════╝██║ ██║
██║ █████╗ ██╔██╗ ██║███████╗██║ ██║██████╔╝██╔████╔██║█████╗ ███████╗███████║
██║ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║██╔══██╗██║╚██╔╝██║██╔══╝ ╚════██║██╔══██║
██║ ███████╗██║ ╚████║███████║╚██████╔╝██║ ██║██║ ╚═╝ ██║███████╗███████║██║ ██║
╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝
一个快速、可微、无 JIT 且易于调试的有限元库——将现代 PyTorch 的使用体验带入科学计算。
TensorMesh 是一个基于 PyTorch 构建的有限元方法(FEM)库,旨在优雅而高效地求解偏微分方程(PDE)。通过与 PyTorch 生态原生集成,它在不牺牲经典有限元严谨性的前提下,提供自动微分、GPU 加速以及直观的 Pythonic 接口。
核心优势¶
GPU 原生与可微:完全基于 PyTorch 从底层构建。只需一行代码即可将整个有限元工作流迁移到 GPU——其后续的每一次装配、求解和梯度计算都会自动继承设备,无需单独的后端或数据搬运步骤。原生 autograd 可无缝贯穿装配与求解,从而实现端到端可微的 PDE 流水线。
高性能张量化装配:由 TensorGalerkin 驱动的全张量化 Map-Reduce 算法,将逐单元运算融合为单体的 GPU 内核,消除了 Python 层级的循环,相较于基于 CPU 的有限元技术栈带来数量级的加速。
无 JIT 且易于调试:即时执行(eager execution),无编译开销。动态网格、自适应加密以及交互式工作流均可开箱即用——没有重新编译的延迟,也没有难以理解的追踪信息。
全面的单元与网格支持:支持三角形、四面体、四棱锥和三棱柱单元,可为常见几何自动生成网格,并与 Gmsh / VTK-HDF5 实现无缝 I/O。
灵活的求解器:由 torch-sla 驱动,这是我们配套的可微稀疏线性代数库。线性、非线性和特征值求解器可在 CPU 和 GPU 上跨多种后端运行,并完整支持 autograd、批量求解以及分布式多 GPU 扩展。
Pythonic API:用纯 Python 编写自定义弱形式——无需独立的 DSL,也无需 form 编译器。只要会写 PyTorch,就能写有限元。
功能对比¶
功能 |
FEniCS |
scikit-fem |
JAX-FEM |
torch-fem |
TensorMesh |
|---|---|---|---|---|---|
自定义弱形式(Pythonic) |
⚠️ |
✅ |
❌ |
❌ |
✅ |
易于安装 |
❌ |
✅ |
⚠️ |
✅ |
✅ |
易于调试 |
❌ |
✅ |
❌ |
✅ |
✅ |
易于输入输出 |
❌ |
❌ |
❌ |
❌ |
✅ |
大规模网格 |
✅ |
✅ |
❌ |
❌ |
✅ |
GPU 支持 |
✅ |
❌ |
✅ |
✅ |
✅ |
效率 |
✅ |
❌ |
✅ |
⚠️ |
✅ |
端到端 autograd |
⚠️ |
❌ |
✅ |
✅ |
✅ |
深度学习集成(PyTorch) |
❌ |
❌ |
⚠️ |
✅ |
✅ |
成熟度 |
✅ |
✅ |
⚠️ |
⚠️ |
⚠️ |
备注
自定义弱形式(Pythonic)——支持直接在 Python 中定义双线性/线性形式,无需 UFL 等独立的 DSL。端到端 autograd——梯度可原生贯穿整个流水线;FEniCS 通过外部的 dolfin-adjoint 包来支持这一点。成熟度——反映项目的存续时间、生态规模以及生产环境部署情况。
引用¶
TensorMesh 是 TensorGalerkin 框架中的有限元求解器组件。如果您在研究中使用了 TensorMesh,请引用 TensorGalerkin 论文:
@article{wen2026tensorgalerkin,
title = {Learning, Solving and Optimizing PDEs with {TensorGalerkin}:
an Efficient High-Performance Galerkin Assembly Algorithm},
author = {Wen, Shizheng and Chi, Mingyuan and Yu, Tianwei and
Moseley, Ben and Michelis, Mike Yan and Ren, Pu and
Sun, Hao and Mishra, Siddhartha},
journal = {arXiv preprint arXiv:2602.05052},
year = {2026}
}
如果您的工作还依赖于 torch-sla(TensorMesh 的求解器后端),请额外引用:
@article{chi2026torchsla,
title = {torch-sla: Differentiable Sparse Linear Algebra with Adjoint
Solvers and Sparse Tensor Parallelism for PyTorch},
author = {Chi, Mingyuan and Wen, Shizheng},
journal = {arXiv preprint arXiv:2601.13994},
year = {2026}
}
联系我们¶
TensorMesh 基于 Apache License 2.0 发布。如需合作与洽谈,请通过 shizheng.wen@sam.math.ethz.ch 联系 Shizheng Wen。