You are on page 1of 89

Utilização do Software GrADS em

Ciências Atmosféricas

Profa. Michelle Reboita

Versão 1.0

Outubro de 2012
1 Introdução

O software Grid Analysis and Display System (GrADS) é uma ferramenta de


manipulação e visualização de dados relacionados às ciências da Terra. O GrADS é um
software livre e pode ser obtido em http://opengrads.org/.

Antes da apresentação do recursos do GrADS, são mostrados alguns sítios da


internet que provêm dados meteorológicos que podem ser trabalhados nesse software.

2 Fontes de Dados Meteorológicos

Um sítio da internet que disponibiliza dados meteorológicos do planeta dispostos


em pontos de grade é o do National Oceanic and Atmospheric Administration (NOAA).
Os dados estão no formato Network Common Data Form (netcdf). Veja abaixo, através
da sequência de figuras como obter os dados.

a) Digite no seu navegador: www.cdc.noaa.gov


Aparecerá a seguinte janela:

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.

f) Agora basta preencher as informações de latitude e longitude e período que você


deseja obter os dados. Após clique em create a subset without making a plot. Com isso
abrirá uma nova janela e você deve clicar em FTP a copy of the file e salvar o arquivo.
No exemplo mostrado é obtido do sítio da NOAA dados de pressão ao nível médio do
mar do globo todo do período de 1º de janeiro de 2010 às 00 UTC até 31 de janeiro de
2010 às 18 UTC.
O European Centre for Medium-Range Weather Forecasts (ECMWF) também
disponibiliza dados meteorológicos globais. Porém, antes de você fazer o download é
necessário se registrar no sítio. Para saber mais detalhes desses dados visite: http://data-
portal.ecmwf.int/data/d/era40_daily/ para obter dados da reanálise ERA-40 e http://data-
portal.ecmwf.int/data/d/interim_daily/ para obter dados da reanálise ERAInterim.

3 Obtendo o Software GrADS

O software GrADS é um software gratuito e que está disponível no sítio:


http://opengrads.org/.

Após acessar o sítio, clique em Download. Aparecerá uma janela mostrando


várias versões do GrADS para os sistemas operacionais Linux e Windows. Agora basta
escolher a versão desejada, fazer o download e instalar em seu computador.
Os exemplos fornecidos nessa apostila foram executados com a versão 2.0a5.oga.5.

4 Utilização do GrADS

4.1 Inicializando o GrADS

Se o GrADS for instalado no Windows aparecerá um ícone com a figura de uma


tartaruga e a palavra OpenGrADS na Área de Trabalho do seu computador. Para utilizar
o software basta clicar no ícone. Inicialmente, uma janela é aberta e você deve clicar na
mesma e pressionar no seu teclado o botão enter. Assim, mais uma janela se abrirá. A
primeira janela é o local onde se digitam os comandos do GrADS e a segunda serve
para a visualização das figuras produzidas no software.

4.2 Leitura de Arquivos

O GrADS lê arquivos em vários formatos, mas nesta apostila serão apresentados


os procedimentos para a leitura de arquivos netcdf e binário. Estes formatos são os mais
utilizados na Meteorologia.

4.2.1 Formato NETCDF

Os arquivos netcdf trazem dentro deles um rol de informações que descrevem os


dados, por exemplo, latitudes, longitudes, níveis verticais e tempo. Para exemplificação
da execução dos comandos do GrADS com dados no formato netcdf, será utilizado o
conjunto de dados de pressão ao nível médio do mar do mês de janeiro de 2010 obtido
do site da NOAA (ver seção 2). Renomeie o arquivo de dados baixado no seu
computador para slp2010.nc.

Para ler (carregar) o conjunto de dados:


sdfopen caminho nome_do_arquivo

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).

4.2.2 Formato Binário

Os arquivos binários para serem lidos pelo software GrADS precisam de


arquivos descritores, que são construídos em arquivos em formato texto. Estes arquivos
são salvos com a extensão .ctl. Por exemplo, tem-se um arquivo binário chamado
mslp.bin e para a leitura desse tem-se o arquivo descritor mslp.ctl (ver detelhes abaixo).

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

dset C:\Reboita\aula\mslp.bin  Especifica o caminho e nome do arquivo de dados


undef 9.999E+20  Valores indefinidos (ignorados na plotagem)
title pressao  Título do conjunto de dados (escolhido pelo usuário)
options little_endian  Formato em que os dados foram escritos no binário
xdef 360 linear 0.0 1.0  Especifica a dimensão x (longitude)
360 número de pontos na direção x
linear indica que os dados estão espaçados linearmente
0.0 latitude inicial
1.0 espaçamento dos pontos de grade
ydef 181 linear -90.0 1.0  Especifica a dimensão y (latitude)
181 número de pontos na direção y
linear indica que os dados estão espaçados linearmente
-90.0 latitude inicial
1.0 espaçamento dos pontos de grade
zdef 1 levels 1000  Especifica a dimensão z (níveis verticais)
1000 especificação dos níveis
tdef 40 linear 00Z05Mar2010 6hr  Especifica a dimensão t (tempo)
40 número de tempos
linear indica que os dados estão espaçados linearmente
00Z05Mar2010 tempo inicial
6hr espaçamento temporal de 6 em 6 horas
vars 1 Especifica o número de variáveis contidas no arquivo
mslp 1 0 pressao
mslp nome da variável
1número de níveis verticais que a variável possui
0 código de unidades (dependo do formato dos dados)
pressao texto com descrição da variável
endvars  Fim do descritor.ctl e fim das especificações das variáveis

Obs: um arquivo binário pode conter várias variáveis em diferentes níveis verticais e
cobrindo muitas latitudes e longitudes.

Para ler (carregar) o conjunto de dados:


open caminho nome_do_arquivo

Exemplo:
open C:\Reboita\aula\mslp.ctl
Uso da Opção Template

O texto abaixo foi obtido de:


http://www.cptec.inpe.br/ManualGrADS/templates.html

O GrADS permite o uso de um único arquivo descritor de dados para agregar


vários arquivos de dados e acessá-los como se estivessem em um único arquivo. Os
arquivos de dados individuais devem ser idênticos em todas as dimensões (exceto
tempo) e devem ter um formato que o GrADS possa ler. Os limites de tempo de cada
arquivo individual devem estar indicados no nome deste arquivo.

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.

O template funciona em qualquer tipo de dado do GrADS no qual pode ser


escrito um arquivo descritor. Se for especificada qualquer palavra-chave adicional na
entrada options do arquivo descritor de dados, então deve ser verificado se o options
está aplicando estes igualmente para cada arquivo incluído no template.

As componentes válidas do templates de substituição são as seguintes:

%x1 1 dígito para década


%x3 3 dígitos para década
%y2 2 dígitos para ano
%y4 4 dígitos para ano
%m1 1 ou 2 dígitos para mês
%m2 2 dígitos para mês (iniciado por zero se necessário)
%mc 3 caracteres para abreviação de mês
%d1 1 ou 2 dígitos para dia
%d2 2 dígitos para dia (iniciado por zero se necessário)
%h1 1 ou 2 dígitos para hora
%h2 2 dígitos para hora
%h3 3 dígitos para hora (i.e., 120 ou 012)
%f2 2 ou 3 dígitos para hora de previsão
%f3 3 dígitos para hora de previsão
%n2 2 dígitos para minuto (iniciado por zero se necessário)

Exemplos

Considere um conjunto de arquivos binários que se estende através de um único


mês, onde cada quantidade diária de dados horários está contida em arquivos
individuais:
1may92.dat
2may92.dat
...
31may92.dat

Há três registros que precisam ser modificados no arquivo descritor de dados.


Deve ser notado que a entrada TDEF reflete a total quantidade mensal dos dados:

DSET ^%d1may92.dat
OPTIONS template
TDEF 744 linear 0z1may1992 1hr

Se o conjunto de dados aumentou e há mais arquivos contidos em dados horários


para outros meses e anos:

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

Supondo um conjunto de sete arquivos netcdf, cada um contendo dados mensais


se estendendo através da década:

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

Então o arquivo descritor deverá ter as seguintes entradas:

DSET ^pr.%x30_%x39.nc
OPTIONS template
DTYPE netcdf
TDEF 840 linear jan1880 1mo

Agora vamos colocar em prática os conhecimentos adquiridos. Acesse o site:


ftp://ftp.cpc.ncep.noaa.gov/precip/CPC_UNI_PRCP/GAUGE_GLB/RT/2012/ e baixe
os arquivos:

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

Precisamos alterar no arquivo descritor apenas as informações destacadas acima


em vermelho. Na linha que inicia com dset devemos colocar o caminho onde estão os
dados obtidos da internet. Observe que o ctl já está com a configuração para abrir vários
arquivos (%y4 = ano com quatro dígitos, %m2 = mês com dois dígitos e %d2 = dia com
dois dígitos). É necessário inserir uma linha com options template e ajustar as
informações à direita de tdef (número de tempos e data inicial). Como baixamos apenas
3 arquivos, o número de tempos será 03. Veja abaixo o arquivo descritor com as
modificações realizadas destacadas em vermelho.
dset C:\Reboita\aula\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 03 linear 23Nov2012 1dy
vars 2
rain 1 00 the grid analysis (0.1mm/day)
gnum 1 00 the number of stn
ENDVARS

A partir da versão 1.9b4, foi implementada uma nova opção de template


permitindo que qualquer conjunto de caracteres de substituição seja especificado pelo
usuário, ao invés de existir somente um conjunto de caracteres de substituição de data.
Este será útil quando nenhuma das opções de template acima combinar com os limites
de tempo dos arquivos que serão agregados, ou se os arquivos estão localizados em
diferentes discos. A sintaxe segue:

