在前面的博文中,已就大型CAE软件系统设计、技术选型、职责编排等内容进行了分析总结。数值仿真引擎(求解器)无疑是整个CAE仿真计算中最为关键的部分。因此,后续博文将对这一领域的相关内容做些研究,也希望大家批评指教。按照现代化软件开发模型/方法,软件开发发首先要围绕需求、业务、技术等核心约束,结合已有的的实践经验,推导出满足关切点的设计原则,然后利用现有的、主流的技术给出技术原型。也就是说,此阶段工作主要关注于需求分析与系统设计,一般不涉及具体的技术实现细节。具体到CAE领域内的数值计算引擎,可以尝试通过对部分知名的开源软件的研究,吸收它们在领域/行业认知、技术/非技术约束、技术选型、关键组件设计等方面的一些经验,进而指导我们的研发工作,这是编写本文的主要出发点。注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。壹、架构设计1. 研究素材本部分以笔记的形式记录求解器开发相关的若干研究素材。工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。---《论语·卫灵公》IOADIOS2FEMMFEMKratosNetgen/NGSolvelibMeshCode-Astercode_saturnepreCICEFiredrakeFEniCSMOOSEDEAL.IIElmerZ88CalculiXMYSTRANFreeFEMOOFEMFVMOpenFOAMMeshMETISScotchAlgebraPETScSLEPcIntel oneAPIBLASLAPACKEigenSuperLUSTRUMPACKMUMPSTrilinosSuiteSparseScaLAPACKHYPRECeres SolverSUNDIALSGinkgoHiOpARPACKLOBPCGAMGParallelMPI共享内存并行:指令级,线程级别分布式内存并行:进程级别The mapping between Data layout and Process layoutBoost.ComputeViennaCLKokkosToolchainVS CodeTask ExplorerOutput ColorizerGit