Прогноз погоды своими руками

    Каждый из нас ругал синоптиков, когда оказывался под дождем, не имея в руках зонта. В топике я расскажу Вам как сделать прогноз погоды на основе модели WRF (Weather Research & Forecasting Model) на несколько суток вперед.

    Несколько слов о WRF

    WRF — это численная модель предсказания погоды, которая подходит как для прогнозирования состояния атмосферы, так и для научных исследований. Разрабатывается сообществом научных организаций США, в том числе Национальным центром атмосферы и океана, Национальным центром атмосферных исследований.
    Представляет собой систему модулей: модуль подготовки начальных и граничных данных (WRF Preprocessing System), собственно решающее ядро (Advanced Research WRF), модуль постпроцессинга (WRF Postprocessing System).
    Большая часть модели (собственно вся математика) реализована на языке fortran с использованием библиотеки MPI. На C написаны модули для работы с данными. Модель доступна в исходных кодах.
    Естественно модель потребляет огромное количество процессорного времени, и спроектирована для запуска на суперкомпьютерах, т. к. прогноз погоды — одна из сложнейших задач.

    Как собственно работает модель?

    Скачивается набор входных данных (текущее состояние атмосферы). Затем запускаетмя модуль препроцессинга, которые состоит из трех программ:
    1. geogrid.exe — обрабатывает статические данные (рельеф, типы почвы, гидрография);
    2. ungrib.exe — распаковывает начальные данные;
    3. metgrid.exe — интерполирует, полученные выше данные, в сетку модели.
    Затем стартует ядро модели, которые с помощью численных методов решает нелинейную систему дифференциальных уравнений в частных производных. Оно состоит из двух распараллеленых программ:
    1. real.exe — выполняет вертикальную интерполяцию входных данных;
    2. wrf.exe — собственно разрешающее ядро.
    Подробнее о математике модели можно прочитать здесь.
    Затем после завершения расчета мы получаем набор данных, т.е. прогноз состояния атмосферы на несколько суток вперед с дискретизацией в 1 час.
    Теперь необходимо обработать эти данные и построить слайды, на которые бы мы нанесли приземную температуру, ветер, давление и осадки. На самом деле wrf продуцирует большое число полей, но мы ограничимся только этими. Для этих целей воспользуемся программа wrfpost.exe из модуля постпроцессинга.

    Вычислительные ресурсы

    Если у Вам не завалялся суперкомпьютер, то считать модель будет долго.
    В домашних условиях можно использовать Core i5 или i7, чем больше ядер — тем быстрее будет считать. Но я взял пару 4-х ядерных Xeon'ов с 8 ГБ оперативной памяти под Slackware 12. Помимо копиляторов необходимо установить библиотеки MPI, например, MPICH2.
    Единственное требование — платформа должна быть x86_64. Иначе препроцессинг не заведется.
    Затраты по времени для области 3000 x 3000 км (прогноз на 2 суток) приведены в таблице ниже.
    Шаг, км Точек Время вычислений, ч.
    10 301 x 301 10
    20 151 x 151 6
    30 101 x 101 4
    Пожелания по настройке

    Все настройки задаются в файлах namelist.input и namelist.wps.
    Шаги по осям X и Y (параметры DX, DY) лучше ставить одинаковыми. И шаг должен зависит от тех мощностей, которыми Вы располагаете. Поиграться хватит 10-50 км.
    Шаг по времени DT рекомендуется выставлять равным 9 * DX (в км). DX, DY задаются в метрах, а DT в секундах.

    Относительно параметризаций (пограничный, приземный слой, конвекция, микрофизика) лучше придерживаться рекомендованных параметров:
    &physics
    mp_physics = 8,8,8
    ra_lw_physics = 1,1,1,
    ra_sw_physics = 1,1,1,
    sf_sfclay_physics = 1,1,1,
    sf_surface_physics = 2,2,2,
    bl_pbl_physics = 1,1,1,
    cu_physics = 1,0,0,
    /
    Подробное описание всех параметров приведено в Руководстве пользователя.

    Где скачать?

    Официальный сайт модели: www.wrf-model.org
    Компоненты модели: www.mmm.ucar.edu/wrf/users/download/get_sources.html
    Рекомендую качать версию 3.2.1. Как минимум, потребуются:
    WRF model V3.2.1,
    WRF Preprocessing System V3.2.1,
    WRF Postprocessing System V3.2,
    low-resolution geographical data (10' resolution),
    Начальные данные (разрешение 1°, размер порядка 500МБ): www.nco.ncep.noaa.gov/pmb/products/gfs
    Чтобы скачать модель нужно пройти процедуру простой регистрации.
    Если хотите считать с шагом меньше 10 км, то нужно будет скачать более подробный рельеф.

    Программу grads (для построения слайдов) можно взять из проекта opengrads.org
    Полное руководство пользователя (eng), он-лайн версия + pdf.

    Готов ответить на вопросы и помочь в запуске, если у кого-то появится желание. Можно постараться хорошо настроить модель и давать прогноз погоды самому себе.

    Результаты

    Для затравки предлагаю Вашему вниманию слайды с прогнозами на субботу (завтра проверите):
    1. Температура у Земли и ветер на высоте 10м
    image
    2. Приземное давление и осадки, накопленные от начала счета*
    image

    Все картинки, доспуны в альбоме: imgur.com/a/XqBi6 (надеюсь выдержит).

    Для сравнения прогноз по Москве от Яндекса: pogoda.yandex.ru/moscow/details

    * К сожалению поле часовых осадков построить не удалось, т. к. моделью выводятся осадки только от начала счета (от 03ч. 22.07.2011 MSK).
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 43
    • +1
      А видеокарты не поддерживает? А то выглядит самым интересным и быстрым вариантом особенно для таких вычислений
      • 0
        Во всяком случае не слышал. Для нее нужно очень много оперативной памяти. В реальных вычислениях модели веделяют сотни ГБ оперативки. Плюс, необходимость использовать MPI.
        • 0
          Есть поддержка CUDA, но она ограниченная. На сайте PGI можно найти документ на эту тему.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            А откуда берутся начальные данные?
            • 0
              См. секцию «Где скачать».
            • +2
              Я грибник любитель. К сожалению дожди проходят по близ лежащей территории неравномерно и ехать в проверенное место часто не имеет смыла.
              Рад был бы такому сервису, который путем расчета осадков выводит потенциальные места роста грибов.
              Может есть что-то подобное?
              • НЛО прилетело и опубликовало эту надпись здесь
                • +2
                  Я не готов тратить на это время.
                  Меня бы устроил готовый сервис.
                • +2
                  А не будет в лесах слишком людно после анонса такого сервиса, что там прошел грибной дождь? :)
                  • 0
                    Грибные места еще знать нужно.
                    А вот достаточно ли там в данный момент влаги для роста грибов можно было бы узнать.
                • +5
                  Пол России закрасило от 25 до 30, это я и без расчетов предсказал бы :)
                  • +2
                    Каждый из нас ругал синоптиков, когда оказывался под дождем, не имея в руках зонта. В топике я расскажу Вам как сделать прогноз погоды

                    В топике описывается не то, что мне нужно. Я 'гуляю без зонтика' только по Москве — и ваша карта погоды в Европе мне не нужна. Вы думаете я пойду гулять без зонта в Праге и Урале одновременно? Вовсе нет.
                    Но вот погода в Москве… Вот пишет гисметео, что в Москве местами пройдут дожди — и если б знать, будут ли это места, где я живу (ст. м. «Киевская») или работаю (ст. м. «Белорусская») — то это было бы шедеврально. Это было бы именно то, что мне нужно.
                    Я понимаю, что такую точность прогнозов вряд ли может обеспечить не только библиотека, запущенная на домашнем Атлоне, но и пул серверов гисметео — потому всё же статью плюсанул за тематику. Пишите ещё!
                    • +1
                      Нужны данные метеосборщиков, иначе вы получите усреднённую температуру по больнице. Поэтому получить то, что хотите вы — это реально, но вопрос должен стоять в организации структуры объектов мониторинга окружающей среды.
                      • 0
                        Да, я понимаю, что нужны данные метеосборщиков. Насколько я помню — предыдущий мэр Москвы создал метеорологическую службу Москвы и датчики по Москве и области должны быть.
                        Понимаете, именно мэру столицы важно, чтобы на столетие Дня Победы была солнечная погода — мне же нужен прогноз погоды в моём Дорогомилово.
                        Если бы текущий мэр открыл бы данные метеослужбы Москвы жителям — за это ему бы сказали спасибо. А то — ну чем запомнился жителям Собянин? Сносом ларьков, ха-ха.
                        • +1
                          Метео служба Москвы — это подразделение Федеральной службы по Гидрометеорологии и мониторингу окружающей среды, Лужков там ничего такого не делал, кроме как купил БУ кластер.
                          Мэр не сможет вам открыть метеоданные, т.к. они вне его юрисдикции, да и думаю никто не откроет их, т.к. не обязаны, а публичные данные вы можете найти хоть на гисметео, хоть на яндексе.

                          З.Ы. Мне, если честно больше интересно не районная погода, а в общем по МСК.
                        • 0
                          Вот кстати:
                          Независимое от Росгидромета метеобюро Лужков создал сам, в 98-м, на паях с Подмосковьем после жуткого июньского урагана, когда погибли 7 человек. Прошло шесть лет, и директору Метеобюро все еще нечем порадовать своего работодателя. «Для Москвы прогноз нужно составлять с точностью до районов, сегодня такие прогнозы не составляются», – говорит гендиректор Гидрометеобюро Москвы и Московской области Алексей Ляхов.
                          В аэропорту нет права на ошибку...

                          А вот кстати и все пять метеостанций Москвы: mosmeteo.hmn.ru/index1.php?code=22
                          • +1
                            Ничего он там не создавал, просто появилось отделение, отвечающее за Москву на балансе у Москвы. А про ураганы Лужкову молчать надо, если у него на весь город 5 станций, при этом 3 из них за пределами города.
                            • 0
                              Вы я так понимаю в теме? Сколько нужно станций на Москву, чтобы с хорошей точностью прогнозировать погоду по районам города? (И соответственно — сколько это будет в деньгах?)
                              Ну, чтобы можно было не говорить «в некоторых частях Москвы возможны дожди», а сказать хотя бы так: «на юго-западе Москвы будут дожди, остальные районы города дождь пройдёт стороной».
                              • +1
                                Я в теме частично, т.к. знаком хорошо с коллегами из Ридромета, но сколько нужно станций сказать не могу, это наверняка зависит от типа станции, её параметров и необходимых датчиков. Вопрос не в этом, а в том, что все используют ресурсы гидромета на халяву (увы, но Гидромет обязан предоставлять определённые данные бесплатно) и только маленькая кучка за это платит (в основном аэропорты, поэтому там всегда стоят метеостанции и в них работает группа метеорологов), так же гидромет в большинстве своём не может предоставлять коммерческих услуг (тоже куча ограничений по закону) и взять им денег на модернизацию неоткуда, чтобы там не говорил президент, но раз в 5 лет выделить денег на модернизацию — это надругательство. А практика показала, что такая служба, как Гидромет позволяет экономить государству конкретных денег (был случай в СССР, его ещё называют началом истории существования Главного Вычислительного Центра Росгидромета).
                      • 0
                        Интересно было б для небольшой территории (20х20 км) с учетом региональных особенностей. А такие крупные масштабы на сайтах и так доступны.
                        • 0
                          Давая хорошие результаты на разрешении в 10 км, на 1км модель даст кашу. Да и с точными данными о «региональных особенностях» проблемы, ну положим рельеф — SRTM (~90м), растительность — MODIS (правда уже 250м, в лучшем случае), а вот с почвами загвоздка…
                          • 0
                            В комментарии чуть ниже я описал, почему это малореально.
                            • 0
                              Еще добавлю, что уравнения, на которых основана модель нешибко подходят для прогноза на сетке ~100м на 100м.
                            • 0
                              Существуют ли прогнозы с километровым шагом?
                              Где можно посмотреть уже просчитанные данные по этой модели?
                              • +5
                                Я немножко в теме, могу сказать, что прогнозов с шагом 1 км не существует (во всяком случае доступных и регулярных, экспериментальные не в счёт).

                                Самые высокодетальные сетки, описания которых мне встречались — 4-7 км. Это локальные модели, покрывающие только одну сравнительно небольшую по площади европейскую страну (я читал конкретно о Великобритании и Чехии, хотя наверняка есть другие). Тут три проблемы.

                                Во-первых, колоссальный объем вычислений. Подход «а давайте возьмём небольшую область, например одну Москву, но посчитаем её супер-детально» — увы, не катит. Дело в том, что эту небольшую область нельзя рассматривать изолированно, воздушные массы ведь движутся, облачность приходит «из-за границы» и т.д. И чем больше срок прогнозирования, тем обширнее нужно брать район.
                                Объем вычислений можно немного снизить вложенными сетками с разным шагом. Например, МО накрыть с шагом 5 км, ЦФО 10 км и ЕТР 20 км. Но даже так ресурсов нужно очень много.

                                Во-вторых, для сверхдетальной сетки нужно иметь и сверхдетальное описание подстилающей поверхности: рельеф, почвы, водоемы, леса и т.п. В России с этим сложно.

                                В-третьих, источники фактических погодных данных. В России очень мало (относительно её площади) метеостанций. Многие прекратили свое существование в 90-е. Те что выжили — с устаревшим оборудованием и копеечными з/п персонала. Говорят, даже «главная» метеостанция страны (на ВДНХ) не соотвествует современным технологическим нормам. Действительно хорошие метеостанции сейчас стоят только аэропортах.
                                Та же Англия покрыта метеостанциями на порядок плотнее. А без фактических данных сколь угодно подробное матмаделирование имеет оттенок отсебятины.

                                Спецы говорят, что на практике супер-детализованные сетки можно использовать для уточнения сверхкраткосрочных (не более 1-1.5 суток) прогнозов, далее объем вычислений растет очень непропорционально приросту качества.
                                • +2
                                  Кстати, можно посмотреть параметры этой модели, которую гоняет у себя Украина: ecobase.org.ua/wa311/index.php
                                  Всё довольно скромно: 98*70 точек, шаг 30 км. Кстати, на карте можно видеть, с каким запасом сетка перекрывает территорию Украины.
                                  И для этого используются 48 процов Intel Itanium 2 1.6 ГГц и 96 Гб оперативки. Потому как на практике прогноз должен считаться за 1-2 часа, а не за 10 — иначе он просто устареет уже к моменту своего получения.
                              • 0
                                Невероятно круто!

                                Как много трафика кушает алгоритм, при распараллеливании на несколько компьютеров? какие требования к каналу? топология связи между узлами звезда или сеть?

                                Просто если объемы трафика будут адекватными, и топология сеть или хотя бы 'много звезд', то ведь можно устроить сервис по распределенному расчету, а уж если добавлять свои собственные метеостанции, то прогнозы будут еще и гарантированно адекватнее чем простые вида 'погода будет ясная, но переменная облачность и местами дожди'.
                                • 0
                                  Объемы трафика адекватными не будут. На каждом шаге по времени нужна полная синхронизация модели между узлами.

                                  Собственные метеостанции вы не создадите — нужна погода не на поверхности земли, а в толще атмосферы. Для этого либо запускают зонды, либо используют спутники + сложный постпроцессинг.
                                • 0
                                  надо будет попробовать на кластере из 30 компов.
                                  вот только «платформа должна быть x86_64.» не подходит — это значит не получится (у нас не 64битка стоит)?
                                  • 0
                                    Получится, но объёмы обрабатываемых данных будут не более 4ГБ на узел.
                                    Хотя я уже не помню, есть ли в варфе поддержка платформ не 64 бита.
                                    • 0
                                      По идее должна подойти и ia32. Но я не пробовал.
                                    • 0
                                      На сайте WRF выложены тестовые данные, дабы можно было убедиться, что собранная модель считает погоду не на Марсе, а в целевом регионе. Вы эти тесты выполняли? Можете что-то сказать о результатах сравнения?
                                      • 0
                                        Визуально картинки были похожи (сравнил температуру и ветер), правда я с другим шагом считал.
                                      • 0
                                        Странно у вас на первой картинке ветер дует — строго по декартовым координатам с поворотами в 90 градусов…
                                        • 0
                                          А по-моему, ничего удивительно: во-первых там равнина, а во-вторых, может быть, так случайно совпало.
                                          • 0
                                            И с прогнозом Яндекса почти совпало, они дают юго-восточный и восточный ветер.
                                        • 0
                                          Еще добавлю, что нужно для комиляции использовать «быстрые» комиляторы, н-р, от Intel или PGI.
                                          • 0
                                            Насколько я понимаю, у вас оно работает с MPI? Или OpenMP?
                                            • 0
                                              MPI
                                              • 0
                                                Понятно, значит с MPI особых проблем нет, в отличии от OpenMP.

                                                Касаемо «быстрых» компиляторов, какой выигрыш по времени? Если не ошибаюсь, на RegCM (тогда ещё 3) переход gfortran => intel fortran дал уменьшение времени расчета процентов на 10, как не меньше.
                                                • 0
                                                  Странно, на сложных задачах gfortran => intel fortran может дать 2-3 ускорение. Здесь gfortran я не пробовал, а сразу взял ifort.
                                          • 0
                                            Едешь куда-то км за 25-50-100 и знаешь, что где-то рядом — дожди.

                                            Даже без прогноза пригодилась бы анимированная гифка снимка облачности из космоса за несколько последних часов.
                                            А там бы я уж сам бы додумал, куда ветер дует и как облака идут.

                                            Связка "глаза — мозг" иногда помощнее некоторых Itanium'ов бывает. Иногда…

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.