Найти тему
Гидравлика & bim

KompasFlow v20: FAQ от Костяна.

Дисклеймер: являясь фанатом отечественного CFD решения KompasFlow, я, тем не менее, не перестаю сетовать на отсутствие вменяемого мануала. Все нижеописанное есть результат сугубо личных соображений, родившихся в результате просмотров вебинаров, цифровых экспериментов и прочтения местами не очень обширной информации (или хорошо спрятанной?) от разработчика :)

KompasFlow. Как использовать. Инструкция
KompasFlow. Как использовать. Инструкция

Удобрения:
В конце 2023 данный проект участвовал в конкурсе Аскон, и даже попал "в призы". Поэтому можно утверждать, что входной контроль качества пройден и получен сертификат. Дай Бог поучаствуем еще :)

Диплом лауреата KOMPASFLOW Давыдченко Константина.
Диплом лауреата KOMPASFLOW Давыдченко Константина.

Общая информация о продукте.

KompasFlow это усеченная версия отечественного CFD пакета FlowVision, которая интегрирована в САПР Kompas 3d. Идея встроить гидродинамическую считалку внутрь программы твердотельного моделирования родилась в результате коллаборации Аскон и Тесис и предполагала предоставить пользователю Компаса_3д простой виртуальный стенд обкатки разрабатываемой детали. Например, конструктор спроектировал кусок трубы, тут-же "продул" его жидкостью или газом, посмотрел на результаты и в случае чего изменил геометрию. Продул второй раз, остался доволен результатом и отправил модель в цех.
Для таких задач считалка должна быть максимально простая в препроцессоре (ввод данных) и постпроцессоре (вывод и интерпретация результатов), поэтому разработчик ТЕСИС сознательно и весьма вдумчиво (на мой взгляд) ограничил возможности ввода/вывода чтобы конструктор не утонул в теории гидрогазодинамики. Оставил лишь самый необходимый функционал, чтобы любой инженер мог "сесть и поехать" не боясь разбить коленку.
Особенности программы таковы:
-
программа работает только с одним 3d телом, которое является внутренним объемом исследуемого процесса. (т.е., при расчета потока внутри трубы в расчет надо загонять внутренний объем жидкости, а не стенку трубы). Эта проточная часть должна быть одной твердотельной деталью;
- программа работает с
однокомпонентной средой (многофазная задача не поддерживается);
-
"квази-нестационарный" режим: с одной стороны программа моделирует процесс нестационарными методами, но с другой стороны в граничных условиях нет возможности задавать факторы, переменные во времени. Пример: задав начальные условия 0 градусов, и какой-нибудь тепловой поток, пользователь будет наблюдать нестационарный процесс нагрева исследуемого объема до того момента, пока не установится баланс. По идее можно немного колхозить, останавливая солвер сохранять результаты и запускать новую задачу. Но полноценного гидрографа в трубу не залить :).
-
граничные условия задаются граням исследуемого 3d тела;
- в большинстве случаев
расчет можно прекращать тогда, когда флуктуации наблюдаемых параметров прекратятся и наблюдаемые процессы перейдут в около стационарный режим (разберем это на примере ниже);
- программа работает с величинами в режиме опорная величина+приращение. Мне к этому пришлось привыкать;
-KompasFlow считает движение, турбулентность и теплоперенос.

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


Описание задачи:

Любая численная модель начинается с аналитического решения. Мы должны на коленке прикинуть средние скорости, температуры, давления, а потом уже уточнить или опровергнуть наши догадки CFD расчетом.

Autocad планировка и ручные прикидки потоков воздуха.
Autocad планировка и ручные прикидки потоков воздуха.

Итак, у нас есть квартира с неработающей летом изолированной вытяжкой в туалете и кухне. Не работает вытяжка по понятным причинам - разница давлений на последнем этаже стремится к нулю. Летом все три окна некисло нагреваются на солнце добавляя пекла при учете наружной температуры в 28С. И контрольная пуля в лоб - это перемычка стояка рециркуляции ГВС D40, которая проходит из коридора до ванной и опускается вниз. Аналитический расчет показал, что утепленный теплоизоляцией K-flex 13мм этот стояк все-равно будет давать линейный тепловой поток 25 Вт/м (что соответствует ~200Вт/м2).
Без расчетов понятно: если сделать принудительную вытяжку в с/у и кухне, компенсировать приток щелями в окнах, то воздух с уличной температурой начнет движение от зоны постоянного давления в зону разряжения по траектории окно-комната-коридор-с/у (
на рисунке линии тока зеленым). Зная рабочую точку вентилятора, можно задать граничные условия на вытяжке в виде расхода, в щелях окон в виде постоянного атмосферного давления и фундамент задачи готов. Дальше добавим до кучи кондиционеров и тепловой поток от окон.
Предлагаю браться за дело!

