Русский
Русский
English
Статистика
Реклама

Paraview

Гидродинамическое моделирование (CFD) на рельефе с помощью MantaFlow и визуализация результатов в ParaView

03.08.2020 08:09:56 | Автор: admin

Дисциплина Computational fluid dynamics(CFD) или, на русском языке, Вычислительная гидродинамика изучает поведение различных потоков, в том числе вихревых. Это и моделирование цунами, и лавовых потоков, и выбрасываемых из жерла вулкана камней вместе с лавой и газами и многое другое. Посмотрим, как можно использовать совместно MantaFlow и ParaView, реализовав на встроенном в MantaFlow языке Python необходимые функции конвертации данных. Как обычно, исходный код смотрите в моем GitHub репозитории: MantaFlow-ParaView.


Tambora Volcano Plume Simulation


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


Введение


Для визуализационного моделирования зачастую используются упрощенные методы, пренебрегающие трением, в то время как для физического моделирования необходимо моделирование уравнений Навье-Стокса, учитывающих трение. Конечно, результаты физического моделирования могут быть использованы и просто для визуализации, хотя их получение более ресурсоемкое. В то же время, многие физические процессы не могут моделироваться без учета трения, к примеру, пирокластический поток. К счастью, за последние несколько лет физическое моделирование потоков стало доступнее, в том числе, за счет методов машинного обучения стало возможным точную модель низкой детализации дополнительно детализировать с помощью соответствующих методов (на мой взгляд, благодаря самоподобию процессов на разных масштабах, это вообще одно из самых удачных применений техник машинного обучения). Теперь и в открытой программе трехмерной графики Blender используется именно физическое моделирование на основе открытого фреймфорка MantaFlow.


Как и в случае с методами спутниковой интерферометрии, см. предыдущую статью Геология XXI века как наука данных о Земле, методы моделирования потоков позволяют узнать многое о происходивших процессах именно узнать, а не предположить. Действительно, моделируя лавовые потоки на палеорельефе (построенным, к примеру, путем решения обратной задачи геофизики), мы можем сравнить полученную модель с реально существующими [застывшими] лавовыми потоками и полями, поскольку они достаточно прочные и могут хорошо сохраняться многие и многие миллионы лет. Построенная модель позволяет изучить залегание различных слоев там, где у нас нет геологической информации, зачастую, один и то же вулкан извергался многократно из разных жерл, при этом потоки лавы разных извержений [и разного состава] могут перекрываться. Кроме того, эта же модель покажет неувязки между используемой моделью палеорельефа и существующими лавовыми проявлениями и позволит внести уточнения. То есть, вместо сложно формализуемой геологической интуиции, мы можем работать с моделью в том числе, изменять параметры и оценивать, насколько разные геологические предположения вообще разумны. Поскольку я сам не геолог, а физик, для меня путь моделирования представляет вполне понятный интерес. В результате, геолог может точнее оценить возможные области залегания полезных ископаемых и их потенциал разумеется, в геологическом исследовании вовсе не ставится задача обойтись без геолога, но, как и везде, ценность результатов согласуется с известным принципом информатики: "Мусор на входе мусор на выходе", поэтому каждая возможность уточнить, заверить и дополнить имеющиеся данные в буквальном смысле на вес золота (или нефти, или воды,...).


MantaFlow


Как уже сказано выше, MantaFlow это хорошо известный и поддерживаемый программный пакет, а также, на его основе есть несколько интересных производных проектов: с большим акцентом на использование машинного обучения PhiFlow, с возможностью вычисления параметров процесса по набору снимков reconstructScalarFlows и другие.


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



А это модель заполнения потоком воды заданного рельефа:



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


Добавим рельеф в MantaFlow


Для меня самый удобный вариант это использование ParaView с моим расширением N-Cube ParaView plugin for 3D/4D GIS Data Visualization для построения 3D модели рельефа в ParaView на основе NetCDF или GeoTIFF данных и сохранение нужного участка в формате OBJ для его использования в MantaFlow. Поскольку MantaFlow умеет этот формат загружать и работать с ним в безразмерных координатах, нам потребуется лишь указать нужный размер в безразмерных координатах (скажем, 100% по горизонтальным координатам и 25% по вертикальной чтобы было достаточно места для моделирования столба дыма) и сохранить параметры преобразования для экспорта результатов в физических координатах. Вот скрипт репозитория с реализацией соответствующей функции: mesh2manta.py


Сохраним результаты моделирования в MantaFlow для ParaView


Поскольку мы задаем исходное пространство моделирования в физических координатах (файл OBJ и коэффициенты его масштабирования), у нас есть все необходимое, чтобы и результаты сохранить в физических координатах. По умолчанию, MantaFlow сохраняет безразмерные результаты в формате сжатых массивов Numpy, поэтому мы добавим сохранение в формат с поддержкой физических координат (VTK), см. скрипт репозитория npz2vtk.py. Добавлю, что в скрипте создается массив xarray: N-D labeled arrays and datasets in Python, из которого одной командой можно сохранить данные в формате NetCDF и некоторых других.


Визуализация в ParaView


Как мы уже рассмотрели в предыдущих статьях (с примерами), ParaView поддерживает работу с сериями данных, так что мы можем работать с 4D данными например, в виде 3D анимации. Вот пример анимации вулканического дыма из серии файлов VTK, экспортированных из MantaFlow:



Модели высокой детализации


Увеличение детальности моделей требует и больше ресурсов для их построения. Если модели на сетке 64х64х64 вычисляются за несколько минут на ноутбуке, то при удвоении разрешения по каждой координате время увеличивается в 8 раз (третья степень двойки).


Ниже показана намного более детальная модель на примере турбулентного торнадо с сайта проекта MantaFlow:



Мне эта модель показалась интересной и я попытался найти, как она построена. Не нашел и обратился к авторам, но они не смогли ответить на вопрос, сообщили лишь, что вычисления требуют мощностей компьютерного кластера. Вероятно, построение модели можно значительно ускорить с помощью библиотеки машинного обучения TensorFlow, поддержка которой встроена в MantaFlow (в официальном репозитории есть примеры).


Заключение


Хотя именно о построении моделей мне и хотелось написать ранее, но пришлось начинать с серии статей про визуализацию данных и потом постепенно переходить уже непосредственно к моделированию. В самом деле, если не рассказать заранее, как хотя бы посмотреть результаты, получится не интересно. Хотя и можно использовать MantaFlow в Blender, но с последним я сам не работаю и не уверен, многие ли из читателей с ним достаточно знакомы. Так что пусть будет как есть знакомство с ParaView ранее и рассказ про MantaFlow и ParaView, а те читатели, кому этого захочется смогут попробовать MantaFlow и Blender.


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

Подробнее..

Blender для (геофизического) моделирования и визуализации

14.08.2020 12:15:32 | Автор: admin

Недавно мы обсудили, как дополнить ранее построенную в ParaView геологическую модель вулкана Тамбора, Индонезия с помощью симуляции потоков дыма, воды, лавы, в MantaFlow и визуализировать результаты в ParaView: Гидродинамическое моделирование (CFD) на рельефе с помощью MantaFlow и визуализация результатов в ParaView Сегодня мы посмотрим, что получится, если использовать "настоящий" софт для работы с трехмерной компьютерной графикой Blender. В последние его версии встроен тот же самый "движок" физически корректной гидродинамической симуляции MantaFlow, это многое упрощает. Как обычно, инструкции по преобразованию данных, исходные данные и проект Blender смотрите в моем GitHub репозитории: ParaView-Blender.


Tambora Volcano Plume Simulation


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


Введение


В предыдущей статье изложено подробно, почему так важна физически корректная симуляция геологических процессов в дополнение к статичным геологическим моделям. Но стоит ли тратить время на достаточно сложную программу Blender и перенос данных в нее, тем более, что у нас уже есть готовые модели в ParaView? Лучше всего, разумеется, взять и попробовать но это трудоемко, так что должны быть какие-то веские причины потратить на это время. В связи с этим, уместно вспомнить, как примерно 20 лет назад на кафедре в университете мы сделали некоторые симуляции лабораторных работ по физике в проприетарном Autodesk 3ds Max. Само собой, полученные результаты были далеки от профессионально сделанных моделей из комплекта примеров 3ds Max, ведь YouTube с современным изобилием обучающих роликов тогда не существовал. И все же возможность многократно повторить симуляцию, при этом ускорить ее или замедлить, одновременно увидеть несколько разных представлений происходящих процессов и другие возможности позволяли по-новому взглянуть и понять физические явления. Да, на реальном оборудовании можно научиться работать с оборудованием, но именно компьютерная симуляция лучше для изучения физических процессов. Возвращаясь к геофизическим моделям, это тем более верно, поскольку происходящее в недрах (вулкана) нам в принципе недоступно для прямого наблюдения. Также, сегодня нам доступны Open Source программные продукты, в том числе Blender, и более того, со встроенным физически корректным симулятором MantaFlow, которым я и так давно пользуюсь. А еще, в Blender теперь есть новый "движок" рендеринга Eevee на порядок быстрее предыдущего (Cycles). Кажется, пора пробовать!


