【fluent】利用UDF和Scheme变量实现根据条件满足情况保存dat、case数据案例文件

news2024/11/19 23:29:52

一、问题背景

前一段时间在闲鱼上,遇到有一个人问我“在udf中如何实现某一个变量满足一定取值范围内才保存dat和case文件”。

而后我帮他解决了这个问题,在此处也将解决办法公益性地分享出来。
在这里插入图片描述
主要参考的是CFD online上的一篇讨论fluent udf, saving data in udf。有一个答案答得很好,但是有一些细节仍然不够完善。

二、问题解决过程思路分析

假设条件是“求解过程中的变量满足某一个取值范围”,例如某一个面上的面积权值平均温度大于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文件有关。

  1. DEFINE_EXECUTE_AFTER_CASE/DATA:在读取cas、data文件后执行这个宏里面的命令。
  2. DEFINE_RW_FILE:这个宏用于往dat文件中写入一些变量数据,但是执行这个宏时并不是保存/写入dat文件。
  3. DEFINE_RW_HDF_FILE:这个宏跟2一样,只不过是写入HDF类型的dat文件,相比传统dat文件占用更低的内存空间和更快的加载速度,但是兼容性很差,其他软件(CFD-POST、TECPLOT…)可能打不开。新版本的Fluent默认保存HDF类型的,你可以在preference中修改成legacy类型。
    在这里插入图片描述
    遗憾的是,TUI并不能访问求解过程中的变量数据,而UDF中也没有非常直接的能调用TUI命令的方式。

三、解决办法

3.1 定义scheme变量

首先你需要在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。
在这里插入图片描述
接着创建一个execute commands。
在这里插入图片描述
这个execute commands,会在每一次迭代步/时间步结束时触发,或者每隔1s触发。
在这里插入图片描述
我们在command输入框中粘贴如下形式的代码。

