PyFluent入门之旅(8) PyFluent API 分类与区别

news2024/11/14 20:29:37

PyFluent提供了两种主要的API来与Ansys Fluent进行交互:

  1. Settings API
  2. TUI API

通过这两种接口方式,可以控制 Ansys Fluent 的各个方面,包括从网格生成到后处理的所有操作。

分类

Settings API

pyFluentSettings API类似于 Ansys Fluent 中的对象树,通过Settings API可以配置和控制 Fluent 的设置,比如求解器设置、物理模型选择、材料属性定义、边界条件设置等,还可以在不直接操作 Fluent 用户界面的情况下,通过 Python 脚本预设各种参数,实现模型的快速设置和批量运行。

具体功能包括:

  • 求解器设置:指定求解器类型(压力-速度耦合、时间步长、迭代次数等)。

  • 物理模型配置:选择和配置所需的物理模型,如湍流模型、多相流模型等。

  • 材料和流体属性:定义使用的流体或固体的物理和化学性质。

  • 边界条件设置:为模型的入口、出口、壁面等边界指定适当的条件。

  • 网格设置:控制网格的生成和适应性。

TUI API

pyFluentTUI (Text User Interface) API 类似于 Ansys Fluent 控制台中使用的 TUI 命令

通过 TUI API,用户可以在 Python 环境中直接调用 Fluent 的命令,实现对 Fluent 操作的自动化和脚本化。

TUI API 的特点包括:

  • 直接命令执行:可以直接执行 Fluent TUI 命令,如读取文件、初始化求解器、开始计算等。
  • 宏和脚本运行:运行自定义的 Fluent TUI 脚本或宏,以自动化重复性任务或复杂操作。
  • 交互式操作:即使在批处理模式下也能进行交互式操作,提供灵活的控制能力。

使用 Settings APITUI API,可以更加灵活和有效地在 Python 环境中控制 Fluent 的运行,实现复杂的 CFD 分析任务自动化。这对于需要运行多个案例或进行参数化研究的用户尤其有用。

常用功能对比

这里以一些常用功能为例对上述两种API进行对比

首先需要导入pyfluent并启动求解模式,读取网格或case文件

import ansys.fluent.core as pyfluent
from ansys.fluent.core.launcher.pyfluent_enums import UIMode

solver = pyfluent.launch_fluent(precision="double", processor_count=8, mode="solver",ui_mode= UIMode.GUI)
solver.file.read_mesh(file_name = "文件名")

修改单位

TUI

修改单位的TUI控制台命令为: /define/units 单位名 单位

例如修改长度单位为mm:/define/units length mm

TUI API命令为:

solver.tui.define.units("length", "mm")

Settings API

solver.setup.general.units.set_units(quantity = "length", units_name = "mm", scale_factor = 1., offset = 0.)

开启能量方程

TUI

solver.tui.define.models.energy("yes")

Settings API

solver.setup.models.energy.enabled = True

创建材料

以创建液态水为例

TUI

solver.tui.define.materials.copy("fluid", "water-liquid")

Settings API

solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid")

设置湍流模型

TUI

修改湍流模型的TUI控制台命令为: /definemodels/viscous/模型名 yes

在这里插入图片描述

例如:/definemodels/viscous/kw-sst? yes

solver.tui.define.models.viscous.kw_sst('yes')

Settings API

solver.setup.models.viscous.model = 'k-omega'

如果不确定模型的名称,可以使用allowed_values()方法确认有哪些模型字符串值可以使用

>>>solver.setup.models.viscous.model.allowed_values()
['inviscid', 'laminar', 'k-epsilon-standard', 'k-omega-standard', 'mixing-length', 'spalart-allmaras', 'k-kl-w', 'transition-sst', 'reynolds-stress', 'scale-adaptive-simulation', 'detached-eddy-simulation', 'large-eddy-simulation']

可以使用 print_state 方法以简单文本格式打印当前状态。

例如:

>>> solver.setup.models.print_state()
multiphase : 
  models : none
  number_of_phases : 0
energy : 
  enabled : False
viscous : 
  model : k-omega
  k_omega_model : sst
  k_omega_options : 
    kw_low_re_correction : False
  near_wall_treatment : 
    wall_omega_treatment : correlation
  transition_module : none

