【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进行草图拉伸

- 在弹出的参数设置界面中,设置拉伸长度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

点击按钮创建几何
【Star CCM+实例】开发一个简单的计算流程.md的更多相关文章
- 如何开发一个简单的HTML5 Canvas 小游戏
原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...
- 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务
[源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...
- Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)
Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状) 本篇博客来给大家介绍怎样使用Lua这门语言来开发一个简单的小游戏-记数字踩白块. 游戏的流程是这种:在界面上生成5个数1~5字并显 ...
- Python开发一个简单的BBS论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- 作业1开发一个简单的python计算器
开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...
- django学习-11.开发一个简单的醉得意菜单和人均支付金额查询页面
1.前言 刚好最近跟技术部门的[产品人员+UI人员+测试人员],组成了一桌可以去公司楼下醉得意餐厅吃饭的小team. 所以为了实现这些主要点餐功能: 提高每天中午点餐效率,把点餐时间由20分钟优化为1 ...
- IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序
前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现 ...
- 30 分钟开发一个简单的 watchOS 2 app <oneVcat>
Apple Watch 和 watchOS 第一代产品只允许用户在 iPhone 设备上进行计算,然后将结果传输到手表上进行显示.在这个框架下,手表充当的功能在很大程度上只是手机的另一块小一些的显示器 ...
- 自己动手模拟开发一个简单的Web服务器
开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...
随机推荐
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- 创建几个常用table展示方式插件
这次和大家分享的是自己写的一个table常用几种展示格式的js插件取名为(table-shenniu),样式使用的是bootstrap.min.css,还需要引用jquery.min.js包,这个插件 ...
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- ASP.NET WebApi OWIN 实现 OAuth 2.0
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...
- 我大中华微软MVP中国区人才库
刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...
- C#泛型详解(转)
初步理解泛型: http://www.cnblogs.com/wilber2013/p/4291435.html 泛型中的类型约束和类型推断 http://www.cnblogs.com/wilber ...
- 【干货分享】流程DEMO-事务呈批表
流程名: 事务呈批表 业务描述: 办公采购.会议费用等事务的申请.流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金 ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- XSS 前端防火墙 —— 无懈可击的钩子
昨天尝试了一系列的可疑模块拦截试验,尽管最终的方案还存在着一些兼容性问题,但大体思路已经明确了: 静态模块:使用 MutationObserver 扫描. 动态模块:通过 API 钩子来拦截路径属性. ...