Дисклеймер: Все сведения в этой статье не являются засекреченными, взяты из открытых источников [14] и не представляют собой государственной и военной тайны. Автор не имеет доступа к каким-либо секретным документам или разработкам. Любой желающий может самостоятельно сделать аналогичную симуляцию. Математическая модель намеренно упрощена и не учитывает некоторые факторы (перенос излучения, ионизацию, неоднородность атмосферы и т.п.). Автор не является профессиональным физиком-ядерщиком. Ничего опасного для жизни или здоровья человека, либо запрещённого российским законодательством в данной статье нет. Подобные симуляции можно найти в интернете в открытом доступе. Все исторические и политические факты, приведённые в данной статье, общеизвестны и открыты. Мы не добавляем интерпретаций и не делаем политических выводов.

Автор придерживается нейтральной позиции, ни на что не намекает и ни к чему не призывает!

Моделировать ядерный взрыв на компьютере звучит как задача из фантастического фильма, но на деле это классический пример автомодельного решения в газовой динамике. Модель Седова-Тейлора даёт простую формулу для радиуса ударной волны, а дальше всё упирается в правильную сетку и численную устойчивость. Это классическая задача из области атомной физики и механики сплошной среды.

Атомная физика
Атомная физика

Симуляцию мы будем писать для воздушного взрыва (для подземного математическая модель будет слишком сложной).

Аккуратно выпишем основные уравнения нашей математической модели (они не являются засекреченными, есть в открытых источниках [14] и не представляют государственной тайны):

Сначала мы будем определять энергию взрыва в тротиловом эквиваленте.

Стоит добавить, что при взрыве она распределяется примерно так:

  • ~50% — ударная волна

  • ~35% — тепловое излучение

  • ~15% — проникающая радиация и радиоактивные осадки

Они вычисляются по формулам:

E = \eta M \frac{\Delta m}{m_{\text{ядра}}} c^2\quad 1\ \text{кт ТНТ} = 4{,}184 \times 10^{12}\ \text{Дж}

То есть при взрыве 1 килотонны тротила выделится порядка 4,2 триллиона джоулей энергии. Это поистине колоссальное количество. Конечно, сейчас человечество научилось использовать эту энергию в мирных целях (атомные электростанции снабжают наши города электричеством и теплом), но изначально все сверхдержавы (СССР и США) в первую очередь руководствовались милитаристскими (то есть военными) целями.

Историческая справка:

Первая ядерная бомба была разработана в США в 1945 году (под самый конец Второй мировой войны) в рамках Манхэттенского проекта под кодовым названием «Штучка» (Gadget). Уже 16 июля 1945 года на полигоне Аламогордо в штате Нью-Мексико (США) произошло первое в истории испытание ядерного оружия. Мощность взрыва составила около 19–21 килотонны тротила. Источник:[11]

Общеизвестным фактом является то, что американцы впервые в истории и применили атомное оружие в военных целях (и больше в мировой истории случаев прямого применения боевого ЯО не было и, надеюсь, не будет никогда). В результате бомбардировок США в августе 1945 года пострадали японские города:

  • 6 августа бомбардировщик B-29 «Enola Gay» (под командованием полковника Пола Тиббетса) сбросил на Хиросиму атомную бомбу «Little Boy» («Малыш»). Мощность взрыва оценивают примерно в 13–18 килотонн тротила.

  • 9 августа бомбардировщик B-29 «Bockscar» (пилот Чарльз Суини) сбросил на Нагасаки плутониевую бомбу «Fat Man» («Толстяк»). Её мощность составляла около 19–21 килотонны тротила.

  • Источник:[12]

