在前面的博文中,已就大型CAE软件系统设计、技术选型、职责编排等内容进行了分析总结。数值仿真引擎(求解器)无疑是整个CAE仿真计算中最为关键的部分。因此,后续博文将对这一领域的相关内容做些研究,也希望大家批评指教。
按照现代化软件开发模型/方法,软件开发发首先要围绕需求、业务、技术等核心约束,结合已有的的实践经验,推导出满足关切点的设计原则,然后利用现有的、主流的技术给出技术原型。也就是说,此阶段工作主要关注于需求分析与系统设计,一般不涉及具体的技术实现细节。
具体到CAE领域内的数值计算引擎,可以尝试通过对部分知名的开源软件的研究,吸收它们在领域/行业认知、技术/非技术约束、技术选型、关键组件设计等方面的一些经验,进而指导我们的研发工作,这是编写本文的主要出发点。
注1:限于研究水平,分析难免不当,欢迎批评指正。
注2:文章内容会不定期更新。
壹、架构设计
1. 研究素材
本部分以笔记的形式记录求解器开发相关的若干研究素材。
工欲善其事,必先利其器。 居是邦也,事其大夫之贤者,友其士之仁者。--- 《论语·卫灵公》
| IO | ADIOS2 | |
| FEM | MFEM | |
| Kratos | ||
| Netgen/NGSolve | ||
| libMesh | ||
| Code-Aster | ||
| code_saturne | ||
| preCICE | ||
| Firedrake | ||
| FEniCS | ||
| MOOSE | ||
| DEAL.II | ||
| Elmer | ||
| Z88 | ||
| CalculiX | ||
| MYSTRAN | ||
| FreeFEM | ||
| OOFEM | ||
| FVM | OpenFOAM | |
| Mesh | METIS | |
| Scotch | ||
| Algebra | PETSc | |
| SLEPc | ||
| Intel oneAPI | ||
| BLAS | ||
| LAPACK | ||
| Eigen | ||
| SuperLU | ||
STRUMPACK | ||
| MUMPS | ||
| Trilinos | ||
| SuiteSparse | ||
| ScaLAPACK | ||
| HYPRE | ||
| Ceres Solver | ||
| SUNDIALS | ||
| Ginkgo | ||
HiOp | ||
| ARPACK | ||
| LOBPCG | ||
| AMG | ||
| Parallel | MPI | 共享内存并行:指令级,线程级别 分布式内存并行:进程级别 The mapping between Data layout and Process layout |
| Boost.Compute | ||
| ViennaCL | ||
| Kokkos | ||
| Toolchain | VS Code | Task Explorer Output Colorizer Git |