logo desc

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

Интервалы, через которые программа ищет решение, обычно называются шагом по времени (Time step). Он может быть постоянным или вычисляться для каждой итерации на основе определенных критериев. Следует обратить внимание, что для каждой конкретной программы и задачи шаг по времени разный.

Как же его правильно задать - расскажем в этой статье.

Шаг по времени во FlowVision

FlowVision позволяет выбрать шаг по времени:

  • Постоянный – решение ДУ будет определяться через одинаковые интервалы времени на протяжении всего расчёта;
  • С помощью CFL – используется Критерий Куранта — Фридрихса — Леви — Википедия (критерий КФЛ/CFL), который контролирует шаг по времени на основе текущих расчётных характеристик.

Постоянный шаг

С постоянным шагом по времени всё не так интересно – разбил временную шкалу нужным интервалом (обычно менее 0,1 от характерного времени) и ждёшь пока либо решение сойдется, либо закончится заданное время расчёта.

Самые распостраненные задачи, которые решаются с постоянным шагом по времени:

  • Внутреннее течение в трубе. Характерное время - пролётное;
  • Внешнее обтекание тела. Характерное время  - отношение размера тела к скорости набегающего потока;
  • Замкнутое течение. Характерное время - то, за которое частица потока совершает оборот в расчетной области.

Число CFL

С критерием CFL немного сложнее. Сам критерий – это необходимое условие устойчивости явного численного решения некоторых диффуров в частных производных. То есть шаг по времени должен быть меньше определённого значения, иначе результаты моделирования будут нефизичны.

Расшифруем определение с википедии: FlowVision сам считает шаг по времени, с которым ему будет комфортно вести расчёт на основе уже полученного решения. А пользователь лишь масштабирует это значение.

Шаг, который FlowVision считает сам, называется явным шагом по времени expl). Коэффициент масштабирования - число CFL. Итоговый шаг по времени (τ) вычисляется по формуле:

Form1

Открыв вкладку Солвер > Шаг по времени, можно увидеть, что критериев то целых четыре штуки:

  • Конвективное CFL;
  • Поверхностное CFL;
  • Диффузионное CFL;
  • CFL для скользящей поверхности.

Каждому критерию соответствует свой явный шаг, который вычисляет FlowVision:

  • Конвективный явный шаг τexpl,conv
  • Поверхностный явный шаг τexpl,surf
  • Диффузионный явный шаг τexpl,diff
  • Явный шаг для скользящей поверхностей τexpl,slide

 Ограничителем для вышеперечисленных шагов по времени является

  • Гравитационный шаг  τgr .

Возможно, у вас уже возникло много вопросов:

Давайте отвечать на каждый вопрос по порядку.

Почему критериев и явных шагов так много?

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

Рассмотрим движение лодки по волнам. В процессе решения такой задачи моделируется:

  • Движение жидкости;
  • Движение лодки;
  • Движение свободной поверхности - границы раздела фаз: вода - воздух.

Диффузия и скользящая поверхность отсутствуют, а значит нет и смысла рассматривать эти критерии для вычисления итогового шага по времени этой конкретной задачи. Остаются конвективный и поверхностный критерии.

При моделировании движения тел, необходимо задавать поверхностный CFL = 1.

Или другой пример: задача массопереноса частиц. В процессе решения задачи моделируется:

  • Движение фазы;
  • Движение дисперсных частиц.

Скользящей поверхности все ещё нет, так же нет подвижных тел и движения свободной поверхности. Поэтому будут использоваться только конвективный и диффузионный критерии.

Для задачи с вращением при наличии скользящих поверхностей, необходимо задавать скользящий CFL = 1

Если физический процесс, задающий критерий, не рассматривается в вашей задаче, то критерию (числу CFL) необходимо присвоить значение 1e+20. В такой постановке критерий не будет учитываться.

Рассмотрим каждый критерий и его явный шаг по отдельности.

Конвективный CFL

Используется для большинства задач, где присутствует движение.

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

Все задачи разные и требуют своего определенного шага по времени. Поэтому необходимо исследовать зависимость характерной контрольной величины от шага по времени.
Например, исследуя перепад давления в трубе с переменной скоростью на входе, можно отметить как при различных шагах меняется и величина перепад давления. При определённой величине шага по времени (t < 20), значения контрольной величины не изменяются - это и есть искомый шаг по времени.

pic1

Рассчитывается шаг по времени следующим образом:

Form2

Конвективный CFL масштабирует явный конвективный шаг по времени, который рассчитывается как:

Form3

Для расчёта явного шага по времени FlowVision определяет в пределах всей подобласти минимальное отношение размера ячейки к скорости в этой ячейки. Прикинув размер ячейки и оценив скорость для конкретной задачи, можно и самому оценить по формуле какой шаг будет в объеме.

Для сверхзвуковых течений рекомендуется использовать конвективный CFL 1…10, для дозвуковых можно начать и с больших значений 30…100 CFL.

Диффузионный CFL 

Используется для вычисления диффузионного шага по времени:

Form4

То есть диффузионный CFL так же масштабирует явный диффузионный шаг по времени:

Form5

Где A = 1 задаётся для неявной схемы и A = 0.25 - для явной схемы, обеспечивая ей устойчивость.

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

При моделировании задавайте от 10 до 1000 Диффузионных CFL.

Поверхностный CFL

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

Величина шага для таких задач соответствующая: поверхностный CFL= 1.

Рассчитывается поверхностный шаг как:

Form6

Где явный шаг рассчитывается FlowVision как минимум отношения размера ячейки, содержащей свободную поверхность или подвижное тело, к модулю скорости в на границе фазы/подвижного тела:

Form7

R – коэффициент, увеличивающий устойчивость расчета. Для свободной поверхности R = 0.5, а для подвижного тела R = 1.

Скользящий CFL

Позволяет вычислить шаг по времени для скользящей поверхности:

Form9

Явный шаг вычисляется как минимальное отношение размера ячеек на скользящей поверхности к линейной скорости на этой скользящей поверхности.

Form10

Задается строго равный 1.

В случае использования «замороженного ротора» - не учитывается в расчёте шага по времени.

Как вычисляется тогда шаг по времени, раз критериев и явных шагов так много?

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

Form11

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

Form12

pic2

Зачем нужен гравитационный шаг? И почему у него нет критерия?

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

Он вычисляется как:

Form13

Где:

  • g - вектор гравитации;
  • gкомпоненты вектора гравитации;
  • Δi - минимальные размеры ячеек.

Лайфхаки

  • При решении задачи необходимо понимать, какая физика сейчас влияет на решение и периодически сверяться с характерным шагом для данной задачи.
  • Если шаг по времени проседает (то есть резко уменьшается) относительно ожидаемого, необходимо задуматься, всё ли задано корректно и правильно считается. Самой простой диагностикой является вывод «Внутренних характеристик» в окно мониторинга, таких как:
    • Шаг по времени;
    • Явный шаг по времени (считается как явный конвективный шаг).

Для облегчения поиска области, из-за которой шаг проседает, во FlowVision можно отображать данные величины как в объеме, так и на плоскости.

  • Возможно ли такое, чтобы шаг по времени становился меньше, чем явный шаг по времени?

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