当前位置:文档之家› UDF的应用实例

UDF的应用实例

UDF的应用实例
UDF的应用实例

动网格的入门专题

题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Mesh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢! 该专题主要包括以下的主要内容: ##1. 动网格的相关知识介绍; ##2. 以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; ##3. 与动网格应用有关的参考文献; ##4. 使用动网格进行计算的一些例子。 ##1. 动网格的相关知识介绍 有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUENT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF 定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。 注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。 2、动网格更新方法 动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型(spring-based smoothing)、动态分层模型(dynamic layering)和局部重划模型(local remeshing)。 弹簧近似光滑模型 在弹簧近似光滑模型中,网格的边被理想化为节点间相互连接的弹簧。移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。 原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法: (1)移动为单方向。 (2)移动方向垂直于边界。 如果两个条件不满足,可能使网格畸变率增大。另外,在系统缺省设置中,只有四面体网格(三维)和三角形网格(二维)可以使用弹簧光顺法,如果想在其他网格类型中激活该模型,

Fluent_UDF_第七章_UDF的编译与链接

第七章 UDF的编译与链接 编写好UDF件(详见第三章)后,接下来则准备编译(或链接)它。在7.2或7.3节中指导将用户编写好的UDF如何解释、编译成为共享目标库的UDF。 _ 第 7.1 节: 介绍 _ 第 7.2 节: 解释 UDF _ 第 7.3 节: 编译 UDF 7.1 介绍 解释的UDF和编译的UDF其源码产生途径及编译过程产生的结果代码是不同的。编译后的UDF由C语言系统的编译器编译成本地目标码。这一过程须在FLUENT运行前完成。在FLUENT运行时会执行存放于共享库里的目标码,这一过程称为“动态装载”。 另一方面,解释的UDF被编译成与体系结构无关的中间代码或伪码。这一代码调用时是在内部模拟器或解释器上运行。与体系结构无关的代码牺牲了程序性能,但其UDF可易于共享在不同的结构体系之间,即操作系统和FLUENT版本中。如果执行速度是所关心的,UDF文件可以不用修改直接在编译模式里运行。 为了区别这种不同,在FLUENT中解释UDF和编译UDF的控制面板其形式是不同的。解释UDF的控制面板里有个“Compile按钮”,当点击“Compile按钮”时会实时编译源码。编译UDF的控制面板里有个“Open按钮”,当点击“Open按钮” 时会“打开”或连接目标代码库运行FLUENT(此时在运行FLUENT之前需要编译好目标码)。 当FLUENT程序运行中链接一个已编译好的UDF库时,和该共享库相关的东西都被存放到case文件中。因此,只要读取case文件,这个库会自动地链接到FLUENT 处理过程。同样地,一个已经经过解释的UDF文件在运行时刻被编译,用户自定义的C函数的名称与内容将会被存放到用户的case文件中。只要读取这个case文件,这些函数会被自动编译。 注:已编译的UDF所用到的目标代码库必须适用于当前所使用的计算机体系结构、操作系统以及FLUENT软件的可执行版本。一旦用户的FLUENT升级、操作系统改变了或者运行在不同的类型的计算机,必须重新编译这些库。

对一个简单解释型udf程序的详细解释

对一个简单解释型udf程序的详细解释 #include "udf.h" /*udf.h是一个头文件,如果不写的话就不能使用fluent udf中的宏,函数等*/ DEFINE_PROFILE(pressure_profile, t, i) /*是一个宏,本例中用来说明进口压力与垂直坐标变量(还可以是其他的变量)的关系。pressure_profile 是函数名,可随意指定。t的数据类型是Thread *t ,t 表示指向结构体thread(这里的thread表示边界上所有的网格面的集合)的指针。i的数据类型是Int,表示边界的位置?或者说是什么每个循环内对位置变量(这里应该是质心的纵坐标)设置的数值标签*/ { real x[ND_ND]; /* 定义了质心的三维坐标,数据类型为real*/ real y; /*定义了一个变量y, 数据类型为real */ face_t f; /*定义了一个变量f, 数据类型为face_t,也就是网格面的意思,即f代表一个网格单元的网格面*/ begin_f_loop(f, t) /*表示遍寻网格面,它的意思是说在计算的时候,要扫描所定义边界的所有网格面,对每个网格面都要赋值,值存储在F_PROFILE(f, t, i)中*/ {

