第 24 章 教程-溃坝

(第一部分)项目设置与处理

(第二部分)后处理


注意:  这是一个高级教程。


24.1. 第一部分:项目设置与处理

24.1.1. 目标

本教程的主要目的是介绍SPH实体参数,并在Rocky中处理纯流体仿真。

考虑的场景是溃坝

您将了解如何:

  • 配置流体材料

  • 收集流体碰撞数据

  • 创建流体入口

您将使用这些功能:

  • SPH

  • SPH Boundary Interaction Statistics

  • Eulerian Solution

  • Inlets and Outlets

24.1.2. 前提条件


重要:  与其他Rocky教程相比,本高级教程包含更少的细节、截图和步骤。

  • 高级教程旨在面向更熟悉Rocky用户界面(UI)并且已经很好地了解常见设置和后处理任务的用户。

  • 如果您尚未达到这种熟悉程度,建议您在开始本教程之前至少完成教程01-05。


24.1.3. 几何结构介绍

 

本教程中的壁面几何结构包括:

  • (1) 水库

  • (2) 闸门

  • (3) 柱子

在教程目录中,可以找到每个.stl文件。

24.1.4. 项目创建

要开始设置本教程,请执行以下操作:

  1. 此处下载dem_tut24_files.zip文件。

  2. dem_tut24_files.zip解压缩到您的工作目录。

  3. 打开Rocky2025 R1。

  4. 创建一个新项目。

  5. 将空项目保存到您选择的位置。


    提示:  如果您在这些表格中遇到了不熟悉的设置或过程,请参考Rocky用户手册和/或其他教程,以找到您需要的详细说明。


24.1.5. 初始设置

  1. 请使用下表中的信息开始设置Rocky项目。

    步骤数据实体编辑器位置参数或操作设置
    AStudy 01StudyStudy NameDam Break
    BModulesModulesSPH Boundary Interaction Statistics(已启用)
    CModules

    SPH Boundary Interaction Statistics

    SPH Boundary InteractionBoundary Properties | Nodal Forces(已启用)
    Boundary Curves | Force(已启用)
    DGeometriesImport Wallcolumn.stl、container.stlgate.stlImport Unit均设置为“m”


    注意:  通过启用步骤C中的复选框,模块将收集边界的力相互作用数据。

    • Boundary Properties字段为每个时间步长的每个边界三角形启用值,您可使用这些值执行操作。

    • Boundary Curves字段可为每个时间步长启用对应于参考边界的平均值。


    让导入的三个壁面透明,增强可视化。

24.1.6. 运动坐标系

在本教程中,将为gate创建一个Translation运动,以便放水填充由水库和闸门限定的空间。

 

要创建并分配gateMotion Frame,请按照下表操作。

步骤数据实体编辑器位置参数或操作设置
AMotion FramesCreate Motion Frame
BMotion Frames

Frame <01>

FrameNameGate Opening
Add Motion
Motions | Start Time0.5 [s]
… | Stop Time0.9 [s]
… | Velocity0, 1, 0 [m/s]
CGeometries

gate

WallMotion FrameGate Opening ⯆

要可视化gate运动,可以在Motion Preview窗口预览(从Motion Frames点击Preview按钮)。

 

24.1.7. 流体定义

Materials步骤中,我们将使用边界(默认边界)的默认值,而且我们会将Fluid Material 设置为表示Water

  1. Data面板中,在Materials下方选择Default Fluid,并在Data Editors面板中定义Name

     

24.1.8. SPH参数

SPH 步骤允许您定义SPH Solver、Kernel、Boundary Conditions和其它与流体相关的属性。


注意:  本教程案例使用默认SPH Solver WCSPH(Weakly Compressible SPH)设置。也可根据应用使用IISPH(Implicit Incompressible SPH)或DFSPH(无散度SPH),其可在各种场景中提高性能。


