Стаття
Термодинаміка · ⏱ ~10 хв читання · Оновлено: 9 липня 2026

Теплообмін: числові методи скінченних різниць і скінченних елементів

Рівняння теплопровідності Фур'є має точний розв'язок лише для жменьки простих геометрій та граничних умов. Усе інше — радіатор із ребрами, кімната з вікном, металева пластина з гарячою плямою — розв'язується перетворенням неперервного диференціального рівняння в частинних похідних (PDE — рівняння, що повʼязує величину з її швидкістю зміни у просторі та часі) у сітку дискретних невідомих і покроковим просуванням у часі. Від того, як побудована ця сітка і як зроблено крок у часі, залежить, чи буде симуляція швидкою, точною — чи просто розлетиться в нескінченність.

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

1. Рівняння теплопровідності і навіщо його дискретизувати

Закон Фур'є стверджує, що тепловий потік пропорційний від'ємному градієнту температури, q = −k∇T. Разом із законом збереження енергії це дає рівняння дифузії тепла — параболічне диференціальне рівняння у частинних похідних:

∂T/∂t = α ∇²T α = k / (ρ c_p) — температуропровідність (м²/с) k = теплопровідність, ρ = густина, c_p = питома теплоємність

Аналітичні розв'язки існують для нескінченного стрижня, напівнескінченної пластини або простих розкладів у ряди Фур'є на прямокутниках із тривіальними граничними умовами. Реальний об'єкт — радіатор, кристал процесора, шибка вікна — має неправильну геометрію і змішані граничні умови, тож неперервне поле T(x,y,t) замінюють значеннями на дискретній сітці, а похідні — скінченними різницями (або, для неправильних форм, базисними функціями методу скінченних елементів).

2. Метод скінченних різниць: явна схема

Дискретизуємо простір сіткою з кроком Δx, а час — кроками Δt. Друга похідна за простором стає тришаблонним трафаретом, а похідна за часом — прямою різницею: явна схема (FTCS):

1D: T[i]^(n+1) = T[i]^n + r · (T[i+1]^n − 2T[i]^n + T[i−1]^n) r = α·Δt / Δx² (безрозмірне число дифузії) 2D (5-точковий трафарет): T[i,j]^(n+1) = T[i,j]^n + rx·(T[i+1,j] − 2T[i,j] + T[i−1,j]) + ry·(T[i,j+1] − 2T[i,j] + T[i,j−1])

Кожне нове значення залежить лише від старих — жодної системи рівнянь розв'язувати не потрібно, легко векторизувати, і саме так власна симуляція сайту «Рівняння теплопровідності 2D» рахує сітку 80×80 щокадру. Проблема — стійкість.

3. Стійкість: умова CFL / фон Неймана

