初始化错误——从一个简单的算例看UDF各个宏的调用顺序

感谢西安交通大学en_phert的问题和尝试 

Fluent版本:Fluent 19.0

Visual Studio版本:Visual Studio 2013 

UDF的宏的调用中大家常看见下图:

    这个图很容易给大家造成一个误解就是DEFINE_PROFILE是在初始化以后,在运算的过程当中更新物性参数的时候才会调用DEFINE_PROFILE

而帮助文档当中各个宏的调用顺序如下图:

从上面两幅图中我们可以看出其实在初始化以前,我们就会调用DEFINE_PROFILE宏,这也就能说明为什么我们在使用UDF的时候,分明只编写了修改边界的DEFINE_PROFILE宏,结果在初始化的时候却造成了Received signal SIGSEGV的错误

下面我们从一个简单算例来验证各个宏的调用顺序

算例来源于:https://confluence.cornell.edu/display/SIMULATION/FLUENT+-+Laminar+Pipe+Flow

对于边界条件来说,我们不直接在GUI当中指定数值,而是使用下面的UDF来指定,UDF中可以有输出信息,这样我们就可以通过控制台输出的信息,观察到对应的宏什么时候被调用。

初始化错误——从一个简单的算例看UDF各个宏的调用顺序

首先挂载DEFINE_INIT宏和DEFINE_ADJUST

初始化错误——从一个简单的算例看UDF各个宏的调用顺序

入口边界我们用UDF来代替

我们初始化 

在我们选择标准初始化,在compute from中选择inlet,我们可以在Fluent的控制台中看到DEFINE_PROFILE宏被调用了一次

点击“Initialize”按钮

 

点击“Calculate”按钮开始计算

初始化错误——从一个简单的算例看UDF各个宏的调用顺序

从上面的分析我们可以看到实际上的调用顺序和帮助文档里面的顺序是一致的,也可以再重新绘制如下图:

如果我们编写如下的DEFINE_PROFILE

 那么我们就会在初始化的时候造成Received signal SIGSEGV的错误

这是因为没有对指针a赋值,a指针是一个野指针,当我们去获取它所指向的值的时候,无法返回正确的值造成的,然而在初始化以前我们会去调用DEFINE_PROFILE这个宏,从而出现了错误。

 

转载于:https://www.cnblogs.com/liusuanyatong/p/11259609.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Fluent UDF初始化是指在Fluent软件使用用户定义函数之前需要进行的一系列准备工作。以下是Fluent UDF初始化的步骤: 1. 编写UDF代码:首先,需要使用编程语言(如C++)编写UDF代码,确保代码能够正确地实现所需的功能。UDF代码必须遵循Fluent UDF编程接口的规范,以便能够在Fluent软件正确使用。 2. 编译UDF代码:将编写的UDF代码编译成可执行文件或库文件。在编译过程,需要包含与Fluent软件的接口文件以及所需的头文件。编译完成后,会生成一个用于加载到Fluent软件UDF库文件。 3. 设置Fluent环境:在Fluent软件打开预期的工作文件,然后选择“Define”->“User-Defined”->“Functions”菜单。在弹出的菜单,选择“Library...”选项,然后加载之前编译生成的UDF库文件。 4. 编译和加载UDF:加载UDF库文件后,Fluent软件会尝试编译和链接UDF,并将其加载到系统。如果编译和链接成功,那么UDF将被正确加载,可以在Fluent软件使用。 5. UDF参数设置:一旦UDF成功加载到Fluent软件,就可以通过设置相关参数来调整UDF的行为。这些参数可以通过Fluent软件的用户界面或文本命令进行设置,以满足具体问题的需求。 通过以上步骤,可以完成Fluent UDF初始化工作。在初始化完成后,用户就可以在Fluent软件使用定义的UDF来实现特定的功能,如自定义边界条件、材料模型等。 ### 回答2: Fluent UDF(用户自定义函数)是Ansys Fluent用于添加自定义功能或修改现有功能的一种工具。Fluent UDF初始化是指在使用和调用自定义函数之前必须进行的一系列步骤。 首先,需要在Fluent UDF的工作目录创建一个新的源文件,文件名的后缀通常为.c或.C。这个源文件将包含定义自定义函数所需的代码。 接下来,在源文件定义自定义函数的主体,这可以是求解器函数、初始化函数、材料函数等。根据具体的需求,可以自由编写函数来实现特定的功能。 然后,需要使用“define”命令在Fluent的文本界面将自定义函数加载到Fluent。通过命令“/define/user-defined/fluent-udf-sourcename”可以将源文件与自定义函数名称关联起来。 在加载自定义函数之前,需要使用“/compiler-options”命令设置编译选项。编译选项会告诉Fluent如何处理和编译自定义函数的源代码。 完成以上准备工作后,在Fluent使用“solve”命令开始求解模拟问题。Fluent会在求解过程调用并使用已加载的自定义函数。 通过这些步骤,Fluent UDF初始化工作完成。之后,可以使用Fluent的各种功能和工具来分析和处理仿真结果,包括自定义函数所添加或修改的功能。 需要注意的是,Fluent UDF初始化过程可能因具体的仿真需求而有所变化。上述说明仅为一般流程,具体情况可能根据个人需求和Fluent版本的不同而有所不同。因此,在使用Fluent UDF时,建议参考相关的文档和用户手册以获得准确的初始化步骤和详细说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值