【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 ...
随机推荐
- H5实现摇一摇技术总结
摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...
- DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对?
写在前面 阅读目录: 具体业务场景 业务需求变化 "愚蠢"的应对 消息列表实现 消息详情页实现 消息发送.回复.销毁等实现 回到原点的一些思考 业务需求变化,领域模型变化了吗? 对 ...
- 使用 JavaScript 和 canvas 做精确的像素碰撞检测
原文地址:Pixel accurate collision detection with Javascript and Canvas 译者:nzbin 我正在开发一个需要再次使用碰撞检测的游戏.我通常 ...
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- AFNetworking 3.0 源码解读(七)之 AFAutoPurgingImageCache
这篇我们就要介绍AFAutoPurgingImageCache这个类了.这个类给了我们临时管理图片内存的能力. 前言 假如说我们要写一个通用的网络框架,除了必备的请求数据的方法外,必须提供一个下载器来 ...
- 原生javascript 固定表头原理与源码
我在工作中需要固定表头这个功能,我不想去找,没意思.于是就写了一个,我写的是angularjs 自定义指令 起了个 "fix-header" ,有人叫 "freeze- ...
- 一个诡异的COOKIE问题
今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...
- 开源一款简单清爽的日历组件,JavaScript版的
源码会在最后给出地址,需要的朋友自己去下载.最近项目需要做一个日程安排的功能,就是点击日历的某一天弹出一个录入页面,填完信息后保存当天的日程安排.有日程的日期会有不同的标记(比如加一个背景色啥的).网 ...
- 根据ip判断返回城市名称查询当地天气
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...
- 分享两个BPM配置小技巧
1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...