【fluent】利用UDF和Scheme变量实现根据条件满足情况保存dat、case数据案例文件 |
您所在的位置:网站首页 › fluent设置计算核数 › 【fluent】利用UDF和Scheme变量实现根据条件满足情况保存dat、case数据案例文件 |
一、问题背景
前一段时间在闲鱼上,遇到有一个人问我“在udf中如何实现某一个变量满足一定取值范围内才保存dat和case文件”。 而后我帮他解决了这个问题,在此处也将解决办法公益性地分享出来。 假设条件是“求解过程中的变量满足某一个取值范围”,例如某一个面上的面积权值平均温度大于500K时就写出一个dat和case文件保存到本地。 要保存dat和case文件,有GUI和TUI的方法。 GUI的方法就不啰嗦了,大多数的人都懂。GUI的方式,也分为两种,一种是手动在file菜单中write写入,另一种是在calculate activity中双击autosave,设置自动保存。 遗憾的是,这个自动保存只能设置间隔一段时间或一些时间步保存一次,无法根据变量求解情况进行保存。 TUI的方法,就是利用/file/write-case和/file/write-case-data命令,在console窗口中输入后回车。 UDF中,有没有什么宏或者函数能实现如此功能呢? 我们翻阅官方文档,可以看到有以下几个宏与dat、case文件有关。 DEFINE_EXECUTE_AFTER_CASE/DATA:在读取cas、data文件后执行这个宏里面的命令。DEFINE_RW_FILE:这个宏用于往dat文件中写入一些变量数据,但是执行这个宏时并不是保存/写入dat文件。DEFINE_RW_HDF_FILE:这个宏跟2一样,只不过是写入HDF类型的dat文件,相比传统dat文件占用更低的内存空间和更快的加载速度,但是兼容性很差,其他软件(CFD-POST、TECPLOT…)可能打不开。新版本的Fluent默认保存HDF类型的,你可以在preference中修改成legacy类型。![]() 首先你需要在fluent的console窗口中定义一个scheme变量。 (rp-var-define 'var_name 0 'integer #f)上面的意思是说,将var_name 这个变量初始化赋值为0,它是整数类型。 scheme变量可以说是(在我印象中)唯一一个可供TUI和UDF交互的方式。 UDF中可以调用在console窗口中定义的scheme变量,并且修改它们。 3.2 在UDF中编写的代码下面UDF的意思是,满足条件就将var_name这个scheme变量赋值为1。 if (condition==ok) {write_data = 1;} else {write_data = 0;} RP_Set_Integer ("var_name", write_data); 3.3 在fluent的GUI界面中需要执行的操作在左边模型树中,双击Calculation Activities。 下面我来讲讲这一串代码的含义。 先用一张总图表示,如果你看明白,你就是大聪明。 ![]() 如果你不加自动编号规则,那么每次 执行这个命令就会产生覆盖效果,你只能得到最后保存的数据和案例文件。 欲知后事如何,请听下回分解
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |