2.2.6 DEFINE_EXECUTE_ON_LOADING
DEFINE_EXECUTE_ON_LOADING可用于指定在ANSYS Fluent中载入已编译的UDF库后立即执行的函数。适用于在载入UDF库时初始化或设置UDF模型。
example
以下源代码包含两个UDF。第一个UDF是EXECUTE_ON_LOADING函数,用于为库保留三个UDM(使用RESERVER_USER_MEMORY_VARS),并为UDM位置设置唯一名称(使用SET_USER_MEMORY_NAME)。第二个UDF是ON_DEMAND函数,用于在算例初始化后设置UDM位置的值。ON_DEMAND UDF使用UDM_OFFSET设置UDM位置的初始值。注意,必须在算例初始化之后执行UDF,以重置UDM的初始值。
#include "udf.h"
#define NUM_UDM 3
static int udm_offset = UDM_UNRESERVED;
DEFINE_EXECUTE_ON_LOADING(on_loading, libname)
{
if (udm_offset == UDM_UNRESERVED)
udm_offset = Reserve_User_Memory_Vars(NUM_UDM);
if (udm_offset == UDM_UNRESERVED)
Message("\nYou need to define up to %d extra UDMs in GUI and then reload current library %s\n", NUM_UDM, libname);
else
{
Message("%d UDMs have been reserved by the current library %s\n",NUM_UDM, libname);
Set_User_Memory_Name(udm_offset,"lib1-UDM-0");
Set_User_Memory_Name(udm_offset+1,"lib1-UDM-1");
Set_User_Memory_Name(udm_offset+2,"lib1-UDM-2");
}
Message("\nUDM Offset for Current Loaded Library = %d",udm_offset);
}
DEFINE_ON_DEMAND(set_udms)
{
Domain *d;
Thread *ct;
cell_t c;
int i;
d=Get_Domain(1);
if(udm_offset != UDM_UNRESERVED)
{
Message("Setting UDMs\n");
for (i=0;i<NUM_UDM;i++)
{
thread_loop_c(ct,d)
{
begin_c_loop(c,ct)
{
C_UDMI(c,ct,udm_offset+i)=3.0+i/10.0;
}
end_c_loop(c,ct)
}
}
}
else
Message("UDMs have not yet been reserved for library 1\n");
}