江湖传言:Fluent有4种二次开发模式。

这里所提的二次开发,指的是在Fluent的基础上开发新的功能。Fluent是商用闭源软件,提供给用户的是经过编译了的可执行文件,故用户难以对软件的核心功能进行修改。不过Fluent还是提供了一些接口方便用户对其功能进行扩展。

1 UDF/UDS

这是最常见的功能扩展方式。Fluent允许用户利用C语言代码扩充其功能,这包括利用UDF扩充功能,以及利用UDS增添求解器。

UDF在Fluent仿真流程的每一个节点中几乎都可以应用到,如下图所示。

UDF比较常见的用途在于:

  • 进行区域初始化。替代Patch实现更加复杂的局部初始化。

  • 迭代调整。控制在每一次迭代结束后调整边界或区域的值。

  • 源项添加。如为计算区域添加一些能量源、动量源与质量源等。

  • 介质属性定义。利用UDF指定介质的一些非线性属性,如指定压力相关的粘度、温度相关的密度等。

  • 各种模型参数定义。

如下面的UDF定义了一个随时间正弦分布的速度。

Fluent可以通过解释和编译的方式加载UDF源文件。

2 Scheme开发

可以利用Scheme语言为Fluent仿真流程定义GUI界面。

Scheme通常情况下与TUI及UDF配合一起使用,来完成仿真流程中一些参数指定工作。

如下所示代码:

(define (apply-cb . args)    (display "clicked OK button!\n") ) 

(define (update-cb . args)    (display "dialog box opened!\n") ) 

(define my-dialog (cx-create-panel "my dialog box" apply-cb update-cb)) ;创建dialog (define table (cx-create-table my-dialog "input parameter" ));创建table (define int1 (cx-create-integer-entry table "num1" 'row 0 'col 0));创建int1输入框,其位于第1行第1列 (define int2 (cx-create-integer-entry table "num2" 'row 1 'col 0));创建int2输入框,其位于第2行第1列 (define int3 (cx-create-integer-entry table "num3" 'row 0 'col 1));创建int3输入框,其位于第1行第3列 (define int4 (cx-create-integer-entry table "num4" 'row 1' col 1));创建int4输入框,其位于第2行第2列 (cx-show-panel my-dialog)

可显示如下图所示GUI对话框。

通过GUI收集用户输入的数据信息,再配合TUI及UDF即可实现仿真流程控制。

Fluent可以通过菜单File → Read → Scheme…读取并加载scheme源代码。

3 journal脚本

Fluent可以记录每一步操作的TUI并保存于文本文件中,该文件称之为脚本文件,扩展名为jou。

如下图所示,在Fluent启动界面中激活选项Use Journal File可选择启动过程中运行的jou文件。

也可以在Fluent启动之后,通过菜单File → Read → Journal…读取脚本文件。

  • Fluent脚本文件可以通过菜单File → Write → Start Journal…录制脚本文件。

  • 通过菜单File → Write → Stop Journal停止录制并保存jou文件

如下所示为录制完成的jou文件片段。

