目錄
軟件介紹
基本依賴
一、源碼下載
二、安裝依賴庫
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/ThirdParty/openblas-0.3.10
export LAPACK_DIR=/home/user/software/ThirdParty/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進行結果后處理。
SPHinXsys-3D潰壩流(薄板)