Числові методи прогнозу погоди: NWP
Прогноз погоди — це результат роботи програми, яка розв'язує ті самі рівняння гідродинаміки, розглянуті в статті про Нав'є-Стокса, на суперкомп'ютері, починаючи з мільйонів спостережень у реальному часі. Ось конвеєр від сирих даних до п'ятиденного прогнозу у вашому телефоні.
1. Від рівнянь до прогнозу
Маючи повний опис стану атмосфери просто зараз — кожне значення швидкості вітру, температури й вологості всюди — примітивні рівняння з нашої статті про Нав'є-Стокса в принципі кажуть, як цей стан еволюціонує в часі. Чисельний прогноз погоди (NWP) — це практика перетворення цього «в принципі» на реальне число на екрані: представлення атмосфери у вигляді мільярдів значень на сітці й просування їх у часі за допомогою комп'ютера, використовуючи дискретизовані версії цих рівнянь.
Сучасні глобальні моделі — Integrated Forecast System (IFS) ECMWF, Global Forecast System (GFS) NOAA, Unified Model британської Метеослужби — працюють із кроком сітки ~9-13 км та 100+ вертикальними рівнями, видаючи 10-денний прогноз менш ніж за дві години на спеціалізованих суперкомп'ютерах із десятками тисяч процесорних ядер.
2. Асиміляція даних: побудова початкового стану
Прогноз настільки хороший, наскільки хороша його відправна точка. Асиміляція даних поєднує мільйони різнорідних спостережень — супутникова радіація, дані з літаків, метеорологічні зонди, кораблі, буї, наземні станції, радари — з коротким прогнозом самої моделі, зробленим шість годин тому («фон»), щоб отримати найкращу можливу оцінку поточного стану атмосфери.
xb — фоновий прогноз, B — коваріація його похибки, yt — спостереження у момент t, H — «оператор спостереження», що переводить стан моделі в те, що виміряв би прилад, а R — коваріація похибки спостереження. Чотиривимірна варіаційна асиміляція (4D-Var) знаходить стан x, який найкраще узгоджується з фоном і з усіма спостереженнями одночасно у вікні 6-12 годин — величезна задача оптимізації в мільйонах вимірів, яка сама виконується на суперкомп'ютерах.
3. Сітки, роздільність та параметризація
Жодна сітка не може розв'язати все. Все, що менше приблизно подвоєного кроку сітки — окремі клітини гроз, невеликі купчасті хмари, турбулентні вихори прикордонного шару — має бути представлено статистично через схеми параметризації, а не змодельовано явно:
- Кучова конвекція: представляє сумарний ефект нагрівання/зволоження від нерозв'язаних гроз, використовуючи статистичний ансамбль ідеалізованих висхідних/низхідних потоків.
- Радіація: розв'язує спрощений радіаційний перенос для короткохвильових (сонячних) та довгохвильових (інфрачервоних) потоків крізь шари хмар і газу, оновлюючись кожні 1-3 години для економії обчислень.
- Мікрофізика: відстежує масові властивості (відношення суміші, концентрацію) хмарної води, дощу, льоду, снігу й крупи, а не окремі краплі.
- Прикордонний шар: вертикально перемішує імпульс, тепло й вологу в нижніх ~1-2 км, використовуючи вихрову дифузію або замикання на основі TKE.
Вища роздільність зменшує навантаження на параметризацію — кілометрові моделі, що явно вирішують конвекцію, безпосередньо розв'язують окремі висхідні потоки гроз замість їх параметризації, ціною приблизно у 1000 разів більше обчислень, ніж 10-кілометрова глобальна модель.
4. Інтегрування у часі та умова CFL
Явні схеми часового кроку обмежені умовою Куранта-Фрідріхса-Леві (CFL): інформація не повинна проходити більше однієї комірки сітки за часовий крок, інакше схема стає чисельно нестабільною й «вибухає».
Для сітки 10 км і струменевого потоку зі швидкістю 300 км/год наївна явна схема потребувала б Δt ≈ 2 хвилини. Оперативні моделі натомість використовують напівлагранжеву адвекцію (відстеження, звідки прийшла частинка, замість проштовхування значень через фіксовані комірки) у поєднанні з напівнеявним трактуванням швидких гравітаційних/звукових хвиль, що дозволяє Δt 10-15 хвилин без порушення стабільності — приблизно у 5-8 разів швидше, що зробило оперативне глобальне прогнозування обчислювально можливим у 1990-х.
5. Ансамблевий прогноз і хаос
Атмосфера — хаотична система: знамените відкриття Едварда Лоренца 1963 року показало, що крихітні відмінності у початкових умовах — його «ефект метелика» — зростають експоненційно й врешті-решт дають абсолютно різні прогнози. Оскільки справжній початковий стан ніколи не відомий ідеально (похибки спостережень, наближення асиміляції), один детерміністичний запуск моделі не може сказати, наскільки йому довіряти.
Ансамблевий прогноз вирішує цю проблему, запускаючи модель 20-50 разів з трохи різними початковими умовами (а іноді й трохи різними параметризаціями фізики), даючи розкид можливих результатів замість одного числа. Вузький розкид ансамблю означає високу довіру; широкий розкид — типовий після 7-10 днів — означає, що прогноз справді невизначений, а ймовірнісні продукти (наприклад, «70% ймовірності дощу») отримують просто підрахунком, скільки членів ансамблю дають дощ у цій точці.
6. Двотижнева межа передбачуваності
Робота Лоренца встановила, що навіть з ідеальною моделлю та майже ідеальними початковими умовами хаотичне зростання похибки накладає жорстку теоретичну межу на детерміністичну передбачуваність погоди приблизно у два тижні — за цією межею якість прогнозу сходиться до кліматології (довгострокових середніх умов) незалежно від обчислювальної потужності. Це принципово відрізняється від прогнозу клімату, який передбачає статистичні розподіли на десятиліття вперед, а не точний стан у конкретний день.
Навіть обмежені двотижневою межею хаосу, якість прогнозу всередині цього вікна продовжує покращуватись: кращі супутники та мережі спостережень, вища роздільність, кращі асиміляція даних і параметризації фізики збільшили «корисну» точність трьохденного прогнозу 1980-х до приблизно 5-6 днів сьогодні.
7. Псевдокод: цикл прогнозування
function runForecastCycle(observations, previousBackground):
// 1. Асиміляція даних: змішування фону + спостережень
analysis = fourDVar(previousBackground, observations)
// 2. Генерація ансамблю збурених початкових станів
ensemble = generatePerturbations(analysis, members=50)
for each member in ensemble:
for step in 1..N_STEPS:
// 3. Просування примітивних рівнянь на один крок
member = stepAtmosphere(member, dt=900) // 15 хв
// 4. Застосування підсіткових параметризацій
member = applyCumulusScheme(member)
member = applyRadiation(member)
member = applyMicrophysics(member)
// 5. Отримання ймовірнісного прогнозу з розкиду ансамблю
return summarizeEnsemble(ensemble)
🌊 Побачити споріднену модель рідини в дії
Симуляція Цунамі розв'язує рівняння мілкої води — простіший родич примітивних рівнянь, які використовують моделі NWP, і чудовий спосіб зрозуміти сітки та часові кроки у симуляції рідин.
Відкрити симуляцію →