STAR CCM+:实现监测值达标自动终止计算

本文描述在STAR CCM+中实现计算过程中判断监测物理量的值,并在监测值达到目标时停止计算。

前面提到在 Fluent 中监测物理量,并在物理量达到设定条件时终止计算的一些方法。STAR CCM+中也可以实现相同的操作。

还是用相同的案例来描述此过程。如图所示的几何模型,直径20 mm,长度200 mm。左侧壁面温度500 K,其他壁面为绝热。初始温度为300 K,考虑瞬态热传导,当物体内部中心点处温度为420 K时停止计算。

  • 启动STAR CCM+,新建Simulation
  • 利用菜单File → Import → Import Volume Mesh…加载网格文件cylinder.msh

1 选择物理模型

  • 右键选择模型树节点Continua > Physics 1,点击弹出菜单项Select Models...打开模型选择对话框




  • 如下图所示选择物理模型

注:这里选择能量方程时要小心,建议选择使用Coupled Solid Energy。若选择使用Segregated Solid Energy,需要足够多的内迭代次数,否则计算出来的结果和Coupled Solid Energy及Fluent计算的结果相差巨大。利用Coupled Solid Energy或Fluent进行计算得到1.8 s时监测点达到420K,但Segregated Solid Energy在内迭代次数设置为40 时,得到的结果为2.25 s才能达到420 K。当内迭代次数减少时,Segregated Solid Energy方法计算结果显示需要的时间更多,如使用默认内迭代次数5时,需要9.9 s,显然是错误的。而Coupled Solid Energy在内迭代次数为5 时,依然能够计算得到1.8 s时刻监测点达到420。 ”

2 修改材料属性

  • 双击模型树节点Continua > Physics 1 > Models > Solid > AI,打开材料属性设置对话框,如下图所示设置材料参数

3 指定边界条件

  • 双击节点Regions > Boundaries > HOTWALL,如下图所示设置其温度为500 K ,其他边界保持默认设置

4 设置监测点

  • 右键选择模型树节点Derived Parts,点击弹出菜单项New → Probe → Point打开设置对话框



  • 如下图所示设置监测点坐标


5 设置监测点

  • 右键选择模型树节点Reports,点击弹出菜单项New → User → Maximum创建新节点

注:这里监测的是点的数据,因此Maximum与Minimum的值是一样的,随便选择哪一个都可以。 ”

  • 如下图所示设置新节点Maximum 1的参数


  • 右键选择模型树节点Maximum 1,点击弹出菜单项Create Monitor and Plot from Report创建监测值显示


6 求解参数

  • 选中模型树节点Solvers > Implicit Unsteady,指定参数Time Step为 0.05 s


  • 选中模型树节点Stopping Criteria > Maximum Physical Time,如下图所示指定参数Maximum Physical Time为 4.5 s



7 设置仿真操作

利用Simulation Operations控制仿真过程。基本思路为:判断监测值与目标值的差距,以此来判断是继续迭代计算还是终止计算。

注:此方法并未成功,尚不清楚问题出在哪里。 ”


  • 右键选择模型树节点Tools > Simulation Operations,点击弹出菜单项 New 创建新节点


  • 如下图所示,右键选择模型树节点Operations, 点击弹出菜单项New → Conditions创建判断条件



  • 选中节点Condition,如下图所示设置判断表达式




  • 右键选择节点True,点击弹出菜单项New → Stop Simulation Operations。表示当Condition满足时(报告值>420),终止仿真计算。




  • 右键选择节点False,点击弹出菜单项New → Solve Physics



  • 选中节点Solve Physics,如下图所示设置参数Simulation Objects为 Physics 1



  • 右键选择模型树节点Simulation Operations 1,点击菜单项Play/Resume Simulation Operations执行计算


但似乎没起作用,计算并没有在监测值达到420时终止计算。


事实上Simulation Operations是做了正确判断的,但目前不知道什么原因,其并没有执行Ture分支下的终止计算指令。更换表达式将Ture和False调换也没有用。

8 利用脚本控制流程


上面的方法不奏效,那就用java脚本进行控制,这个更简单。两个工作:

  1. 获取监测值
  2. 判断监测值,并停止计算

脚本可以限录制,然后进行改造,改造完毕后的代码如下图所示。代码文件保存为control.java

注意:在读入此文件之前,需要将中文注释清除掉,否则会因为无法识别而报错。 ”

// control.java// Written by Simcenter STAR-CCM+ 18.04.008package macro;import java.util.*;import star.common.*;import star.base.report.*;public class control extends StarMacro {  public void execute() {    execute0();  }  private void execute0() {    Simulation simulation_0 =getActiveSimulation();    Solution solution_0 =simulation_0.getSolution();    solution_0.initializeSolution();  while(true){//获取report的值。这里report的名称为Maximum 1,与软件中定义的名称保持一致    MaxReport maxReport_0 =       ((MaxReport) simulation_0.getReportManager().getReport("Maximum 1"));  double maxTemp = maxReport_0.getReportMonitorValue();//将获取的监测值与目标值进行比较if(maxTemp <= 420){//若监测值小于420,则迭代计算simulation_0.getSimulationIterator().step(1);}else{//超过420则终止迭代计算simulation_0.getSimulationIterator().stop();                simulation_0.println("Reach target value, stop iteration!");//break用于跳出循环,非常重要break;}}  }}


  • 点击菜单项File → Macro → Play Macro...,打开文件选择对话框


  • 选择并打开脚本文件control.java



  • 运行结果如下图所示



  • 计算在1.8 s时刻自动终止,此时监测点的温度值为420.7122 K



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空