Сразу скажу, что Blender я увидел несколько дней назад и вообще эта тема мне мало знакома. Так что, фактически, мы будем сравнивать результаты визуализации в ParaView, которым я ежедневно пользуюсь лет так пять уже, и результаты в Blender, с которым я знаком примерно пять дней. При этом, стабильная версия Blender не делает то, что мне нужно (и регулярно крэшится), а тестовая весьма нестабильна (ладно, крэшится, так еще при попытке обновиться на новый билд через пару дней вообще все симуляции перестали работать). Погуглив и пообщавшись с опытными пользователями, причина стала понятна мало кто работает со столь сложными исходными данными, а симуляция наливания вина из бутылки в винный бокал работает отлично :) И все же, мне удалось сделать задуманное, а баги, надеюсь, исправят со временем (пытаюсь слать баг-репорты, в ответ мне рекомендуют обходные пути тоже неплохо).


Подготовка данных для Blender


В гитхаб репозитории описано, как экспортировать данные из ParaView для работы с ними в Blender встроенные функции экспорта работают некорректно с цветом и создают невалидные геометрии, но это можно решить с помощью программных фильтров на Python и пост-обработки экспортированных файлов в MeshLab. Дело в том, что цвета геологических поверхностей в ParaView у меня уже подобраны, поэтому удобнее их перенести в Blender как есть.


В файле проекта Blender сохраняются все используемые объекты, тем не менее, исходные файлы по отдельности также доступны в вышеуказанном гитхаб репозитории.


Визуализация в Blender


Все подробности можно посмотреть в приведенном в репозитории файле проекта Blender отмечу лишь, что мне показалось очень удобной система задания облета камеры вокруг сцены. В ParaView это, мягко говоря, совсем не так очевидно. Анимации из 180 кадров хватило для создания плавного поворота на 90 градусов, цвет фона выбран черным для упрощения визуализации модели и пламени (серый фон мне не понравился, а на белом плохо видно).


Поскольку более высокая детальность симуляции требует и значительно больших вычислительных ресурсов, исходная модель магматических камер упрощена так, чтобы с ней можно было работать при разрешении области симуляции 60 ячеек по одной координате. Да, половинный и удвоенный масштаб я тоже проверял, чтобы убедиться в устойчивости результатов. Вертикальный масштаб рельефа удвоен для наглядности, а сам рельеф сглажен (непосредственно в MantaFlow с этим нет проблем, а вот в Blender требуется гладкая поверхность для моделирования потоков на ней).


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



Заключение


Полученная симуляция оказывается достаточно познавательна, на мой взгляд, если сравнить исходную геологическую модель с анимированной магмой, заполнение магматических камер происходит в согласии с не анимированными магматическими каналами модели (показаны красно-коричневыми на модели, см. первый кадр видео). То есть даже небольшого выбранного разрешения для симуляции оказывается достаточно, чтобы показать вполне согласованную динамическую модель. Кроме того, если продолжать симуляцию (в проекте до 250 кадров настроено, но на видео показаны только 180 кадров), обнаруживается очень интересный эффект, который на самом деле может иметь место при извержении магма на видео поднимается до поверхности и опускается вниз, а далее (не показано) она снова поднимается и снова опускается! И это при том, что положение источника магмы и параметры симуляции не меняются. Разумеется, этот же эффект сохраняется и при удвоении разрешения симуляции если нужна большая детализация. С геологами я подробно еще не обсуждал результаты, вероятно, они еще что интересное заметят.


