【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 ...
随机推荐
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 【原创经验分享】WCF之消息队列
最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...
- H5坦克大战之【画出坦克】
今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双, ...
- C#中如何调整图像大小
在本篇文章中,我将介绍如何在C#中来调整你想要的图像大小.要实现这一目标,我们可以采取以下几个步骤: 1.首先要获取你想要调整大小的图像: string path = Server.MapPath(& ...
- SQLServer 版本之八大方法搞清 "我是谁"
你正在使用 SQL Server 的哪个版本? 贴士:作为一个SQL Server数据库管理者或维护.支持人员,应该会经常问自己这样一个问题:我当前SQL Server版本号是?当前版本已经有的累计更 ...
- ThinkPHP 模板substr的截取字符串函数
ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...
- Lind.DDD.LindAspects方法拦截的介绍
回到目录 什么是LindAspects 之前写了关于Aspects的文章<Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP>,今天主要在设计思想上进 ...
- 流程表单中js如何清空SheetUser控件数据?
昨天有人问我js怎么清空.我试了试,发现简单的赋给他空值,并没有用.只能给他赋一个真实存在的值才有用.于是跟踪了一下他的删除按钮. 效果如下 使用场景:可以根据字段的不同类别变更人员. js代码如下, ...
- Android 中的mvvm
我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...
- [每日Linux]Linux下xsell和xftp的使用
实验缘由: 1.xsell在Linux下的作用就是远程登录的一个界面,也就是实现访问在Windows下访问Linux服务器的功能.之前在数据挖掘实验中因为自己电脑的内存不够,曾经使用过实验室的服务器跑 ...