本教程将使用Fluid Dynamics、Wall Boundary Conditions、Positions Correction及每个高级字段的默认选项,而且我们将设置Kernel | Element Size

  1. Data面板中选择SPH实体,然后在Data EditorsModel Parameters选项卡上定义Sound SpeedElement Size

     


    提示:  有关Sound Speed的更多信息,请参阅用户手册。在本教程中,我们将默认值更改为一个合理的值,以便获得一致的结果并缩短仿真时间。


  2. 通过打开的3D View,在Node color部分的Coloring选项卡中为流体(SPH单元)设置首选颜色。

24.1.9. 入口定义

Inlets and Outlets步骤可帮助您为流体创建两种类型的入口:

  • Volumetric Inlet,对流体和颗粒的作用是一样的。

  • Fluid Inlet,在定义的Time以恒定速率通过相关几何结构注入流体。

在本教程中,我们将创建一个Volumetric Inlet,用Water填充container 的一部分。

  1. 按照下表中的步骤创建并定义入口。

    步骤数据实体编辑器位置参数或操作设置
    AInlets and OutletsCreate Volumetric Inlet
    BInlets and Outlets

    Volumetric Inlet <01>

    Volumetric InletNameWater Fill
    Volumetric Inlet | SPHMass800 [kg]
    … | RegionSeed Coordinates0.2, 0.15, 0.305 [m]
    Box Bounds | Center Coordinates0.2, 0.15, 0.305 [m]
    … | Dimensions0.4, 0.3, 0.61 [m]

3D View中,当选择Water Fill Inlet时,可以可视化要填充的区域。


注意:  此外,您还可以通过点击并拖动附加到每个面或立方体区域中心的滑块手柄来用鼠标设置区域的尺寸和中心(对于本教程而言,请保持您刚刚定义的值)。


 

24.1.10. 域设置

Domain Settings步骤中,我们将定义一个自定义边界框,其可超出壁面几何结构的限制。

这样做将允许Rocky计算可能跳到水库区域上方的单元(由于与柱子或水库的碰撞而飞溅)。

  • 在默认情况下,Rocky会根据Walls的边界自动创建一个Domain框。

  • 任何超出这些限制的单元都将从仿真中消除。

  • 这些默认设置都不适合溃坝仿真,因为水会溅过水库区域。

 

24.1.11. 域和求解器

  1. 使用下表中的信息来设置Domain和Solver。

    步骤数据实体编辑器位置参数或操作设置
    ADomain SettingsDomain SettingsUse Boundary Limits(已清除)
    Min Values0, 0, 0 [m]
    Max Values1.6, 0.75.0.61 [m]
    BSolverSolver | TimeSimulation Duration3.5 [s]
    Output Settings | Time Interval0.01 [s]
    Solver | GeneralSimulation TargetGPU ⯆

您可以在3D View中检查所生成的域。


注意:  在这种情况下,GPU是首选,但也可通过CPU运行仿真。


24.1.12. 设置确认

在打开的3D View中,您的Data面板和Workspace应该与下图相似。

 

24.1.13. 仿真总结

  1. Solver 实体点击Start。

会出现Simulation Summary,然后开始处理。

 

 

24.1.14. 结论

这就完成了本教程的第一部分,该部分将Rocky用来设置和处理Dam Break仿真。

在本教程中,可以:

  • 启用一个Module

  • 定义一个Fluid 和一个Fluid Inlet

  • 可视化SPH 参数。

  • 定义一个Domain

下一步是什么?

  • 如果您成功完成了本教程,那么您就可以进入第二部分,并对该项目进行后处理了。

24.2. 第二部分:后处理

24.2.1. 目标

本教程的目的是在处理完流体(SPH)仿真之后对其进行分析。我们将从第一部分结束的地方继续。

您将了解如何:

  • 创建流体表面

  • 在3D View窗口中可视化SPH Properties

  • 分析Eulerian Solution

您将使用这些功能:

  • Animation面板

  • Eulerian Solution

  • Time plot

  • User Process - Cube

  • User Process - Plane