设置边界条件

设置边界条件需要提前确认各个边界的命名与类型

例如想要修改图示速度入口的速度为2m/s

在这里插入图片描述

TUI

修改边界条件的TUI控制台命令为:/define/boundary-conditions/set/

例如:/define/boundary-conditions/set/velocity-inlet velocity-inlet-2 velocity-inlet-2 () vmag no 2 quit

solver.tui.define.boundary_conditions.set.velocity_inlet("velocity-inlet-2", "velocity-inlet-2", (), "vmag", "no", 2, "quit")

Settings API

Settings API的层级与GUI一致

在这里插入图片描述

solver.setup.boundary_conditions.velocity_inlet['velocity-inlet-1'] = {"momentum" : {"velocity" : {"value" : 2.}}}

inlet1 = solver.setup.boundary_conditions.velocity_inlet['velocity-inlet-1']
inlet1.momentum.velocity.value = 2

初始化及计算

TUI

solver.tui.solve.initialize.hyb_initialization()
solver.tui.solve.iterate(100)

Settings API

solver.solution.initialization.hybrid_initialize()
solver.solution.run_calculation.iterate(iter_count=100)

注意事项

  • 以上代码的测试环境基于Fluent 2024R1 与 ansys-fluent-core 0.20.dev9

  • 如果使用本文使用的代码存在问题请检查自己的软件版本及使用环境。

  • pyFluent版本更新很快,dev版相较于stable版本很多属性及方法都有所差异,具体可查询相应版本的用户文档

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

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

相关文章

线性表——数据结构

线性表 文章目录 线性表线性表的定义和基本操作线性表的定义线性表的基本操作 线性表的顺序表示顺序表的定义顺序表的实现——静态分配顺序表的实现——动态分配顺序表的特点 线性表的定义和基本操作 线性表的定义 线性表(Linear List)的定义 ​ 线性…

略谈set与map的pair封装与进入哈希

引子:之前我们讲了红黑树的自实现,与小小的接口实现,那set与map的pair封装是如何实现的呢?,今天我们来一探究竟,而且我们也要进入新章节--哈希 对于operator--()的封装: 注意:牢记思…

动手学深度学习V2每日笔记(批量归一化、ResNet)

本文主要参考沐神的视频教程 https://www.bilibili.com/video/BV1Uv411G71b/spm_id_fromautoNext&vd_sourcec7bfc6ce0ea0cbe43aa288ba2713e56d https://cv.gluon.ai/model_zoo/classification.html 文档教程 https://zh-v2.d2l.ai/ 本文的主要内容对沐神提供的代码中个人不…

【OpenHarmony】openharmony移植到RK3568------搭建开发环境

一、关于OpenHarmony OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促…

各种高端链游 区块链游戏 休闲小游戏DAPP开发

【西游闯关】-高端区块链3D手游 【我朝有马】-高端区块链3D手游 【弹弹岛2】-高端区块链3D手游

FiddlerCharles请求包导入Postman教程

前言 晓杰因开发需要经常需要使用抓包工具进行抓包然后使用POSTMAN测试,每次复制都很麻烦,就想着如何直接抓包工具中导出,postman导入! Fiddler 这个有2个方案,第一个方案是因为第二个方案发现的! 方案…

html+css+js网页设计 找法网2个页面(带js)ui还原度百分之90

htmlcssjs网页设计 找法网2个页面(带js)ui还原度百分之90 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑…

私域流量运营中的精准量化与开源AI智能名片O2O商城小程序的应用深度解析

摘要:在数字化时代,私域流量作为品牌直接与消费者建立联系的重要桥梁,其管理和运营策略直接影响着企业的市场竞争力。本文深入探讨了私域流量运营的底层逻辑——精准量化运营,详细分析了其核心要素及实现路径。同时,结…

Java学习篇(一)| 如何生成分布式全局唯一ID

Java学习篇(一)| 如何生成分布式全局唯一ID 一、使用场景二、常用方法1、UUID (尽量不要用)2、数据库自增 (用的最多-但不适合做分布式ID)3、Redis 生成ID (可用)1、原因2、通过代码…

AI革新3D建模:Stable Fast 3D工具的高效应用——图片快速生成3D模型

在3D建模领域,AI技术的介入正引发一场革命。Stable Diffusion(SD)的最新应用——Stable Fast 3D,为快速生成3D模型提供了一个强大的解决方案。以下是对这项技术及其应用的详细介绍和优化建议。 一、工具概览 Stable Fast 3D模型:这是一个基于AI的3D模型生成工具,可通过H…

Linux基础-总结篇

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过前面30多小节的内容介绍,我们从虚拟机的安装,到Linux文件的基本操作(增删改查),打包…

贪心算法总结(3)

一、最长回文串 409. 最长回文串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestPalindrome(string s) {int hash[127]{0};for(char&ch:s) hash[ch];int ret0;for(int&x:hash) retx/2*2; //技巧1 利用向下取整return ret<s.size()?…

linux文件——深度学习文件fd、文件系统调用

前言&#xff1a;从本片开始正式进入linux文件的学习&#xff0c;本片内容主要是文件的fd。 本篇内容博主将要先带友友回忆C语言中的文件操作接口&#xff0c;然后再过渡到操作系统中的系统调用的学习&#xff0c;最后理解操作系统中的文件操作。 ps&#xff1a;本节内容设计一…

Android 10.0 DocumentsUI文件管理器首次进入默认显示内部存储文件功能实现

1.前言 在10.0的系统rom定制化开发中,在关于文件管理器的某些功能中,在首次进入文件管理器的时候默认进入下载 文件夹,点击菜单选择内部存储的时候,会显示内部存储的内容,客户开发需要要求默认显示内部存储的文件 接下来分析下功能的实现 如图: 2.DocumentsUI文件管理器首…

入营测评题解

第一题&#xff1a;first 第二题&#xff1a;chengji 打擂台&#xff0c;每个数跟当前最大、最小值比较&#xff0c;维护当前最值即可。 #include<bits/stdc.h> using lllong long; using namespace std;const int N1e610;int n; int x;//1e9, ll最大9e18 ll maxn0,minn…

C++ 新特性 | C++17 常用新特性介绍

目录 1、结构化绑定 2、constexpr扩展 2.1、constexpr lambda 2.2、constexpr if 2.3、constexpr string 4、if with initializer 5、std::optional 6、使用inline定义内联变量 7、std::filesystem库 8、折叠表达式 9、模板的模板参数推导 9.1、从构造函数参数推导…

景联文科技:破解数据标注行业痛点,引领高质量AI数据服务

数据标注行业是人工智能和机器学习领域中一个非常重要的组成部分。随着AI技术的发展&#xff0c;对高质量标注数据的需求也在不断增长。 数据标注市场的痛点 1. 团队管理 在众包和转包模式下&#xff0c;管理大量的标注人员是一项挑战。 需要确保标注人员的专业性、稳定性和…

【ConcurrentHashMap】JDK1.7版本源码解读与分析

如果对文章中提到的与 HashMap 相关的部分有任何疑问, 请移步HashMap源码详解 简介 底层是一个 Segment[] 数组, 每个 Segment对象 内部又有一个 Entry[ ] 数组, 一个 Entry[] 数组就相当于一个HashMap Entry[ ]采用拉链法解决冲突, 但是没有红黑树, 红黑树是1.8才引入的; 一…

音频进阶学习一——模拟信号和数字信号

文章目录 前言|版本声明&#xff1a;山河君&#xff0c;未经博主允许&#xff0c;禁止转载 一、什么是模拟信号和数字信号信号模拟信号数字信号数字和模拟信号的区别一览 二、信号处理系统总结 前言 所有软件的运行都得益于硬件上的突破&#xff0c;数字信号是从40年前就开始高…

达梦数据库 物理备份还原

达梦的物理备份还原 1.背景2.要求3.实验步骤3.1 相关术语3.2 准备工作3.3 联机备份还原3.3.1 数据备份3.3.1.1 手动备份3.3.1.2 定时备份 3.3.2 管理备份3.3.2.1 备份目录管理3.3.2.2 备份集校验与删除 3.3.3 数据还原 3.4 脱机备份还原3.4.1 DMRMAN工具3.4.2 数据备份3.4.2.1 …