fluent UDF第六章 工具(3)

2020-03-26 19:28

Get_Domain(domain_id);

domain_id 是一个整数,混合物控制区其值为1,在多相混合物模型中其值依次加一。注意: Get_Domain(1) 来代替以前的FLUENT版本中外部变量Domain *domain表达式。 (参见1.4部分)

Single-Phase Flows

单相流

在单相流中, domain_id 为 1 , Get_Domain(1) 将放回流体控制区指针。

DEFINE_ON_DEMAND(my_udf) {

Domain *domain; /* domain is declared as a variable */ domain = Get_Domain(1); /* returns fluid domain pointer */ ... }

Multiphase Flows

多相流

在多相流中,Get_Domain的返回值或者是混合物等值线,或单相等值线,或相等值线或相等值线控制区指针。domain_id的值在混合物控制区始终是一,你可以用FLUENT里的图形用户界面获得domain_id。简单的说,在FLUENT的相面板中,选择所需的相。domain_id 将被显示出来。你需要用硬件代码整数ID作为自变量传递给宏。

DEFINE_ON_DEMAND(my_udf) {

Domain *mixture_domain;

mixture_domain = Get_Domain(1); /* returns mixture domain pointer */ /* and assigns to variable */

Domain *subdomain;

subdomain = Get_Domain(2); /* returns phase with ID=2 domain pointer*/ /* and assigns to variable */ ... }

例子:

下面是一个名为get_coords的UDF打印出了为两个指定的线ID面的线面的质心。这一函数执行在单相流中用的Get_Domain工具。在这个例子中,函数Print_Thread_Face_Centroids用了Lookup_Thread函数来决定线的指针,然后输出了具体文件中线的所有的面的质心。调用Get_Domain(1) 函数返回控制区的指针 (或在多相流中是混合物控制区)。这一变量没有被传递给 DEFINE_ON_DEMAND。

/*****************************************************************/ /* Example of UDF for single phase that uses Get_Domain utility */ /*****************************************************************/

#include \

FILE *fout;

