添加循环

将一个循环添加到为已创建线探测重命名的宏中。

要添加到宏中的附加代码会以简单的语言进行描述,如下所示:

  • 设置最小 X 坐标,XMIN。
  • 设置最大 X 坐标,XMAX。
  • 设置线探测之间所需的 X 距离,XDIST。
  • 初始化当前 X 位置,XLOC = XMIN + XDIST。
  • WHILE (XLOC 小于 XMAX)
    • 在 XLOC 处创建线探测。
    • 将新线探测的标题重命名为 XLOC。
    • XLOC = XLOC + XDIST
  • END WHILE

为避免在宏中直接设置 XMIN 和 XMAX,请使用 Representation 类的 getRegionExtents 方法,以设置合适的值。Java API 文档中 Representation 类的这种方法显示,需要为其要获取范围的 Region 对象。

在编辑器窗口内,将先前考虑的代码段替换为现在遵循的已修改过的代码。原始代码会以纯文本形式显示,新的或修改过的代码以粗体显示。由于 Java 是区分大小写的编程语言,所以请按所示正确输入新代码。

// execute0 功能的开始处
 
Simulation simulation_0 =
  getActiveSimulation();
 
Units units_0 =
  simulation_0
  .getUnitsManager()
  .getPreferredUnits(
    new IntVector(
      new int[]
        {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
    )
  );
 
Scene scene_0 =
  simulation_0
  .getSceneManager()
  .getScene("Scalar Scene 1");
 
PartDisplayer partDisplayer_1 =
  ((PartDisplayer) scene_0
  .getCreatorDisplayer());
   
FvRepresentation fvRepresentation_0 =
  ((FvRepresentation) simulation_0
  .getRepresentationManager()
  .getObject("Volume Mesh"));
 
partDisplayer_1
  .setRepresentation(fvRepresentation_0);
 
Region region_0 =
  simulation_0
  .getRegionManager()
  .getRegion("Fluid");
 
// 新代码在此处开始
// 定义主变量
 
double dXDIST = 0.1; // 探针之间的距离
 
// 使用 FvRepresentation 查找 region_0 的范围
// (之前从 simulation_0 检索)。
// FvRepresentation 衍生自 Representation。
// 类并提供体积区域
// 特定 getRegionExtents 方法
// 的自有版本。
// getRegionExtents 返回六双阵列:
// [xmin,xmax,ymin,ymax,zmin,zmax]
 
double[] dExtents =
  fvRepresentation_0
  .getRegionExtents(region_0);
 
// 从 dExtents 检索 xmin 和 xmax
 
double dXMIN = dExtents[0];
double dXMAX = dExtents[1];
 
//设置初始 X 位置
 
double dXLOC = dXMIN + dXDIST;
 
// 开始循环
while(dXLOC < dXMAX) {
// 本部分来自录制的宏
// 再缩进两个空格并使用
// 变量 dXLOC 将所有参考更改为 0.04
 
LinePart linePart_0 =
  simulation_0
  .getPartManager()
  .createLinePart(
    new NeoObjectVector(
      new Object[] {region_0}
  ),
  new DoubleVector(
    new double[] {dXLOC, 0.0, 0.0}
  ),
  new DoubleVector(
  new double[] {dXLOC, 0.0762, 0.0}
  ),
  20
);
 
LabCoordinateSystem labCoordinateSystem_0 =
  simulation_0
  .getCoordinateSystemManager()
  .getLabCoordinateSystem();
 
linePart_0
  .setCoordinateSystem(labCoordinateSystem_0);
 
Coordinate coordinate_0 =
  linePart_0.getPoint1Coordinate();
 
coordinate_0
.setCoordinate(
  units_0,
  units_0,
  units_0,
  new DoubleVector(
    new double[] {dXLOC, 0.0, 0.0}
  )
);
 
// 以下两部分设置每个轴上的单位,
// 以及 linePart_0 第二点的位置。
 
Coordinate coordinate_1 =
  linePart_0
  .getPoint2Coordinate();
 
coordinate_1
.setCoordinate(
  units_0,
  units_0,
  units_0,
  new DoubleVector(
    new double[] {dXLOC, 0.0762, 0.0}
  )
);
 
// 从此处移除冗余部分
 
// 更改 linePart 的名称。
// 使用当前 X 位置
// 创建新名称。 String.format 方法确保
// 数字的一致。参阅
// Java 文档了解详细信息。
 
String strPartName =
  String.format("X = %6.4f",dXLOC);
 
linePart_0.setPresentationName(strPartName);
 
// 更新 dXLOC 并使用右括号结束循环。
dXLOC = dXLOC + dXDIST;
} // 结束循环
 

这完成了创建线探测的主要部分。