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

2024-01-26 04:52

本文主要是介绍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格式(后处理)。
    官网提供的工作流程图如下:
    在这里插入图片描述

这篇关于DualSPHysics源码结构解读,新手入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645683

相关文章

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]