如果在声明变量之前使用变量,或者在代码的不同位置声明变量,会收到编译器警告 'C2065' 'undeclared identifier'。
Fluent 要求UDF代码使用 C(版本 C99 或更早)或 C++ 编程语言编写,这也被称为 ANSI C。根据这一标准,所有变量必须在函数的开头声明。不允许在块的后面声明变量。
这些规则在 C 语言的后续版本中已被移除。
尽管 Fluent 在 makefile 中添加了 ansi 标志,但是否正确评估此标志取决于编译器。
如果未定义 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
错误标识包括:
这种情况通常需要检查 UDF。如果 UDF 需要将值存储在 UDM 中,则需要首先创建 UDM。如果在初始化过程中没有定义 UDM,会出现此错误。前往 User Defined > User Defined Memory 定义 UDM。定义所需的 UDM 后,初始化求解。
此外,使用双精度运行Fluent,并检查网格和正交质量。
有时case文件可能已损坏,此时在 Fluent 中读取时会出现此错误。
解决此问题的方法:
Meshing Mode
启动 Fluent Meshing。switch to solution
选项进入 Fluent Solver 环境。可能导致此消息的原因包括监视器的变化。
如果在分析过程中更改了任何特性并继续运行,可能会出现此消息。
解决此错误的正确方法是保存模拟。之后,可以打开 .cas 文件并进行希望引入的更改。加载与 .cas 文件匹配且先前已保存的 .dat 文件,然后重新运行。
此错误还意味着某个地方有空白字段,即设置中缺少某些内容。检查面板的其余部分,有可能在早期设置中开启或关闭了某些选项,导致 GUI 中的值调用出错。尝试开启或关闭一些选项,看看是否能解决问题。
更改设置报告,Input Summary > List Changes,可以帮助查找空白字段。
Floating Point 错误可能与运行模拟的硬件或 Fluent 中的模型设置有关。
硬件相关:
导致此错误的硬件原因如下:
软件相关:
在软件方面,浮点错误通常表明一个数学运算中变量被零除,导致未定义的值。这可能由以下几种原因引起:
如果上游几何或名称选择被修改,将出现此错误。这会导致三种主要情况及其相应的解决方案,如下所述:
”
情况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 崩溃。
如何使用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
注意:此命令适用于除湿蒸汽外的多相流模型。