Проблема с большими радиальными зазорами в ANSYS TurboGrid

Сегодня мы решим с вами небольшую проблему, связанную с некорректной работой сеточного препроцессора ANSYS TurboGrid при разбиении геометрии лопаточных машин центробежного типа при больших радиальных зазорах. Пример подобной турбины показан на рисунке ниже. Здесь показана проточная часть турбины центростремительного типа с радиальным зазором высотой ~ 10% от высоты лопаток.

1

Попробуем загрузить созданную в BladeGen геометрию в TurboGrid. Как мы и предполагали, препроцессор выдал ошибку. Что надо сделать, чтобы исправить эту ошибку?

2

Перейдите в раздел Machine Data и с помощью правой кнопки мыши откройте выпадающее меню. Далее выберите опцию Edit in Command Editor.

3В редакторе команд отредактируйте параметр Surface Extension Factor. Вместо значения 0.1 укажите 0.5.

4

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

На этом все. Удачного Вам моделирования!

С уважением, Денис Хитрых
Директор АО «Симулабс».
2016-11-21_16-58-13

Инженеры АО «СимуЛабс» победили в конкурсе ANSYS HOF 2107

sailboat2016_halloffame

Поздравляем коллектив АО «СимуЛабс» с очередной большой победой!

В этом году наши коллеги Д.П. Хитрых и И.В. Погорнев в 5 раз стали победителями международного конкурса на лучший
инженерный проект, выполненный в программном комплексе ANSYS — ANSYS Hall of Fame Competition.

В этом году на суд компетентного жюри была представлена работа, посвященная численной проработке прототипа нового инновационного вспомогательного «движителя» для спортивной яхты. Прототип изделия основан на классической турбине со спиралевидными лопастями. Но в отличии от классического варианта, в новой турбине используются оптимизированные в ANSYS OptiSLang лопасти переменной толщины, гироскопическое стабилизирующее устройство и профилированный несущий корпус.

Данный проект носит исследовательский характер и не направлен на коммерческое использование.

Коллектив АО «СимуЛабс»,
30 декабря 2016 г., Москва.

Tips&Tricks: Решение нестационарных задач в ANSYS CFD

timeУ Джефри Чосера — «любимого» поэта английских королей — есть хороший афоризм про время: «Time and tide wait for no man». Тема скоротечности времени всплывает и в речи M, которая дает достойный отпор всем недоброжелателям МИ-6 в зале суда.

Что объединяет корифеев английской поэзии с вычислительной гидродинамикой? Ответ простой. Любая задача, которая решается в нестационарной постановке, т. е. в которой дискретизации подвергаются не только независимые переменные, относящиеся к пространству, но и переменная время. Поэтому сегодня мы рассмотрим с вами различные вопросы, связанные с решением нестационарных задач в газодинамических пакетах ANSYS CFX и ANSYS Fluent. Мы поговорим об обработке результатов нестационарных расчетов, программировании и многом другом. Большая часть материалов данного поста основана на реальных запросах пользователей в службу технической поддержки компаний ANSYS и КАДФЕМ.

quotefancy-357338-3840x2160

Вопрос 1. Как остановить нестационарный расчет в ANSYS Fluent, например, если температура в заданной точке (узле, средняя по объему, поверхности и пр.) достигла пороговой величины? Для этого можно использовать следующий UDF-макрос.

Код UDF (Stop Solver)

# include "udf.h"
/*********************************************************************************************/
/********************************* User input starts *****************************************/
real xmin=0.04, xmax=0.041, ymin=0.01, ymax=0.011, zmin=0.002, zmax=0.003;
real limit=340;
/********************************** User input ends ******************************************/
/*********************************************************************************************/

