Введение
Здравствуйте меня зовут Роман, я занимаюсь обеспечение пожарной безопасности в зданиях и сооружениях более 15 лет, основной профиль моей деятельности — это моделирование развития пожара.
В основном моделирование развития пожара провожу в специализированном программном обеспечении Fire Dynamics Simulator (FDS), оно используется от Японии до США при обосновании отступлений требований пожарной безопасности.
При моделировании развития пожара очень много времени занимает обработка результатов моделирования. В цикле статей я хочу поделиться способами обработки данных, которые использую при работе.
Статья ориентирована на специалистов, которые уже используют FDS в работе. Подробности моделирования развития пожара с помощью FDS в данной статьи не будут рассматриваться.
Эта статья — вторая из серии. Ссылка на первую статью.
Интенсивность тепловыделения
При моделировании FDS создаёт несколько файлов, одни из них является файл оканчивающийся на _hrr.csv. Этот файл содержит некоторую информацию о моделировании, такую как о выделенном тепле, массе и потерях энергии. Через этот файл возможно оценить правильность настроек моделирования.
Согласно, технической документации на FDS? для задания обычной газовой горелки можно использовать параметр HRRPUA. HRRPUA необходимо задавать значения в единицах измерения . Для примера возьмём моделирование горения при условии, что горелка должна обеспечивать интенсивность тепловыделения (далее — HRR) 63
. Чтобы установить соответствующее значение
HRRPUA, необходимо разделить HRR на площадь горения, то есть на площадь, в которую будет подаваться горючий газ. Горелка в примере представляет собой квадрат с размерами стороны 0,4 . Таким образом, значение
HRRPUA составит:
.
Несмотря на кажущуюся простоту задачи, повторный анализ результатов остаётся необходимым. Во-первых — исключение вероятности ошибок, допущенных в ходе вычислений. Во-вторых, в FDS все OBSTи VENTдолжны быть согласованы с размерами ячеек сетки, которые задаются в MESH. В случаях, когда VENT не согласуется с размерами ячеек FDS автоматически корректирует их положение. Площадь VENT может измениться, а следовательно, и количество горючего газа, поступающего в область.
Импорт данных
Для первичной обработки данных я использую Jupyter Notebook. На примере него я буду рассказывать свои действия. Код в виде блокнота Jupyter Notebook’а и примеры данных будут лежать по ссылке.
Нас интересует содержание столбца «HRR» файл, оканчивающийся на hrr.csv. Структура файла, оканчивающийся на hrr.csv:
-
первая строка содержит единицы измерения данных в соответствующем столбце;
-
вторая строка — заголовки столбцов;
-
с третьей строки идут сами данные. Существует множество способов чтения CSV-файлов с помощью Python, в данном примере мы рассмотрим чтение данных с помощью библиотеки Pandas.
В прошлой статье я не упомянул о правилах импорта данных. Сначала необходимо указать путь к файлу. В Python это можно сделать множеством способов, в данном примере мы будем использовать библиотеку os. С помощью os.path.join(«ваш», «путь», «здесь») указываются метки файлов в виде каталогов, разделённые запятыми, создаёт путь, подходящий операционной системы, в которой выполняется этот скрипт. Это полезно при совместном использовании скрипта на различных операционных системах, например, при использовании скрипта на Windows и Linux.
Библиотека matplotlib предназначена для построения различных графиков
Потом файл считывается, как DataFrame, используя библиотеку Pandas. Библиотеки в Python, как правило, импортируются в начале файла. Импортируем библиотеку import pandas as pd. В библиотеки Pandas есть метод read_csv() этот метод должен получить путь к файлу, в нашем случае данный путь будет получен из переменой hrr_path. Кроме, данному методу необходимо передать значение строки, которая будет использоваться в качестве заголовков столбцов. Поскольку первая строка содержит единицы измерения, а заголовки столбцов находятся во второй строке, мы устанавливаем header=1 (нумерация в Python начинается с 0). DataFrame предоставляют возможность просмотреть 5 первых строк head() либо 5 последних строк tail().
В качестве примера прочитаем файл Example 2_hrr.csv.
# необходимые библиотеки import os import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd # Указать путь к файлу hrr_path = os.path.join("Example 2_hrr.csv") # Прочитать CSV-файл как Pandas DataFrame. hrr_df = pd.read_csv(hrr_path, header=1) # Показать результат первых 5 строчек hrr_df.head()

С помощью DataFrame можно получить доступ к отдельным столбцам по их заголовкам, например, используя hrr_df["Time"]. Если заголовок столбца представляет собой непрерывную строку, т.е. без пробелов, можно также получить доступ к столбцу напрямую, hrr_df.HRR.

# Получение доступа к отдельным столбцам hrr_df.HRR

Используя list(DataFrame), можно получить список с заголовками столбцов.
# Список с заголовками столбцов list(hrr_df)

Сравните моделирование с целевым показателем
Чтобы сравнить результаты моделирования с целевым показателем, мы просто отобразим динамику HRR с течением времени. Обратившись к началу статьи, мы вспомним, что целевым показателем является значение 63 . Для наглядности мы также нарисуем пунктирную линию, отражающую целевое значение.
# Пунктирная линия с целевым показателем 63 кВт plt.plot([0, 63], [63, 63], color="k", alpha=0.4, linestyle="--", label="Цель") # График с результатами моделирования plt.plot(hrr_df["Time"], hrr_df.HRR, label="Моделирование") # Метаданные графика plt.xlabel("Время, с") plt.ylabel("HRR, кВт") plt.legend() plt.grid()

Вывод
В статье показан этап обработки результатов моделирования в FDS с использованием Python и Jupyter Notebook. Рассмотрены принципы работы с файлами, которые создаются автоматически при задании горения в FDS их импорт и первичная фильтрация данных.
ссылка на оригинал статьи https://habr.com/ru/articles/946594/
Добавить комментарий