Работа в KompasFlow.

После того, как мы выдавили все нужные грани внутреннего объема комнаты (включая грань стояка ГВС и грани вх/вых кондиционеров), и подключили модуль, приступаем заполнять дерево проекта.
После завершения этой статьи я запишу видео, где мы повторим все действия с краткими комментариями, которые тяжело осветить в рамках этой записки.

Глобальные параметры:

KompasFlow глобальные параметры.
KompasFlow глобальные параметры.

Как я писал выше, одна из особенностей программы в том, что она работает в величинах "опорный параметр +/- изменение". Поэтому нам надо указать средние параметры. Понятное дело - атмосферное давление будет опорным параметром, так как у нас все будет крутится вокруг него. (но вот если бы мы продували трубопровод высокого давления, тогда пришлось этот параметр менять). С опорной температурой дело хитрее: по условию задачи, действо у нас происходит днем при летней температуре воздуха 28С, и формально мы должны поставить 301 Кельвин. Но в таком случае у нас потом пойдет путаница при переводе градусов в кельвины, поэтому я оставил 273К (что равняется 0С) чтобы в результатах удобно было определять привычные глазу градусы.
Если мы хотим учитывать гравитацию, то должны будем забить вектора с учетом направления осей проекта. Как видно на картинке, в нашем случае пришлось бы указать Z=-9.81 м/c2
(со знаком минус).

Геометрия расчетной области:

KompasFlow проверка масштаба
KompasFlow проверка масштаба

Так как я импортировал 3d тело из автокада в формате IGS, первое что я делаю, это проверяю какой-нибудь характерный размер на адекватность. Пример: расчетное сечение трубы D100 составляет 7850мм2, что похоже с замером модели через функцию Компаса Диагностика->Площадь.

KompasFlow геометрия расчетной области.
KompasFlow геометрия расчетной области.

Следующие параметры геометрии:
-
Регион (тело): указывает нам на один единственный 3d солид расчетной области. Ходят слухи, что таких тел может быть много, но это не точно.
-
Конвертировать размеры в метры: скажу так: родительский файл планировки civil3d имеет размер модели в метрах (пример длина 2500мм там указана как 2,5) после импорта IGS модели, Компас корректно перевел все в миллиметры (смотри рисунок с диаметром трубы выше). Если в строке "конвертировать размеры" выбрать НЕТ, то в расчете объем квартиры стал во много раз больше. Я это смог определить по результату сверхмаленькой скорости воздуха в воздуховоде: расход 75м3/час соответствует примерно скорости 2,5 м/с, а в итоге скорость была на 4 порядка ниже.
Я рекомендую всегда осуществить экспресс-расчет на характерное сечение и сравнить с аналитикой, чтобы понять насколько верно солвер воспринимает масштабы вашей модели.
-
Параметры триангуляции (точность определения положения точек 3d солида): в подсказке написано что-то на инопланетном. Я скажу так: попробуйте выделить самую мелкую и кривую грань в проекте. Если ее границы софт выделил красным корректно, то и не стоит менять настройки. Если вдруг вам что-то не понравилось (чего я не встречал), тогда придется менять методом тыка.

Вещество:

KompasFlow выбор вещества расчетной области
KompasFlow выбор вещества расчетной области

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

Набор решаемых уравнений:

У нас будет двигаться воздух, местами очень быстро и мы должны учесть изменения температуры по времени и в пространстве. Поэтому выбираем все.

KompasFlow набор решаемых уравнений.
KompasFlow набор решаемых уравнений.

