Fluent UDF中使用智能动态数组
Fluent UDF中要使用动态数组在传统编译方法中只能使用纯C语言中的malloc函数。此函数无法自动释放内存,必须手动调用free函数来释放,否则就会造成内存泄漏问题。
要想使用智能动态释放的数组,就必须将UDF语法拓展到C++语言,调用C++内置的智能动态数组vector支持。这里我们借助VC++ UDF Studio插件来实现对智能动态数组的调用。例如下面例子实现将入口面的压力和温度存入动态数组,然后再将存储的压力值赋值给出口。
#include "udf.h"
#include <vector>
#define INLET_ID 4 // 4是入口面的zone ID,根据您的case的实际情况修改
#define OUTLET_ID 5 // 5是出口面的zone ID,根据您的case的实际情况修改
using namespace std; //vector属于std的域
vector<real>MyTemperatureArray; //存储温度的全局动态数组,尚无元素
vector<real>MyPressureArray; //存储压力的全局动态数组,尚无元素
DEFINE_ADJUST(fill_T_P, domain)
{
face_t f;
Thread*tf_in;
MyTemperatureArray.clear();// 清除MyTemperatureArray数组中的元素,数组尺寸变成