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/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潰壩流(薄板)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88159.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux中的靜態庫和動態庫

首先 我們要明白什么是庫? 庫(Library)是一組預編譯的代碼,提供特定的功能,可以被多個程序共享調用,避免重復編寫代碼。在鏈接步驟中,鏈接器將從庫文件取得所需的代碼,復制到生成的可執行文件中…

Vue3-組件化-Vue核心思想之一

一.組件及組件化1.組件化的作用由于之前的代碼全寫在一個App.vue這個文件里面,會到導致一個文件代碼過于多而且不易復用,所以有組件化的思想。2.組件的使用①創建創建一個.vue文件,使用setup的簡寫方式會自動導出.vue文件②導入import 組件對…

OS學習筆記

《幾個基本知識點》 一、2的冪 1024210 51229 25628 12827 6426 3225 1624 823 422 221 K210 G220 M230 T240 P250 E260 Z270 Y280 R290 Q2100 二、常用的ASCII碼 ‘1’0x31 ‘A’0x41 ‘a’0x61 空格0x20 換行0x0A 回車0x0D 三、存儲器層次中的典型速度 CPU/寄存器&#xff1a…

嵌入式學習筆記-MCU階段-DAY01

恭喜大家完成了C語言的學習,現在咱們來到咱們的硬件MCU階段,咱們這里的工程用的是keil,環境搭建不再贅述,希望大家在這一階段仍然學的愉快 1.資料部分 用的最多的就是STM32f103的手冊,搭配STM32F103ZET6的開發板 2.概…

three案例 Three.js波紋效果演示

波紋效果,在智慧城市可視化開發中經常用到,這里分享一個比較好玩的案例 以下是詳細的步驟: 初始化部分:設置 Three.js 環境,包括場景、相機、渲染器和控制器 幾何體和紋理:創建平面幾何體并加載波紋紋理 著…

Flutter-詳解布局

上一章我們詳細的學習了 Flutter 中的Widget,這一章我們將要學習 Flutter 的布局, 在上一章我們了解到了:Everything is a widget,在 Flutter 中幾乎所有的對象都是一個 Widget ,當然也包括布局,Flutter 的…

EPLAN 電氣制圖:建立自己的部件庫,添加部件-加SQL Server安裝教程(三)上

在智能電氣設計領域,EPLAN 作為主流的設計軟件,其部件庫的完善程度直接影響項目設計的效率與質量。本文將從實際操作出發,詳細講解如何在 EPLAN 中建立專屬部件庫并添加部件,為電氣設計奠定堅實基礎。一、部件庫:電氣設…

靜態路由進階實戰全解

一、項目背景二、項目拓撲圖三、設備命名與IP地址規劃設備名接口編號IP地址規劃R1GE0/0192.168.1.1/24GE0/1172.16.1.1/24R2GE0/0192.168.1.2/24GE0/1192.168.2.2/24R3GE0/0192.168.2.3/24GE0/1192.168.3.3/24GE0/2192.168.4.3/24R4GE0/0192.168.3.4/24GE0/1192.168.4.4/24GE0/…

stm32hal模塊驅動(3)ssd1305 oled驅動

SD1305 OLED 驅動芯片詳細介紹SSD1305 是 Solomon Systech 公司生產的一款 OLED 顯示控制器/驅動器,專為 128x64 或 128x32 點陣的 OLED 顯示屏設計。下面我將從多個方面詳細介紹這款驅動芯片。一、SSD1305 基本特性顯示分辨率:最大支持 128 segments 6…

安全為先:如何在 Python 中安全處理數據庫連接與敏感信息

安全為先:如何在 Python 中安全處理數據庫連接與敏感信息 引言:Python 與安全的數據庫交互 自 1991 年誕生以來,Python 憑借其簡潔優雅的語法和強大的生態系統,成為 Web 開發、數據科學、人工智能和數據庫交互的首選語言。作為“膠水語言”,Python 不僅讓開發者能夠快速…

服務器經常出現藍屏是什么原因導致的?如何排查和修復?

服務器出現藍屏(BSOD,Blue Screen of Death)是一個嚴重的問題,通常表明系統內核或硬件發生了不可恢復的錯誤。藍屏不僅會導致服務器宕機,還可能對業務運行造成重大影響。要有效解決藍屏問題,需要先找到根本…

為什么elementui的<el-table-column label=“名稱“ prop=“name“ label不用寫成:label

在 Vue.js 中,label 和 prop 是 el-table-column 組件的普通屬性,而不是動態綁定的表達式。因此,不需要使用 : 來綁定它們。 1. Vue.js 中的屬性綁定 在 Vue.js 中,屬性綁定有兩種方式: 靜態屬性綁定:直接寫…

分布式光纖傳感:為儲能安全保駕護航

儲能系統是指一種能夠將電能、化學能、動能等形式的能量進行轉化、儲存和釋放的裝置,廣泛應用于可再生能源發電、智能電網、電動車等領域。儲能行業這幾年得到了穩步發展,受到政府機構、行業協會、大型能源企業、電網公司、系統集成商、檢測認證機構等業…

從歷史航拍圖像中去除陰影

在光學遙感中,陰影是影響土地覆蓋制圖精度和分辨率的一個因素,無論是歷史影像(黑白影像)還是近期影像(全彩影像)。陰影的產生取決于太陽光照(太陽方位角和天頂角)、相機視點&#xf…

UE material advance 學習筆記

如何體現輪胎速度的快速感:就是增加一個radial blur,會讓視覺效果感覺輪胎已經轉冒煙了,但是上面兩個輪胎的轉速其實是相同的這種磨砂的感覺,可以用上ditherAA來實現只看法線這一塊,ditherAA就是讓他的表面顏色有大量的…

Vue--2、Vue2 項目配置與組件化開發

一、Vue2 項目環境搭建1. 環境準備安裝 Node.js:推薦使用 nvm 管理多版本 Node# 安裝Node 16.20.2 nvm install 16.20.2 # 切換至指定版本 nvm use 16.20.2 # 驗證安裝 node -v && npm -v安裝 Vue CLI 腳手架:# 國內鏡像源安裝 npm install --re…

虛幻基礎:函數的返回節點

能幫到你的話,就給個贊吧 😘 文章目錄函數的返回節點:返回執行后的值返回執行后的值若不執行第一次 返回參數的默認值第二次 返回上一次執行值示例函數的返回節點:返回執行后的值 返回執行后的值 若不執行 第一次 返回參數的默…

FFmpeg 升級指北

近期我參與了部門底層庫依賴的 FFmpeg 從 3.4 升級至 7.0.2 的工作,在此分享一些經驗和遇到的 API 變動。 將 FFmpeg 升級到高版本后,編譯過程中遇到大量報錯是常態。這些錯誤通常源于 API 接口變更或結構體字段調整。此時不必驚慌,核心解決…

RISCV Linux 虛擬內存精講系列三 -- setup_vm()

在 Linux 使用虛擬地址前,需要先配置頁表,這就是 setup_vm() 的作用。然而,Linux 的頁表配置,并不是一次過完成的,分了兩個階段,如下:在 setup_vm() 中,主要初始化了:1. …

創客匠人:解析創始人 IP 打造的底層邏輯與知識變現路徑

在數字經濟時代,創始人 IP 的價值被不斷放大,而知識變現作為 IP 商業閉環的核心環節,正成為無數創業者探索的方向。創客匠人深耕知識付費領域多年,見證了大量創始人從 0 到 1 打造 IP 并實現變現的全過程,其背后的邏輯…