Print_Thread_Face_Centroids(Domain *domain, int id) {

real FC[2]; face_t f;

Thread *t = Lookup_Thread(domain, id);

fprintf(fout,\ begin_f_loop(f,t) {

F_CENTROID(FC,f,t);

fprintf(fout, \ }

end_f_loop(f,t)

fprintf(fout, \}

DEFINE_ON_DEMAND(get_coords) {

Domain *domain;

domain = Get_Domain(1);

fout = fopen(\

Print_Thread_Face_Centroids(domain, 2); Print_Thread_Face_Centroids(domain, 4); fclose(fout); }

6.5.2 Phase Domain Pointer Using the Phase Domain Index ( DOMAIN_SUB_DOMAIN)

6.5.2通过相控制区索引号使用相控制区指针

有两个方法可以获得混合物控制区具体相(或子区)的指针。你或者可以用宏 DOMAIN_SUB_DOMAIN (在下面描述)或 Get_Domain, 在6.5.1部分描述。

DOMAIN_SUB_DOMAIN 有两个自变量: mixture_domain 和 phase_domain_index。 这个函数返回给定phase_domain_index 的相指针。注意:DOMAIN_SUB_DOMAIN 在执行上和THREAD_SUB_THREAD宏相似。 (在6.5.3.部分描述)

int phase_domain_index = 0; /* primary phase index is 0 */ Domain *mixture_domain;

Domain *subdomain = DOMAIN_SUB_DOMAIN(mixture_domain,phase_domain_index);

mixture_domain是 mixture-level domain的指针。

当你用包含控制区自变量(e.g., DEFINE_ADJUST) and的宏DEFINE时,自动通过FLUENT的求解器传递给你的UDF文件,你的UDF文件就和混合物相关联了。否则,如果mixture_domain没有显式地传递给你的UDF,你需要在调用sub_domain_loop之前,用另外一个宏工具来恢复(e.g., Get_Domain(1)) 。参见 6.5.1 部分。

phase_domain_index是子区指针地索引号。 它是一个整数初始相值为0,以后每相依次加1。当你用包含相控制区变量( DEFINE_EXCHANGE_PROPERTY, DEFINE_VECTOR_EXCHANGE_PROPERTY)的 DEFINE宏时,phase_domain_index 是自动通过FLUENT的求解器传递给你的UDF,你的UDF就和互相作用的相相联系了。否则,你需要硬代码调用DOMAIN_SUB_DOMAIN 宏给phase_domain_index 指针赋值。如果你的多相流模型有两相,然后phase_domain_index 初始相的值是0,第二相的值为1。然而,如果多相流模型中有更多的相,你需要用PHASE_DOMAIN_INDEX宏来恢复与给定控制区的phase_domain_index。 详情参考 6.5.9 部分。

6.5.3 Phase-Level Thread Pointer Using the Phase Domain Index ( THREAD_SUB_THREAD)

6.5.3通过相控制区索引号使用相等值线指针

THREAD_SUB_THREAD宏可以用来恢复给定相控制区索引号的phase-level thread (subthread) 指针。 THREAD_SUB_THREAD有两个自变量: mixture_thread 和 phase_domain_index。这一函数返回给定phase_domain_index 的phase-level 线指针。 注意:THREAD_SUB_THREAD在执行上与DOMAIN_SUB_DOMAIN宏相似,参见6.5.2.部分。

int phase_domain_index = 0; /* primary phase index is 0 */ Thread *mixture_thread; /* mixture-level thread pointer */

Thread *subthread = THREAD_SUB_THREAD(mixture_thread,phase_domain_index);

mixture_thread是一mixture-level线的指针。当你用包含控制区自变量(e.g., DEFINE_ PROFILE) and的宏DEFINE时,自动通过FLUENT的求解器传递给你的UDF文件,你的UDF文件就和混合物相关联了。否则,如果混合物控制线指针没有显式地传递给你的UDF,你需要在调用Lookup_Thread宏之前,用另外一个宏工具来恢复(e.g., Get_Domain(1)) 。参见 6.5.1 部分。 参考 6.5.7部分)。

phase_domain_index子区指针的索引号。它是一个整数初始相值为0,以后每相依次加1。当你要用包含相控制区索引号变量( DEFINE_EXCHANGE_PROPERTY, DEFINE_VECTOR_EXCHANGE_PROPERTY)的DEFINE宏时, phase_domain_index 通过FLUENT的求解器自动传递给你的UDF,你的UDF就和具体的相互作用相相互关联了。 (参考UDF的例子见 4.4.2 部分) 否则, 你需要用硬代码改变宏THREAD_SUB_THREAD的phase_domain_index值。如果你的多相流模型中只有两相,那么phase_domain_index 对初始相是0,第二个相为1。然而,如果你有更多的相,你需要用 PHASE_DOMAIN_INDEX 宏来恢复与给定区域相关的phase_domain_index 。详情参考6.5.9部分。

6.5.4 Phase Thread Pointer Array Using Mixture-Level Thread ( THREAD_SUB_THREADS)

6.5.4通过混合物等值线使用相线指针数组

THREAD_SUB_THREADS宏 可以用以恢复指针数组, pt, 它的元素包含相等值线(子线)的指针。 THREADS_SUB_THREADS 有一个变量 mixture_thread。 Thread *mixture_thread;

Thread **pt; /* initialize pt */ pt = THREAD_SUB_THREADS(mixture_thread);

mixture_thread 是mixture-level thread代表网格线或面线的指针。当你用包含线变量(e.g., DEFINE_PROFILE)的DEFINE宏时,通过FLUENT的求解器自动传递给你的UDF,这个函数就和混合物有关了。否则,如果混合物线的指针没有显式地传递给你的UDF,然后你需要用令一个方法来恢复。例如:你可以用 Lookup_Thread 宏。 (参考 6.5.7部分)。 pt[i] 数组的元素是与第I相的相等值线有关的值,这里i是phase_domain_index。当你想恢复网格具体相的信息时,你可以用 pt[i] 做为一些网格变量宏的自变量。例如: C_R(c,pt[i])可以用来返回网格点c第I相的密度。 指针 pt[i] 可以用THREAD_SUB_THREAD来恢复,在 6.5.3部分讨论,用I做为自变量。phase_domain_index 可以用宏 PHASE_DOMAIN_INDEX 来恢复,参见 6.5.9 部分。

6.5.5 Mixture Domain Pointer Using a Phase Domain Pointer ( DOMAIN_SUPER_DOMAIN)

6.5.5通过相控制区指针调用混合物控制区指针

当你的UDF有权访问特殊的相等值线(子区)指针,你可以用宏

DOMAIN_SUPER_DOMAIN,恢复混合物等值线控制区指针。 DOMAIN_SUPER_DOMAIN 含有一个变量 subdomain。注意: DOMAIN_SUPER_DOMAIN 在执行上和THREAD_SUPER_THREAD宏是非常相似的。参考 6.5.6.部分。

Domain *subdomain;

Domain *mixture_domain = DOMAIN_SUPER_DOMAIN(subdomain);

Subdomain是多相流混合物控制区相等值线的指针。当你用包含控制区变量(e.g., DEFINE_ADJUST)的DEFINE宏时,通过FLUENT的求解器,它可以自动传递给你的UDF文件,这个函数就会和混合物中的第一相和第二相相关了。注意:在当前的FLUENT版本中, DOMAIN_SUPER_DOMAIN 将返回与Get_Domain(1)相同的指针。这样,如果你的UDF可以使用子区的指针,建议使用宏DOMAIN_SUPER_DOMAIN 来代替 Get_Domain宏以避免将来的FLUENT版本造成的不兼容问题。

6.5.6 Mixture Thread Pointer Using a Phase Thread Pointer ( THREAD_SUPER_THREAD)

6.5.6通过相线指针使用混合物线指针

当你的UDF有权访问某一条相线()子线指针你想恢复混合物的等值线指针时,你可以使用宏THREAD_SUPER_THREAD 。THREAD_SUPER_有一个自变量 subthread。

Thread *subthread;

Thread *mixture_thread = THREAD_SUPER_THREAD(subthread);

subthread 在多相流混合物中是一个特殊的相等值线指针。当你使用包含线变量(e.g., DEFINE_PROFILE)的DEFINE宏时,通过FLUENT的求解器它自动传递给你的UDF文件,这个函数就和混合物中的两相相互关联了。注意:在执行上和THREAD_SUPER_THREAD宏是非常相似的。参考6.5.5.部分。

6.5.7 Thread Pointer Using a Zone ID ( Lookup_Thread) 6.5.7通过区的ID使用线指针

当你想要在FLUENT的边界条件面板中恢复与给定区域ID的线指针时,你可以使用宏Lookup_Thread 。例如,假设你的UDF需要对该区域的特殊线操作(并非查找所有的线), 你可以用DEFINE宏定义你的UDF文件,而不用将线指针(e.g., DEFINE_ADJUST)从FLUENT的


fluent UDF第六章 工具(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:物流学概论复习题及参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: