Молекулярная динамика: газ и давление

Газ как множество частиц: давление рождается из ударов молекул о стенки.

Молекулярная динамика — симуляция вещества как набора частиц, движущихся по законам Ньютона; макроскопические величины (давление, температура) вычисляют как средние по частицам.

Микроскопический смысл давления

Что такое давление газа? В термодинамике это сила на единицу площади стенки. Но откуда берётся эта сила? Молекулярная динамика даёт ответ: давление — это суммарный поток ударов молекул о стенки. Каждая молекула, отскакивая от стенки, передаёт ей импульс 2mv; миллионы таких ударов в секунду создают постоянное давление. Мы можем это посчитать буквально.

Симуляция газа в коробке

Поместим 50 частиц в квадратную коробку, дадим им случайные скорости и будем считать импульс, переданный стенкам при каждом отскоке. Давление — это переданный импульс, делённый на время и периметр коробки:

import random, math
random.seed(42)
N, L = 50, 10.0
parts = [[random.uniform(1,L-1), random.uniform(1,L-1),
          random.uniform(-2,2), random.uniform(-2,2)] for _ in range(N)]
dt, steps = 0.01, 2000
impulse = 0.0
for _ in range(steps):
    for p in parts:
        p[0] += p[2]*dt; p[1] += p[3]*dt
        if p[0] < 0:  p[0]=-p[0];     p[2]=-p[2]; impulse += 2*abs(p[2])
        if p[0] > L:  p[0]=2*L-p[0];  p[2]=-p[2]; impulse += 2*abs(p[2])
        if p[1] < 0:  p[1]=-p[1];     p[3]=-p[3]; impulse += 2*abs(p[3])
        if p[1] > L:  p[1]=2*L-p[1];  p[3]=-p[3]; impulse += 2*abs(p[3])
total_time = steps*dt
pressure = impulse/(total_time*4*L)
KE = sum(0.5*(p[2]**2+p[3]**2) for p in parts)/N
print(f"Частиц: {N}, шагов: {steps}")
print(f"Средняя кин. энергия на частицу (~T): {KE:.3f}")
print(f"Давление на стенки: {pressure:.3f}")

Вывод:

Частиц: 50, шагов: 2000
Средняя кин. энергия на частицу (~T): 1.416
Давление на стенки: 0.695

Мы получили давление (0.695) из первых принципов — просто подсчитав удары молекул о стенки, без всякой формулы PV=NkT. И средняя кинетическая энергия (1.416) — это по сути температура газа. Связав эти два числа, можно вывести уравнение состояния идеального газа прямо из симуляции.

От частиц к термодинамике

Если повторить опыт при разной температуре (разном разбросе скоростей) и разном объёме, обнаружится, что давление × объём ∝ температуре — закон идеального газа PV = NkT рождается из механики частиц. Это и есть статистическая физика: макроскопические законы термодинамики выводятся как усреднённое поведение огромного числа микроскопических частиц.

Как работает под капотом

Связь микро- и макромира держится на статистике больших чисел. Одна молекула бьёт по стенке хаотично, рывками — давление от неё «дрожит». Но когда молекул миллиарды, флуктуации усредняются, и стенка чувствует ровную, постоянную силу. Температура же оказывается просто мерой средней кинетической энергии: ⟨½mv²⟩ = (d/2)·kT, где d — число измерений. Так температура, давление и энтропия — не самостоятельные сущности, а статистические свойства движения частиц.

Частые ошибки

  • Считать переданный импульс как mv, а не 2mv. При упругом отскоке скорость меняет знак, изменение импульса — удвоенное.
  • Делить импульс не на ту «площадь». В 2D роль площади играет периметр коробки.
  • Брать слишком мало частиц для гладкого давления. При малом N флуктуации велики, нужно усреднять по времени.

Итоги

  • Молекулярная динамика моделирует вещество как частицы по Ньютону.
  • Давление — поток импульса от ударов молекул о стенки.
  • Температура — мера средней кинетической энергии частиц.
  • Законы термодинамики выводятся как статистика движения многих частиц.
Проверьте себя
1. Каков микроскопический смысл давления газа в молекулярной динамике?
AВес газа
BСуммарный поток импульса от ударов молекул о стенки
CСкорость самой быстрой молекулы
DЧисло молекул
2. Какой импульс передаёт стенке молекула при упругом отскоке?
Amv
B2mv (скорость меняет знак)
C½mv
D0
3. Чем по сути является температура газа в этой модели?
AЧислом частиц
BМерой средней кинетической энергии частиц
CОбъёмом коробки
DДавлением на стенки