在工业应用中,设计并联式管路系统时,通常需要优化支路结构从而使各支路按目标流量供给。本案例结合多目标优化软件ISIGHT在STAR-CCM+中进行流场仿真,实现系统的流量分配。
管路系统为单进单出,包括三条不同类型的支路,假设系统总流量为15 L/min,三条支路目标流量都为5 L/min,确定总管路和支路连接段的管路半径,半径范围限定在[1, 6] mm内。模型见图1。
图1 CATIA建模
导入模型
打开STAR-CCM+,新建simulation,选择Parallel on Local Host,Compute Processes设为2,点击OK,保存模型为FlowMatch.sim。
Step-2:
右键Geometry > 3D-CAD Models > new,新建3D-CAD Model,导入CAD model,选择Pipe.stp。
图2 在3D-CAD中导入模型
Step-3:
选择支路1进出口外表面,右键Create Sketch > At Face Center,进入草图编辑界面。在草图面上画圆,约束半径并定义为参数R1,连续点击OK退出草图。
图3 创建草图并定义参数
Step-4:
编辑Design Parameters > R1,单位改为mm,参数值预设为5。修改后,特征树上出现感叹号,右键3D-CAD Model1,选择Update更新。
图4 定义参数和更新模型
Step-5:
右键Sketch,选择Extrude,Method选择Up To Face,Target Face选择管路端面,Body Interaction选择Imprint,点击OK,生成新的Part,重命名为R1。
图5 创建拉伸体
Step-6:
右键R1 > Duplicate,点击OK,生成R1 2,再右键R1 2 > Transform > Mirror,Normal向量设为[0, 1, 0],将R1 2镜像至另一侧管路和支路的连接处。这样操作的前提是两侧管路完全对称,如果不对称就不能用镜像,需要逐个创建拉伸体。
图6 镜像拉伸体
Step-7:
重复步骤3-6,分别创建支路2和支路3的连接段管路,半径参数和新生成的零件分别命名为R2和R3。点击Close 3D-CAD。
图7 完成所有拉伸体创建
Step-8:
右键Geometry > 3D-CAD Models,新建3D-CAD Model 2,再次导入Pipe.stp。
图8 再次导入模型
模型处理
Step-1:
右键Geometry > 3D-CAD Models > 3D-CAD Model 1 > Bodies,同时选中所有R零件,右键New Geometry Part,默认设置,点击OK。
右键Geometry > 3D-CAD Models > 3D-CAD Model 2 > Bodies,同时选中所有零件,右键New Geometry Part,默认设置,点击OK。
模型从3D-CAD Model导入到Parts。创建Geometry Scene显示模型。
图9 创建New Geometry Part
Step-2:
分别合并主路和支路,重命名为pipe和plate。
图10 合并模型
Step-3:
合并pipe包含的surface,重命名为wall。右键wall > Split by Patch,选中面后点击create分别定义inlet和outlet,完成后点击close退出。
图11 分割进、出口
Step-4:
重命名plate包含的surface,分别为P1、P2、P3。
图12 整理surface
网格定义
Step-1:
点击Operations > New > Mesh > Automated Mesh,重命名为pipe-plate,Parts选择pipe和plate,Enabled Meshers选择Surface Remesher和Polyhedral Mesher。
本案例为减少网格数量提高计算效率,不划分Prism Layer Mesher,实际应用时,读者可根据具体情况决定是否勾选Prism网格。
图13 网格类型定义
Base Size设为10 mm,Target Surface Size > Percentage of Base设为80,Minimum Surface Size > Percentage of Base设为10。
图14 网格尺寸参数设置
Step-3:
同时选中Parts下的pipe和plate,右键选择Assign Parts to Regions,相关设置如图。
图15 分配到Region
物理模型
Step-1:
点击Continua > New > Physics Continuum,创建流体模型。
图16 流体模型
Step-2:
点击Continua > Physics 1 > Initial Conditions > Turbulence Specification,Method设为Intensity + Length Scale,Turbulence Intensity设为0.05,Turbulent Length Scale设为0.016。
图17 调整流动参数
网格划分
Step-1:
在Operations下右键pipe-plate,选择Execute,开始划分pipe和plate的网格。
图18 划分管路和冷板网格
Step-2:
点击Operations > New > Boolean > Imprint,全选所有Part,不勾选Perform CAD Imprint。
图19 创建基于网格的Imprint
Step-3:
Tolerance设为1e-6,Merge/Imprint Method选择Discrete Imprint Surfaces,右键Imprint选择Execute。
图20 执行Imprint
Step-4:
复制pipe-plate,重命名为R,Parts选择所有R零件。
图21 定义连接段拉伸体网格
边界条件
Step-1:
点击Region > pipe > Boundaries > inlet,Type选择Mass Flow Inlet,同理,outlet选择Pressure outlet。
图22 边界类型设置
Step-2:
Mass Flow Rate设为0.24939025 kg/s,等价于15 L/min。STAR-CCM+不能直接给体积流量实在是很不方便,不知道以后更新的版本会不会增加这个功能。
图23 定义入口流量
Report监测量
Step-1:
右键Reports选择New Report > Mass Flow,重命名为R1。同理,创建R2和R3。
同时选中三个Report,右键选择Create Monitor and Plot from Report,选择Single Plot。重命名新生成的plot为Mass Flow,将Plot的Title同样改为Mass Flow。
图24 各支路流量监测
录制宏
Step-1:
在菜单栏点击Start Recording按钮,开始录制宏,宏文件命名为mf.java。
图25 开始录制宏
Step-2:
点击Geometry > 3D-CAD Models > 3D-CAD Model 1 > Design Parameters,依次修改R1、R2、R3对应参数值为2,3,4。
图26 修改连接段半径
Step-3:
右键Operations > Imprint > Execute,更新特征树上的感叹号。
Step-4:
同时选中所有R零件,右键Assign Parts to Regions,创建新的Region,命名为R,选择Create a Boundary for Each Part Surface。
图27 将变径后的连接段分配到Region
Step-5:
右键Operations > R > Execute,更新R零件网格。
Step-6:
点击Stopping Criteria > Maximum Steps,设为5。
Step-7:
点击Reports,R1、R2、R3对应Parts分别选择pipe: wall [R1/pipe],pipe: wall [R2/pipe],pipe: wall [R3/pipe]。
图28 选择监测流量的interface面
Step-8:
Step-9:
右键Plots > Mass Flow > Export,保存为mf.csv。停止宏录制。
图29 导出流量结果并停止宏录制
Step-10:
用notepad+打开mf.java文件,可以找到R参数修改行,Maximum Step定义行,mf.csv保存定义行。
图30 宏文件解析
Step-11:
打开mf.java,修改MaximumNumberSteps为200,保存。打开mf.csv,将迭代步调整为200,流量值任意复制即可,完成后保存csv。
图31 修改宏文件和流量监测csv文件
创建bat文件
Step-1:
@echo offcall starccm+ -locale en -load -np 2 %~dp0\FlowMatch.sim -batch mf.javaexit
保存文件,将后缀改为.bat。
图32 批处理文件
Step-2:
将.sim,.bat,.java,.csv四个文件放在同一个文件夹内,以备后续自动执行。
图33 执行文件
ISIGHT设置
Step-1:
打开ISIGHT程序。在Process Components选项卡下将Optimization拖拽至流程树Task处,在Application Components选项卡下将Simcode拖拽至流程树横线处。
图34 创建优化流程
Step-2:
设置模型属性,Model Name设为flowmatch,定义工作路径至前述四个文件所在文件夹,不勾选Create sub-directories。
图35 定义工作路径
Step-3:
双击Simcode进入设置界面,点击Command > Basic,点击Find Program选择opt.bat,勾选Distribute Executable。
图36 Simcode下的Command定义
Step-4:
点击Command > Advanced,取消勾选图中选项。
图37 Advanced选项取消
Step-5:
点击Command > Input,导入mf.java文件。在文本区域右键编辑Edit Section,在Word Separators > Other里输入小括号。
图38 导入java文件
Step-6:
依次定义R1、R2、R3为Input Parameters。
图39 定义输入变量
Step-7:
点击Command > Output,导入mf.csv文件。依次将csv文件最后一行的三个流量值定义为输出变量,分别命名为mf1、mf2、mf3。完成后点击Apply,OK。
图40 定义输出变量
Step-8:
点击流程树上的Simcode,选择Parameters选项卡,分别定义R1、R2、R3参数允许的离散值,参数范围[1, 6],间隔0.2。
图41 输入参数范围定义
Step-9:
回到Sim-flow选项卡,双击Optimization1设置优化参数。
General选项卡,Optimization Technique选择Pointer,Maximum allowable job time设为12 h,Average analysis time设为2000 s。
图42 优化方法设置
Variables选项卡,全选R1、R2、R3三个参数作为优化变量。
图43 优化变量定义
本案例不设置约束条件,实际应用时可以将系统流阻作为约束条件,如pressure drop < 30 kPa。
Objectives选项卡,选中mf1、mf2、mf3作为优化目标,Direction选择Target,Target值按总流量的1/3设置,5L/min,即0.083130083 kg/s。负号表示方向。完成后点击Apply,OK。
图44 优化目标定义
保存模型为flowmatch.zmf,提交计算,此时ISIGHT开始自动调用sim文件进行优化计算。
图45 提交优化计算
图46 优化结束
图47 计算过程数据
Summary结论。优化结果显示,当R1、R2、R3都为3.2 mm时,流量分配最优,其中,支路1流量为-0.08373 kg/s(5.04 L/min),支路2流量为-0.08261 kg/s(4.97 L/min),支路3流量为-0.08308 kg/s(4.99 L/min)。
图48 最优结果
以上分享的是用ISIGHT这个多目标优化平台对复杂并联回路的流量进行均匀分配的方法,总体上操作比较繁琐,任何一个小的细节有问题都可能导致优化无法正常进行。这里对ISIGHT本身没有进行深入的介绍,有兴趣的朋友可以上百度文库搜索相关学习资料。
实际工程问题中经常涉及优化,针对问题的复杂程度可以考虑手动优化或者自动优化,二者没有绝对的优劣,主要决定于工程人员对问题的理解程度。如果对问题本身有足够的理解,手动调整2-3次方案也许就解决了,但是,如果问题很复杂,不清楚变量和响应之间的关系,那就直接交给优化软件帮助寻优吧。当然,如果变量过多,最好是先基于DOE进行敏度分析,把关键参数找出来,再对关键参数做优化,可以减少工作量。
此外,现在很多软件中都集成了优化方法,比如STAR-CCM+自带的optimate功能,Amesim、Abaqus、Hyperwork等也都有自己的优化功能。因此,如果软件的模块较全面,那最好是能在一个软件里全搞定,这样子优化效率是最高的。
文章来源:也曾是个少年