Мы продолжаем знакомить наших читателей с возможностями современных расчетных ком­плексов компании ANSYS, Inc. В настоящей статье на примере гидравлического расчета воздуховода системы вентиляции рассмотре­ны основные приемы работы с программным продуктом ANSYS CFX. Кроме того, для пол­ноты изложения материала мы включили в статью описание последовательности пост­роения расчетной сетки для нашей задачи в ICEM CFD. В этот раз мы создадим сетку, со­ставленную из гексаэдрических элементов. Таким образом, следуя нашим инструкциям, вы всегда сможете без особого труда решить похожую задачу в расчетном комплексе ANSYS CFX.

Прежде всего — несколько слов о модуле ICEM CFD/Hexa. В основе метода построения гексаэд- рической сетки в ICEM CFD лежит понятие блока: практически любая твердотельная модель может быть описана набором блоков, точно повторяю­щих ее топологию. Например, круглое U-образное колено можно представить в виде шести блоков- параллелепипидов, как это показано на рис. 1.

Рис. 1. Пример блочной структуры.

Для корректного описания некоторых осо­бенностей геометрии (выступов, пазов и пр.) иногда требуется назначить ассоциативные свя­зи между узлами, ребрами и боковыми гранями полученных блоков и соответствующими им гео­метрическими объектами: точками, линиями и поверхностями 3D-модели. В общем случае эту операцию можно не выполнять.

Рис. 2. Геометрия расчетной модели.

На следующем этапе необходимо указать характерные размеры элементов на ребрах или задать характерные размеры элементов для геометрической модели в целом. И последнее действие — это проецирование граней блока на поверхность модели.

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

Теперь перейдем к практической части на­шего мастер-класса. Вид и основные геометри­ческие размеры расчетного объекта показаны на рис. 2. Это тройник прямоугольного сечения с плавным поворотом на 90°. Поскольку тройник обладает симметрией, достаточно вырезать из него половину и в препроцессоре ANSYS CFX задать на соответствующей поверхности гра­ничное условие симметрии.