F_CENTROID(x,f,t); /*一个函数,它的意思是读取每个网格面质心的二维坐标,并赋值给x。x 为名称,接收三维坐标值。f为网格面(因为这里只是取的面的二维坐标,所以为f,如果是网格单元的话,这里就为c)。t为指向结构体thread(这里的thread 表示边界上所有的网格面的集合)的指针*/ y = x[1]; /*把质心的三维坐标的纵坐标的数值赋给y*/ F_PROFILE(f, t, i) = 1.1e5 - y*y/(.0745*.0745)*0.1e5; /*赋给每个网格面的数值与网格质心纵坐标的关系。其实就是赋给质心的速度值(这里只有大小)与质心纵坐标的函数关系,因为fluent在计算的时候是把数据存储到网格质心上的,所以网格质心的速度值就代表网格的速度值。这里有了网格的质心纵坐标,然后有了质心速度值与纵坐标的函数关系,那么每个进口网格面的速度值也就知道了。f依然代表网格面。t表示指向结构体thread(这里的thread表示边界上所有的网格面的集合)的指针。i每个循环内对位置变量(这里应该是质心的纵坐标)设置的数值标签*/ } end_f_loop(f, t)/*结束循环*/ } 整体来看:包括两个宏:DEFINE_PROFILE(pressure_profile, t, i)和beginend_f_loop(f, t)。两个函数:F_CENTROID(x,f,t)和F_PROFILE(f, t, i)。其他都是变量。

动网格

FLUENT6.1全攻略 图10-16 转子定子模型的静压等值线图 在显示速度矢量时,同样有绝对速度和相对速度两种形式。另外需要注意的是,后处理过程不能在交界区中的壁面、内部、周期等类型的边界上建立数据显示面(surface),但是可以在交界面上建立数据显示面,但结果将是单边的,就是只显示交界面一侧的结果。而且在跨越交接面时,等值线中可能会有细微的不连续。在画三维填充等值线时,图形中可能会出现一些小缝,但是这些缝只是图形显示问题,与解的连续性无关。 10.6 动网格模型 10.6.1 简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUENT根据每个迭代步中边界的变化情况自动完成。在使用移动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。 FLUENT要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则 21

FLUENT6.1全攻略 22 的,可以在模型设置中用FLUENT 软件提供的非正则或者滑动界面功能将各区域连接起来。 10.6.2 动网格守恒方程 在任意一个控制体中,广义标量Φ的积分守恒方程为: ()∫∫∫∫??+??=??+V V Φg V V dV S A d ΦΓA d u u ρΦV ρΦd dt d G G G G (10-7) 式中ρ为流体密度,u G 为速度向量,g u G 移动网格的网格速度,Γ为扩散系数,ΦS 为 源项,V ?代表控制体V 的边界。 方程(10-7)中的时间导数项,可以用一阶后向差分格式写成: ()()t V V dV dt d n n V ΔΦ?Φ=Φ+∫ρρρ1 (10-8) 式中n 和n+1代表不同的时间层。n+1层上的V n+1由下式计算: t dt dV V V n n Δ+=+1 (10-9) 式中dV/dt 是控制体的时间导数。为了满足网格守恒定律,控制体的时间导数由下式计算: ∫∑??=?=V n j j j g g f A u A d u dt dV G G G G , (10-10) 式中n f 是控制体积的面网格数,j A G 为面j 的面积向量。点乘j j g A u G G ?,由下式计算: t V A u j j j g Δ=?δG G , (10-11) 式中j δV 为控制体积面j 在时间间隔Δt 中扫过的空间体积。 10.6.3 动网格更新方法 动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧光滑模型、动态层模型和局部重划模型。

FLUENT 动网格教程

