Автор |
Сообщение |
Corvus
Автор сайта
###Corvus###
|
# Дата: 11 Апр 2012 13:59
Вот ещё на эту тему
http://gradsusr.org/pipermail/gradsusr/2006-Septem ber/003681.html
http://grads.iges.org/grads/gadoc/pdef.html
http://www.ecmwf.int/products/data/software/downlo ad/grib_api.html
|
Klimatolog
Участник
Москва
|
# Дата: 14 Апр 2012 16:45
HIRLAM - отличная региональная модель, так что если нашлись ее данные в открытом виде - надо пользоваться, если регион совпадает
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Апр 2012 21:51
Klimatolog
И я про тоже :) Осталось только разобраться с хитрой сеткой, которая там используется.
|
LESS
Участник
Приокский лесс на юге МО
|
# Дата: 17 Апр 2012 16:41
Наблюдаю за результатами работы (прогнозами) вот этой модели:
http://meteocenter.asia/?m=nae&p=27612
Хорошо прогнозирует грозы на большой срок.
|
Tuskar
Участник
Мессажай Туапсинский район
|
# Дата: 17 Апр 2012 16:49 - Поправил: Tuskar
LESS
Не соглашусь. Тоже наблюдаю, правда, по температуре (t850) - не по грозам - по моему мнению, модель заносит почище ГФС, для Москвы. То есть лично у меня доверия к этой модели нет, все ИМХО.
|
met2
Участник
Минск
|
# Дата: 5 Сен 2012 19:43 - Поправил: met2
Великая и ужасная GFS обновилась. Все модели, которые получают на вход данные GFS должны иметь это ввиду.
Тут подробнее: Прогностические модели и международный обмен метеоинформацией.
Не открывается! Я всячески испробовал открыть ссылку, но тщетно.
Поправил ссылку.
|
Anaxagoras
Участник
|
# Дата: 5 Сен 2012 20:52
Тут подробнее
met2
Не открывается! Я всячески испробовал открыть ссылку, но тщетно.
|
met2
Участник
Минск
|
# Дата: 14 Сен 2012 12:33 - Поправил: met2
Нравится CMC. Теплее и влажнее, чем GFS и UKMET, нулевой прогон во всяком случае. Выложили http://meteoinfo.by/21/.
Corvus, можно как-то посчитать Li и CAPE, имея данные поля:
http://dd.weatheroffice.gc.ca/model_gem_global/hig h_resolution/grib2/lat_lon/00/012/
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Сен 2012 13:14
Нравится CMC. Теплее и влажнее, чем GFS и UKMET
met2
Идеально смешивать СМС и ГФС, что я и делаю в ансамблевом прогнозе ГСС.
ГФС занижает точку росы и завышает ночную Т, а СМС занижает скорость ветра и дневную Т, немного завышает точку росы.
Среднее между СМС и ГФС оказыватся как раз близко к истине.
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Сен 2012 13:16
можно как-то посчитать Li и CAPE
met2
Я пока считаю псевдоЛИ по эквивалентно-потенциальной температуре (ЭПТ). Из ЭПТ500 вычитаю максимальную ЭПТ в слое земля - 700 гПа.
Правильнее считать всё это не по ЭПТ, а по потенциальной Т смоченного термометра на соотв. уровнях (она отображает влажноадиабатический процесс).
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Сен 2012 13:34 - Поправил: Corvus
.....................
|
met2
Участник
Минск
|
# Дата: 14 Сен 2012 16:20 - Поправил: met2
Честно говоря ничего не поняли. Даже программисты.
Не описана, так же: Met_Teqp_func($v['TMP']['2m'], $v['TMP']['2m'] - $v['DEPR']['2m'], $p_last);
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Сен 2012 20:49
Met_Teqp_func рассчитывает ЭПТ по Т (С), Tд (С), давлению (гПа). Остальные - стандартные функции для перехода между характеристиками влажности.
function Met_Teq_func($T, $Td, $p) { // C
$e = Met_E_func($Td);
$s = Met_s_func($e, $p);
$Teq = $T + 2500*$s;
return round( $Teq, 1);
}
function Met_Tp_func($T, $p) { // C
$k = 0.2854;
$Tp = ($T + 273) * pow(1000/$p, $k);
$Tp = $Tp - 273;
return round( $Tp, 1);
}
function Met_Teqp_func($T, $Td, $p) { // C
$Teq = Met_Teq_func($T, $Td, $p);
$Teqp = Met_Tp_func($Teq, $p);
return round( $Teqp, 1);
}
function Met_E_func($t) {// hPa, C
$Eo=6.107; $a=7.63; $b=241.9;
$Result = $Eo*pow(10,($a*$t/($b+$t)));
$Result = round($Result,2);
return $Result;
}
function Met_f_func($t,$td) {// %
if(isset($td) && $td !== "") {
$Eo = Met_E_func($t);
$E = Met_E_func($td);
if($Eo > 0)
$Result = round(100*$E/$Eo);
else $Result = "";
if($Result > 100) $Result = 100;
}
else $Result = "";
return $Result;
}
function Met_Td_func($t,$f_percent) { // C
$Eo=6.107; $a=7.63; $b=241.9;
$e = Met_E_func($t)*$f_percent/100;
$Tempo = Met_Lg($e/$Eo);
$Result = $b*$Tempo/($a-$Tempo);
$Result = round($Result,1);
return $Result;
}
function Met_s_func($e,$p) { // g/g
$Result = 0.622*$e/($p-0.378*$e);
return $Result;
}
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 14 Сен 2012 21:04 - Поправил: Corvus
$low_lewels = array('1000','975','950','925','900','850','800',' 750');
// проход по уровням (кроме приземного) и заполнение массива со значениями псевдоЛИ
foreach($low_lewels as $p) {
if($p < ($v['PRES'] - 15)) {
$Teqp = Met_Teqp_func($v['TMP'][$p], $v['TMP'][$p] - $v['DEPR'][$p], $p);
$LI2_ar[$p] = $Teqp500 - $Teqp;
}
}
// проход по массиву псевдоЛИ и отыскание минимального псевдоЛи (наибольшая неустойчивость)
// $y_kns - верт. градиент Т в слое от земли до уровня конденсации
// если он меньше 0.9 - термическая конвекция невозможна, уровень 2 м пропускаем
// $k_i_conv - индекс динамической конвекции, равен 1 при близости фронта
foreach($LI2_ar as $p => $LI) {
if($p == '2m' && $y_kns < 0.9)
continue;
$din_conv = false;
if($p !== '2m' && $k_i_conv == 1 )
$din_conv = true;
if($LI < 0) {
if( ($p_conv_start == '2m') || $din_conv )
$LI3_ar[$p] = $LI;
}
if($p !== '2m' && !$din_conv)
continue;
$p_conv_start = $p;
if($LI < $LI_min)
$LI_min = $LI;
}
// рассчитываем ЭПТ на уровне, от которого развивается самая сильная неустойчивость
if($p_conv_start == '2m') {
$h_last = $Alt;
$p_last = 1.33 * $v['p0'];
$Teqp_start = Met_Teqp_func($v['TMP']['2m'], $v['TMP']['2m'] - $v['DEPR']['2m'], $p_last);
} else {
$h_last = $v['HGT'][$p_conv_start];
$p_last = $p_conv_start;
$Teqp_start = Met_Teqp_func($v['TMP'][$p_last], $v['TMP'][$p_last] - $v['DEPR'][$p_last], $p_last);
}
$cape = 0;
// пробегаем по уровням и считаем (упрощённо) интеграл от разности ЭПТ частицы и среды
foreach($lewels as $p)
if($p < $p_last) {
$Teqp_cur = Met_Teqp_func($v['TMP'][$p], $v['TMP'][$p], $p);
$dt = $Teqp_start - $Teqp_cur;
$dt = 0.7 * $dt;
if($dt>0) {
$dt_sum = $dt_sum + $dt;
$dt_fin = $p;
$dt_cnt++;
}
$h = $v['HGT'][$p];
$dh_ = $h - $h_last;
$dc = $dt*0.001*$dh_;
if($dc>0) $cape = $cape + $dc;
$p_last = $p;
$h_last = $h;
}
// полученную интегральную сумму пересчитываем в КАПЕ
$cape = 38*$cape;
$v['CAPE'] = 50*round($cape/50);
|
met2
Участник
Минск
|
# Дата: 21 Сен 2012 16:07
Спасибо. Стало немного понятнее, но еще сложнее ))).
Просто бы формулку, а? Или буквально на пальцах: какие поверхности и поля берём и что с ними делаем, и что (для контроля) примерно должно получиться на выходе?
А то мы, вроде, повторяем, но ерундень какая-то ((
Хоть скриншот рукописного документа.
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 22 Сен 2012 11:26 - Поправил: Corvus
Или буквально на пальцах: какие поверхности и поля берём и что с ними делаем, и что (для контроля) примерно должно получиться на выходе?
met2
0. Работаем везде ниже с уровнями '1000','975','950','925','900','850','800',' 750'.
1. Проходим по всем уровням (кроме самого нижнего, на котором давление меньше чем на 15 гПа отличается от приземного) и создаём массив псевдоЛИ как разности ЭПТ500 и ЭПТ на данном уровне.
2. Рассчитываем псевдоЛи на уровне 2 м и добавляем в массив псевдоЛИ.
3. Проход по массиву псевдоЛИ и отыскание минимального псевдоЛИ (наибольшая неустойчивость).
4. Рассчитываем $y_kns - верт. градиент Т в слое от 2 м до уровня конденсации.
5. Проходим по массиву псевдоЛи и формируем массив ЛИ3 (это реализуемый ЛИ, который может приводить к конвекции).
Если $y_kns меньше 0.9 - термическая конвекция невозможна, уровень 2 м пропускаем.
Если ситуация не фронтальная (например, минимальный дефицит в слое 1000-700 гПа более 10 градусов и
верт. движения на уровнях 850 и 700 гПа в гПа/3 ч положительные (нисходящие); критерии могут быть уточнены),
по массиву псевдоЛИ не проходим, в массив ЛИ3 попадает только ЛИ, рассчитанный с уровня 2 м (если $y_kns 0.9 и более).
6. Рассчитываем ЭПТчастицы - это ЭПТ на уровне, где ЛИ3 самый низкий (большие отрицательные значения или малые положительные).
7. $cape =0
8. Проходим по уровням и считаем (упрощённо) интеграл от разности ЭПТчастицы и ЭПТсреды на этом уровне. Находим разность $dt = 0.7 * (ЭПТчастицы-ЭПТсреды).
$dh_ = $h - $h_last (толщина слоя в метрах)
$dc = $dt*0.001*$dh_
if($dc>0) $cape = $cape + $dc (накапливаем сумму в переменной саре).
9. Переходим от суммы градусокилометров к САРЕ в Дж:
$cape = 38*$cape.
10. Всё :)
Можно округлить САРЕ до 50.
$v['CAPE'] = 50*round($cape/50);
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 22 Сен 2012 11:51
Вероятно, это алгоритм можно упростить и свести к единой огромной формуле.
|
met2
Участник
Минск
|
# Дата: 24 Сен 2012 15:49 - Поправил: met2
Спасибо. Разбираемся.
P.S.
Поставили обновляться модель GEM (CMC, Канада) 2 раза в сутки.
Прогоны 00 и 12 ч. Заблаговременность 144 ч, шаг 3 часа.
Разрешение пространственное 0.6°.
Юзайте. Для Беларуси вполне адекватна.
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 27 Сен 2012 17:36
Реанализ Рединга с 1979 года по июнь 2012 г. (ERA-40)
http://data-portal.ecmwf.int/data/d/interim_full_d aily
|
met2
Участник
Минск
|
# Дата: 27 Сен 2012 18:42
Реанализ Рединга с 1979 года по июнь 2012 г. (ERA-40)
http://data-portal.ecmwf.int/data/d/interim_full_d aily
Ух ты!
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 27 Сен 2012 18:48
met2
Я только не разобрался до конца, бесплатно ли. Вроде да :)
|
bullterrier
Участник
Пермь
|
# Дата: 6 Окт 2012 14:02
Пожалуйста, подскажите, какие grib-ы нужно скачивать отсюда
http://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/ prod/gfs.2012100600/
Просто очень хочется иметь прогноз по модели GFS с максимальным количеством переменных. Может скачивать все файлы подряд, как в случае с моделью GEM-CMC?
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 6 Окт 2012 19:30
bullterrier
Лучше качать вот отсюда
http://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/ prod/gfs.2012100600/master/
можно использовать технологию частичной закачки благодаря файликам .idx
Или тоже самое (я качаю отсюда) вот тут (0.5 градусная ГФС):
http://nomad3.ncep.noaa.gov/pub/gfs/rotating-0.5/
с помощью файликов .inv
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 6 Окт 2012 19:36
Эта технология позволяет качать не всё подряд, а избранные переменные.
Например, строка из моего шелл-файлика (это под линуксом, а под виндой можно написать батник)
#!/bin/sh
#
get_inv.pl http://nomad3.ncep.noaa.gov/pub/gfs/rotating-0.5/g fs.t00z.pgrb2f03.inv | egrep "(PRES:surface:|:PRMSL:|:TMP:2 m above ground:|:RH:2 m above ground:|:TMAX:2 m above ground:|:TMIN:2 m above ground:|:UGRD:10 m above ground:|:VGRD:10 m above ground:|:APCP:surface:|:HGT:surface:|:TMP:surface: |:HGT:1000 mb:|:TMP:1000 mb:|:RH:1000 mb:|:UGRD:1000 mb:|:VGRD:1000 mb:|:HGT:975 mb:|:TMP:975 mb:|:RH:975 mb:|:UGRD:975 mb:|:VGRD:975 mb:|:HGT:950 mb:|:TMP:950 mb:|:RH:950 mb:|:UGRD:950 mb:|:VGRD:950 mb:|:HGT:925 mb:|:TMP:925 mb:|:RH:925 mb:|:UGRD:925 mb:|:VGRD:925 mb:|:HGT:900 mb:|:TMP:900 mb:|:RH:900 mb:|:UGRD:900 mb:|:VGRD:900 mb:|:HGT:850 mb:|:TMP:850 mb:|:RH:850 mb:|:VVEL:850 mb:|:UGRD:850 mb:|:VGRD:850 mb:|:HGT:800 mb:|:TMP:800 mb:|:RH:800 mb:|:UGRD:800 mb:|:VGRD:800 mb:|:HGT:750 mb:|:TMP:750 mb:|:RH:750 mb:|:UGRD:750 mb:|:VGRD:750 mb:|:HGT:700 mb:|:TMP:700 mb:|:RH:700 mb:|:VVEL:700 mb:|:UGRD:700 mb:|:VGRD:700 mb:|:HGT:650 mb:|:TMP:650 mb:|:RH:650 mb:|:UGRD:650 mb:|:VGRD:650 mb:|:HGT:600 mb:|:TMP:600 mb:|:RH:600 mb:|:UGRD:600 mb:|:VGRD:600 mb:|:HGT:550 mb:|:TMP:550 mb:|:RH:550 mb:|:UGRD:550 mb:|:VGRD:550 mb:|:HGT:500 mb:|:TMP:500 mb:|:RH:500 mb:|:VVEL:500 mb:|:UGRD:500 mb:|:VGRD:500 mb:)" | get_grib.pl http://nomad3.ncep.noaa.gov/pub/gfs/rotating-0.5/g fs.t00z.pgrb2f03 03.gfs
#
...
|
bullterrier
Участник
Пермь
|
# Дата: 6 Окт 2012 19:57
Corvus
Большое спасибо!
Мне второй сервер понравился, вроде все нужные мне переменные там есть в наличии. С частичным скачиванием заморачиваться не буду, интернет-канал довольно быстрый.
Раньше я пытался скачивать грибы отсюда:
http://nomads.ncdc.noaa.gov/data/gfs4/
Но там все обновляется не пойми как. С другой стороны, там архив прогнозов аж за 2 года!
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 6 Окт 2012 21:13
там архив прогнозов аж за 2 года!
Да, это ценно для исследований (разработка методов прогноза и т.д.).
|
met2
Участник
Минск
|
# Дата: 7 Окт 2012 02:55
bullterrier
мы еще берем
CAPE
CIN
GUST
4LFTX
TCDC
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 7 Окт 2012 07:54
met2
А я эти параметры рассчитываю по самопальным алгоритмам :)
|
bullterrier
Участник
Пермь
|
# Дата: 8 Окт 2012 18:22 - Поправил: bullterrier
Corvus
Я попробовал скачать grib-ы отсюда:
http://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/ prod/gfs.2012100600/master/
Скачиваю грибы за трое суток:
wget -N ...
Затем объединяю их в один
copy /B gfs.t* gfs.grb2
Создаю ctl файл
perl g2ctl.pl gfs.grb2>gfs.ctl
Создаю индексный файл
gribmap -i gfs.ctl
Потом открываю gfs.ctl в OpenGrads. Карты строятся вплоть до временного периода +60 часов, затем на временном шаге +63 ошибка, что градс не может найти переменные, причем все, и так всегда, независимо от того, за какую дату я скачал grib-ы. Кто нибудь сталкивался с такой проблемой?
|
Corvus
Автор сайта
###Corvus###
|
# Дата: 8 Окт 2012 18:40
bullterrier
Может быть файл слишком большой и потому не хватает памяти для работы ГРАДС?
Я бы не стал объединять файл, работал бы с каждым по отдельности.
|