e.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的安装路径。
这些文件的完整路径如下: 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),且改名为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 需要注意:不管计算节点的数量,用户必须为每个并行版本的求解 器(如在三维下有两个目录,二维双精度版本下有两个目录,等等) 创建两个调试目录。
不要在目录(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的源码目录。
3. 复制用户源码(如udfexample.c)到所建的/src目录下。
4. 建立所使用体系机构的目录,如基于Windows的Intel系统使用的目录为ntx86。
5. 针对所用的体系机构建立不同版本的目录(如ntx862d)。
存在的版本如下所示: 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 需要注意:不管计算节点的数量,用户必须为每个并行版本的求解器(如在三维下有两个目录,二维双精度版本下有两个目录,等等)创建两个调试目录。
6.复制makefile_nt.udf和user_nt.udf到相应版本所建的目录下,如2d。
对于并行的版本来说,一定要复制这两个文件到主机和节点目录, 即如图7.3.2所示的2d_node and 2d_host目录。
这两个文件的完整路径如下: pathFluent.Incfluent6.xsrcmakefile_nt.udf pathFluent.Incfluent6.xsrcuser_nt.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. ----------------------------------------------------------- ----------------------------------------------------------- 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 -n32b 改变“-ansi”为“-xansi”,即 CFLAGS_IRIX6R10 -KPIC -xansi -fullwarn -O -n32对于其它的体系机构不需要进行以上变动。
3. 在工作目录 下, (如libudf) 执行make命令, 包含前一步(在7.3.2节)确定的体系机构(如ultra),即 make FLUENT ARCHultra控制窗口显示信息为: 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,如 一个函数为SRCudfexample.c,两个函数 为SRCudfexample.c SRCudfexample2.c)。
VERSION
上一篇:
【精品文献】SAP用户出口
下一篇:
论英语教学中的文化意识渗透