Как стать автором
Обновить

Комментарии 25

Есть одна проблема с этим Palabos: никому чистый CFD решатель нафиг не нужен. Спасибо хоть open-source.

Все эти библиотечки должны пилиться не отдельно, а в едином формате описания состояния тела/среды, позволяющем их использовать вместе и использовать для них один препроцессор и постпроцессор. В перспективе это позволит свободным комплексам моделирования физических процессов обогнать продукты типа Ansys, я верю, что это реально.

Уже есть замечательный проект CAE Linux — коллекция СПО в этой сфере, но он значительно отстаёт. Надо это дело популяризировать насколько возможно, рассказывать научным руководителям, делать куосрвые и дипломы с их использованием. Это я говорю тем инженерам, которые физики, а не программисты (низкий поклон заранее тому, кто по этому пути пойдёт). В процессе будет разрастаться база кода. Но это уже задача для тех, кто и физик, и программист в одном лице.

Проекты такого масштаба должны делаться единообразно, традиционная для СПО ситуация зоопарка маленьких утилит, работающих в разной логике и формате (что нарушает UNIX-way), здесь неприемлема.
Если бы чистые CFD решатели были не нужны, их бы столько не продавалось.

Кроме того, эта «библиотечка» (или библиотечки--тут я не уверен, какие вы имеете в виду) обычно включают многие постпроцессоры и препроцессоры (типа расчет числа Нуссельта, потока энтальпии--если вы об этом).

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

Если вы думаете, что Open FOAM из CAE Linux справится с любой задачей моделирования, то вы ошибаетесь. Так же, как, думаю, и Ansys.
Ну и, опять же, ничто не мешает включить Palabos в CAE Linux, но я не уверен, что это (первоочередная) задача разработчиков Palabos.
Препроцессор — программа (обычно с графическим интерфейсом и возможностью импорта 3D-моделей в разл. форматах), подготавливающая данные для решателя: создаётся 3D-модель в формате, понятном всему комплексу, накладываются граничные условия, задаются свойства среды. Решатель — рассчитывает. Постпроцессор — отображает результаты, делает их анализ и постобработку (типа вычисления каких-то характеристик, построения графиков), может передавать данные препроцессору для следующей итерации.
А про нарушение UNIX-way я писал про другой пункт — про универсальность и единый интерфейс взаимодействия. Я специально искал, может ли этот Palabos использовать, например, пре- и постпроцессор Salome из CAE Linux. Не нашёл.
Ansys иногда хуже справляется с некоторыми задачами, чем, например, MSC.Marc, но он единственный «Multiphysics». Альтернативы нет. И его создатели прекрасно чуют рынок, выпуская нативную Linux-версию уже не один год.
Я чуть нижеописал систему, в которой finite volume method не сработал. Ansys, думаю, не сработает так же по тем же причинам (написано, что их солвер--finite element method).
А palabos--сработает (хоть у нас и свой код).

Заодно вам должно стать понятно, почему для таких моделирований не критична интегрированная среда и bells and whistles типа классных графичков из коробки. Потому что workflow такой:
1. сгенерировать на суперкомпьютере упаковку шариков (т.е. поставить в очередь, подождать пока дойдет очередь, пройдет расчет)
2. провести на суперкомпьютере моделирование LBM (поставить в очередь, подождать пока дойдет очередь, пройдет расчет)
3. рассчитать на суперкомпьютере коэффициенты диффузии, гидродинамической дисперсии (поставить в очередь, подождать пока дойдет очередь, пройдет расчет). Это как бы postprocessing, но он занимает едва ли не больше времени, чем CFD.
Извиняюсь за отвлеченный от темы вопрос.
Но, какие программы могут моделировать по заданной 3D-модели аэродинамическую трубу?
Я так понимаю, вам просто нужно моделировать поведение 3D модели в потоке воздуха? Ведь аэродинамическая труба--это устройство для моделирования явлений, протекающих в меньшем масштабе, но с тем же числом Рейнольдса. Если вы уменьшаете машинку в 5 раз, то, если увеличить скорость ветра в 5 раз, число Рейнольдса не изменится--формула 24 в статье. При том же числе Рейнольдса явления будут протекать одинаково. То есть задача--просто моделирование потока воздуха, текущего мимо модели, то есть стандартная задача гидродинамики.