Построение гексаэдрической сетки

  1. Импортируем геометрическую модель в ICEM CFD. Наша модель была предварительно сохра­нена в формате Parasolid, поэтому используем команду File ^Import Geometry ^ParaSolid, указываем директорию, в которой находится файл, и единицы измерения. Последняя опция служит также для масштабирования модели, если это необходимо.
  2. Переходим в меню Blocking ^Create Block. Выбираем тип блока 3D Bounding Box, затем с помощью ограничивающего прямоуголь­ника (левая кнопка мыши) выделяем все геомет­рические объекты, которые в данный момент отображаются на экране. Нажимаем кнопку OK.

    Рис. 3-8. Этапы построения гексаэдрической сетки.

    Результат выполнения этой операции показан на рис. 3.

  3. Теперь разрежем полученный блок на части и удалим лишние блоки (рис. 4). Резание блоков в ICEM CFD производится командой Split Block из выпадающего меню Blocking —>Split Block. С помощью курсора указываем произ¬вольную точку на одном из ребер блока и нажи¬маем левую кнопку мыши — на экране появит¬ся изображение секущей плоскости. Далее эту плоскость следует передвинуть в нужное место и нажать на среднюю кнопку мыши. Повторяем перечисленные выше действия необходимое ко¬личество раз, и в результате наш блок приобре¬тет такой вид, как на рис. 4.
    Теперь мы должны удалить четыре лишних блока (на рисунке они отмечены синими крес¬тиками). Для этого воспользуемся командой Blocking — Delete Block. Удалять блоки можно по отдельности, а можно и все сразу. В послед¬нем случае в выпадающей панели Select blocks следует выбрать иконку Select diagonal corner vertices и указать два конца любой внутренней диагонали блока.
  4. Далее нам потребуется объединить не-которые узлы блоков так, как это показано на рис. 5. Из экранного меню вызываем команду Blocking — Merge Vertices. Выбираем сначала первую пару узлов V1—V2, затем вторую V3—V4. Не забудьте перед этим убрать галочку напро¬тив Propagate merge, иначе действие этой опе¬рации распространится и на соседние блоки.
  5. Теперь при внимательном рассмотрении получившейся блочной структуры можно уви¬деть, что в некоторых местах ребра и узлы блоков отстоят слишком далеко от линий и поверхностей исходной геометрии. Если оставить все как есть, то в дальнейшем могут возникнуть определен¬ные трудности при выполнении операции проеци¬рования. Поэтому сейчас мы привяжем несколько точек нашей геометрии к узлам блоков. Делается это следующим образом. Для начала перейдем в меню Blocking—Associate. Далее в выпадаю¬щем меню Blocking Association выбираем метод Associate Vertex, а в поле Entity ставим галочку напротив Point. Теперь выберем узел V и свяжем его с точкой P, расположенной на середине дуги (рис. 6). Аналогичным образом поступим и с оставшимися тремя узлами.
    Если вы сделали все правильно, у вас должна получиться блочная структура, изобра¬женная на рис. 7.
  6. На этом процесс создания сетки можно было бы считать завершенным, если бы не одно «но». Известно, что в криволинейных каналах массовые силы активно воздействуют на поток: структура турбулентности пограничного слоя заметно меняется, усиливаются турбулентные пульсации, появляются условия для формирова¬ния вторичных циркуляционных течений.
    Поэтому моделирование подобного рода течений лучше проводить в два этапа. Сначала выполнить расчет на достаточно грубой сетке с применением пристеночных функций — этот расчет позволит нам оценить высоту первой при­стеночной ячейки. А затем нужно использовать SST- или LES-модели турбулентности на более мелкой сетке со сгущением узлов в пристеноч­ной области — так, чтобы координата первого пристеночного узла Y+ не превышала 1,5-2,0.
    В нашем случае, чтобы сэкономить время и вычислительные ресурсы, мы не будем сводить Y+ по всей расчетной области к рекомендуемой величине и ограничимся значением этого пара­метра в диапазоне 30-50. Тем не менее сейчас мы покажем, как загустить узлы сетки в присте­ночной области средствами ICEM CFD.
    Наиболее очевидное решение — использо­вать так называемые O- и С-топологии блоков. Что это такое, иллюстрирует рис. 8. Построение О-топологии производится командой экранно­го меню Blocking —> Split Block —> Ogrid Block. В подменю Ogrid Block нажимаем на иконку Select face(s) и курсором выбираем соответ­ствующие грани блока (на рис. 7 они закрашены синим цветом). Подтверждаем свой выбор на­жатием средней кнопки мыши.
  7. Далее следует указать характерные размеры элементов на ребрах блоков (рис. 9) и задать размер элементов на поверхностях. Для задания размеров элементов на поверхностях вызываем команду Mesh->Set Surface Mesh Size. С помощью иконки К выбираем все по¬верхности (они могут быть и погашенными) и в поле Maximum size устанавливаем значение 10. Оставшиеся поля можно не заполнять. Вообще, все средства управления свойствами сетки в ICEM CFD сосредоточены в меню Mesh.
    Для задания числаэлементов по отдельным ребрам и закона изменения толщины (высоты) элемента (по умолчанию она постоянна по всей длине ребра) применяют команду Blocking — Pre-Mesh Params — Edge Params. Выбираем нужное ребро (на рис. 9 оно обведено кружком). В поле Nodes устанавливаем значение 15 (на ребре блока будет размещено 15 узлов). Затем выбираем из списка Mesh law закон Exponential (экспоненциальный) и устанавливаем высоту (Spacing 1) первой ячейки равной 0,5.
    Если вы поставите галочку напротив Copy Parameters и в Method укажете To All Parallel Edges, то в дальнейшем вы избавите себя от необходимости заново выбирать другие парал-лельные ребра. Нажимаем кнопку OK.
  8. Для предварительного просмотра сетки на поверхности модели выполните следующие действия: во-первых, поставьте галочку напро­тивPre-Meshв ветвиBlockingдерева проекта; во-вторых, нажмите на правую кнопку мыши и в появившейся панели выберите опциюProject faces.В результате сетка элементов должна вы­глядеть примерно так, как показано на рис. 10.
  9. Наконец, выполним построение и сохра­нение в файл сетки гексаэдрических элементов. В той же панели, что мы вызвали в пункте 8, выберите опциюConvert to Unstruct Mesh.Пос­ле этого на экране появится изображение пос­троенных элементов, а сетка будет сохранена в файл с названием hex.uns. На этом создание расчетной сетки завершается.

Рис. 9-10. Завершение построения сетки.

Препроцессор ANSYS CFX

Чтобы начать работу в ANSYS CFX, необходимо загрузить CFX Launcher и далее в поле Working Directory указать рабочую директорию проекта. При выборе имени директории следует учиты­вать, что Launcher не распознает буквы русского алфавита и специальные символы.

Вызов модуля CFX-Pre производится из главного меню CFX — CFX-Pre — на экране по­является пустое окно проекта. Для создания но­вого проекта следует перейти в меню File — New Simulations и в режиме General создать файл.

Графическое окно препроцессора условно можно разделить на три области: 1 — область меню, 2 — область дерева модели, 3 — окно просмотра (рис. 11).

Область дерева модели состоит из несколь­ких закладок: Physics — задание граничных условий, выбор физических моделей; Mesh — операции с расчетной сеткой; Regions — работа с расчетной областью; Expressions — создание выражений (например, для задания профиля ско­рости на входе); Materials — выбор материалов и указание их свойств; Reactions — выбор моде­лей горения или описание химических реакций.

После создания нового файла мы автома­тически попадаем в закладку Mesh. Для импор­та сетки нажимаем на кнопку Import mesh, на­ходящуюся в правой части закладки. Указываем тип сетки (Mesh Format), то есть в нашем слу­чае — ICEM CFD, выбираем нужный файл и раз­мерность единиц — мм. В общем случае можно импортировать несколько сеток и соединить их интерфейсами.

После импорта сетки необходимо опреде­лить расчетную область (Domain) и все физи­ческие условия в ней. Команда определения рас­четной области вызывается из главного меню следующим образом: Create — Flow Objects — Domain. После указания имени на экране долж­на появиться панель Edit Domain, где мы ука­зываем тип расчетной области — Fluid Domain, рабочее тело — Air Ideal Gas и относительное давление — 101 325 Па.

Далее переходим в закладку Fluid Models и в списке Heat Transfer Model выбираем изотер­мический (Isothermal) расчет. Устанавливаем температуру рабочего тела в расчетной области равной 50 °С. В качестве модели турбулентнос­ти выбираем Shear Stress Transport (SST).

Рис. 11. Окно препроцессора ANSYS CFX (CFX-Pre).

Следующий шаг создания расчетной моде­ли — это задание соответствующих граничных ус­ловий на границе расчетной области. Мы будем ис­пользовать следующие типы граничных условий: Inlet (Вход), Opening (Свободный выход), Sym­metry (Симметрия) и Wall (Стенка). Расстановка граничных условий осуществляется командой Create—Flow Objects—Boundary Conditions.

Рис. 12. Панель Define Run.

На входе задаем скорость (Normal speed) 20 м/с и начальный уровень турбулентности по­тока 5%. На выходе задаем условие Opening с опцией Opening Pressure and Directions. В поле Relative Pressure задаем давление 0 Па и указываем направление потока (Flow Direction) как перпендикулярное плоскости выхода. На бо­ковой стенке половины тройника ставим усло­вие симметрии Symmetry.

По умолчанию на оставшихся поверхностях будет задано граничное условие Wall (No Slip).

В меню Solver control (Create—Flow Ob­jects — Solver Control) задаются параметры, ко­торые определяют процесс расчета: метод расче­та, критерий сходимости, число итераций и шаг по времени. В нашем случае мы укажем макси­мальное число итераций (Max. Iterations) — 1000 и выберем опцию автоматического определения шага по времени Auto Timescale.

Сохраняем все настройки расчетного вари­анта в файл-описание (*.def): File — Write Solver File. После выполнения этого действия автома­тически загрузится Solver Мanager, а на экране появится панель Define Run (рис. 12).

Рекомендуемые сочетания граничных условий

Поскольку в любой задаче обязательно существует несколько типов граничных условий (ГУ), возникает во­прос об оптимальном их сочетании и даже о корректнос­ти совместного использования некоторых типов ГУ.

Наиболее устойчивым сочетанием ГУ является за­дание скорости или массового расхода на входе и стати­ческого давления на выходе расчетной области. В этом случае полное давление на входе определяется расчетом.

Также весьма устойчивым является сочетание пол­ного давления на входе и скорости или расхода на выходе. Статическое давление на выходе и скорость на входе опре­деляются расчетом. Однако комбинация полного давления на входе со статическим давлением на выходе является очень чувствительной к начальным значениям. Массовый расход при этой комбинации ГУ определяется расчетом.

Не рекомендуется задавать статическое давление на входе и выходе. Массовый расход и полное давление на входе являются результатами расчета, однако граничные условия слабо обусловливают расчетную область. Зада­ние полного давления на выходе является недопустимым.

