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

    Каждый из нас ругал синоптиков, когда оказывался под дождем, не имея в руках зонта. В топике я расскажу Вам как сделать прогноз погоды на основе модели 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).

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 43

      +1
      А видеокарты не поддерживает? А то выглядит самым интересным и быстрым вариантом особенно для таких вычислений
        0
        Во всяком случае не слышал. Для нее нужно очень много оперативной памяти. В реальных вычислениях модели веделяют сотни ГБ оперативки. Плюс, необходимость использовать MPI.
          0
          Есть поддержка CUDA, но она ограниченная. На сайте PGI можно найти документ на эту тему.
        • UFO just landed and posted this here
            0
            А откуда берутся начальные данные?
              0
              См. секцию «Где скачать».
              +2
              Я грибник любитель. К сожалению дожди проходят по близ лежащей территории неравномерно и ехать в проверенное место часто не имеет смыла.
              Рад был бы такому сервису, который путем расчета осадков выводит потенциальные места роста грибов.
              Может есть что-то подобное?
              • UFO just landed and posted this here
                  +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'ов бывает. Иногда…

                                            Only users with full accounts can post comments. Log in, please.