fluent UDF第七章 编译与链接(2)

2021-09-24 13:04

下面介绍一个出错例子,即在“Interpreted UDFs”控制面板中,编

fluent UDF

译被解释过的UDF时指定了错误的源文件。上面曾介绍过如果仅仅从当前工作目录下启动FLUENT,在“Interpreted UDFs”控制面板中键入用户的C源码的文件名,则case文件和C源码被指定于当前工作目录下。如果用户编译的C源码与工作目录是不同的路径,用户必须输入C源码所在的完整路径。否则会出现以下的错误信息:

gcc: vprofile.c: No such file or directory

gcc: No input files

Error: vprofile.c: line 1: syntax error.

如果编译UDF写完case文件后,接着移动C源码到不同位置,会在接着运行FLUENT的过程中产生同样的错误信息。

为了避免错误,只需要在“Interpreted UDFs”控制面板中的“Source File Name”下输入完全的路径名,然后点击“Compile”。此时写case文件会保存C源码的新路径。

7.3 编译UDF

这一节介绍如何链接编译好的UDF。这一过程需要使用C编译器。大部分UNIX的操作系统提供了C编译器。如果在PC机上运行,需要安装VC++编译器(如微软C++、v6.0或更高的版本)。一旦编译好的UDF库文件在FLUENT运行时链接到FLUENT处理过程,和共享库相关的东西会保存到case文件。因此,只要读取case文件,编译的库文件会自动链接到FLUENT处理过程。在控制窗口将会出现链接状态的报告如下:

Opening library "libp1/ultra/2d/libudf.so"...

p1_adjust

fluent UDF

energy_source

p1_source

p1_diffusivity

p1_bc

Done.

7.3.1 一般程序

编译和链接一个编译好的UDF的一般程序如下所示:

1. 在当前工作目录下,建立专门的目录结构(见7.3.2节)。

2. 编译用户的UDF和修建共享库(见7.3.3节)。

3. 在当前工作目录下运行FLUENT。

4. 读取(或建立)case文件(确信case文件在当前工作目录下)。

5. 链接共享库到FLUENT(见7.3.4节)。

7.3.2 建立目录结构

对于UNIX系统和Windows系统来说,目录结构是不同的。下面分别介绍在两种系统下如何建立目录结构。

UNIX系统

对于UNIX系统下编译的UDF来说,makefile.udf和makefile.udf2两个文件在编译UDF库被需要。makefile文件包含了用户自定义部分,在这部分允许输入用户源函数和FLUENT的安装路径。这些文件的完整路

fluent UDF

径如下:

path/Fluent.Inc/fluent6.+x/src/makefile.udf

path/Fluent.Inc/fluent6.+x/src/makefile.udf2

其中path是用户直接安装Fluent.Inc的路径,x是用户安装Fluent版本的相应数(如,fluent6.0为0)。

! FLUENT安装后所释放的makefile.udf2文件名为Makefile.udf。 下面介绍建立共享库所要求的目录结构。通过下面的例子来介绍目录结构的建立,如图7.3.1所示。

图7.3.1 为编译好的UDF建立库目录的样本(UNIX)

需要注意的是在图7.3.1所示的目录结构为FLUENT的两种版本:二维单精度串型和二维单精度平行。

!不要在目录(2d,2d host,等等)下存放任何文件。当编译用户库(见7.3.3节)时,图7.3.1中所示的文件会自动存放。

1. 在当然工作目录下,创建一个储存用户库的目录(如libudf)。

2. 从以上所示目录下复制makefile.udf2到用户目录(如libudf),

fluent UDF

且改名为Makefile。

3. 在用户创建的库目录下,建立一个储存用户源码、命名为src的源码目录。

4. 复制用户源码(如udfexample.c)到所建的/src目录下。

5. 从以上所示目录下复制makefile.udf到用户的/src目录,并且命名为makefile。

6. 鉴别FLUENT所运行的计算机的体系机构。

(a) 开始FLUENT程序。

(b) 向上滚动FLUENT的控制窗口到“\Starting”信息处,鉴定FLUENT的体系机构。

(c) 退出FLUENT程序。

! 如果体系机构是irix6.5,需要在makefile进行额外的修改。

7. 为体系机构所建不同版本下创建目录(如ultra/2d和ultra/3d)。存在的版本如下所示:

single-precision serial 2D or 3D: 2d or 3d

double-precision serial 2D or 3D: 2ddp or 3ddp

single-precision parallel 2D or 3D: 2d_node and 2d_host or 3d_node and 3d_host

double-precision parallel 2D or 3D: 2ddp_node and 2ddp_host or 3ddp_node and 3ddp_host

! 需要注意:不管计算节点的数量,用户必须为每个并行版本的求解器(如在三维下有两个目录,二维双精度版本下有两个目录,等等)

fluent UDF

创建两个调试目录。

!不要在目录(2d,2d host,等等)下存放任何文件。当编译用户库(见7.3.3节)时,图7.3.1中所示的文件会自动存放。

Windows系统

对于Windows系统下编译的UDF来说,makefile_nt.udf和user_nt.udf两个文件在编译UDF库被需要。user_nt.udf文件中包含了用户自定义部分,在这部分允许输入用户源函数及其它信息。

为了建立共享库所要求的目录结构,需要按照上面所讲的操作步骤进行。通过下面的例子来介绍目录结构的建立,如图7.3.2所示。 需要注意的是在图7.3.2所示的目录结构为FLUENT的两种版本:二维单精度串型和二维单精度并行。

图7.3.2 为编译好的UDF建立库目录的样本(Windows)

1. 在当前工作目录下,创建一个储存用户库的目录(如libudf)。

2. 在用户创建的库目录下,建立一个储存用户源码、命名为src的源

fluent UDF

码目录。

3. 复制用户源码(如udfexample.c)到所建的/src目录下。

4. 建立所使用体系机构的目录,如基于Windows的Intel系统使用的目录为ntx86。

5. 针对所用的体系机构建立不同版本的目录(如ntx86\2d)。存在的版本如下所示:

single-precision serial 2D or 3D: 2d or 3d

double-precision serial 2D or 3D: 2ddp or 3ddp

single-precision parallel 2D or 3D: 2d_node and 2d_host or 3d_node and 3d_host

double-precision parallel 2D or 3D: 2ddp_node and 2ddp_host or 3ddp_node and 3ddp_host

fluent UDF第七章 编译与链接(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管道r射线曝光工法

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

马上注册会员

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