DEFINE_EXECUTE_AT_END(execute_at_end)
{

Domain *d;
Thread *t;
real sum_tempvol=0., sum_vol=0, vol_avg_temp;
real sum_tempmass=0., sum_mass=0, mass_avg_temp;
cell_t c;
real xc[ND_ND];

d = Get_Domain(1);
#if !RP_HOST /*serial or node*/
thread_loop_c(t,d)
{
if (FLUID_THREAD_P(t))
{
begin_c_loop_int(c,t)
C_CENTROID(xc,c,t);
if (xc[0] > xmin && xc[0] < xmax) { if (xc[1] > ymin && xc[1] < ymax) { if (xc[2] > zmin && xc[2] < zmax)
{
sum_tempvol += C_T(c,t) * C_VOLUME(c,t);
sum_tempmass += C_T(c,t) * C_R(c,t) * C_VOLUME(c,t);
sum_vol += C_VOLUME(c,t);
sum_mass += C_R(c,t) * C_VOLUME(c,t);
}
}
}
end_c_loop_int(c,t)
}
}
#endif

#if !RP_HOST /* not host */
vol_avg_temp = PRF_GRSUM1(sum_tempvol)/PRF_GRSUM1(sum_vol) ;
mass_avg_temp = PRF_GRSUM1(sum_tempmass)/PRF_GRSUM1(sum_mass) ;
#endif

node_to_host_real_2(vol_avg_temp,mass_avg_temp);

#if !RP_NODE
Message("Volume Averaged Temperature (K): %gn", vol_avg_temp);
Message("Mass Averaged Temperature (K): %gn", mass_avg_temp);

if (mass_avg_temp < limit)
{
RP_Set_Integer("converged",1);
Message("Temperature has dropped below limit %g n", limit);
}
#endif

}

Для использования данного макроса вам необходимо его откомпилировать (проверено для версии не ниже 17.0). И определить следующую команду (в строке exceute command): (if (= (%rpgetvar ‘converged) 1) (begin (ti-menu-load-string «/file/wcd low-temp-trig-%t.cas») (ti-menu-load-string «exit»))).

Как работает данный UDF-макрос? В процессе итераций выполняется проверка на достижении выбранной переменной заданного порогового значения. Если условие выполняется, то записываются *.cas и *.dat файлы.  И выполняется команда выхода.

Сегодня я успел рассмотреть только один вопрос. Но это только начало. В следующем году обязательно продолжим.

Всех с наступающим Новым годом и Рождеством!

С уважением, Денис П. Хитрых,
Директор АО «СимуЛабс».
2016-11-21_16-58-13

С НОВЫМ 2017 ГОДОМ И РОЖДЕСТВОМ!

simulabs-2017-card-rus

Дорогие друзья и коллеги!

Поздравляем всех Вас с наступающим Новым годом и Рождеством!

Желаем Вам в новом 2017 году сделать очередной шаг навстречу своей мечте!

Всегда двигаться только вперед! Никогда не отступать и не сдаваться!

С уважением, коллектив АО «СимуЛабс».

Как декантировать вино. ANSYS CFD на службе у сомелье.

007Сегодня после долгого перерыва мы снова с вами погрузимся в мир многофазных течений. И попробуем смоделировать одну из канонических задач, связанных с капиллярностью. Но сначала я познакомлю вас с интересным опытом наших японских коллег, которые с помощью решателя ANSYS Fluent попытались смоделировать процесс аэрации вина в бокалах разной формы.

Для тех, кто ведет трезвый образ жизни, напоминаю, что декантирование (декантация) — это процесс отделения вина от осадка и насыщение его кислородом. При этом сомелье совершает руками серию магических движений. А сама процедура может занимать 10-15 минут и более. Чаще всего декантируют красные вина и реже белые. Отметим, что споры о полезности и объективности результатов этого процесса не утихают до сих пор. Поэтому работа японских инженеров заслуживает внимания. Они провели исследование бокалов различной формы на предмет интенсификации (или сокращения) процесса аэрации вина при контакте с кислородом.

2016-11-02_10-13-15

Для этого было решено использовать газодинамический пакет ANSYS Fluent самой последней версии на тот момент (17.0). Ниже показана анимация, иллюстрирующая результаты их фундаментального труда.

bokaly

В 17-м релизе ANSYS существенно упростилась процедура постановки 6DOF-задачи. Раньше для задания движения тела с 6-ю степенями свободы  необходимо было создавать и компилировать специальные UDF-макросы.  Но в Fluent 17.0 появилась специальная панель, которая сделала работу инженера-исследователя намного легче. При этом сохранилась возможность определять закон движения тела как на основе собственных пользовательских функций (UDF), так и с использованием возможностей System Coupling.

6dof

По результатам моделирования в номинации «Лучший аэрационный бокал-2016» победил бокал на длинной утонченной ножке.

