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

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除