學(xué)習(xí)STAR-CCM+編程語言:在Eclipse中進(jìn)行二次開發(fā)調(diào)試
STARCCM+提供了非常完善的二次開發(fā)支持,可惜的是,它使用了JAVA這樣太專業(yè)的編程語言,遠(yuǎn)不如MATLAB、Python這樣平易近人。此外,無論是中文還是英文互聯(lián)網(wǎng),有關(guān)StarCCM二次開發(fā)的資料幾為空白,更可恨的是,CCM進(jìn)入調(diào)試模式的方式竟然如此奇怪,讓我走了不少彎路。當(dāng)然,導(dǎo)致以上問題的主要原因當(dāng)然還是我自己從來沒用過JAVA和Eclipse。在這里寫下摸索出的正確過程,算留個記錄吧。
在進(jìn)入正題之前,總結(jié)一下我接觸過二次開發(fā)的專業(yè)軟件是如何進(jìn)入調(diào)試模式的。
COMSOL,可以使用MATLAB調(diào)試,直接執(zhí)行COMSOL with MATLAB文件,會直接打開MALTAB窗口和一個控制臺窗口。你還可以再開一個COMSOL窗口,輸入端口、帳號密碼連接上本地服務(wù)器,這樣你在MATLAB里寫的每一句命令,都可以在COMSOL中得到即時的圖形反饋。
KULI,可以使用MATLAB,VBA,Python調(diào)試,KULI利用了微軟的COM server,只要注冊KuliAnalysisServer這個DLL/EXE(一般在安裝時就已經(jīng)注冊好了),就可以在任何支持COM的語言中調(diào)用其進(jìn)行計算,寫一句就能得到反饋(非圖形的)。
Amesim,這個我還沒怎么接觸過,但現(xiàn)在慢慢開始欣賞、學(xué)習(xí),可恨資料比CCM+還少。Amesim可以用MATLAB和Python進(jìn)行二次開發(fā),很久之前用MATLAB連過一次,并不麻煩,記得也是MATLAB寫一句,都能得到反饋(非圖形的)。
STARCCM,可以使用JAVA。以一個特定的bat腳本令其運行在調(diào)試模式下,打開一個模型。再在Eclipse中新建項目,引用CCM的所有JAR,添加調(diào)試器,寫腳本,添加斷點,再在CCM(而不是Eclipse)里執(zhí)行這個腳本!!!執(zhí)行到斷點這一行時,會跳到Eclipse進(jìn)入調(diào)試模式,調(diào)試模式下寫的語句也能得到即時的圖形反饋。
可以看到STAR的調(diào)試路徑和其他的軟件差別巨大,我不太清楚是語言還是IDE導(dǎo)致的差異,但覺得有點反直覺。這些步驟都在help文檔里的確都寫了,但非常簡略,加上嚴(yán)重的慣性思維,讓我過于相信自己的經(jīng)驗而不是文檔了。
啰里啰嗦說了這么多,開始正題。
首先控制臺輸入運行腳本,以調(diào)試模式運行STARCCM:
"E:\Program Files\STAR-CCM+12.06\12.06.011\STAR-CCM+12.06.011\star\bin\starccm+.exe" -jvmargs "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8765"
前面的路徑為starccm+程序的絕對路徑,由于有空格,所以用雙引號包圍起來。這個命令太長了,可以保存成bat文件。
執(zhí)行完后,會打開CCM軟件,同時將監(jiān)聽8765端口。
打開Eclipse,新建項目,選擇Java Project,并給項目取名,其他設(shè)置保持默認(rèn)即可,在向?qū)ё詈笠徊綍r,點擊Add External JARs,導(dǎo)入下圖路徑中的所有jar文件。
項目建立完成后,新建類,取名,在Superclass里選擇StarMacro,其他項保持默認(rèn)。
Eclipse生成一個java文件,并自動加入了框架代碼,比如引用了StarMacro,按我們設(shè)置的將HelloCCM定義為StarMacro的子類,StarMacro是一個抽象類,要求重構(gòu)其execute方法,可以看到Eclipse也自動為我們創(chuàng)建了該方法。
為方便起見,一般會將引用改為import star.common.*,這樣大部分常用類都會被一次性導(dǎo)入進(jìn)來了。
在execute方法里加入以下代碼:
import star.common.*;public class HelloCCM extends StarMacro { @Override public void execute() { // TODO Auto-generated method stub Simulation sim=this.getActiveSimulation(); sim.println("Hello, StarCCM+!"); }}
在之前打開的StarCCM窗口里,打開任意一個模型,執(zhí)行HelloCCM.java腳本,即在輸出窗口看到結(jié)果。
到目前為止只是寫java腳本的方法,還是比較常規(guī)的,接下來是如何進(jìn)入調(diào)試模式。
點擊菜單欄的小爬蟲圖標(biāo),選擇Debug Configurations。
在Remote Java Applcation上右鍵,選New Configuration。
給Debugger取個名字,監(jiān)聽選項選Socket Attach,端口輸入8765(第一步bat腳本里輸入的參數(shù)),點擊Apply,Debug。
在需要的地方添加斷點,然后最搞的地方來了,不是在Eclipse里執(zhí)行腳本,而是在CCM+里!
和前面一樣,執(zhí)行HelloCCM.java腳本,這回CCM+就會一直顯示正在播放,你切回Eclipse一看,喔,問你要不要進(jìn)入調(diào)試頁面了,點擊Switch進(jìn)入。
進(jìn)入調(diào)試模式后,可以查看當(dāng)前空間的所有變量,但不能創(chuàng)建新變量。
可以在下方的Debug Shell里輸入相關(guān)代碼,選中后右鍵,選Display,看輸出結(jié)果。
在Debug shell里輸入的代碼也可以Execute,并在CCM+里即時看到結(jié)果。
文章來源:新能源汽車熱管理仿真
工程師必備
- 項目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















