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

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

UDF для трехмерной задачи (профиль скорости)

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


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

Помогите, пожалуйста, разобраться с формированием UDF-файла для трехмерной задачи: имеется формула (во вложении). Необходимо получить профиль распределения скорости Z, по направлению движения Y.
При попытке сделать расчет получаем сообщение "Error: Divergence detected in AMG solver: x-momentum".

Подскажите, пожалуйста, как сиё поправить?

Спасибо!

ВложениеРазмер
Иконка изображения 1.png16.98 КБ
Иконка изображения 2.png79.12 КБ
Иконка изображения формула3.2 КБ
The_Immortal
Аватар пользователя The_Immortal
P.S. UDF:
#include "udf.h"
#include "math.h"
DEFINE_PROFILE(inlet_y_velocity, thread, index)

#define v_mean 4
#define z_max 750.53
#define z_min -249.47
#define B 1./7.

{
    real x[ND_ND]; /* this will hold the position vector */
    real y;
    real z;
    real u;
    face_t f;

    begin_f_loop(f, thread) /*loops over all faces in the thread passed in the DEFINE macro argument*/
    {
        F_CENTROID(x,f,thread);
        z = x[1];
        y = x[1];
        u = v_mean*(B+1);;
        F_PROFILE(f, thread, index) = u*pow((z-249.47)/10,B);
    }
    end_f_loop(f, thread)
}

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

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

Цитата:
Необходимо получить профиль распределения скорости Z, по направлению движения Y.

Может быть, перпендикулярно направлению движения?

В UDF эти строчки сомнительны:

        z = x[1];
        u = v_mean*(B+1);;

Неустойчивость решения не обязательно связана с вашей UDF. Кстати, в свежих версиях такие выражения можно задвать без UDF.

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

Цитата:
Может быть, перпендикулярно направлению движения?
Да.

Цитата:
В UDF эти строчки сомнительны:        

z = x[1];

У нас профиль растянут вдоль оси X по направлению Y. А что здесь смущает?

Цитата:
Неустойчивость решения не обязательно связана с вашей UDF.
Дело в том, что при задании профиля скоростей через profile расчеты проходят. Так что что-то не не так именно с UDF,

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

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

Обратите внимание на строчки

y =x[1];

z =x[2];

Если поменять 1 и 2 местами, то адекватно работать не будет!

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

 

#include "udf.h

#include "math.h"

 

DEFINE_PROFILE(inlet_x_velocity, thread, index)

{

real x[ND_ND]; /* this will hold the position vector */

real y;

real z;

real a;

face_t f;

 

begin_f_loop(f, thread) /*loops over all faces in the thread passed in the DEFINE macro argument*/

{

F_CENTROID(x,f,thread);

y =x[1];

z =x[2];

a = pow((pow(y,2)+pow(z,2)),0.5);

F_PROFILE(f, thread, index) = 2*(1- (a*a/(0.10214*0.10214)));

}

end_f_loop(f, thread)

}

 

#include "udf.h"
#include "math.h"

DEFINE_PROFILE(inlet_x_velocity, thread, index)
{
real x[ND_ND]; /* this will hold the position vector */
real y;
real z;
real a;
face_t f;

begin_f_loop(f, thread) /*loops over all faces in the thread passed in the DEFINE macro argument*/
{
F_CENTROID(x,f,thread);
y =x[1];
z =x[2];
a = pow((pow(y,2)+pow(z,2)),0.5);
F_PROFILE(f, thread, index) = 2*(1- (a*a/(0.10214*0.10214)));
}
end_f_loop(f, thread)
}

 

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

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

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