Уважаемые профессионалы .Подскажите пожалуйста как задать свободное движение стенки wall вдоль оси Х ? Нижеприведенный макрос не работает . При наличии добавленных элементов в область Dynamic Mech Zones пишет Warning: incorrect cg motion opora (opora это wall выделенный красным) . Данная зона должна свободно перемещаться вдоль оси Х. Синизу на нее будет действовать давление поднимая ее вверх, а сверху будет противодействующая сила опуская опору вниз. Нужно что бы Fluent рассчитал зазор при разных давлениях на входе, величину утечек в кг/сек при разных давлениях, и визуализировал движение этой опоры. Я подозреваю что макрос DEFINE_SDOF_PROPERTIES не подходит для не замкнутого объема. Какой макрос правильно применить в данной задаче? Спасибо.
#include "udf.h"
DEFINE_SDOF_PROPERTIES(opora, prop, dt, time, dtime)
{
prop[SDOF_MASS] = 7;
prop[SDOF_IXX] = 0.00077;
prop[SDOF_IYY] = 0.00077;
prop[SDOF_IZZ] = 0.00077;
prop[SDOF_LOAD_F_X] = -70.0;
prop[SDOF_LOAD_F_Y] = 0;
prop[SDOF_ZERO_TRANS_X] = FALSE;
prop[SDOF_ZERO_TRANS_Y] = TRUE;
prop[SDOF_ZERO_TRANS_Z] = TRUE;
printf("\ndelta_missile: updated 6DOF properties");
}
Вложение | Размер |
---|---|
54545.jpg | 222.56 КБ |
Здравствуйте! Вы не подключили опцию Six DOF в разделе Options, поэтому макрос и не работает (и не забудьте потом в панели Dynamic Mesh Zones, тоже подключить Six DOF). Если у вас опора движется поступательно вдоль оси Х без вращения, то зачем вы задаете момент инерции? Вообще свойства ATT сейчас можно задать через панель Six DOF Properties и не писать специально для этого макрос, но, насколько я помню, там нельзя указать внешнюю силу.
Не работает сила противодейсвия prop [SDOF_LOAD_F_X] = 6400*t;. 6400N за 1 сек. Линейная зависимость силы от времени. Перемещение вдоль оси Х получить удалось, но оно бескончное. Правильно ли задана нагрузка SDOF_LOAD_F_X?
Идет очень большое искажение сетки. Ремешинг настроить не удалось.
#include "udf.h"
DEFINE_PROFILE(unsteady_pres, thread, position)
{
face_t f;
real t = CURRENT_TIME;
begin_f_loop(f, thread)
{
F_PROFILE(f, thread, position) = 46.0*101325.0*t;
}
end_f_loop(f, thread);
}
DEFINE_SDOF_PROPERTIES(opora, prop, dt, time, dtime)
{
real t = CURRENT_TIME;
prop[SDOF_MASS] = 70;
prop[SDOF_ZERO_TRANS_X] = FALSE;
prop[SDOF_ZERO_TRANS_Y] = TRUE;
prop[SDOF_ZERO_TRANS_Z] = TRUE;
prop[SDOF_ZERO_ROT_X] = TRUE;
prop[SDOF_ZERO_ROT_Y] = TRUE;
prop[SDOF_ZERO_ROT_Z] = TRUE;
printf ("\opora: updated 6DOF properties");
Message("time = %f);
prop [SDOF_LOAD_F_X] = 6400*t;
prop [SDOF_LOAD_F_Y] = 0;
prop [SDOF_LOAD_F_Z] = 0;
}
DEFINE_GEOM(axis, d, dt, position)
{
position[1] = 0;
}
DEFINE_GEOM(wall_deform, d, dt, position)
{
position[1] = 0.0125;
}
В простой Transient постановке задача решается отлично. С dynamic Mesh не идет :(
https://
1. В prop [SDOF_LOAD_F_X] = 6400*t; у вас лишний пробел после prop.
2. В Message("time = %f); пропущены кавычки.
3. В строке printf ("\opora: updated 6DOF properties"); зачем-то экранируете букву \o. Она же у вас не спец. символ. Убирайте обратный слэш, а то компилятор ругается.
4. Можно обойтись без функции DEFINE_GEOM и все сделать через интерфейс. В Definition выбираете plane, указываете точку на плоскости и нормаль к ней.
5. Remeshing с четырехугольными элементами не работает, поэтому делайте треугольную сетку. Size Function подключать не надо и без неё все будет перестраиваться.
6. Layering (работает только с чистой гекса-сеткой (четырехугольной)) в данном случае нецелесообразно использовать, так как перемещаемая граница имеет сложную форму и трудно будет ориентировать линии сетки таким образом, чтобы ячейки удалялись послойно.
Спасибо большое. Подсказки очень помогли. Система заработала но не доконца как нужно.
1. Не получается настроить Contact Detection. Нужно ли подключать к нему UDF? В каких случаях подлючается UDF к контакту, а в каких нет? В уроке с клапаном байпасным выполнено без UDF. Пробовал две границы wall делать Rigid Body без UDF и пробовал включать в контакт UDF макрос из хелпа. Контакт не работает.
2. Как вывести в консоль силу от давления жидкости (inlet press) на гидропяту? Не могу понять отрабатывает SDOF_LOAD_F_X свою силу противодействия по формуле 6400*t или нет. Хочется сравнить силу заданную мной и развиваемую гидропятой от давления при одинаковом моменте времени. Гидродинамическая пята полностью до упора перемещается влево и запирает сама себя на выходе жидкости. Или это действительно так получается или SDOF_LOAD_F_X не работает.
Спасибо большое за оказываемую помошь. :)
Актуальный код на данном этапе работы
#include "udf.h"
DEFINE_PROFILE(unsteady_pres, thread, position)
{
face_t f;
real t = CURRENT_TIME;
begin_f_loop(f, thread)
{
F_PROFILE(f, thread, position) = 80.0*101325.0 + 46.0*101325.0*t;
}
end_f_loop(f, thread);
}
DEFINE_SDOF_PROPERTIES(opora, prop, dt, time, dtime)
{
real t = CURRENT_TIME;
real x_force_pump = 6400*t - 3850.0;
prop[SDOF_MASS] = 70;
prop[SDOF_ZERO_TRANS_X] = FALSE;
prop[SDOF_ZERO_TRANS_Y] = TRUE;
/* valid only when outlet is 80atm (3850.425 r=12.5 force) */
prop[SDOF_LOAD_F_X] = x_force_pump;
Message ("\n\ntime = %f, x_force_pump = %f, pres_inlet(atm) = %f\n\n", t, x_force_pump, 80.0 + 46.0*t);
}
DEFINE_SDOF_PROPERTIES(wall_rigid, prop, dt, time, dtime)
{
prop[SDOF_ZERO_TRANS_X] = TRUE;
prop[SDOF_ZERO_TRANS_Y] = TRUE;
}
DEFINE_GEOM(axis, d, dt, position)
{
position[1] = 0;
}
DEFINE_GEOM(wall_deform, d, dt, position)
{
position[1] = 0.0125;
}
1. В вашем случае для Contact Detection необходимо подключать UDF, который приведен в документации. Единственно, вам нужно изменить его так, чтобы скорость гидропяты обращалась в ноль при достижении определенного расстояния, которое вы указываете в proximity threshold (укажите расстояние равное 2-3 ячейкам, чтобы избежать появления вырожденных элементов в месте контакта). В примере с байпасным клапаном макрос в contact detection не подключается, так как там движение границ задается явно и вся логика реализована в макросе DEFINE_GRID_MOTION (он тоже приведен в документации). Опция contact detection нужна для того, чтобы определить, когда подключать макрос (при сближении на определенное расстояние) с функцией DEFINE_CONTACT и чтобы определить свойства новой контактной зоны (в вашем случае для имитации запирания гидропяты необходимо создать пористую зону с большим коэффициентом гидравлического сопротивления).
2. Создайте обычный монитор силы через Report Definitions > New > Force Report.
Добавить комментарий