用户自定义 VOF 波建模

Simcenter STAR-CCM+ 中用户自定义波模型支持使用外部创建的任何类型的波执行自由表面模拟。通常,这些外部波是使用第三方势波运动求解器生成的。

通过使用 CGNS 格式的文件(此过程对应于单向基于文件的耦合),将数据从第三方波求解器导入 Simcenter STAR-CCM+。因此,在开始之前,生成一个 CGNS 文件,其中包含要导入的波的速度和表面高度数据。速度可以作为 2D 或 3D 数据提供。当波在横向不发生变化时,2D 速度数据(在横截面上)就已足够。在水平平面上定义自由表面高度数据,例如,未扰动的自由水面。
要设置具有用户自定义波的自由表面模拟,在每个时间步中执行以下步骤:
  • 将自由表面高度和速度的外部 CGNS 数据导入 Simcenter STAR-CCM+
  • 使用表面到体积数据映射器(横向不变波)或体积到体积数据映射器(横向变化波),将此数据映射至全计算域。
  • 运行模拟时,计算每个时间步的 VOF 波场。
对用户自定义 VOF 波建模:
  1. 导入 CGNS 数据。
    1. 创建一个外部物理连续体用于 CGNS 文件导入
      如果导入 2D 数据,则使用曲面三维模型。如果导入 3D 数据,则使用三维模型。有关更多信息,请参见为 CGNS 文件交换准备模拟
    2. 展开外部链接 > [链接 1] 节点,然后设置下列属性:
      节点 属性 设置
      条件
      传输方向 选项 导入
      外部连续体 连续体 设为外部物理连续体。
      文件 目录 指定 CGNS 文件所在文件夹。
      基本文件名 设为包含速度和自由表面高度数据的外部 CGNS 文件。
    3. 右键单击外部链接 > [链接 1] 节点,然后选择导入网格
    4. 重复步骤 3,但选择导入场
将 CGNS 数据导入 Simcenter STAR-CCM+ 后,将其映射到整个计算域。由于速度和高度可以作为 2D 或 3D 数据提供,因此需要使用适当的数据映射器。对于 2D 数据,使用表面到体积数据映射器;对于 3D 数据,使用体积到体积数据映射器。创建两个数据映射器:一个用于速度,另一个用于表面高度数据。
  1. 定义速度和自由表面高度的数据映射器:
    1. 为速度和自由表面高度数据创建表面或体积数据映射器。请参见从表面、体积或梁源映射数据
    2. 对于每个表面到体积数据映射器,右键单击工具 > 数据映射器 > [表面数据映射器] > 目标指定节点,然后选择新建组 > 体积
    3. 展开工具 > 数据映射器 > [高度数据映射器][速度数据映射器]节点,然后设置以下属性:
      节点 属性 设置
      [高度数据映射器] 源表面源体积 设为包含高度数据的 CGNS 区域。
      源模板 对于来自外部波求解器的 CGNS 数据,通常设为节点。如果 CGNS 数据以网格单元为中心,则设为
      标量场函数 [协同仿真:自由表面高度]
      目标指定 > 表面 1(仅限于表面到体积数据映射器) 目标实体 为了提高精度,建议将高度数据映射到需要指定波边界条件的所有边界(通常为流入和流出边界)。
      目标模板
      目标指定 > 体积 1 目标实体 设为表示计算域的区域。
      目标模板 网格单元
      [速度数据映射器] 源表面源体积 设为包含速度数据的 CGNS 区域。
      源模板 对于来自外部波求解器的 CGNS 数据,通常设为节点。如果 CGNS 数据以网格单元为中心,则设为
      标量场函数 [协同仿真:速度 X][协同仿真:速度 Z]协同仿真:速度 Y(仅限于体积到体积数据映射器)
      目标指定 > 表面 1(仅限于表面到体积数据映射器) 目标实体 为了提高精度,建议将速度数据映射到需要指定波边界条件的所有边界(通常为流入和流出边界)。
      目标模板
      目标指定 > 体积 1 目标实体 设为表示计算域的区域。
      目标模板 网格单元
    4. 右键单击数据映射器 > [高度数据映射器]节点,然后选择映射数据
    5. 重复上一步,但右键单击[速度数据映射器]节点。
      数据映射器采用导入的 CGNS 网格和 CGNS 场数据,并将其从源表面(CGNS 区域)插值到目标体积(计算域区域)。有关更多信息,请参见按类型显示的数据映射器参考
  2. 将映射数据与用户自定义波形关联:
    1. 右键单击连续体 > 物理 1 > VOF 波 > 节点,选择新建 > 用户自定义
    2. 选择 > 用户自定义 VOF 波 1 节点,并设置以下属性:
    节点 属性 设置
    自由表面高度 标量函数 [映射的自由表面高度]
    波速 方法 复合
    复合 > X 分量 方法 场函数
    标量函数 [映射的 X 向速度]
    复合 > Y 分量 方法 场函数
    标量函数 [映射的 Y 向速度](仅 3D)
    复合 > Z 分量 方法 场函数
    标量函数 [映射的 Z 向速度]
