Работа с GrADS

Метеоцентр.Азия - наш новый сайт с высокодетализированными прогнозами погоды по пунктам России и мира
Облегчённая версия Метеоклуба (для КПК)
Карта активных участников Метеоклуба (105 кБ)    Таблица дней рождения активных участников Метеоклуба
Клуб любителей метеорологии (группа ВКонтакте)

Работа с GrADS

Сейчас в Метеоклубе:
Участников - 6 [ Mark2, gribnik, kostian, volk_by, raikov_1939, wandervogel ]
Максимальное одновременное количество посетителей: 6 [24 Май 2017 16:35]
Гостей - 0 / Участников - 6

 - Начало - Ответить - Статистика - Регистрация - Поиск -
МЕТЕОКЛУБ : независимое сообщество любителей метеорологии (Европа и Азия) : ФОРУМ О ПОГОДЕ И ПРИРОДЕ / Компьютерная техника и интернет в метеорологии / Работа с GrADS
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Автор Сообщение
Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 3 Авг 2012 18:27


PRECANV Surface precipitation flux from anvils kg m-2 s-1
PRECCON Surface precipitation flux from convection kg m-2 s-1
PRECLSC Surface precipitation flux from large-scale kg m-2 s-1
PRECSNO Surface snowfall flux kg m-2 s-1
PRECTOT Total surface precipitation flux kg m-2 s-1



То есть осадки даются в кг/м2 в секунду.
Для пересчёта в мм/3 ч надо умножить на 10800.

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 4 Авг 2012 11:13


tavg3d_dyn_v (1 time per file, 4 files/day: 00, 06, 12,18 GMT)

PS Surface pressure (two-dimensional field) Pa
DELP Pressure difference between layer edges Pa
DTDTTOT Temperature tendency from physics (total diabatic)K s-1
HGHT Geopotential height at mid-layer m
MFXC Eastward layer mass flux on the C-Grid Pa m2 s-1
MFYC Northward layer mass flux on the C-Grid Pa m2 s-1
O3 Ozone Mixing Ratio kg kg-1
OMEGA Vertical pressure velocity Pa s-1
EPV Ertel’s potential vorticity K m2 kg-1 sec-1
QV Specific humidity kg kg-1
RH Relative humidity percent
T Air emperature K
U Eastward wind m s-1
V Northward wind m s-1

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 4 Авг 2012 11:17


tavg3d_cld_v (1 time per file, 4 files/day: 00, 06, 12, 18 GMT)

PS Surface pressure (two-dimensional field) Pa
DELP Pressure difference between layer edges Pa
CLOUD 3-D Cloud fraction fraction
DQRCON Rain production rate – convective kg m-2 s-1
DQRLSC Rain production rate - large-scale kg m-2 s-1
DTRAIN Detrainment cloud mass flux kg m-2 s-1
QI Cloud ice water mixing ratio kg kg-1
QL Cloud liquid water mixing ratio kg kg-1
TAUCLI Layer total optical thickness of ice clouds dimensionless
TAUCLW Layer total optical thickness of liquid clouds dimensionless

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 4 Авг 2012 11:24


Pressure-level data will be output on the following 36 pressure levels:

Level P(hPa)

1 1000 13 600 25 50
2 975 14 550 26 40
3 950 15 500 27 30
4 925 16 450 28 20
5 900 17 400 29 10
6 875 18 350 30 7
7 850 19 300 31 5
8 825 20 250 32 3
9 800 21 200 33 2
10 750 22 150 34 1
11 700 23 100 35 0.4
12 650 24 70 36 0.2

bullterrier
Участник
Письмо
Пермь
# Дата: 6 Авг 2012 21:34


Скрипт для градс. Строит карты по множеству метеопараметров, в том числе по индексам неустойчивости для Пермского края и прилегающих территорий. Есть возможность выбора папки для сохранения карт.

URL

mtclub14
Участник
Письмо
Чайковский (временами Ижевск)
# Дата: 7 Авг 2012 10:52 - Поправил: mtclub14


У меня такое ощущение, что я чего то не докачал в программе Grads.
Пытался прописать путь к скрипту,но окно больше чем на секунду не задерживается (

mtclub14
Участник
Письмо
Чайковский (временами Ижевск)
# Дата: 7 Авг 2012 11:05 - Поправил: mtclub14


Извиняюсь. Я просто не тот grads скачал. Нашел другой на вашем форуме и все стало нормально.
Теперь даже окно визуализации есть.

Но вот скрипт выдает ошибку

Затем в окне gfads вводите n; затем клавиша Enter.
Затем вводите run meteogram_gfs.gs и нужные параметры.
У вас должно получится такое окно (параметры свои)
ga->run meteogram_gfs.gs
Enter location name --> Troiizk
Enter forecast date (yyyymmddhh) --> 2011120400
Enter longitude --> 61
Enter latitude --> 54
Metric units? [y/n] --> y
No hardcopy metafile open
All files closed; all defined objects released
All GrADS attributes have been reinitialized

Скрипт начал свою работу, нужно подождать минут 10


ругается на meteogram_gfs (

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 8 Авг 2012 13:48


Данные METAR в формате OPeNDAP/DODS

http://monsoondata.org:9090/dods/stn/metar/past48. info

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 20 Авг 2012 06:11


Может и были эти ссылки уже, но повторюсь.

НАЕФС
http://nomads.ncep.noaa.gov:9090/dods/naefs_bc/nae fs20120819/geavg_00z.info

НОГАПС
http://nomads.ncep.noaa.gov:9090/dods/fens/fens201 20819/fens_all_12z.info

СМС
http://nomads.ncep.noaa.gov:9090/dods/cmcens/cmcen s20120819/cmcensavg_12z.info

Ансамбль ГФС одноградусный (мало переменных)
http://nomads.ncep.noaa.gov:9090/dods/gens_bc/gens 20120819/geavg_18z.info

ГФС 0.5 градуса (много переменных)
http://nomads.ncep.noaa.gov:9090/dods/gfs_hd/gfs_h d20120819/gfs_hd_18z.info

bullterrier
Участник
Письмо
Пермь
# Дата: 23 Авг 2012 08:36


Работу скриптов в GRADS можно ускорить следующим образом. Если какая-либо переменная используется в скрипте более одного раза, то можно поступить так:

'define slpr = prmslmsl/100'
'define tmp500 = tmpprs(lev=500)'
'define tmp400 = tmpprs(lev=400)'
'define tmp600 = tmpprs(lev=600)'
'define tmp700 = tmpprs(lev=700)'
'define tmp850 = tmpprs(lev=850)'
'define rh400 = rhprs(lev=400)'
'define rh500 = rhprs(lev=500)'
'define rh600 = rhprs(lev=600)'
'define rh700 = rhprs(lev=700)'
'define rh850 = rhprs(lev=850)'
'define dew400 = dewpt(tmp400,rh400)'
'define dew500 = dewpt(tmp500,rh500)'
'define dew600 = dewpt(tmp600,rh600)'
'define dew700 = dewpt(tmp700,rh700)'
'define dew850 = dewpt(tmp850,rh850)'
'define bli = no4lftxsfc'
'define sli = lftxsfc'
'define gp850 = hgtprs(lev=850)/10'
'define gp500 = hgtprs(lev=500)/10'
'define u700 = ugrdprs(lev=700)'
'define v700 = vgrdprs(lev=700)'
'define u300 = ugrdprs(lev=300)'
'define v300 = vgrdprs(lev=300)'
'define u850 = ugrdprs(lev=850)'
'define v850 = vgrdprs(lev=850)'
'define u500 = ugrdprs(lev=500)'
'define v500 = vgrdprs(lev=500)'
'define u450 = ugrdprs(lev=450)'
'define v450 = vgrdprs(lev=450)'
'define u950 = ugrdprs(lev=950)'
'define v950 = vgrdprs(lev=950)'
'define u10m = ugrd10m'
'define v10m = vgrd10m'


И затем обращаться уже к этим переменным. Так экономится интернет траффик и скрипт работает быстрей. В частности, мой скрипт для Пермского края и прилегающих территорий стал работать в 2.5-3 раза быстрее.

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 23 Авг 2012 09:25


bullterrier

Спасибо, возьму на вооружение :)

bullterrier
Участник
Письмо
Пермь
# Дата: 24 Авг 2012 19:02


Попробовал запустить скрипты для OpenGrads под Linux (Fedora). Скрипты работают быстрее, чем под Windows.Теперь запускать их буду только под Linux.

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 27 Авг 2012 20:29


Как заставить ГРАДС 2.0 выдавать сообщения о ходе работы скрипта?

Старая ГРАДС 1.9 выдавала сплошным потоком сообщения (названия открытых файлов, переменные и т.д.), а эта молчит, как рыба об лёд. При ошибке происходит бесконечное ожидание и непонятно что делать.

bullterrier
Участник
Письмо
Пермь
# Дата: 27 Авг 2012 21:43 - Поправил: bullterrier


Corvus

Попробуйте say result.
Хотя у меня в OpenGrads 2.0.1 при ошибке выводится красный текст и содержание ошибки, при открытии файла тоже выводится информация о нем.

bullterrier
Участник
Письмо
Пермь
# Дата: 27 Сен 2012 17:16 - Поправил: bullterrier


Скажите, пожалуйста, а как можно посчитать при помощи функций OpenGrads precipitable water [mm] (кол-во воды, доступной, для осадков) по модельным данным (модель СМС), если имеется температура на каждом уровне (TMPprs, K) и дефицит точки росы (DEPRprs)?

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 27 Сен 2012 17:22


Precipitable water [mm] (кол-во воды, доступной, для осадков) по модельным данным (модель СМС), если имеется температура на каждом уровне (TMPprs, K) и дефицит точки росы (DEPRprs)?

bullterrier

Надо рассчитать по Т и Д удельную влажность (г/кг) для всех уровней и потом взять интеграл этой величины от земли до уровня, скажем, 300 или 200 гПа.

bullterrier
Участник
Письмо
Пермь
# Дата: 27 Сен 2012 17:26


Corvus

Спасибо большое. А удельная влажность по высотам уже посчитана моделью, так что моя работа упрощается.

bullterrier
Участник
Письмо
Пермь
# Дата: 27 Сен 2012 18:06 - Поправил: bullterrier


Я сделал так:

'define ps = prmslmsl/100'
'define precwat = vint(ps,SPFHprs,200).


Получилось все правильно:


Еще раз спасибо за подсказку. Канадская модель, кстати, довольно неплохая. Поле ветра, например, у нее адекватнее, чем у GFS. А вот с приземной температурой у нее не очень, к сожалению.

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 27 Сен 2012 18:46


А вот с приземной температурой у нее не очень, к сожалению.
bullterrier

Поэтому я и ансамблирую ГФС и СМС.

ГФС завышает Тмин, занижает Тд, СМС завышает Тд. В среднем получается хорошо :)

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 28 Сен 2012 08:38


