Молекулярная динамика: газ и давление
Газ как множество частиц: давление рождается из ударов молекул о стенки.
Молекулярная динамика — симуляция вещества как набора частиц, движущихся по законам Ньютона; макроскопические величины (давление, температура) вычисляют как средние по частицам.
Микроскопический смысл давления
Что такое давление газа? В термодинамике это сила на единицу площади стенки. Но откуда берётся эта сила? Молекулярная динамика даёт ответ: давление — это суммарный поток ударов молекул о стенки. Каждая молекула, отскакивая от стенки, передаёт ей импульс 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 флуктуации велики, нужно усреднять по времени.
Итоги
- Молекулярная динамика моделирует вещество как частицы по Ньютону.
- Давление — поток импульса от ударов молекул о стенки.
- Температура — мера средней кинетической энергии частиц.
- Законы термодинамики выводятся как статистика движения многих частиц.