Одним из ключевых этапов процесса проектирования судна является моделирование его поведения на взволнованной поверхности моря, выполняемое с учетом ожидаемых эксплуатационных характеристик. Подобный процесс моделирования может быть выполнен в реальных условиях на виртуальном полигоне, что позволяет в реальном времени отслеживать влияние внешних воздействий на ходовые характеристики судна с помощью датчиков, установленных на борту. Визуализация результатов такого процесса моделирования позволяет исследователю правильно и целостно воспринимать происходящие события, а также прогнозировать и своевременно реагировать на возникающие опасные ситуации. Такой подход позволяет сэкономить огромное количество средств, так как моделирование качки в опытных бассейнах стоит больших денег и проводится не с полноразмерной версией судна, а с его уменьшенной моделью. Компьютерная программа позволяет проводить симуляцию в реальном времени, что сэкономит большие деньги при проектировании.
1.1. Виртуальный полигон
Данная исследовательская работа проводится в рамках проекта виртуального полигона. Целью этого проекта является создание системы поддержки принятия решений для моделирования, прогнозирования и предотвращения опасных физических явлений, которые могут возникнуть на судне в море. Ситуации включают
• затопление отсеков,
• пожар в отсеках,
• потеря остойчивости судна,
• волны большой амплитуды
• и т.д.
Наша задача в рамках этого проекта — разработать программу, которая имитирует океанские волны и движение судов по морю. Поскольку в рамках проекта разрабатывается система принятия решений, одним из требований является то, что мы должны делать все в режиме реального времени и предоставлять оператору визуализацию и графический интерфейс пользователя. Это основная задача для нашей команды, потому что подобные программы обычно выполняют вычисления в неинтерактивном пакетном режиме. Данный подход очень удобен для исследователя, так как предоставляет ему удобный и интуитивно понятный интерфейс для симуляции различных явлений.
Стоит отметить, что для работы подобных программ зачастую требуется мощный вычислительный кластер или суперкомпьютер, так как эти программы содержат ресурсоемкие вычисления. В этом случае возникают проблемы, так как для расчетов необходимо получить доступ к вычислительным ресурсам, что зачастую вызывает множество трудностей при оформлении необходимых бумаг. Чтобы избежать всего этого и сделать программу более доступной, в виртуальном полигоне для вычислений используется GPU, если это возможно. Так как GPU используется многими исследователями для визуализации и есть во многих современных компьютерах, это облегчает работу и доступность использования данной программы.
Другая ключевая особенность — реалистичные морские объекты. Они предоставляются в формате IGES, который является независимым от производителя стандартом для обмена объектными моделями между системами CAD.
Это позволяет подгружать множество различных судов без перевода их в специальный формат. Данный формат описывает суда аналитически, что позволяет получать точные модели. В качестве альтернативы мы также используем собственный дискретный формат VSL [1], который имеет несколько преимуществ. Во-первых, для него намного быстрее проводить триангуляцию, необходимую для загрузки судна, во-вторых, данный формат намного проще редактировать. Но у дискретного формата есть и недостаток, который выражается в том, что им невозможно точно описать наше судно.
1.2. Структура
Исходный код разделен на несколько модулей (исполняемые файлы и общие библиотеки) для оптимизации времени сборки. Структура проекта изображена на рисунке 1. Мы отказались от использования полнофункционального игрового движка. Он бы мог значительно упростить процесс разработки, но также он бы заметно уменьшил производительность программы и её гибкость. Вместо этого мы использовали библиотеку Magnum [2], которая предоставляет легкий объектно-ориентированный интерфейс для OpenGL [3] и библиотеку ImGUI для создания графического интерфейса пользователя. Для вычислений на GPU используется OpenCL [4].
Для работы используются многочисленные варианты корпусов судов, которые собраны в формате VSL в базе данных Vessel Санкт-Петербургского государственного университета. Эта база поддерживается с помощью пакета Hull [5], которая позволяет редактировать корпуса корабля и вычисляет определенные гидростатические характеристики. Кроме того, мы использовали OpenCASCADE [6] для импорта файлов IGES и их преобразования в вершины и грани (полигоны).
Рис. 1: Структура проекта.
Помимо этого в проекте используется Blitz+—+ [7] для многомерных массивов. Для FFT мы используем коды от Takuya OOURA [8] на CPU и на GPU от Василия Волкова [9].
В результате была разработана версия программы, которая работает в асинхронном режиме отрисовки в 60 кадров в секунду. Реализован весь необходимый на данный момент инструментарий для визуализации, который включает в себя отрисовку взволнованной поверхности, судна и среза поверхности. При помощи GPU было получено существенное ускорение вычисления смоченной поверхности, что снижает требования к вычислительным способностям конечной машины и расширяет возможности для исследования с большим количеством параметров. И также был добавлен движитель, с помощью которого исследователь может задавать движение судна.
[1] Bogdanov Alexander, Khramushin Vasily. Vessel: Blueprints for the analysis of hydrostatic characteristics, stability and propulsion of the ship (in Russian). — 2015. — Access mode: http://www1.fips.ru/fips_servl/ fips_servlet?DB=EVM&DocNumber=2015621368&TypeFile=html.
[2] Magnum Engine. — Access mode: https://magnum.graphics/.
[3] OpenGL - The Industry Standard for High Performance Graphics. — Access mode: https://www.opengl.org/.
[4] OpenCL - The Open Standard for Parallel Programming of Heterogeneous Systems. — Access mode: https://www.khronos.org/opencl/.
[5] Khramushin Vasily. Analytic ship hull shape construction, wave resistance calculations, theoretical blueprint feature curve calculations, and ship stability diagrams (in Russian). — 2010. — Access mode: http://www1.fips.ru/fips_servl/fips_servlet?DB=EVM&DocNumber= 2010615849&TypeFile=html.
[6] OpenCASCADE. — Access mode: https://www.opencascade.com/.
[7] Veldhuizen Todd L. Blitz+—+: The Library that Thinks it is a Compiler // Advances in Software Tools for Scientific Computing / Ed. by Hans Petter Langtangen, Are Magnus Bruaset, Ewald Quak. — Berlin, Heidelberg : Springer Berlin Heidelberg, 2000. — P. 57-87.
[8] Ooura Takuya. General Purpose FFT (Fast Fourier/Cosine/Sine Transform) Package. — 2006. — Access mode: http://www.kurims.kyoto-u. ac.jp/~ooura/fft.html.
[9] Volkov Vasily, Kazian Brian. Fitting FFT onto the G80 architecture // University of California, Berkeley. — 2008. — Vol. 40.
[10] Real-time spherical panorama image stitching using opencl / Wei- Sheng Liao, Tung-Ju Hsieh, Wen-Yew Liang et al. // Proceedings of the International Conference on Computer Graphics and Virtual Reality (CGVR). — 2011. — P. 1.
[11] Ukidave Yash, Gong Xiang, Kaeli David. Performance evaluation and optimization mechanisms for inter-operable graphics and computation on GPUs // Proceedings of Workshop on General Purpose Processing Using GPUs / ACM. — 2014. — P. 37.
[12] Matusiak J. Dynamics of a Rigid Ship, Aalto University Publication Series Science+ Technology // Unigrafia Oy, Helsinki, Finland. — 2013.
[13] Удачин ВС, Соловьев ВБ. Судовождение на внутренних водных путях // М.: Транспорт. — 1990.
[14] What is Unreal Engine 4. — Access mode: https://www.unrealengine. com/en-US/.
[15] Phong Bui Tuong. Illumination for computer generated pictures // Communications of the ACM. — 1975. — Vol. 18, no. 6. — P. 311-317.
...