Многолетний архив данных радиозондирования по станциям России для использования в программе ГРАДС:

http://nomads.ncdc.noaa.gov/dods/IGRA_STATION_RAOB S/RS/

Mesocyclon
Участник
Письмо
Троицк, Челябинск, Челябинская область
# Дата: 29 Окт 2012 12:45


28 уроков GRADS
http://www.met.wau.nl/education/atmospract/

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 29 Окт 2012 17:13


Mesocyclon

А где там про ГРАДС? Вижу 28 уроков синоптической метеорологии (с рисунками, анализом карт и примерами).

spralex
Участник
Письмо
г. Конотоп, Сумская обл., Украина
# Дата: 29 Окт 2012 17:55


Corvus

Может, имеется ввиду вот это: http://www.met.wau.nl/education/atmospract/grads/g adocindex.html

Corvus
Автор сайта
Письмо
Владимир (г. Байконур)
# Дата: 29 Окт 2012 18:29


spralex

А, ну это стандартный (родной) хэлп ГРАДСа.

Mesocyclon
Участник
Письмо
Троицк, Челябинск, Челябинская область
# Дата: 4 Ноя 2012 18:09 - Поправил: Mesocyclon


Скрипт для ГРАДС текстовый прогон

'reinit'
'sdfopen http://nomads.ncep.noaa.gov:9090/dods/gfs_hd/gfs_h d20121104/gfs_hd_00z'
'set gxout print'
'set lat 54.05'
'set lon 61.63'
t = 3
while(t<=60)
'set t 't
'd prmslmsl/100'
r=sublin(result,2)
dtn=subwrd(r,1)
dt=substr(dtn,1,4)
'd apcpsfc'
r1=sublin(result,2)
dt1n=subwrd(r1,1)
dt1=substr(dt1n,1,4)
'd tmp2m-273.16'
r2=sublin(result,2)
dt2n=subwrd(r2,1)
dt2=substr(dt2n,1,4)
'd capesfc'
r3=sublin(result,2)
dt3n=subwrd(r3,1)
dt3=substr(dt3n,1,4)
'd tmpprs(lev=975)-273.16'
r4=sublin(result,2)
dt4n=subwrd(r4,1)
dt4=substr(dt4n,1,4)
rc=write(temp.txt,'+'t' 'dt' 'dt2' 'dt3' 'dt4' 'dt1,append)
t = t + 3
endwhile
******

