了解初始宏

录制宏后,打开文件并录制哪个语句对应哪项操作是很好的做法。

将备注添加到 Java 文件类型 //"添加您的备注"。按照下列步骤检查初始宏并对您在先前部分录制的哪个语句所对应的操作进行描述说明。

在合适的文本编辑器内打开文件 macroRecording.java。请参见 Java 宏的第一部分。第一组中的宏语句符合标准 Simcenter STAR-CCM+ 宏的模板。
代码 说明
// STAR-CCM+ macro: macroRecording.java
package macro;
 
import java.util.*;
 
import star.common.*;
import star.base.neo.*;
import star.vis.*;
import star.base.report.*;
import star.flow.*;
 
 
public class macroRecording extends StarMacro {
 
  public void execute() {
    execute0();
}
 
  private void execute0() {
  • 该类被定义为属于 macro 程序包。
  • 已导入许多完成宏所需要的库。
  • 名为 macroRecording 的类已声明,并将其指定为 StarMacro 类别子类。
  • 已声明主方法 execute()。当 Simcenter STAR-CCM+ 中播放宏时,这使用调用 execute0()execute()
查看录制操作期间添加到宏的语句主体。检查 execute0() 方法的主体。按描述内容查找每个语句,并在文本编辑器中添加描述其功能的注释。
代码 说明
Simulation simulation_0 =
getActiveSimulation();{
  • 该语句对交互和操作模拟的 STAR-CCM+ macros 是必不可少的。已声明 Simulation 类型的变量,称为 simulation_0。已使用 getActiveSimulation() 方法获得激活模拟对象位置的基准,并将其存储于 simulation_0 变量中。添加注释:"// 检索当前模拟".
PhysicsContinuum physicsContinuum_0 =
((PhysicsContinuum) simulation_0
.getContinuumManager()
.getContinuum(“Physics 1”)
);
 
VelocityProfile velocityProfile_0 =
physicsContinuum_0
.getInitialConditions()
.get(VelocityProfile.class);
 
velocityProfile_0
.getMethod(ConstantVectorProfileMethod.class)
.getQuantity()
.setComponents(-10.0, 10.0, 0.0);
  • 这些语句设置初始速度。使用宏设置值遵循与展开对象树节点一样的逻辑顺序。首先查找激活模拟 simulation_0 中的物理连续体 物理 1,然后将其位置基准存储于 physicsContinuum_0 变量中。然后在 physicsContinuum_0 中查找初始速度条件,然后将其位置基准存储于 velocityProfile_0 中。最后使用 setComponents() 方法设置新速度条件。
Simcenter STAR-CCM+ 的每个实体都是一个对象,例如边界、连续体,甚至激活模拟。与这类对象交互,例如设置恒定值,现有方法可使您找到相关对象。要找到对象,请遵循对象树的层次结构。例如,初始速度对象包含在物理连续体对象中,而后者包含在模拟对象中。要与此类对象交互,创建相关类型的变量,以将基准存储于对象位置。
代码 说明
Region region_0 =
  simulation_0
  .getRegionManager()
  .getRegion(“trainAndTrack”);
 
Boundary boundary_0 =
  region_0
  .getBoundaryManager()
  .getBoundary(“Inflow”);
 
VelocityProfile velocityProfile_1 =
  boundary_0
  .getValues()
  .get(VelocityProfile.class);
 
velocityProfile_1
  .getMethod(ConstantVectorProfileMethod.class)
  .getQuantity()
  .setComponents(-5.0, 5.0, 0.0);
  • 您可在此处设置流入速度。在激活模拟中查找 trainAndTrack,然后在该区域内查找流入边界,继而在该边界中查找速度,最后设置新速度。要查找该区域,可使用 RegionManager,而要查找该区域的边界,您可使用该区域的 BoundaryManagerbelongingVelocityProfile 类型的第二个变量已创建完成,并已递进式地编号为 1
Solution solution_0 =
  simulation_0
  .getSolution();
 
solution_0.clearSolution(Solution.Clear.History, Solution.Clear.Fields, Solution.Clear.LagrangianDem);
  • 这些语句可检索属于当前模拟的任一求解,并可通过调用 clearSolution() 方法将其清除。
ResidualPlot residualPlot_0 =
  ((ResidualPlot) simulation_0
  .getPlotManager()
  .getObject(“Residuals”)
);
  • 这组语句继续运行模拟命令,创建一个残差绘图,显示模拟进程。
simulation_0.getSimulationIterator().runAutomation();
  • 这条语句用于运行模拟。
代码 说明
ForceCoefficientReport forceCoefficientReport_0 =
  ((ForceCoefficientReport)
  simulation_0.getReportManager()
  .getReport(“Drag Coefficient”)
);
 
forceCoefficientReport_0.printReport();
  • 您在此处会发现该曳力系数报告,并将其位置基准存储于变量 forceCoefficientReport_0 中。然后将 printReport() 方法用于运行 Simcenter STAR-CCM+ 中的报告。您可在此处使用各种替代方法,例如 getReportMonitorValue() - 这会产生曳力系数的值。
Scene scene_0 =
  simulation_0
  .getSceneManager()
  .getScene(“Velocity Magnitude”);
 
CurrentView currentView_0 =
  scene_0
  .getCurrentView();
 
currentView_0.setInput(
  new DoubleVector(
    new double[]{-2.37, -46.74, -5.45}
  ), new DoubleVector(
    new double[]{-2.37, -46.74, 152.76}
  ), new DoubleVector(
    new double[]{0.0, 1.0, 0.0}
  ), -1.0, 0
);
 
scene_0.printAndWait(
  resolvePath(“/myTutorials/velMag.png
  ), 1, 1024, 768
);
  • 该组语句是在保存速度幅值场景的硬拷贝时生成的。第一个语句查找场景,并将其分配给变量 scene_0。后面这些行可设置场景的当前视图,但在该案例中并不是必需的,可以将其删除。下条语句使用 printAndWait() 方法将图象打印机至文件中。请注意,录制已纳入该语句的宏时,已输入分辨率为 1024x768。
residualPlot_0.encode(
  resolvePath(“/myTutorials/res.png”
  ), “png”, 1024, 768
);
  • 该组语句用于保存残差绘图的副本。
Scene scene_1 =
  simulation_0
  .getSceneManager()
  .getScene(“Streamlines”);
 
scene_1.open(true);
 
scene_1.export3DSceneFileAndWait(
  resolvePath(“/myTutorials/streamlines.sce”
  ), true
);
  • 您可在此处使用 export3DSceneFileAndWait() 方法保存流线场景的 STAR-View+ 场景文件。
simulation_0.saveState(
  resolvePath(“/myTutorials/trainMacro.sim”)
);
  • 最后以名称 trainMacro.sim 保存模拟。

要在写入最终宏时快速找到您需要的语句,请在这个阶段的每个语句或语句组上方添加注释。

保存 macroRecording.java 文件。