FLUENT动网格教程 摘自https://www.doczj.com/doc/6213878633.html,/dvbbs/dispbbs.asp?boardid=61&id=1396题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Me sh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢!。 该专题主要包括以下的主要内容: §一、动网格的相关知识介绍; §二、以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; §三、与动网格应用有关的参考文献; §四、使用动网格进行计算的一些例子。 §一、动网格的相关知识介绍 有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUE NT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。 注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。

UDF 编译疑难问题

UDF 编译疑难问题 作者华南理工大学何奎2016 5月 随着用户求解的问题越来越复杂,使用fluent 软件难免使用编译型的UDF,编译型需要用户安装微软visual stadio C++ 开发软件,并做正确的环境变量配置。否则则会出现如nmake 不是内部命令的错误。除了编译环境的正确设置,还有一些细节上的疑难问题一并给出解决方法。目前这些问题都是网上搜索不到的,希望有缘人能在百度文库里找到这篇文献。 关于环境变量的设置,网络上已经有大量的实例,现介绍一种简单的环境变量配置方法: 在fluent 的安装目录下找到udf.bat, 修改以下内容: set MSVC_DEFAULT=%ProgramFiles(x86)%\Microsoft Visual Studio 14.0 if exist "%MSVC_DEFAULT%\VC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT% if not "%MSVC%" == "" goto msvc_env110 这个文件中还有其他类似的语句,但是都是重复查找不同的编译环境。通过查找vcvarsall.bat,fluent才知道编译器位置。如果不是就要靠运行msvc_env110,那就要手动设置环境变量了。注意你安装了VS2015以后,在program(x86)中有Microsoft Visual Studio 14.0,Microsoft Visual Studio 12.0,Microsoft Visual Studio 11.0,其中只有一个是有效的,这个要仔细确认(一般只有一个文件夹是完整的安装,估计这样做是为了向下兼容性)。 修改完了这个路径以后就OK了。 环境变量配置完全以后,还会出现一些别的问题。如编译UDF时会利用math.h, 注意编译这个文件有可能会出现很多问题。如下: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059: 语法错误:“常量”C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2143: 语法错误: 缺少“)”(在“/”的前面) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2143: 语法错误: 缺少“{”(在“/”的前面) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059: 语法错误:“/” C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(483): error C2059: 语法错误:“)” 如果光按fluent提示的查找错误,是不可能完成错误查找的,打开math.h因为你会看见483行是这样 _Check_return_ _ACRTIMP double __cdeclcbrt(_In_ double _X);(求立方根函数) 这个语句本身是没有什么问题的。如果想修改这条语句完成math.h的编译,那就走入了死胡同。那 么换个版本的math.h呢? 于是换了个瑞典公司开发的版本Copyright 2003-2010 IAR Systems AB(瑞典著名软件开发商). 结果编译出现: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(19): fatal error C1083: 无法打开包括文件: “ycheck.h”: No such file or directory 如果你查找ycheck.h,想加入这个头文件来解决这个问题的话,你会发现在中文资料库里根本就查不到 这样的头文件。这可能是该公司内部开发的一个头文件。所以这条路又行不通。那么如果将这条预处理程 序忽略掉呢?结果就会出现以下的编译错误: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(99): error C2061: 语法错误: 标识符“__ATTRIBUTES” C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\math.h(99): error C2059:

Fluent无法编译UDF文件的常见解决方法

解决Fluent无法编译UDF文件的问题 方法1 对于Fluent加载UDF时出现"The UDF library you are trying to load(libudf)is not complied for parallel use on the current platform (win64)"错误,主要是没有正确设置本机VS安装路径,导致udf编译器无法成功编译c代码。解决方法: 1. 找到Fluent内的UDF.bat编译器。这里以我自己2019R2的64位学生版为例,在D:\Program Files\ANSYS Inc\ANSYS Student\v194\fluent\ntbin\win64下找到udf.bat用记事本打开 2. 将本机Visual Studio的安装路径写入。这里以我自己VS2015为例,将本机visual studio 2015的安装路径赋值给MSVC_DEFAULT,由于VS2015的版本代号是14.0,因此将"%ProgramFiles(x86)%\Microsoft Visual Studio 14.0"替换为"D:\Program Files (x86)\Microsoft Visual Studio 14.0",保存文件即可,如图1~2所示 更改前

