Skip to content

Latest commit

 

History

142 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PCTT - Plot CSV Time Threshold

Язык: Python

Интерфейс: Tkinter / PyQt6

Особенности и описание работы утилиты

Утилита расчитывает честное значение tпор тремя разными способами, отображает на графике значения параметра, воздействующего на пожарный извещатель во всех точках области F и определяет dэфф.

Начиная с версии 0.3.1 работает только в связке с утилитой Zmejka. При этом утилиту PCTT можно легко адаптировать под телеграм-бота.

Метод

  1. Пользователь указывает путь к файлу сценария FDS (.fds), вводит запрашиваемые данные, выбирает параметр, воздействующий на пожарный извещатель;
  2. В каждой точке расчётной области, на высоте размещения пожарных извещателей, добавляется регистратор (измеритель) этого параметра с определённым паттерном в названии (DEVC_XnYm_MESH_N), указывается пороговое значение, присваиваемое каждому регистратору (измерителю). Пороговое значение определяется строго по Методике;
  3. Далее пользователь нажимает "Старт" и ожидает окончания моделирования пожара;
  4. FDS расчитывает значение параметра в каждой точке расчётной области F. Количество точек в области F зависит от размера ячейки;
  5. После этого пользователь запускает утилиту PCTT, вновь указывает Hпом (высоту помещения с очагом пожара), Cs (размер ячейки) и путь к результатам расчёта "_devc.csv";
  6. Утилита очищает таблицу от лишних &DEVC, преобразует научную нотацию записей в обыкновенный математический вид, далее ищет строку, в которой количество ячеек, значение в каждой из которых превышает (в случае с параметром VISIBILITY не превышает) пороговое, превышает количество точек Cc, в области F, необходимое для получения такой площади области F, при которой значение эффективного диаметра dэфф будет больше или равно нормативному расстоянию между пожарными извещателями. При этом нормативное расстояние между извещателями определяется по формуле $$\text{L} = \text{R} \sqrt{2}$$
  7. Таким образом, программа расчитывает 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 (сажа). По умолчанию эти величины рассчитываются для сажи как основного поглотителя видимого света при пожаре.

К вопросу о мере VISIBILITY

До версии 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 в качестве самостоятельных параметров, воздействующих на дымовой пожарный извещатель, являет ошибку по меньшей мере $\approx1..11$%, которая на дистанции в 100 секунд моделирования стремительно дисперсирует до 7.6 секунд с поправкой на шаг дискретизации. Это означает, что к 200-й секунде ошибка составит до 12 секунд, а к 300-й секунде – до 25 секунд с поправкой на шаг дискретизации.

Под шагом дискретизации следует понимать не размер ячейки, а буквально линейный вычислительный шаг, т.к. в 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 определяется через коэффициент экстинкции:

$$V_{\text{SETPOINT}} = \frac{C}{K_{\text{threshold}}}$$

где $C = 2.38$ (из Методики МЧС 1140), а $K_{\text{threshold}}$ – пороговый коэффициент экстинкции.

Для порога 0.023 Нп/м: $$V_{\text{SETPOINT}} = \frac{2.38}{0.023} \approx \textbf{103.478 м}$$

Для порога 0.2 дБ/м: $$V_{\text{SETPOINT}} = \frac{2.38}{0.04605} \approx \textbf{51.68 м}$$

с одним важным уточнением:

было:

&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 осуществляется следующим образом: $$K_{\text{SETPOINT}} [\text{м}^{-1}] = \frac{\text{Порог} [\text{дБ/м}]}{10 \cdot \log_{10}(e)} \approx \textbf{0.04605 м}^{-1}$$

Extinction Coefficient (K) в FDS – это линейный показатель ослабления в системе СИ. Он определяется через Закон Бугера – Ламберта – Бера: $$I / I_0 = \exp(-K \cdot L)$$ где:

  • $I$ – интенсивность излучения, прошедшего через среду;
  • $I_0$ – исходная интенсивность излучения;
  • $K$ – extinction coefficient ([K] = 1/м);
  • $L$ – длина пути (м).

Эквивалентность размерностей 1/м и Нп/м

Децибел (дБ) и Непер (Нп) – это логарифмические относительные безразмерные единицы.

Ослабление сигнала в децибелах: $$A_{\text{дБ}} = 10 \cdot \log_{10}(I_0 / I)$$

Ослабление сигнала в неперах: $$A_{\text{Нп}} = \ln(I_0 / I)$$

Из Закона Бугера: $I_0 / I = \exp(K \cdot L)$

Подставляем в формулу для децибел: $$A_{\text{дБ}} = 10 \cdot \log_{10}(\exp(K \cdot L)) = 10 \cdot \log_{10}(e) \cdot K \cdot L \approx 4.3429 \cdot K \cdot L$$

Подставляем в формулу для непер: $$A_{\text{Нп}} = \ln(\exp(K \cdot L)) = K \cdot L$$

Нас интересует ослабление на единицу длины. Разделим обе части на $L$:

Связь дБ/м и 1/м: $$K [\text{м}^{-1}] = \frac{A_{\text{дБ}} / L [\text{дБ/м}]}{4.3429} \approx (A_{\text{дБ}} / L) \cdot 0.23026$$

