流程開發在CAE過程中處於非常重要的地位。
主要的作用可能包括:
- 將一些經過驗證的模型隱藏在流程中,提高仿真的可靠性
- 將流程封裝成更友好的界面,降低軟件的學習周期
流程開發實際上需要做非常多的工作,尤其是復雜的工程模型,這涉及到計算過程中模型的驗證,如網格驗證、物理模型驗證、模型參數驗證、計算結果驗證等,而且還需要在驗證的基礎上對計算流程進行反復修正,最終形成較為標准化的模型用於流程開發。今天的案例比較簡單,因此省略了前面的流程驗證工作。
本次流程開發工作在STAR CCM+ 1106版本下完成
1 案例描述
要計算的案例如圖所示。
2 建立模型
本案例模型在STAR CCM+中創建。
-
step 1:啟動STAR CCM+
啟動STAR CCM+,新建一個Simulation,保存工程。 -
選擇工具欄按鈕中的錄制宏按鈕,保存宏文件為createGeometry.java
-
右鍵選擇樹形節點Geometry > 3D-CAD Model,選擇New打開幾何創建界面,如下圖所示

-
在幾何操作模塊中,右鍵選擇節點Features > XY,選擇菜單Create Sketch在XY平面上創建草圖

- 在草圖中創建一個半徑0.01m的圓,如下圖所示

- 關閉草圖面板返回至模型操作,鼠標右鍵選擇樹形節點Sketch 1,選擇彈出菜單Extrude進行草圖拉伸

- 在彈出的參數設置界面中,設置拉伸長度Distant為1m,,如下圖所示

- 點擊按鈕Close 3D-CAD關閉建模面板
- 右鍵選擇模型樹節點Geometry > 3D-CAD Models > 3D-CAD Model 1,選擇菜單New Geometry Part,在彈出對話框中采用默認參數,點擊OK按鈕關閉對話框。

- 右鍵選擇樹節點Geometry > Parts > Body 1> Surfaces > Default,選擇菜單Split By Part Curves...

- 在彈出的對話框中,選擇Part Curves為Default,如下圖所示,點擊OK按鈕確認操作

- 更改模型樹節點名稱Default為wall,default 2為inlet,default 3為outlet
- 右鍵選擇模型樹節點Geometry >Part > Body 1,選擇菜單Assign Parts to Regions...

- 在彈出的菜單中,進行如下圖所示選擇,點擊Apply及Close按鈕確認並關閉對話框

- 結束宏的錄制,至此幾何創建完畢。
此時可以用文本編輯器打開之前創建的createGeometry.java文件,查看里面所記錄的內容。刪掉其中一些沒有用的語句,並對程序進行重構整理,該整理成函數的整理成函數,該參數化的參數化。這里要參數化的變量很少,只有半徑和長度兩個物理量。
注意:由於每一步操作均會生成java語句,因此為避免生成過多沒用的語句,建議在正式錄制之前多練習幾遍,務求盡可能少一些無用操作。
3 制作流程
- 啟動Netbean,選擇菜單文件 > 新建項目,啟動項目創建對話框,在 其中選擇項目類別為Java,選擇項目為Java應用程序,點擊下一步按鈕

- 設置項目名稱為MacroDemo,取消創建主類前的復選框,點擊完成按鈕創建工程

- 右鍵選擇樹形節點默認包,選擇菜單新建 > Java包...,創建Java包GUI,相同的步驟創建另一個包Macro

之所以創建不同的包,主要是為了方便文件管理,其實也可以不創建包的。
- 右鍵選擇節點GUI,選擇菜單新建 > JFrame窗體...

- 如下圖所示,設置類名為MacroWindows,點擊完成按鈕創建窗體

- 切換到設計視圖,利用工具箱中的控件構建如圖所示的GUI界面

- 修改管道長度后的文本框變量名稱。右鍵選擇該控件,選擇更改變量名稱...選項,設置名稱為JTextField_PipeLength。相同的方法設置管道半徑文本框名稱為JTextField_PipeRadius,設置創建幾何按鈕的變量名稱為JButton_CreateGeometry

變量名稱很重要,后面創建事件時要用到。
-
先添加STAR CCM+的java庫。具體添加過程可參閱博文:創建帶GUI的STAR CCM+ Macro
-
雙擊創建幾何按鈕進入代碼編輯,如下圖所示,添加引用及代碼:
import star.common.Simulation;
private Simulation sim = null;
public MacroWindows(Simulation Simlocal){
initComponents();
this.sim = Simlocal;
}

- 創建Macro類RunMacro。右鍵選擇樹形節點Macro,選擇菜單創建 > Java類...,創建新的類取名為RunMacro

- RunMacro類的內容如下:
package Macro;
import GUI.MacroWindows;
import javax.swing.JFrame;
import star.common.Simulation;
import star.common.StarMacro;
public class RunMacro extends StarMacro{
@Override
public void execute() {
Simulation sim = this.getActiveSimulation();
MacroWindows mw = new MacroWindows(sim);
mw.setVisible(true);
mw.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
下面回到MacroWindows類中添加功能。錄制的宏文件很長而且沒有參數化,這里需要將其封裝成一個函數,包含兩個參數:管道的長度及管道的半徑。
- 在MacroWindows類中創建函數createPipe,將錄制的java文件粘貼進去
privite void createPipe(double radius, double length)
...
//創建半徑為radius的圓
RadiusDimension radiusDimension_0 =
sketch_0.createRadiusDimension(circleSketchPrimitive_0, radius, units_0);
...
//設置拉伸長度為length
extrusionMerge_0.getDistance().setValue(length);
- 代碼粘貼后可能會存在一些引用問題,如下圖所示,利用netbeans消除這些引用錯誤

- 修改MainWindows類中的JButton_CreateGeometryActionPerformed函數
private void JButton_CreateGeometryActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
double radius;
double length;
try {
radius = Double.valueOf(JTextField_PipeRadius.getText());
} catch (NumberFormatException e) {
radius = 0.01;
}
try {
length = Double.valueOf(JTextField_PipeLength.getText());
} catch (NumberFormatException e) {
length = 0.1;
}
createPipe(radius, length);
}
- 構建工程。右鍵選擇樹節點MacroDemo,選擇菜單清理並構建

4 流程測試
- 啟動STAR CCM+,新建一個工程文件
- 選擇菜單Tool> Options,選擇Environment,設置User Macro ClassPath為前面創建工程的路徑,如下圖所示,點擊Close按鈕關閉對話框

-
選擇啟用宏文件按鈕,打開宏文件RunMarco.java

-
點擊按鈕創建幾何