24.2.2. 打开项目

  1. 如果您已完成本教程的第一部分,请确保Rocky项目是打开的。(第二部分将从第一部分终止的地方继续。)

  2. 如果您没有完成第一部分,请执行以下所有操作:

    1. 此处下载dem_tut24_files.zip文件。

    2. dem_tut24_files.zip解压缩到您的工作目录。

    3. 打开Rocky2025 R1。


      重要:  要使用所提供的Rocky项目文件,必须要有Rocky2025 R1或更高版本。如果您有较早版本的Rocky,请升级到最新版本或从头完成第一部分。


    4. 从Rocky程序中,点击Open Project按钮,找到dem_tut24_files文件夹,然后从tutorial_24_A_pre-processing文件夹中打开tutorial_24_pre-processing.rocky文件。

    5. 处理仿真。(从Simulation工具栏中,点击Start按钮。)

24.2.3. 为流体单元着色

我们先按速度给流体单元着色。

  1. Data面板中选择SPH,然后从Data Editors面板选择Properties选项卡。

  2. 选择Velocity,然后将其拖放到3D View窗口上。

 

24.2.4. 欧拉解视图

为了将SPH数据表示为连续流体,我们来使用Eulerian Solution继续执行后处理。

我们将首先按Velocity为单元着色,以便比较我们通过为SPH单元着色得到的结果。

  1. Data面板的SPH 字段选择Eulerian Solution,然后在Data Editors面板中选择Coloring选项卡。

  2. 展开Faces,然后在下拉列表中选择Velocity作为Property

  3. 使用eye图标使Eulerian Solution可见,并隐藏除Velocity色阶以外的所有内容。

 


注意:  这就只能查看来自域的最外部单元的数据。要查看特定区域的结果,您可以从Eulerian Solution实体创建一个cubecylinder或平面User Process,并按相同的过程执行。


24.2.5. 离散流体视图和连续流体视图

在本教程中,我们关注的是分析Watercolumn(水库中间)碰撞的区域。

我们将创建一个Plane,以便用Eulerian Solution(连续数据)可视化该区域。