Если у вас есть 3D модель, ее нужно дискретизировать равномерной сеткой и дать на вход программе моделирования в понятном ей формате. Многие продукты поддерживают программную генерацию геометрии, или автоматический импорт из популярных форматов (например, если у вас есть триангуляризованная поверхность модели). Вот пример моделирования в сложной геометрии. Palabos еще поддерживает возможность не совсем равномерной сетки.

Чтоб создать поток вокруг модели, необходимо указать либо силу, которая действует на толщу воздуха и обеспечивает поток, либо давление в плоскостях до и после модели (по направлению потока).
Как я понял, турбулентные потоки с помощью lbm не посчитать из-за неустойчивости решений?
LBM в формулировке статьи, действительно, сможет моделировать только ламинарный поток несжимаемой жидкости. Но есть его улучшения с включением турбулентных явлений: например, вот, вот и вот. Вот есть даже компания (стартап в ETH Zurich), которая предлагает улучшение в LBM--entropic LBM, которое, как они утверждают, способно воспроизводить турбулентность. Но я никогда не занимался этой областью; может быть, они приукрашивают.
Метод весьма новый, первые коммерческие продукты на его основе стали появляться около 2010 года.

Не такой уж новый, ещё в 2005 году был El'Beem (ныне часть открытой системы 3D-моделирования Blender). И хотя он практически не менялся за последние 10 лет, он всё так же впереди многих современных проприетарных реализаций. Он поддерживает притоки, оттоки, препятствия, управляющие объекты (см. видео), имитирует сжимаемость жидкости, следящие частицы, трение с поверхностями и много чего другого.

Ух ты, я не знал про El'Beem, спасибо. Но я сознательно написал «коммерческие», поскольку только появление таких продуктов на рынке, мне кажется, предполагает достаточную зрелость, надежность, инфраструктуру, обход большинства «подводных камней», доверие и т.п. А в принципе, да, первые сообщения на форуме palabos в районе 2008 года, а в моей научной группе им стали пользоваться в 2003, и уже в 2000 метод неплохо работал. Но все равно, по меркам CFD, мне кажется, он довольно новый.
finite element method — метод конечных элементов по-русски.
Можете поподробнее, чем конкретно LBM лучше старого доброго Навье-Стокса методом Маккормака? Вода про «легкость распараллеливания, возможность моделирования многофазных потоков, моделирования потоков в пористых средах» как-то не убеждает.
К сожалению, я никогда раньше не слышал о методе МакКормака (потому что по образованию радиофизик). Поэтому буду пользоваться косвенным способом: гугл по запросу «maccormack method» выдает 90 и 100 тысяч результатов (на двух компьютерах). По запросу «lattice boltzmann method» выдает 1 530 000 результатов. Притом что метод МакКормака был опубликован в 1969 году. Из чего можно сделать вывод что он, скорее всего, просто не работает--уж не знаю, почему (точность, неустойчивость, малая область стабильности).

В моей научной группе (это в Германии, сначала она была в одном из Институтов Макса Планка) используют LBM для моделирования потока в случайных упаковках твердых шариков, типа таких, только часто с внешними стенками и с бОльшим на порядок числом частиц. Это надо для моделирования HPLC columns (собственно, это и есть трубки с шариками).

У нас есть коллаборация с этой научной группой. Они пытались использовать finite volume method для тех же целей (вроде бы, Open FOAM). У них были проблемы уже с генерацией mesh (особенно там, где шарики касаются стенок)--это решили тем, что между шариками и стенками оставляют зазор. Потом--с точностью моделирования, в том числе из-за зазора. Насколько я знаю, они так и не заставили finite volume method работать в этой системе.
Чтоб был понятен масштаб. Для моделирований мы (коллега в основном, не я) пользуемся вот этим суперкомпьютером. 7 место в Top 500, если что. Моделирование может требовать всех мощностей суперкомпа.

10 лет назад в нашей группе купили какой-то CFD солвер, но он параллелился нелинейно, и выходил на асимптоту на 50 процессорах. После этого написали свой код.
А количество точек какое?
Цилиндрическая трубка длиной 10 000 шариков, высотой и шириной (диаметром, то бишь) 30 шариков. Каждый шарик дискретизируется разрешением 30 точек на диаметр (т.е. 30х30х30 на шарик). Итого 2.4 * 10^11 точек всего, порядка 10^11 жидких узлов.
(отвечая на всё сразу) Ну, в Германии уже давно всё на английском. В России, там, где ещё считают и где учат считать гидродинамику, все названия на русском. Всё-таки математику «двойного назначения» мы ещё не до конца профукали.
Мне просто стало интересно, что у нас с бургами не только названия, но и численные методы, оказывается, разные.
С LBM я не работал, поэтому и спрашиваю.
Что касается маккормака, то он достаточно стабилен и точен. Там трюк в том, что шаг по времени разбивается на две фазы, в первой считаются производные «в плюс» по координатам, во второй — «в минус». За счет этого удаётся сильно уменьшить количество вычитаний близких чисел (и сопутствующих потерь точности). Ну то есть гладить приходится, конечно, но совсем немного.
С граничными условиями и сетками (mesh) в той области, где я работал, проблем как-то не помню. Сетка так вообще просто выгружалась из Solidworks и в нужных местах дополнительно дробилась.
Из плюсов Маккормака — высокая физичность, можно учитывать ионизацию и прочие трюки, соблюдаются законы сохранения. Из минусов — всё это работает только при малых числах Рейнольдса. Ну и корректно закодировать частные производные в криволинейных координатах — это аццкий ад, реально месяцы работы (английская википедия с её «elegant and easy to understand and program» жжот напалмом).
Ах, да, простите за английские названия методов. Но надо признать, что вся «движуха» в науке и технологии--на английском языке. Мне кажется, такие вещи лучше оставлять на английском для согласованности (хоть и «метод конечных элементов» уже устоявшееся название).
Как здесь строится пористая среда? Непроницаемыми границами или добавляется уравнение Дарси куда-то в оператор столкновений?
Нет, уравнение Дарси в оператор столкновений не добавляется. Пористая среда--это пространство, частично непроницаемое для жидкости, со сложной структурой, типа такой (или структура типа губки). На границе непроницаемой части используется обычно no-slip boundary condition.
И большое спасибо за статью. Как раз занимаюсь подобным и некоторые вещи стали более понятны. Хотелось бы еще подробнее про начальные и граничные условия. Как вернуться от решеточных единиц к физическим? Можно ли вообще считать, например, в объемах десятков и сотен кубических метров или метод подходит лишь для малых площадей и объемов? И так же не совсем понял про добавление гравитации. Получается на этапе распространения нужно добавлять просто rho*g? Еще сколько ни искал не смог найти адекватный перевод терминам no-slip и multiple relaxation time.
Пожалуйста!
1. про единицы измерения лучше всего почитайте ссылку из статьи, там очень хорошо написано

2. зависит от того, что у вас находится в десятках и сотнях метров. Если у вас пористая среда с микрометровым порами, то вам не хватит всей вычислительной мощности планеты Земля, нужно пользоваться другими, усредненными, моделями. А если вы моделируете ламинарный поток воздуха вокруг здания или самолета, то LBM прекрасно подойдет.

3. часто внешнюю силу, действующую на толщу жидкости, добавляют вместо того, чтоб указывать давление на входе и выходе трубы. То есть такая сила обеспечивает поток. Она может не зависеть от плотности. Формулы для добавления силы есть на википедии (после слов «The single phase discretized Boltzmann equation for mass density», формула для F чуть выше, в качестве G вы можете брать любую величину) и во многих статьях (формула 28). Второй типичный случай--добавление внешней силы, зависящей от плотности (настоящей силы тяжести). Обычно используют приближение Буссинеска. Вот тогда можно брать в статье на википедии ту G, что указана там.

4. перевод я тоже, к сожалению, не знаю, работаю на английском :-) Но relaxation time точно переводится как время релаксации.
no-slip на русский переводится как «условие прилипания». Означает, что скорость жидкости совпадает со скоростью стенки (то есть равна нулю на неподвижной границе).
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории