当前位置: 首页 > news >正文

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进行结果后处理。

http://www.dtcms.com/a/269601.html

相关文章:

  • Flutter基础(前端教程③-跳转)
  • Wend看源码-RAGFlow(上)
  • nvm npm nrm 使用教程
  • 台式电脑如何连wifi 快速连接方法
  • synchronized 的使用和特性
  • 算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • VBA经典应用69例应用8:取消预设任务
  • (三)C#使用yolo
  • 在教育领域中,如何通过VRM分片错序对视频进行加密?
  • git学习:首次创建仓库
  • ubuntu 运行脚本打开WIFI adb
  • YOLO在自动驾驶交通标志识别中的应用与优化【附代码】
  • Qt:图片切割
  • 代码详细注释:演示如何使用dup()系统调用复制文件描述符
  • Linux操作系统:再谈虚拟地址空间
  • const char* 、char*和char[]的区别
  • MySQL数据库访问(C/C++)
  • 恒创科技:香港站群服务器做seo站群优化效果如何
  • 2025年数据挖掘与计算机科学国际会议 (DMCS 2025)
  • 基于Docker Compose部署Traccar容器与主机MySQL的完整指南
  • 专题:2025数据资产AI价值化:安全、战略与应用报告|附400+份报告PDF、原数据表汇总下载
  • uniapp 监听物理返回按钮
  • 分水岭算法:图像分割的浸水原理
  • 视频号账号矩阵运营中定制开发开源 AI 智能名片 S2B2C 商城小程序的赋能研究
  • 【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
  • 【Rust base64库】Rust bas64编码解码详细解析与应用实战
  • ​​​​​​​营销费用管理,如何驱动快消企业营销投资战略升级
  • 萌新赛第(一)场
  • IEEE Fellowe助力 2025年物联网、数据科学与先进计算国际学术会议(IDSAC2025)
  • C++——string的了解和使用