Рассмотрим устройство, которое забирает воздух из окружающей среды и его же выдает обратно. Можно моделировать устройство целиком, а можно просто поставить на нём граничные условия "вход" и "выход",  расходы на которых будут зациклены друг на друге: сколько воздуха входит в устройство – столько же и выходит.

Для этого необходимо построить Характеристику на входной границе и на выходной границе задать расход\скорость\температуру и т.д., используя данные из выходной Характеристики.

Но есть одна проблема: если в Характеристике нет посчитанных данных, то при запуске на расчёт мы получим ошибку\развал.2В этой статье мы расскажем, как избежать возникновения ошибки, используя в Редакторе формул оператор defined.

Связываем Граничные условия через Характеристику

Параметры на разных граничных условиях связываются через Характеристику. Здесь мы можем использовать Массовый расход, Скорость, Площадь и другие посчитанные данные. Если данные в Характеристике уже посчитаны (проверить можно в окне ИНФО для Характеристики), то всё ОК и будет успешно считаться.

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

Как избежать ошибки. Успешные Пути решения

Решение в том, чтобы в момент когда в Характерситике нет данных, заменять их чем-то другим: нулем или конкретным значением. Для этого можно использовать формулу или таблицу, где прописано, что на таких-то шагах использовать данные из характеристики, а на других шагах – конкретные значения.

ИЛИ использовать специальную функцию калькулятора - defined, которая проверяет определена ли Характеристика (параметр х) в ячейке или нет.

{(defined(<x>)): <f(x)>; 0}

Если значение Характеристики определено, то переменная вычисляется по заданной формуле; если нет, то переменной можно присвоить любое значение (обычно это 0).

При использовании именно этого оператора в формуле, не надо задумываться о том, есть ли на этом шаге данные в Характеристике или они не определены. 

Задача о двигателе самолёта

Рассмотрим пример решения одной задачи, где как раз существует связка двух ГУ через Характеристику.

При моделировании работы самолётного двигателя необходимо связать граничные условия на входном и выходном отверстиях двигателя.

1

Расположение Граничных условий

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

6

Всасывание воздуха в двигатель задаётся ГУ "свободный выход_1" - ГУ1. Скорость потока через выходное отверстие ("вход/выход_1" - ГУ2) определяется через массовый рассход воздуха, поступающего в двигатель. То есть массовые расходы входа и выхода равны.

Qвхода = Qвыхода 

Отсюда скорость на выходном ГУ определяется:

V2= Qвхода /S

Связываем ГУ

Необходимо на выходном ГУ (вход/выход_1) задать для скорости формулу, которая зависит от расхода через входное ГУ (свободный выход_1). 

Шаг 1

Создаём Супергруппу в Препроцессоре на ГУ Свободный выход_1.

Шаг 2

Создаём Характеристику на этой супергруппе по переменной Скорость. В качестве компоненты указываем направление Х.

Шаг 3 

В окне свойств для скорости на ГУ вход/выход_1 задаём формулу:

{(defined(MassFlowN0)):MassFlowN0/(DENSITY0*Area1);0}

Если расход был определён через характеристику на ГУ1, то скорость на ГУ2 вычисляется как отношение расхода к площади выходного отверстия. Иначе, скорость равна нулю. 

Анализ результатов

1 итерация

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

step1

Распределение скорости на 1 итерации

400 итерация

Когда течение в расчётной области установится, скорость на выходе из двигателя близка к скорости на входе в него.

step400

Распределение скорости на 400 итерации

Необходимо понимать, что значение скорости на выходе на текущей итерации определяется по Характеристике, посчитанной на предыдущей итерации. То есть значение выходного расхода отстаёт от значения входного на 1 итерацию. Действительно, Qвхода(step=399)= Qвыхода (step=400).