%ch conjunto de caracteres substituto

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:

chsub t1 t2 conjunto de caracteres

Exemplo

Considere dois arquivos netcdf, um contendo 50 anos de dados mensais (600


passos de tempo) e o outro com 100 anos (1200 passos de tempo):
pr.1851-1900.nc
pr.1901-2000.nc
O arquivo descritor deverá ter as seguintes entradas:
DSET ^pr.%ch.nc
CHSUB 1 600 1851-1900
CHSUB 601 1800 1901-2000
OPTIONS template
DTYPE netcdf
TDEF 1800 linear jan1851 1mo

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

4.3 Comando query file

Vamos continuar trabalhando com o arquivo slp2010.nc. Após carregá-lo, se for


necessário saber o número de pontos de grade nas direções x (longitude) e y (latitude)
e/ou o nome da variável gravada no arquivo, usa-se o comando query file que pode ser
abreviado por q file:

4.4 Comandos set, display, clear e reset

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.

Exemplo: para plotar o tempo 1 da variável slp


set t 1
d slp
Note na figura acima que a unidade da pressão atmosférica é Pascais, para
transformar em hecto-pascasis (hPa), basta:

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.

Agora se deseja limpar a tela gráfica para fazer um mapa só da América


do Sul e no tempo 10. Para limpar a tela gráfica usa-se o comando clear que pode ser
abreviado por c. Para a criação do mapa da América do Sul é necessário delimitar as
latitudes e longitudes de interesse. Isso é feito com os comandos set lat e set lon. Veja
abaixo:

c  limpa a tela gráfica


set t 10
set lat -60 10
set lon -80 -30
Os comandos set x e set y são sinônimos de set lon e set lat, mas nesse caso os
valores das longitudes e latitudes não são indicados e, sim, o índice que relaciona cada
valor de latitude ou longitude com uma posição num dado vetor. Observe:

set lat -60 10 é igual a set y 13 41


set lon -80 -30 é igual a set x 113 133

No momento o GrADS tem na memória os últimos comandos digitados.


Portanto, se o objetivo for, por exemplo, criar um gráfico com diferentes latitudes do
anterior, pode-se usar o comando reset para eliminar da memória os comandos digitados
e digitam-se os novos comandos.

4.5 Salvando uma Figura

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.

Comandos para criar a figura


c
set t 10
set lat -60 10
set lon -80 -30
d slp/100
Salvando a figura com o comando printim: ao lado desse comando, especifica-se o
caminho em que a figura será salva e o nome da figura. Para deixar o funda área da
figura em branco usa-se a palavra white.

printim C:\Reboita\aula\slp1.gif white

Salvando a figura com o comando enable print


enable print C:\Reboita\aula\slp1.gmf
print
disable print

4.6 Controlando as Cores

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:

0 background 0 0 0 (black by default)


1 foreground 255 255 255 (white by default)
2 red 250 60 60
3 green 0 220 0
4 dark blue 30 60 255
5 light blue 0 200 200
6 magenta 240 0 130
7 yellow 230 220 50
8 orange 240 130 40
9 purple 160 0 200
10 yellow/green 160 230 50
11 medium blue 0 160 255
12 dark yellow 230 175 45
13 aqua 0 210 140
14 dark purple 130 0 220
15 gray 170 170 170
Sequência do arco-íris.

9 14 4 11 5 13 3 10 7 12 8 2 6

set clevs intervalos


Exemplo:
set clevs 975 979 983 987 991 995 999 1003 1007 1011 1015 1019

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:

set gxout contour


set clevs 975 979 983 987 991 995 999 1003 1007 1011 1015 1019
d slp/100

Veja a figura abaixo.


4.7 Paleta de Cores

A inserção de uma paleta de cores numa figura está condicionada à utilização


prévia do comando set gxout shaded. Após a utilização desse comando basta digitar o
comando de inserção da peleta de cores (cbar.gs ou cbarn.gs). A diferença entre cbar e
cbarn é que o último cria triângulos na extremidade das paletas. Observe as figuras
abaixo.

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.

cbarn espessura localização_h_v move_em_x move_em_y

Espessura da Paleta

run cbarn 0.5  reduz para metade a lagura e comprimento da paleta

Localização da Paleta (horizontal e vertical)

run cbarn 1 0  posição horizontal

run cbarn 1 1  posição vertical

Colocando a Paleta mais Próxima da Figura (caso do exemplo dado)

run cbarn 1 1 8  paleta na vertical e próxima da figura


Se quiserem aumentar a fonte da paleta, basta dentro do código do cbarn na parte que
diz

strxsiz = BLA BLA,

mudar o número (tamanho) multiplicado por esse fator do run cbarn (1.2)

strysiz = BLA BLA

Atividade

Acessar o sítio do NCEP (ver roteiro no início da apostila) e baixar a temperatura do ar


no nível de 1000 hPa para todo o globo no mês de julho de 2012. Plotar um gráfico
para:
- tempo 24
- grade da América do Sul (ver exemplos anteriores)
- temperatura em graus Celsius
- clevs variando de -10 a 30 com intervalos de 4 graus
- cores: de acordo com a sua vontade
- inserir paleta de cores na posição vertical e próxima à figura
- salvar a figura no formato gif e com fundo branco

4.8 Gráficos

Dados em Grade

4.8.1 Linhas de Contorno

set gxout contour

Há uma série de opções que podem ser utilizadas para formatar as linhas de
contorno de um gráfico.

Cor da linha

set ccolor color

onde color pode ser:

0 - black 5 - cyan 10 - yellow/green 15 - grey


1 - white 6 - magenta 11 - med. blue
2 - red 7 - yellow 12 - dark yellow
3 - green 8 - orange 13 - aqua
4 - blue 9 - purple 14 - dark purple
Espessura da linha

set cthick thckns

onde thckns é o valor da espessura variando de 1 a 10.

A figura da esquerda é default do GrADS e a da direita com espessura 10.

Estilo da linha

set cstyle style

onde style pode ser:

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

cmin, cmax e cint

Considere os dados do arquivo slp2010.nc. Se o interesse é fazer um gráfico cujo valor


mínimo de pressão seja 1000 hPa, usa-se o comando set cmin.

set cmin valor


set cmin 1000  o valor mínimo que o gráfico terá é 1000 hPa

Agora se o objetivo é fixar um valor máximo. Usa-se


set cmax valor
set cmax 1015

Também podemos fixar um intervalo:


c
set cmin 1000
set cmax 1020
d slp/100
Agora que já definimos os valores de pressão atmosférica que serão plotados, podemos
definir o intervalo das linhas de contorno com o comando set cint.

set cint value


set cint 3 (as linhas de contorno serão espaçadas em 3 hPa)
Opções para os rótulos nas linhas de contorno

set clopts cor espessura tamanho

espessura varia 1 a 10
tamanho varia 0 a 1

set clopts 4 10 0.16

Opções para os eixos do gráfico

set xlint intervalo  intervalo para eixo x


set xlint 10

set ylint intervalo  intervalo para eixo y


set ylint 10

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.

draw title Titulo-do-grafico  Escreve título no topo da figura


draw title Pressão Atmosferica

draw xlab Titulo-X  Escreve título no eixo x


draw xlab Longitude

draw ylab Titulo-Y  Escreve título no eixo y


draw ylab Latitude

Retirando informações do GrADS do rodapé do gráfico

set grads off


Atividades

Vamos fazer um gráfico para a pressão atmosférica utilizando a sequência de


comandos abaixo:

reset  elimina da memória os comandos digitados


set t 10  define o tempo
set lat -55 10  define as latitudes
set lon -80 -30  define as longitudes
set grads off  remove o nome GrADS e data do fundo da
figura (compare a figura anterior com a atual)
set gxout shaded  definição de que a variável plotada terá fundo
preenchido
d slp/100  plota a variável
set gxout contour  definição de que a variável plotada terá linhas
de contorno
set clopts 1 5 0.15  modifica a formatação dos valores que
aparecem nas linhas de contorno, o primeiro valor
indica a cor, o segundo a espessura e o terceiro o
tamanho.
set ccolor 1 define a cor das linhas de contorno (ver tabela de
cores
http://www.iges.org/grads/gadoc/gadocindex.html)
set cthick 3 define a espessura das linhas de contorno
d slp/100  após especificações das linhas de contorno,
plota-se novamente a variável.
set ylopts 1 4 0.16  modifica a formatação dos valores no eixo y, o
primeiro valor indica a cor, o segundo a espessura
e o terceiro o tamanho
set xlopts 1 4 0.16  comando similar ao acima, mas para o eixo x
draw title SLP  comando para inserir um título no topo da figura
draw xlab Longitude  escreve o título no eixo x
draw ylab Latitude  escreve o título no eixo y
printim C:\Reboita\aula\slp1.gif white  salva a figura “com o fundo branco” no
caminho especificado

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:

set display color white


c

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.

Para 10 e 20 de junho às 12 UTC:

1) Fazer um gráfico para a componente zonal e um para a componente meridional de


todo o globo com:
- use set grads off
- linhas de contorno azuis
- espessura das linhas 10
- insira título no gráfico
- salve em gif

2) Fazer um gráfico para a componente zonal para todo o globo com:


-linhas de contorno em que o menor valor seja 25 ms-1.
-use espaçamento de 5 ms-1 entre as linhas de contorno
- insira título no gráfico
-use set grads off
- salve em gif

3) Fazer um gráfico da componente zonal:


- use shaded
- sobreponha o shaded com linhas de contorno
- o intervalo das cores será dado a cada 5 ms-1
- insira paleta de cores na horizontal
- insira título no gráfico
- use set grads off
- salve em gif e gmf
4.8.2 Vetor

Para a elaboração de um gráfico de vetores, iremos primeiramente obter os


