好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Fluent-UDF-中文教程UDF第7章-编译与链接.doc

19页
  • 卖家[上传人]:工****
  • 文档编号:545628408
  • 上传时间:2024-02-13
  • 文档格式:DOC
  • 文档大小:146KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 精选优质文档-----倾情为你奉上第七章 UDF的编译与链接编写好UDF件(详见第三章)后,接下来则准备编译(或链接)它在7.2或7.3节中指导将用户编写好的UDF如何解释、编译成为共享目标库的UDF 第 7.1 节: 介绍_ 第 7.2 节: 解释 UDF_ 第 7.3 节: 编译 UDF7.1 介绍解释的UDF和编译的UDF其源码产生途径及编译过程产生的结果代码是不同的编译后的UDF由C语言系统的编译器编译成本地目标码这一过程须在FLUENT运行前完成在FLUENT运行时会执行存放于共享库里的目标码,这一过程称为“动态装载”另一方面,解释的UDF被编译成与体系结构无关的中间代码或伪码这一代码调用时是在内部模拟器或解释器上运行与体系结构无关的代码牺牲了程序性能,但其UDF可易于共享在不同的结构体系之间,即操作系统和FLUENT版本中如果执行速度是所关心的,UDF文件可以不用修改直接在编译模式里运行为了区别这种不同,在FLUENT中解释UDF和编译UDF的控制面板其形式是不同的解释UDF的控制面板里有个“Compile按钮”,当点击“Compile按钮”时会实时编译源码编译UDF的控制面板里有个“Open按钮”,当点击“Open按钮” 时会“打开”或连接目标代码库运行FLUENT(此时在运行FLUENT之前需要编译好目标码)。

      当FLUENT程序运行中链接一个已编译好的UDF库时,和该共享库相关的东西都被存放到case文件中因此,只要读取case文件,这个库会自动地链接到FLUENT处理过程同样地,一个已经经过解释的UDF文件在运行时刻被编译,用户自定义的C函数的名称与内容将会被存放到用户的case文件中只要读取这个case文件,这些函数会被自动编译注:已编译的UDF所用到的目标代码库必须适用于当前所使用的计算机体系结构、操作系统以及FLUENT软件的可执行版本一旦用户的FLUENT升级、操作系统改变了或者运行在不同的类型的计算机,必须重新编译这些库UDF必须用DEFINE宏进行定义,DEFINE宏的定义是在udf.h文件中因此,在用户编译UDF之前,udf.h文件必须被放到一个可被找到的路径,或者放到当前的工作目录中udf.h文件放置在:path/Fluent.Inc/fluent6.+x/src/udf.h其中path是Fluent软件的安装目录,即Fluent.Inc目录X代表了你所安装的版本号通常情况下,用户不应该从安装默认目录中复制udf.h文件编译器先在当前目录中寻找该文件,如果没找到,编译器会自动到/src目录下寻找。

      如果你升级了软件的版本,但是没有从你的工作目录中删除旧版本的udf.h文件,你则不能访问到该文件的最新版本在任何情况下都不应该改变udf.h文件7.2 UDF解释这一节介绍编译经过解释的UDF的步骤一旦经过解释的UDF被编译,用户自定义的C函数的名称与内容将会被存放到case文件中只要读取这个case文件,这些函数便会自动被编译编译被解释的UDF的一般程序如下:1. 如果用户没有在网络Windows计算机上使用并行的FLUENT版本,则需要确定UDF的C源码和case文件与当前工作目录一致具体步骤见7.2.2节 如果源码不在当前工作目录,则用户编译UDF时,用户必须在解释UDF的控制面板里输入文件的完全路径,而不是只输入文件名2. 在当前工作目录下运行FLUENT3. 读取(或建立)case文件4. 打开“Interpreted UDFs panel”,编译UDF(如vprofile.c)     图7.2.1 解释的UDF的控制面板(a) 在“Source File Name”下输入C源码的文件名(如vprofile.c) 如果自定义的C源码不在工作目录中,用户必须输入完全的自定义的C函数路径。

      当写入case文件时,自定义源码的名称(或源码的完全路径)会存放到case文件中b) 在“CPP Command Name”指定为C的预处理程序当然也有其它有效的ANSI C预处理程序,包括gcc -E和cc –E详细检查所用的计算机系统管理c) 如果自定义函数局部变量数不引起栈的溢出,则保持“Stack Size”的默认值为1000此时,所设 “Stack Size” 的数要远远大于局部变量用的数d) 选择“Display Assembly Listing”,则当函数编译汇编码的清单会出现在窗口的控制台内这一选项会保存于case文件,当用户接着运行FLUENT时汇编码会自动显示e) 如果用户使用“Fluent Inc”提供的C预处理程序,选择“Use Contributed CPP”f) 点击“Compile”编译UDF自定义C程序的名称和内容会存入于所写的case文件只要编译UDF,汇编码会出现在控制窗口,所示范例如下g) 编译结束点击“Close” 如果在一次模拟中使用多于一个的UDF,用户需要将这些函数连接在一个C文件中,例如all.c然后用“Interpreted UDFs”面板编译连接的文件。

      这些函数可以作为边界条件、源项及特性等7.2.2 基于Windows并行网络的目录结构 在基于Windows网络上使用并行FLUENT版本需要专门的方法组织用户文件具体步骤如下:1. 在“Fluent.Inc”目录下创建一个名为“udf” 的可写子目录2. 在udf目录下创建子目录(如Fluent.Inc\udf\myudf),将UDF的C源码存放于这个目录下如果在同一串下多个用户运行工作,每个用户在udf目录下创建自己的子目录(如Fluent.Inc\udf\abcudf和xyzudf) 因为源码不在当前工作目录下,所以在编译UDF时必须在“Interpreted UDFs”面板中输入文件的完全路径例如,编译example.c文件时,输入如下:   应输入用户所安装FLUENT的计算机名(如myserver)3. 确定所建立的case文件在当前工作目录下7.2.3 调试解释的UDF编译UDF时出错信息会出现在控制窗口中用户有可能因错误滚动太快不能看到所用的出错信息因此调试UDF时用户想关掉“Display Assembly Listing”如果在调试UDF的过程中一直打开“Interpreted UDFs”面板,由于在独立窗口进行编辑,编译按钮则会不断重复编译。

      然后,直到无出错信息调试和编译才会结束下面介绍一个出错例子,即在“Interpreted UDFs”控制面板中,编译被解释过的UDF时指定了错误的源文件上面曾介绍过如果仅仅从当前工作目录下启动FLUENT,在“Interpreted UDFs”控制面板中键入用户的C源码的文件名,则case文件和C源码被指定于当前工作目录下如果用户编译的C源码与工作目录是不同的路径,用户必须输入C源码所在的完整路径否则会出现以下的错误信息:gcc: vprofile.c: No such file or directorygcc: No input filesError: 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_adjustenergy_sourcep1_sourcep1_diffusivityp1_bcDone.7.3.1 一般程序编译和链接一个编译好的UDF的一般程序如下所示:1. 在当前工作目录下,建立专门的目录结构(见7.3.2节)2. 编译用户的UDF和修建共享库(见7.3.3节)3. 在当前工作目录下运行FLUENT4. 读取(或建立)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.udfpath/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目录,并且命名为makefile6. 鉴别FLUENT所运行的计算机的体系机构a) 开始FLUENT程序b) 向上滚动FLUENT的控制窗口到“\Starting”信息处,鉴定FLUENT的体系机构c) 退出FLUENT程序 如果体系机构是irix6.5,需要在makefile进行额外的修改7. 为体系机构所建不同版本下创建目录(如ultra/2d和ultra/3d)存在的版本如下所示:l single-precision serial 2D or 3D: 2d or 3d l double-precision serial 2D or 3D: 2ddp or 3ddpl single-precision parallel 2D or 3D: 2d_node and。

      点击阅读更多内容
      相关文档
      高等学校学生手册.doc 2025年区教育系统招聘编外教师储备人才事业单位考试押题.docx 2025年秋季青岛版三年级数学上册认识轴对称现象教学课件.pptx 2025年秋季青岛版三年级数学上册用乘法估算解决问题教学课件.pptx 2025年秋季青岛版三年级数学上册两、三位数乘一位数的笔算(不进位)教学课件.pptx 2025年秋季青岛版三年级数学上册1200张纸有多厚教学设计范文.docx 2025年秋季青岛版三年级数学上册多位数除以一位数教学课件.pptx 2025年秋季青岛版三年级数学上册认识平移、旋转现象教学课件.pptx 2025年秋季青岛版三年级数学上册多位数乘一位数教学设计范本.docx 2025年秋季青岛版三年级数学上册认识平移与旋转教学设计范文.docx 2025年秋季青岛版三年级数学上册乘数中间有0或末尾有0的乘法教学课件.pptx 2025年秋季青岛版三年级数学上册两位数乘一位数的笔算(进位)教学课件.pptx 2025年秋季青岛版三年级数学上册《两、三位数乘一位数的笔算(不进位)》教学设计与意图.docx 2025年秋季青岛版三年级数学上册我学会了吗教学课件.pptx 2025年连云港市妇幼保健院招聘专业技术人员考试笔试试题.docx 2025年深圳市大鹏新区发展和财政局招聘考试笔试试卷.docx 2025年绵阳市梓潼县财政投资评审中心招聘考试试题.docx 2025年来宾市妇幼保健院招聘考试笔试试题.docx 2025年无极县教育系统招聘教师考试笔试试卷.docx 2025年灵山县第三中学调配教师考试笔试试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.