-уравнение движение: Навье-Стокса (аппроксимация расчетного пространства конечными объемами – расчетными ячейками. Весь расчетный объем разбивается на параллелепипеды и многогранные ячейки у граничных условий. Затем производится вычисление потоков физических величин входящих и исходящих через каждую грань ячейки).
-турбулентность нынче одна
k-e с пристеночными функциями. Раньше было больше, но видимо оставили самую популярную.
Цитата от разрабов:
Отдельно про модель k-e FV: основана на стандартной k-e модели, однако, благодаря заложенным  модификациям, имеет расширенные границы применимости, может быть использована как низкорейнольдсова (без пристеночных функций) при  Y+ < 2 и как высокорейнольдсова (с пристеночными функциями) при  Y +> 4. Кроме того модель позволяет моделировать «байпасный» ламинарно-турбулентный переход.
Про турбулентность почитать можно тут:
https://flowvision.ru/ru/support-menu-header-ru/blog-ru/tyrbulence
-уравнение теплопереноса, кажется
H (перенос энергии посредством конвекции и диффузии через полную энтальпию). Раньше было больше, но видимо оставили самую популярную.

Граничные условия:

Основные грани граничных условий выделил в модели (салатовым) и подписал кривой лапой в пейнтбраше. На рисунке не указал ГУ стен, нагретых окон и локальной адаптации сетки (чтобы не перегрузить рисунок).
Хочется подчеркнуть, что геометрией граней мы можем подменять некоторые факторы граничных условий. Например, я не стал выдавливать цилиндр трубы ГВС, а просто добавил выемку высотой, равной длине окружности трубы D40. Потом я добавлю удельный тепловой поток этой грани, и мы на выходе получим теплопоступления равные линейному тепловому потоку, который я рассчитал аналитикой.
Тут уже дело творческое и можно изгаляться как угодно.

KompasFlow грани граничных условий.
KompasFlow грани граничных условий.

Давайте разберем все используемые в проекте ГУ подробнее.

ГУ Стенка:

KompasFlow граничное условие Стенка
KompasFlow граничное условие Стенка

Это граничное условие задается по умолчанию для всех граней солида. В моем варианте я добавил на глаз шероховатость 500 мкм. В ранних версиях КомпасФлоу шероховатости не было, и мне как адепту уравнений Дарси-Вейсбаха, Альтштуля и Блазиуса этот момент загадочен.

Переменную температуры я задал как нулевой тепловой поток (0 Вт/м2), что неиллюзорно намекает нам на то, что наши стены непроницаемы для теплопереноса.

ГУ Вых_толкан и Вых_кухня:

KompasFlow граничное условие выход туалет
KompasFlow граничное условие выход туалет

Данное ГУ назначено грани воздуховода вентиляции в санузле. Оно описывает массовый расход воздуха на вытяжку. Этот расход я определил аналитически через рабочую точку вентилятора. Внимание: расход показан со знаком минус. Знак переменной мы определяем сравнивая направление потока с вектором, расположенным нормально к грани ГУ и направленным внутрь расчетной области (3d солида).
С температурой вышло не очень: она у меня задана как 0 кельвинов от опорной температуры. Как мы помним, для удобства опорную температуру мы выбрали 273К, понятное дело что выдуваться у нас будет воздух порядка 25-28 градусов. Цифра 0К у меня осталась от старого расчета, где я опорную температуру устанавливал в 301 Кельвин. В целом она не должна особо повлиять на расчет, так как в этом месте у нас поток на больших скоростях будет выдуваться из расчетной области.
ГУ
вых_кухня аналогичен, отличие только в массовый расход = - 0,025 кг/с.

ГУ_солнцепек:
Это граничное условие я назначил граням окон, которые адово нагреваются на солнечной стороне.

KompasFlow граничное условие окна нагретого солнцем.
KompasFlow граничное условие окна нагретого солнцем.

Основная мысль этого ГУ в том, что плоскость окна выдает нам постоянный тепловой поток 250 Вт/м2. Шероховатостью в этом ГУ я пренебрег.

ГУ_щель_вход/выход и свободный выход:
Для абсолютно одинаковых щелей в комнате_1 и комнате_2 (см планировку) я задал два разных граничных условия. Этим расчетом я хочу показать что в данной постановке они работают одинаково. (этот вопрос мы обсудим на этапе анализа результатов).

KompasFlow граничное условие вход/выход
KompasFlow граничное условие вход/выход

В этом граничном условии комнаты_2 мы видим вход/выход в расчетную область, где за границей ГУ указано давление, отличное от опорного на 0 Па, и с температурой воздуха на 28 К выше опорной температуры. (в абсолютных значениях это было бы 101000Па и 301К).
Нетрудно догадаться, если в расчетной зоне будет создаваться давление выше 101000Па, то воздух будет выходить, а если меньше 101000Па, то входить. (во всяком случае, результаты расчета с этой мыслью совпадают).

И аналогичное по сути, но формально иное граничное условие свободный выход для комнаты_1:

KompasFlow граничное условие свободный выход.
KompasFlow граничное условие свободный выход.

По сути тоже-самое: за бортом давление в 101000Па и температурой 28 градусов. (не забываем что мы указываем превышения от опорных значений).
Также логично представить ситуацию когда давление за расчетной областью будет превышать давление внутри расчетной области, и тогда это ГУ начнет работать в обратную сторону. Чтож... проверим!

ГУ вход и выход кондиционера:

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

Принцип работы кондиционера.
Принцип работы кондиционера.

Сначала мне хотелось граничное условие на грани входа в кондиционер задать через отрицательную нормальную скорость:

KompasFlow Отрицательное значение скорости (принудительный отсос) задавать нельзя
KompasFlow Отрицательное значение скорости (принудительный отсос) задавать нельзя

Но нездоровое поведение модели привела меня к фразе из мануала: Отрицательное значение скорости (принудительный отсос) задавать нельзя. Однако, условие Нормальная скорость с давлением допускает
выход через вход. В этом случае оно отработает так же, как условие Полное давление.

Поэтому граничное условие отсоса в кондиционер я задал через массовый расход. Это ГУ знак минус понимает.

KompasFlow  ГУ отсоса воздуха кондиционером
KompasFlow ГУ отсоса воздуха кондиционером

Ну а ГУ выхода остывшего воздуха из кондея отзеркалим:

KompasFlow  ГУ остывшего воздуха кондиционером
KompasFlow ГУ остывшего воздуха кондиционером

В это ГУ выхода из кондея. Видим, что воздух на выходе уже охлажден до 22х градусов. (про то что это дельта от опорной температуры я уже не напоминаю). Расход уже со знаком плюс.

ГУ адаптация:

Особенность KompasFlow в том, что локальное уточнение расчетной сетки (дискретизация расчетной области) происходит через отдельное граничное условие: мы создаем в дереве адаптацию (в моем примере уровень 2, количество слоев 3) и назначаем эту адаптацию отдельному граничному условию.

KompasFlow уровень адаптации расчетной сетки.
KompasFlow уровень адаптации расчетной сетки.

А вот граничное условие с адаптацией уже назначаем интересующим граням солида. В нашем случае, я назначил адаптацию поверхности воздуховода.

Пример адаптированной сетки в горизонтальной плоскости оси воздуховода с уровнем 2 и количеством слоев 3 можете наблюдать на рисунке ниже:

KompasFlow: пример адаптации расчетной сетки в горизонтальной плоскости.
KompasFlow: пример адаптации расчетной сетки в горизонтальной плоскости.

Вообще, про адаптацию лучше почитать у разрабов. Тыкать сюда: https://flowvision.ru/ru/support-menu-header-ru/blog-ru/adaptation?showall=1
Небольшой совет от разраба:
можно отталкиваться от следующих рекомендаций: на характерные размеры в задаче (диаметр отверстия, высота уступа, ширина канала или диаметр вихря) должно приходиться минимум 4 ячейки, а лучше 8.

Адаптацию по расчету я тоже оставлю за границей этой записки. А об исследовании сходимости по сетке лучше почитать тут:
https://flowvision.ru/ru/support-menu-header-ru/blog-ru/ob-issledovanii-skhodimosti-po-setke?highlight=WyJcdTA0NDFcdTA0MzVcdTA0NDJcdTA0M2FcdTA0MzAiXQ==

Я постарался использовать побольше типов ГУ, но все применить так и не удалось.
-
симметрия, которая применяется для ускорения расчетов: мы считаем не весь объем солида, а только его часть по оси симметрии, а вторая часть у нас по умолчанию зеркалится.
-
неотражающее, что-то для сверхзвуковых полетов ракет.

Общая схема ГУ в KompasFlow выглядит так:

KompasFlow типы граничных условий.
KompasFlow типы граничных условий.

Начальные условия:

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

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

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

KompasFlow начальные условия.
KompasFlow начальные условия.

