Professional Documents
Culture Documents
Ciências Atmosféricas
Versão 1.0
Outubro de 2012
1 Introdução
b) Na figura acima, note que no lado esquerdo há um menu Data Access & Plotting.
Clique na primeira opção Reanalysis Datasets. Com isso aparecerá a janela:
c) Na figura acima são oferecidos dados de diferentes conjuntos de reanálises. Se você
quer dados do ano corrente, escolha a primeira opção: NCEP/NCAR Reanalysis I (1948-
present). Ao clicar nessa opção aparecerá a janela:
d) Note que são oferecidos dados a cada 6 horas, diários e mensais. Então, basta clicar
na opção desejada. Se você quer dados diários, clique na primeira opção. Assim,
aparecerá a janela:
e) Se você olhar o fundo da figura acima notará que há várias opções de dados: pressure
level, surface, etc. Se você quiser uma variável que é só medida na superfície, como o
caso da pressão ao nível médio do mar, deve-se clicar em surface. Após clicar nessa
opção, aparece uma nova janela com uma lista de diversas variáveis atmosféricas. Ache
o nome da variável que lhe interessa (que no caso é sea level pressure), clique na figura
que fica a direita do nome da variável. Uma nova janela se abrirá e você deve clicar na
figura, como mostra a janela abaixo.
4 Utilização do GrADS
Exemplo:
sdfopen C:\Reboita\aula\slp2010.nc
Após digitar o comando aperte a tecla enter. Observe que aparecerão todas as
informações referentes ao arquivo: LON (longitude), LAT (latitude), LEV (níveis
verticais) e time (tempo inicial dos dados).
dset C:\Reboita\aula\mslp.bin
undef 9.999E+20
title pressao
options little_endian
ydef 181 linear -90.0 1.0
xdef 360 linear 0.0 1.0
tdef 40 linear 00Z05Mar2010 6hr
zdef 1 levels 1000
vars 1
mslp 1 0 pressao
endvars
Significado de cada linha do arquivo descritor
Obs: um arquivo binário pode conter várias variáveis em diferentes níveis verticais e
cobrindo muitas latitudes e longitudes.
Exemplo:
open C:\Reboita\aula\mslp.ctl
Uso da Opção Template
Notas:
- a entrada DSET tem um template de substituição ao invés do nome do arquivo.
Abaixo segue uma descrição de todos os possíveis componentes de um template;
- a entrada OPTIONS deve conter a palavra-chave template;
- a entrada TDEF descreve os limites de tempo para o conjunto todo dos arquivos de
dados.
Exemplos
DSET ^%d1may92.dat
OPTIONS template
TDEF 744 linear 0z1may1992 1hr
1jun92.dat
2jun92.dat
...
1jan93.dat
Então será necessária a adição de um template para cada mês e ano na entrada
DSET e o prolongamento do alcance do TDEF:
DSET ^%d1%mc%y2.dat
OPTIONS template
TDEF 6624 linear 0z1may1992 1hr
pr.1880_1889.nc
pr.1890_1899.nc
pr.1900_1909.nc
pr.1910_1919.nc
pr.1920_1929.nc
pr.1930_1939.nc
pr.1940_1949.nc
DSET ^pr.%x30_%x39.nc
OPTIONS template
DTYPE netcdf
TDEF 840 linear jan1880 1mo
PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20121123.RT
PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20121124.RT
PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.20121125.RT
PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.RT.ctl
Nosso objetivo é editar o arquivo descritor (ctl) para abrir os três arquivos
binários com dados de precipitação (em 0,1 mm por dia) de uma única vez no GrADS.
O arquivo descritor obtido do site contém as seguintes informações:
dset /export/cpccfnfs/cpcsat/cpcUniGaugeRT/PRODUCTS/GRID/%y4/gridGLB
/DEG0.500M/PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.%y4%m2%d2.RT
options little_endian template
title global daily analysis (grid box mean, the grid shown is the center of the grid box)
undef -999.0
xdef 720 linear 0.25 0.50
ydef 360 linear -89.75 0.50
zdef 1 linear 1 1
tdef 2156 linear 01jan2007 1dy
vars 2
rain 1 00 the grid analysis (0.1mm/day)
gnum 1 00 the number of stn
ENDVARS
Se for colocado o template %ch na entrada DSET, então também será necessária
a colocação da entrada adicional CHSUB no arquivo descritor e este deverá conter dois
inteiros (t1 e t2) seguidos pelo conjunto de caracteres que será substituído por %ch nos
nomes dos arquivos de dados para os passos de tempo começando com
t1 e terminando com t2. A entrada CHSUB no arquivo descritor tem a seguinte sintaxe:
Exemplo
Se estes dois arquivos de dados forem colocados em diferentes discos, pode ser
escrita a seguinte entrada no arquivo descritor:
DSET %ch
CHSUB 1 600 /disk1/pr.1851-1900.nc
CHSUB 601 1800 /disk2/pr.1901-2000.nc
Com o comando q file observou-se que o arquivo possui 124 tempos. Para fazer
o gráfico da variável slp num dado tempo é necessário indicar esse tempo. Para isso é
usado o comando: set t seguido do tempo desejado. A variável é plotada com o comado
display seguido do nome da variável. O comando display pode ser abreviado pela letra
d.
d slp/100
O tempo também pode ser definido com o comado: set time data
Exemplo:
set time 00Z01Jan2010
Observe que os meses que são colocados na expressão acima são abreviações da
língua inglesa: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov e Dec.
Nas instruções acima foi criado um mapa para a América do Sul. Para salvar
essa figura utiliza-se o comando printim. Esse comando permite salvar a figura no
formato jpeg ou gif. Muitas vezes, as figuras salvas nesses formatos possuem baixa
qualidade. Portanto, pode-se utilizar um conjunto de comandos para salvar a figura no
formato gmf. As figuras em gmf podem ser visualizadas com o software gv32.exe
disponível para download em http://www.iges.org/grads/downloads.html.
Até agora foram plotados gráficos de linhas. Agora vamos adicionar a opção que
deixa a figura preenchida. Para isso, será usado o comando set gxout shaded.
c
set t 10
set lat -60 10
set lon -80 -30
set gxout shaded
d slp/100
Observe na janela de comandos que os valores da pressão variam de 975 a 1020
hPa e que a figura foi construída com intervalos de 5 hPa. Agora se deseja mudar os
intervalos para 4 hPa e definir cores para eles. Vamos utilizar os comandos set clevs e
set ccols. O GrADS possui uma tabela com o número das cores. Assim, basta
consultamos a tabela (ver abaixo). Mais adiante, quando alcançarmos o tópico scripts,
vamos apreender a construir tabelas de cores.
Tabela de Cores
Em http://www.iges.org/grads/gadoc/gadocindex.html é apresentada a seguinte tabela
de cores:
9 14 4 11 5 13 3 10 7 12 8 2 6
Como foram colocados 12 valores ao lado do commando clevs, temos que ter 13 cores
definidas ao lado do comando ccols.
set ccols cores
No exemplo abaixo será utilizada a sequência de cores do arco-íris
set ccols 9 14 4 11 5 13 3 10 7 12 8 2 6
d slp/100
Também podemos adicionar linhas de contorno na figura acima. Depois da
sequência de comandos digitados acima, acresente:
run C:\Reboita\aula\cbar.gs
Na figura abaixo foram inseridas duas paletas uma com cbar e outra com cbarn.
Note a diferença entre elas.
O cbarn.gs nos oferece algumas opções como modificar a localização da paleta
(vertical ou horizontal), deixa-la mais perto ou longe da figura, ou deixa-la mais fina ou
grossa.
Espessura da Paleta
mudar o número (tamanho) multiplicado por esse fator do run cbarn (1.2)
Atividade
4.8 Gráficos
Dados em Grade
Há uma série de opções que podem ser utilizadas para formatar as linhas de
contorno de um gráfico.
Cor da linha
Estilo da linha
0 nenhum
1 sólido
2 tracejado longo
3 tracejado curto
4 tracejado longo intercalado com curto
5 pontilhado
6 pontilhado – tracejado
7 duplo pontilhado seguido de tracejado
set cstyle 2
espessura varia 1 a 10
tamanho varia 0 a 1
set xlopts cor espessura tamanho cor espessura e tamanho do label eixo x
set xlopts 1 0.14 0.14
set ylopts cor espessura tamanho cor espessura e tamanho do label eixo y
set ylopts 1 0.14 0.14
O comando draw é usado para inserção de títulos. Deve ser inserido após o
display do gráfico.
Observação: para aqueles que não gostam de tela preta, o GrADS tem a opção de deixar
a tela gráfica branca, para isso é necessário digitar os comandos:
Acessar o site do NCEP, reanálise 1, baixar os dados horários do mês de junho de 2012
das componentes zonal e meridional em 200 hPa. Renomear os arquivos para:
u_0612.nc e v_0612.nc.
sdfopen C:\Reboita\aula\u_0612.nc
sdfopen C:\Reboita\aula\v_0612.nc
Como foram abertos dois arquivos, será necessário colocar o número da ordem
de abertura nas variáveis. No arquivo u_0612.nc tem-se a variável uwnd, que será
identificada por uwnd.1, já para o arquivo v_0612.nc, a variável será identificada como
vwnd.2. O gráfico de vetores pode ser feito através de dois comandos:
d uwnd.1;vwnd.2
ou
d skip(uwnd.1,2);vwnd.2
set arrscl valor magnitude comprimento do vetor de acordo com magnitude. O valor
deve ser entre 0.5 a 1. Já a magnitude depende dos valores dos dados em análise.
set t 3
set gxout vector
set arrscl 0.5 40
set arrowhead 0.075
d skip(uwnd.1,3);vwnd.2
Junto com a direção do vento é interessante representar a sua intensidade. Para
isso, antes de plotar a direção, a magnitude do vento é calculada e após plotada.
define magnitude=sqrt(pow(uwnd.1,2)+pow(vwnd.2,2))
OBS: Os comandos abaixo não estão funcionando
define magnitude=sqrt((uwnd.1**2)+ (vwnd.2**2))
define magnitude=mag(uwnd.1,vwnd.2)
reset
set t 3
set grads off
set gxout shaded
define magnitude=mag(uwnd.1,vwnd.2)
d magnitude
set gxout vector
set arrscl 0.5 40
set arrowhead 0.075
d skip(uwnd.1,3);vwnd.2
Além das opções mostradas no item 4.8.1, tem-se para esse tipo de gráfico:
set strmden value densidade das linhas de corrente. Varia de 1 a 10. O valor 5 é default.
Observe que há menos linhas de corrente (stream lines) na cor azul do que na
preta.
Para construir essa figura, vamos obter no site do NCEP a componente zonal do
vento no dia 10 de junho de 2012 às 12 UTC em todos os níveis verticais. O arquivo se
chamará u_vertical.nc
sdfopen C:\Reboita\aula\u_vertical.nc
set lon -100 0
set lat -45
set z 1 17
set gxout shaded
d uwnd
set gxout contour
set clopts 1 10 0.16
set ccolor 1
d uwnd
draw title Secao Vertical do Vento Zonal
draw xlab Longitude
draw ylab Altura (hPa)
Para a escala logarítmica usa-se set zlog on.
sdfopen C:\Reboita\aula\u_vertical.nc
set lon -100 0
set lat -45
set z 1 17
set zlog on
set xlopts 1 0.14 0.14
set ylopts 1 0.14 0.14
set gxout shaded
d uwnd
set gxout contour
set clopts 1 10 0.16
set ccolor 1
d uwnd
draw title Secao Vertical do Vento Zonal
draw xlab Longitude
draw ylab Altura (hPa)
4.9 Mapas e Formatação
set map 2 1 10
d slp/100
Tipos de projeções
set mproj latlon razão de aspecto mantida na tela (default). Essa é a projeção
utilizada nos gráficos mostrados anteriormente.
set mproj scaled idem a latlon, porém com razão de aspecto não mantida na tela
set mproj sps estereográfica polar (HS) ou nps estereográfica polar (HN)
set mproj robinson Robinson
set mproj orthogr ortogonal
set mproj mollweide
set mproj lambert Cônica conformal Lambert
set mproj off sem projeção
Exemplos:
set grads off
set t 1
set mproj latlon
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao LatLon
printim C:\Reboita\aula\mapa_latlon.gif white
set parea xmin xmax ymin ymax x e y fornecem as coordenadas para a posição dos
gráficos
Repita mais três vezes a mesma sequência de comandos acima, mas trocando a
data e usando para cada uma das sequências os seguintes valores de set parea:
set parea 6 10 4.5 7.5
set parea 1 5 0.5 3.5
set parea 6 10 0.5 3.5
Esse último comando escreve o texto no ponto x,y. Lembre-se que a tela gráfica
é definida em unidades virtual e no formato paisagem tem 11 unidades no eixo x e 8,5
unidades no eixo y.
set string 1 l 5 0
set strsiz 0.25 0.25
draw string 3.9 8.3 Pressao (hPa)
4.12 Scripts
Nos scripts:
Vamos gerar alguns scripts. O primeiro será para a construção de figuras com
diferentes projeções cartográficas, como as apresentadas no item 4.9. Inicialmente, abre-
se o editor de texto, salva-se o arquivo com um determinado nome, por exemplo
mapas.gs, e inicia-se a inserção dos comandos.
______________________________________________________________________
*Este programa gera mapas com diferentes projeções cartograficas
*Criado em 01/11/2012
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
run C:\Reboita\aula\mapas.gs
Agora os comandos que foram utilizados para gerar múltiplas figuras de pressão
atmosférica numa mesma janela gráfica também serão inseridos num script.
______________________________________________________________________
*Este programa gera quatro figuras numa mesma janela gráfica
*Criado em 01/11/2012
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
Também é possível criar scripts para gerar tonalidades de cores que não são
defaults do GrADS. Para isso é usado o sistema RGB.
Portanto, no sistema RGB, as cores são criadas pela mistura de três cores
(vermelho, verde e azul). Assim, em programação se fornecem três valores, cada qual
podendo variar entre 0 e 255. Uma sequência de três zeros corresponde a cor preta e
uma de três 255, a cor branca. Na internet, há várias páginas que apresentam tabelas de
cores com os valores de RGB, por exemplo, http://efeitosespeciais.net/tabela.htm. Uma
cópia da tabela de cores desse site é reproduzida no anexo.
Agora vamos criar um script com oito tonalidades de azul e salvá-lo com o nome
cor_azul.gs. Como esse script será usado dentro de outros, não vamos usar reinit.
cor_azul.gs
______________________________________________________________________
'set rgb 30 51 255 255'
'set rgb 31 51 209 236'
'set rgb 32 51 185 227'
'set rgb 33 51 162 218'
'set rgb 34 51 116 199'
'set rgb 35 51 70 181'
'set rgb 36 51 23 162'
'set rgb 37 51 0 153'
______________________________________________________________________
slp_cor_azul.gs
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
'run C:\Reboita\aula\cor_azul.gs'
______________________________________________________________________
4.13.1 Concatenação
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
minlat = -30
maxlat = minlat + 60
minlon = -90
maxlon = -30
'set lat 'minlat' 'maxlat''
'set lon 'minlon' 'maxlon''
'd slp/100'
______________________________________________________________________
4.13.2 Say
______________________________________________________________________
'reinit'
say 'Hello'
expressao = 'IRADO'
say ' '
say 'Aprender o GrADS eh muito 'expressao
say ' '
say 'Bye'
______________________________________________________________________
4.13.3 Pull
O comando pull juntamente com say nos permite capturar informações digitadas
na janela de comandos do GrADS. Para esse exemplo, vamos criar um script com o
nome de ling_3.gs. Nesse mesmo script, também vamos aprender a definir uma variável
(ver comando define).
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
say Digite ' ' menor ' ' latitude
pull minlat
say Digite ' ' maior ' ' latitude
pull maxlat
say Digite ' ' menor ' ' longitude
pull minlon
say Digite ' ' maior ' ' longitude
pull maxlon
say Plota ' ' o ' ' Mapa
'set lat 'minlat' 'maxlat''
'set lon 'minlon' 'maxlon''
'define pres=slp/100'
'set gxout contour'
'd pres'
______________________________________________________________________
4.13.4 Operadores
while /endwhile
Sintaxe
while
linha de comando
.
endwhile
Vamos criar um script com o nome ling_4.gs para testar essa sintaxe.
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
tempo = 1
while (tempo <= 25)
'set t 'tempo
'd slp/100'
'c'
tempo = tempo + 1
endwhile
______________________________________________________________________
if / else / endif
Sintaxe
if expressão
linha de comando
.
else
linha de comando
.
endif
Vamos criar um script com o nome ling_5.gs para testar essa sintaxe.
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
tempo = 1
while (tempo <= 25)
'set t 'tempo
if tempo=1
'define pres=slp'
endif
'd slp/100'
'c'
tempo = tempo + 1
endwhile
______________________________________________________________________
Exemplos:
set t 1
q dims
lin = sublin(result,5) guarda em lin a informação que aparece na quinta linha.
data = subwrd(lin,6) pega a informação que está na posição 6 da linha selecionada
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
'set t 10'
'q dims'
lin=sublin(result,5)
say 'Informacao obtida no sublin'
say lin
data=subwrd(lin,6)
say 'Informacao obtida no subwrd'
say data
'd slp/100'
say 'Usaremos a informacao armazenada na data'
'draw title 'data''
_____________________________________________________________________
Exercício: crie um script com as informações abaixo. Salve como ling_7.gs. Descreva o
que o programa faz.
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
i0=1
while(i0 <= 124)
'set t 'i0
'q time'
data_val=subwrd(result,5)
'set lat -50 15'
'set lon -100 -20'
'set mpdset hires'
'set map 1 1 6'
'set ylopts 1 4 0.16'
'set xlopts 1 4 0.16'
'd slp/100'
'draw title SLP - 'data_val
'printim C:\Reboita\aula\'i0'_slp_'data_val'.gif white'
pull n
'c'
i0= i0+1
endwhile
______________________________________________________________________________
Para visualizar um gráfico por vez, clique sobre a janela de comandos e aperte a
tecla enter. Cada vez que você pressionar a tecla enter, aparecerá um novo gráfico.
4.14 Salvando Arquivos nos Formatos Binário e Texto
Formato Binário
______________________________________________________________________
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
'set t 1 2'
'set x 1 144'
'set y 1 73'
'set gxout fwrite'
'set fwrite C:\Reboita\aula\pressao.bin'
'd slp/100'
'disable fwrite'
'quit'
______________________________________________________________________
Outra novidade contida no programa é o comando quit, que serve para fechar o
GrADS após a execução de um trabalho.
dset C:\Reboita\aula\pressao.bin
undef 9.999E+20
title pressao
options little_endian
ydef 73 linear -90.0 2.5
xdef 144 linear 0.0 2.5
tdef 2 linear 00Z01Jan2010 6hr
zdef 1 levels 1000
vars 1
slp 1 0 pressao
endvars
open C:\Reboita\aula\pressao.ctl
Formato Texto
______________________________________________________________________
'reinit'
'!rm -f C:\Reboita\aula\dadostxt.dat'
'sdfopen C:\Reboita\aula\slp2010.nc'
i=1
while(i<=124)
'set t 'i
'set lat -22'
'set lon -52'
'set gxout print'
'd slp/100'
valor=sublin(result,2)
say valor
write('C:\Reboita\aula\dadostxt.dat',valor)
i=i+1
endwhile
close('C:\Reboita\aula\dadostxt.dat')
______________________________________________________________________
Agora vamos salvar todos os pontos de grade entre 90o S e 0 num único tempo
(mas o programa já ficará arrumado para a gravação de mais tempos). Vamos utilizar os
mesmos comandos destacados no script acima, porém como temos que varrer todos os
pontos de grade, faremos um contador para a latitude. Além disso, vamos utilizar o set
prnopts que será explicado na sequencia. É importante destacar que os dados no
GrADS, em geral, estão armazenados da menor latitude para a maior latitude (-90o a
+90o), porém na representação gráfica (nos mapas) os dados são dispostos de +90o a -
90o. Assim, no programa ling_10.gs, que será mostrado abaixo, os dados serão salvos
da menor para a maior latitude (-90 a 0). Isto é, a primeira linha representará a latitude
90º S, a segunda 87,5º S e assim por diante.
Controla a forma que os valores são impressos quando set gxout print é usado.
Algumas Observações
A primeira linha da saída ascii informa quantos valores de dados estão sendo impressos
como também os valores de dados ausentes.
ling_10.gs
______________________________________________________________________
'reinit'
'!rm -f C:\Reboita\aula\dadosgrade.dat'
'sdfopen C:\Reboita\aula\slp2010.nc'
*Numero de pontos em x e y
nx=144
ny=37+1
*looping no tempo
i=1
while(i<=1)
'set t 'i
'set x 1 'nx''
*looping nas latitudes
*Temos que começar em dois para não armazenar
*a linha de informações Printing Grid
y=2
while(y<=ny)
'set gxout print'
'set prnopts %10.2f 'nx' 1'
'd slp/100'
valor=sublin(result,y)
*say valor
write('C:\Reboita\aula\dadosgrade.dat',valor)
y=y+1
endwhile
i=i+1
endwhile
close('C:\Reboita\aula\dadosgrade.dat')
______________________________________________________________________
Agora, imagine que você está interessado em gravar os dados de forma que a
latitude 0 seja a primeira linha do arquivo e a latitude -90 a última linha. Para isso, veja
o script ling_11.gs.
______________________________________________________________________
'reinit'
'!rm -f C:\Reboita\aula\dadosgrade_inv.dat'
'sdfopen C:\Reboita\aula\slp2010.nc'
*Numero de pontos em x (nx) e y (ny)
nx=144
ny=37+1
*looping no tempo
i=1
while(i<=1)
'set t 'i
'set x 1 'nx''
*looping nas latitudes
*Temos que começar em dois para não armazenar
*a linha de informações Printing Grid
y=ny
while(y>1)
'set gxout print'
'set prnopts %10.2f 'nx' 1'
'd slp/100'
valor=sublin(result,y)
*say valor
write('C:\Reboita\aula\dadosgrade_inv.dat',valor)
y=y-1
endwhile
i=i+1
endwhile
close('C:\Reboita\aula\dadosgrade_inv.dat')
______________________________________________________________________
Formato Netcdf
25 26 28
27 30 29
(i,j)
27 28 28
Considere que a distância entre cada ponto de grade seja de 100 km.
Considere que a
∆𝑥 = ∆𝑦 = 100 𝑘𝑚
distância entre cada
𝜕𝑇 𝑇𝑖+1,𝑗 − 𝑇𝑖−1,𝑗
𝜕𝑥
= ponto de grade seja de
2 ∆𝑥
100 km.
𝜕𝑇 29 − 27
= = 0,01𝑜 𝐶/𝑘𝑚
𝜕𝑥 2 (100)
⃗ ∙ ∇𝑇
−𝑉
Sabendo-se que:
𝜕𝑇 𝜕𝑇
⃗ = 𝑢𝑖 +v𝑗
𝑉 𝛻⃗𝑇 = 𝜕𝑥 𝑖 + 𝜕𝑦 𝑗
𝜕𝑇 𝜕𝑇
𝐴𝑑𝑣𝑇 = − (𝑢 +𝑣 )
𝜕𝑥 𝜕𝑦
'define dx = 6.37E6*cos(lat*(3.14159/180))*cdiff(lon,x)*(3.14159/180)'
'define dy = 6.37E6*cdiff(lat,y)*(3.14159/180)'
______________________________________________________________________
*Este programa calcula a advecção horizontal de temperatura
'reinit'
'sdfopen C:\Reboita\aula\air_0310.nc'
'sdfopen C:\Reboita\aula\uwnd_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_0310.nc'
'define dx = 6.37E6*cos(lat*(3.14159/180))*cdiff(lon,x)*(3.14159/180)'
'define dy = 6.37E6*cdiff(lat,y)*(3.14159/180)'
Nas duas primeiras semanas de março de 2010 ocorreu próximo à costa do sul
do Brasil o ciclone Anita. Calcule a advecção de temperatura associada a esse sistema
às 06Z10Mar2010 entre as latitudes -40 e -20 e as longitudes -60 e -30. Plote os vetores
do vento sobre o campo de advecção de temperatura (ling_13.gs).
Vento Geostrófico
Em coordenadas esféricas:
1 𝜕∅ 1 𝜕∅
𝑢𝑔 = − 𝑣𝑔 =
𝑓 𝑎 𝜕𝜑 𝑓 𝑎 𝑐𝑜𝑠𝜑 𝜕𝜆
hgt_200_0310.nc
uwnd_200_0310.nc
vwnd_200_0310.nc
𝜙(𝑍)
𝑍≡
𝑔𝑜
______________________________________________________________________
*Este programa calcula o vento geostrofico
'reinit'
'sdfopen C:\Reboita\aula\hgt_200_0310.nc'
'sdfopen C:\Reboita\aula\uwnd_200_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_200_0310.nc'
'define f=2*7.292e-5*sin(lat*(3.14159/180))'
'define ug=-1/f*(cdiff(9.8*hgt.1,y)/dy)'
'define vg=1/f*(cdiff(9.8*hgt.1,x)/dx)'
'define ua=uwnd.2-ug'
'define va=vwnd.3-vg'
Divergência
𝜕𝑢 𝜕𝑣
𝐷= +
𝜕𝑥 𝜕𝑦
Já em coordenadas esféricas:
𝜕𝑢 𝜕𝑣
𝐷= +
𝑎 cos 𝜑 𝜕𝜆 𝑎 𝜕𝜑
______________________________________________________________________
*Este programa calcula a divergencia
*valores + = div valores - = conv
'reinit'
'sdfopen C:\Reboita\aula\uwnd_200_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_200_0310.nc'
'define dx = 6.37E6*cos(lat*(3.14159/180))*cdiff(lon,x)*(3.14159/180)'
'define dy = 6.37E6*cdiff(lat,y)*(3.14159/180)'
'define dudx=(cdiff(uwnd.1,x)/dx)'
'define dvdy=(cdiff(vwnd.2,y)/dy)'
'define div=dudx+dvdy'
𝜕𝑣 𝜕𝑢
𝜁= −
𝜕𝑥 𝜕𝑦
Já em coordenadas esféricas:
𝜕𝑣 𝜕𝑢
𝜁= −
𝑎 cos 𝜑 𝜕𝜆 𝑎 𝜕𝜑
'reinit'
'sdfopen C:\Reboita\aula\uwnd_200_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_200_0310.nc'
'define dx = 6.37E6*cos(lat*(3.14159/180))*cdiff(lon,x)*(3.14159/180)'
'define dy = 6.37E6*cdiff(lat,y)*(3.14159/180)'
'define dvdx=(cdiff(vwnd.2,x)/dx)'
'define dudy=(cdiff(uwnd.1,y)/dy)'
'define vort=dvdx-dudy'
gint (expr) integral de expr (similar a ave, mas não divide pela área total)
log(expr) cálculo do logaritmo natural de expr Valores menores ou igual a zero são
indefinidos.
sqrt(expr) raiz quadrada de expr. Valores menores do que zero são faltantes.
skip (expr, skipx, skipy) seta valores alternantes de expr na grade X,Y. Usada
principalmente para diminuir a densidade de vectors e barbs
expr expressão da variável
skipx fator de skip na direção X
skipy fator de skip na direção Y
______________________________________________________________________
*Este programa calcula a divergencia, vorticidade relativa e magnitude
*do vento usando funcoes pre-definidas.
'reinit'
'sdfopen C:\Reboita\aula\uwnd_200_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_200_0310.nc'
*Divergencia
'define div=hdivg(uwnd.1,vwnd.2)'
*Vorticidade
'define vort=hcurl(uwnd.1,vwnd.2)'
*Magnitude do vento
'define magnitude=mag(uwnd.1,vwnd.2)'
*Figuras
'set gxout shaded'
'd div*10E5'
'run cbarn.gs'
'set gxout contour'
'set ccolor 1'
'set cmax -0.1'
'd vort*10E5'
'draw title Divergencia (Shaded) e Vorticidade Relativa Ciclonica'
'printim C:\Reboita\aula\divergencia2.gif white'
pull n
'c'
'set gxout shaded'
'd magnitude'
'run cbarn.gs'
'set gxout vector'
'set ccolor 1'
'd skip(uwnd.1,2);vwnd.2'
'draw title Magnitude e Vetor Vento'
'printim C:\Reboita\aula\mag_vector.gif white'
______________________________________________________________________
mean (expr, dim1, dim2, tinc) idem a ave, mas not grid weighted
______________________________________________________________________
* Este programa calcula a media da TSM em pontos de grade
'reinit'
'sdfopen C:\Reboita\aula\sst_0111_0912.nc'
******************************************************************
*Media na area
'set t 1'
'define mjana=aave(sst,lon=0,lon=357.5,lat=-90,lat=90)'
______________________________________________________________________
max(expr, dim1, dim2 ,tinc) máximo valor de expr na dimensão especificada tinc é
opcional no caso da dimensão ser T
min(expr, dim1, dim2, tinc) mínimo valor de expr na dimensão especificada tinc é
opcional no caso da dimensão ser T
const (expr, value, -u|-a) mudança de valores missing (faltantes) para uma constante;
mudança de valores non-missing de uma variável para uma constante
expr variável
value constante inteira ou ponto flutuante
-u usa todos dados missing; dados non-missing não são mudados
-a todos dados são mudados
ling_19.gs
______________________________________________________________________
* Exemplo de suavizacao de dados
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
'set t 1'
'set gxout shaded'
'set clevs 990 995 1000 1005 1010 1015 1020 1025 1030'
'd slp/100'
'printim C:\Reboita\aula\slp_orig.gif white'
pull n
'c'
'set t 1'
'set gxout shaded'
'set clevs 990 995 1000 1005 1010 1015 1020 1025 1030'
'd smth9(smth9(smth9(slp/100)))'
'printim C:\Reboita\aula\slp_suav.gif white'
______________________________________________________________________
ling_20.gs
______________________________________________________________________
'reinit'
'open C:\Reboita\aula\PRCP_CU_GAUGE_V1.0GLB_0.50deg.lnx.RT.ctl'
'set lat -55 10'
'set lon 270 330'
*Sem suavizar
'set gxout shaded'
'set clevs 1 2 3 4 6 10 20 30 40 50'
'set ccols 0 8 12 7 10 3 13 5 11 4 14'
'd rain/10'
'cbarn'
'draw title Precipitacao (mm/dia)'
'printim C:\Reboita\aula\prec_cpc.gif white'
pull n
'c'
*Suavizando
'set gxout shaded'
'set clevs 1 2 3 4 6 10 20 30 40 50'
'set ccols 0 8 12 7 10 3 13 5 11 4 14'
'd smth9(smth9(rain/10))'
'cbarn'
'draw title Precipitacao Suavizada (mm/dia)'
'printim C:\Reboita\aula\prec_cpc.gif white'
______________________________________________________________________
maskout(expr,mask) quando o valor de mask for menor do que zero não será plotada
nenhum dado de expr
0 oceano
1 continente
Se você quer que não sejam plotados dados sobre o continente, na máscara os
dados sobre o continente devem ser negativos. Se o interesse é não plotar dados sobre o
oceano, na máscara os dados sobre o oceano devem ser negativos. Veja que a máscara
do NCEP não apresenta valores negativos. Nesse caso, vamos ter que manipular os
dados.
______________________________________________________________________
*Uso do maskout
*OBS: não é possível manter arquivos com dimensoes diferentes abertos concomitantemente
*assim, vamos abrir o arq da mascara, definir a variavel e fechar o arquivo
'reinit'
'sdfopen C:\Reboita\aula\land.nc'
'define mask=land'
'close 1'
'sdfopen C:\Reboita\aula\slp2010.nc'
pull n
'c'
Muitas vezes criamos scripts para gerar uma sequência de figuras. Com o
comando pull n, podemos visualizar figura por figura, mas sem retrocedê-las. É possível
através do comando q pos, de uma sequência simples de comandos e da utilização do
mouse avançar ou retroceder as figuras.
q pos após o acionamento deste comando, o GrADS para a execução do script até
que seja dado um clique do mouse pelo usuário.
______________________________________________________________________
*Criando botoes
'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'
tempo=1
tfim=5
while (tempo<=tfim)
'set t 'tempo
'set grads off'
'set gxout shaded'
'set xlopts 1 0.14 0.14'
'set ylopts 1 0.14 0.14'
'd slp/100'
*pull n
*'c'
tempo=tempo+1
'q pos'
lt=sublin(result,1)
say lt
click=subwrd(lt,5)
say click
'c'
endwhile
______________________________________________________________________
-20 300
-22 302
-23 310
-26 320
-28 326
-29 330
Script trajetorias.gs
______________________________________________________________________
'sdfopen C:\Reboita\aula\slp2010.nc'
*Plotando o mapa de fundo
'set display color white'
'c'
'set mpdset mres'
'set map 1 1 1'
* plotagem do mapa
'set cmax -10000000'
'set lat -50 -5'
'set lon 270 340'
'set grads off'
'd slp'
*Numero de posicoes (lat,lon)
numpos=6
i=0
while (i<=numpos-1)
ret = read('C:\Reboita\aula\trk0804.dat0082')
rec = sublin(ret,2)
lat = subwrd(rec,1)
lon = subwrd(rec,2)
*Plota os pontos
'set line 2 1 5'
'draw mark 3 'x' 'y' 0.1'
*Liga-pontos
'set cstyle 1'
'set line 2 1 5'
if (i>0)
say 'Entrei no if de i>0'
'draw line 'xold' 'yold' 'x' 'y
endif
xold=x; yold=y
i=i+1
endwhile
______________________________________________________________________
Referências
- Apostila GrADS
- Apostila Everaldo
Anexos