更改后 方法2 对于某些低版本的VS,以上操作可能不足以解决问题,需要手动配置环境变量,具体方法如下: 1.找到Fluent安装路径下的setenv.exe,双击运行选择是,路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\setenv.exe 2.右键“我的电脑”—属性—高级—环境变量,添加用户变量,以VS2013为例INCLUDE=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include; LIB=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\kernel32.lib Path=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;

动网格流沙版完美整理.

动网格 让网格动起来(1)—闲谈动网格 在固体有限元计算中,网格运动实非什么稀奇事儿。而且在绝多数固体计算的基本物理量是网格的节点位移,所以,固体计算中,网格节点运动是对的,没有运动反而不正常了。也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应力的产生。 流体计算与固体完全不同。其根源在于它们使用的网格类型不同。当前固体有限元计算采用的是拉格朗日网格,而流体计算则大多数采用的欧拉网格。如果说把拉格朗日网格中的节点点看作是真实世界的物质原子的话,那么欧拉网格的节点则好比是真实世界中的一个个传感器,它们总是呆在相同的位置,真实的记录着各自位置上的物理量。正常情况下,欧拉网格系统是这样的:计算域和节点保持位置不变,发生变化的是物理量,网格节点就像一个个布置在计算域中的传感器,记录该位置上的物理量。这其实是由流体力学研究方法所决定的。宏观与微观的差异决定了固体力学计算采用拉格朗日网格,流体计算采用欧拉网格。关于这部分的详细解说,可以参阅任何一本计算流体动力学书籍。 世界是公平的。有利必有弊。朗格朗日网格适合计算节点位移,然而对于过大的网格变形却难以处理。欧拉网格生来可以处理大变形(因为节点不动),然而对于对于节点运动的处理,则是其直接软肋。然而很不幸的是,现实生活中有太多网格边界运动的实例。如汽车发动机中的气缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。 计算流体动力学计算的基本物理量通常为:速度、温度、压力、组分。并不计算网格节点位移。因此要让网格产生运动,通常给节点施加的物理约束是速度。CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。配合瞬态时间,即可很方便的得出位移。当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。(2)网格节点速度是通过求解得到的。如6DOF模型基本上都属于此类。用户将力换算成加速度,然后将其积分成速度。 对于第一类动网格问题,在fluent中通常可以使用profile与UDF进行网格设置,通过规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格问题都归于此类。而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行积分而来。将力转换为速度或位移,一般涉及到加速度、转动惯量等物理量的计算。在fluent 中,可以使用6DOF模型进行处理,在CFX中,可以使用刚体模型(13.0以上版本才有)。在FLUENT中,动网格涉及的内容包括: (1)运动的定义。主要是PROFILE文件与UDF中的动网格宏。 (2)网格更新。FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。 需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。 动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。在避免负网格的同时,努力提高运动更新后的网格质量。

64位 ANSYS FLUENT 编译UDF方法

ANSYS FLUENT 12.x 13.x版下使用Visual Studio 2010编译UDF的设置方法 COMSOL出了点问题,只能重装系统搞定。神马软件都要重装啊,今天装好ANSYS后,打开FLUENT界面时,灵感闪现,想出下面的方法设置UDF编译环境。 其实ANSYS版的FLUENT用UDF是不需要到系统环境变量里面设置path,include,lib的,如果您用的是Visual Studio 2010及后续版本,只需要按一定的规则设置udf.bat文件就行了。从udf.bat文件结构看,VS版本在VS2010以前的都可以不用设置,即可使用。 实现方法,以Win7 X64位ANSYS X64位为例: 1.找到fluent安装目录下的udf.bat(C:\Program Files\ANSYS Inc\v121\fluent\ntbin\win64\udf.bat) 用文本编辑器修改udf.bat: 添加 echo trying to find MS C compiler, version 10.0.... set MSVC_DEFAULT=%ProgramFiles(x86)%\Microsoft Visual Studio 10.0 if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT% if not "%MSVC%" == "" goto msvc_env100 set MSVC_DEFAULT=%ProgramFiles%\Microsoft Visual Studio 10.0 if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT% if not "%MSVC%" == "" goto msvc_env100 :msvc_env100 set MSVC_VERSION=100 call "%MSVC%\VC\vcvarsall.bat" amd64 goto ms_c_end 注:如果Visual Studio安装到其他盘,(可能)需要修改路径,比如装到D盘Program Files下,便这样添加: set MSVC_DEFAULT=d:\Program Files\Microsoft Visual Studio 10.0 if exist "%MSVC_DEFAULT%\vC\vcvarsall.bat" set MSVC=%MSVC_DEFAULT% if not "%MSVC%" == "" goto msvc_env100 :msvc_env100 set MSVC_VERSION=100 call "%MSVC%\VC\vcvarsall.bat" amd64 goto ms_c_end

