Создаю свою библиотеку UDF. Среди прочих задействую макрос, в описании которого сказано:
DEFINE_EXECUTE_ON_LOADING is a general-purpose macro that can be used to specify a function that executes as soon as a compiled UDF library is loaded in Ansys Fluent. This is useful when you want to initialize or set up UDF models when a UDF library is loaded. (Alternatively, if you save your case file when a shared library is loaded, then the UDF will execute whenever the case file is subsequently read.)
DEFINE_EXECUTE_ON_LOADING — это макрос общего назначения, который можно использовать для указания функции, выполняемой при загрузке скомпилированной библиотеки UDF в Ansys Fluent. Это полезно, если вы хотите инициализировать или настроить модели UDF при загрузке библиотеки UDF. (В качестве альтернативы, если вы сохраняете файл модели при загрузке общей библиотеки, то UDF будет выполняться при каждом последующем чтении файла модели.)
В конце этого макроса вывожу сообщение.
DEFINE_EXECUTE_ON_LOADING(start, outer)
{ FILE *f;
short i;
n = 1;
Theta = 0;
V = 7267.0; Vx = V; Vy = 0.0;
Themp = (double**)calloc(2, sizeof(double*));
Press = (double**)calloc(2, sizeof(double*));
Height = (double*)calloc(1, sizeof(double));
Themp[0] = (double*)calloc(1, sizeof(double));
Press[0] = (double*)calloc(1, sizeof(double));
f = fopen("d:/ANSYS/3_files/user_files/Atm.dat","r");
while (fscanf(f, "%lf %lf %lf", &Height[n - 1], &Themp[0][n - 1], &Press[0][n - 1]) != EOF)
{ n++;
Height = (double*)realloc(Height, n * sizeof(double));
Themp[0] = (double*)realloc(Themp[0], n * sizeof(double));
Press[0] = (double*)realloc(Press[0], n * sizeof(double));
}
n-=2;
Themp[1] = (double*)calloc(n + 1, sizeof(double));
Press[1] = (double*)calloc(n + 1, sizeof(double));
Spline(Themp, 0);
Spline(Press, 1);
Message("Init!");
}
Теперь смотрю вывод в командную консоль Fluent. Нахожу интересующий меня фрагмент:
LA12: Opening library "D:\ANSYS\3_files\dp0\FFF\Fluent\libudf"...
Done.
Init!
LA12: Opening library "D:\ANSYS\3_files\dp0\FFF\Fluent\libudf"...
start
SetVal
UDF Autorun:
start
Init!
Done.
Init!Init!Init!
Моя интерпретация:
1. Открывается библиотека. Соответственно срабатывает макрос.
2. Устанавливаются заданные макросы, что приводит к повторному срабатыванию макроса :(
Вопрос: что означает "троекратное Ура!" в конце этого фрагмента?
Добавить комментарий