搜档网
当前位置:搜档网 › Fluent_UDF_第八章_在FLUENT中激活你的UDF

Fluent_UDF_第八章_在FLUENT中激活你的UDF

Fluent_UDF_第八章_在FLUENT中激活你的UDF
Fluent_UDF_第八章_在FLUENT中激活你的UDF

第八章

在 FLUENT 中激活你的 UDF

一旦你已经编译(并连接)了你的 UDF ,如第 7章所述,你已经为在你的 FLUENT 模型中使用它做好了准备。根据你所使用的 UDF ,遵照以下各节中的 指导。

8.1节 8.2节 8.3节 8.4节

激活通用求解器 UDF

激活模型明确 UDF

激活多相 UDF

激活 DPM UDF

8.1

激活通用求解器 UDF

本节包括激活使用 4.2节中宏的 UDF 的方法。 8.1.1

已计算值的调整

一旦你已经使用 7.2节和 7.3节中概括的方法之一编译(并连接)了调整已 计算值 UDF ,这一 UDF 在 FLUENT 中将成为可见的和可选择的。你将需要在 User-Defined Function Hooks 面板的 Adjust Function 下拉菜单(图 8.1.1)中选 择它。

调整函数(以 DEFINE_ADJUST 宏定义)在速度、压力及其它数量求解开 始之前的一次迭代开始的时候调用。例如,它可以用于在一个区域内积分一个标 量值,并根据这一结果调整边界条件。有关 DEFINE_ADJUST 宏的更多内容将 4.2.1节。调整函数在什么地方适合求解器求解过程方面的信息见 3.3节。 8.1.2求解初始化

一旦你已经使用 7.2节和 7.3节中概括的方法之一编译(并连接)了求解初 始化 UDF ,这一 UDF 在 FLUENT 中将成为可见的和可选择的。你将需要在 User-Defined Function Hooks 面板的 Initialization Function 下拉菜单(图 8.1.1)

中选择它。

求解初始化UDF 使用DEFINE_INIT 宏定义。细节见 4.2.2 节。

8.1.3 用命令执行UDF

一旦你已经使用7.2 节和7.3 节中概括的方法之一编译(并连接)了你的UDF,你可以在Execute UDF On Demand 面板中选择它(图8.1.2),以在某个特定的

时间执行这个UDF,而不是让FLUENT 在整个计算中执行它。

点击Execute 按纽让FLUENT 立即执行它。

以命令执行的UDF 用DEFINE_ON_COMMAND 宏定义,更多细节见 4.2.3 节8.1.4 从case和data文件中读出及写入

一旦你已经使用7.2 节和7.3 节中概括的方法之一编译(并连接)了一个将

定制片段从case 和data 文件中读出或写入的UDF,这一UDF在FLUENT中将成为可见的和可选择的。你将需要在User-Defined Function Hooks面板(图8.1.1)中选择它。

读Case函数在你将一个case文件读入FLUENT时调用。它将指定从case

文件读出的定制片段。

写Case函数在你从FLUENT写入一个case文件时调用。它将指定写入case

文件的定制片段。

读Data函数在你将一个data文件读入FLUENT时调用。它将指定从data

文件读出的定制片段。

写Data函数在你从FLUENT写入一个data文件时调用。它将指定写入data

文件的定制片段。

上述4个函数用DEFINE_RW_FUCTION宏定义,见 4.2.4节。

8.1.5 用户定义内存

你可以使用你的UDF将计算出的值存入内存,以便你以后能重新得到它,

要么通过一个UDF或是在FLUENT中用于后处理。为了能访问这些内存,你需

要指定在用户定义内存(User-Defined Memory)面板中指定用户定义内存单元

数量(Number of User_Defined Memory Locations)(图8.1.3)。

宏C_UDMI或F_UDMI可以分别用于在你的UDF中访问一个单元或面中的

用户定义内存位置。细节见 5.2.4,5.3.2,6.7节。

已经存储在用户定义内存中的场值将在你下次写入一个时存入data文件。这

些场同样也出现在FLUENT后处理面板中下拉列表的User Defined Memory…中。它们将被命名为udm-0,udm-1等,基于内存位置索引。内存位置的整个数量限制在500。

8.2 激活模型明确UDF

本节包括激活使用 4.3节中宏的UDF的方法。

8.2.1 边界条件

一旦你已经使用7.2节和7.3节中概括的方法之一编译(并连接)了求解边

界条件UDF,这一UDF随之在FLUENT中将成为可见的和可选择的,你可以在适当的边界条件面板中选择它。例如,你的UDF定义了一个速度入口边界条件,然后你将在Veloctiy Inlet面板里适当的下拉列表中选择你的UDF名字(在你的C函数中已经定义,如inlet_x_velocity)。

如果你使用你的UDF指定一个单元区域中的一个固定值,你将需要打开Fixed Values选项,并在Fluid或Solid面板的适当下拉列表中选择你的UDF的名字。

