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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 并实现变现的全过程,其背后的逻辑…