ICEM CFD动网格学习

FLUENT动网格教程 该专题主要包括以下的主要内容: §一、动网格的相关知识介绍; §二、以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; §三、与动网格应用有关的参考文献; §四、使用动网格进行计算的一些例子。 §一、动网格的相关知识介绍 有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUE NT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。 注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。 2、动网格更新方法 动网格计算中网格的动态变化过程可以用三种模型进行计算,即 弹簧近似光滑模型(spring-based smoothing)、 动态分层模型(dynamic layering) 局部重划模型(local remeshing)

udf编译的经验总结

转帖 udf编译的经验总结 关于:"nmake"不是内部命令或外部命令,也不是可运行程序 我在编译UDF时出现如下错误: Error: Floating point error: divide by zero Error Object: () > "nmake"不是内部命令或外部命令,也不是可运行程序 Error Object: () Error: open_udf_library:系统找不到指定目录 Error: Floating point error: divide by zero Error Object: () 我原来装的时turbo c/c++编译器,可能时环境变量没有设好的缘故。换用vc++6.0以后就没有这个问题了,另外,我用的是fluent6.2.16,希望遇到同样问题的同学借鉴一下,呵 呵。 udf编译的经验总结1)安装vc时候,只要选择了“环境变量”这一项,就不需要在“我 的电脑 > 属性 > 高级 > 环境变量”中 更改“include”“lib”“path”变量的值,保持默认状态即可; 2)如果是fluent6.1以上的版本,读入你的case文件,只要在 define->user-defined->functions->complied中, add你的udf源文件(*.c)和“udf.h”头文件,然后确定用户共享库(library name)的 名称,按“build”,就 相当于nmake用户共享库;在这一步中常出现的错误: (a)(system "move user_nt.udf libudf\ntx86\2d")0 (system "copy C:\Fluent.Inc\fluent6.1.22\src\makefile_nt.udf libudf\ntx86\2d\makefile")已复制 1 个文件。 (chdir "libudf")() (chdir "ntx86\2d")() 'nmake' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 'nmake' 不是内部或外部命令,也不是可运行的程序

fluent udf学习总结

