学习STAR-CCM+编程语言:在Eclipse中进行二次开发调试
STARCCM+提供了非常完善的二次开发支持,可惜的是,它使用了JAVA这样太专业的编程语言,远不如MATLAB、Python这样平易近人。此外,无论是中文还是英文互联网,有关StarCCM二次开发的资料几为空白,更可恨的是,CCM进入调试模式的方式竟然如此奇怪,让我走了不少弯路。当然,导致以上问题的主要原因当然还是我自己从来没用过JAVA和Eclipse。在这里写下摸索出的正确过程,算留个记录吧。
在进入正题之前,总结一下我接触过二次开发的专业软件是如何进入调试模式的。
COMSOL,可以使用MATLAB调试,直接执行COMSOL with MATLAB文件,会直接打开MALTAB窗口和一个控制台窗口。你还可以再开一个COMSOL窗口,输入端口、帐号密码连接上本地服务器,这样你在MATLAB里写的每一句命令,都可以在COMSOL中得到即时的图形反馈。
KULI,可以使用MATLAB,VBA,Python调试,KULI利用了微软的COM server,只要注册KuliAnalysisServer这个DLL/EXE(一般在安装时就已经注册好了),就可以在任何支持COM的语言中调用其进行计算,写一句就能得到反馈(非图形的)。
Amesim,这个我还没怎么接触过,但现在慢慢开始欣赏、学习,可恨资料比CCM+还少。Amesim可以用MATLAB和Python进行二次开发,很久之前用MATLAB连过一次,并不麻烦,记得也是MATLAB写一句,都能得到反馈(非图形的)。
STARCCM,可以使用JAVA。以一个特定的bat脚本令其运行在调试模式下,打开一个模型。再在Eclipse中新建项目,引用CCM的所有JAR,添加调试器,写脚本,添加断点,再在CCM(而不是Eclipse)里执行这个脚本!!!执行到断点这一行时,会跳到Eclipse进入调试模式,调试模式下写的语句也能得到即时的图形反馈。
可以看到STAR的调试路径和其他的软件差别巨大,我不太清楚是语言还是IDE导致的差异,但觉得有点反直觉。这些步骤都在help文档里的确都写了,但非常简略,加上严重的惯性思维,让我过于相信自己的经验而不是文档了。
啰里啰嗦说了这么多,开始正题。
首先控制台输入运行脚本,以调试模式运行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文件。
执行完后,会打开CCM软件,同时将监听8765端口。
打开Eclipse,新建项目,选择Java Project,并给项目取名,其他设置保持默认即可,在向导最后一步时,点击Add External JARs,导入下图路径中的所有jar文件。
项目建立完成后,新建类,取名,在Superclass里选择StarMacro,其他项保持默认。
Eclipse生成一个java文件,并自动加入了框架代码,比如引用了StarMacro,按我们设置的将HelloCCM定义为StarMacro的子类,StarMacro是一个抽象类,要求重构其execute方法,可以看到Eclipse也自动为我们创建了该方法。
为方便起见,一般会将引用改为import star.common.*,这样大部分常用类都会被一次性导入进来了。
在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窗口里,打开任意一个模型,执行HelloCCM.java脚本,即在输出窗口看到结果。
到目前为止只是写java脚本的方法,还是比较常规的,接下来是如何进入调试模式。
点击菜单栏的小爬虫图标,选择Debug Configurations。
在Remote Java Applcation上右键,选New Configuration。
给Debugger取个名字,监听选项选Socket Attach,端口输入8765(第一步bat脚本里输入的参数),点击Apply,Debug。
在需要的地方添加断点,然后最搞的地方来了,不是在Eclipse里执行脚本,而是在CCM+里!
和前面一样,执行HelloCCM.java脚本,这回CCM+就会一直显示正在播放,你切回Eclipse一看,喔,问你要不要进入调试页面了,点击Switch进入。
进入调试模式后,可以查看当前空间的所有变量,但不能创建新变量。
可以在下方的Debug Shell里输入相关代码,选中后右键,选Display,看输出结果。
在Debug shell里输入的代码也可以Execute,并在CCM+里即时看到结果。
文章来源:新能源汽车热管理仿真