/file/set-tui-version "19.2"(cx-gui-do cx-activate-item "MenuBar*ReadSubMenu*Case...")(cx-gui-do cx-set-file-dialog-entries "Select File" '( "EX3.cas") "Case Files (*.cas* *.msh* *.MSH* )")(cx-gui-do cx-set-list-tree-selections "NavigationPane*List_Tree1" (list "Setup|Models|Viscous (SST k-omega)"))(cx-gui-do cx-list-tree-right-click "NavigationPane*List_Tree1" )(cx-gui-do cx-activate-item "MenuBar*ModelSubMenu*Realizable k-epsilon")(cx-gui-do cx-set-list-tree-selections "NavigationPane*List_Tree1" (list "Setup|Models|Viscous (Realizable k-e, Standard Wall Fn)"))(cx-gui-do cx-activate-item "MenuBar*WriteSubMenu*Stop Journal")

Journal文件可与Scheme混合使用来实现参数化操作,通过构建Jou文件来实现仿真流程控制。

4 进程调用

此方法基本上是一种通用的二次开发方式。利用流行的计算机语言构建GUI界面收集用户输入参数生成特定jou文件,再将jou文件作为参数由Fluent进程调用。

调用模式为:

fluent 3d -g -i journalfluent 3d -g -wait -i journalfluent 3d -hidden -i journal

其中:

  • fluent:为Fluent进程路径

  • 3d/2d:指定Fluent运行的维度

  • -g :指定该选项后fluent将会最小化窗口运行

  • -i:指定该参数后可接Jou文件

  • -wait:指定该选项后Fluent运行脚本会等待至其完全运行完成

  • -hidden:指定该选项后Fluent会隐藏运行直至其完成

有了上面的调用形式之后,就很容易对计算流程进行封装了。

最简单的如Python调用进程:

import os

os.system(‘fluent 3d -hidden -i journal ’)

so easy!

当然如果觉得用python做界面麻烦的话,也可以用C#来做GUI,然后通过下面的函数调用。

private string RunCmd(string command){   Process p = new Process();   p.StartInfo.FileName = "cmd.exe"; //确定程序名   p.StartInfo.Arguments = "/c " + command; //确定程式命令行   p.StartInfo.UseShellExecute = false; //Shell的使用   p.StartInfo.RedirectStandardInput = true; //重定向输入   p.StartInfo.RedirectStandardOutput = true;//重定向输出   p.StartInfo.RedirectStandardError = true; //重定向输出错误   p.StartInfo.CreateNoWindow = true; //设置置不显示示窗口   p.Start();     return p.StandardOutput.ReadToEnd(); //输出出流取得命令行结果}调用方式:RunCmd(“fluent 3d -hidden -i journal”);

提示

本文来自于未出版书稿《Fluent二次开发指南》,未经允许严禁抄袭!

当我见到你,心跳漏了一拍

文件fluent_胡言4种Fluent二次开发姿势相关推荐

  1. Python SolidWorks 二次开发---SolidWorks另存文件为其他格式

    Python SolidWorks 二次开发-SolidWorks另存文件为其他格式 Python SolidWorks 二次开发-SolidWorks另存文件为其他格式 文章目录 Python So ...

  2. UG NX二次开发(C#)-导出-导出Parasolid文件(.x_t文件)

    文章目录 1.前言 2.在UG NX中的操作 2.采用NXOpen二次开发实现 1.前言 UG NX提供了多种文件的导入与导出功能,本文采用NXOpen.net来实现Parasolid文件(.x_t文 ...

  3. 使软件可二次开发_基于C++的?UG二次开发

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...

  4. api 二次 开发 禅道_二次开发

    1. 二次开发 1.1. 介绍 在实际做项目中拿B2B2C进行二次开发的时候, 通常不希望在标准的产品上进行修改. 因为这样会导致标准产品的补丁包无法升级. 目前系统提供了配置二开目录的方式, 可以在 ...

  5. java二次开发流程,源码修改流程(Hadoop)

    1.困难 在实际业务场景中,目前现有的框架在很大情况下可能不能满足现有的需求,用代码进行二次开发就是最好的选择.在一开始进行的时候,根本无从下手是一方面,因为源码的量特别大,如果是在官方的源码中,基本 ...

  6. 本构二次开发 c语言,基于外部材料接口的循环塑性本构模型二次开发

    目前的商用有限元软件中,描述导体材料多采用为双线性或者多线性硬化的本构模型,而如纯铜.铜铌合金等材料均在疲劳加载过程中展现出了明显的棘轮效应等循环变形特征.线性硬化模型最大的一个缺陷是不能反映材料的循 ...

  7. ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境

    文章目录 与PyCharm IDE集成 简介 ANSA和META自动补全 安装说明 在PyCharm中工作 与PyCharm IDE集成 简介   PyCharm 是一个集成开发环境(IDE).它是专 ...

  8. 你好五一、你好TESS NG python二次开发接口

    今天是五一劳动节,国产微观交通仿真软件TESS NG的python开发接口内测版今天发布.         4月1日到今天5月1日一个月时间,疫情将我"封"在出租里,我将TESS ...

  9. 快速搭建离线地图开发环境(局域网地图开发工具)离线地图二次开发

         相关下载:For Linux版本下载   快速搭建离线地图开发环境     局域网地图服务   离线地图数据服务  二次开发 一.软件介绍     BIGEMAP离线地图服务器,提供一站式搭 ...

最新文章

  1. 真·降维打击:这篇SIGGRAPH 2020论文帮你「想象」三维生物眼里的四维空间
  2. 自动生成Android界面,面向Android的Web Service界面自动生成技术研究
  3. Android开源项目:GifView——Android显示GIF动画
  4. python开源流程图软件_Dia
  5. 达芬奇linux 与win,抛弃Linux:达芬奇软件WIN版安装及设置.doc
  6. 工作闲了觉得无聊,忙了觉得累......
  7. 基于redis购物车java代码_基于redis实现购物车基本功能
  8. 如何让div在整个页面中居中?
  9. python 二分查找_LeetCode基础算法题第120篇:二分查找算法
  10. Android服务显式启动、隐式启动、绑定服务、本地客户端调用远程服务器音乐文件
  11. ichat模块schedule模块运行遇到的错误
  12. html把字体设置为繁体,XP下怎样将繁体字设置成系统字体?XP下把系统字体改为繁体的方法...
  13. TensorFlow中的Shape如何理解
  14. Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade
  15. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第2章 图形化建模 2.1开始...
  16. linux c alarm系统调用入门
  17. mysql的substr函数常用语法
  18. 电容类型 耐压 容量 特点
  19. [51nod1326]遥远的旅途
  20. 红图app的模式有未来吗?

热门文章

  1. C++_member template成员模板
  2. python缩进用什么键盘好_关于Python基础缩进和选择的介绍
  3. ios 标签 html,ios HTML的标签的过滤
  4. ajax与easyui树节点,EasyUI中的tree用法介绍
  5. 别再纠结线程池大小/线程数量了,没有固定公式的
  6. 【RocketMQ工作原理】消息的存储
  7. [Spring 深度解析]第5章 Spring之DAO
  8. matlab定子磁链观测器,一种基于二阶广义积分器的永磁同步电机定子磁链观测方法...
  9. python中递归函数的实例_Python 递归函数详解及实例
  10. Python开发基础总结之模块+日志+自省