fluent udf 阶段性小结 ——Flying_U 因工作需要,最近开始学习fluent二次开发功能。现在,根据工作日志将这一段时间主要的学习过程和总结的经验整理如下。 学习计划:从4月5号开始,计划花上一个月的时间了解和学习fluent udf的基本知识。目标是能够运用udf初步实现物理模型简化、掌握udf的基本用法并能根据工作需要实现相关udf功能。 4.5-4.6:浏览网站尽可能更多了解udf的知识,结合自己的实际情况分析那些知识是自己需要进一步深入学习的。 此阶段总结:1.udf是用户自定义函数的简称,其通过与fluent接口连接实现扩展fluent功能的作用。udf的主要功能有: ●定制边界条件、材料属性、表面和体积反应率、fluent输运方程的源项、用户自定义的 标量方程的源项、扩散函数等 ●调整每次迭代后的计算结果 ●初始化流场的解 ●在需要时进行udf的异步执行 ●强化后处理功能 ●强化现有的udf模型 ●传送返回值、修改fluent变量、操作外部文件案例和data文件 2. 自己现在想要实现的是udf功能是定制边界条件、定制fluent输运方程的源项、初始化流场的解和强化后处理功能;(刚开始自己也不太明确自己到底想用udf来做什么,对应上udf的主要功能是哪一部分,然后对自己不懂没理解的功能一一查询。) 3. 有相关资料的渠道有:百度知道,百度文库和doc88。其中,百度文库各种教程最多,百度知道能够快速定位回答具体的问题,doc88资料觉得更深入一些。(对搜集的资料进行及时的整理和归纳对自己学习有很大助力,很多资料都是不完全的或者自己当时没有完全理解的需要不同版本或者前后不同时间段对照着学习。) 4.6-4.9 根据自己的需求在udf帮组手册中查找实例并尝试按实例进行对照练习,初步了解udf相关知识,打通udf实现的过程(udf编写、编译和连接)。主要目的是了解udf的基本用法,初步了解udf宏命令。 此阶段总结:1.udf帮助手册里的实例对初学者特别有用,例子难度小,侧重流程和用法。 2. 解释型udf使用基本过程:将物理模型简化,确定udf实现的功能;编制c语言源代码;启动fluent并完成相关设置;加载并解释c语言代码;将udf与fluent相关联。初次尝试觉得难度很小,只是对c语言源程序的边界有点模糊,特别是在语言结构方面。 3. 进行编译型udf使用尝试,根据需要需先安装一个c编辑器,因手头有vs2012所以直接安装vs2012。安装vs2012的过程有点艰辛,因为自己电脑上装过其他的VS版本(未完全卸载),以及其他的一些开源c编辑器(一直在用),安装vs2012过程老是不成功(这里推荐使用vs2008,网上教程较多,出现相关的问题都能较容易地找到方法解决)。最后的解决办法是重装系统(各种尝试都未能解决安装问题后,可能与以前安装过的vs卸载不完全有关),并逐步尝试环境变量的设置。vs2012与fluent环境变量成功设置如下(win7 64位系统):

Fluent UDF 中文教程UDF第7章 编译与链接

第七章UDF的编译与链接 编写好UDF件(详见第三章)后,接下来则准备编译(或链接)它。在7.2或7.3节中指导将用户编写好的UDF如何解释、编译成为共享目标库的UDF。 _ 第 7.1 节: 介绍 _ 第 7.2 节: 解释 UDF _ 第 7.3 节: 编译 UDF 7.1 介绍 解释的UDF和编译的UDF其源码产生途径及编译过程产生的结果代码是不同的。编译后的UDF由C语言系统的编译器编译成本地目标码。这一过程须在FLUENT运行前完成。在FLUENT运行时会执行存放于共享库里的目标码,这一过程称为“动态装载”。 另一方面,解释的UDF被编译成与体系结构无关的中间代码或伪码。这一代码调用时是在内部模拟器或解释器上运行。与体系结构无关的代码牺牲了程序性能,但其UDF可易于共享在不同的结构体系之间,即操作系统和FLUENT版本中。如果执行速度是所关心的,UDF文件可以不用修改直接在编译模式里运行。 为了区别这种不同,在FLUENT中解释UDF和编译UDF的控制面板其形式是不同的。解释UDF的控制面板里有个“Compile按钮”,当点击“Compile按钮”时会实时编译源码。编译UDF的控制面板里有个“Open 按钮”,当点击“Open按钮”时会“打开”或连接目标代码库运行

FLUENT(此时在运行FLUENT之前需要编译好目标码)。 当FLUENT程序运行中链接一个已编译好的UDF库时,和该共享库相关的东西都被存放到case文件中。因此,只要读取case文件,这个库会自动地链接到FLUENT处理过程。同样地,一个已经经过解释的UDF文件在运行时刻被编译,用户自定义的C函数的名称与内容将会被存放到用户的case文件中。只要读取这个case文件,这些函数会被自动编译。 注:已编译的UDF所用到的目标代码库必须适用于当前所使用的计算机体系结构、操作系统以及FLUENT软件的可执行版本。一旦用户的FLUENT升级、操作系统改变了或者运行在不同的类型的计算机,必须重新编译这些库。 UDF必须用DEFINE宏进行定义,DEFINE宏的定义是在udf.h文件中。因此,在用户编译UDF之前,udf.h文件必须被放到一个可被找到的路径,或者放到当前的工作目录中。 udf.h文件放置在: path/Fluent.Inc/fluent6.+x/src/udf.h 其中path是Fluent软件的安装目录,即Fluent.Inc目录。X代表了你所安装的版本号。 通常情况下,用户不应该从安装默认目录中复制udf.h文件。编译器先在当前目录中寻找该文件,如果没找到,编译器会自动到/src目录下寻找。如果你升级了软件的版本,但是没有从你的工作目录中删除旧版本的udf.h文件,你则不能访问到该文件的最新版本。在任何情

