Все ответы об инженерном анализе

Перед началом работы настоятельно рекомендуем ознакомиться с правилами форума.

Ошибка в UDF для Charge density

ofsavier
Аватар пользователя ofsavier

Здравствуйте.

Я пытаюсь написать UDF для плотности заряда частицы  (charge density), что является параметром материала. Включён модуль MHD, использую DPM.

При использовании даже простейшего кода ( при компилировании всё ок) после расчёта при просмотре отчётов (траекторий частиц, например)  выдаёт ошибку, блокирующую их показ: Error at Node 2: get_udf_function: function charge_density_macro  has wrong type: 2! = 46. 

Согласно инструкции она означает, что я применил этот UDF для неверного параметра.Хотя я применяю его как раз для параметра материала частицы.

Вот пример кода:

#include "udf.h"

DEFINE_DPM_PROPERTY(charge_density_macro, c, t, p, T)
{
    real charge_density;
    charge_density = -1;
    return charge_density;
}

ofsavier
Аватар пользователя ofsavier

P.S. Ошибка возникает только в случае компилированного кода ( при interpreted всё ок). Однако в моём случае (для основного кода) необходимо использовать compiled

ershovmih
Аватар пользователя ershovmih

1) Первое, что приходит на ум - может не хватать директив компилятора. Рекомендую вставить в шапку кода набор:
 #include "udf.h"
 #include "dpm.h"
 #include "surf.h"
 #include "dpm_mem.h"
 #include "sg.h"
 #include "sg_mphase.h"
 #include "flow.h"
 #include "mem.h"
 #include "metric.h"
 #include "math.h"
 #include "models.h"
 #include "sg_udms.h"

2) Второе - может быть конфликт с версией Fluent или неправильная настройка компилятора. А остальные коды компилируются без ошибок?

3) Третье - иногда бывают сбои, если не указать точку с нулём после ввода числа (нужно было charge_density = -1.0;)
Также возможно, что вы указали не то название переменной при объявлении макроса: в UDF Manual DEFINE_DPM_PROPERTY (name, c, t, tp, T) а вы указали p вместо tp DEFINE_DPM_PROPERTY(charge_density_macro, c, t, p, T) (но это маловероятно могло вызвать ошибку)

4) Четвёртое - есть мнение, что в Вашей задаче может потребоваться применение макроса DEFINE_DPM_SCALAR_UPDATE.

 

5) Пятое - рекомендую поискать в Google диссертации, где используют желаемые макросы. Для этого просто введите в поиск название макроса (например, DEFINE_DPM_PROPERTY) 

Успехов!

 

 

 

 


 

Добавить комментарий

Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Приложить файл

Максимальный размер файла: 999 МБ.
Допустимые типы файлов: txt doc docx xls xlsx pdf rar zip 7zip tar.