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

2021-09-24 13:04

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

6.复制makefile_nt.udf和user_nt.udf到相应版本所建的目录下,如2d。

! 对于并行的版本来说,一定要复制这两个文件到主机和节点目录,即如图7.3.2所示的2d_node and 2d_host目录。

这两个文件的完整路径如下:

path\Fluent.Inc\fluent6.+x\src\makefile_nt.udf

path\Fluent.Inc\fluent6.+x\src\user_nt.udf

fluent UDF

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

! 确定makefile_nt.udf和user_nt.udf为最新版本所用文件。如果安装新的FLUENT 6版本,必须复制新的makefile_nt.udf和

user_nt.udf到相应的创建目录。

7. 重命名makefile_nt.udf为makefile。

7.3.3 编译和创建用户共享库

下面分别介绍UNIX和Windows系统下如何编译和创建共享库。

UNIX系统

在建立目录并存放文件到相应位置后,便能开始编译和创建共享库。

1. 在用户的src目录下编辑文件makefile,设置参数如下:

SOURCES = 编译好的用户自定义函数

FLUENT INC = 用户的安装路径

下面是一个makefile的例子:

#-----------------------------------------------------------#

# makefile for user defined functions.

#

#-----------------------------------------------------------#

fluent UDF

#-----------------------------------------------------------#

# User modifiable section.

#-----------------------------------------------------------#

SOURCES= udfexample.c

FLUENT_INC= /path/Fluent.Inc

#-----------------------------------------------------------#

# Build targets (do not modify below this line).

#-----------------------------------------------------------#

.

.

2. 如果体系机构是irix6.5,还需要在makefile中进行附加变化。 (a) 找到makefile文件中找到下面的命令行

CFLAGS_IRIX6R10= -KPIC -ansi -fullwarn -O -n32

(b) 改变“-ansi”为“-xansi”,即

CFLAGS_IRIX6R10= -KPIC -xansi -fullwarn -O -n32

对于其它的体系机构不需要进行以上变动。

3. 在工作目录(如libudf)下,执行make命令,包含前一步(在7.3.2节)确定的体系机构(如ultra),即

fluent UDF

make "FLUENT ARCH=ultra"

控制窗口显示信息为:

# linking to ../../src/udfexample.c in ultra/2d

# linking to ../../src/makefile in ultra/2d

# building library in ultra/2d

# linking to ../../src/udfexample.c in ultra/3d

# linking to ../../src/makefile in ultra/3d

# building library in ultra/3d

以上面的makefile为例,用户自定义函数udfexample.c被编译和存放于版本所指定的共享库libudf.so中,如在图7.3.1中所示的2d,2d_host和2d_node。虽然在这个例子中只用了一个C函数,但是用户在“SOURCES = in the makefile”下可通过空格分隔多个源文件。

Windows系统

在建立目录并存放文件到相应位置后,便能开始编译和创建共享库。

1. 用文本文件编译user_nt.udf文件,设置参数为:

SOURCES =编译好的用户自定义函数。在每个文件前加前缀$(SRC),如 一个函数为$(SRC)udfexample.c,两个函数为$(SRC)udfexample.c $ (SRC)udfexample2.c)。 VERSION =所用版本,即如图7.3.2所示2d,3d,2ddp,3ddp,2d host,2d node,3d host,3d node,2ddp host,2ddp node,3ddp host,或3ddp node。

fluent UDF

PARALLEL NODE =并行连接库。对于求解器的一系列版本无指定的并行连接库。可能的输入为:

-{ none: serial

-{ smpi: parallel using shared memory (for

multiprocessor machines)

-{ vmpi: parallel using shared memory or network with vendor MPI software

-{ net: parallel using network communicator with RSHD software

! 如果使用的是并行求解器,需要复制两个user_nt.udf文件(一个是主目录的,一个是节点目录),并且指定两个文件适当的SOURCE, VERSION, and PARALLEL NODE。

下面给出user_nt.udf文件的一个例子:

对于指定多个用户定义函数只需要在SOURCES下输入它们,并用空格分开即可。

2. 在MS-DOS 命令提示窗口,键入nmake建立目录,如

fluent UDF

\libudf\ntx86\2d\。

需要注意的是如果创建存在问题,通过键入nmake clean来进行完整的重建。

7.3.4 连接共享库到FLUENT可执行文件

按照7.3.3小节所示的unix或windows环境下的步骤编译共享库后,就可以将其连接到FLUENT程序中。将共享库连接到FLUENT程序中的步骤如下:

1. 从当前工作目录下启动FLUENT。

2. 读取(或设置)case文件。(确认此case文件保存在当前的工作目录下。)

3. 连接共享库到FLUENT执行文件中。

(a) 如果共享库保存在当前工作目录中,在Library Name对话框中输入相对路径(例如, libudf), 否则输入完整路径,(例如, ~myhome/myfiles/libudf).

!注意,如果存放共享库的目录不在当前的工作目录或其子目录下,

fluent UDF

一定要输入完整的路径名。

(b) 单击Open按钮,这会将共享库连接到FLUENT执行文件中。求解器会自动搜索相应的结构格式和版本。一旦共享库连接到FLUENT执行文件以及case文件被写入以后,此连接关系就被保存在case文件中。因此,无论何时将case文件读入FLURENT,此共享库都会被自动连接。

7.3.5 编译和连接共享库时常见的错误

指定库的名称

仅当从当前的工作目录下运行FLUENT并且共享库的目录是当前工作目录的子目录时,才可以在Compiled UDFs 面板上直接输入共享库的目录(例如libudf)。如果被使用的共享库不在上述位置上,连接此共享库时,必须提供其完整的路径。否则会出现以下错误: Opening library "libudf/ultra/3d/libudf.so"...

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

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

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

马上注册会员

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