数值工具zero_rk
zero_rk是LLNL实验室开发的常微分、偏微分方程求解数值工具Toolkit,典型的应用如求解chemistry reaction物理问题。
- 物理问题 0维常微分动力系统求解,例如化学反应,PSR/WSR等;1维篇微分动力系统,如预混、扩散火焰求解;
- 其语言主要是C,从历史版本Fortran改进到C的版本
- 支持 mpi并行,cuda GPU并行
- 可以Debug模式编译,利于gdb调试
- 底层是对大规模线性方程组 A x = b Ax=b Ax=b求解,支持稠密矩阵、稀疏的迭代算法
- 第三方库有 Sundilal, SuperLU等
GMRES,Newton迭代
LU直接求解
资源简介
资源托管在github
安装工具为 cmake
可能要去github下载底层依赖库,所以github无法连接到时需要proxy
cmake配置 debug编译
一个最简单的cmake配置及编译过程,注意cmake需要build目录
mkdir build
cd build // 工作目录
cmake ../ // 根据CMakeList.txt开始配置
make // 根据生产的Makefile 编译
make install //copy文件到目录,默认安装在build/inst_dir目录下
cmake可以指定选项,例如编译debug模式方便 cgdb调试,关闭MPI调试,这些通过加-D参数= value 来配置,称为option,具体option可以去CMakeList.txt中查看,然后对应进行配置。当然也有ccmake这种GUI帮助配置。
cmake ../ -DCMAKE_BUILD_TYPE=Debug -DENABLEMPI=OFF
第三方库debug编译
zero_rk使用sundials库,安装时默认为Release模式,这对于我们跟踪调试来说不利,可以通过指定为debug模式进行编译,方便gdb调试。
查看CMakeList.txt文件
if(WIN32)
50 set(ZERORK_EXTERNALS_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Build type for external dependencies built dur ing config.")
51 else()
52 set(ZERORK_EXTERNALS_BUILD_TYPE "Release" CACHE STRING "Build type for external dependencies built during config." )
此处看到非Win32平台会被默认配置为Release模式,可以为修改按照CMAKE_BUILD_TYPE来手动指定,如下
52 set(ZERORK_EXTERNALS_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Build type for external dependencies built during config." )
注意CMAKE_BUILD_TYPE 默认是Release的,所以在使用cmake命令时一定要添加选项 -DCMAKE_BUILD_TYPE=Debug
才能以debug模式配置,在make是才能按照debug编译。