fluent入门一般问题(六)

Fluent,并非我原创但是没找到出处,给大家做个参考。


56  计算流体力学中在设定初始条件和边界条件的时候总是要先选择一组湍流参数,并给出其初值。如何选择并给出这些初值呢?有什么经验公式或者别的好的办法吗?   #73
由于回答之中包含一些参数的计算公式,为了更好地解释这个问题,请参考附件中的文档,文档取自流体中文网翻译整理的《FLUENT全攻略》,在此表示感谢。
57  讨论在数值模拟过程中采用四面体网格计算效果好,还是采用六面体网格更妙呢?   (#70)
在2D中,FLUENT 可以使用三角形和四边形单元以及它们的混合单元所构成的网格。在3D中,它可以使用四面体,六面体,棱锥,和楔形单元所构成的网格。选择那种类型的单元取决于你的应用。当选择网格类型的时候,应当考虑以下问题:
       设置时间(setup time)
       计算成本(computational expense)
       数值耗散(numerical diffusion )

1.设置时间

    在工程实践中,许多流动问题都涉及到比较复杂的几何形状。一般来说,对于这样的问题,建立结构或多块(是由四边形或六面体元素组成的)网格是极其耗费时间的。所以对于复杂几何形状的问题,设置网格的时间是使用三角形或四面体单元的非结构网格的主要动机。然而,如果所使用的几何相对比较简单,那么使用哪种网格在设置时间方面可能不会有明显的节省。
    如果你已经有了一个建立好的结构代码的网格,例如FLUENT 4,很明显,在FLUENT中使用这个网格比重新再生成一个网格要节省时间。这也许是你在FLUENT 模拟中使用四边形或六面体单元的一个非常强的动机。注意,对于从其它代码导入结构网格,包括FLUENT 4,FLUENT 有一个筛选的范围。

2.计算成本

    当几何比较复杂或流程的长度尺度的范围比较大的时候,可以创建是一个三角形/四面体网格,因为它与由四边形/六面体元素所组成的且与之等价的网格比较起来,单元要少的多。这是因为一个三角形/ 四面体网格允许单元群集在被选择的流动区域中,而结构四边形/六面体网格一般会把单元强加到所不需要的区域中。对于中等复杂几何,非结构四边形/六面体网格能构提供许多三角形/ 四面体网格所能提供的优越条件。
    在一些情形下使用四边形/六面体元素是比较经济的,四边形/六面体元素的一个特点是它们允许一个比三角形/四面体单元大的多的纵横比。一个三角形/ 四面体单元中的一个大的纵横比总是会影响单元的偏斜(skewness),而这不是所希望的,因为它可能妨碍计算的精确与收敛。所以,如果你有一个相对简单的几何,在这个几何中流动与几何形状吻合的很好,例如一个瘦长管道,你可以运用一个高纵横比的四边形/六面体单元的网格。这个网格拥有的单元可能比三角形/ 四面体少的多。

3.数值耗散

    在多维情形中,一个错误的主要来源是数值耗散,术语也为伪耗散(false diffusion)。之所以称为“伪耗散”是因为耗散不是一个真实现象,而是它对一个流动计算的影响近似于增加真实耗散系数的影响。
    关于数值耗散的观点有:
    当真实耗散小,即情形出现对流受控时(即本身物理耗散比较小时),数值的耗散是最值得注意的。
    关于流体流动的所有实际的数值设计包括有限数量的数值耗散。这是因为数值耗散起于切断错误,而切断错误是一个表达离散形式的流体流动方程的结果。
    用于FLUENT 中的二阶离散方案有助于减小数值耗散对解的影响。
    数值耗散的总数反过来与网格的分解有关。因此,处理数值耗散的一个方法是改进网格。
    当流动与网格相吻一致时,数值耗散减到最小。
    最后这一点与网格的选择非常有关。很明显,如果你选择一个三角形/ 四面体网格,那么流动与网格总不能一致。另一方面,如果你使用一个四边形/六面体网格,这种情况也可能会发生,但对于复杂的流动则不会。在一个简单流动中,例如过一长管道的流动,你可以依靠一个四边形/六面体网格以尽可能的降低数值的耗散。在这种情形,使用一个四边形/六面体网格可能有些有利条件,因为与使用一个三角形/ 四面体单元比起来,你将能够使用比较少的单元而得到一个更好的解。


58 如何将自己用C语言编辑的程序导入到FLUENT中?在利用UDF编写程序时需注意哪些问题?  #157
我一般用txt文件进行UDF编程,之后将文件改为.c文件

将程序导入到Fluent中利用编译功能,具体操作

在fluent中的Define -> Use-Defined -> Compiled 打开之后,选择source files下面的Add...,找到编写好的.c文件打开,点击Build,就会生成一个以liberary name命名的文件夹,编译好的资料就放在这个文件夹里面,最后点击load就会将编译好的内容导入到Fluent中,这样你在有UDF选项的下拉菜单中就会看到你编好的程序名称。

利用UDF编程和C语言编程很相似,所以最好知道一些C语言编程的基础,再掌握一些Fluent的UDF固有的一些命令,基本上一些简单的程序就都没问题了


59  在UDF中compiled型的执行方式和interpreted型的执行方式有什么不同?   (#72)
采用与FLUENT 本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c 语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT 中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT 版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。

编译型UDF 通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF 面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。

 采用与FLUENT 本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c 语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT 中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT 版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。

编译型UDF 通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF 面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。

解释型UDF

解释型UDF 同样也是通过图形用户界面解释原代码,却只有单一过程。这一过程伴随着运行,包含对解释型UDF 面板的访问,这一面板位于源文件中的解释函数。

在FLUENT内部,源代码通过c 编译器被编译为即时的、体系结构独立的机器语言。UDF 调用时,机器编码通过内部模拟器或者解释器执行。额外层次的代码导致操作不利,但是允许解释型UDF 在不同计算结构,操作系统和FLUENT 版本上很容易实现共享。如果迭代速度成为焦点时,解释型UDF 可以不用修改就用编译编码直接运行。

解释型UDF 使用的解释器不需要有标准的c 编译器的所有功能。特别是解释型UDF 不含有下列C 程序语言部分:

goto 语句声明;无ANSI-C 语法原形;没有直接数据结构引用;局部结构的声明;联合函数指针;函数阵列;

解释型UDF与编译型UDF的区别:

在解释型与编译型UDF 之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT 解算器的数据;只能间接的通过FLUENT 预先提供的宏来获取数据。具体请参考第7 章。

在解释型与编译型UDF 之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT 解算器的数据;只能间接的通过FLUENT 预先提供的宏来获取数据。具体请参考第7 章。

总结一下,当选择写解释型或者编译型UDF时,记住以下几条:

解释型UDF:对别的运行系统是可移植的,可以作为编译型运行,不需要c 编译器,比编译型的要慢,在使用C 程序语言时有限制,不能链接到编译系统或者用户库,只能通过预先提供的宏访问FLUENT 中存储的数据。

编译型UDF:运行要快于解释型UDF,对C 程序语言没有限制,可以使用任何ANSI-compliant c 编译器进行编译,可以调用其他语言写的函数(特别是独立于系统和编译器的),如果包含某些解释器不能处理的c 语言部分时用解释型UDF 是不行的。

总之,当决定哪一类型的udf 应用到你的模型时:

对小的,直接的函数用解释型;对复杂函数使用编译型。


60 在用gambit的时候,导入pro/e的stp文件后,在消去最短边的时候,有些最短边不能消去,其是空间线段,用面merge的方法和连接点的方法都不行,请问该怎么消去这类短边?  #144
我觉得这些短边是由于Pro/e的精度产生的,如果直接导入到Gambit,然后划分网格,总会出现一些小的犄角,一些小的短边,这些地方的网格质量是非常的差,我一般的做法都是,导入到Gambit,将所有的线在原位置复制,删掉导入的体,再将线缝合成面,再缝合成体,这样就可以除去那些短边,小角度的问题了。

      也就是将导入的体,由于精度原因,在gambit里面不适用,需要自己缝合!


61 FLUENT help和GAMBIT help能教会我们(特别是刚入门的新手)学习什么基本知识?  #126

答:可以了解其基本原理和基本的操作。不过我觉得对于新手熟悉软件最好的还是tutorial guide



62 FLUENT如何做汽车外流场计算的模拟?并且怎么可以得到汽车的阻力系数和升力系数?  (#170)
答:汽车的外流场分析,一般模拟的是汽车在一定行使速度的情况下,汽车的阻力系数和升力系数,以及由此延伸计算得到的阻力、升力等,因此,入口边界条件可以给定相对的风速,然后在求解的过程中Monitor各个部分的lift force和drag force。
63 FLUENT模拟飞行器外部流场,最高MA多少时就不准确了?MA达到一定的程度做模拟需注意哪些问题?  #125

答:不准确的标准是什么?没有判断标准就没办法判断。一般来说fluent计算马赫数大于3~5之后就不是很理想了(不过相信版本越新结果越好)。计算的时候应该从低马赫数慢慢往上算。比如说如果计算马赫数是5的话,就在马赫数4的计算结果上算。另外,求解器需选择耦合和显式的。(对于6.3来说,选择基于密度的求解器)



64 在用gambit建模,保存成*.msh文件时总是出现No entity的错误:Continuum Entity fluid does not contain any valid entity and is not written! Boundary Entity wall does not contain any validentity and is not written! 不知道是什么问题?产生的原因是什么?如何解决?  (#150)
   曾经也碰到过此类问题,问题出在做2维网格输出时要将Export 2-D(X-Y) Mesh选项选上


65 在做燃烧模拟的时候,入口燃料温度定义为蒸发/离解开始时的温度(也就是,为离散相材料指定的蒸发温度“Vaporization Temperature”),这是指水分蒸发温度吗?一般是多少?


fluent入门一般问题(六)的图1

                                                              想学习更多的知识,请联系我们!

                                                              微信公众号:名称:“DR有限元”

                                                                                    号码:“hello_cae”


默认 最新
当前暂无评论,小编等你评论哦!
点赞 11 评论 收藏 1
关注