Обзор способов автоматической остановки расчёта в Ansys Fluent

Аватар пользователя ershovmih
0 420

По мере решения всё более сложных и долгих задач в Ansys Fluent появляется необходимость автоматической остановки расчёта для экономии вычислительных ресурсов, а также в случае пакетного запуска однотипных задач. Останавливать можно итерации в стационарном и нестационарном расчёте. Нестационарный расчёт можно останавливать полностью или же делать переход на следующий временной шаг по определённому условию.

Существует два наиболее близких для рядовых пользователей способа воздействия на итерационный процесс Fluent.

  1. Использование встроенного инструмента Convergence Conditions.
  2. Использование Scheme и TUI-команд в Execute Commands.

 

Разберём эти два способа по порядку.

 

I. Использование встроенного инструмента Convergence Conditions

Инструмент Convergence Conditions (рисунок 1) располагается во вкладке Solution и разделе Reports. Он позволяет проверять сходимость решения или временного шага и выходить из цикла итераций по отслеживаемым мониторам (surface, volume, lift, drag и т.д.), невязки при этом могут либо учитываться, либо нет. Выход из цикла итераций возможен при удовлетворении всех условий сходимости (All Conditions are Met) или одного любого условия (Any Condition is Met).

 

                                             Рисунок 1  Окно Convergence Conditions

 

 

Для остановки расчёта используется параметр Stop Criterion. Если максимальное значение невязки монитора, которое представляет из себя относительное отклонение монитора между последовательными итерациями или временными шагами в долях единицы, ниже значения Stop Criterion, то сходимость считается достигнутой.

Невязки мониторов рассчитываются с помощью следующих формул:

 

Res-m(1) = [abs (m(n) - m(n-1))]/m(n)

Res-m(2) = [abs (m(n) - m(n-2))]/m(n)

Res-m(3) = [abs (m(n) - m(n-3))]/m(n)

.

.

.

Res-m(Np) = [abs (m(n) - m(n-Np))]/m(n)

 

где:

Res-m – невязка монитора в долях единицы;

n – номер итерации или временного шага;

m(n) – значение монитора на конкретных итерациях или временных шагах n,

Np – число предыдущих итераций или временных шагов для нахождения максимальной невязки (задаётся через Use Iterations/Use Time Steps). Для случаев с флуктуирующими мониторами, как на рисунке 2, это число следует выставить большим, чтобы точно сделать вывод о сходимости.

 

                                                   Рисунок 2 – Колебания монитора [1]

 

Если ожидается, что первые несколько итераций или временных шагов будут иметь место случайные слабые флуктуации с временным постоянством мониторов, при этом решение не будет считаться финальным, то введите этот период расчёта с помощью Ignore Iterations Before и Ignore Time Steps Before. После данного периода начнётся проверка сходимости мониторов с периодичностью принятия решения, задаваемой в строке Every Iteration или Every Time Step.

Данный инструмент также способен проверить сходимость стационарного расчёта.

Недостатком данного инструмента является невозможность одновременного контроля сходимости временного шага и сходимости всего решения в случае решения нестационарной задачи с возможностью выхода на стационарное флуктуирующее решение. То есть можно выбрать либо Solution Convergence, либо Time Step Convergence. Ещё одним недостатком подобного метода является невозможность остановки решения при достижении монитором определённого значения.

 

 

II. Использование Scheme и TUI-команд в Execute Commands

Для демонстрации остановки расчёта с помощью Execute Commands разберём классическую задачу из базового курса Fluent Vortex Shedding, в которой моделируется обтекание цилиндра потоком воздуха и получаемая за ним вихревая дорожка Кармана.

 

          Рисунок 3 – Поле потока при обтекании цилиндра (вихревая дорожка Кармана)

Рассматриваются колебания максимума (Facet Maximum) статического давления на входе в систему. Отслеживание сходимости по невязкам уравнений отключена.

 

                     Рисунок 4  Колебания монитора максимума давления на входе

 

Контроль сходимости временного шага

Применяются две команды в Solution>Calculation Activities>Execute commands.

        Рисунок 5  Команды в Execute Commands для проверки сходимости временного шага

 

1) Команда (stptmstp-resetvalues)

- на каждом шаге удаляет сохранённые невязки мониторов с предыдущего временного шага.

2) Команда (stptmstp-chckcnvrg "/report/surface-integrals/facet-max in () pressure n")

- проверяет сходимость монитора на каждой итерации.