dados das componentes zonal e meridional no sítio do NCEP. Vamos escolher dados
horários para todo o globo no mês de junho de 2012. Vamos chamar os dados de
u_0612.nc e v_0612.nc.

Vamos carregar os arquivos:

sdfopen C:\Reboita\aula\u_0612.nc
sdfopen C:\Reboita\aula\v_0612.nc

set gxout vector

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

Na primeira opção, os vetores de vento serão plotados para todos os pontos de


grade, já na segunda tem-se a opção de pular alguns pontos, o que é indicado pelo
número 2, após a vírgula.

Gráfico gerado com d uwnd.1,vwnd.2

Gráfico gerado com d skip(uwnd.1,3);vwnd.2

O gráfico abaixo foi gerado com o comando skip.


Na elaboração de gráficos de vetores, além das opções apresentadas no item
anterior também tem-se:

set arrlab on | off  mostra ou não vetor de referência abaixo do plot

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 arrowhead valor  tamanho da cabeça da seta. O valor default é 0.05

Vamos plotar um mapa de vetores para o globo com as seguintes informações:


set t 3
set gxout vector
set arrscl 1 60

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.

A magnitude (ou intensidade) do vento é calculada como:

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))

ou, simplesmente, pela função

define magnitude=mag(uwnd.1,vwnd.2)

Vamos fazer um exemplo:

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

Às vezes é de interesse plotar a intensidade representada com cores no próprio


vetor (tenho que gerar o exemplo).
A demonstrative example!
###### uwind #########
'sdfopen uwnd10_2009.nc'
####### vwind ########
'sdfopen vwnd10_2009.nc'
'define u=uwnd.1'
'define v=vwnd.2'
'set arrscl 0.5 20'
'set gxout vector'
'd skip(u,1);skip(v,1);mag(u,v)'
4.8.3 Linhas de Corrente (stream line)

set gxout stream

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.

O exemplo abaixo mostra a diferença em utilizar set strmden 5 e set strmden 3.

set gxout stream


set strmden 5
d uwnd.1.vwnd.2
set gxout stream
set strmden 3
set ccolor 4
d uwnd.1.vwnd.2

Observe que há menos linhas de corrente (stream lines) na cor azul do que na
preta.

4.8.4 Gráfico fixando uma dimensão


Por exemplo, vamos fixar uma latitude e variar as longitudes:
set lat -32
set lon -60 0
d uwnd.1

Agora vamos fixar uma longitude e variar as longitudes:

set lat -90 90


set lon -40
d uwnd.1

Também podemos fixar um ponto de grade e variar o tempo:


set lat -22
set lon -42
set t 1 last
d uwnd.1;vwnd.2

4.8.5 Gráfico de corte vertical

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

Nessa seção vamos usar o arquivo slp2010.nc.

Formatando as linhas do mapa

set map cor estilo espessura


set map 2 1 10  cor vermelha, estilo linha sólida, espessura 10

set map 2 1 10
d slp/100

set mpdset <lowres|mres|hires|nmap  seleciona os limites geográficos do mapa


lowres é o default sem os limites dos países
mres e hires possuem divisão dos países e nos Estados Unidos a divisão dos estados.
nmap cobre somente a América do Norte

No site do INPE www6.cptec.inpe.br/mapas_grads_brasil/ é possível obter o


arquivo de mapa com a divisão dos estados brasileiros: brmap_hires.

set lat -60 20


set lon -100 -20
set mpdset C:\Reboita\aula\brmap_hires
set map 4 1 10
set gxout contour
set ccolor 1
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 grads off


set t 1
set mproj scaled
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100'
draw title Projecao Scaled
printim C:\Reboita\aula\mapa_scaled.gif white

set grads off


set t 1
set lat -90 0
set mproj sps
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao SPS
printim C:\Reboita\aula\mapa_SPS.gif white

set grads off


set t 1
set lat -90 90
set lon -180 180
set mproj robinson
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao Robinson
printim C:\Reboita\aula\mapa_Robinson.gif
white
set grads off'
set t 1
set lat -90 90
set lon 180 360
set mproj orthogr
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao orthogr
printim C:\Reboita\aula\mapa_orthogr.gif white

set grads off


set t 1
set lat -90 90
set lon 0 360
set mproj mollweide
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao mollweide
printim C:\Reboita\aula\mapa_mollweide.gif
white

set grads off


set t 1
set lat -90 0
set lon -180 180
set mproj lambert
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao lambert
printim C:\Reboita\aula\mapa_lambert.gif white

set grads off


set t 1
set lat -90 90
set lon 0 360
set mproj off
set map 1 1 10
set xlopts 1 1 0.16
set ylopts 1 1 0.16
d slp/100
draw title Projecao OFF
printim C:\Reboita\aula\mapa_off.gif white
4.10 Múltiplos Gráficos

Podemos plotar mais de um gráfico, concomitantemente, desde que delimitemos


a localização destes na janela gráfica. Para tanto é utilizado o comando parea. Vamos
supor que queremos plotar os quatro horários sinóticos da pressão atmosférica no dia 10
de janeiro de 2010 para as coordenadas: latitude 50S a 10S e longitude de 110W a 20W.

A região de cada gráfico é especificada em termos de unidades de página virtual.


Pelo padrão, a página virtual é igual à página real. Então, as unidades são
aproximadamente polegadas de página real. A janela gráfica contém o seguinte
tamanho: 11 unidades na horizontal e 8,5 unidades de altura. O que devemos fazer é
definir a área que cada gráfico irá ocupar.

set parea xmin xmax ymin ymax  x e y fornecem as coordenadas para a posição dos
gráficos

Considere os seguintes valores:

set parea 1 5 4.5 7.5


set parea 6 10 4.5 7.5
set parea 1 5 0.5 3.5
set parea 6 10 0.5 3.5

Serão criadas quatro figuras na janela gráfica.

Agora vamos fazer o nosso exemplo com os dados de pressão atmosférica.


sdfopen C:\Reboita\aula\slp2010.nc

set time 00Z10Jan2010


set lat -50 -10
set lon -110 -20
set parea 1 5 4.5 7.5
set xlopts 1 1 0.15
set ylopts 1 1 0.15
set clopts 1 5 0.125
set mpdset mres
set map 1 1 10
set grads off'
set ccolor rainbow
set gxout shaded
d slp/100
set gxout contour
set ccolor 1
d slp/100
draw title 00Z10Jan2010

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

OBS: ao plotar somente as linhas de contorno, o mapa só apareceu na primeira figura.


Usando o shaded esse problema desaparece. Não sei explicar o motivo.
4.11 Strings

Se no gráfico anterior quiséssemos colocar um título central no topo da figura


seria necessário utilizar os comandos que controlam texto (string).

set string cor alinhamento espessura rotação

Códigos para alinhamento:


l = left c = center r = right
tl = top left tc = top center tr = top right
bl = bottom left bc = bottom center br = bottom right

set strsiz comprimento altura

draw string x y título

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.

Após ter inserido os comandos para a elaboração da figura anterior, digite:

set string 1 l 5 0
set strsiz 0.25 0.25
draw string 3.9 8.3 Pressao (hPa)
4.12 Scripts

Para gerar um script deve-se criar um arquivo de texto e colocar a extensão


como gs. Isso nos permite identificar facilmente um programa em linguagem GrADS.
Uma sugestão de editor é o Notepad++, que é um software livre e com boa
performance.

Nos scripts:

- para inserir uma linha de comentário, inicia-se esta com o símbolo *.


- a maioria dos comandos deve aparecer ente ' '. Por exemplo, 'set lat -50 -20'.
- iniciar os programas com uma breve explicação sobre a finalidade do programa e
depois usar 'reinit' para fechar qualquer trabalho pré-existente.
* Este programa gera mapas com diferentes projecoes cartograficas
'reinit'

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'

'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'
pull n
'c'

'set grads off'


'set t 1'
'set mproj scaled'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao Scaled'
'printim C:\Reboita\aula\mapa_scaled.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 0'
'set mproj sps'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao SPS'
'printim C:\Reboita\aula\mapa_SPS.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 90'
'set lon -180 180'
'set mproj robinson'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao Robinson'
'printim C:\Reboita\aula\mapa_Robinson.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 90'
*'set lon 0 180'
'set lon 180 360'
'set mproj orthogr'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao orthogr'
'printim C:\Reboita\aula\mapa_orthogr.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 90'
'set lon 0 360'
'set mproj mollweide'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao mollweide'
'printim C:\Reboita\aula\mapa_mollweide.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 0'
'set lon -180 180'
'set mproj lambert'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao lambert'
'printim C:\Reboita\aula\mapa_lambert.gif white'
pull n
'c'

'set grads off'


'set t 1'
'set lat -90 90'
'set lon 0 360'
'set mproj off'
'set map 1 1 10'
'set xlopts 1 1 0.16'
'set ylopts 1 1 0.16'
'd slp/100'
'draw title Projecao OFF'
'printim C:\Reboita\aula\mapa_off.gif white'
pull n
'c'
______________________________________________________________________

No programa acima apresentado, o comando pull n só permite que o GrADS


plote uma figura após a outra se você pressionar o comando enter do seu computador.

Para executar o programa use o comando run seguido do caminho e nome do


script.

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'

'set time 00Z10Jan2010'


'set lat -50 -10'
'set lon -110 -20'
'set parea 1 5 4.5 7.5'
'set xlopts 1 1 0.15'
'set ylopts 1 1 0.15'
'set clopts 1 5 0.125'
'set mpdset mres'
'set map 1 1 10'
'set grads off'
'set ccolor rainbow'
'set gxout shaded'
'd slp/100'
'set gxout contour'
'set ccolor 1'
'd slp/100'
'draw title 00Z10Jan2010'

'set time 06Z10Jan2010'


'set lat -50 -10'
'set lon -110 -20'
'set parea 6 10 4.5 7.5'
'set xlopts 1 1 0.15'
'set ylopts 1 1 0.15'
'set clopts 1 5 0.125'
'set mpdset mres'
'set map 1 1 10'
'set grads off'
'set ccolor rainbow'
'set gxout shaded'
'd slp/100'
'set gxout contour'
'set ccolor 1'
'd slp/100'
'draw title 06Z10Jan2010'

'set time 12Z10Jan2010'


'set lat -50 -10'
'set lon -110 -20'
'set parea 1 5 0.5 3.5'
'set xlopts 1 1 0.15'
'set ylopts 1 1 0.15'
'set clopts 1 5 0.125'
'set mpdset mres'
'set map 1 1 10'
'set grads off'
'set ccolor rainbow'
'set gxout shaded'
'd slp/100'
'set gxout contour'
'set ccolor 1'
'd slp/100'
'draw title 12Z10Jan2010'

'set time 18Z10Jan2010'


'set lat -50 -10'
'set lon -110 -20'
'set parea 6 10 0.5 3.5'
'set xlopts 1 1 0.15'
'set ylopts 1 1 0.15'
'set clopts 1 5 0.125'
'set mpdset mres'
'set map 1 1 10'
'set grads off'
'set ccolor rainbow'
'set gxout shaded'
'd slp/100'
'set gxout contour'
'set ccolor 1'
'd slp/100'
'draw title 18Z10Jan2010'
pull n
'c'
_____________________________________________________________________

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.

Segundo o site http://pt.wikipedia.org/wiki/RGB (acesso em 02-11-2012), RGB


significa a abreviatura do sistema de cores aditivas formado por Vermelho (Red), Verde
(Green) e Azul (Blue). O propósito principal do sistema RGB é a reprodução de cores
em dispositivos eletrônicos como monitores de TV e computador, "datashows",
scanners e câmeras digitais, assim como na fotografia tradicional. Em contraposição,
impressoras utilizam o modelo CMYK de cores subtrativas.

O modelo de cores RGB é baseado na teoria de visão colorida tricromática, de


Young-Helmholtz, e no triângulo de cores de Maxwell. O uso do modelo RGB como
padrão para apresentação de cores na Internet tem suas raízes nos padrões de cores de
televisões RCA de 1953 e no uso do padrão RGB nas câmeras Land/Polaroid, pós
Edwin Land.

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.

Também existem páginas que permitem gerar as cores, como a


http://www.universodacor.com.br/index.php?scr=misturador_cor.
Há sites que fornecem a sequência de cores para as paletas como:
http://geography.uoregon.edu/datagraphics/color_scales.htm#Sequential

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.

Vamos utilizar o cor_azul.gs dentro de um script que plotará o campo de pressão


atmosférica com tonalidade azul. Para a geração das tonalidades em azul pode-se
utilizar a página
http://www.universodacor.com.br/index.php?scr=misturador_cor

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'
______________________________________________________________________

No script cor_azul.gs o número à direita de rgb (no caso, 30 a 37) é o que


indicará a cor quando utilizado o comando ccols. Sugere-se a utilização de valores
maiores do que 20 para não ocorrer confusão com o número das cores pré-definidas no
GrADS.

slp_cor_azul.gs

______________________________________________________________________

*Esse programa gera um mapa de pressão em tons de azul

'reinit'

'sdfopen C:\Reboita\aula\slp2010.nc'

'run C:\Reboita\aula\cor_azul.gs'

'set time 00Z10Jan2010'


'set lat -50 -10'
'set lon -110 -20'
'set xlopts 1 1 0.15'
'set ylopts 1 1 0.15'
'set mpdset mres'
'set map 1 1 10'
'set grads off'
'set cmax 1020'
'set clevs 995 1000 1005 1010 1015 1020'
'set ccols 30 31 32 33 34 35 36'
'set gxout shaded'
'd slp/100'
'set gxout contour'
'set clevs 995 1000 1005 1010 1015 1020'
'set ccolor 1'
'set clopts 1 5 0.16'
'd slp/100'
'draw title 00Z10Jan2010'
'printim C:\Reboita\aula\fig_azul.gif white'

______________________________________________________________________

O gráfico abaixo é o resultado do programa slp_cor_azul.gs.

4.13 Elementos de Linguagem nos Scripts

4.13.1 Concatenação

Vamos criar um script com o nome ling_1.gs.

______________________________________________________________________
'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'
______________________________________________________________________

É possível definir guardar um valor GrADS e depois utilizá-lo com o nome


atribuído.

4.13.2 Say

say é usado para fornecer informações.

Vamos criar um script com o nome ling_2.gs.

______________________________________________________________________
'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

Operadores usados no GrADS


Símbolo Definição
| Operador lógico OU
! NOT
% Concatenação
!= Diferente
>= Maior ou igual a
<= Menor ou igual
- Subtração
/ Divisão
& Operador lógico E
= igual
> Maior que
< Menor que
+ Soma
* Multiplicação

4.13.5 Controle de Fluxo

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
______________________________________________________________________

4.13.6 Funções intrínsecas

As funções abaixo só funcionam dentro de scripts.

sublin (string, n) Armazena linha n extraída de um string de várias linhas

subwrd (string, n) Armazena uma palavra n extraída de um string

substr (string, start, length) Armazena uma parte de um string

Exemplos:

q time  ao digitar q time na janela de comandos do GrADS aparece a linha abaixo


Time = 00Z01Jan2010 to 00Z01Jan2010 Fri to Fri
data_val=subwrd(result,5)  essa função captura a informação da quinta posição da
linha que no caso é 00Z01Jan2010

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

Veja o exemplo do script ling_6.gs.

______________________________________________________________________
'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

O GrADS permite salvar as informações em formatos binário, ascii e netcdf. A


maneira mais simples é em binário.

Formato Binário

Veja o programa ling_8.gs para salvar os dois primeiros tempos do arquivo


slp2010.nc em binário. Neste script, os comandos para salvar os dados em formato
binário são:

set gxout fwrite


set fwrite pressao.bin  pressao.bin é o nome dado ao arquivo de saída
d slp/100
disable fwrite

______________________________________________________________________
'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'
______________________________________________________________________

No programa ling8,gs, note que foram fixados os pontos em x e y. Isso é


necessário, mesmo quando se grava a grade inteira dos dados. Sem isso, o GrADS cria
uma latitude ou uma longitude de pontos indefinidos. Para saber se o tamanho do
arquivo criado está correto, multiplique o número de latitudes, pelo número de
longitudes, pelo número de tempos, pelo número de níveis verticais, pelo número de
variáveis e por 4.

Tamanho = nlats x nlons x nlevs x ntempos x nvars x 4

Para o nosso exemplo da pressão:

Tamanho = 73 x 144 x 1 x 2 x 1 x 4 = 84096

Outra novidade contida no programa é o comando quit, que serve para fechar o
GrADS após a execução de um trabalho.

Uma vez gerado o arquivo no formato binário, se o objetivo for abri-lo


novamente no GrADS é necessário um arquivo descritor (CTL). Vamos criar um
arquivo no editor de texto Notepad++ e chama-lo de pressao.ctl.

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

Para o GrADS ler o arquivo pressao.bin, basta:

open C:\Reboita\aula\pressao.ctl

Formato Texto

Vamos inicialmente salvar os dados de um ponto de grade variando no tempo.


Isto é, vamos fixar uma latitude e uma longitude e variar o tempo. Veja o exemplo do
script ling_9.gs.

______________________________________________________________________
'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.

set prnopts formato numl numb <u>

Controla a forma que os valores são impressos quando set gxout print é usado.

formato um modelo em linguagem C para formatação da saída ascii. O padrão é %g.


numl número de valores impressos por registro. O padrão é 8.
numb número de caracteres em branco inseridos entre os valores. O padrão é 1.
u imprime 'Undef' ao invés do valor numérico para dados ausentes.

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.

Se não definirmos o número de valores impressos (numl), aparecerão 8 valores por


default. Note que no exemplo do ling_9.gs não usamos esse comando, pois só tínhamos
um valor por linha. Agora teremos 144 valores e se não especificarmos numl, só
aparecerão os 8 primeiros valores de longitude.

Exemplo (sem considerar os dados usados nesta apostila)

Este exemplo imprimirá todos os valores em notação exponencial:

set gxout print


set prnopts %10.3e 5 1
dt
A saída se parecerá com esta:
Printing Grid -- 30 Values -- Undef = -2.56e+33
-2.560e+33 -2.560e+33 3.014e+02 3.011e+02 3.001e+02
-2.560e+33 -2.560e+33 3.010e+02 -2.560e+33 -2.560e+33
-2.560e+33 -2.560e+33 -2.560e+33 -2.560e+33 -2.560e+33
-2.560e+33 -2.560e+33 -2.560e+33 2.993e+02 2.995e+02
-2.560e+33 -2.560e+33 3.004e+02 3.008e+02 3.010e+02
-2.560e+33 -2.560e+33 2.999e+02 3.010e+02 3.012e+02

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')
______________________________________________________________________

Obs: o arquivo dadosgrade.dat deve conter 37 linhas que indicam as latitudes


começando em -90 e indo até 0 e 144 colunas que indicam as longitudes começando em
0 e indo até 357,5.

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

Para salvar informações em netcdf é necessário o script LATS4d. Para maiores


detalhes acesse:
http://cookbooks.opengrads.org/index.php?title=Table_of_Contents#SEQUENTIAL_IN
DEX_OF_RECIPES
4.15 Derivadas no GrADS