Из рисунка видно, что в первый момент времени нашего расчета воздух находится в состоянии покоя, давление опорное (т.е атмосферное) и воздух нагрет до 28 градусов цельсия. (но помним, что это превышение над опорной температурой на 28 кельвинов).
Так как воздух не движется, то нам придется учесть некоторый временной период нестационарного состояния. Об этом поговорим в настройке "параметры расчета".

Расчетная сетка:

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

KompasFlow расчетная сетка.
KompasFlow расчетная сетка.

Адаптацию по решению включать не будем, так как ударные волны и вихри ловить не собираемся. Наша задача довольно грубая по меркам CFD.

Параметры расчета:

Ну и последнее, что нам осталось, это немного настроить расчет.

KompasFlow параметры расчета.
KompasFlow параметры расчета.
  • CFL (Критерий Куранта Фридрихса Леви). Так как солвер использует неявный метод решения, то возможно задирать CFL выше единицы. Общие рекомендации для Компас_Флоу такие:
    - CFL=1 самое точное, но и самое медленное решение
    - CFL=10-20 - середнячок
    - CFL=50 Грубые прикидки.
  • Максимальный шаг по времени (с): если по критерию CFL у нас выходит слишком огромный временной шаг, мы можем указать отсечку.
  • Моделируемое время (с): продолжительность нашего исследуемого явления. Так как в начальных условиях у меня был выставлен полный штиль по ветру, то я прогнозирую выход на стационар через 150-200 секунд. Поэтому смело с запасом поставил 1000 с.
  • Частота сохранений: число итераций, через которое солвер будет сохранять данные. В нашей задаче частить уж точно не нужно.

Запуск расчета:

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

KompasFlow основное меню.
KompasFlow основное меню.
  • Запуск расчета: собственно кнопка старта, после того как все переменные и константы указаны в дереве проекта
  • Отключить обновление слоев: в процессе работы солвера идет постоянное изменение визуализации векторов скоростей, температур и других бирюлек. Эта визуализация жрет ресурсы компа. Ее можно отключить для ускорения расчетов. И включить также на любом этапе.
  • Остановить: поставить расчет на паузу. В этом случае отключение от солвера не происходит, и условия задачи изменить не удастся.
  • Продолжить: собственно выключить паузу.
  • Отключиться от солвера: прервать задачу на текущем времени. Например, чтобы изменить условия задачи. Но стоит понимать, что если после этого нажать расчет, то прошлые данные потеряются и расчет начнется сначала по новым данным.
  • Открыть окно мониторинга: это самое важно окно в программе, несмотря на свою простоту. По этим данным мы будем следить за выходом решения в стационар, выводить наблюдаемые скорости и температуры в интересующих нас зонах, следить за невязкой параметров.
KompasFlow окно мониторинга
KompasFlow окно мониторинга

Фиксирование средней температуры хаты (красный график) и температуры в санузле (зеленый график) на 38 секунде показывает что кондеи и вытяжка работает. Теплый воздух начинает удаться из помещения, а средняя температура снижается. И до установления баланса нам еще далеко.

KompasFlow - выход на стационарный режим виден после 34 секунды.
KompasFlow - выход на стационарный режим виден после 34 секунды.

А вот цифровой слепок ситуации на 600+ секунде. Мы видим, что где-то после трехсотой секунды по средней температуре мы вышли на стационар. Можно еще подключить скорости и давления, но мне лениво.


В остальном смотрите видео:
https://dzen.ru/video/watch/64b444d89fa1f8595765ffd2?share_to=link

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

Пожелания:
Насколько я знаю, KompasFlow допиливают (на вебинарах спикеры просят обратную связь от пользователей) , и поэтому я позволю себе озвучить некоторые сугубо личные хотелки в надежде что рано или поздно на мою писанину наткнется разработчик и прочитает :)
1. написать нормальный всеобъемлющий faq
2. добавить легенду в шкале градусов С
3. все-таки добавить возможность ввода переменных по времени ГУ (хотя-бы некоторый ограниченный набор)
4. не требую полноценную многофазность, но модель воздух-вода необходима. Это нужно для работы с задачами безнапорных каналов и другими открытыми емкостями и желательно без осреднения векторов скоростей по вертикали. (в
нимательный подписчик моего канала понял куда я клоню).


PS. Ладно ставь магарычи. и бери хоть все мечи! (с)