Linux下SPHinXsys源码编译安装及使用
目录
软件介绍
基本依赖
一、源码下载
二、安装依赖库
1、BLAS
2、LAPACK
3、oneTBB
4、googletest
5、Boost
6、Simbody
7、pybind11
8、Eigen3
三、解压缩
四、编译安装
软件介绍
SPHinXsys是胡湘渝博士团队采用C/C++开发的一个开源无网格、多分辨率、多物理场、光滑粒子动力学SPH库。软件基于平滑粒子流体动力学(SPH),一种使用粒子离散化和AI感知的无网格计算方法对耦合工业动态系统进行建模和优化,包括流体、固体、多体动力学、化学反应、扩散等优化算法。所有公式都基于统一的SPH框架,因此所有的物理过程都实现了强耦合,且可以同时进行模拟和优化过程。
基本依赖
1、编译工具
① GNU(gcc 11.2.0)
② Cmake、Make编译工具
2、第三方库
① BLAS(版本:OpenBLAS 0.3.10)
② Lapack(版本:3.8.0)
③ oneTBB(版本:2022.1.0)
④ googletest(版本:1.17.0)
⑤ Boost(版本:1.88.0)
⑥ Simbody(版本:3.7.0)
⑦ pybind11(版本:2.13.6)
⑧ Eigen3(版本:3.4.0)
一、源码下载
软件完全开源,最新版本为V1.2,可以通过下面的链接进行源码访问。
GitHub - Xiangyu-Hu/SPHinXsys: SPHinXsys provides C++ APIs for engineering simulation and optimization. It aims at complex systems driven by fluid, structure, multi-body dynamics and beyond. The multi-physics library is based on a unique and unified computational framework by which strong coupling has been achieved for all involved physics.https://github.com/Xiangyu-Hu/SPHinXsys 相关资料及软件进展可访问官网↓
SPHinXsys: an open-source SPH multi-physics libraryhttps://www.sphinxsys.org/ ①可在终端通过git获取源码:
git clone https://github.com/Xiangyu-Hu/SPHinXsys SPHinXsys
②也可在github网站获取源码:
二、安装依赖库
为方便第三方库管理和链接,可以单独创建一个文件夹ThirdParty用于安装依赖库,例如其路径为:/home/user/software/ThirdParty
1、BLAS
下载openBLAS源码↓
https://github.com/xianyi/OpenBLAShttps://github.com/xianyi/OpenBLAS
安装流程可参考:
linux平台OpenBLAS编译和安装简介_linux openblas-CSDN博客https://blog.csdn.net/xzzppp/article/details/69633789 安装完毕,如下所示。
2、LAPACK
下载LAPACK源码↓
http://www.netlib.org/lapack/lapack-3.8.0.tar.gzhttp://www.netlib.org/lapack/lapack-3.8.0.tar.gz
按照下面顺序依次执行命令:
wget http://www.netlib.org/lapack/lapack-3.8.0.tar.gztar -zxvf lapack-3.8.0.tar.gzcd lapack-3.8.0mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX=/home/user/software/ThirdParty/lapack-3.8.0 ..makemake install
安装完毕,如下所示。
3、oneTBB
下载oneTBB源码↓
https://github.com/uxlfoundation/oneTBBhttps://github.com/uxlfoundation/oneTBB
按照下面顺序依次执行命令:
wget https://github.com/uxlfoundation/oneTBB/archive/refs/tags/v2022.1.0.tar.gztar -zxvf v2022.1.0.tar.gzcd v2022.1.0cmake --build . --config Releasecmake --install /home/user/software/ThirdParty/oneTBB-2022.1.0
安装完成,如下所示。
4、googletest
下载googletest源码↓
Release 1.17.0 · google/googletest · GitHubhttps://github.com/google/googletest/releases/tag/v1.17.0
按照下面顺序依次执行命令: (注意,这里需要再cmake的时候添加-DCMAKE_POSITION_INDEPENDENT_CODE=ON开启-fPIC,不然的话,在编译SPHinXsys时会报.rodata错)
git clone https://github.com/google/googletest?tab=readme-ov-file gooletest-1.17.0cd gooletest-1.17.0mkdir buildcd buildcmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=/home/user/software/ThirdParty/googletest-1.17.0 ..makemake install
安装完成,如下所示。
5、Boost
下载Boost源码↓
Boost 1.88.0https://www.boost.org/releases/1.88.0/
按照下面顺序依次执行命令:
tar -zxvf boost_1_88_0.tar.gzcd boost_1_88_0./bootstrap.sh --prefix=/home/user/software/ThirdParty/Boost-1.88.0./b2 install
安装完成,如下所示。
6、Simbody
这里需要下载3.7版本的Simbody,3.8版本不兼容。
下载Simbody源码↓
https://github.com/simbody/simbody/archive/refs/tags/Simbody-3.7.tar.gzhttps://github.com/simbody/simbody/archive/refs/tags/Simbody-3.7.tar.gz
按照下面顺序依次执行命令:
tar -zxvf simbody-Simbody-3.7.tar.gzcd simbody-Simbody-3.7mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX=/home/user/software/ThirdParty/Simbody-3.7 -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON ..makemake install
安装完成,如下所示。
7、pybind11
下载pybind11源码↓
GitHub - pybind/pybind11: Seamless operability between C++11 and Pythonhttps://github.com/pybind/pybind11
按照下面顺序依次执行命令:
git clone https://github.com/pybind/pybind11 pybind11cd pybind11mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX=/home/user/software/ThirdParty/pybind11-2.13.6 ..makemake install
安装完成,如下所示。
8、Eigen3
下载Eigen3源码↓
Eigenhttps://eigen.tuxfamily.org/index.php?title=Main_Page
按照下面顺序依次执行命令:
tar -zxvf eigen-3.4.0.tar.gzcd eigen-3.4.0mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX=/home/user/software/ThirdParty/eigen-3.4.0 ..make install
安装完成,如下所示。
三、解压缩
如果是通过第二种方式下载的软件压缩包,可以通过下面命令解压缩:
unzip SPHinXsys-master.zip
四、编译安装
1、配置环境变量
安装好所有的依赖库之后,需要创建一个环境变量文件,方便后续编译。这里我们创建一个env.sh文件,主要用于配置所有依赖库的安装路径。内容如下:
#!/bin/bashexport TBB_DIR=/home/user/software/ThirdParty/oneTBB-2022.1.0/usr/local
export GTest_DIR=/home/user/software/ThirdParty/googletest-1.17.0
export Boost_DIR=/home/user/software/ThirdParty/boost-1.88.0
export Simbody_DIR=/home/user/software/ThirdParty/simbody-3.7.0
export pybind11_DIR=/home/user/software/ThirdParty/pybind11-2.13.6
export Eigen3_DIR=/home/user/software/ThirdParty/eigen-3.4.0
export BLAS_DIR=/home/user/software/openblas-0.3.10
export LAPACK_DIR=/home/user/software/lapack-3.8.0
写好env.sh之后,使用source命令进行配置。
source env.sh
2、编译
使用下面命令进行build:
cd sphinxsyscmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RELEASE -S. -B ./build
3、安装
cmake --build ./build
4、测试
安装完成后,会在build文件夹下生成tests文件夹,里面包含已经编译好的官方的算例。如下所示:
我们使用3d溃坝流进行测试,按照下面的顺序执行:
cd testscd 3d_examplescd test_3d_dambreak_elastic_plate_shellcd bin./test_3d_dambreak_elastic_plate_shell
5、后处理
计算完成后,会在当前路径下生成三个文件夹:output、reload、restart。其中output用于存储计算结果文件。
使用Paraview进行结果后处理。