Advecção Horizontal de Temperatura

Para a resolução de derivadas utilizamos métodos numéricos. Imagine que você


tem um conjunto de dados Atividade: determine
espaçados regularmente no o valor
espaço do determinar
e quer gradiente a de tempe
variação da temperatura no ponto (i,j). Para fazer isso, você pode utilizar o método de
vermelho.
diferenças finitas centradas:

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)

Como, geralmente, calculamos as derivadas em grandes porções A magnitude


do globo é do grad
necessário inserir o efeito da esfericidade da Terra. O exemplo abaixo mostra a equação
da advecção horizontal de temperatura em coordenadas esféricas.

⃗ ∙ ∇𝑇
−𝑉

Sabendo-se que:
𝜕𝑇 𝜕𝑇
⃗ = 𝑢𝑖 +v𝑗
𝑉 𝛻⃗𝑇 = 𝜕𝑥 𝑖 + 𝜕𝑦 𝑗

𝜕𝑇 𝜕𝑇
𝐴𝑑𝑣𝑇 = − (𝑢 +𝑣 )
𝜕𝑥 𝜕𝑦

Em coordenadas esféricas, a equação torna-se:


𝑢 𝜕𝑇 𝑣 𝜕𝑇
𝐴𝑑𝑣𝑇 = − ( + )
𝑎 𝑐𝑜𝑠𝜑 𝜕𝜆 𝑎 𝜕𝜑

onde a é o raio da Terra, 𝜑 a latitude e 𝜆 a longitude.

No GrADS, as diferenças centradas são calculadas através de uma função


chamada cdiff.

cdiff(expr,dim) operação de diferença centrada em expr na direção especificada por


dim. Note, que usando essa função você não terá dados na borda da grade. Os valores
serão indefinidos.

Para calcular a advecção horizontal de temperatura no GrADS:

'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 dtempdx = cdiff(air.1,x)/dx'


'define dtempdy = cdiff(air.1,y)/dy'

'define advect = -1*((uwnd.2*dtempdx)+(vwnd.3*dtempdy))'

Vamos calcular a advecção de temperature no mês de março de 2010. Para isso


acessem o sítio do NCEP e façam o download da temperatura do ar e componentes
horizontais do vento em 1000 hPa a cada 6 horas. Nomeie os arquivos como:
air_0310.nc
uwnd_0310.nc
vwnd_0310.nc
Salvem o programa com o nome de ling_12.gs.

______________________________________________________________________
*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)'

'define dtempdx = cdiff(air.1,x)/dx'


'define dtempdy = cdiff(air.1,y)/dy'

'define advect = -1*((uwnd.2*dtempdx)+(vwnd.3*dtempdy))'

'set gxout shaded'


'd advect'
'set gxout contour'
'd advect'
______________________________________________________________________

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

O vento geostrófico pode ser definido como função do geopotencial:


1 𝜕∅ 1 𝜕∅
𝑢𝑔 = − 𝑣𝑔 =
𝑓 𝜕𝑦 𝑓 𝜕𝑥

onde  é o geopotencial e f a força de Coriolis (f=2sin).

Em coordenadas esféricas:

1 𝜕∅ 1 𝜕∅
𝑢𝑔 = − 𝑣𝑔 =
𝑓 𝑎 𝜕𝜑 𝑓 𝑎 𝑐𝑜𝑠𝜑 𝜕𝜆

Vamos calcular o vento geostrófico para 06Z10MAR2010. Para isso, será


necessário obter a variável altura geopotencial do sítio do NCEP. Como também vamos
comparar o vento geostrófico com o vento real, será necessário obter as componentes do
vento. Portanto, obtenha a altura geopotencial e as componentes do vento em 200 hPa
no mês de março de 2010 a cada 06 horas. Salve os arquivos com os nomes de:

hgt_200_0310.nc
uwnd_200_0310.nc
vwnd_200_0310.nc

OBS: as reanálises fornecem a altura geopotencial (Z) e não o geopotencial ().


Portanto, na elaboração de programas devemos multiplicar o valor da altura
geopotencial (Z) pelo da aceleração da gravidade média terrestre (go=9,8 ms-2), a fim de
obter a grandeza geopotencial ().

𝜙(𝑍)
𝑍≡
𝑔𝑜

Vamos salvar as informações abaixo num script denominado ling_14.gs.

______________________________________________________________________
*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'

'set time 06Z10Mar2010'


'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 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)'

*OBS: no site do NCEP é fornecida a altura geopotencial,


*mas nos calculos precisamos do geopotencial (aceleração da gravidade
*multiplicada pela altura, por isso, temos 9.8).

'define ua=uwnd.2-ug'
'define va=vwnd.3-vg'

'set gxout stream'


'd uwnd.2;vwnd.3'
'set gxout stream'
'set ccolor 4'
'd ug;vg'
'draw title Vento Real (Preto) e Vento Geostrofico (Azul)'
______________________________________________________________________

Divergência

A divergência é definida como:

𝜕𝑢 𝜕𝑣
𝐷= +
𝜕𝑥 𝜕𝑦

Já em coordenadas esféricas:
𝜕𝑢 𝜕𝑣
𝐷= +
𝑎 cos 𝜑 𝜕𝜆 𝑎 𝜕𝜑

Vamos calcular a divergência para 06Z10MAR2010. O script será denominado


de ling_15.gs.

______________________________________________________________________
*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'

'set time 06Z10Mar2010'

'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'

'set gxout shaded'


'd div'
'run cbarn.gs'
'draw title Divergencia de Massa'
'printim C:\Reboita\aula\divergencia.gif white'
______________________________________________________________________
Vorticidade Relativa

A vorticidade relativa é definida como:

𝜕𝑣 𝜕𝑢
𝜁= −
𝜕𝑥 𝜕𝑦

Já em coordenadas esféricas:

𝜕𝑣 𝜕𝑢
𝜁= −
𝑎 cos 𝜑 𝜕𝜆 𝑎 𝜕𝜑

Vamos calcular a vorticidade relativa para 06Z10MAR2010. O script será


denominado de ling_16.gs.
______________________________________________________________________

*Este programa calcula a vorticidade relativa

'reinit'
'sdfopen C:\Reboita\aula\uwnd_200_0310.nc'
'sdfopen C:\Reboita\aula\vwnd_200_0310.nc'

'set time 06Z10Mar2010'

'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'

'set gxout shaded'


'd vort'
'run cbarn.gs'
'draw title Vorticidade Relativa'
'printim C:\Reboita\aula\vortrelativa.gif white'
______________________________________________________________________
4.16 Funções Pré-Definidas no GrADS

No item anterior foi apresentado o procedimento para calcular a divergência do


vento e a vorticidade relativa. Entretanto, o GrADS possui funções que calculam essas
grandezas, no caso hdivg e hcurl. Nessa seção, várias funções que o GrADS possui
serão apresentadas.

4.16.1 Operações Matemáticas

abs(expr) fornece o valor absoluto de expressão

cdiff(expr,dim) operação de diferença centrada em expr na direção especificada por dim


Valores nas bordas da grade são indefinidos.

exp(expr) cálculo do exponencial de expr (operação: ex, onde x é a expr)

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.

log10(expr) idem acima, porém para o logaritmo na base 10

pow(expr1,expr2) eleva valor expr1 na potência expr2 (operação: xy, x=expr1;


y=expr2)

sqrt(expr) raiz quadrada de expr. Valores menores do que zero são faltantes.

vint(psexpr,expr,top) integral vertical de expr com mass-weighted


psexpr expressão para pressão na superfície em mb ou hPa (equivale ao limite da
integral na superfície)
expr variável a ser integrada (variando somente em X e Y)
top pressão no topo (equivale ao limite da integral no topo). É uma constante e
não pode ser uma expressão

4.16.2 Funções Trigonométricas

cos(expr) cosseno de expr em radianos

acos(expr) cosseno inverso de expr em radianos. Valores de expr maior do que 1 e


menor do –1 são considerados faltantes.

sin(expr) seno de expr em radianos

asin(expr) idem a acos(expr), mas para o seno inverso

tan(expr) tangente de expr em radiano


atan2 (expr1, expr2) tangente inversa de expr1/expr2 em radianos

4.16.3 Variáveis Meteorológicas Derivadas e Operações Vetoriais

tvrh2q(tvexpr,rhexpr) cálculo de umidade específica q em g/g a partir da temperatura


virtual e umidade relativa
tvexpr temperatura virtual em Kelvin
rhexpr umidade relativa em percentagem (0 a 100)

tvrh2t(tvexpr,rhexpr) cálculo de temperatura em Kelvin a partir da temperatura


virtual e umidade relativa

hcurl(uexpr,vexpr) cálculo da componente vertical da vorticidade


uexpr e vexpr são as componentes zonal e meridional do vento, respectivamente

hdivg(uexpr,vexpr) cálculo da divergência horizontal por diferenças finitas

mag(uexpr,vexpr) cálculo da magnitude do vento horizontal (wind speed)

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

Exemplo de cálculo da divergência, vorticidade relativa e magnitude do vento;


ling_17.gs.

______________________________________________________________________
*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'

'set time 06Z10Mar2010'

*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'
______________________________________________________________________

4.16.3 Médias e Somatórios


aave(expr, xdim1, xdim2, ydim1, ydim2) média espacial de expr na grade X,Y
expr expressão da variável
xdim1 expressão da dimensão X (ponto inicial)
xdim2 expressão da dimensão X (ponto final)
ydim1 expressão da dimensão Y (ponto inicial)
ydim2 expressão da dimensão Y (ponto final)
Exemplo: Numa grade global seria
aave(expr, lon=0, lon=360, lat=-90, lat=90)

asum(expr, xdim1, xdim2, ydim1, ydim2) somatório de expr na grade X,Y