边界条件UDF用DEFINE_PROFILE宏定义。细节见 4.3.5节。

8.2.2 热流量

一旦你已经使用7.2节和7.3节中概括的方法之一编译(并连接)了求解边

界条件UDF,这一UDF随之在FLUENT中将成为可见的和可选择的,你将需

要在User-Defined Function Hooks面板的Wall Heat Flux Function下拉列表(图8.1.1)中选择它。

热流量UDF用DEFINE_HEAT_FLUX宏定义。细节见 4.3.3节。

8.2.3 Nox产生速率

一旦你已经使用7.2节和7.3节中概括的方法之一编译(并连接)了Nox产

生速率UDF,这一UDF随之在FLUENT中将成为可见的和可选择的,你将需

要在NOx Model面板中User_Defined Functions下的NOx Rate下拉列表中选择它,如下所示(图8.2.2)。

Nox产生速率UDF用DEFINE_NOX_RATE宏定义。细节见4.3.4节。

8.2.4 材料属性

一旦你已经使用7.2节和7.3节中概括的方法之一编译(并连接)了属性定

义UDF,这一UDF随之在FLUENT中将成为可见的和可选择的,你将首先在

Materials面板中适当属性的下拉列表中选择user-defined(图8.2.3)。

然后你需要在User-Defined Functions面板中选择希望的UDF(如cell_viscosity)(图8.2.4)。

!如果你计划使用一个UDF来定义密度,注意当密度变化增大时,求解收敛性将变得很差,指定一个可压缩定律(密度为压力的函数)或者多相行为(在空间变化的密度)可能会导致发散。建议你将UDF用于密度时限制在只有轻微密度变化的弱可压缩流动。

材料属性UDF用DEFINE_PROPERTY宏定义。细节见 4.3.6节。对于用户定义标量或物质质量扩散率的UDF用DEFINE_DIFFUSIVITY宏定义。细节见4.3.2节。

8.2.5 预混燃烧源项

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的预混燃烧源项UDF,它将随之在FLUENT中是可见的和可选择的。你将需要在

User-Defined Function Hooks面板中的Turbulent Premixed Source Function下拉列表中选择它。(图8.2.5)

湍流预混速度和源项UDF用DEFINE_TURB_PREMIX_SOURCE宏定义。

更多细节见4.3.10。

8.2.6 反应速率

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的反应速

率UDF,它将随之在FLUENT中是可见的和可选择的。你将需要在User-Defined Function Hooks面板中选择它。(图8.1.1)

你可以在Volume Reaction Rate Function或Surface Reaction Rate Function

下拉列表中选择适当的UDF。

表面和容积反应速率UDF用DEFINE_SR_RATE和DEFINE_VR_RATE宏

定义。更多细节见 4.3.9节和 4.3.14节。

8.2.7 源项

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的源项UDF,它将随之在FLUENT中是可见的和可选择的。

你将需要在Fluid或Solid面板中打开Source Terms选项,并在适当的下拉

列表里选择你的UDF的名字(如cell_x_source)。(图8.2.6)

对于源项的UDF用DEFINE_SOURCE宏定义。更多细节见4.3.8节。

8.2.8 时间步进

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的用户时

间步进UDF,它将随之在FLUENT中是可见的和可选择的。你将首先需要在Iterate面板中选择时间步进方法Time Stepping Method为Adaptive(图8.2.7)。

接着,在Adaptive Time Stepping下的User_Defined Time Step下拉列表中选择你的UDF的名字(如mydeltat)。

DEFINE_DELTAAT宏用于在时间依赖计算中自定义时间步长。细节见4.3.1 节。

8.2.9 湍流粘性

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的湍流粘

性UDF用于Spalart-Allmaras、k-e、k-w或LES湍流模型,它将随之在FLUENT 中是可见的和可选择的。你将需要在Viscous Model面板中User-Defined Functions下的Turbulance Viscosity下拉列表中激活它(图8.2.8)。

对于湍流粘度的UDF用DEFINE_TURBULENT_VISCOSITY宏定义。更

多细节见4.3.11节。

8.2.10 用户定义标量的通量

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的UDS通

量UDF,它将随之在FLUENT中是可见的和可选择的。你将需要在User-Defined Scalars面板中激活它(图8.2.9)。

首先在User-Defined Scalars面板中指定Number of user-Defined Scales,并且在Flux Functions下拉列表中选择适当的UDF。

用户定义标量通量UDF用DEFINE_UDS_FLUX宏定义。更多细节见 4.3.12 节。

8.2.11 用户定义非稳态标量项

一旦你采用7.2节和7.3节中概括的方法之一编译(并连接)了你的非稳态UDS项UDF,它将随之在FLUENT中是可见的和可选择的。你将需要在

User-Defined Scalars面板中激活它(图8.2.9)。

首先指定Number of user-Defined Scales,然后在Unsteady Function下拉列表中选择适当的UDF。注意只有已经在Slover面板中指定了非稳态计算后,这一列表才会出现。