Simcenter STAR-CCM+ 可用于使用两种不同方法运行用户自定义波模拟。可以通过 .java 宏运行模拟,或者使用工具栏选项手动运行模拟。但是,建议通过 .java 宏运行模拟。
  1. 使用 .java 宏运行模拟:
    1. Simcenter STAR-CCM+ 中或使用包含以下单元的外部 Java 文本编辑器创建 .java 宏:
      • 用于导入 CGNS 网格和 CGNS 场数据的执行步骤:
        coSimulation.executeAction("ImportMesh");
        coSimulation.executeAction("ImportFields");
      • 用于高度和速度数据映射器的映射数据命令:
        ((SurfaceDataMapper) simulation.get(DataMapperManager.class).getObject("ElevationMapper")).mapData();
        ((SurfaceDataMapper) simulation.get(DataMapperManager.class).getObject("VelocityMapper")).mapData();

        第一条直线使用表面到体积映射器映射自由表面高度数据。第二条直线使用表面到体积映射器映射速度数据。

      • 步进求解之前初始化求解步骤:
        simulation.getSolution().initializeSolution()
      • 用于导入 CGNS 数据的 while 循环,针对每个 CGNS 导入链接状态运行一个时间步的模拟:
        
        while(cgnsImportPartner.getStateIndex() < cgnsImportPartner.getMaxStateIndex()) {
            cgnsImportPartner.setStateIndex(cgnsImportPartner.getStateIndex() + 1);
            coSimulation.executeAction("ImportFields");
            ((SurfaceDataMapper) simulation.get(DataMapperManager.class).getObject("ElevationMapper")).mapData();
            ((SurfaceDataMapper) simulation.get(DataMapperManager.class).getObject("VelocityMapper")).mapData();
        
            simulation.getSimulationIterator().step(1);
            loop++;
        }
    2. 保存宏文件。
    3. 单击工具栏中的 播放宏...)按钮。
    4. 打开窗口中,选择已创建的 .java 文件,然后单击打开
      Simcenter STAR-CCM+ 将运行 .java 宏并运行模拟,直到不再满足循环准则且宏已运行完成。
  2. 手动运行模拟:
    1. 右键单击外部链接 > [链接 1]节点,然后选择导入网格
    2. 选择外部链接 > [链接 1] > > 导入链接状态节点,并将状态名称设为第一个可用状态。
    3. 右键单击外部链接 > [链接 1] 节点,然后选择导入场
    4. 右键单击数据映射器 > [高度数据映射器]节点,然后选择映射数据
    5. 重复上一步,但右键单击[速度数据映射器]节点。
    6. 单击求解工具栏内的 初始化求解)按钮。
    7. 初始化完成后,选择外部链接 > [链接 1] > > 导入链接状态节点,将状态名称增加一个状态。
    8. 右键单击外部链接 > [链接 1] 节点,然后选择导入场
    9. 右键单击数据映射器 > [高度数据映射器]节点,然后选择映射数据
    10. 重复上一步,但右键单击[速度数据映射器]节点。
    11. 单击求解工具栏内的 步进)按钮。
    12. 根据需要对多个时间步重复上述五个步骤。