DualSPHysics源码结构解读,新手入门

DualSPHysics代码下载,进入官网:https://dual.sphysics.org/
在这里插入图片描述
可以看到下载的地方有①Full package ②Source code,官方的解读是:如果你只是想运行案例的话就下载Full package,如果想要自己进行修改构建的话,下载Source code
在这里插入图片描述
来看一下2个里包含的文件区别:可以看到①Full package包含的更全面,②Source code里有的①里都有。而且①里有更多的examples,示例里有仿真运行视频,可以更好地帮助新手理解DualSPHysics都可以实现哪些功能。
在这里插入图片描述
所以本人选择下载Full package。
进入之后填写个人信息,然后选择最新版本进行下载。
在这里插入图片描述
在这里插入图片描述
下载解压完就可以看到整个代码结构,接下来从上往下进行讲解:
在这里插入图片描述

  • bin:可执行文件(自己编译或者自己修改部分源码重新生成新的代码程序都在此文件夹下)
    在这里插入图片描述

  • doc:文件,很有用
    guides里重点要看的有:
    DualSPHysics_v5.0_GUIDE(在Wiki里,很齐全,包括:可以仿真的类型,CPU/GPU的应用,运行DualSPHysics,编译DualSPHysics,案例,修改DualSPHysics适应自己的应用,DualSPHysics的新功能,DualSPHysics未来的发展等,相关参考等),
    还有XML_GUIDE_v5.0.pdf(xml的配置文件),
    可以了解的有:
    ExampleCodeModification_Lisbon2018.pdf是 O. García-Feal 在 2018 年第四届 DualSPHysics 用户研讨会上发表的演示文稿“DualSPHysics 上的开发:代码修改和扩展示例”的副本,展示了如何添加新功能。
    PostprocessingCalculations_v5.0.pdf:解释如何计算数值大小。
    ExternalModelsConversion_GUIDE.pdf:介绍如何使用开源代码将三维模型的任何外部几何图形的文件格式转换为VTK、PLY或STL。
    help文件夹里包含了各种情况代码执行的参数示例。
    在这里插入图片描述

  • examples:示例,里边包含了xml配置,可执行文件(.bat后缀文件)以及执行出的视频。
    具体示例代码分析:例如,打开一个可执行文件的源码
    在这里插入图片描述
    具体代码解析如下:
    在这里插入图片描述
    在这里插入图片描述
    双击可执行文件进行运行,然后在同级目录下会产生一个_out的输出文件,里边就是有生成的仿真粒子文件,基本结构如图。
    在这里插入图片描述

  • src:源代码(包括src_extra和src_mphase都是源代码,只不过是不同的功能分支),如果需要自己修改代码,则在此处进行。src里包含了lib/source/VS文件夹。
    lib包含编译所需的库(.a和.lib)。
    source包含DualSPHysics v5.0的源文件(.cpp、.cu和.h)。 Linux的makefile和CMAKE.txt也包含在这个文件夹中。
    VS包含Visual Studio(Community 2015)for Windows项目。

  • CHANGES.txt:版本变更历史,里边罗列了每一版的改变。

  • Files_DualSPHysics_v5.0.pdf:文件结构

DualSPHysics整个执行过程可以简单理解为前处理、计算、后处理:

  1. 初始化参数定义:用户编写Def文件(.xml,利用xml语言定义模拟的几何、本构参数等)。
  2. GenCase根据Def文件生成DualSPHysics运行所需结构文件(前处理)。GenCase可以创建粒子的初始状态(位置、速度和密度),并为模拟定义不同的SPH参数。
  3. 主程序DualSPHysics 读取GenCase 生成的文件,执行计算
  4. 输出特定结果如VTK,CSV格式(后处理)。
    官网提供的工作流程图如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/348111.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】72变的双端队列

双端队列 前言一、双端队列1.1 双端队列的定义1.2 输入受限的双端队列1.3 输出受限的双端队列1.5 输入输出都受限的双端队列1.6 小结 二、双端队列的使用2.1 双端队列的出队序列——暴力求解2.1.1 栈的出栈序列2.1.2 输入受限的双端队列2.1.3 输出受限的双端队列2.1.4 输入输出…

Qt基础-项目中添加文件夹及子文件

本文讲解Qt项目中添加文件夹 1、项目中新建文件夹 打开工程目录,在目录下建立文件夹,如建立文件Dialogs 2、移入文件 将需要归类的头文件.h和源文件.cpp放入该文件夹下; 3、4、项目-右键-添加现有文件 查看Pro文件 发生了改变 4、也可以采…

Spring 声明式事务讲解,和 @Transactional注解的用法

目录 一、Spring框架介绍 二、什么是声明式事务 三、如何解决并发性事务问题 四、Transactional注解的用法 一、Spring框架介绍 Spring框架是一个开源的Java应用程序开发框架,旨在简化企业级Java应用程序的开发。它提供了一种轻量级的、全面的编程和配置模型&a…

【第六课课后作业】大模型评测