(if (= (%rpgetvar 'var_name) 1) (ti-menu-load-string (format #f "fi wcd your_case_name.cas.h your_case_name.dat.h")))

下面我来讲讲这一串代码的含义。

先用一张总图表示,如果你看明白,你就是大聪明。
在这里插入图片描述

  1. 在 Fluent 中,wcd 是一个 TUI(Text User Interface)命令,用于将当前的案例(包括网格和边界条件等信息)和数据(如场数据)写入文件。这两个文件分别具有 .cas.dat 扩展名。
  2. fi 是一个缩写,表示 “file interpret”。fi 命令用于读取并执行包含 Fluent 命令和 Scheme 表达式的文件。由于 ti-menu-load-string 的参数是一个字符串,因此需要使用 fi 命令将 wcd 命令作为一个字符串传递。这使得 Fluent 可以解释并执行这个字符串中的命令。fi 命令告诉 Fluent,将紧随其后的字符串作为一个命令来解释和执行。
  3. 在 Scheme 语言(Fluent 使用的脚本语言之一)中,format 函数用于创建格式化字符串。format 函数可以将字符串中的占位符替换为指定的值。函数的第一个参数决定了输出的类型,#f 表示将结果作为字符串返回,而不是直接输出到控制台或文件。在某些情况下,您可能需要使用 format 函数来插入动态值,例如当前的时间步长或迭代次数,相应的自动编号规则是%t表示迭代步数、%f是流动时间、%s是时间步数。

如果你不加自动编号规则,那么每次 执行这个命令就会产生覆盖效果,你只能得到最后保存的数据和案例文件。

欲知后事如何,请听下回分解

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python函数:介绍及应用

Python函数:介绍及应用 Python是一种功能强大的编程语言。函数是Python编程中最常用的组件之一。函数是用来执行特定的程序并返回结果的工具,可以在一个程序中调用多次。在本文中,我们将介绍Python函数的应用和使用方法。 Python函数的定义…

ant-design-vue将英文改为中文 DatePicker日期控件

ant-design设置DatePicker日期控件中文显示 ant-design-vue将英文改为中文 我们在使用 ant-design-vue 的时候 会遇到默认的语言是 英语 大部分我们需要转成为中文 这时候我们就需要进行配置 首先我们改单一组件的语言&#xff1a; <template><a-date-picker v-model:…

互联网医院牌照申请条件|互联网医院牌照申请流程

​ 随着互联网技术的迅速发展&#xff0c;互联网医院已成为医疗服务领域的重要组成部分。互联网医院是指通过互联网提供医疗服务的机构&#xff0c;其开展医疗业务需经过相关管理部门的批准&#xff0c;且必须持有互联网医院牌照。 申请条件 互联网医院牌照的申请条件如下&a…

互联网医院资质的申请条件和流程有哪些

​随着互联网的快速发展&#xff0c;互联网医疗逐渐成为了医疗行业的重要组成部分&#xff0c;互联网医院也因此出现了。互联网医院是指通过网络技术&#xff0c;开展远程医学服务、健康管理、医学教育等活动的医疗机构。 互联网医院牌照申请需要的资料和条件 要想成功申请互…

压缩感知重构之分段正交匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

Arthas-Class/Classloader相关命令使用

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 开头&#xff1a; 我们先说下生产使用频率较高的有哪些&#xff1a;dump、jad、mc、retransfo…

FMEA教程

1. 2. 3. 4. 5. PFMEA是“过程失效模式与后果分析”的英文“Process Failure Mode and Effect Analysis”的缩写。为了更好地促进AQP PFMEA软件的应用&#xff0c;我们将以系列文章分享运用AQP PFMEA软件有效开展PFMEA工作的理念和方法&#xff0c;同时系统性介绍AQP PFMEA软…

leetcode96--不同的二叉搜索树[java]

不同的二叉搜索树 leetcode 96 题 不同的二叉搜索树题目描述暴力递归解题思路代码演示执行效率 递归 缓存解题思路代码演示执行效率 动态规划专题 leetcode 96 题 不同的二叉搜索树 原题链接: 难度—中等 https://leetcode.cn/problems/unique-binary-search-trees/ 题目描述 …

chatgpt赋能python:分解gif:使用Python将动态图片拆分成单帧图片

分解gif&#xff1a;使用Python将动态图片拆分成单帧图片 随着互联网上图片的使用越来越普遍&#xff0c;动态图片也成为了大家经常使用的图片之一。GIF动态图作为一种常见的动态图片格式&#xff0c;有时需要将其拆分成单帧图片&#xff0c;以便于使用或修改其中的某一帧。本…

目标检测笔记(九):详细介绍并实现可视化深度学习中每层特征层的网络训练情况

文章目录 为什么要解析特征层如何可视化特征层可视化结果如何 ❤️ &#x1f9e1; &#x1f49b; &#x1f49a; &#x1f499; &#x1f49c; &#x1f5a4; &#x1f90d; &#x1f90e; &#x1f494; ❣️ &#x1f495; &#x1f49e; &#x1f493; &#x1f497; &#…

SpringCloud(三)

文章目录 Eureka注册中心Eureka的结构和作用搭建eureka-server创建eureka-server服务引入eureka依赖编写启动类编写配置文件启动服务 服务注册1&#xff09;引入依赖2&#xff09;配置文件3&#xff09;启动多个user-service实例 服务发现1&#xff09;引入依赖2&#xff09;配…

chatgpt赋能python:Python冒泡法排序:一种简单且高效的排序方法

Python 冒泡法排序&#xff1a;一种简单且高效的排序方法 在计算机科学中&#xff0c;排序算法是一种将给定数据集合重新排列为按照一定顺序排列的有序序列的方法。而冒泡排序算法是其中最简单、最基础的一种排序算法。 什么是冒泡排序&#xff1f; 冒泡排序&#xff0c;顾名…

代码随想录第49天

1.买卖股票的最佳时机&#xff1a; 贪心 因为股票就买卖一次&#xff0c;那么贪心的想法很自然就是取最左最小值&#xff0c;取最右最大值&#xff0c;那么得到的差值就是最大利润。 C代码如下&#xff1a; class Solution { public:int maxProfit(vector<int>& …

一键部署个人ChatGPT Web网站

一键部署个人ChatGPT Web网站 githubVercel使用自己的域名 本文将向大家介绍如何通过Github和Vercel这两个具,轻松搭建自己的ChatGPT Web网站&#xff0c;并且我们还可以添加密码保护以防止恶意滥用。 github 首先&#xff0c;我们需要拥有一个Github账号和Vercel账&#xff0…

【Set集合】概述和特点

Set集合概述和特点 Set集合概述 Set作为Collection集合的子接口&#xff0c;没有新增的功能&#xff0c;Collection集合可用的功能Set集合也可以用。 Set集合特点 Set集合存储的元素是无序的&#xff0c;而且不允许存储重复的元素&#xff0c;每当有新的元素存入的时候&#x…

操作系统复习3.2.1-虚拟内存

传统存储的问题 一次性&#xff1a;一次性装入作业才能运行 驻留性&#xff1a;不是所有部分都需要长时间存放在内存中 定义和特征 将要用的部分载入内存&#xff0c;不用的部分调出外存&#xff0c;逻辑上扩大内存 虚拟内存的最大容量为计算机的寻址范围决定 实际容量则为内…

【哈希值】概述和特点

哈希值概述和特点 哈希值概述 哈希值是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值 Object类中有一个方法可以获取对象的哈希值&#xff1a; public int hashCode()&#xff1a;返回对象的哈希值 哈希值特点 同一个对象多次调用hashCode()方法返回的哈希值是相…

0x36transferData 数据传输

0x36transferData TransferData服务用于客户端将数据从客户端传输到服务器&#xff08;下载&#xff09;或从服务器传输到客户端&#xff08;上传&#xff09; 。 数据传输方向由前面的RequestDownload或RequestUpload服务定义。 如果客户端发起请求下载&#xff0c;则要下载的…

【01】STM32·HAL库开发-单片机简介 |用处、发展历程、发展趋势、CISC与RISC对比、冯诺依曼和哈佛结构对比

目录 1.单片机是什么&#xff08;了解&#xff09;2.单片机有什么用&#xff08;了解&#xff09;3.单片机发展历程&#xff08;了解&#xff09;4.单片机发展趋势&#xff08;了解&#xff09;5.CISC & RISC&#xff08;了解&#xff09;5.1CISC和RISC举例5.2冯诺依曼结构…

【C++】位图应用 | 布隆过滤器

文章目录 1. 位图应用题目一代码实现setrsettest具体代码 题目二位图优缺点总结 2. 布隆过滤器提出背景概念具体实现hash1 hash2 hash3N取值问题settsettset中在与不在那个准确&#xff1f;使用场景及特点具体代码 1. 位图应用 题目一 给40亿个不重复的无符号整数&#xff0c…