Эти бомбардировки, по мнению ряда историков, были абсолютно избыточными (часть из них считала, что с учётом неизбежности начала Маньчжурской операции СССР Япония и так стояла на грани поражения). Любой грамотный юрист скажет, что по современным нормам международного гуманитарного права такие действия квалифицировались бы как грубое правонарушение и военное преступление (оружие массового уничтожения было применено не против военных объектов, а против обычных и мирных городов), однако в 1945 году соответствующие правовые нормы ещё не были кодифицированы (Женевская конвенция о защите гражданского населения принята в 1949 году). Среди основных причин применения ядерного оружия рядом историков называется и стремление США продемонстрировать свой военный потенциал всему миру, и особенно СССР — будущему противнику в Холодной войне.

Последствия бомбардировок печальны:

В результате двух взрывов мгновенно погибли более 80 тысяч человек, к концу 1945 года общее число погибших, включая также онкологические заболевания и лучевую болезнь, составило от 90 до 166 тысяч человек в Хиросиме и от 60 до 80 тысяч человек — в Нагасаки.

Источник:[12]

СССР не сидел сложа руки: проигрыш ядерной гонки мог привести к новой мировой войне. Поэтому создание собственного ЯО для СССР стало вопросом стратегической безопасности.

Усилиями советских инженеров и учёных в 1949 году была создана и испытана первая советская ядерная бомба РДС-1. Советская разведка через Клауса Фукса (впоследствии он был за это осуждён в Великобритании) и других агентов получила существенную информацию о конструкции американской атомной бомбы «Толстяк», что ускорило работу. Её испытали на Семипалатинском полигоне.

Мощность бомбы составила более 20 кт. Металлическая 37-метровая башня (по другим источникам 30-метровая), на которой была установлена бомба, была уничтожена полностью, на её месте образовалась воронка диаметром 3 м и глубиной 1,5 м, покрытая оплавленным стеклоподобным веществом.

Испытание ядерной бомбы удивило западные страны. Американская разведка предполагала, что Советский Союз сможет создать бомбу не раньше 1953 года, в то время как британская разведка давала срок до 1954 года. Заявление Трумэна о наличии у СССР ядерного оружия стало поворотной точкой в Холодной войне, которая только-только началась, и дало начало ядерной гонке

Источник:[13]

Параллельно развивался и мирный атом: в 1942 году Энрико Ферми запустил первый ядерный реактор (Chicago Pile‑1), а в 1954 году в Обнинске (СССР) заработала первая в мире атомная электростанция.

После длинной исторической справки продолжим писать уравнения, описывающие взрыв:

Согласно модели Седова-Тейлора (источник: [14]) радиус фронта ударной волны определяется по формуле:

R(t) = \beta(\gamma) \left( \frac{E}{\rho_0} \right)^{1/5} t^{2/5}, \quad \beta(1{,}4) \approx 1{,}033

где E — энергия взрыва, t — время, плотность воздуха ρ0​= 1,225 кг/м³.

Эту формулу независимо вывели три учёных: Леонид Седов (СССР, опубликовал в 1946 году), Джон фон Нейман (США, 1947) и Джеффри Тейлор (Великобритания). Тейлор выполнил свою работу ещё в 1941 году, но она была засекречена и вышла в свет только в 1950-м.

Условиями применимости этой модели являются:

  1. Сильная ударная волна (Давление за фронтом должно быть много больше атмосферного).

  2. Точечный взрыв (Размер заряда должен быть много меньше текущего радиуса волны).

  3. Идеальный газ (Среда — идеальный газ с постоянным показателем адиабаты γ=1,4 для воздуха).

  4. Однородная среда (Плотность ρ0​ постоянна. Реальная атмосфера имеет градиент плотности по высоте).

  5. Сферическая симметрия (Идеальная модель — точечный взрыв в неограниченной однородной среде).

    Для удобства занесём их в таблицу:

Условие

Когда выполняется

Когда ломается

Сильная волна

R≪(E/P0​)^1/3

Для 20 кт: после ~1 км

Точечный источник

R≫ rзаряда​

Первые ~10 мс

Идеальный газ

Температура ниже порога ионизации

Огненный шар >10 000 K

Однородная среда

