流程开发在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进行草图拉伸

  • 在弹出的参数设置界面中,设置拉伸长度Distant1m,,如下图所示

  • 点击按钮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 CurvesDefault,如下图所示,点击OK按钮确认操作

  • 更改模型树节点名称Default为wall,default 2为inlet,default 3为outlet
  • 右键选择模型树节点Geometry >Part > Body 1,选择菜单Assign Parts to Regions...

  • 在弹出的菜单中,进行如下图所示选择,点击ApplyClose按钮确认并关闭对话框

  • 结束宏的录制,至此几何创建完毕。

此时可以用文本编辑器打开之前创建的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的更多相关文章

  1. 如何开发一个简单的HTML5 Canvas 小游戏

    原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...

  2. 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务

    [源码下载] 重新想象 Windows 8 Store Apps (64) - 后台任务: 开发一个简单的后台任务 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后 ...

  3. Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状)

    Cocos2d-x-Lua 开发一个简单的游戏(记数字步进白色块状) 本篇博客来给大家介绍怎样使用Lua这门语言来开发一个简单的小游戏-记数字踩白块. 游戏的流程是这种:在界面上生成5个数1~5字并显 ...

  4. Python开发一个简单的BBS论坛

    项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...

  5. 作业1开发一个简单的python计算器

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  6. django学习-11.开发一个简单的醉得意菜单和人均支付金额查询页面

    1.前言 刚好最近跟技术部门的[产品人员+UI人员+测试人员],组成了一桌可以去公司楼下醉得意餐厅吃饭的小team. 所以为了实现这些主要点餐功能: 提高每天中午点餐效率,把点餐时间由20分钟优化为1 ...

  7. IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序

    前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现 ...

  8. 30 分钟开发一个简单的 watchOS 2 app <oneVcat>

    Apple Watch 和 watchOS 第一代产品只允许用户在 iPhone 设备上进行计算,然后将结果传输到手表上进行显示.在这个框架下,手表充当的功能在很大程度上只是手机的另一块小一些的显示器 ...

  9. 自己动手模拟开发一个简单的Web服务器

    开篇:每当我们将开发好的ASP.NET网站部署到IIS服务器中,在浏览器正常浏览页面时,可曾想过Web服务器是怎么工作的,其原理是什么?“纸上得来终觉浅,绝知此事要躬行”,于是我们自己模拟一个简单的W ...

随机推荐

  1. Angular2入门系列教程2-项目初体验-编写自己的第一个组件

    上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...

  2. ABP文档 - Javascript Api

    文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions A ...

  3. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

  4. "无法删除数据库,因为该数据库当前正在使用"问题解决

    异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 以前刚学数据库的时候比较苦恼这个问题,今天删除的时候又看见了,正好一起记录一下 ...

  5. nginx+php的使用

    原文来自:windows下配置nginx+php环境 按照他的步骤走,亲测可用! 但是这里他后面说的根目录可能有些人有点懵. 其实在设置的时候就设置了: 网站根目录就是www这个目录,如果没创建请自行 ...

  6. OpenCASCADE Job - dimue

  7. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  8. spring remoting源码分析--Hessian分析

    1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...

  9. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  10. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...