自适应稀疏网格的 ASGarD 代码算是挺硬核的资源了,尤其是你要搞高维 PDE 求解的时候。它用的是 Discontinuous-Galerkin 方法,搭在一个稀疏网格结构上,优势是啥?就是不用陷入维度灾难,性能还挺抗打。嗯,关键是还能自动自适应,适合变量不均匀分布的那种问题。
自适应稀疏网格的 ASGarD 代码算是挺硬核的资源了,尤其是你要搞高维 PDE 求解的时候。它用的是Discontinuous-Galerkin 方法,搭在一个稀疏网格结构上,优势是啥?就是不用陷入维度灾难,性能还挺抗打。嗯,关键是还能自动自适应,适合变量不均匀分布的那种问题。
代码本身是用C++17写的,构建系统是CMake 3.13+,还支持CUDA,用在加速场景下也 OK。跑在 MPI 上的单元测试也做得比较全,如果你搞并行计算应该会比较安心。自动测试那块正在开发中,稳定性还算靠谱。
如果你以前写过MATLAB
的pdepe
函数,突然转到 C++搞高维 PDE,会有点不习惯。建议从测试例子入手,比如一维扩散问题,熟悉下代码结构和稀疏网格的数据布局。
另外,想对 ASGarD 做点贡献?项目页里写了挺多参与方式,可以提 issue,也可以提交 PR,哪怕只是改个README
的拼写都欢迎。用起来有啥不顺的地方,也可以在项目讨论区留言,氛围还蛮开放的。
如果你对高维求解、降维、网格也感兴趣,可以看看这些相关资源:
如果你刚开始接触高维 PDE,建议先搞清楚网格怎么构建、怎么自适应,别急着改主框架。熟练了之后你会发现 ASGarD 其实还挺灵活,自己定制分辨率、边界条件都比较方便。