Shu

记录表明我曾经活着

如何在Linux/mac上安装SUNDIALS/CVODE

How to Install Sundials 5.x or Cvode on Mac Linux System

2019-11-19


SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic Equation Solvers

SUNDIALS (https://computing.llnl.gov/projects/sundials) 是一个很强大的数学库,用于求解工程和科学上的数学问题。CVODE是其中重要工具之一,用于求解常微分方程(Ordinary Differential Equation, ODE),由C语言写成.

SHUD模型(Simulator of Hydrologic Unstructured Domains)使用有限体积法求解流域控制方程,即理查德方程(Richard Equation)和圣维南方程(Saint Venant Equation)。

当前最新的SUNDIALS是其v5.x版本,2019年11月发布.

本文介绍如何在Mac/Linux上安装SUNDIALS/CVODE。

本安装过程以及在 Mac 10.13 and **Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)**上进行测试。

  1. 下载 SUNDIALS,地址:https://computing.llnl.gov/projects/sundials/sundials-software. 或者也可以从github上获取最新源代码:
git clone https://github.com/LLNL/sundials.git

此刻,你应该已经在你的目录中有sundials的源码了,请进入该目录。假设你已经进入了 sundials所在的目录.

  1. 创建安装目录

安装目录名称为:installSundials

执行以下命令:

mkdir installSundials
cd installSundials

rm -rf builddir instdir srcdir

mkdir builddir
mkdir instdir
mkdir srcdir

cd builddir/
  1. 利用CCMAKE配置SUNDIALS安装参数.

有两种方式配置其安装参数,一种是图像界面(GUI),另一种是直接命令行参数赋值。

ccmake ../../sundials/

你将看到类似的界面: CCMAKE Screenshot

移动光标到此行CMAKE_INSTALL_PREFIX,该行是SUNDIALS的安装路径。键入回车,即可开始编辑此行内容。修改该行内容为:/usr/local/sundials

注意:此处/usr/local/sundials即为SUNDIALS的安装目录,未来编译SHUD/PIHM时,需要配置正确的SUNDIALS安装路径,方能成功编译SHUD/PIHM。

另外,你也可以改变SUNDIALS例子代码的安装路径。 EXAMPLES_INSTALL_PATH.

接下来,你需要选择打算安装的求解器,可选项包括 ARKODE, CVODE, CVODES, IDA, IDAS, KINSOL等. 利用回车可以打开(enable)或者关闭(disable)其安装. 因为SHUD/PIHM仅仅需要CVODE求解器,因此,我们仅仅打开了BUILD_CVODE

如果你的电脑支持OpenMP并且已经安装了OpenMP,你也可以将OPENMP_ENABLE打开至ON状态.

编辑完成后,按C开始配置文件。再按一次C。当下部出现g时,按下g则开始生产配置文件。

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sundials \
 -DEXAMPLES_INSTALL_PATH=../example \
 -DBUILD_CVODE=ON \
 -DBUILD_CVODES=OFF \
 -DBUILD_ARKODE=OFF \
 -DBUILD_CVODES=OFF \
 -DBUILD_IDA=OFF \
 -DBUILD_IDAS=OFF \
 -DBUILD_KINSOL=OFF \
 -DOPENMP_ENABLE=ON \
 ../../sundials/

以上命令也将SUNDIALS安装在了路径*/usr/local/sundials*, 例子程序安装在了*../example*;且只安装了*CVODE*求解器,并开启了OpenMP支持。

如果你没有OpenMP或者打开OpenMP后报错,请使用以下命令:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sundials \
 -DEXAMPLES_INSTALL_PATH=../example \
 -DBUILD_CVODE=ON \
 -DBUILD_CVODES=OFF \
 -DBUILD_ARKODE=OFF \
 -DBUILD_CVODES=OFF \
 -DBUILD_IDA=OFF \
 -DBUILD_IDAS=OFF \
 -DBUILD_KINSOL=OFF \
 -DOPENMP_ENABLE=OFF \
 ../../sundials/
  1. 编译和安装

超简单,执行以下命令:

make
make install

有时候,你的系统要求你具有更高的访问权限,则可以使用一下命令:

make
sudo make install

如果没有报错,那么你的SUNDIALS/CVODE已经安装成功。

  1. 编译SUNDIALS例子

进入到例子程序目录: ../example

![example](example.png)

编译所有例子程序:

 cd ../example/cvode/serial/
 ls
 make

编译成功后,你看的文件类似于下图:

outfile

  1. 测试例子程序

    ./cvAdvDiff_bnd
    
    ./cvKrylovDemo_ls
    

TEst

至此,你已经成功安装了SUNDIALS/CVODE到你的计算平台。接下来,你可以开始使用了。

请保持耐心,因为接下来的挑战更大:-)。

Be patient, you will meet more challenges.