Fluent UDF中直接调用math.h中的误差函数erf、erfc

我们知道误差函数定义为

 这是一个带积分的函数,Fluent UDF中想自己写代码实现起来相当不方便,精度还不一定能保证。幸好C++11中为我们将这个函数内置在数学头文件math.h中,但是想要兼容C++11我们必须使用Visual Studio2013(或更高)和一款名为VC++ UDF Studio的专业UDF编写调试插件配合。具体过程如下:

1. 官网下载VC++ UDF Studio插件并安装,建议下载学术版(如想进一步采购注册,对高校老师学生比较优惠)

 

2. 安装Visual Studio 2013(或更高)专业版或旗舰版(Express版不支持),勾选“Microsoft Foundation Classes for C++”选项,其它选项视个人喜好。注意,Visual Studio 2013 请使用带update5的版本,对于其它更早期的2013版本,可能出现无法找到“afxv_cpu.h”文件,甚至插件菜单混乱的情况。安装前保证网络畅通。否则,可能会报告“WindowSDKDir”变量找不到的错误(如下图所示)。

 

 3. 下载安装Visual C++ MFC多字节字符库(Visual C++ MFC Multi-Byte-Character-Set Library)。 网址是:  Download Multibyte MFC Library for Visual Studio 2013 from Official Microsoft Download Center

 

如果未安装上面的Visual C++ MFC多字节字符库,可能会出现如下错误。

 4. 双击桌面图标,选择需要版本后会自动启动Fluent,读入case后点击Fluent嵌入菜单中的“Start Visual Studio”子菜单。

  

 5. 输入如下示例源代码,并点击“编译UDF”按钮直到编译通过。有任何错误提示,可以双击提示行直接定位到源码中的错误行。编译通过后按“加载到Fluent”按钮即可载入到Fluent中。

#include "udf.h"
#include <math.h>
DEFINE_ON_DEMAND(ttt)
{
    //直接调用erf、 erff、 erfl、 erfc、 erfcf、 erfcl函数
    real erf_value = erf(1.0);
    real erfc_value=erfc(1.0);
    Message0("erf=%g, erfc=%g\n", erf_value, erfc_value);
}

 

6. 执行DEFINE宏,本例由于erf函数放在DEFINE_ON_DEMAND宏中,所以在Execute On Demand对话框里面手动执行。

 

 

7. 运行结果如下,看到两个数加起来是1,是正确的。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值