ave(expr, dim1, dim2, tinc) média de expr na dimensão especificada


expr expressão da variável
dim1 ponto inicial da dimensão
dim2 ponto final da dimensão
tinc incremento opcional para o caso de média na dimensão T
Exemplo:
Media zonal global de temperatura: ave(temp,lon=0,lon=360)

mean (expr, dim1, dim2, tinc) idem a ave, mas not grid weighted

sum (expr, dim1, dim2, tinc) somatório de expr na dimensão especificada

Obtenha no site do NCEP os dados mensais de TSM (OISST V2) de janeiro de


2011 a setembro de 2012. Nomeie o arquivo de sst_0111_0912.nc. Observe as
operações realizadas no ling_18.gs.

______________________________________________________________________
* Este programa calcula a media da TSM em pontos de grade

'reinit'
'sdfopen C:\Reboita\aula\sst_0111_0912.nc'

*Media do periodo todo


'define mtot=ave(sst,t=1,t=21)'
*Media dos dois janeiros
'define mjan=ave(sst,t=1,t=21,12)'

*Media dos dois fevereiros


'define mfev=ave(sst,t=2,t=21,12)'

*Anomalias = Dado - Media


'define sstjan11=sst(t=1)'
'define anom=sstjan11-mjan'

******************************************************************
*Media na area
'set t 1'
'define mjana=aave(sst,lon=0,lon=357.5,lat=-90,lat=90)'

*Area nino 3.4


'define mjanNino=aave(sst,lon=-170,lon=-120,lat=-5,lat=5)'

______________________________________________________________________

4.16.4 Outras Expressões

max(expr, dim1, dim2 ,tinc) máximo valor de expr na dimensão especificada tinc é
opcional no caso da dimensão ser T

maxloc(expr, dim1, dim2, tinc) fornece a coordenada do máximo valor de expr na


dimensão especificada

min(expr, dim1, dim2, tinc) mínimo valor de expr na dimensão especificada tinc é
opcional no caso da dimensão ser T

minloc(expr, dim1, dim2, tinc) fornece coordenada do mínimo valor de expr na


dimensão especificada

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

smth9(expr) suavização de 9-pontos na expr

Os scripts ling_19.gs e ling_20.gs apresentam exemplos da utilização do


comando smth9 para a suavização dos dados. No ling_19.gs vamos suavizar o campo da
pressão atmosférica. Como essa variável não é muito ruidosa vamos aplicar três vezes a
suavização.

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
______________________________________________________________________

* Abre dados de chuva do CPC

'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

mask e expr devem ter a mesma resolução espacial


Imagine que você tenha um arquivo de máscara com valores -1 para os pontos
de grade sobre o continente e 0 para o oceano. Com o comando acima (maskout), os
dados serão plotados somente sobre o oceano.

Vamos praticar o uso do maskout. Vá no sítio do NCEP


http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.derived.surface.html e
obtenha o arquivo lsmask.nc (ao clicar nesse arquivo irá aparecer land.nc, baixe-o).
A máscara do NCEP é definida como:

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.

Inserindo máscara no continente: basta multiplicar a variável máscara por -1


define mask=land*(-1)

Inserindo máscara no oceano: basta subtrair a variável máscara de -1


define mask=land*(-1)

O script ling_21.gs apresenta exemplos de inserção de máscara no continente e


oceano com base nos dados do NCEP.

______________________________________________________________________

*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'

*Inserindo mascara no continente


'define maskc=mask*(-1)'
'set grads off'
'set gxout shaded'
'set xlopts 1 0.14 0.14'
'set ylopts 1 0.14 0.14'
'd maskout(slp,maskc)'
'draw title Mascara no Continente'
'printim C:\Reboita\aula\mask_c.gif white'

pull n
'c'

*Inserindo mascara no oceano


'define masko=mask+(-1)'
'set grads off'
'set gxout shaded'
'set xlopts 1 0.14 0.14'
'set ylopts 1 0.14 0.14'
'd maskout(slp,masko)'
'draw title Mascara no Oceano'
'printim C:\Reboita\aula\mask_o.gif white'
______________________________________________________________________
4.17 Utilizando o mouse para avançar ou retroceder figuras

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.

Há uma convenção no GrADS, o botão esquerdo do mouse é identificado como


número 1, o central como 2 e o da direita como 3. Se após o comando q pos clicarmos
com o botão esquerdo do mouse ficará armazenado na memória do GrADS o número 3.
Com essa informação é possível fazer uma sequência de instruções para o GrADS
avançar ou retroceder as figuras. Veja o exemplo no programa ling_22.gs.

______________________________________________________________________
*Criando botoes

'reinit'
'sdfopen C:\Reboita\aula\slp2010.nc'

say "Click com o botao esquerdo na figura para avançar"


say "Click com o botao direito na figura para voltar"
say "Click com os dois botoes para sair do gs"

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

*Comandos dos botoes

'q pos'
lt=sublin(result,1)
say lt
click=subwrd(lt,5)
say click

*botao 3 (direita)-> volta a fig


if(click=3)
'c'
tempo=tempo-2
if(tempo=0)
tempo=1
endif
endif
*botao 2 (cental)-> sair
if(click=2)
'reinit'
tempo=tfim
endif

*botao 1 (esquerda)-> avancar


if(click=1 & tempo=tfim)
tempo=tempo
endif

'c'
endwhile
______________________________________________________________________

4.18 Plotando Trajetórias

Em algumas situações temos como interesse plotar a trajetória de sistemas


atmosféricos, por exemplo, o deslocamento de um ciclone a cada 6 horas. Nesse caso,
precisamos de dois arquivos: um arquivo no formato texto que contenha duas colunas
representando, respectivamente, as latitudes e longitudes dos sistemas e um arquivo
com dados em pontos de grade para podermos gerar o mapa de fundo. Vamos usar o
arquivo slp2010.nc para gerar o mapa de fundo.

Exemplo do conteúdo do arquivo texto. A primeira coluna tem as latitudes e a segunda


as longitudes.

-20 300
-22 302
-23 310
-26 320
-28 326
-29 330

Script trajetorias.gs

______________________________________________________________________

*Esse GS plota trajetorias


*OBS: e necessario um arq com as traj (lat lon)
* e um arquivo de dados em pontos de grade

'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)

say 'lon= '%lon


say 'lat= '%lat

* conversao lat,lon para coord pagina


'q w2xy 'lon' 'lat''
linha=sublin(result,1)
x=subwrd(result,3)
y=subwrd(result,6)
say 'x= '%x
say 'y= '%y

*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

Tabela de cores RGB. Fonte: http://efeitosespeciais.net/tabela.htm


Cor Valor RGB Hexadecimal
Snow 255 250 250 #FFFAFA
GhostWhite 248 248 255 #F8F8FF
WhiteSmoke 245 245 245 #F5F5F5
Gainsboro 220 220 220 #DCDCDC
FloralWhite 255 250 240 #FFFAF0
OldLace 253 245 230 #FDF5E6
Linen 250 240 230 #FAF0E6
AntiqueWhite 250 235 215 #FAEBD7
PapayaWhip 255 239 213 #FFEFD5
BlanchedAlmond 255 235 205 #FFEBCD
Bisque 255 228 196 #FFE4C4
PeachPuff 255 218 185 #FFDAB9
NavajoWhite 255 222 173 #FFDEAD
Moccasin 255 228 181 #FFE4B5
Cornsilk 255 248 220 #FFF8DC
Ivory 255 255 240 #FFFFF0
LemonChiffon 255 250 205 #FFFACD
Seashell 255 245 238 #FFF5EE
Honeydew 240 255 240 #F0FFF0
MintCream 245 255 250 #F5FFFA
Azure 240 255 255 #F0FFFF
AliceBlue 240 248 255 #F0F8FF
lavender 230 230 250 #E6E6FA
LavenderBlush 255 240 245 #FFF0F5
MistyRose 255 228 225 #FFE4E1
White 255 255 255 #FFFFFF
Black 000 #000000
DarkSlateGray 47 79 79 #2F4F4F
DimGrey 105 105 105 #696969
SlateGrey 112 128 144 #708090
LightSlateGray 119 136 153 #778899
Grey 190 190 190 #BEBEBE
LightGray 211 211 211 #D3D3D3
MidnightBlue 25 25 112 #191970
NavyBlue (Navy) 0 0 128 #000080
CornflowerBlue 100 149 237 #6495ED
DarkSlateBlue 72 61 139 #483D8B
SlateBlue 106 90 205 #6A5ACD
MediumSlateBlue 123 104 238 #7B68EE
LightSlateBlue 132 112 255 #8470FF
MediumBlue 0 0 205 #0000CD
RoyalBlue 65 105 225 #4169E1
Blue 0 0 255 #0000FF
DodgerBlue 30 144 255 #1E90FF
DeepSkyBlue 0 191 255 #00BFFF
SkyBlue 135 206 235 #87CEEB
LightSkyBlue 135 206 250 #87CEFA
SteelBlue 70 130 180 #4682B4
LightSteelBlue 176 196 222 #B0C4DE
LightBlue 173 216 230 #ADD8E6
PowderBlue 176 224 230 #B0E0E6
PaleTurquoise 175 238 238 #AFEEEE
DarkTurquoise 0 206 209 #00CED1
MediumTurquoise 72 209 204 #48D1CC
Turquoise 64 224 208 #40E0D0
Cyan 0 255 255 #00FFFF
LightCyan 224 255 255 #E0FFFF
CadetBlue 95 158 160 #5F9EA0
MediumAquamarine 102 205 170 #66CDAA
Aquamarine 127 255 212 #7FFFD4
DarkGreen 0 100 0 #006400
DarkOliveGreen 85 107 47 #556B2F
DarkSeaGreen 143 188 143 #8FBC8F
SeaGreen 46 139 87 #2E8B57
MediumSeaGreen 60 179 113 #3CB371
LightSeaGreen 32 178 170 #20B2AA
PaleGreen 152 251 152 #98FB98
SpringGreen 0 255 127 #00FF7F
LawnGreen 124 252 0 #7CFC00
Green 0 255 0 #00FF00
Chartreuse 127 255 0 #7FFF00
MediumSpringGreen 0 250 154 #00FA9A
GreenYellow 173 255 47 #ADFF2F
LimeGreen 50 205 50 #32CD32
YellowGreen 154 205 50 #9ACD32
ForestGreen 34 139 34 #228B22
OliveDrab 107 142 35 #6B8E23
DarkKhaki 189 183 107 #BDB76B
Khaki 240 230 140 #F0E68C
PaleGoldenrod 238 232 170 #EEE8AA
LightGoldenrodYellow 250 250 210 #FAFAD2
LightYellow 255 255 224 #FFFFE0
Yellow 255 255 0 #FFFF00
Gold 255 215 0 #FFD700
LightGoldenrod 238 221 130 #EEDD82
goldenrod 218 165 32 #DAA520
DarkGoldenrod 184 134 11 #B8860B
RosyBrown 188 143 143 #BC8F8F
IndianRed 205 92 92 #CD5C5C
SaddleBrown 139 69 19 #8B4513
Sienna 160 82 45 #A0522D
Peru 205 133 63 #CD853F
Burlywood 222 184 135 #DEB887
Beige 245 245 220 #F5F5DC
Wheat 245 222 179 #F5DEB3
SandyBrown 244 164 96 #F4A460
Tan 210 180 140 #D2B48C
Chocolate 210 105 30 #D2691E
Firebrick 178 34 34 #B22222
Brown 165 42 42 #A52A2A
DarkSalmon 233 150 122 #E9967A
Salmon 250 128 114 #FA8072
LightSalmon 255 160 122 #FFA07A
Orange 255 165 0 #FFA500
DarkOrange 255 140 0 #FF8C00
Coral 255 127 80 #FF7F50
LightCoral 240 128 128 #F08080
Tomato 255 99 71 #FF6347
OrangeRed 255 69 0 #FF4500
Red 255 0 0 #FF0000
HotPink 255 105 180 #FF69B4
DeepPink 255 20 147 #FF1493
Pink 255 192 203 #FFC0CB
LightPink 255 182 193 #FFB6C1
PaleVioletRed 219 112 147 #DB7093
Maroon 176 48 96 #B03060
MediumVioletRed 199 21 133 #C71585
VioletRed 208 32 144 #D02090
Magenta 255 0 255 #FF00FF
Violet 238 130 238 #EE82EE
Plum 221 160 221 #DDA0DD
Orchid 218 112 214 #DA70D6
MediumOrchid 186 85 211 #BA55D3
DarkOrchid 153 50 204 #9932CC
DarkViolet 148 0 211 #9400D3
BlueViolet 138 43 226 #8A2BE2
Purple 160 32 240 #A020F0
MediumPurple 147 112 219 #9370DB
Thistle 216 191 216 #D8BFD8
Snow1 255 250 250 #FFFAFA
Snow2 238 233 233 #EEE9E9
Snow3 205 201 201 #CDC9C9
Snow4 139 137 137 #8B8989
Seashell1 255 245 238 #FFF5EE
Seashell2 238 229 222 #EEE5DE
Seashell3 205 197 191 #CDC5BF
Seashell4 139 134 130 #8B8682
AntiqueWhite1 255 239 219 #FFEFDB
AntiqueWhite2 238 223 204 #EEDFCC
AntiqueWhite3 205 192 176 #CDC0B0
AntiqueWhite4 139 131 120 #8B8378
Bisque1 255 228 196 #FFE4C4
Bisque2 238 213 183 #EED5B7
Bisque3 205 183 158 #CDB79E
Bisque4 139 125 107 #8B7D6B
PeachPuff1 255 218 185 #FFDAB9
PeachPuff2 238 203 173 #EECBAD
PeachPuff3 205 175 149 #CDAF95
PeachPuff4 139 119 101 #8B7765
NavajoWhite1 255 222 173 #FFDEAD
NavajoWhite2 238 207 161 #EECFA1
NavajoWhite3 205 179 139 #CDB38B
NavajoWhite4 139 121 94 #8B795E
LemonChiffon1 255 250 205 #FFFACD
LemonChiffon2 238 233 191 #EEE9BF
LemonChiffon3 205 201 165 #CDC9A5
LemonChiffon4 139 137 112 #8B8970
Cornsilk1 255 248 220 #FFF8DC
Cornsilk2 238 232 205 #EEE8CD
Cornsilk3 205 200 177 #CDC8B1
Cornsilk4 139 136 120 #8B8878
Ivory1 255 255 240 #FFFFF0
Ivory2 238 238 224 #EEEEE0
Ivory3 205 205 193 #CDCDC1
Ivory4 139 139 131 #8B8B83
Honeydew1 240 255 240 #F0FFF0
Honeydew2 224 238 224 #E0EEE0
Honeydew3 193 205 193 #C1CDC1
Honeydew4 131 139 131 #838B83
LavenderBlush1 255 240 245 #FFF0F5
LavenderBlush2 238 224 229 #EEE0E5
LavenderBlush3 205 193 197 #CDC1C5
LavenderBlush4 139 131 134 #8B8386
MistyRose1 255 228 225 #FFE4E1
MistyRose2 238 213 210 #EED5D2
MistyRose3 205 183 181 #CDB7B5
MistyRose4 139 125 123 #8B7D7B
Azure1 240 255 255 #F0FFFF
Azure2 224 238 238 #E0EEEE
Azure3 193 205 205 #C1CDCD
Azure4 131 139 139 #838B8B
SlateBlue1 131 111 255 #836FFF
SlateBlue2 122 103 238 #7A67EE
SlateBlue3 105 89 205 #6959CD
SlateBlue4 71 60 139 #473C8B
RoyalBlue1 72 118 255 #4876FF
RoyalBlue2 67 110 238 #436EEE
RoyalBlue3 58 95 205 #3A5FCD
RoyalBlue4 39 64 139 #27408B
Blue1 0 0 255 #0000FF
Blue2 0 0 238 #0000EE
Blue3 0 0 205 #0000CD
Blue4 0 0 139 #00008B
DodgerBlue1 30 144 255 #1E90FF
DodgerBlue2 28 134 238 #1C86EE
DodgerBlue3 24 116 205 #1874CD
DodgerBlue4 16 78 139 #104E8B
SteelBlue1 99 184 255 #63B8FF
SteelBlue2 92 172 238 #5CACEE
SteelBlue3 79 148 205 #4F94CD
SteelBlue4 54 100 139 #36648B
DeepSkyBlue1 0 191 255 #00BFFF
DeepSkyBlue2 0 178 238 #00B2EE
DeepSkyBlue3 0 154 205 #009ACD
DeepSkyBlue4 0 104 139 #00688B
SkyBlue1 135 206 255 #87CEFF
SkyBlue2 126 192 238 #7EC0EE
SkyBlue3 108 166 205 #6CA6CD
SkyBlue4 74 112 139 #4A708B
LightSkyBlue1 176 226 255 #B0E2FF
LightSkyBlue2 164 211 238 #A4D3EE
LightSkyBlue3 141 182 205 #8DB6CD
LightSkyBlue4 96 123 139 #607B8B
SlateGray1 198 226 255 #C6E2FF
SlateGray2 185 211 238 #B9D3EE
SlateGray3 159 182 205 #9FB6CD
SlateGray4 108 123 139 #6C7B8B
LightSteelBlue1 202 225 255 #CAE1FF
LightSteelBlue2 188 210 238 #BCD2EE
LightSteelBlue3 162 181 205 #A2B5CD
LightSteelBlue4 110 123 139 #6E7B8B
LightBlue1 191 239 255 #BFEFFF
LightBlue2 178 223 238 #B2DFEE
LightBlue3 154 192 205 #9AC0CD
LightBlue4 104 131 139 #68838B
LightCyan1 224 255 255 #E0FFFF
LightCyan2 209 238 238 #D1EEEE
LightCyan3 180 205 205 #B4CDCD
LightCyan4 122 139 139 #7A8B8B
PaleTurquoise1 187 255 255 #BBFFFF
PaleTurquoise2 174 238 238 #AEEEEE
PaleTurquoise3 150 205 205 #96CDCD
PaleTurquoise4 102 139 139 #668B8B
CadetBlue1 152 245 255 #98F5FF
CadetBlue2 142 229 238 #8EE5EE
CadetBlue3 122 197 205 #7AC5CD
CadetBlue4 83 134 139 #53868B
Turquoise1 0 245 255 #00F5FF
Turquoise2 0 229 238 #00E5EE
Turquoise3 0 197 205 #00C5CD
Turquoise4 0 134 139 #00868B
Cyan1 0 255 255 #00FFFF
Cyan2 0 238 238 #00EEEE
Cyan3 0 205 205 #00CDCD
Cyan4 0 139 139 #008B8B
DarkSlateGray1 151 255 255 #97FFFF
DarkSlateGray2 141 238 238 #8DEEEE
DarkSlateGray3 121 205 205 #79CDCD
DarkSlateGray4 82 139 139 #528B8B
Aquamarine1 127 255 212 #7FFFD4
Aquamarine2 118 238 198 #76EEC6
Aquamarine3 102 205 170 #66CDAA
Aquamarine4 69 139 116 #458B74
DarkSeaGreen1 193 255 193 #C1FFC1
DarkSeaGreen2 180 238 180 #B4EEB4
DarkSeaGreen3 155 205 155 #9BCD9B
DarkSeaGreen4 105 139 105 #698B69
SeaGreen1 84 255 159 #54FF9F
SeaGreen2 78 238 148 #4EEE94
SeaGreen3 67 205 128 #43CD80
SeaGreen4 46 139 87 #2E8B57
PaleGreen1 154 255 154 #9AFF9A
PaleGreen2 144 238 144 #90EE90
PaleGreen3 124 205 124 #7CCD7C
PaleGreen4 84 139 84 #548B54
SpringGreen1 0 255 127 #00FF7F
SpringGreen2 0 238 118 #00EE76
SpringGreen3 0 205 102 #00CD66
SpringGreen4 0 139 69 #008B45
Green1 0 255 0 #00FF00
Green2 0 238 0 #00EE00
Green3 0 205 0 #00CD00
Green4 0 139 0 #008B00
Chartreuse1 127 255 0 #7FFF00
Chartreuse2 118 238 0 #76EE00
Chartreuse3 102 205 0 #66CD00
Chartreuse4 69 139 0 #458B00
OliveDrab1 192 255 62 #C0FF3E
OliveDrab2 179 238 58 #B3EE3A
OliveDrab3 154 205 50 #9ACD32
OliveDrab4 105 139 34 #698B22
DarkOliveGreen1 202 255 112 #CAFF70
DarkOliveGreen2 188 238 104 #BCEE68
DarkOliveGreen3 162 205 90 #A2CD5A
DarkOliveGreen4 110 139 61 #6E8B3D
Khaki1 255 246 143 #FFF68F
Khaki2 238 230 133 #EEE685
Khaki3 205 198 115 #CDC673
Khaki4 139 134 78 #8B864E
LightGoldenrod1 255 236 139 #FFEC8B
LightGoldenrod2 238 220 130 #EEDC82
LightGoldenrod3 205 190 112 #CDBE70
LightGoldenrod4 139 129 76 #8B814C
LightYellow1 255 255 224 #FFFFE0
LightYellow2 238 238 209 #EEEED1
LightYellow3 205 205 180 #CDCDB4
LightYellow4 139 139 122 #8B8B7A
Yellow1 255 255 0 #FFFF00
Yellow2 238 238 0 #EEEE00
Yellow3 205 205 0 #CDCD00
Yellow4 139 139 0 #8B8B00
Gold1 255 215 0 #FFD700
Gold2 238 201 0 #EEC900
Gold3 205 173 0 #CDAD00
Gold4 139 117 0 #8B7500
Goldenrod1 255 193 37 #FFC125
Goldenrod2 238 180 34 #EEB422
Goldenrod3 205 155 29 #CD9B1D
Goldenrod4 139 105 20 #8B6914
DarkGoldenrod1 255 185 15 #FFB90F
DarkGoldenrod2 238 173 14 #EEAD0E
DarkGoldenrod3 205 149 12 #CD950C
DarkGoldenrod4 139 101 8 #8B658B
RosyBrown1 255 193 193 #FFC1C1
RosyBrown2 238 180 180 #EEB4B4
RosyBrown3 205 155 155 #CD9B9B
RosyBrown4 139 105 105 #8B6969
IndianRed1 255 106 106 #FF6A6A
IndianRed2 238 99 99 #EE6363
IndianRed3 205 85 85 #CD5555
IndianRed4 139 58 58 #8B3A3A
Sienna1 255 130 71 #FF8247
Sienna2 238 121 66 #EE7942
Sienna3 205 104 57 #CD6839
Sienna4 139 71 38 #8B4726
Burlywood1 255 211 155 #FFD39B
Burlywood2 238 197 145 #EEC591
Burlywood3 205 170 125 #CDAA7D
Burlywood4 139 115 85 #8B7355
Wheat1 255 231 186 #FFE7BA
Wheat2 238 216 174 #EED8AE
Wheat3 205 186 150 #CDBA96
Wheat4 139 126 102 #8B7E66
Tan1 255 165 79 #FFA54F
Tan2 238 154 73 #EE9A49
Tan3 205 133 63 #CD853F
Tan4 139 90 43 #8B5A2B
Chocolate1 255 127 36 #FF7F24
Chocolate2 238 118 33 #EE7621
Chocolate3 205 102 29 #CD661D
Chocolate4 139 69 19 #8B4513
Firebrick1 255 48 48 #FF3030
Firebrick2 238 44 44 #EE2C2C
Firebrick3 205 38 38 #CD2626
Firebrick4 139 26 26 #8B1A1A
Brown1 255 64 64 #FF4040
Brown2 238 59 59 #EE3B3B
Brown3 205 51 51 #CD3333
Brown4 139 35 35 #8B2323
Salmon1 255 140 105 #FF8C69
Salmon2 238 130 98 #EE8262
Salmon3 205 112 84 #CD7054
Salmon4 139 76 57 #8B4C39
LightSalmon1 255 160 122 #FFA07A
LightSalmon2 238 149 114 #EE9572
LightSalmon3 205 129 98 #CD8162
LightSalmon4 139 87 66 #8B5742
Orange1 255 165 0 #FFA500
Orange2 238 154 0 #EE9A00
Orange3 205 133 0 #CD8500
Orange4 139 90 0 #8B5A00
DarkOrange1 255 127 0 #FF7F00
DarkOrange2 238 118 0 #EE7600
DarkOrange3 205 102 0 #CD6600
DarkOrange4 139 69 0 #8B4500
Coral1 255 114 86 #FF7256
Coral2 238 106 80 #EE6A50
Coral3 205 91 69 #CD5B45
Coral4 139 62 47 #8B3E2F
Tomato1 255 99 71 #FF6347
Tomato2 238 92 66 #EE5C42
Tomato3 205 79 57 #CD4F39
Tomato4 139 54 38 #8B3626
OrangeRed1 255 69 0 #FF4500
OrangeRed2 238 64 0 #EE4000
OrangeRed3 205 55 0 #CD3700
OrangeRed4 139 37 0 #8B2500
Red1 255 00 #FF0000
Red2 238 00 #EE0000
Red3 205 00 #CD0000
Red4 139 00 #8B0000
DeepPink1 255 20 147 #FF1493
DeepPink2 238 18 137 #EE1289
DeepPink3 205 16 118 #CD1076
DeepPink4 139 10 80 #8B0A50
HotPink1 255 110 180 #FF6EB4
HotPink2 238 106 167 #EE6AA7
HotPink3 205 96 144 #CD6090
HotPink4 139 58 98 #8B3A62
Pink1 255 181 197 #FFB5C5
Pink2 238 169 184 #EEA9B8
Pink3 205 145 158 #CD919E
Pink4 139 99 108 #8B636C
LightPink1 255 174 185 #FFAEB9
LightPink2 238 162 173 #EEA2AD
LightPink3 205 140 149 #CD8C95
LightPink4 139 95 101 #8B5F65
PaleVioletRed1 255 130 171 #FF82AB
PaleVioletRed2 238 121 159 #EE799F
PaleVioletRed3 205 104 137 #CD6889
PaleVioletRed4 139 71 93 #8B475D
Maroon1 255 52 179 #FF34B3
Maroon2 238 48 167 #EE30A7
Maroon3 205 41 144 #CD2990
Maroon4 139 28 98 #8B1C62
VioletRed1 255 62 150 #FF3E96
VioletRed2 238 58 140 #EE3A8C
VioletRed3 205 50 120 #CD3278
VioletRed4 139 34 82 #8B2252
Magenta1 255 0 255 #FF00FF
Magenta2 238 0 238 #EE00EE
Magenta3 205 0 205 #CD00CD
Magenta4 139 0 139 #8B008B
Orchid1 255 131 250 #FF83FA
Orchid2 238 122 233 #EE7AE9
Orchid3 205 105 201 #CD69C9
Orchid4 139 71 137 #8B4789
Plum1 255 187 255 #FFBBFF
Plum2 238 174 238 #EEAEEE
Plum3 205 150 205 #CD96CD
Plum4 139 102 139 #8B668B
MediumOrchid1 224 102 255 #E066FF
MediumOrchid2 209 95 238 #D15FEE
MediumOrchid3 180 82 205 #B452CD
MediumOrchid4 122 55 139 #7A378B
DarkOrchid1 191 62 255 #BF3EFF
DarkOrchid2 178 58 238 #B23AEE
DarkOrchid3 154 50 205 #9A32CD
DarkOrchid4 104 34 139 #68228B
Purple1 155 48 255 #9B30FF
Purple2 145 44 238 #912CEE
Purple3 125 38 205 #7D26CD
Purple4 85 26 139 #551A8B
MediumPurple1 171 130 255 #AB82FF
MediumPurple2 159 121 238 #9F79EE
MediumPurple3 137 104 205 #8968CD
MediumPurple4 93 71 139 #5D478B
Thistle1 255 225 255 #FFE1FF
Thistle2 238 210 238 #EED2EE
Thistle3 205 181 205 #CDB5CD
Thistle4 139 123 139 #8B7B8B
grey11 28 28 28 #1C1C1C
grey21 54 54 54 #363636
grey31 79 79 79 #4F4F4F
grey41 105 105 105 #696969
grey51 130 130 130 #828282
grey61 156 156 156 #9C9C9C
grey71 181 181 181 #B5B5B5
gray81 207 207 207 #CFCFCF
gray91 232 232 232 #E8E8E8
DarkGrey 169 169 169 #A9A9A9
DarkBlue 0 0 139 #00008B
DarkCyan 0 139 139 #008B8B
DarkMagenta 139 0 139 #8B008B
DarkRed 139 0 0 #8B0000
LightGreen 144 238 144 #90EE90

You might also like