Мы продолжаем знакомить наших читателей с возможностями современных расчетных комплексов компании ANSYS, Inc. В настоящей статье на примере гидравлического расчета воздуховода системы вентиляции рассмотрены основные приемы работы с программным продуктом ANSYS CFX. Кроме того, для полноты изложения материала мы включили в статью описание последовательности построения расчетной сетки для нашей задачи в ICEM CFD. В этот раз мы создадим сетку, составленную из гексаэдрических элементов. Таким образом, следуя нашим инструкциям, вы всегда сможете без особого труда решить похожую задачу в расчетном комплексе ANSYS CFX.
Прежде всего — несколько слов о модуле ICEM CFD/Hexa. В основе метода построения гексаэд- рической сетки в ICEM CFD лежит понятие блока: практически любая твердотельная модель может быть описана набором блоков, точно повторяющих ее топологию. Например, круглое U-образное колено можно представить в виде шести блоков- параллелепипидов, как это показано на рис. 1.
Для корректного описания некоторых особенностей геометрии (выступов, пазов и пр.) иногда требуется назначить ассоциативные связи между узлами, ребрами и боковыми гранями полученных блоков и соответствующими им геометрическими объектами: точками, линиями и поверхностями 3D-модели. В общем случае эту операцию можно не выполнять.
На следующем этапе необходимо указать характерные размеры элементов на ребрах или задать характерные размеры элементов для геометрической модели в целом. И последнее действие — это проецирование граней блока на поверхность модели.
После создания сетки рекомендуется проверить ее качество.
Теперь перейдем к практической части нашего мастер-класса. Вид и основные геометрические размеры расчетного объекта показаны на рис. 2. Это тройник прямоугольного сечения с плавным поворотом на 90°. Поскольку тройник обладает симметрией, достаточно вырезать из него половину и в препроцессоре ANSYS CFX задать на соответствующей поверхности граничное условие симметрии.
Построение гексаэдрической сетки
- Импортируем геометрическую модель в ICEM CFD. Наша модель была предварительно сохранена в формате Parasolid, поэтому используем команду File ^Import Geometry ^ParaSolid, указываем директорию, в которой находится файл, и единицы измерения. Последняя опция служит также для масштабирования модели, если это необходимо.
- Переходим в меню Blocking ^Create Block. Выбираем тип блока 3D Bounding Box, затем с помощью ограничивающего прямоугольника (левая кнопка мыши) выделяем все геометрические объекты, которые в данный момент отображаются на экране. Нажимаем кнопку OK.
Результат выполнения этой операции показан на рис. 3.
- Теперь разрежем полученный блок на части и удалим лишние блоки (рис. 4). Резание блоков в ICEM CFD производится командой Split Block из выпадающего меню Blocking —>Split Block. С помощью курсора указываем произ¬вольную точку на одном из ребер блока и нажи¬маем левую кнопку мыши — на экране появит¬ся изображение секущей плоскости. Далее эту плоскость следует передвинуть в нужное место и нажать на среднюю кнопку мыши. Повторяем перечисленные выше действия необходимое ко¬личество раз, и в результате наш блок приобре¬тет такой вид, как на рис. 4.
Теперь мы должны удалить четыре лишних блока (на рисунке они отмечены синими крес¬тиками). Для этого воспользуемся командой Blocking — Delete Block. Удалять блоки можно по отдельности, а можно и все сразу. В послед¬нем случае в выпадающей панели Select blocks следует выбрать иконку Select diagonal corner vertices и указать два конца любой внутренней диагонали блока. - Далее нам потребуется объединить не-которые узлы блоков так, как это показано на рис. 5. Из экранного меню вызываем команду Blocking — Merge Vertices. Выбираем сначала первую пару узлов V1—V2, затем вторую V3—V4. Не забудьте перед этим убрать галочку напро¬тив Propagate merge, иначе действие этой опе¬рации распространится и на соседние блоки.
- Теперь при внимательном рассмотрении получившейся блочной структуры можно уви¬деть, что в некоторых местах ребра и узлы блоков отстоят слишком далеко от линий и поверхностей исходной геометрии. Если оставить все как есть, то в дальнейшем могут возникнуть определен¬ные трудности при выполнении операции проеци¬рования. Поэтому сейчас мы привяжем несколько точек нашей геометрии к узлам блоков. Делается это следующим образом. Для начала перейдем в меню Blocking—Associate. Далее в выпадаю¬щем меню Blocking Association выбираем метод Associate Vertex, а в поле Entity ставим галочку напротив Point. Теперь выберем узел V и свяжем его с точкой P, расположенной на середине дуги (рис. 6). Аналогичным образом поступим и с оставшимися тремя узлами.
Если вы сделали все правильно, у вас должна получиться блочная структура, изобра¬женная на рис. 7. - На этом процесс создания сетки можно было бы считать завершенным, если бы не одно «но». Известно, что в криволинейных каналах массовые силы активно воздействуют на поток: структура турбулентности пограничного слоя заметно меняется, усиливаются турбулентные пульсации, появляются условия для формирова¬ния вторичных циркуляционных течений.
Поэтому моделирование подобного рода течений лучше проводить в два этапа. Сначала выполнить расчет на достаточно грубой сетке с применением пристеночных функций — этот расчет позволит нам оценить высоту первой пристеночной ячейки. А затем нужно использовать 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 они закрашены синим цветом). Подтверждаем свой выбор нажатием средней кнопки мыши. - Далее следует указать характерные размеры элементов на ребрах блоков (рис. 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. - Для предварительного просмотра сетки на поверхности модели выполните следующие действия: во-первых, поставьте галочку напротивPre-Meshв ветвиBlockingдерева проекта; во-вторых, нажмите на правую кнопку мыши и в появившейся панели выберите опциюProject faces.В результате сетка элементов должна выглядеть примерно так, как показано на рис. 10.
- Наконец, выполним построение и сохранение в файл сетки гексаэдрических элементов. В той же панели, что мы вызвали в пункте 8, выберите опциюConvert to Unstruct Mesh.После этого на экране появится изображение построенных элементов, а сетка будет сохранена в файл с названием hex.uns. На этом создание расчетной сетки завершается.
Препроцессор 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).
Следующий шаг создания расчетной модели — это задание соответствующих граничных условий на границе расчетной области. Мы будем использовать следующие типы граничных условий: Inlet (Вход), Opening (Свободный выход), Symmetry (Симметрия) и Wall (Стенка). Расстановка граничных условий осуществляется командой Create—Flow Objects—Boundary Conditions.
На входе задаем скорость (Normal speed) 20 м/с и начальный уровень турбулентности потока 5%. На выходе задаем условие Opening с опцией Opening Pressure and Directions. В поле Relative Pressure задаем давление 0 Па и указываем направление потока (Flow Direction) как перпендикулярное плоскости выхода. На боковой стенке половины тройника ставим условие симметрии Symmetry.
По умолчанию на оставшихся поверхностях будет задано граничное условие Wall (No Slip).
В меню Solver control (Create—Flow Objects — 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).
Постпроцессор ANSYS CFX предоставляет пользователю разнообразные способы отображения расчетной геометрии, полный набор существующих методов визуализации расчетных переменных, возможность расчета интегральных характеристик течения на любом объекте, анимацию и многое другое. Однако для первого знакомства с ANSYS CFX достаточно рассмотреть только стандартные методы визуализации (векторное представление и градиентную заливку) и способ детализации течения, а также научиться строить графики.
Создание геометрического объекта
В постпроцессоре ANSYS CFX можно создать следующие геометрические объекты: точки (Point), облако точек (Point Cloud), линии (Line), плоскости (Plane), поверхности (Isosurface — изоповерх- ности и Surface of Revolution — поверхности вращения), объемы (Volume) и сплайны (Polyline).
Для создания геометрических объектов применяется команда Create^Location и далее из выпадающего списка выбирается нужный объект, например плоскость. Затем следует присвоить имя новой плоскости (Plane 1) и нажать на Apply. На экране слева (область 2) появится панель редактирования свойств объекта (рис. 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.
Заливка
Для тоновой заливки плоскости необходимо выполнить следующие действия: перейти в закладку Colour и изменить режим цвета c Constant (постоянный) на Variable (переменный). После этого из списка Variable следует выбрать нужную переменную (Pressure, Temperature, Total Pressure…) и указать диапазон изменения (Range) значений расчетной переменной (по умолчанию — Global, то есть максимальное и минимальное значения переменной, полученные во всей расчетной области). Затем нужно нажать на кнопку Apply. Как видите, изображение в окне просмотра осталось прежним. Но здесь все верно — просто мы забыли в закладке Render снять галочку напротив Draw Lines. На рис. 16 представлено поле давлений.
Создание векторов
Для создания векторов используется команда Create—Vector.
В качестве опорного объекта в поле Locations указываем плоскость Plane 1. В списке режимов дискретизации (Sampling) выбираем Equally Spaced (равноотстоящие векторы) и в поле параметра # of Points указываем нужное число векторов. В качестве переменной (для раскраски векторов) выбираем скорость (Velocity). Результат приведен на рис. 17.
Длина векторов регулируется параметром Symbol Size, который находится в закладке Symbol. Если вы хотите, чтобы все векторы имели одинаковую длину, используйте операцию Normalize Symbols.
Детализация структуры течения
В начале статьи мы высказали предположение, что за поворотом должна сформироваться отрывная зона. И теперь было бы неплохо более детально рассмотреть структуру потока на этом участке, чем мы сейчас и займемся.
Начнем с создания сферы Volume 1, ограничивающей вихревую зону: Create — Location — Volume. В списке Method выбираем Sphere и указываем координаты центра сферы (-0,35; 0; -0,3) и радиус сферы (150 мм).
Теперь, если мы выберем режим Below Intersection, то получим сферу, а если Above Intersection — объем, полученный вычитанием из объема расчетной области объема сферы.
Следующий шаг — построение линий тока, ограниченных объемом сферы. Команда построения линий тока вызывается из главного меню Create—Streamline. Используем следующие настройки объекта Streamline: Type — 3D Streamline, 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).
Создание двумерного графика
В заключение расскажем о том, какие действия надо выполнить в постпроцессоре ANSYS CFX, чтобы построить график изменения какой-либо расчетной величины вдоль произвольной кривой.
Сразу же оговоримся, что мы рассмотрим самый общий случай — когда кривая создается непосредственно в постпроцессоре, а не импортируется извне.
Предварительной операцией по созданию кривой является построение срединной поверхности, которая для постпроцессора является типичной User Surface (поверхность пользователя). Выполняем команду Create^Location^ User Surface. В закладке Geometry выбираем метод построения поверхности Offset From Surface (эквидистантная поверхность). В качестве опорной поверхности используем одну из стенок воздуховода (на рис. 19 она выделена синим цветом).
В поле Distance указываем расстояние, на которое перемещается опорная поверхность, — в нашем случае это 100 мм. Все остальные настройки оставляем без изменений. Нажимаем на кнопку Apply. Срединная поверхность (User Surface 1) построена.
После этого создаем контур (Contour) с помощью команды Create ^Contour. В качестве Locations указываем поверхность User Surface 1, выбираем переменную Pressure и задаем число контуров (# of Contours) равным 3. В результате срединная поверхность приобретет вид двух полос-контуров (на рис. 19 — желтая и бирюзовая полосы).
Теперь приступим к созданию самой кривой (Polyline 1): Create ^Location ^Polyline. Выбираем метод From Contour (Извлечь из контура) и указываем контур (Contour). Нажимаем на кнопку Apply. На этом процедуру построения вспомогательной кривой можно считать завершенной.
Для создания графиков используется команда Create ^Chart. Переходим в закладку Chart Line и в списке Locations выбираем Polyline 1. В качестве переменной, значения которой будут откладываться по оси Х, указываем Chart Count, а по оси Y — Pressure (рис. 20).