Моделирование процесса перекачки нефти
Авторы: Сергиенко Евгения Викторовна, Рудных Павел Сергеевич
Рубрика: 4. Информатика
Опубликовано в
L международная научная конференция «Исследования молодых ученых» (Казань, декабрь 2022)
Дата публикации: 17.12.2022
Статья просмотрена: 113 раз
Библиографическое описание:
Сергиенко, Е. В. Моделирование процесса перекачки нефти / Е. В. Сергиенко, П. С. Рудных. — Текст : непосредственный // Исследования молодых ученых : материалы L Междунар. науч. конф. (г. Казань, декабрь 2022 г.). — Казань : Молодой ученый, 2022. — С. 1-14. — URL: https://moluch.ru/conf/stud/archive/470/17662/ (дата обращения: 19.12.2024).
В статье описаны этапы моделирования, а также стек технологий (C#, ASP.NET Core, Blender, Unity), позволяющий смоделировать процесс перекачки нефти.
Ключевые слова: программирование, C#, 3D-моделирование, Unity
Моделирование, как метод познания, состоит из создания и исследования моделей. Компьютерное моделирование основано на системе математических соотношений (формул, уравнений, неравенств и знаковых логических выражений), отображающих существенные свойства изучаемого объекта или явления, а также на использовании технических средств, обладающих высоким быстродействием [3].
Основными этапами моделирования являются:
1) постановка задачи: на данном этапе происходит формулировка задачи, определение цели и приоритетов моделирования, сбор информации о системе, объекте моделирования, описание данных (их структуры, диапазона, источника и т. д.);
2) разработка модели, анализ и исследование задачи: анализ технических средств моделирования, анализ программного обеспечения, разработка входных и выходных спецификаций, форм представления данных, запись алгоритма на выбранном языке программирования (или в прикладной среде);
3) компьютерный эксперимент: отладка синтаксиса, семантики и логической структуры, тестовые расчеты и анализ результатов тестирования, оптимизация программы;
4) анализ результатов моделирования.
Цель работы: разработка программного обеспечения для демонстрации перекачки нефти из резервуара 1 в резервуар 2.
1 Постановка задачи.
Функциональное назначение программы заключается в визуализации перелива нефти из одного вертикального стального резервуара в другой.
Требования к составу функций программного обеспечения:
— возможность выполнения пользователем следующего алгоритма: открыть задвижку 1, запустить насос, открыть задвижку 2, при наполнении РВС 2 закрыть задвижку 2, остановить насос;
— демонстрация у РВС 1 индикатора уровня, понижающегося при перекачке;
— демонстрация у РВС 2 индикатора уровня, повышающегося при перекачке;
— демонстрация изменения цвета задвижки на желтый, если она закрыта, и на зеленый, если открыта;
— демонстрация вращения крыльчатка, когда он запущен и горит зеленым, когда остановлен — горит желтым и крыльчатка не вращается, при этом насос перекачивает с производительность (скоростью) 1000 или 2000 куб метров в минуту.
2 Разработка модели перекачки нефти, анализ и исследование задачи
Основная логика перекачки содержится в одноимённом методе «Pumping». В нём происходит уменьшение количества нефти в первом РВС и увеличение во втором, анимация перетекающей нефти и проверка на неудачное завершение игры. Листинг изображён на рисунке 1.
Насос состоит из нескольких элементов и некоторые из них должны что-то делать при запуске и остановке насоса. Для таких элементов создаются классы и наследуются от общего интерфейса. В листинге на рисунке 1 представлен метод, отвечающий за анимацию вращения. Делегат «condition» проверяет соблюдение некоторого условия, и пока оно истинно, скорость вращения плавно меняет своё значение (рис. 2).
Рис. 1. Листинг «Метод перекачки нефти»
Рис. 2. Листинг «Метод изменения скорости вращения элемента насоса»
По завершении перекачки вызывается небольшой метод, определяющий её результат. В его теле находится вызов двух событий: завершение игры и завершение игры с результатом (рис. 3).
Рис. 3. Листинг «Метод определения результата игры»
Для разработки модели используется следующий стек технологий:
— язык программирования C#,
— ASP.NET Core,
— Blender,
— Unity.
Само приложение можно разделить на 2 части: клиент и сервер. Клиентская часть разработана на Unity, а серверная — на ASP.
Разработка началась с серверной части [2]. Первым делом был создан класс «AccessSettings», и описано в нём одно свойство «Key». В класс «Program» добавлен «AccessSettings» в контейнер DI (dependency injection), в файле настроек приложения — секция настроек. Новый C#–скрипт «AccessSettingsController» унаследован от базового класса «ControllerBase» и включил в себя атрибуты, необходимые для генерации endpoint’a. «ControllerBase» — абстрактный класс, предоставляемый ASP.NET Core, содержит новое поле «AccessSettings», конструктор класса и метод, помеченный атрибутом «HttpGet» (рис.4).
Рис. 4. Листинг «Контроллер»
После написание и проверки серверной части была разработана клиентская часть, для которой потребовалось импортировать нескольких библиотек:
— Addressables — система управления ресурсами;
— UniTask — инструмент, обеспечивающий эффективную интеграцию async/await для Unity;
— UltimateCleanGUI — набор элементов интерфейса;
— EpicToonFX — набор эффектов.
После импорта инструментов был создан класс для РВС, наследуемый от базового класса Unity «Mono Behaviour». В нём описывалась вместимость резервуара, количество хранимой жидкости, событие, вызывающееся при изменении количества жидкости, а также добавлены два метода для увеличения и уменьшения хранимой жидкости.
Рис. 5. Листинг «Класс РВС»
После расположения на сцене модели РВС и добавления на них соответствующие скрипты, был создан класс, описывающий насос и его работу. Так как насос должен состоять из нескольких частей, был создан интерфейс «IOil Pump Working Part». В нём описано два метода: «Start Working» и «Stop Working». В новый класс «Oil Pump», наследуемый от «Mono Behaviour» и созданного интерфейса, добавлены поля с настройками перекачки, ссылки на РВС и методы для работы с насосом.
Взаимодействие с игровыми объектами происходит через всплывающие окна. Для них был создан абстрактный класс «Popup Base». Он содержит набор методов для взаимодействия (рис. 6).
Рис. 6. Листинг «Класс «PopupBase»»
Также был создан класс «Local Asset Loader» для загрузки ресурсов через addressables. В нём описано два метода: загрузка ресурса и его выгрузка. Для каждого ресурса, который необходимо загрузить, создаётся новый класс (рис.7).
Рис. 7. Листинг «Класс для загрузки ресурсов»
Для отправки запросов на сервер был создан небольшой инструмент, состоящий из нескольких классов и структур: веб-клиент, настройки веб-клиентов и статический класс с методами-расширениями для веб-клиента (рис. 8–9).
Рис. 8. Листинг «Класс веб-клиента»
Рис. 9. Листинг «Структура с настройками веб-клиента»
Перед написанием клиентской части в Blender были созданы необходимые модели. В модели входят: РВС, трубы и насос для перекачки нефти. Для большей наглядности в РВС был сделан срез, через который можно было наблюдать изменение количества нефти (рис. 10).
Рис. 10. Модели в Blender
Клиентская часть [1] строится по паттерну MVC (Model-View-Controller) и представляет собой небольшую сцену с импортированными моделями из Blender’a и несколькими диалоговыми окнами (рис. 11).
Рис. 11. Клиентская часть
Для удобной работы с диалоговыми окнами был написан небольшой инструмент. Он включает в себя базовый класс окна, от которого наследуются все диалоговые окна, и сущность, управляющую ими. После запуска серверной части и успешного ввода кодового слова появляется Popup с описанием задачи (рис. 12).
Рис. 12. Popup с описанием задачи
3 Компьютерный эксперимент.
Чтобы начать выполнение модели, необходимо нажать на соответствующую кнопку запуска. Через некоторое время появляются окна, показывающие состояние РВС, и кнопка остановки перекачки (рис. 13).
Рис. 13. Интерфейс во время перекачки нефти
В зависимости от результата появляется соответствующий Popup (рис. 14–15).
Рис. 14. Popup успешного завершения перекачки
Рис. 15. Неудачное завершение перекачки
4 Анализ результатов моделирования.
Продемонстрированные алгоритмы запуска насоса, наполнения резервуаров могут быть с успехом использованы для разработки аналогичных моделей, которые позволяют демонстрировать переливы нефти из РВС. Описанная модель выполняет открытие/закрытие задвижки 1/2, запуск/остановку насоса, наполнение/перелив РВС, а также изменение индикатора уровня, цвета задвижки, вращения крыльчатка насоса, изменение его цвета. Модель процесса перекачки нефти используется в образовательных целях.
Литература:
- Корнилов, А. В. Unity. Полное руководство / А. В. Корнилов. — Санкт-Петербург: Наука и Техника, 2020. — 432 с. — ISBN 978–5-94387–795–7. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/175394 (дата обращения: 16.12.2022). — Режим доступа: для авториз. пользователей.
- Лок, Э. ASP.NET Core в действии: руководство / Э. Лок; перевод с английского Д. А. Беликова. — Москва: ДМК Пресс, 2021. — 906 с. — ISBN 978–5-97060–550–9. — Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/241079 (дата обращения: 16.12.2022). — Режим доступа: для авториз. пользователей.
- Теоретические основы моделирования: учебник для вузов / Е. В. Стельмашонок, В. Л. Стельмашонок, Л. А. Еникеева, С. А. Соколовская; под редакцией Е. В. Стельмашонок. — Москва: Издательство Юрайт, 2023. — 65 с. — (Высшее образование). — ISBN 978–5-534–15851–9. — Текст: электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/509876 (дата обращения: 16.12.2022).
Похожие статьи
Проблематика программирования анимации 3D-объектов с графической библиотекой OpenGL
В статье описана проблематика разработки системы анимации для демонстрации процессов в двигателе внутреннего сгорания.
Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android
В данной статье рассматриваются императивный и декларативный подходы к разработке интерфейсов, анализируются преимущества и недостатки библиотеки Jetpack Compose.
Проблематика портирования программного пакета моделирования двигателя внутреннего сгорания на операционную систему Astra Linux
В статье описана проблематика портирования системы моделирования двигателя внутреннего сгорания на операционную систему Astra Linux.
Разработка системы автоматизированного тестирования
В ходе данного исследования был рассмотрен процесс разработки системы автоматизированного тестирования. Для разработки приложения нами использовалась среда Microsoft Visual Studio 2010 Ultimate.
Многопоточность в языке Swift
В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.
Абстрактные и динамически сгенерированные контроллеры в ASP.NET
В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.
Создание обучающего приложения по информатике на базе Unity
В данном обзоре нами были рассмотрены особенности программирования в Unity, применения С#, и использования хостинга. А также процесс создания обучающего приложения с помощью инструмента для создания двух и трехмерных приложений Unity.
Разработка алгоритма валидации форм на клиентской стороне для передачи данных
В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.
Создание простого ar-приложения с использованием Unity и Vuforia engine
В статье рассмотрен процесс создания простого ar-приложения при помощи платформы разработки приложений Unity и платформы Vuforia.
Технология ASP.NET MVC
В статье рассматривается проектирование архитектуры приложений ASP.NET MVC. Авторы описывают теоретические основы ASP.NET MVC, которые необходимы для разработки web-приложений платформы.NET Framework.
Похожие статьи
Проблематика программирования анимации 3D-объектов с графической библиотекой OpenGL
В статье описана проблематика разработки системы анимации для демонстрации процессов в двигателе внутреннего сгорания.
Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android
В данной статье рассматриваются императивный и декларативный подходы к разработке интерфейсов, анализируются преимущества и недостатки библиотеки Jetpack Compose.
Проблематика портирования программного пакета моделирования двигателя внутреннего сгорания на операционную систему Astra Linux
В статье описана проблематика портирования системы моделирования двигателя внутреннего сгорания на операционную систему Astra Linux.
Разработка системы автоматизированного тестирования
В ходе данного исследования был рассмотрен процесс разработки системы автоматизированного тестирования. Для разработки приложения нами использовалась среда Microsoft Visual Studio 2010 Ultimate.
Многопоточность в языке Swift
В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.
Абстрактные и динамически сгенерированные контроллеры в ASP.NET
В данной статье будет рассмотрен подход автоматически сгенерированных контроллеров в одной из самых популярных технологий для написания веб-сайтов — ASP.NET Core MVC.
Создание обучающего приложения по информатике на базе Unity
В данном обзоре нами были рассмотрены особенности программирования в Unity, применения С#, и использования хостинга. А также процесс создания обучающего приложения с помощью инструмента для создания двух и трехмерных приложений Unity.
Разработка алгоритма валидации форм на клиентской стороне для передачи данных
В данной статье рассмотрены методы и алгоритмы функционирования систем клиент-серверной архитектуры для передачи данных с помощью технологий программных инструментов: HTML, CSS, Javascript.
Создание простого ar-приложения с использованием Unity и Vuforia engine
В статье рассмотрен процесс создания простого ar-приложения при помощи платформы разработки приложений Unity и платформы Vuforia.
Технология ASP.NET MVC
В статье рассматривается проектирование архитектуры приложений ASP.NET MVC. Авторы описывают теоретические основы ASP.NET MVC, которые необходимы для разработки web-приложений платформы.NET Framework.