Введение

Здравствуйте меня зовут Роман, я занимаюсь обеспечение пожарной безопасности в зданиях и сооружениях более 15 лет, основной профиль моей деятельности — это моделирование развития пожара.

В основном моделирование развития пожара провожу в специализированном программном обеспечении Fire Dynamics Simulator (FDS), оно используется от Японии до США при обосновании отступлений требований пожарной безопасности.
 При моделировании развития пожара очень много времени занимает обработка результатов моделирования. В цикле статей я хочу поделиться способами обработки данных, которые использую при работе.
 
Статья ориентирована на специалистов, которые уже используют FDS в работе. Подробности моделирования развития пожара с помощью FDS в данной статьи не будут рассматриваться.

Эта статья — вторая из серии. Ссылка на первую статью.

Интенсивность тепловыделения

При моделировании FDS создаёт несколько файлов, одни из них является файл оканчивающийся на _hrr.csv. Этот файл содержит некоторую информацию о моделировании, такую как о выделенном тепле, массе и потерях энергии. Через этот файл возможно оценить правильность настроек моделирования.

Согласно, технической документации на FDS? для задания обычной газовой горелки можно использовать параметр HRRPUA. HRRPUA необходимо задавать значения в единицах измерения кВт/м^2. Для примера возьмём моделирование горения при условии, что горелка должна обеспечивать интенсивность тепловыделения (далее — HRR) 63 кВт. Чтобы установить соответствующее значение HRRPUA, необходимо разделить HRR на площадь горения, то есть на площадь, в которую будет подаваться горючий газ. Горелка в примере представляет собой квадрат с размерами стороны 0,4 м. Таким образом, значение HRRPUA составит: \frac{63}{0,4\cdot 0,4} = 393,75 кВт/м^2.

Несмотря на кажущуюся простоту задачи, повторный анализ результатов остаётся необходимым. Во-первых — исключение вероятности ошибок, допущенных в ходе вычислений. Во-вторых, в 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 их импорт и первичная фильтрация данных.

Комментарии (0)