udf宏的功能

2.3. Model-Specific DEFINE Macros The DEFINE macros presented in this section are used to set parameters for a particular model in ANSYS Fluent. Table 2.2: Quick Reference Guide for Model-Specific DEFINE Functions – Table 2.6: Quick Reference Guide for Model-Specific DEFINE Functions MULTIPHASE ONLY provides a quick reference guide to the DEFINE macros, the functions they are used to define, and the dialog boxes where they are activated in ANSYS Fluent. Definitions of each DEFINE macro are listed in udf.h. For your convenience, they are listed in Appendix B. DEFINE_ANISOTROPIC_CONDUCTIVITY DEFINE_CHEM_STEP DEFINE_CPHI DEFINE_DIFFUSIVITY DEFINE_DOM_DIFFUSE_REFLECTIVITY DEFINE_DOM_SOURCE DEFINE_DOM_SPECULAR_REFLECTIVITY DEFINE_ECFM_SOURCE DEFINE_ECFM_SPARK_SOURCE DEFINE_EC_RATE DEFINE_EMISSIVITY_WEIGHTING_FACTOR DEFINE_FLAMELET_PARAMETERS DEFINE_ZONE_MOTION DEFINE_GRAY_BAND_ABS_COEFF DEFINE_HEAT_FLUX DEFINE_IGNITE_SOURCE DEFINE_NET_REACTION_RATE DEFINE_NOX_RATE DEFINE_PDF_TABLE DEFINE_PR_RATE DEFINE_PRANDTL UDFs DEFINE_PROFILE DEFINE_PROPERTY UDFs DEFINE_REACTING_CHANNEL_BC DEFINE_REACTING_CHANNEL_SOLVER DEFINE_SBES_BF DEFINE_SCAT_PHASE_FUNC DEFINE_SOLAR_INTENSITY DEFINE_SOLIDIFICATION_PARAMS DEFINE_SOOT_MASS_RATES DEFINE_SOOT_NUCLEATION_RATES DEFINE_SOOT_OXIDATION_RATE DEFINE_SOOT_PRECURSOR DEFINE_SOURCE DEFINE_SOX_RATE DEFINE_SPARK_GEOM (R14.5 spark model) DEFINE_SPECIFIC_HEAT DEFINE_SR_RATE DEFINE_THICKENED_FLAME_MODEL DEFINE_TRANS UDFs DEFINE_TRANSIENT_PROFILE DEFINE_TURB_PREMIX_SOURCE DEFINE_TURB_SCHMIDT UDF DEFINE_TURBULENT_VISCOSITY DEFINE_VR_RATE DEFINE_WALL_FUNCTIONS DEFINE_WSGGM_ABS_COEFF Table 2.2: Quick Reference Guide for Model-Specific DEFINE Functions Function DEFINE Macro Dialog Box Activated In anisotropic thermal conductivity DEFINE_ANISOTROPIC_CONDUCTIVITY Create/Edit Materials mixing constant DEFINE_CPHI User-Defined Function Hooks homogeneous net mass reaction rate for DEFINE_CHEM_STEP User-Defined Function Hooks all species, integrated over a time step

Fluent UDF 第三章 编写UDF