вставил только 5 параметров но можно вставить больше.

Выводит вот что

+3 1022 0.00 0 -1.7 0
+6 1023 -0.2 0 -0.0 0
+9 1021 -0.3 0 0.34 0.3
+12 1021 3.69 0 2.44 0.1
+15 1017 2.96 0 3.34 0.2
+18 1016 1.31 0 2.54 0
+21 1022 1.38 4 1.14 0
+24 1027 -2.0 0 -3.0 0
+27 1025 -0.0 0 -1.9 0.2
+30 1020 0.57 0 1.34 0
+33 1014 2.59 0 2.84 0.7
+36 1015 4.28 0 4.04 0
+39 1017 1.03 0 3.54 0
+42 1016 0.00 0 1.94 0
+45 1014 -0.9 0 2.44 0
+48 1014 -0.4 0 1.23 0
+51 1015 1.26 0 0.34 0
+54 1015 0.41 0 2.23 0
+57 1009 0.88 0 0.94 2.3
+60 1013 -2.1 3 -3.3 0.1

Сохраняет в файле gfs.txt в папке C:\OpenGrADS\Contents\Resources\SampleDatasets

bullterrier
Участник
Письмо
Пермь
# Дата: 8 Ноя 2012 19:56


Mesocyclon

Спасибо за пример. Я тоже сделал текстовый прогноз по модели GEM. У меня получилось так:

'reinit'
say 'script v0.1.0 06.11.2012'
infile = '/home/bullterrier/work/models/gem/gem.ctl'
textpath = '/home/bullterrier/work/text/gem/'
'open 'infile
nperiod = 25

forecast (58,56,'Perm',nperiod,textpath)

'quit'

function forecast (latx,lony,cityname,np,tp)

'set t 1'
'q time'
times = sublin(result,1)
runtime = subwrd(times,3)

timex = 1

'set gxout print'

'set lat 'latx
'set lon 'lony

'crp = 0'
'ncrp = 0'

filename=tp%cityname%'.txt'

prompt 'Build forecast for'
prompt cityname
say '...'

rc=write(filename,'DATE WINDN WINDS T2M DEWPT SLP PREC PRECCONV PRECWAT W850N W850S T850 H850 W500N W500S T500 H500 CLOUD SNOW',append)

while(timex <= np)

if (timex>1)

prompt 'Time period #'
prompt timex
say '...'

'set t ' timex
'q time'
times = sublin(result,1)
timeword = subwrd(times,3)

'define slpr = prmslmsl/100'
'define tmp500 = tmpprs(lev=500)-273.15'
'define tmp850 = tmpprs(lev=850)-273.15'
'define u10m = ugrd10m'
'define v10m = vgrd10m'
'define gp500 = hgtprs(lev=500)/10'
'define gp850 = hgtprs(lev=850)/10'
'define t2m = tmp2m-273.15'
'define dewpoint = DPT2m-273.15'

'd wdir10m'
d=sublin(result,2)
d1=subwrd(d,1)

'd mag (u10m,v10m)'
d=sublin(result,2)
d2=subwrd(d,1)

'd t2m'
d=sublin(result,2)
d3=subwrd(d,1)

'd dewpoint'
d=sublin(result,2)
d4=subwrd(d,1)

'd slpr'
d=sublin(result,2)
d5=subwrd(d,1)

'rain=apcpsfc-ncrp'
'ncrp=apcpsfc'
'd rain'
d=sublin(result,2)
d6=subwrd(d,1)

'rain=acpcpsfc-crp'
'crp=acpcpsfc'
'd rain'
d=sublin(result,2)
d7=subwrd(d,1)

'ps = slpr'
'precwat = vint(ps,SPFHprs,200)'
'd precwat'
d=sublin(result,2)
d8=subwrd(d,1)

'd wdirprs(lev=850)'
d=sublin(result,2)
d9=subwrd(d,1)

'd mag (ugrdprs(lev=850),vgrdprs(lev=850))'
d=sublin(result,2)
d10=subwrd(d,1)

'd tmp850'
d=sublin(result,2)
d11=subwrd(d,1)

'd gp850'
d=sublin(result,2)
d12=subwrd(d,1)

'd wdirprs(lev=500)'
d=sublin(result,2)
d13=subwrd(d,1)

'd mag (ugrdprs(lev=500),vgrdprs(lev=500))'
d=sublin(result,2)
d14=subwrd(d,1)

'd tmp500'
d=sublin(result,2)
d15=subwrd(d,1)

'd gp500'
d=sublin(result,2)
d16=subwrd(d,1)

'd TCDCsfc'
d=sublin(result,2)
d17=subwrd(d,1)

'd SNODsfc*100'
d=sublin(result,2)
d18=subwrd(d,1)

mystr=timeword' 'd1' 'd2' 'd3' 'd4' 'd5' 'd6' 'd7' 'd8' 'd9' 'd10' 'd11' 'd12' 'd13' 'd14' 'd15' 'd16' 'd17' 'd18

rc=write(filename,mystr,append)

endif

timex = timex + 1

endwhile

return


bullterrier
Участник
Письмо
Пермь
# Дата: 8 Ноя 2012 19:58


Подскажите, а как в OpenGrads посчитать направление ветра в градусах, зная u и v компоненты ветра?

Cumulonimbus incus
Участник
Письмо
Кишинёв, Молдова
# Дата: 8 Ноя 2012 21:20


bullterrier

Вот так:

'define dir = 57.2957795131*atan2(u,v)+180'

bullterrier
Участник
Письмо
Пермь
# Дата: 8 Ноя 2012 21:31


Cumulonimbus incus

Большое спасибо!

Cumulonimbus incus
Участник
Письмо
Кишинёв, Молдова
# Дата: 9 Ноя 2012 23:05


Написал небольшую функцию для округления переменных.

function roundvar(arg)
'd 'arg
argstr = subwrd(result,4)
appxarg = math_nint(argstr)
'define appxarg = 'appxarg
return


Многие спросят: зачем эта функция нужна, если и так есть math_nint? Отвечаю: если ввести просто имя переменной как аргумент функции, то вылетит ошибка Argument is not a valid numeric, так как любая переменная поначалу есть строка. Её-то, понятно, округлить нельзя. Функция позволяет обойти это ограничение.

<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >>
Ваш ответ

          Отменить *Что это?

 » Логин  » Пароль 
 
 
Полезная информация:



Поддержка: miniBB forum software © 2001-2017