用户定义标量非稳态项UDF用DEFINE_UDS_UNSTEATY宏定义。更多细节见4.3.12节。

8.3激活多相UDF

本节包括激活使用 4.4节中宏的UDF的方法。

8.3.1气化速率

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的气

化速率UDF,它将随之在FLUENT中成为可见的和可选择的。你将首先需要通

过在Multiphase Model面板中选择Cavitation来使能相间质量输运。然后,在User-Defined Function Hooks面板中的Cavitation Mass Rate Function下拉列表中选择UDF的名字(图8.1.1)。

气化速率UDF以DEFINE_CAVITATION宏定义。更多细节见 4.4.1节。8.3.2 混合物模型的滑移速度

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的自

定义滑移速度UDF,用于多相混合物模型,它将随之在FLUENT中成为可见的和可选择的。你将首先需要通过在Phase Interaction面板中Slip Velocity下的下拉列表里选择user-defined(图8.3.1)。

然后,在User-Defined Functions面板中选择希望的UDF(如slip_velocity)(图8.3.2)。

第八章在FLUENT中激活你的UDF

多相混合物模型的滑移速度UDF 使用DEFINE_VECTOR_EXCHANGE_PROPERTY宏。更多细节见4.4.3节。

8.3.3 混合物模型的微粒直径

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的微粒或液滴直径UDF,用于多相混合物模型,它将随之在FLUENT中成为可见的和可选择的。你将首先需要通过在Secondary Phase面板中Diameter下拉列表里选择user-defined(图8.3.3)。然后,在User-Defined Function Hooks面板中的Cavitation Mass Rate Function下拉列表中选择UDF的名字(图8.1.1)。

然后,在User-Defined Functions面板中选择希望的UDF(如diameter)(图8.3.4)。

DEFINE_PROPERTY宏用于对微粒或液滴直径提供一种新定义。更多细节

见4.3.6节。

8.3.4 欧拉模型的拖拉和提升系数

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的拖

拉和提升系数UDF,用于欧拉多相模型,它将随之在FLUENT中成为可见的和可选择的。你将首先需要通过在Phase Interaction面板中Drag or Lift区域里的Drag Coefficient或Lift Coefficient下拉列表中选择user-defined(图8.3.5)。

然后,在User-Defined Functions面板中选择希望的UDF(图8.3.4)。

用于多相欧拉模型的拖拉和提升系数

UDF 用DEFINE_EXCHANGE_PROPERTY宏定义。更多细节见4.4.2节。

8.4

激活DPM UDF

本节包括激活中使用 4.5节中宏的UDF的方法。

8.4.1 DPM体积力

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离散相体积力UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Discrete Phase Model面板中User-Defined Function下的Body Force下拉列表中选择UDF的名字(图8.4.1)。

用于DPM的体积力UDF以DEFINE_DPM_BODY_FORCE宏定义。更多细节见4.5.1节。

8.4.2 DPM的拖拉系数

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离

散相拖拉系数UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Discrete Phase Model面板中Drag Parameters下的Drag Law下拉列表中选择UDF的名字(图8.4.1)。

DPM的拖拉系数UDF以DEFINE_DPM_BODY_DRAG宏定义。更多细节见4.5.2节。

8.4.3 DPM的腐蚀和增长速率

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离散相DPM的腐蚀和增长速率UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Discrete Phase Model面板中User-Defined Function下的Erosion/Accretion下拉列表中选择UDF的名字(图8.4.1)。

DPM的腐蚀和增长速率UDF以DEFINE_DPM_EROSION宏定义。更多细节见4.5.3节。

8.4.3 DPM初始化

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离散相初始化UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Set Injection Properties面板中的UDF区域内,User-Defined Functions下的Initialization下拉列表中选择UDF的名字(图8.4.2)

DPM的初始化UDF以DEFINE_DPM_INJECTION_INIT宏定义。更多细节见4.5.4节。

8.4.5 用户DPM定律

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离散相用户定律或转换UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Custom Laws面板中的适当下拉列表里选择UDF的名字(图8.4.3)。为打开Custom Laws面板,需要使能Set Injection Properties面板中Laws下的

Custom选项。

在六种微粒定律左边的下拉列表里,你都可以针对用户定律选择适当的微粒定律UDF。第7个下拉列表标记为Switching,能用于改变使用的用户定律。你可以通过在这一下拉列表中选择一个UDF来定制FLUENT在定律之间转换的方式。

DPM的用户定律UDF用DEFINE_DPM_LAW宏定义。你可以使用DEFINE_DPM_SWITCH宏来修改定律之间转换的标准。更多细节见4.5.5节和4.5.10节。

8.4.5 DPM输出

一旦你已经运用7.2节和7.3节中概括的方法之一编译(并连接)了你的离散相输出UDF,它将随之在FLUENT中成为可见的和可选择的。你将需要在Sample Trajectories面板中User-Defined Functions下的Output下拉列表中选择这一UDF的名字(图8.4.4)。

相关主题