第 3 章 编写 UDF
第 3 章 编写 UDF
本章包含了 FLUENT 中如何写 UDFs 的概述。
3.1 概述 3.2 写解释式 UDFs 的限制 3.3 FLUENT 中 UDFs 求解过程的顺序 3.4 FLUENT 网格拓扑 3.5 FLUENT 数据类型 3.6 使用 DEFINE Macros 定义你的 UDF 3.7 在你的 UDF 源文件中包含 udf.h 文件 3.8 定义你的函数中的变量 3.9 函数体 3.10 UDF 任务 3.11 为多相流应用写 UDFs 3.12 在并行中使用你的 UDF 3.1 概述(Introduction) 在你开始编写将挂到 FLUENT 代码以增强其标准特征的 UDF 之前,你必须 知道几个基本的要求。首先,UDFs 必须用 C 语言编写。它们必须使用 FLUENT 提供的 DEFINE macros 来定义。UDFs 必须含有包含于源代码开始指示的 udf.h 文件;它允许为 DEFINE macros 和包含在编译过程的其它 FLUENT 提供的函数 定义。 UDFs 只使用预先确定的宏和函数从 FLUENT 求解器访问数据。 通过 UDF 传递到求解器的任何值或从求解器返回到 UDF 的,都指定为国际(SI)单位。 总之,当写 UDF 时,你必须记住下面的 FLUENT 要求。 UDFs: 1. 采用 C 语言编写。 2. 必须为 udf.h 文件有一个包含声明。 3. 使用 Fluent.Inc 提供的 DEFINE macros 来定义。 4. 使用 Fluent.Inc 提供的预定义宏和函数来访问 FLUENT 求解器数据。 5. 必须使返回到 FLUENT 求解器的所有值指定为国际单位。 3.2 写解释式 UDFs 的限制(Restriction on Writing Interpreted UDFs)

UDF(用户自定义特征)的创建和使用

UDF(用户自定义特征)的创建和使用 bysgjunfeng 1、什么是UDF? 2、UDF使用过程 2.1创建参照模型 2.2创建UDF 2.3放置UDF 3、替换UDF 4、UDF搭配族表的使用 1、什么是UDF? UDF即用户自定义特征。也就是说可以将数个特征组合起来形成一个新的自己定义的特征,并且会保存在UDF数据库中,随时调入。(类似于AutoCAD中的动态 块) 用户自定义特征用来复制相同或相近外形的特征组,此功能类似于“特征复制”,但又有所不同,功能上比较全面、灵活,但相应的步骤比较繁琐。因此,如果会用特征复制,特别是特征复制里的新参考,将会对此命令有所帮助。 UDF和特征复制的最大区别有以下两点: ●特征复制仅适用于当前的模型,而UDF可以适用与不同的模型。 ●特征复制的局部组无法用另一个局部组替换,而UDF可被另一个UDF替换 UDF的使用流程大体可分为三步:规划并创建参照模型——建立UDF——放置UDF,下面我们用一个简单的例子来说明如何使用UDF。 2、UDF使用过程 在使用UDF之前,首先要创建UDF,缺省时,Pro/ENGINEER将创建的UDF保存在当前工作目录中。为此,可创建UDF库目录,要访问Pro/ENGINEER 的UDF库目

录,可指定带置文件选项"pro_group_dir"的目录名。这样,每次插入UDF时将 自动打开该目录。 建立好参照模型后,单击单击"工具"(Tools)>"UDF 库"(UDF Library)。出现下 图所示UDF菜单 该对话框各选项含义如下: 创建 (Create):建立新的UDF并将其添加到UDF库。 修改 (Modify):修改现有的 UDF。如果有参照零件,系统将在单独的零件窗口 显示 UDF。 列表 (List):列出当前目录中的所有UDF文件,用于查看UDF信息。 数据库管理 (Dbms):管理当前UDF数据库。即对当前UDF数据库中的UDF进行保存、另存为、备份、重命名、拭除、清除、删除等操作。 集成 (Integrate):解决源 UDF 和目标 UDF 之间的差异。 以下以实例说明如何创建及使用UDF。 假定背景:在很多时候建立零件模型时,零件的粗坯都是一个长方体,并且要求该长方体关于基准平面左右前后对称(如下图所示),这就要求在草绘里绘制矩形时要多绘制两条中心线或多标两个尺寸。下面我们将演示如何将这样的长方体 作为UDF来使用。 本实例重在介绍UDF的使用过程,希望能起到抛砖引玉的作用,使大家在实际应

相关主题
相关文档 最新文档