Явна FTCS умовно стійка. Аналіз стійкості фон Неймана (розклад похибки у ряд Фур'є і перевірка, що коефіцієнт підсилення не перевищує 1) дає жорстке обмеження на крок часу:

1D: r = α·Δt/Δx² ≤ 1/2 2D: r ≤ 1/4 (rx + ry ≤ 1/2 для рівних кроків) 3D: r ≤ 1/6 Порушення — і кожна точка сітки коливається з наростаючою амплітудою, температура розходиться до ±∞ за кілька кадрів.

Зменшення Δx вдвічі

Стійкий Δt зменшується у 4 рази (2D), бо межа масштабується з Δx². Уточнення сітки для точності непомітно коштує у 4 рази більше кроків часу для покриття того самого змодельованого проміжку.

Симптом

Шаховий візерунок чергування гарячих і холодних значень, що зростає щокадру — ознака перевищеної межі CFL, а не фізичний баг.

Практичне рішення

Оберіть Δt = 0.9 × межа стійкості (невеликий запас), або перейдіть на безумовно стійку неявну схему (§4).

4. Неявна схема та схема Кранка-Ніколсона

Неявна схема (BTCS) обчислює просторовий трафарет на новому шарі часу, що вимагає розв'язку системи лінійних рівнянь на кожному кроці, але повністю знімає обмеження стійкості:

Неявна (BTCS): −r·T[i−1]^(n+1) + (1+2r)·T[i]^(n+1) − r·T[i+1]^(n+1) = T[i]^n → тридіагональна система, розв'язується алгоритмом Томаса за O(N) на крок Кранк-Ніколсон (середнє явної + неявної, 2-й порядок за часом): T[i]^(n+1) − (r/2)(T[i+1]−2T[i]+T[i−1])^(n+1) = T[i]^n + (r/2)(T[i+1]−2T[i]+T[i−1])^n

BTCS безумовно стійка при будь-якому Δt, але лише першого порядку точності за часом; Кранк-Ніколсон — другого порядку точності і теж безумовно стійка ціною розв'язку тридіагональної (1D) або стрічкової (2D, через ADI — метод змінних напрямків) системи на кожному кроці. Для 2D-сіток ADI розбиває один повний крок на два піввкроки, кожен з яких розв'язує дешеву тридіагональну систему вздовж однієї осі, що тримає вартість близькою до явної схеми, знімаючи при цьому обмеження CFL.

5. Метод скінченних елементів: основна ідея

FDM потребує регулярної сітки; метод скінченних елементів працює з довільною геометрією — L-подібним кронштейном, зубцем шестерні, кузовом авто — покриваючи область трикутниками (2D) або тетраедрами (3D) і представляючи температуру як кусково-лінійну функцію на сітці, зважену вузловими значеннями.

Слабка форма рівняння теплопровідності (метод Гальоркіна): ∫Ω φ_i (∂T/∂t) dΩ = −∫Ω k ∇φ_i · ∇T dΩ + граничні члени Дискретизовано: M (dT/dt) + K T = F M = матриця мас (з членів φ_i φ_j) K = матриця жорсткості (з членів ∇φ_i · ∇φ_j, та сама роль, що й трафарет FDM) F = вектор навантаження від границь/джерел

Після складання M і K є розрідженими матрицями, і похідна за часом усе одно обробляється явною, неявною чи схемою Кранка-Ніколсона, як у §2–4 — FEM змінює спосіб дискретизації простору, а не кроку в часі. Виграш у тому, що густину сітки можна варіювати локально (дрібнішу біля гострих кутів, грубішу у відкритих ділянках), чого рівномірна сітка FDM зробити без значної переробки не може.

6. Граничні умови на практиці

Діріхле (фіксована T)

Граничні вузли фіксуються на певному значенні щокроку — напр. стіна при 0 °C. Найпростіше реалізувати: перезаписати після оновлення.

Нейман (фіксований потік)

Ізольована границя: ∂T/∂n = 0, реалізується фіктивним вузлом, рівним дзеркальному сусіду, щоб через границю не проходило тепло.

Робін (конвективна)

Ньютонівське охолодження до навколишнього повітря: −k∂T/∂n = h(T − T_ambient). Поєднує поведінку Діріхле й Неймана залежно від h.

Періодична

Загортає останній стовпець назад до першого — корисно для симуляції нескінченного повторюваного візерунка на малій сітці.

7. Реалізація на JavaScript

// Явний розв'язувач FTCS для 2D рівняння теплопровідності з граничними умовами Діріхле
function stepHeat2D(T, next, nx, ny, alpha, dt, dx) {
  const r = alpha * dt / (dx * dx);
  if (r > 0.24) throw new Error(`Нестійко: r=${r.toFixed(3)} перевищує 0.25 (2D межа CFL)`);

  for (let j = 1; j < ny - 1; j++) {
    for (let i = 1; i < nx - 1; i++) {
      const idx = j * nx + i;
      const lap = T[idx + 1] + T[idx - 1] + T[idx + nx] + T[idx - nx] - 4 * T[idx];
      next[idx] = T[idx] + r * lap;
    }
  }
  // Граничні умови Діріхле: тримати краєві рядки/стовпці на попередньому значенні
  for (let i = 0; i < nx; i++) { next[i] = T[i]; next[(ny-1)*nx+i] = T[(ny-1)*nx+i]; }
  for (let j = 0; j < ny; j++) { next[j*nx] = T[j*nx]; next[j*nx+nx-1] = T[j*nx+nx-1]; }
  return next;
}

// Алгоритм Томаса — розв'язує тридіагональну систему за O(N), для 1D неявної/Кранка-Ніколсона
function thomasSolve(a, b, c, d) {
  const n = d.length;
  const cp = new Float64Array(n), dp = new Float64Array(n);
  cp[0] = c[0] / b[0]; dp[0] = d[0] / b[0];
  for (let i = 1; i < n; i++) {
    const m = b[i] - a[i] * cp[i-1];
    cp[i] = c[i] / m;
    dp[i] = (d[i] - a[i] * dp[i-1]) / m;
  }
  const x = new Float64Array(n);
  x[n-1] = dp[n-1];
  for (let i = n-2; i >= 0; i--) x[i] = dp[i] - cp[i] * x[i+1];
  return x;
}

8. Застосування та межі