MFEM 的 C++结构清晰,性能也蛮强的,拿来偏微分方程这种硬茬,真挺合适的。它是那种你可以一点点拼出自己解法的库,灵活性高,扩展性也不错。
把它集成到 MATLAB 里?说难不难,说简单也不太简单,关键还是看你对 MEX 熟不熟。基本流程就几个:编译 MFEM、写 MEX 桥接、数据传来传去,搞懂之后挺顺的。
MFEM 的并行能力也值得一提,支持 MPI,能跑大规模问题,速度杠杠的。适合做科研或者工程那种动辄几十万个单元的场景。
你要真想玩,还可以看看MFEM-bravais-dev
这个分支,专门搞Bravais 网格
那一块,应该是个定制版本,用于某些特殊结构的建模。
集成的时候注意几点:MATLAB 要装好 C++编译器(Mac 上 Clang,Windows 上 VS 也行);MEX 函数入口得写好,数据类型要对得上;还有编译 MFEM 时的CMake
配置别乱填,MATLAB 路径一定要对。
如果你之前写过 MEX,那上手应该挺快的;如果没写过,建议先从 C++函数 MEX 封装试试手感,再搞 MFEM,不然容易劝退。
想了解更多有限元的 MATLAB 实现,也可以看看下面这几个资源,都是不错的参考:
如果你手上有 PDE 模型,性能瓶颈,又熟 MATLAB,那集成一下 MFEM,真心值得试试。