大模型评测 大模型评测安装环境安装数据准备查看支持的数据集和模型 启动测评评测结果 大模型评测 安装 环境安装 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/ope…

一、Lamdba 表达式与函数式接口(最终版)

一、Lamdba 表达式与函数式接口 1.1 Lamdba 表达式与函数式接口 1.1.1 Lambda 表达式概述 Lambda 表达式是 Java 8 引入的一个新特性Lambda 表达式可以被视为匿名函数允许在需要函数的地方以更简洁的方法定义功能Lambda 表达式可以完成简洁的函数定义Stream API 中大量使用了…

基于静态顺序表实现通讯录

目录 一、设计框架 1、功能要求​ 2、菜单函数的实现 二、头文件实现​ Contact.h SeqList.h 三、Test.h 四、通讯录的初始化和销毁 五、增加通讯录 六、在通讯录中查找姓名下标 七、删除通讯录 八、显示通讯录 九、查找通讯录 一、设计框架 test.c:通…

【学网攻】 第(5)节 -- Cisco VTP的使用

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan 前言 网络已经成为了我们生活中不可或缺的一部分,它连接了世界各地的人们,让信息和资…

重磅!证监会回应股市波动!2万亿元救市计划正在商榷!将提振比特币?

最近这段时间,国内资本市场震荡走弱、波动加大,一些投资者深感忧虑。多家机构表示,市场波动已引起高层的重视。 继1月23日,证监会党委扩大会议从宏观层面提出资本市场建设发力重点后,1月24日证监会副主席王建军的一席采…

【前端基础--4】

定位属性 position 可以将元素定位到你想要放到位置,使用方位值来进行移动(top,left,right,bottom)。 1.相对定位 position: relative; top: 20px; left: 20px; 以自身为定点进行移动,不会脱离文档流。 不会影响元素本身的性质;块级…

YOLOv5改进系列(28)——添加DSConv注意力卷积(ICCV 2023|用于管状结构分割的动态蛇形卷积)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

【OpenCV学习笔记22】- OpenCV中的轮廓 - 开始了解轮廓

这是对于 OpenCV 官方文档中 图像处理 的学习笔记。学习笔记中会记录官方给出的例子,也会给出自己根据官方的例子完成的更改代码,同样彩蛋的实现也会结合多个知识点一起实现一些小功能,来帮助我们对学会的知识点进行结合应用。 如果有喜欢我笔…

解密:消息中间件的选择与使用:打造高效通信枢纽

目录 第一章:消息中间件介绍 1.1 什么是消息中间件 1.2 消息中间件的作用 1.3 消息中间件的分类 第二章:消息中间件的选择标准 2.1 性能 2.2 可靠性 2.3 可扩展性 2.4 易用性 2.5 社区支持 2.6 成本 第三章:常见的消息中间件对比…

Java 接口与内部类

目录 1、什么是接口? 1、接口中成员变量的访问特点 2、接口中成员方法的访问特点 3、接口是没有构造方法的 4、猫和狗接口代码演示 5、接口和类的关系 6、接口练习案例 2、什么是内部类 1、概念 2、成员内部类 3、静态内部类 4、局部内部类 5、匿名内部…

Linux文本编辑器-vi/vim

一.vi/vim编辑器介绍 vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器 同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。 vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而…

Linux——服务器管理建议

1、学习Linux的注意事项 1.1、Linux严格区分大小写 Linux是严格区分大小写的,这一点和Windows不一样,所以操作时要注意区分大小写的不同,包括文件名和目录名、命令、命令选项、配置文件设置选项等。 1.2、Linux中所有内容以文件形式保存 …

Qt6入门教程 11:父子对象关系

在上一篇中的纯手写部分,不管是创建菜单、工具栏还是状态栏,我们new完之后都未显式的调用delete进行销毁,这样难道不会有内存泄漏么? QMenuBar *menuBar new QMenuBar(this); QToolBar *toolBar new QToolBar(this); QStatusBa…

OpenHarmony从TypeScript到ArkTS的适配规则

本文通过提供简洁的约束,将标准的TypeScript代码重构为ArkTS代码。 尽管ArkTS是基于TypeScript设计的,但出于性能考虑,一些TypeScript的特性被限制了。因此,在ArkTS中,所有的TypeScript特性被分成三类。 完全支持的特…

Linux sudo与/etc/sudoers

sudo介绍 sudo命令可以让普通用户在执行需要超级用户权限的命令时,临时提升为超级用户。例如,普通用户可以使用sudo执行系统管理任务,如安装软件、修改系统配置等。访问控制:sudo命令通过sudoers文件中的配置,可以对用…

什么是Spring

文章目录 什么是Spring什么是 IoC Spring的IoCDI的概念 什么是Spring Spring 是一个包含了众多工具方法的 IoC容器。 什么是 IoC Inversion of Control — 控制反转 在传统的开发中,假设A类依赖于B类,那么创建A对象实例就需要先new一个B类对象&#x…

【操作系统】实验八 proc文件系统

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…