Здесь stptmstp-chckcnvrg – Scheme-команда (stptmstp = SToP TiMe STeP), проверяющая сходимость временного шага; /report/surface-integrals/facet-max – монитор максимума величины, in – название входной границы; pressure – давление (Static Pressure); n – необязательный синтаксический элемент.

При этом по умолчанию команда анализирует 3 последние итерации и проверяет, чтобы максимальная невязка монитора, описанная в предыдущем пункте, не превышала значение Stop Criterion = 1e-3. Применяя данные команды по умолчанию расчёт временного шага останавливается после 5-7 итераций.

Если ввести в консоль (set! stptmstp-maxrelchng 1.e-10), то Stop Criterion изменится на 1e-10 и решение будет длиться все назначенные 20 итераций в виду жёсткости критерия.

Если ввести в консоль (set! stptmstp-n 2), то будут анализироваться 2 последние итерации вместо трёх. Если задать (set! stptmstp-maxrelchng 1.e-1), то расчёт будет стабильно останавливаться на третьей итерации, поскольку критерий очень легко достижим в данной задаче. При этом в консоли появляются сообщения, показанные на рисунке 6.

 

    Рисунок 6 – Вид консоли при (set! stptmstp-n 2) и (set! stptmstp-maxrelchng 1.e-1)

 

Итоговый вид невязок с тремя приведёнными настройками Scheme-команд показан на рисунке 7.

 

      Рисунок 7 – Итоговый вид невязок при управлении сходимостью временных шагов

 

Остановка нестационарного расчёта при достижении определённого значения

Теперь попробуем остановить нестационарный расчёт при превышении определённого значения максимального давления (0,048 Па) на входе.

Для этого введём третью команду и сделаем её активной для каждой итерации (Рисунок 8):

(if (< 0.048 (pick-a-real "/report/surface-integrals/facet-max in () pressure n")) (set! mstop? #t))

где на этот раз применяется логическое условие и функция pick-a-real для извлечения и анализа значения монитора. Остановка решения производится командой (set! mstop? #t).

 

              Рисунок 8 – Команды в Execute Commands для проверки сходимости
                        временного шага и достижения определённого значения

 

Команда работает, но остановка очень грубая, прямо на первой итерации в самом начале временного шага. Далее расчёт нельзя запустить вновь, а в консоли постоянно появляется сообщение о сошедшемся решении.

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

 

Остановка стационарного расчёта при достижении определённого значения

Команда (set! mstop? #t) также успешно работает в стационаре. Так, если в данной задаче с вихревой дорожкой перейти на псевдонестационарный сопряжённый решатель и выставить в качестве условия завершения расчёта превышение максимального давления на входе отметки 0,046 Па с помощью команды:

(if (< 0.046 (pick-a-real "/report/surface-integrals/facet-max in () pressure n")) (set! mstop? #t))

то расчёт остановится на той итерации, где это условие выполнилось, как видно на рисунке 9.

 

Рисунок 9 – Значение монитора максимума давления в псевдонестационаре до остановки
                                                                    на уровне 0,046 Па

 

При этом в консоли появляются сообщения, показанные на рисунке 10.

 

  Рисунок 10 – Вид консоли в псевдонестационаре до остановки на уровне 0,046 Па

Недостатком данного метода является то, что он не способен проверить сходимость стационарной задачи, а также нестационарной задачи с возможностью выхода на стационарное флуктуирующее решение. Только проверка сходимости временного шага и остановка на определённом значении монитора.

 

Выводы

В статье было разобрано два способа остановки расчёта в Ansys Fluent, такие как Execute Commands, а также встроенный инструмент Convergence Conditions. У обоих способов есть свои области применения. Convergence Conditions может проверять сходимость временного шага, либо всего расчёта по мониторам, но не может останавливать расчёт при определённом значении монитора. Execute Commands способен останавливать расчёт при определённом значении монитора, а также отслеживать сходимость временного шага, но не может проверить сходимость стационарной нестационарной задачи со слабыми флуктуациями. Примечательным является то, что эти способы способны дополнять друг друга. Так, в нестационарном расчёте, где ожидается получить стационарное решение с небольшими флуктуациями, можно регулировать количество итераций на временной шаг с помощью Execute Commands, а остановку всего расчёта при минимизации колебаний делать, используя Convergence Conditions. Также расчёты в Ansys Fluent можно останавливать при объединённом использовании команд Scheme и пользовательских функций UDF, что требует знания языков Си и диалекта языка Lisp для Scheme.

 

Список литературы

1) ANSYS Fluent User's Guide 2020 R1.

 

 

Добавить комментарий

Войдите или зарегистрируйтесь, чтобы отправлять комментарии