Из курьезов за время карантина у меня "сдохла" батарея в макбуке 15" и я благополучно пересел на старенький макбук 13", которой вполне мне хватает для ежедневного консольного программирования на C, Python, SQL и запуска ssh на амазоновские инстансы EC2 для вычислений. В общем, в сервис я так и не добрался. Так вот, для комфортной работы в Blender этого явно мало и размер экрана и вычислительная мощность недостаточны. При этом, я использовал только рендеринг на движке Eevee, потому что при включении Cycles рендеринг даже одного кадра становится чрезвычайно длительным процессом. Зато теперь я могу уверенно сказать, что на любом более-менее приличном современном ноутбуке можно отлично работать в Blender.

Подробнее..

Вычислительная геология и визуализация

07.03.2021 12:13:35 | Автор: admin

Мы уже обсуждали современные методы в геологии в статье Геология XXI века как наука данных о Земле на примере модели землетрясения в горном массиве Монте Кристо в Неваде, США 15 мая 2020 года магнитудой 6.5 баллов. И все бы хорошо в этой модели, да вот только самое интересное смещение геологических блоков и "дыхание гор" нам схематично указал опытный геолог. Самое же важное заключается в том, что современная вычислительная геология (включая геофизику, моделирование и визуализацию) позволяет создать динамическую (4D) геологическую модель и наяву увидеть происходящие геологические процессы.



Геологическая модель с интерферограммой на поверхности рельефа по данным радарной спутниковой съемки, где на шкале Density Anomaly,% является характеристикой неоднородности геологической плотности и черная сфера в центре указывает координаты эпицентра землетрясения, расположенного на глубине 2.8 км.


Поскольку в указанной выше статье мы уже рассмотрели статичную модель, сразу перейдем к динамической модели и ее визуализации. Как обычно, воспользуемся для этого Open Source программой ParaView и моим расширением для ГИС данных N-Cube ParaView plugin for 3D/4D GIS Data Visualization. Вот как выглядит проект ParaView:


Напомню, что геологическую модель мы создаем методом так называемой геофизической инверсии, когда на основе данных гравитационного поля на поверхности Земли вычисляем соответствующее распределение плотности под этой поверхностью. Увы, но измерения непосредственно гравитационного поля (или нужной нам вертикальной его компоненты) с такой точностью и периодичностью не производятся, поэтому воспользуемся заместо этого открыто доступными регулярными радарными снимками. Дело в том, что пространственные спектры гравитационного поля, рельефа и радарных (и оптических) снимков практически эквивалентны, что и дает возможность восстановить распределение плотности с точностью до множителя. Если вам интересны детали, то в GitHub репозитории GIS Snippets доступны Jupyter Python 3 ноутбуки с соответствующими моделями (и ссылками на теоретические основы). Спутниковая интерферограмма получена средствами замечательного открытого тулкита GMTSAR.


В случае однократного землетрясения смещение даже огромных геологических массивов происходит достаточно быстро, и сам процесс, разумеется, зарегистрировать почти невозможно, если только (чудесным образом) именно в этот момент не будет получен один из регулярных космических снимков. На практике же нам приходится довольствоваться снимками за несколько дней до и несколько дней после землетрясения. Используя такие снимки, мы построили две модели для выбранного участка Монте Кристо. Также представляют интерес снимки, сделанные через несколько недель после события после так называемого процесса релаксации недра Земли приходят в новое устойчивое состояние, при этом вероятны небольшие (относительно первоначального смещения) подвижки геологических блоков. Поскольку в нашем случае такое смещение достаточно мало, здесь мы не будем пытаться его визуализировать. В случае повторяющихся землетрясений на одной территории возможно построить и более сложные модели, показывающие промежуточные геологические состояния, хотя это связано с техническими сложностями корректного вычисления результата многократных смещений территории (по трем координатным осям) за период времени в годы и десятки лет. Впрочем, и эта задача успешно решается, теорию и практические примеры можно найти в документации к открытому программному пакету GMTSAR.


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



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



Красным цветом на интерферограмме показаны поднявшиеся участки (в данном случае, на 20-30 см), а синим опустившиеся (на 15-20 см). Смотрите подробнее в статье Общедоступные данные дистанционного зондирования Земли: как получить и использовать


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


В заключение, приглашаю всех посетить GitHub репозитории с множеством геологических моделей и их визуализацией в Blender и ParaView, а также примерами анализа пространственных спектров, синтеза гравитационных данных высокого разрешения на основе данных дистанционного зондирования и другими вычислениями, в том числе, выполняемыми на геоиде средствами PostgreSQL/PostGIS. Также смотрите готовые визуализации на YouTube канале.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru