ANSYS FLUENT 培训教材 第七节:UDF 安世亚太科技(北京)有限公司.

Slides:



Advertisements
Similar presentations
TOEFL Speaking ----Q1&Q2 坚果托福 秀文. 评分标准评分标准 Volume Grammar Fluency Logic / Organization Lexical ability Pronunciation.
Advertisements

Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
南京楚然电子科技有限公司 Nanjing Truerun Electronics Technology Co.,Ltd
破舊立新(三) 人生召命的更新 使徒行傳廿六章19-23節.
--- Chapter 10 Convection ---
自衛消防編組任務職責 講 義 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add.
真题重现:广东高考中的不定式。 1 (2008年高考题)For example, the proverb,“ plucking up a crop _________(help) it grow ,” is based on the following story… 2 (2007年高考题)While.
Performance Evaluation
資料庫設計 Database Design.
-Artificial Neural Network- Hopfield Neural Network(HNN) 朝陽科技大學 資訊管理系 李麗華 教授.
天文望远镜集成建模研究 杨德华 南京天文光学技术研究所 30 NOV, 年中国虚拟天文台年会 广西师范大学 桂林
Writing 促销英文信 促销的目的就是要卖出产品,那么怎样才能把促销信写得吸引人、让人一看就对产品感兴趣呢?下面就教你促销信的四步写法。
XI. Hilbert Huang Transform (HHT)
深層學習 暑期訓練 (2017).
3-3 Modeling with Systems of DEs
Thinking of Instrumentation Survivability Under Severe Accident
Differential Equations (DE)
D. Halliday, R. Resnick, and J. Walker
Purposes of Mold Cooling Design
中国散裂中子源小角谱仪 的实验数据格式与处理算法 报告人:张晟恺 中国科学院高能物理研究所 SCE 年8月18日
Chapter 5: Flow Measurement &meters
Logistics 物流 昭安國際物流園區 總經理 曾玉勤.
附加内容 “AS”用法小结(1).
第二十九單元 方向導數與梯度.
Course 9 NP Theory序論 An Introduction to the Theory of NP
信号与图像处理基础 An Introduction to Signal and Image Processing 中国科学技术大学 自动化系
创建型设计模式.
實驗室通風.
Short Version : 6. Work, Energy & Power 短版: 6. 功,能和功率
機械波 Mechanical Waves Mechanical wave is a disturbance that travels through some material or substance called the medium for wave. Transverse wave is the.
C 語言簡介 - 2.
XBRL未來發展趨勢 2009年12月 For information on applying this template onto existing presentations, refer to the notes on slide 3 of this presentation. The Input.
The expression and applications of topology on spatial data
Short Version : 15. Fluid Motion 短版: 15. 流體運動
边界条件/CFX表达式语言 讲座 3.
机器人学基础 第四章 机器人动力学 Fundamentals of Robotics Ch.4 Manipulator Dynamics
實驗1 Streaking isolation of bacteria 細菌劃線分離
Short Version :. 11. Rotational Vectors & Angular Momentum 短版:. 11
弯管( Duct Bend ) 实例 1.
瞬态油漆混合器 练习 6.
塑膠材料的種類 塑膠在模具內的流動模式 流動性質的影響 溫度性質的影響
多相流搅拌器 练习 7.
DOE II建築節能模擬軟體介紹 -空調節能設計篇
Chapter 8 Thermodynamics of High-Speed Gas Flow (第8章 气体和蒸气的流动)
軟體工程:如何開發軟體? 把它看成是一件工程。 那麼就會有一些工具、技術、方法,也有管理的議題。
First-Law Analysis for a Control Volume
Neutron Stars and Black Holes 中子星和黑洞
Network Design in the Supply Chain (Part1)
Low Cost Materials for High Energy Sodium-ion Battery
Chapter 5 Recursion.
Microsoft SQL Server 2008 報表服務_設計
資料結構 Data Structures Fall 2006, 95學年第一學期 Instructor : 陳宗正.
為何要做好零售 Ways to Increase Retail
软件工程 第四章 软件设计 软件过程设计技术与工具.
3.5 Region Filling Region Filling is a process of “coloring in” a definite image area or region. 2019/4/19.
Speaker: Liu Yu-Jiun Date: 2009/4/29
虚 拟 仪 器 virtual instrument
線性規劃模式 Linear Programming Models
华南师范大学生命科学学院05级技术(2)班 刘俏敏
想想看: 長方體體積.
Q & A.
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
Create and Use the Authorization Objects in ABAP
带有共轭换热的流动(Flow with CHT)
定语从句(11).
动词不定式(6).
句子成分的省略(3).
Lecture #10 State space approach.
定语从句(4).
Section 1 Basic concepts of web page
Presentation transcript:

ANSYS FLUENT 培训教材 第七节:UDF 安世亚太科技(北京)有限公司

概要 FLUENT UDF简介 FLUENT 数据结构和宏 两个例子 UDF 支持

简介 什么是UDF? 为什么使用 UDFs? UDF 是用户自己用C语言写的一个函数,可以和FLUENT动态链接 三角函数,指数,控制块,Do循环,文件读入/输出等 预定义宏 允许获得流场变量,材料属性,单元几何信息及其他 为什么使用 UDFs? 标准的界面不能编程模拟所有需求: 定制边界条件,源项,反应速率,材料属性等 定制物理模型 用户提供的模型方程 调整函数 执行和需求函数 初始化

可以使用UDF的位置 User-Defined Properties User-Defined BCs User Defined INITIALIZE Segregated PBCS Exit Loop Repeat Check Convergence Update Properties Solve Turbulence Equation(s) Solve Species Solve Energy Initialize Begin Loop DBCS Solve Other Transport Equations as required Solver? Solve Mass Continuity; Update Velocity Solve U-Momentum Solve V-Momentum Solve W-Momentum Solve Mass & Momentum Solve Mass, Momentum, Energy, Species User-defined ADJUST Source terms Source terms This slide takes a birds-eye-view of the FLUENT solvers. The solution procedure begins with initialization, following which an iteration loop is opened. For keeping things simple, we are considering only steady state analysis procedure here. Within the loop we solve the conservation equations for mass, momentum and energy either as coupled or in sequence based on the choice of the solver. Other scalar equations like turbulence, species and user-defined-scalars are solved sequentially after the basic flow equations. We then update boundary conditions, properties based on the recent solution Next the state of convergence is checked and a decision is made whether or not to continue through the iteration loop. Now, for users to customize the code, we needed to design ‘access-point’s for the user. Those are shown in blue boxes. These are: The user can initialize the fields his way; Can take control at the top of the iteration loop for making some special computation; Can add source terms to all equations; Can defined most properties with custom functions; Can prescribe special boundary conditions. And what are not shown here are that the user can make model specific changes - for example, can modify convective flux function for scalars, various multiphase functions, modify turbulent viscosity or even time steps in unsteady analysis.

5 UDF 数据结构 (1) 在UDF中,体域和面域通过Thread数据类型获得 Thread 是 FLUENT 定义的数据类型 为了在thread (zone)中获得数据,我们需要提供正确的指针,并使用循环宏获得thread中的每个成员(cell or face) Domain Cells Cell Thread face Thread Faces Domain Cell Boundary (face thread or zone) Fluid (cell thread or zone) 5

6 UDF 数据结构(2) cell_t 声明了识别单元的整型数据类型 face_t声明了识别面的整型数据类型 Type Variable Meaning of the declaration Domain *d; d is a pointer to domain thread Thread *t; t is a pointer to thread cell_t c; c is cell thread variable face_t f; f is a face thread variable Node *node; node is a pointer to a node. Boundary face-thread (boundary-face ensemble) Fluid cell-thread (control-volume ensemble) Internal face-thread (internal-face ensemble) associated with cell-threads Nodes 6

7 UDF中的循环宏 几个经常用到的循环宏为: 对域d中所有单元thread循环: thread_loop_c(ct,d) { } 对域d中所有面thread循环: thread_loop_f(ft,d) { } 对thread t中所有单元循环: begin_c_loop(c, t) {…} end_c_loop (c,t) 对面thread中所有面循环 begin_f_loop(f, f_thread) { … } end_f_loop(f, f_thread) d: a domain pointer ct, t: a cell thread pointer ft,f_thread: a face thread pointer c: a cell thread variable f: a face thread variable 7

例子 – 抛物线分布的速度入口 在二维弯管入口施加抛物线分布的速度 x 方向的速度定义为 需要通过宏获得入口的中心点, 通过另外一个宏赋予速度条件

第1步 – 准备源代码 DEFINE_PROFILE 宏允许定义x_velocity函数 所有的UDFs 以 DEFINE_ 宏开始 x_velocity 将在 GUI中出现 thread 和 nv DEFINE_PROFILE 宏的参数, 分别用来识别域和变量 begin_f_loop宏通过thread指针,对所有的面f循环 F_CENTROID宏赋单元位置向量给 x[] F_PROFILE 宏在面 f上施加速度分量 代码以文本文件保存 inlet_bc.c Header file “udf.h” must be included at the top of the program by the #include command #include "udf.h" DEFINE_PROFILE(x_velocity,thread,nv) { float x[3]; /* an array for the coordinates */ float y; face_t f; /* f is a face thread index */ begin_f_loop(f, thread) F_CENTROID(x,f,thread); y = x[1]; F_PROFILE(f, thread, nv) = 20.*(1.- y*y/(.0745*.0745)); } end_f_loop(f, thread)

第 2 步 – 解释或编译 UDF 把 UDF 源码加入到源文件列表中 编译UDF 把 UDF 源码加入到源文件列表中 点击 Build进行编译和链接 如果没有错误,点击Load读入库文件 如需要,也可以卸载库文件 /define/user-defined/functions/manage 解释UDF 把 UDF 源码加入到源文件列表中 点击 Interpret FLUENT 窗口会出现语言 如果没有错误,点击 Close Define User-Defined Functions Compiled Define User-Defined Functions Interpreted

解释 vs. 编译 用户函数可以在运行时读入并解释,也可以编译形成共享库文件并和FLUENT链接 解释 vs. 编译 解释器是占用内存的一个大型程序 通过逐行即时执行代码 优势 – 不需要第三方编译器 劣势 – 解释过程慢,且占用内存 编译 UDF 代码一次转换为机器语言 运行效率高. 创建共享库,和其他求解器链接 克服解释器的缺陷 只有在没安装C编译器时使用解释方式 Explain for simple problems interpreted codes is the way to go. Does not require Makefiles. However, handles only a subset of the C language.

第3 步– 在 FLUENT GUI中hook UDF 把 Constant 改为 udf x_velocity 宏的名字为 DEFINE_PROFILE 中第一个参数

第4步 – 运行 可以在运行窗口中改变速度分布的更新间隔(默认为1) 运行 calculation 这个设置控制了流场多久(迭代或时间步)更新一次 运行 calculation

结果 左图为速度矢量图 右图为入口的速度矢量图,注意速度分布是抛物线型的

其他 UDF Hooks 除了边界条件、源项、材料属性外,UDF 还可用于 初始化 求解调整 壁面热流量 用户定义表面反应或体积反应 每次初始化执行一次 求解调整 每次迭代执行一次 壁面热流量 以传热系数方式定义流体侧的扩散和辐射热流量 应用于所有壁面 用户定义表面反应或体积反应 Case/ data 文件的读写 读入顺序必须和写出顺序一致 Execute-on-Demand 功能 不参与求解迭代 Define User-Defined Function Hooks

例 2 – 定制初始化 #include "udf.h“ DEFINE_INIT(my_init_function, domain) { cell_t c; Thread *ct; real xc[ND_ND]; thread_loop_c(ct,domain) begin_c_loop (c,ct) C_CENTROID(xc,c,ct); if (sqrt(ND_SUM(pow(xc[0]-0.5,2.), pow(xc[1] - 0.5,2.), pow(xc[2] - 0.5,2.))) < 0.25) C_T(c,ct) = 600.; else C_T(c,ct) = 300.; } end_c_loop (c,ct) 在球内设定初始温度600 K 球中心点位于 (0.5, 0.5, 0.5), 半径为 0.25, 其余区域为300 K 域指针通过变量传递到UDF thread_loop_c 宏用来获得所有单元threads (zones), begin_c_loop 宏获得每个单元thread中的单元

DEFINE 宏 DEFINE 宏的例子 DEFINE_ADJUST(name,domain); general purpose UDF called every iteration DEFINE_INIT(name,domain); UDF used to initialize field variables DEFINE_ON_DEMAND(name); an ‘execute-on-demand’ function DEFINE_RW_FILE(name,fp); customize reads/writes to case/data files DEFINE_PROFILE(name,thread,index); boundary profiles DEFINE_SOURCE(name,cell,thread,dS,index); equation source terms DEFINE_HEAT_FLUX(name,face,thread,c0,t0,cid,cir); heat flux DEFINE_PROPERTY(name,cell,thread); material properties DEFINE_DIFFUSIVITY(name,cell,thread,index); UDS and species diffusivities DEFINE_UDS_FLUX(name,face,thread,index); defines UDS flux terms DEFINE_UDS_UNSTEADY(name,cell,thread,index,apu,su); UDS transient terms DEFINE_SR_RATE(name,face,thread,r,mw,yi,rr); surface reaction rates DEFINE_VR_RATE(name,cell,thread,r,mw,yi,rr,rr_t); volumetric reaction rates DEFINE_SCAT_PHASE_FUNC(name,cell,face); scattering phase function for DOM DEFINE_DELTAT(name,domain); variable time step size for unsteady problems DEFINE_TURBULENT_VISCOSITY(name,cell,thread); calculates turbulent viscosity DEFINE_TURB_PREMIX_SOURCE(name,cell,thread,turbflamespeed,source); turbulent flame speed DEFINE_NOX_RATE(name,cell,thread,nox); NOx production and destruction rates It is not necessary and you should not go into a detailed description on each of the above DEFINE macros. Pick a couple and describe what they are used for.

几何和时间宏 C_NNODES(c,t); Returns nodes/cell C_NFACES(c,t); Returns faces/cell F_NNODES(f,t); Returns nodes/face C_CENTROID(x,c,t); Returns coordinates of cell centroid in array x[] F_CENTROID(x,f,t); Returns coordinates of face centroid in array x[] F_AREA(A,f,t); Returns area vector in array A[] C_VOLUME(c,t); Returns cell volume C_VOLUME_2D(c,t); Returns cell volume (axisymmetric domain) real flow_time(); Returns actual time int time_step; Returns time step number RP_Get_Real(“physical-time-step”); Returns time step size Don’t discuss all in detail.

流场变量宏 C_R(c,t); Density C_P(c,t); Pressure C_U(c,t); U-velocity C_V(c,t); V-velocity C_W(c,t); W-velocity C_T(c,t); Temperature C_H(c,t); Enthalpy C_K(c,t); Turbulent kinetic energy (k) C_D(c,t); Turbulent dissipation rate (ε) C_O(c,t); Specific dissipation of k (ω) C_YI(c,t,i); Species mass fraction C_UDSI(c,t,i); UDS scalars C_UDMI(c,t,i); UDM scalars C_DUDX(c,t); Velocity derivative C_DUDY(c,t); Velocity derivative C_DUDZ(c,t); Velocity derivative C_DVDX(c,t); Velocity derivative C_DVDY(c,t); Velocity derivative C_DVDZ(c,t); Velocity derivative C_DWDX(c,t); Velocity derivative C_DWDY(c,t); Velocity derivative C_DWDZ(c,t); Velocity derivative C_MU_L(c,t); Laminar viscosity C_MU_T(c,t); Turbulent viscosity C_MU_EFF(c,t); Effective viscosity C_K_L(c,t); Laminar thermal conductivity C_K_T(c,t); Turbulent thermal conductivity C_K_EFF(c,t); Effective thermal conductivity C_CP(c,t); Specific heat C_RGAS(c,t); Gas constant Don’t discuss all in detail.

流场变量宏 C_R(c,t); Density C_P(c,t); Pressure C_U(c,t); U-velocity C_V(c,t); V-velocity C_W(c,t); W-velocity C_T(c,t); Temperature C_H(c,t); Enthalpy C_K(c,t); Turbulent kinetic energy (k) C_D(c,t); Turbulent dissipation rate (ε) C_O(c,t); Specific dissipation of k (ω) C_YI(c,t,i); Species mass fraction C_UDSI(c,t,i); UDS scalars C_UDMI(c,t,i); UDM scalars C_DUDX(c,t); Velocity derivative C_DUDY(c,t); Velocity derivative C_DUDZ(c,t); Velocity derivative C_DVDX(c,t); Velocity derivative C_DVDY(c,t); Velocity derivative C_DVDZ(c,t); Velocity derivative C_DWDX(c,t); Velocity derivative C_DWDY(c,t); Velocity derivative C_DWDZ(c,t); Velocity derivative C_MU_L(c,t); Laminar viscosity C_MU_T(c,t); Turbulent viscosity C_MU_EFF(c,t); Effective viscosity C_K_L(c,t); Laminar thermal conductivity C_K_T(c,t); Turbulent thermal conductivity C_K_EFF(c,t); Effective thermal conductivity C_CP(c,t); Specific heat C_RGAS(c,t); Gas constant C_DIFF_L(c,t); Laminar species diffusivity C_DIFF_EFF(c,t,i); Effective species diffusivity Don’t discuss all in detail.

UDM 对每个单元由用户分配内存 定义多达500个变量 可以通过 UDFs获得: 数据信息存在 FLUENT data 文件中 C_UDMI(cell,thread,index); F_UDMI(face,thread,index); 数据信息存在 FLUENT data 文件中 Define User-Defined Memory

UDS FLUENT 可以求解多达50个用户 定义标量的输运方程 例子 UDS 变量的数量 UDS 在哪个域内求解 通量函数 非稳态函数 DEFINE_UDS_FLUX(name,face,thread,index) 非稳态函数 DEFINE_UDS_UNSTEADY(name,cell,thread,index,apu,su) 例子 能用来求解磁流体方程 Define User-Defined Scalars The setup for UDS are summarized in these two slides.

其他宏 还有许多其他宏: 湍流模型 多相流模型 化学反应流 动网格 输入/输出

UDF 技术支持 由于 UDFs 可能非常复杂, ANSYS 不对用户的UDFs精度及求解稳定性负责 支持限于UDFs 和 FLUENT 求解器间的通讯 Explain for simple problems interpreted codes is the way to go. Does not require Makefiles. However, handles only a subset of the C language.

A Pera Global Company © PERA China 谢谢 www.peraglobal.com.cn A Pera Global Company © PERA China