【Star CCM+實例】開發一個簡單的計算流程.md


流程開發在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進行草圖拉伸

  • 在彈出的參數設置界面中,設置拉伸長度Distant1m,,如下圖所示

  • 點擊按鈕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 CurvesDefault,如下圖所示,點擊OK按鈕確認操作

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

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

  • 結束宏的錄制,至此幾何創建完畢。

此時可以用文本編輯器打開之前創建的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

  • 點擊按鈕創建幾何


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM