fluent加载第三方(C++,Fortan等)动态链接库
这里我介绍一种比较简单的方法,首先我们从ANSYS Fluent UDF Manual上随便找一段正确的UDF,下面这段UDF取自ANSYS 18的ANSYS Fluent UDF Manual,位于2.3.23.3. Example 1 - Pressure Profile
/ ***********************************************************************
UDF for specifying steady-state parabolic pressure profile boundary
profile for a turbine vane
************************************************************************/
#include "udf.h"
DEFINE_PROFILE(pressure_profile,t,i)
{
real x[ND_ND]; / * this will hold the position vector */
real y;
face_t f;
begin_f_loop(f,t)
{
F_CENTROID(x,f,t);
y = x[1];
F_PROFILE(f,t,i) = 1.1e5 - y*y/(.0745*.0745)*0.1e5;
}
end_f_loop(f,t)
}
我们将上面的UDF源代码存为prepare.c
我们启动Fluent
然后我们直接编译我们刚才保存的prepare.c
我们打开Visual Studio(我是Visual Studio 2013英文版)
DLL的代码很简单,就是输出Hello Fluent,这里有一点需要注意一下Solution PlatForms一定要根据Fluent的位数来选择,默认是编译为Win32,而我们现在的一般使用的是64位的Fluent,所以我们需要改变为x64才行(见截图)
#include / *包含输入输出流头文件*/
using namespace std;
/ *一定要这样写,以c语言的形式导出,在Fluent当中才能识别*/
extern "C" __declspec(dllexport) void CppDynamicLinkLibrary()
{
cout << "Hello Fluent" << endl; / *输出“Hello Fluent”*/
}
然后准备真实需要编译且加载了加载第三方动态链接库的UDF源文件,代码如下:
#include "udf.h"
/ *链接我们刚才动态链接库的函数*/
extern void CppDynamicLinkLibrary();
/ *******************************************
*我们在每次迭代完成以后,
*用动态链接库中的函数输出一次“Hello Fluent”
********************************************/
DEFINE_ADJUST(my_adjust,d)
{
CppDynamicLinkLibrary(); / *调用动态链接库中的函数*/
}
将源代码也保存为prepare.c
然后前面动态链接库项目文件夹下
重新打开Fluent
导入网格,设置好各种求解参数
加载刚才编译的UDF(注意:此处只需要加载(Load),而不需要编译(Build)了!见截图)
求解运行算例