rezultatyЕсли вы в совершенстве владеете японским языком, то более подробно про это исследование вы можете почитать по этой ссылке http://news.mynavi.jp/kikaku/2015/12/16/004/. А к капиллярам мы вернемся уже в следующем году.

С уважением, Денис П. Хитрых,
Директор АО «СимуЛабс».
2016-11-21_16-58-13

Мастер-класс: CFD расчет химического реактора #4.

reactorСегодня я опубликую последнюю (крайнюю) часть моего мастер-класса по расчету химического реактора в ANSYS CFX. Ранее мы с вами научились определять многоступенчатые реакции в CFX на основе предопределенных шаблонов; построили геометрическую модель реактора; сгенерировали расчетную сетку и пр. И нам осталось только определить граничные условия и настройки решателя. Чем мы сейчас и займемся.

На входе мы задаем массовый расход, параметры турбулентности и температуру реагентов.

2016-12-26_17-04-54

2016-12-26_17-05-42

Турбулентность мы определим через относительную интенсивность, равную 0.05, что эквивалентно Tu = 5%. Массовый расход = 0.6 кг/с и статическая температура = 333 К.

Кроме того, необходимо задать компонентный состав на входе в соответствии с таблицей, показанной ниже.

2016-12-26_17-26-55

Если просуммировать массовые доли всех компонентов на входе, то мы получим величину, равную 0.9868 (вместо 1). Пугаться не стоит: «недостающиеся» доли  (1-0.9868 = 0.0132) приходятся на «замороженный» (constraint) азот, для которого не решается уравнение переноса (см. рис. ниже).

Для определения «замороженного» компонента вам необходимо отредактировать свойства расчетного домена. Откройте закладку Fluid Models и укажите для азота N2 опцию Constraint. Для всех других компонент по-умолчанию будет установлена опция Transport Equation.

transport

Не выходя из режима редактирования свойств расчетного домена, задайте величину опорного давления (Reference Pressure) равной 0.35 МПа. В закладке Fluid Models для Heat Transfer укажите Thermal Energy; Turbulence = SST и Combustion = FRC (модель, описывающая скорости химических реакций — «антагонист» модели «быстрой» химии). В Material выбираем ранее созданный материал Chloroform.

На выходе определяем статическое давление, равное 0.0 Па. И, наконец, на стенках определяем граничное условие первого рода T = const = 800 К.

Для начальной инициализации оставляем все настройки по-умолчанию. Задаем максимальное количество итераций = 400. Шаг по времени = 0.1 сек. И критерий сходимости RMS = 1e-04.

На этом все. Запускаем задачу на решение.

С уважением, Денис П. Хитрых,
Директор АО «СимуЛабс».
2016-11-21_16-58-13

Почему вы храпите? Специалисты «СимуЛабс» знают ответ на этот вопрос

Храп

Современные методы вычислительной гидродинамики активно используются в задачах биомедицины и практической медицины. И во многих случаях они заменяют или дополняют экспериментальную медицину. Поэтому сегодня тема нашего разговора будет строго научной и медицинской. А поговорим мы с вами о заболевании, которое затрагивает каждого пятого или каждого четвертого человека на Земле. И является косвенной причиной смерти еще для двух процентов населения — это храп.

Храп возникает вследствие вибрации мягких тканей  гортанной части глотки, и часто сопровождается приступами остановки дыхания (мед., апноэ).

Некоторые ученые считают, что хронический храп значительно снижает умственные способности человека: чем больше вы храпите, тем больше вы тупеете. Вот так. Звучит не очень оптимистично.

snoringНа рисунке показаны результаты серии связанных расчетов в ANSYS CFX и ANSYS Mechanical нестационарной гидродинамики верхних дыхательных путей человека c целью разработки эффективных безоперационных или малоинвазивных методов лечения храпа.

При создании трехмерной модели расчетной области использовались данные DVT, СT и MR томографии.

Отметим, что использование FSI-технологий ANSYS, позволило в более реалистичном виде отобразить картину течения смеси газов на участке гортаноглотки.

Работы выполнена инженерами АО «СимуЛабс» в 2015 году.

Не храпите и удачного Вам моделирования!

С уважением, Денис Хитрых.
Директор АО «СимуЛабс».