Связь Нп/м и 1/м: $$K [\text{м}^{-1}] = A_{\text{Нп}} / L [\text{Нп/м}]$$

Примечание: $1 \text{ м}^{-1} = 1 \text{ Нп/м}$ (1/м и Нп/м эквивалентны друг другу).

Согласно междунарожному стандарту ISO 80000-3, $\text{Нп}$ является единицей логарифмического отношения двух величин одного рода.

Формально: ${L} = \ln\left(\frac{X_{1}}{X_{2}}\right) \hspace{2mm} \text{Нп}$

где $X_{1}$ и $X_{2}$ – значения полевых величин, например, амплитуды напряжения, звукового давления или амплитуды волновой функции.

Аргрумент натурального логарифма $\ln(k)$ определен только для безразмерного числа ${k}$. Следовательно, величина ${L}$ является чисто математическим числом, характеризующим степень ослабления или усиления (чего-то).

В теории размерностей Нп называют когерентной производной единицей размерности ${1}$ (безразмерная)

Г.Г. Филлипов "Теория размерностей и LTM-физика".

Свойство когерентности делает неперы чрезвычайно удобными для практической работы с FDS, так как Нм/м образует с размерностью 1/м метрическое тождество.

Поскольку единица измерения в FDS (м⁻¹) численно равна Нм/м, нам не нужно переводить из Нп/м в 1/м или обратно. Если в нормативном документе порог указан в Нп/м – мы просто копируем это числовое значение в параметр SETPOINT без каких-либо изменений.

Для сравнения, при работе с децибелами нам придётся выполнять деление на коэффициент 4.3429 (или умножение на 0.23026), что создаёт дополнительную возможность возникновения ошибки. С неперами эта проблема исчезает полностью – мы работаем с теми же числами, которые видим в методике, не утрачивая при этом физический смысл величины.

Именно поэтому, совершая выбор между двумя нормативными порогами (0.2 дБ/м и 0.023 Нп/м), целесообразнее ориентироваться на значение в неперах, не отступая от контекста моделирования пожара с помощью FDS. Это не только упрощает подготовку входных данных для моделирования, но и делает процесс верификации результатов более прозрачным, так как полученное из FDS значение коэффициента экстинкции в м⁻¹ можно напрямую сравнивать с порогом в Нп/м без промежуточных пересчётов.

Нп <--> 1/м <--> дБ

В Методике МЧС №1140 приводятся два пороговых значения: 0.2 дБ/м и 0.023 Нп/м. Возникает вопрос: представляют ли они собой эквивалентные величины, записанные в разных единицах, или же это различные критерии?

Для ответа выполним последовательный пересчёт.

Связь между децибелами и обратными метрами определяется через коэффициент 4.3429, который возникает из соотношения десятичного и натурального логарифмов:

$$K [\text{м}^{-1}] = \frac{\text{Порог} [\text{дБ/м}]}{10 \cdot \log_{10}(e)} \approx \frac{\text{Порог} [\text{дБ/м}]}{4.3429}$$

Применяя эту формулу к значению 0.2 дБ/м, получаем: $$K = \frac{0.2}{4.3429} \approx 0.04605 \text{ м}^{-1}$$

Для неперов ситуация принципиально иная. Поскольку непер определён через натуральный логарифм, а закон Бугера–Ламберта–Бера в FDS также использует натуральный логарифм, единицы Нп/м и м⁻¹ численно эквивалентны:

$$K [\text{м}^{-1}] = \text{Порог} [\text{Нп/м}]$$ Следовательно, 0.023 Нп/м соответствуют 0.023 м⁻¹ без каких-либо дополнительных преобразований.

Сравнение являет принципиальную дифференциацию между единицами измерения. Величины 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

По окончании моделирования пожара, PCTT вычисляет, в какой момент времени площадь области F достигла такого значения, что её эффективный диаметр (dэфф) стал больше нормативного расстояния между извещателями (L). Этот момент времени и есть tпор.

Вычисление tпор происходит следующим образом:

  1. В каждой точке расчетной области на высоте размещения пожарных измещателей (заданной пользователем) помещается точечный измеритель &DEVC, реагирующий на параметр, воздействующий на пожарный извещатель (выбирается пользователем);
  2. Далее пользователь запускает моделирование пожара и ждёт окончания. В процессе моделирования пожара измерители, размещенные в каждой точке расчетной области на заданной высоте либо достигают порогового значения, либо нет.
  3. В таблице _devc.csv содержатся пороговые величины для каждого момента времени и для каждой точки в области F. PCTT просто просматривает эту таблицу, фильтрует все DEVC, непосредственно связанные с параметром, воздействующеим на извещатель, и подсчитывает, в скольких таких точках параметр, воздействующий на извещатель, достиг порогового значения.
  4. Как только в определенный момент времени количество таких точек становится таким, что диаметр образованной ими площади стал больше или равен максимальному расстоянию между извещателями, PCTT фиксирует tпор и рисует график dэфф.

firegoaway_pctt_demo_gif-min

Поддерживаемые версии FDS

FDS 6.10.1 FDS 6.9.1 FDS 6.9.0 FDS 6.8.0

Как установить и пользоваться

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

About

Утилита вычисляет честное значение tпор тремя разными способами, отображает на графике значения параметра, воздействующего на ИП ДОТ во всех точках области F и определяет dэфф

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages