ГоловнаСтаттіФізика

Пожежа та Дим: Клітинний Автомат Горіння

Не потрібні диференціальні рівняння — достатньо кількох станів клітин і ймовірностей перевірки сусідів, щоб створити поширення вогню, дрейф диму та зміщення фронту полум’я під впливом вітру.

mysimulator teamОновлено — червень 2026≈ 7 хв читання▶ Відкрити симуляцію

Сім держав, без хімії горіння

Реальне горіння — це закорені система передачі тепла, швидкості хімічних реакцій та гідродинаміки — справді складна для розв’язання в реальному часі. Модель на основі клітинного автоматизму обходить усі ці проблеми, ніколи не розв’язуючи фізику підґрунту безпосередньо. Замість цього кожна клітина на сітці містить один із кількох дискретних станів — деревину, полум'я, попіл, диму, воду, стіну – і короткий набір локальних правил визначає, як ці стани змінюються з кроку на крок, виходячи лише з власного стану клітини та її сусідів. Візуальний результат схожий на вогонь, тому що правила були розроблені для відтворення якісних особливостей вогню, а не було жодного часу або швидкості реакції обчислено.

жива демонстрація · пов'язана симуляція● LIVE

Основний принцип поширення горіння

Кожен крок симуляції, кожна клітина деревини, що знаходиться поруч з принаймні однією вогняною клітиною, має шанс загорітися; вогняна клітина має шанс перетворитися на тліху та, зрештою, на попел; а клітини-тліху випромінюють тепло, тому можуть тимчасово запалювати сусідні клітини перед охолодженням. Це все є ймовірнісною версією простого правила підрахунку сусідів, подібним за духом до гри Конвея «Життя»:

Для кожної клітини c: Якщо клітина c – це ДЕРІВ’ЯНА та має вогняного сусіда: p_zapalo = base_rate * fuel_dryness(c) * wind_factor(c, wind_dir) Якщо випадкове число менше p_zapalo: c → ВІГНЯ Якщо клітина c – це ВІГНЯ: Якщо випадкове число менше burnout_rate: c → ТЛІХУ Якщо клітина c – це ТЛІХУ: Якщо випадкове число менше cool_rate: c → ПОПЕЛ Якщо клітина c – це ВОДА: Клітина c залишається ВОДОЮ назавжди (ймовірність займання завжди 0) Дим виробляється окремо: вогняні та тліючі клітини виділяють частинки диму, які дрейфують, дотримуючись спрощеного правила адивекції, ухилене від справжнього розрахунку потоку рідини, з урахуванням напрямку вітру та згасаючими з часом — візуально переконливо без запуску фактичного розв’язку для рідинної динаміки.

for each cell c:
  if c is WOOD and has a burning neighbour:
      p_ignite = base_rate * fuel_dryness(c) * wind_factor(c, wind_dir)
      if random() < p_ignite:  c → FIRE
  if c is FIRE:
      if random() < burnout_rate:  c → EMBER
  if c is EMBER:
      if random() < cool_rate:     c → ASH
  if c is WATER:
      c stays WATER forever  // ignition probability is always 0

Чому має значення вітер

У реальних пожежах вітер виконує дві функції: він нахиляє полуміння у напрямку від несвіченого палива, попередньо нагріваючи його радіацією та прямим контактом ще до того, як фронт полуміння фізично прибуде, і він подає свіжий кисень в зону горіння, підтримуючи вищий рівень горіння. Клітинна модель захоплює загальний ефект за допомогою спрямованого множника на ймовірність запалювання – клітина з деревини, що знаходиться під вітром від пожежі, спалахує набагато легше, ніж ідентична клітина, що знаходиться в протилежному вітрі або над ним, що відтворює видовжені, вітро-розтягнуті фронти полуміння, які спостерігаються у реальних лісових пожежах без явного моделювання потоку повітря.

Вогнезахисні лінії та де модель відхиляється від реалізму

Клітинах води та стін не існує ймовірності займання, незалежно від того, скільки сусідніх клітин горить, що забезпечує чистий спосіб перевірки, як річка, дорога або очищена лінія вогнезахисту зупиняє поширення полум’я — та сама логіка, яку використовують чесні рятувальники при просічанні конторіних ліній. Іскреннє обмеження моделі полягає в тому, що у неї немає справжнього температурного поля або радіального переносу тепла на відстань; кожна взаємодія відбувається між найближчими клітинами, тому такі ефекти, як дальне бачення (запалені тліти, що переносяться вітром для підпалювання палива далеко попереду основного вогню), потрібно додавати як додаткове правило, а не виникати природним чином з фізики, як це відбувається в повноцінних обчислювальних потокових моделях пожеж.

Часті запитання

Чи таким чином моделюється реальне поширення лісових пожеж?

Клітинні автомати описують справді існуючу та активно використовувану сім'ю моделей лісових пожеж, яка цінується своєю швидкістю для проведення багатьох сценаріїв швидко, хоча операційні пожежні частини часто поєднують їх із фізично-орієнтованими формулами розрахунку швидкості поширення, такими як модель Rothermel, щоб перетворити умови палива та вітру на більш реалістичні ймовірності для кожної клітинки.

Чому вітер робить поширення вогню швидшим у одному напрямку?

Вітер нахиляє полумінь до незгорілого палива вниз за вітром, попередньо нагріваючи його безпосереднім контактом і радіацією перед тим, як пожежа фізично досягне його, а також він забезпечує свіжим киснем реакційну зону. У клітинній моделі це відображається шляхом підвищення ймовірності займання для клітинок у напрямку вниз за вітром відносно клітинок вгору або збоку від вітру.

Чому вода гасить вогонь у симуляції, але не просто стоїть пасивно?

Клітинка з водою має нульову ймовірність займання незалежно від того, скільки сусідніх клітинок горить, тому вона діє як жорсткий протипожежний бар'єр — що відповідає реальній пожежній роботі, яка або видаляє паливо (пожежну лінію), або використовує воду для охолодження матеріалу нижче його температури займання.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Fire and Smoke і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Fire and Smoke

Що ви знайшли?

Додати кроки відтворення (опційно)