Язык: Python
Интерфейс: Tkinter / PyQt6
Утилита расчитывает честное значение tпор тремя разными способами, отображает на графике значения параметра, воздействующего на пожарный извещатель во всех точках области F и определяет dэфф.
Начиная с версии 0.3.1 работает только в связке с утилитой Zmejka. При этом утилиту PCTT можно легко адаптировать под телеграм-бота.
- Пользователь указывает путь к файлу сценария FDS (.fds), вводит запрашиваемые данные, выбирает параметр, воздействующий на пожарный извещатель;
- В каждой точке расчётной области, на высоте размещения пожарных извещателей, добавляется регистратор (измеритель) этого параметра с определённым паттерном в названии (DEVC_XnYm_MESH_N), указывается пороговое значение, присваиваемое каждому регистратору (измерителю). Пороговое значение определяется строго по Методике;
- Далее пользователь нажимает "Старт" и ожидает окончания моделирования пожара;
- FDS расчитывает значение параметра в каждой точке расчётной области F. Количество точек в области F зависит от размера ячейки;
- После этого пользователь запускает утилиту PCTT, вновь указывает Hпом (высоту помещения с очагом пожара), Cs (размер ячейки) и путь к результатам расчёта "_devc.csv";
- Утилита очищает таблицу от лишних &DEVC, преобразует научную нотацию записей в обыкновенный математический вид, далее ищет строку, в которой количество ячеек, значение в каждой из которых превышает (в случае с параметром VISIBILITY не превышает) пороговое, превышает количество точек Cc, в области F, необходимое для получения такой площади области F, при которой значение эффективного диаметра dэфф будет больше или равно нормативному расстоянию между пожарными извещателями. При этом нормативное расстояние между извещателями определяется по формуле
$$\text{L} = \text{R} \sqrt{2}$$ - Таким образом, программа расчитывает tпор строго по пунктам 1 и 2 приложения 11 Методики 1140.
Расчёт критического значения по видимости для пожарного извещателя представлен в файле Расчёт_VisL.sm.
Расчёт критических значений F и dэфф, а также значение расстояния между извещателями L в табличном виде, представлены в файле Расчёт_Fmax.sm.
Файлы с расширением .sm можно открыть с помощью SMath.
Поскольку пользовательскому сообществу Fenix+ 3 доподлинно неизвестна природа происхождения значения tпор в отчёте, как и неизвестна методология его вычисления, Ниса добавила в программу функцию вычисления не только tпор, но и F (dэфф) так, чтобы строго соблюдались пункты 1 и 2 приложения 11 Методики 1140 с точностью до дискретного элемента пространства (размерной ячейки).
В каждую точку (ячейку) расчётной области, на высоте расположения пожарных извещателей, добавляется измеритель (регистратор) параметра, воздействующего на пожарный извещатель
...
&DEVC ID='DEVC_X1Y1_MESH_1' QUANTITY='OPTICAL DENSITY' XYZ=-18.5,-6.0,3.22, SETPOINT=0.023, TRIP_DIRECTION=1/
&DEVC ID='DEVC_X1Y2_MESH_1' QUANTITY='OPTICAL DENSITY' XYZ=-18.5,-5.5,3.22, SETPOINT=0.023, TRIP_DIRECTION=1/
&DEVC ID='DEVC_X1Y3_MESH_1' QUANTITY='OPTICAL DENSITY' XYZ=-18.5,-5.0,3.22, SETPOINT=0.023, TRIP_DIRECTION=1/
...
!> И ещё примерно несколько тысяч, в зависимости от количества ячеек в доменеПользователь может выбрать, какой параметр будет воздействовать на извещатель в процессе моделирования. На выбор доступны 4 параметра:
- Видимость (VISIBILITY)
- Коэффициент пропускания света (EXTINCTION COEFFICIENT)
- Оптическая плотность (OPTICAL DENSITY)
- Температура (TEMPERATURE)
В FDS EXTINCTION COEFFICIENT и OPTICAL DENSITY не учитывают водяной пар, который часто, хоть и в малых количествах, но всё же присутствует в составе дыма
!> read.f90, строки 17000-17250
IF (QUANTITY=='OPTICAL DENSITY' .AND. SPEC_ID=='null') SPEC_ID='SOOT'
IF (QUANTITY=='VISIBILITY' .AND. SPEC_ID=='null') SPEC_ID='SOOT'
IF (QUANTITY=='EXTINCTION COEFFICIENT' .AND. SPEC_ID=='null') SPEC_ID='SOOT'Этот отрывок кода означает, что если во входном файле .fds в строчках &DEVC или &SLCF заданы меры QUANTITY, но заведомо не заданы виды SPEC_ID, FDS по умолчанию назначает для OPTICAL DENSITY, VISIBILITY и EXTINCTION COEFICIENT вид SOOT (сажа). По умолчанию эти величины рассчитываются для сажи как основного поглотителя видимого света при пожаре.
До версии PCTT 0.9.0 считалось, что мера VISIBILITY учитывает водяной пар (SOOT + WATER WAPOR) из-за чего она рассматривалась в качестве перспективной аналогии.
Мера VISIBILITY действительно является перспективным параметром, воздействующим на пожарный извещатель. Однако, она сама по себе не учитывает водяной пар. Кроме того, частью спектрально-массовой характеристики среды являются виды (SPEC) и смеси (SPECIES_MIXTURE), что не было учтнено в предыдущих версиях PCTT.
В рамках обновления версии PCTT 0.10+ была проведена большая аналитическая работа, в ходе которой выяснилось, что ни одна из этих мер: VISIBILITY, EXTINCTION COEFFICIENT, OPTICAL DENSITY, PATH OBSCURATION, ABSORPTION COEFFICIENT, INTEGRATED INTENSITY, RADIATION EMISSION, RADIATION ABSORPTION и TEMPERATURE – не подходит в качестве единственного и самостоятельного параметра, воздействующего на тепловой и дымовой пожарный извещатель.
Логика вполне ясна. FDS предоставляет набор инструментов для моделирования пожара и измерения величин, однако не обязан присваивать, например, мере EXTINCTION COEFFICIENT все свойства, обуславливающие прямое отношение к пожарным извещателям или спринклерам.
В ходе анализа выяснилось, что установление мер VISIBILITY, EXTINCTION COEFFICIENT, OPTICAL DENSITY, PATH OBSCURATION и ABSORPTION COEFFICIENT в качестве самостоятельных параметров, воздействующих на дымовой пожарный извещатель, являет ошибку по меньшей мере
Под шагом дискретизации следует понимать не размер ячейки, а буквально линейный вычислительный шаг, т.к. в FDS от размера ячейки зависит не только шаг дискретизации, но и порядок вычислений.
Учитывая, что 7.6 секунд в контексте времени начала эвакуации, это серьёзное подспорье, брать единственную меру в качестве параметра, воздействующего на пожарный извещатель, – является системным допущением, нежели компромиссом. Однако, для многих пожарных специалистов, занимающихся расчетами пожарных рисков, подобного рода допужения являются – непримиримыми.
В связи с этим в версии PCTT 0.10+ добавлен алгоритм, добавляющий отдельный вид для заданного набора точек, в каждой из которых измеряется параметр, воздействующий на пожарный извещатель.
PCTT теперь добавляет &SPEC для каждого набора &DEVC:
&SPEC ID='FSOOT' SPEC_ID(1:2)='WATER VAPOR','SOOT' VOLUME_FRACTION(1:2)=0.28,0.72/
&DEVC ID='DEVC_X1Y1_MESH_1' QUANTITY='VISIBILITY' SPEC_ID='AIR' XYZ=-22.75,-6.0,2.56, SETPOINT=0.2, TRIP_DIRECTION=-1/Пороговое значение VISIBILITY определяется через коэффициент экстинкции:
где
Для порога 0.023 Нп/м:
Для порога 0.2 дБ/м:
с одним важным уточнением:
было:
&DEVC ID='DEVC_X1Y1_MESH_1' QUANTITY='VISIBILITY' XYZ=-22.75,-6.0,2.56, SETPOINT=0.2, TRIP_DIRECTION=-1/стало:
&SPEC ID='AIR' BACKGROUND=.True. SPEC_ID(1:4)='OXYGEN','NITROGEN','WATER VAPOR','CARBON DIOXIDE' VOLUME_FRACTION(1:4)=0.198,0.752,0.0488,0.00037416/
&DEVC ID='DEVC_X1Y1_MESH_1' QUANTITY='VISIBILITY' SPEC_ID='AIR' XYZ=-22.75,-6.0,2.56, SETPOINT=0.2, TRIP_DIRECTION=-1/Тесты показали сопоставимую корреляцию с EXTINCTION COEFFICIENT и OBSCURATION.
EXTINCTION COEFFICIENT и OPTICAL DENSITY в FDS измеряются в одних единицах (м⁻¹). Разница лишь в том, что
OPTICAL DENSITYделится на 2.3 (ln(10)) для представления через десятичный логарифм.
Преобразование 0.2 дБ/м –> 1/м для подстановки во входной файл .fds осуществляется следующим образом:
Extinction Coefficient (K) в FDS – это линейный показатель ослабления в системе СИ. Он определяется через Закон Бугера – Ламберта – Бера:
-
$I$ – интенсивность излучения, прошедшего через среду; -
$I_0$ – исходная интенсивность излучения; -
$K$ – extinction coefficient ([K] = 1/м); -
$L$ – длина пути (м).
Децибел (дБ) и Непер (Нп) – это логарифмические относительные безразмерные единицы.
Ослабление сигнала в децибелах:
Ослабление сигнала в неперах:
Из Закона Бугера:
Подставляем в формулу для децибел:
Подставляем в формулу для непер:
Нас интересует ослабление на единицу длины. Разделим обе части на
Связь дБ/м и 1/м:
Связь Нп/м и 1/м:
Примечание:
Согласно междунарожному стандарту ISO 80000-3,
Формально:
где
Аргрумент натурального логарифма
В теории размерностей Нп называют когерентной производной единицей размерности
Г.Г. Филлипов "Теория размерностей и LTM-физика".
Свойство когерентности делает неперы чрезвычайно удобными для практической работы с FDS, так как Нм/м образует с размерностью 1/м метрическое тождество.
Поскольку единица измерения в FDS (м⁻¹) численно равна Нм/м, нам не нужно переводить из Нп/м в 1/м или обратно. Если в нормативном документе порог указан в Нп/м – мы просто копируем это числовое значение в параметр SETPOINT без каких-либо изменений.
Для сравнения, при работе с децибелами нам придётся выполнять деление на коэффициент 4.3429 (или умножение на 0.23026), что создаёт дополнительную возможность возникновения ошибки. С неперами эта проблема исчезает полностью – мы работаем с теми же числами, которые видим в методике, не утрачивая при этом физический смысл величины.
Именно поэтому, совершая выбор между двумя нормативными порогами (0.2 дБ/м и 0.023 Нп/м), целесообразнее ориентироваться на значение в неперах, не отступая от контекста моделирования пожара с помощью FDS. Это не только упрощает подготовку входных данных для моделирования, но и делает процесс верификации результатов более прозрачным, так как полученное из FDS значение коэффициента экстинкции в м⁻¹ можно напрямую сравнивать с порогом в Нп/м без промежуточных пересчётов.
В Методике МЧС №1140 приводятся два пороговых значения: 0.2 дБ/м и 0.023 Нп/м. Возникает вопрос: представляют ли они собой эквивалентные величины, записанные в разных единицах, или же это различные критерии?
Для ответа выполним последовательный пересчёт.
Связь между децибелами и обратными метрами определяется через коэффициент 4.3429, который возникает из соотношения десятичного и натурального логарифмов:
Применяя эту формулу к значению 0.2 дБ/м, получаем:
Для неперов ситуация принципиально иная. Поскольку непер определён через натуральный логарифм, а закон Бугера–Ламберта–Бера в FDS также использует натуральный логарифм, единицы Нп/м и м⁻¹ численно эквивалентны:
Сравнение являет принципиальную дифференциацию между единицами измерения. Величины 0.04605 м⁻¹ и 0.023 м⁻¹ отличаются более чем в два раза. Это означает, что 0.2 дБ/м и 0.023 Нп/м не являются эквивалентными порогами. Первый соответствует вдвое большей задымлённости, чем второй. Иными словами, извещатель с порогом 0.2 дБ/м сработает при более высокой концентрации дыма по сравнению с извещателем, настроенным на 0.023 Нп/м.
Выбор между этими значениями определяет чувствительность извещателя при обнаружении пожара.
В PCTT для EXTINCTION COEFFICIENT используется единица дБ/м (порог 0.04605), а для OPTICAL DENSITY – Нп/м (порог 0.023), что соответствует приложению 11 Методики 1140.
# Строки 500-530 Insert_DEVC.py
# Установка порога срабатывания и направления срабатывания в зависимости от параметра
if quantity == "VISIBILITY":
setpoint = 103.478 # MV=195.717
trip_direction = -1
elif quantity == "EXTINCTION COEFFICIENT":
setpoint = 0.04605
trip_direction = 1
elif quantity == "OPTICAL DENSITY":
setpoint = 0.023
trip_direction = 1
elif quantity == "TEMPERATURE":
setpoint = 68
trip_direction = 1По окончании моделирования пожара, PCTT вычисляет, в какой момент времени площадь области F достигла такого значения, что её эффективный диаметр (dэфф) стал больше нормативного расстояния между извещателями (L). Этот момент времени и есть tпор.
Вычисление tпор происходит следующим образом:
- В каждой точке расчетной области на высоте размещения пожарных измещателей (заданной пользователем) помещается точечный измеритель
&DEVC, реагирующий на параметр, воздействующий на пожарный извещатель (выбирается пользователем); - Далее пользователь запускает моделирование пожара и ждёт окончания. В процессе моделирования пожара измерители, размещенные в каждой точке расчетной области на заданной высоте либо достигают порогового значения, либо нет.
- В таблице
_devc.csvсодержатся пороговые величины для каждого момента времени и для каждой точки в области F. PCTT просто просматривает эту таблицу, фильтрует всеDEVC, непосредственно связанные с параметром, воздействующеим на извещатель, и подсчитывает, в скольких таких точках параметр, воздействующий на извещатель, достиг порогового значения. - Как только в определенный момент времени количество таких точек становится таким, что диаметр образованной ими площади стал больше или равен максимальному расстоянию между извещателями, PCTT фиксирует tпор и рисует график dэфф.
PCTT работает только в связке с утилитой Zmejka
| № п/п | Действие |
|---|---|
| 1 | Скачайте последнюю версию ZmejkaFDS в разделе Releases |
| 2 | Запустите ZmejkaFDS.exe. Нажмите "Выбрать .fds" и выберите файл сценария FDS |
| 3 | Во вкладке "Настройки" нажмите "Insert_DEVC". Откроется новое окно |
| 4 | В окне Insert_DEVC выберите параметр, воздействующий на пожарный извещатель и введите высоту помещения. Нажмите OK. Помните, что программа воспринимает дробные числа только с точкой (.) в качестве десятичного разделителя, то есть число 3,5 нужно вводить как 3.5 |
| 5 | В окне ZmejkaFDS вернитесь во вкладку "Главный экран". Вы увидите, что в поле с наименованием сценария появился постфикс _tout |
| 6 | Запустите моделирование пожара, нажав "Старт". После завершения моделирования в папке с указанным файлом сценария FDS будет находиться папка dэфф, а в ней файл формата CSV scenario_name_tout_devc.csv |
| 7 | Перейдите во вкладку "Настройки" и нажмите на кнопку "PCTT". Откроется новое окно. Если PCTT запущена через ZmejkaFDS, то все нужные параметры в полях подставятся автоматически |
| 8 | Нажмите на кнопку "Выбрать CSV". Выберите файл формата CSV scenario_name_tout_devc.csv. Нажмите "Расчитать" |
| 9 | Немного подождите, пока утилита анализирует данные, содержащиеся в файле. Время анализа зависит от объёма данных. После окончания утилита сохранит график в формате .png рядом с файлом проекта ".fnx" |
Альфа
- Утилита "PCTT" предоставляется "как есть".
- Актуальная версия утилиты доступна в разделе Releases, однако использовать утилиту в отрыве от Zmejka не рекомендуется.
- Файлы, каким-либо образом полученные не из текущего репозитория, несут потенциальную угрозу вашему ПК.
- Файл с расширением .exe, полученный из данного репозитория, имеет уникальную Хэш-сумму, позволяющую отличить оригинальную утилиту от подделки.
- Хэш-сумма обновляется только при обновлении версии утилиты и всегда доступна в конце файла README.md.
PCTT.exe - 2f85644d0bfeb7e332b328f13933ee3e
Insert_DEVC.exe - 665edaff58ac0fad34f6c1600d2536e3