Если при заданном условии Outlet на выходе рядом с расчетной границей возможно формирование рецирку­ляционной зоны, то на этой границе рекомендуется ис­пользовать условие Opening. Можно также попробовать удлинить расчетную область, переместив таким образом границу выхода подальше от зоны обратных токов.

Для запуска варианта на расчет сначала указываем путь до файла-описания, а затем нажимаем на кнопку Start Run в левом нижнем углу панели Define Run. На экране появятся два окна, отображающие состояние процесса расче­та: графики сходимости по основным перемен­ным и сводные данные для каждой итерации.

В случае необходимости расчет можно оста­новить нажатием кнопки Stop Current Run. В кон­це расчета будет выведено общее процессорное время, а также невязки по основным переменным.

В заключение отметим, что все команды, вызываемые из главного меню, продублирова­ны на экране в виде иконок:

Иконки упорядочены таким образом, что для задания варианта расчета нужно только по­следовательно пройтись по ним слева направо.

Постпроцессор ANSYS CFX

Рассмотрим кратко интерфейс постпроцессора ANSYS CFX и методы работы с ним.

Постпроцессор ANSYS CFX работает с файлами результатов (*.res, *.trn), файлами се­ток в собственном формате (*.gtm), файлами ошибок, генерируемых решателем (*.res.err), файлами-описаниями (*.def) и др.

Кроме того, все геометрические объекты (и их настройки), созданные во время текущей сессии, могут быть сохранены в специальный файл-состояние (State file) с расширением *.cst. Заметим, что файл-состояние не содержит объ­екты, а лишь указывает путь к ним.

Для перехода в режим постпроцессора следу­ет вызвать из главного меню CFX Launcher команду CFX -> CFX-Post. В результате на экране появится главное окно постпроцессора CFX-Post (рис. 13).

Сразу же можно заметить, что постпроцес­сор ANSYS CFX имеет схожий с препроцессором интерфейс, поэтому главное окно CFX-Post так же легко делится на три условные зоны: 1 — де­рево постпроцессора (выбор объектов), 2 — ре­дактирование настроек объектов, 3 — окно про­смотра (см. рис. 13).

Рис. 13. Окно постпроцессора (CFX-Post).

Постпроцессор ANSYS CFX предоставляет пользователю разнообразные способы отобра­жения расчетной геометрии, полный набор су­ществующих методов визуализации расчетных переменных, возможность расчета интеграль­ных характеристик течения на любом объекте, анимацию и многое другое. Однако для первого знакомства с ANSYS CFX достаточно рассмот­реть только стандартные методы визуализации (векторное представление и градиентную за­ливку) и способ детализации течения, а также научиться строить графики.

Создание геометрического объекта

В постпроцессоре ANSYS CFX можно создать сле­дующие геометрические объекты: точки (Point), облако точек (Point Cloud), линии (Line), плоскос­ти (Plane), поверхности (Isosurface — изоповерх- ности и Surface of Revolution — поверхности вра­щения), объемы (Volume) и сплайны (Polyline).

Для создания геометрических объектов применяется команда Create^Location и далее из выпадающего списка выбирается нужный объект, например плоскость. Затем следует при­своить имя новой плоскости (Plane 1) и нажать на Apply. На экране слева (область 2) появится па­нель редактирования свойств объекта (рис. 14).

Рис. 14. Панель редактирования свойств объекта.

Для создания плоскости могут использовать­ся следующие способы (Definition Method) из за­кладки Geometry: Three Points — по трем точкам, Point and Normal — по точке и нормальному век­тору, XY/YZ/ZX Plane — по любым двум ортам.

Мы применили метод ZX Plane. С помощью ползунка можно перемещать секущую плоскость по нормали (ось Y) вверх-вниз.

Для отрисовки линий пересечения граней элементов расчетной сетки с плоскостью следу­ет перейти в закладку Render, убрать галочку напротив Draw Faces и поставить ее напротив Draw Lines. Далее необходимо поменять режим Colour Mode с Default на User Specified и вы­брать цвет линии. Вид секущей плоскости пред­ставлен на рис. 15.

Рис. 15. Вид секущей плоскости.

Заливка

Для тоновой заливки плоскости необходимо выполнить следующие действия: перейти в за­кладку Colour и изменить режим цвета c Con­stant (постоянный) на Variable (переменный). После этого из списка Variable следует выбрать нужную переменную (Pressure, Temperature, Total Pressure…) и указать диапазон измене­ния (Range) значений расчетной переменной (по умолчанию — Global, то есть максимальное и минимальное значения переменной, получен­ные во всей расчетной области). Затем нужно нажать на кнопку Apply. Как видите, изобра­жение в окне просмотра осталось прежним. Но здесь все верно — просто мы забыли в закладке Render снять галочку напротив Draw Lines. На рис. 16 представлено поле давлений.