Радиус меньше масштаба высоты атмосферы (~8 км)

Для мегатонн и выше

Сферическая симметрия

Воздушный взрыв

Наземный — нужен множитель ~1,15

Таблица 1. Условия корректности модели.

Скорость фронта вычисляется при помощи дифференцирования по времени предыдущей формулы:

U(t) = \frac{dR}{dt} = \frac{2}{5} \beta \left( \frac{E}{\rho_0} \right)^{1/5} t^{-3/5}       = \frac{2}{5} \frac{R(t)}{t}

Запишем условия Ренкина — Гюгонио (бесконечно сильная ударная волна). Для воздуха γ=1,4:

\frac{\rho_2}{\rho_0} = \frac{\gamma + 1}{\gamma - 1} = 6, \quad v_2 = \frac{2}{\gamma + 1} U, \quad p_2 = \frac{2}{\gamma + 1} \rho_0 U^2

Газодинамику можно описать уравнениями Эйлера для сферической симметрии.

Уравнение неразрывности:

\frac{\partial \rho}{\partial t} + \frac{1}{r^2} \frac{\partial}{\partial r} (r^2 \rho v) = 0

Уравнение движения:

\frac{\partial v}{\partial t} + v \frac{\partial v}{\partial r} + \frac{1}{\rho} \frac{\partial p}{\partial r} = 0

Условие адиабатичности:

\left( \frac{\partial}{\partial t} + v \frac{\partial}{\partial r} \right) \ln \frac{p}{\rho^\gamma} = 0

Для этой модели есть автомодельное решение:

Введём безразмерную переменную:

\xi = \frac{r}{R(t)}, \quad \xi \in [0, 1]

И будем искать профили в виде:

\rho(r,t) = \rho_0 G(\xi), \quad v(r,t) = \frac{r}{t} V(\xi), \quad p(r,t) = \rho_0 \frac{r^2}{t^2} Z(\xi)

Закон сохранения энергии:

E = \int_0^{R(t)} \left[ \frac{1}{2} \rho v^2 + \frac{p}{\gamma - 1} \right] 4\pi r^2\, dr = \text{const}

Однако для визуализации использовалась упрощённая аппроксимация (нормировка давления):

p_{\text{norm}}(\xi) = \max\left( 0, \min\left( 1, 0{,}7 (1 - \xi^3) + 0{,}3 \xi \right) \right), \quad \xi = \frac{r}{R}

Модель подъёма огненного шара (для «ножки» и шляпки гриба):

H_{\text{fireball}}(t) = v_{\text{rise}}(t) \cdot t, \quad v_{\text{rise}} = 100 \left( 1 + \frac{1}{1 + t} \right)

Радиус огненного шара вычислялся как:

R_{\text{fireball}}(t) = R_{\text{front}}(t) \cdot 0{,}3 + 20\ \text{м}

Таким образом, ключевые уравнения нашей математической модели записаны и можно приступать к реализации её средствами языка Python (код написан посредством вайбкодинга, то есть с помощью искусственного интеллекта):

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.patches import Circle, FancyBboxPatch
from scipy.ndimage import gaussian_filter

# ── Параметры взрыва ──
E = 4.184e13       # 10 кт ТНТ
rho0 = 1.225
gamma = 1.4
beta = 1.033
g = 9.81

def R_front(t):
    return beta * (E / rho0)**0.2 * t**0.4

# ── Параметры визуализации ──
fig, (ax_main, ax_side) = plt.subplots(
    1, 2, figsize=(14, 8), gridspec_kw={'width_ratios': [3, 1]},
    facecolor='#0a0a12'
)
fig.subplots_adjust(wspace=0.05)

