吾生有涯 学海无涯
析模有界 知识无界

Fluent中的常见错误解读与处理

1、为什么Fluent UDF编译器会报告undeclared identifier for a defined variable?

如果在声明变量之前使用变量,或者在代码的不同位置声明变量,会收到编译器警告 'C2065' 'undeclared identifier'。

Fluent 要求UDF代码使用 C(版本 C99 或更早)或 C++ 编程语言编写,这也被称为 ANSI C。根据这一标准,所有变量必须在函数的开头声明。不允许在块的后面声明变量。

这些规则在 C 语言的后续版本中已被移除。

尽管 Fluent 在 makefile 中添加了 ansi 标志,但是否正确评估此标志取决于编译器。


2、如果在加载时UDF未编译或找不到,会出现什么错误?

如果未定义 include "udf.h" 就进行编译,当变量未定义时将无法编译并出现错误信息。DEFINE 宏参数必须在同一行内全部定义,否则将无法编译并出现错误“Warning: no newline at end of file”。未经编译的文件无法加载:

Opening library "libudf" ...
Error: open_udf_library: No such file or directory

在读取case文件过程中,当找不到UDF文件时会收到错误:

Library opening "libudf" ...
Error: Open_udf_library: couldn’t open library: libudf/ln86/2d/libudf.so

3、排查fl Process could not be started错误

错误标识包括:

  • Error: 999999
  • mpt_accept: error
  • accept failed: Invalid argument 999999
  • mpt_accept: error accept
  • failed MPI Application rank 0 exited before MPI_Finalize() with status 2
  • The fl process could not be started.

这种情况通常需要检查 UDF。如果 UDF 需要将值存储在 UDM 中,则需要首先创建 UDM。如果在初始化过程中没有定义 UDM,会出现此错误。前往 User Defined > User Defined Memory 定义 UDM。定义所需的 UDM 后,初始化求解。

此外,使用双精度运行Fluent,并检查网格和正交质量。


4、在 Fluent 中打开case文件时出现以下错误:Error: Read_Grid_Section

有时case文件可能已损坏,此时在 Fluent 中读取时会出现此错误。

解决此问题的方法:

  • 在 Fluent Meshing 中读取case文件。可以使用 Fluent 启动器中的 Meshing Mode 启动 Fluent Meshing。
  • 文件在 Fluent Meshing 中读取后,使用switch to solution选项进入 Fluent Solver 环境。

5、如何解决错误:CAD: invalid argument [1]: wrong type [not a pair]

可能导致此消息的原因包括监视器的变化。

如果在分析过程中更改了任何特性并继续运行,可能会出现此消息。

解决此错误的正确方法是保存模拟。之后,可以打开 .cas 文件并进行希望引入的更改。加载与 .cas 文件匹配且先前已保存的 .dat 文件,然后重新运行。

此错误还意味着某个地方有空白字段,即设置中缺少某些内容。检查面板的其余部分,有可能在早期设置中开启或关闭了某些选项,导致 GUI 中的值调用出错。尝试开启或关闭一些选项,看看是否能解决问题。

更改设置报告,Input Summary > List Changes,可以帮助查找空白字段。


6、在Fluent仿真过程中,floating point error 消息的原因是什么,如何解决?

Floating Point 错误可能与运行模拟的硬件或 Fluent 中的模型设置有关。

硬件相关:

导致此错误的硬件原因如下:

  1. CPU 或 OS 仅支持 32 位。32 位机器的最大地址空间为 4GB(2^32-1),其中需要为操作系统(OS)相关进程预留空间,实际可用内存可能接近 3GB 或更少。如果计算所需的内存超过可用内存,可能会因内存限制而出现浮点错误。解决方法是使用多处理器机器进行并行计算或升级到 64 位系统。
  2. 模拟所需的内存取决于网格大小、求解器设置、物理模型等。通常,使用基本的压力基求解器且未启用其他模型的情况下,1GB RAM 足以处理 100 万个单元的案例。但使用双精度模式(推荐用于计算精度)和添加其他模型(如湍流、组分/反应、多相流等)时,内存需求会增加,因为每次迭代都需要存储更多的变量。因此,根据可用的 RAM,计算过程中可能会超出可用内存的限制。这可以通过增加可用内存(升级为更高内存的机器)或使用多处理器系统来解决。

软件相关:

在软件方面,浮点错误通常表明一个数学运算中变量被零除,导致未定义的值。这可能由以下几种原因引起:

  1. 浮点错误主要与错误的求解器设置、边界条件和初始化设置有关。请确保在开始模拟之前,所有数值和物理参数都已正确设置。
  2. 如果使用了 UDF 用于边界条件,请确保所有变量的值都在物理范围内,并且 UDF 已正确连接到相应的边界。
  3. 在开始模拟之前,请检查 Report > Reference Values 面板中设置的参考值,确保这些值适合问题。
  4. 请检查网格质量,确保没有无效或高偏斜(正交质量 < 0.02)的单元。

7、如何解决the model information incompatible with incoming mesh的错误?

如果上游几何或名称选择被修改,将出现此错误。这会导致三种主要情况及其相应的解决方案,如下所述:

  • 情况1:添加了新的区域名称,但所有现有的命名选择保持不变。
  • 情况2:缺少旧的区域名称,存在新的区域名称。
  • 情况3:区域名称被删除。

情况1:添加了新的区域名称,但所有现有的命名选择保持不变。如果用户最初忘记标记所有命名选择,后来返回添加命名选择或将一个命名选择分成多个,则会发生这种情况。在这种情况下,TUI 中会显示错误“模型信息与传入的网格不兼容”。有关新的区域的详细信息将被提供。无需采取任何措施来纠正区域名称。新的区域将被分配默认边界条件,现有的区域将保留正确的边界条件。

情况2:缺少旧的区域名称,存在新的区域名称。如果未命名的区域被赋予新的命名选择,或现有的命名选择被重命名,则会发生这种情况。错误消息将弹出,并且警告将打印到 TUI。使用 Mesh/Recorded Mesh Operations/Edit incoming zones/Match Zone Names 将旧名称与新名称匹配。重新加载设置后,所有边界条件设置将被保留,但最好检查这些设置是否正确匹配。旧名称将在 Fluent 中被保留。

如果希望使用新的名称,则必须重新设置特定的区域。应在“编辑传入区域”面板中删除缺少的区域。新的区域将被接受,并且必须作为新的区域进行设置。

还有一种替代方法来导入新的名称。在上游更改之前,应使用 TUI 导出设置文件。使用 file/write-settings 写入设置文件。然后,在几何/网格更改并更新后,重置 Fluent 设置单元。打开 Fluent 设置单元以加载新的网格和命名选择。使用 TUI 通过 file/read-settings 读取创建的设置文件。旧的区域名称将被自动忽略,现有的区域名称将与正确的设置一起读入,新的命名选择将创建新的区域。为新的区域设置正确的边界条件。

情况3:

区域名称被删除。这可能是因为创建了名称选择,而 Fluent 为未命名区域提供的旧默认名称(如 wall_solid)不再有效。如果存在未命名的面,并将它们添加到现有的命名选择中,则会发生这种情况。如果删除了命名选择,区域名称也可能被删除。在任何情况下,错误消息将弹出,并且警告将打印到 TUI。不会有新的区域与缺少的区域匹配。然而,类似于上述情况,应使用 Mesh/Recorded Mesh Operations/Edit incoming zones 删除缺少的区域,以避免在重新加载时 TUI 打印警告消息。在“编辑传入区域”面板中删除缺少的区域,可以防止其在后续面板中因无效线程而引起的问题。

引起的主要问题:除了可以通过上述方法解决的区域名称不匹配或错误命名的明显不便外,还需注意,如果存在缺少的区域,它们不会自动从所有菜单中删除。这将导致问题;例如,在显示网格时,如果选择旧区域,将抛出“无效线程”的错误,并且有时会导致 Fluent 崩溃。


8、多相流流模拟中解决变时间步长错误

如何使用TUI关闭变时间步长?出现以下错误:**Error: received a fatal signal (Segmentation fault)**;变时间步长仅适用于VOF和Eulerian多相流模型。将时间步长方法更改为固定。

变时间步长仅适用于VOF和Eulerian多相流模型。

如果未在非VOF和Eulerian多相流问题中关闭此功能,可能会出现以下错误:Error: received a fatal signal (Segmentation fault);变时间步长仅适用于VOF和Eulerian多相流模型。将时间步长方法更改为固定。

请使用以下命令执行此操作:

/solve/set/transient-controls

注意:此命令适用于除湿蒸汽外的多相流模型。


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《Fluent中的常见错误解读与处理》
文章链接:https://www.topcfd.cn/40244/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册