Рис. 16. Поле давлений.

Создание векторов

Для создания векторов используется команда Create—Vector.

В качестве опорного объекта в поле Lo­cations указываем плоскость Plane 1. В списке режимов дискретизации (Sampling) выбираем Equally Spaced (равноотстоящие векторы) и в поле параметра # of Points указываем нужное число векторов. В качестве переменной (для раскраски векторов) выбираем скорость (Ve­locity). Результат приведен на рис. 17.

Длина векторов регулируется парамет­ром Symbol Size, который находится в заклад­ке Symbol. Если вы хотите, чтобы все векторы имели одинаковую длину, используйте опера­цию Normalize Symbols.

Рис. 17. Вектора скоростей.

Детализация структуры течения

В начале статьи мы высказали предположение, что за поворотом должна сформироваться от­рывная зона. И теперь было бы неплохо более детально рассмотреть структуру потока на этом участке, чем мы сейчас и займемся.

Начнем с создания сферы Volume 1, ограни­чивающей вихревую зону: Create — Location — Volume. В списке Method выбираем Sphere и указываем координаты центра сферы (-0,35; 0; -0,3) и радиус сферы (150 мм).

Теперь, если мы выберем режим Below In­tersection, то получим сферу, а если Above In­tersection — объем, полученный вычитанием из объема расчетной области объема сферы.

Следующий шаг — построение линий тока, ограниченных объемом сферы. Команда постро­ения линий тока вызывается из главного меню Create—Streamline. Используем следующие на­стройки объекта Streamline: Type — 3D Stream­line, Start From — Volume 1, Reduction — Max Number of Points, Max Points — 50, Variable — Velocity, Direction — Forward.

Для отображения на экране точек, из кото­рых будут запущены треки, нажмите на кнопку Preview Seed Points  .

После этого в разделе Symbol мы долж­ны поставить галочку напротив Draw Symbols (отрисовка символов) и выбрать символ — это может быть Arrowhead (острие стрелки), Ball (шар), Fish3D (рыбка) и др. Мы остановили свой выбор на Arrowhead (рис. 18).

Рис. 18. Структура вихревой зоны.

Создание двумерного графика

В заключение расскажем о том, какие дейст­вия надо выполнить в постпроцессоре ANSYS CFX, чтобы построить график изменения ка­кой-либо расчетной величины вдоль произ­вольной кривой.

Сразу же оговоримся, что мы рассмотрим самый общий случай — когда кривая создается непосредственно в постпроцессоре, а не импор­тируется извне.

Предварительной операцией по созданию кривой является построение срединной поверх­ности, которая для постпроцессора является типичной User Surface (поверхность пользова­теля). Выполняем команду Create^Location^ User Surface. В закладке Geometry выбираем метод построения поверхности Offset From Sur­face (эквидистантная поверхность). В качестве опорной поверхности используем одну из стенок воздуховода (на рис. 19 она выделена синим цветом).

Рис. 19. Срединная поверхность.

В поле Distance указываем расстояние, на которое перемещается опорная поверхность, — в нашем случае это 100 мм. Все остальные на­стройки оставляем без изменений. Нажимаем на кнопку Apply. Срединная поверхность (User Surface 1) построена.

После этого создаем контур (Contour) с помощью команды Create ^Contour. В качест­ве Locations указываем поверхность User Sur­face 1, выбираем переменную Pressure и зада­ем число контуров (# of Contours) равным 3. В результате срединная поверхность приобретет вид двух полос-контуров (на рис. 19 — желтая и бирюзовая полосы).

Теперь приступим к созданию самой кри­вой (Polyline 1): Create ^Location ^Polyline. Выбираем метод From Contour (Извлечь из кон­тура) и указываем контур (Contour). Нажимаем на кнопку Apply. На этом процедуру построения вспомогательной кривой можно считать завер­шенной.

Рис. 20. Панель Chart.

Для создания графиков используется ко­манда Create ^Chart. Переходим в закладку Chart Line и в списке Locations выбираем Poly­line 1. В качестве переменной, значения которой будут откладываться по оси Х, указываем Chart Count, а по оси Y — Pressure (рис. 20).