# ── Класс облака частиц ──
class MushroomCloud:
    def __init__(self, num_particles=600):
        self.n = num_particles
        self.x = np.zeros(num_particles)
        self.y = np.zeros(num_particles)
        self.vx = np.zeros(num_particles)
        self.vy = np.zeros(num_particles)
        self.r = np.zeros(num_particles)       # размер частицы
        self.temp = np.zeros(num_particles)    # 0..1 — «температура» (цвет)
        self.life = np.zeros(num_particles)
        self.alive = np.zeros(num_particles, dtype=bool)
        self.idx = 0
        self.t = 0.0

    def emit_initial(self, t):
        """Выброс частиц из эпицентра в начальный момент"""
        R = R_front(t)
        for _ in range(self.n // 2):
            i = self.idx % self.n
            angle = np.random.uniform(0, 2 * np.pi)
            speed = np.random.uniform(20, 200)
            self.x[i] = np.random.uniform(-R*0.1, R*0.1)
            self.y[i] = np.random.uniform(-R*0.1, R*0.1)
            self.vx[i] = np.cos(angle) * speed * np.random.uniform(0.3, 1.0)
            self.vy[i] = np.cos(angle) * speed * np.random.uniform(0.3, 1.0) \
                        + np.random.uniform(50, 300)  # вверх
            self.r[i] = np.random.uniform(5, 20)
            self.temp[i] = np.random.uniform(0.7, 1.0)
            self.life[i] = np.random.uniform(3.0, 8.0)
            self.alive[i] = True
            self.idx += 1

    def emit_stem(self, t, dt):
        """Постоянный выброс частиц в ножку гриба (втягивание воздуха)"""
        R = R_front(t)
        fireball_y = self.get_fireball_y(t)
        n_emit = 12
        for _ in range(n_emit):
            i = self.idx % self.n
            # Частицы поднимаются вдоль ножки
            self.x[i] = np.random.normal(0, R * 0.08)
            self.y[i] = np.random.uniform(0, fireball_y * 0.3)
            self.vx[i] = np.random.normal(0, 15)
            self.vy[i] = np.random.uniform(40, 120) * (1 + fireball_y / 500)
            self.r[i] = np.random.uniform(8, 25)
            self.temp[i] = np.random.uniform(0.3, 0.6)
            self.life[i] = np.random.uniform(4.0, 10.0)
            self.alive[i] = True
            self.idx += 1

    def get_fireball_y(self, t):
        """Высота огненного шара — подъём за счёт плавучести"""
        # Огненный шар поднимается ~ v ~ t^(1/3) в первом приближении
        if t < 0.05:
            return R_front(t) * 0.3
        # Линейный подъём с замедлением
        v_rise = 100 * (1 + 1.0 / (1 + t))
        return min(v_rise * t * (1 - 0.03 * t), 800)

    def get_fireball_r(self, t):
        """Радиус огненного шара"""
        return R_front(t) * 0.3 + 20

    def update(self, dt, t):
        self.t = t
        alive = self.alive
        # Гравитация-сопротивление для тяжёлых частиц
        drag = 0.5 * dt
        buoyancy = 15 * dt  # подъём тёплого воздуха

        # Разлёт в стороны от центра (вихревое движение)
        r_horiz = np.abs(self.x[alive])
        side_push = np.where(r_horiz > 10, 3.0 / (r_horiz + 1), 0)

        self.vx[alive] += np.sign(self.x[alive]) * side_push * dt
        self.vx[alive] *= (1 - drag)
        self.vy[alive] += buoyancy * self.temp[alive]
        self.vy[alive] *= (1 - drag * 0.3)
        self.vy[alive] -= g * dt * (1 - self.temp[alive] * 0.8)  # остывшие частицы падают

        # Вихрь: частицы в шляпке закручиваются
        fireball_y = self.get_fireball_y(t)
        fireball_r = self.get_fireball_r(t)
        in_cap = (self.y[alive] > fireball_y - fireball_r) & \
                 (self.y[alive] < fireball_y + fireball_r * 1.5)
        if np.any(in_cap):
            idx_alive = np.where(alive)[0]
            cap_indices = idx_alive[in_cap]
            dx = self.x[cap_indices]
            dy = self.y[cap_indices] - fireball_y
            r_cap = np.sqrt(dx**2 + dy**2) + 1
            # Вращательное движение (вихрь)
            tangential = 30 * fireball_r / r_cap
            self.vx[cap_indices] += (-dy / r_cap) * tangential * dt
            self.vy[cap_indices] += (dx / r_cap) * tangential * dt * 0.3
            # Расширение шляпки
            self.vx[cap_indices] += (dx / r_cap) * 20 * dt

        self.x[alive] += self.vx[alive] * dt
        self.y[alive] += self.vy[alive] * dt
        self.temp[alive] -= dt * 0.08  # остывание
        self.temp[alive] = np.clip(self.temp[alive], 0, 1)
        self.life[alive] -= dt
        self.alive[self.alive & (self.life <= 0)] = False
        self.alive[self.alive & (self.temp < 0.01)] = False


# ── Земля ──
ground_y = 0
ground_height = 40

# ── Временная шкала ──
dt = 0.05
t_total = 1.0
frames = int(t_total / dt)
times = np.arange(0, t_total, dt)

cloud = MushroomCloud(num_particles=800)
cloud.emit_initial(0.001)

# ── Фоновое излучение (огненный шар) ──
def draw_fireball_glow(ax, t):
    fy = cloud.get_fireball_y(t)
    fr = cloud.get_fireball_r(t)
    if fr < 1:
        return
    for i in range(12):
        alpha = max(0.3 - i * 0.025, 0)
        r_i = fr * (1 + i * 0.25)
        color = (1.0, 0.4 + i * 0.03, 0.05 + i * 0.02, alpha)
        circle = Circle((0, fy), r_i, color=color, zorder=3)
        ax.add_patch(circle)
    # Ядро
    core_r = max(fr * 0.4, 1)
    core = Circle((0, fy), core_r, color=(1.0, 0.9, 0.7, 0.95), zorder=4)
    ax.add_patch(core)

# ── Рендер частиц ──
def render_particles(ax, cloud, t):
    alive = cloud.alive
    if not np.any(alive):
        return
    x = cloud.x[alive]
    y = cloud.y[alive]
    r = cloud.r[alive]
    temp = cloud.temp[alive]

    for i in range(len(x)):
        if temp[i] > 0.7:
            color = (1.0, 0.7 + 0.2 * temp[i], 0.2 + 0.3 * temp[i],
                     0.4 + 0.3 * temp[i])
        elif temp[i] > 0.4:
            color = (0.6 + 0.4 * temp[i], 0.5 + 0.2 * temp[i],
                     0.3 + 0.1 * temp[i], 0.3 + 0.2 * temp[i])
        else:
            gray = 0.3 + 0.3 * temp[i]
            color = (gray, gray * 0.95, gray * 0.9, 0.2 + 0.2 * temp[i])

        circle = Circle((x[i], y[i]), r[i], color=color, zorder=2)
        ax.add_patch(circle)


# ── Профиль давления (боковой график) ──
def draw_pressure_profile(ax, t):
    ax.clear()
    ax.set_facecolor('#0a0a12')
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_title('Профиль давления', color='white', fontsize=10, pad=8)

    R = R_front(t)
    if R < 1:
        return
    r_norm = np.linspace(0, 1.5, 200)
    xi = r_norm
    # Аппроксимация профиля давления Седова
    p = np.where(xi <= 1, np.clip(0.7 * (1 - xi**3) + 0.3 * xi, 0, 1), 0)
    p_smooth = gaussian_filter(p, sigma=3)

    # Цветовая заливка
    for i in range(len(r_norm) - 1):
        val = p_smooth[i]
        if val > 0.01:
            red = 0.9 + 0.1 * val
            green = 0.3 * val
            blue = 0.1 * val
            ax.fill_between([r_norm[i], r_norm[i+1]], [0, 0], [1, 1],
                           color=(red, green, blue, val * 0.8))

    ax.plot(r_norm, p_smooth, color='#ff6600', linewidth=2)
    ax.axvline(x=1.0, color='#ffeeaa', linewidth=1.5, linestyle='--', alpha=0.7)
    ax.text(1.02, 0.85, 'Фронт', color='#ffeeaa', fontsize=8)

    ax.text(0.05, 0.05,
            f't = {t:.2f} c\n'
            f'R = {R:.1f} м\n'
            f'v = {0.4 * R / t:.0f} м/с' if t > 0.001 else 't = 0',
            transform=ax.transAxes, color='white', fontsize=9,
            family='monospace', verticalalignment='bottom')

    for spine in ax.spines.values():
        spine.set_color('#333344')


# ── Главный кадр ──
def animate(frame):
    t = times[frame]

    # Обновление физики
    if frame > 0:
        cloud.emit_stem(t, dt)
    cloud.update(dt, t)

    # ── Главная панель ──
    ax_main.clear()
    ax_main.set_facecolor('#0a0a12')
    ax_main.set_aspect('equal')

    # Видимая область (камера следует за грибом)
    fireball_y = cloud.get_fireball_y(t)
    view_top = max(fireball_y + 250, 400)
    view_bottom = -ground_height
    view_span = view_top - view_bottom
    view_half = view_span / 2
    ax_main.set_xlim(-view_half, view_half)
    ax_main.set_ylim(view_bottom, view_top)
    ax_main.set_xticks([])
    ax_main.set_yticks([])

    # Небо (градиент)
    for i in range(50):
        y_frac = i / 50
        y_pos = view_bottom + y_frac * view_span
        shade = 0.02 + y_frac * 0.03
        ax_main.axhspan(y_pos, y_pos + view_span / 50,
                       color=(shade, shade * 0.8, shade * 1.2), zorder=0)

    # Земля
    ax_main.axhspan(view_bottom, 0, color='#1a1410', zorder=1)
    # Текстура земли
    for x_ground in np.linspace(-view_half, view_half, 40):
        h = np.random.uniform(2, 8)
        ax_main.plot([x_ground, x_ground], [0, h],
                    color='#2a2018', linewidth=1, zorder=1)

    # Кратер (тёмное пятно)
    crater_r = R_front(t) * 0.15 + 10
    crater = Circle((0, 0), crater_r, color='#0a0805', alpha=0.8, zorder=1)
    ax_main.add_patch(crater)

    # Огненный шар (свечение)
    if t < 3.0:
        draw_fireball_glow(ax_main, t)

    # Частицы гриба
    render_particles(ax_main, cloud, t)

    # Подпись
    ax_main.text(0.02, 0.02,
                f'E = {E/4.184e12:.0f} кт  |  t = {t:.1f} c  |  '
                f'H огн. шара = {fireball_y:.0f} м',
                transform=ax_main.transAxes, color='#aaaabb', fontsize=9,
                family='monospace', verticalalignment='bottom')
    ax_main.text(0.5, 0.97, 'Модель ядерного взрыва',
                transform=ax_main.transAxes, color='white', fontsize=14,
                ha='center', va='top', alpha=0.8)

    for spine in ax_main.spines.values():
        spine.set_color('#333344')

    # ── Боковая панель: профиль давления ──
    draw_pressure_profile(ax_side, t)

    return []


ani = animation.FuncAnimation(fig, animate, frames=frames,
                               interval=30, blit=False, repeat=True)

plt.tight_layout()
plt.show()

# ── Сохранение ──
ani.save('mushroom_cloud.gif', writer='pillow', fps=25, dpi=80)

Мощность взрыва задана пока относительно небольшой — всего 10 кт тротила. Результат работы программы — красивая анимация:

Взрыв мощностью 10 килотонн тротила
Взрыв мощностью 10 килотонн тротила

На картинке видно, как появляется и растёт жёлтый огненный шар, от эпицентра расходятся вокруг ударные волны, а также поднимаются огромные клубы оранжевого дыма (огненный вихрь).

Увеличим мощность бомбы в 2 раза (примерно такая по мощности в 1945 году была сброшена американцами на японский город Нагасаки):

Увеличили мощность в 2 раза
Увеличили мощность в 2 раза

Видно, что ударная волна стала мощнее, а огненный шар стал расти быстрее.

Чтобы убедиться, что наша упрощённая модель не «рисует красивые картинки», а действительно отражает физику, сравним её с реальными данными первого ядерного взрыва — испытанием «Тринити» (1945). Дж. Тейлор восстановил энергию взрыва именно по результатам 20 измерений роста огненного шара от времени. Ссылка на его оригинальную публикацию (она была рассекречена в 1950 году и на данный момент открыта для всех желающих) здесь.

График 1. Сравнение нашей модели с реальными данными.
График 1. Сравнение нашей модели с реальными данными.

Реальные данные взяты из оригинальной статьи Тейлора.

Построив логарифмический график зависимости радиуса от времени, Тейлор вывел формулу для огненного шара и показал, что вначале радиус растёт по степенному закону.

Делаем мощность 100 килотонн ТНТ. Результат —

Мощность 100 кт ТНТ
Мощность 100 кт ТНТ

Ударные волны стали распространяться почти мгновенно.

Теперь сделаем мощность 1 мегатонну. Это уже гигантская мощность — несколько таких бомб способны полностью разрушить город-миллионник.

Мощность 1 мегатонна ТНТ
Мощность 1 мегатонна ТНТ

Видно, как стремительно растёт огненный шар, уже в первую секунду достигая радиуса более одного километра. На фоне этого огненные вихри быстро рассеиваются в пространстве.

Небольшой исторический и культурный контекст — общеизвестный факт более чем 60-летней давности:

Самым мощным когда-либо испытанным человечеством ядерным оружием стала Царь-бомба (она получила прозвище «Кузькина мать», так её назвал, по распространённой версии, известный советский политик Никита Хрущёв в 1959 году, в эмоциональном разговоре с вице-президентом США Ричардом Никсоном).

«В нашем распоряжении имеются средства, которые будут иметь для вас тяжёлые последствия. Мы вам покажем кузькину мать!» — Никита Хрущёв (формулировка восстановлена по свидетельствам очевидцев; аудиозапись отсутствует).

Также широкое распространение получил эпизод, в котором якобы Никита Хрущёв во время выступления (оригинальное видео из архива) в ООН снял ботинок и стучал им по трибуне. Историки и политологи до сих пор спорят из-за деталей этого эпизода, а очевидцы противоречат друг другу. Поэтому мы при описании эпизода будем опираться на официальные и проверенные данные. Достоверно известно только, что легендарный ботинок лежал на столе перед советским лидером.

Ботинок на столе. Сгенерировано. Не является историческим документом.
Ботинок на столе. Сгенерировано. Не является историческим документом.

Данная фотография сгенерирована нейросетью (оригинальное фото низкого качества, поскольку снималось на плёнку 60-х годов и сохранилось в виде газетных сканов) и не претендует на историческую достоверность. Она не является историческим документом и служит исключительно для визуализации контекста. Но есть и подлинное фото (на котором ботинок (или туфля) лежит на столе перед Хрущёвым — именно оно и публиковалось в прессе), обнародованное в The New York Times после инцидента. Следует добавить, что ни одного подлинного кадра, где Хрущёв им стучит или размахивает, не существует. На видео выступления, взятого с официального сайта архива ООН, этого не запечатлено. Все видео или фотографии, на которых видно, что он якобы это делает, не имеют официально подтверждённого происхождения (актёрские постановки, фотомонтаж, реконструкции и т. д.). Громкий заголовок в газете NYT в вышеупомянутой статье — это стандартный медийный журналистский приём (сегодня это назвали бы кликбейтом), чтобы привлечь внимание массовой аудитории и общественности к инциденту.

Сама бомба была испытана в 1961 году. Её мощность составила 58,6 мегатонн тротила. Выставим в нашей симуляции именно такую мощность, чтобы проверить, как наша модель ведёт себя в экстремальных условиях. Результат:

Кузькина мать
Кузькина мать

Видно, как огненный шар уже в первую секунду раздулся до почти 6 километров (в реальности по данным SonicBomb до 6,5 км) в поперечнике и занял всё пространство, продолжая стремительно расти.

Вывод: в этой статье мы превратили классическую задачу газовой динамики в готовую анимацию на обычном ноутбуке. Решение Седова–Тейлора [14] дало нам радиус и скорость ударной волны, а простая эмпирическая модель — ножку и шляпку гриба.

Важно помнить про ограничения модели: мы не учитываем перенос излучения, ионизацию, химические реакции и неоднородность атмосферы — только газодинамику в приближении идеального газа. Это сознательный компромисс: он позволяет получить наглядную анимацию без суперкомпьютера и без тысяч строк кода. В целом, на малых масштабах модель точна, а на экстремальных (вроде Царь-бомбы) даёт некоторую погрешность.

Если вы хотите усложнить модель, логичные следующие шаги — добавить зависимость плотности от высоты, лучистый перенос и ионизацию. Код открыт для доработок и доступен любому желающему, заинтересованному тематикой ядерной физики.

Автор не имеет специального физико‑математического или исторического образования и не является профессиональным физиком-ядерщиком или историком.

Если такое дадут на ЕГЭ, это будет крах всей системы, я реально занервничал!

Литература и научные статьи по теме:

1.Седов Л.И. Методы подобия и размерности в механике. — М.: Наука, 1977 (8-е изд.). — 440 с.

2.Зельдович Я.Б., Райзер Ю.П. Физика ударных волн и высокотемпературных гидродинамических явлений. — М.: Физматлит, 2008 (3-е изд.).

3.Зельдович Я.Б., Компанеец А.С. Теория детонации. — М.: Гостехиздат, 1955. — 268 с. (переиздана URSS, 2024)

4.Забабахин Е.И. Некоторые вопросы газодинамики взрыва. — Снежинск: РФЯЦ-ВНИИТФ, 1997. — 203 с.

5.Самарский А.А. Теория разностных схем. — М.: Наука, 1989 (3-е изд.). — 616 с.

6.Самарский А.А. «Прямой расчет мощности взрыва» // История советского атомного проекта (40–50-е годы). — Дубна, 1997. Т. 1.

7.Адушкин В.В., Спивак А.А. «Особенности формирования воздушной ударной волны при ядерном взрыве» // Динамические процессы в геосферах. — 2024.

8.Чернов И.А. «Трактовка решения Седова как серии промежуточных асимптотик в течении от сильного взрыва» // Изв. вузов «ПНД». 2010. Т. 18, № 4.

9.Мордовец И.П. Физика ядерного взрыва (конспект лекций). — МГУ, НИИЯФ.

10.Физика ядерного взрыва. В 5 томах / под ред. В.М. Лоборева. — М.: Физматкнига, 2009.

11.https://ru.wikipedia.org/wiki/Манхэттенский_проект

12.https://ru.wikipedia.org/wiki/Атомные_бомбардировки_Хиросимы_и_Нагасаки

13.https://ru.wikipedia.org/wiki/РДС-1

14.https://en.wikipedia.org/wiki/Taylor–von_Neumann–Sedov_blast_wave

15.https://nukeblastsimulator.com/

16.Taylor, G. I. The Formation of a Blast Wave by a Very Intense Explosion. II. The Atomic Explosion of 1945. Proc. R. Soc. Lond. A, 201(1065), 175–186, 1950. DOI: 10.1098/rspa.1950.0050.

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