我们还将创建一个Cube,使用SPH(离散)实体查看该区域的单元。

  1. 使用下表中的步骤创建两个User Processes。

    步骤位置参数或操作设置
    AEulerian Solution创建一个Plane User Process
    BUser Processes

    Plane <01>

    PlaneAngle90 [dega
    Plane Normal0, 1, 0 [ - ]
    ColoringEdges(已清除)
    Faces | PropertyVelocity ⯆
    CWindows (Panel)创建一个New 3D View
    DSPH创建一个Cube User Process
    EUser Processes

    Cube <01>

    CubeCenter0.8, 0.38, 0.305 [m]
    Magnitude1.6, 0.75, 0.02 [m]
    ColoringNodes(已启用)
    Nodes | PropertyVelocity ⯆

最后,我们来为SPH(离散)和Eulerian Solution(连续)数据之间的流体视图实现可视化并对其进行比较。

  1. Windows面板中,选择3D View <01> ,并使用眼图图标隐藏除Plane <01>columnVelocity 色阶之外的所有内容。

  2. 选择最近创建的3D View <02> ,并使用眼图图标隐藏除Cube <01>columnVelocity 色阶之外的所有内容。

  3. Data面板上,从Color Scales中选择Velocity,并在Data Editors面板中确保将Limits options定义为Automatic PER View

     

  4. 使用鼠标以一种可以对其进行比较的方式调整视图(如图所示)。


    提示:  如果您在工作区使用全屏,请使用位于右上方的按钮,这样可以调节窗口。


  5. 使用时间条上的slider 选择要分析的时间步长。

 

24.2.6. 水面-权重属性

我们还将使用Filter User Process来可视化流体表面。

为了表示这一点,我们将根据定义为Weight的属性的值来限制Eulerian Solution数据。

  • 插值网格每个节点的属性(速度和密度等)的值基于内核半径内部SPH单元值使用内核函数*的插值。

  • Weight属性给出影响每个网格节点的所有SPH单元的权重之和。

  • 该属性可用来定义流体表面,因为它与节点周围SPH单元的聚集度有关。

    • 如果该区域没有SPH单元,则Weight返回0。

    • 当该区域充满单元时,该函数往往会返回接近1的值。

      * 有关SPH内核函数的更多信息,请参阅SPH技术手册

为了更好地理解Weight 的计算方法,请查看下图。

 

  • A点:Weight大约为1

  • B点:Weight = 0

  • C点:0 < Weight < 1

    • 由于C周围的体积一半是空的,一半全部是单元,因此Weight往往会返回0.5。(在以下Rocky中参见复制方案中的Color Scale)

 

24.2.7. 水面

  1. 使用下表中的步骤创建一个基于权重的等值面。

    步骤数据实体编辑器位置参数或操作设置
    AEulerian Solution创建一个Filter User Process
    BUser Processes

    Filter <01>

    PropertyNameWater Surface
    PropertyWeight ⯆
    ModeCut ⯆
    Cut Value0.5 [ - ]
    ColoringTransparency(已启用)
    Faces | PropertyVelocity ⯆
    Edges(已清除)


提示:  确保已启用Faces复选框,其它选项已针对Property <01> | Coloring禁用


您可以在3D View中可视化所有时间步长的结果表面。  

24.2.8. 流体动画

我们来制作一段动画,让所创表面的流体行为可视化。


提示:  隐藏除GeometriesWater Surface外的一切。


  1. 按照下表中的步骤制作一段仿真视频。

    步骤参数或操作设置
    ATools (菜单)Enable Animation Panel
    BAnimationFPS100 [ - ]
    Time (0s)Add Key Frame(按钮)
    Frame | Number of Frames350 [ - ]
    Time (3.5s)Add Key Frame(按钮)

  2. 点击Play按钮预览,然后点击Export Animation按钮将影片保存至AVI文件。

24.2.9. 流体力

在溃坝仿真中,壁面几何结构流体力的大小是所关注的结果。

在本教程中,我们将分析column在所有时间步长中,在X(流体流动)方向产生的流体力。

此外,我们还将在column triangle中可视化最大值的流体力,以便查看其出现在壁面上的位置。

  1. 按照下表中的步骤创建两个力值的Time Plot。

    步骤数据实体编辑器位置参数或操作设置
    AGeometries

    column

    CurvesSPH : Force : XShow curve in new Plot
    PropertiesSPH : Force : Nodal : X根据Max在所选Time Plot中显示

生成的数列图如下所示。

 

24.2.10. 属性可视化

通过检查数列图值可以看到,柱子三角形中的最大力值出现在0.84s时段。


注意:  您的结果可能与本教程中显示的结果略有不同。


  1. 按照表格,在3D View中按节点力为column着色,以便可视化力出现的壁面区域。

    步骤数据实体编辑器位置参数或操作设置
    AGeometries

    coloring

    ColoringTransparency(已禁用)
    Faces(已启用)
    Faces | PropertySPH : Force : Nodal : X ⯆

  2. 在打开的3D View中,从Time Toolbar选择最大力发生的时间(本教程是0.84s)。

通过隐藏除columnSPH 外的所有内容,您可以在3D View中可视化最大流体力出现的点:Force : Nodal : X Color Scale。


注意:  最大的力出现在水第一次与柱子碰撞的时候,出现的位置在柱子的底部。您可以使用快捷键Shift+X在普通视图中查看该面。


 

24.2.11. 结论

这样就完成了本教程的第二部分

将Rocky用来分析溃坝。

在本教程中,可以:

  • 设置一次纯流体仿真

  • 在3D View窗口中可视化Properties

  • 使用后处理工具过滤数据并可视化水面

  • 制作一段SPH仿真动画

  • CurvesProperties绘制数列图