Введение
Ansys Fluent® – пакет для численного моделирования, обладающий не только мощным функционалом, но и удобным интерфейсом, который демократизует решение сложных комплексных задач для рядового инженера. Большинство настроек для не типовых задач, может быть сделано в графическом интерфейсе без использования специфических пользовательских функций или текстовых команд, но есть исключения, для которых без них не обойтись. В данной публикации речь пойдет именно о таком случае.
Первый пример и метод его решения
В качестве примера рассмотрим задачу срабатывания клапана при достижении порогового давления в рабочем объеме цилиндра, сжимаемого во время поступательного движения поршня. Её общий вид и пояснения к расчетной области представлены на Рисунке 1.
Для описания движения поршня использована динамическая сетка, рабочая область заполнена идеальным сжимаемым газом, выходное граничное условие – pressure outlet, постановка нестационарная плоская.
Поскольку дальше речь пойдет о методе решения, а не о решении конкретной задачи, то её геометрические параметры, исследуемое вещество, скорость движения поршня и давление открытия клапана могут быть выбраны произвольно.
Рисунок 1. Двухмерная геометрическая модель рассматриваемой задачи
Основной подход к моделированию клапана, который наиболее часто встречается в рекомендациях и учебных материалах, связан с применением динамической сетки и использовании пользовательской функции для учёта баланса сил, действующих на его затвор, чтобы смоделировать процесс постепенного открытия в нестационарной постановке (Рис. 2).
Рисунок 2. Результаты моделирования течения по полям скорости потока для затвора клапана в положении
закрыт/открыт
Этот метод позволяет получить наиболее точный результат, но требует значительных временных и вычислительных затрат, связанных с изменением геометрии модели, пересчетом величин в пользовательской функции и использовании малого временного шага для лучшей сходимости.
Поэтому, был предложен способ, основанный на замене типа граничного условия затвора клапана с Wall на Interior при достижении порогового уровня давления. Данный подход позволит сократить вычислительные затраты, сохранив приемлемый уровень точности при допущении, что время срабатывания клапана пренебрежимо мало.
Для его реализации, необходимо перейти во вкладку Execute Commands и написать команду с использованием Text User Interface (TUI) и языка программирования Scheme, доступных с ранних версий Ansys Fluent. Получившийся текст приведен на Рисунке 3. Давайте рассмотрим его подробнее.
Рисунок 3. Команды для контроля давления и срабатывания клапана
Код состоит из двух строк, первая записана на языке Scheme и имеет вид:
(define pressure-check (pick-a-real «report/surface-integrals/facet-max cylinder_body () pressure no»)).
Она используется для определения максимального давления в рабочем объеме цилиндра с последующим присвоением этого значения переменной с именем “pressure-check”.
Для получения самой величины давления используется код
(pick-a-real «report/surface-integrals/facet-max cylinder_body () pressure no»),
который содержит в себе как язык Scheme, так и команду TUI: pick-a-real – функция, которая выполняет команду TUI и сохраняет полученное значение в формате Real;
«report/surface-integrals/facet-max cylinder_body () pressure no» – команда TUI, которая позволяет определить максимальное значение давления на поверхности (facet-max), соответствующей области рабочего объема цилиндра с названием cylinder_body. Этапы срабатывания команды представлены на Рисунке 4.
Рисунок 4. Выполнение команды TUI для определения максимального значения давления на поверхности “cylinder -body”, соответствующей рабочему объему цилиндра, в консоли Ansys Fluent
Вторая часть кода построена на логическом операторе if, который в языке Scheme имеет следующий вид:
(if test true_value false_value) (Рисунок 5).
Рисунок 5. Элементы оператора if в рассматриваемом коде
В качестве Test выступает сравнение величин давления в рабочей зоне цилиндра (переменная “pressure-check”) и значения срабатывания, равного 3000 Па (величина выбрана для демонстрации, пользователь может задать любое значение), где первая величина должна быть меньше второй (< x y) => (x < y).
При выполнении условия неравенства, срабатывает True_value команда (pick «define/boundary-conditions/modify-zones/zone-type/ valve interior»), которая также состоит из двух частей:
Pick – функция на языке Scheme для выполнения команды TUI, без сохранения результата;
«define/boundary-conditions/modify-zones/zone-type/ valve interior» – изменение типа граничного условия на Interior (Рисунок 6).
Рисунок 6. Выполнение команды TUI для изменения типа граничного условия клапана с Wall на Interior в консоли Ansys Fluent
Используемый код достаточно простой и может быть адаптирован для большого количества разнообразных задач, где требуется отслеживать один параметр и выполняется одно действие.
Результаты
Визуализация смены типа граничного условия при достижении требуемого значения давления в рабочем объеме цилиндра представлена на Рисунке 7.
Рисунок 7. Распределение поля давления и векторов скорости потока на нулевом шаге (а),
до смены типа граничного условия (б) и сразу после смены (в)
Второй пример и метод его решения
Рассмотрим следующий случай, в котором поршень и клапан находятся на одной внутренней поверхности, которая сжимает исследуемую среду в левой части модели. Как можно видеть на Рисунке 8, её внешний вид остался прежним, изменилось лишь расположение поршня и стрелка, указывающей направление его движения.
Настройки задачи практически полностью совпадают с предыдущим примером. Отличия есть только в узле динамической сетки, где подвижными являются грани клапана Valve и Valve-shadow.
В Ansys Fluent, при применении к какой-либо внутренней грани условия Wall, автоматически создается ее «тень» с припиской «-shadow», которая совпадает с ней, но относится к соседнему домену, определяя его граничное условие. Таким образом, обе этих грани нужно добавить в динамическую сетку, иначе может возникнуть ситуация, при которой одна движется, другая остается на месте и между ними образуется разрыв без расчетной области.
Рисунок 8. Двухмерная геометрическая модель второй рассматриваемой задачи
Таким образом, в дальнейшем будет необходимо менять не только тип граничного условия грани клапана, но и выполнять ряд других действий, связанных со спецификой работы Ansys Fluent. Получившийся код представлен на Рисунке 9, рассмотрим его подробнее.
Рисунок 9. Команды для контроля давления и срабатывания подвижного клапана
Изначально все команды связаны общим оператором if, который отслеживает состояние границы “valve-shadow” с помощью кода на языке Scheme
(zone-name->id name “valve-shadow”).
Такой подход связан с тем, что при изменении типа ГУ у грани valve, грань valve-shadow будет автоматически удалена, таким образом, это позволяет экономить время на каждом расчетном шаге, так как определение типа граничного условия происходит быстрее, чем определение максимального значения давления в области.
Чтобы выполнить несколько команд внутри оператора if, используется конструкция
(begin (Command 1) (Command 2) … (Command n)),
в которую записываются строки кода и команд из предыдущего примера. Причем, стоит обратить внимание, что может быть использовано несколько вложенных операторов if и несколько вложенных конструкций begin, для которых главное – не забыть про закрывающие скобки.
Основное отличие – наличие строки (pick «/define/dynamic-mesh/zones/delete valve-shadow»), которая нужна для того, чтобы не возникла критическая ошибка при смене типа ГУ для “valve”, после которого “valve-shadow” будет автоматически удалена из списка граней, но не из набора зон с динамической сеткой. Поэтому приходится делать это вручную (Рис. 10).
Рисунок 10. Выполнение команды TUI для удаления грани Valve-shadow из набора зон с динамической сеткой
Результаты
Как и в предыдущем примере, просто будет продемонстрирована визуализация изменений в течении после смены граничного условия при достижении требуемого давления (Рис. 11).
Рисунок 11. Распределение поля давления и векторов скорости потока на нулевом шаге (а),
до смены типа граничного условия (б) и сразу после смены (в)
Заключение
В данной публикации было рассмотрено несколько примеров использования кода с применением языка Scheme и команд Text User Interface, который позволил изменить тип граничного условия при достижении определенного значения ключевого параметра. Данный подход имеет ряд достоинств, связанных с экономией вычислительных мощностей при сохранении точности результатов для задач, в которых временем открытия затвора клапана можно пренебречь.