144
Sistema de Exibição e Análise de Grade GrADS V1.5.1.12 Brian Doty [email protected] 17 Fevereiro, 1998 (revisado em Dezembro de 1999) Manual formatado e atualizado por: Tom Holt, Unidade de Pesquisa Climatológica, Universidade de Anglia Oriental, Norwich, UK. [email protected] e Mike Fiorino Programa para Modelagem Diagnose e Intercomparação Climatológica Lawrence Livermore Laboratório Nacional L-264 Livermore, CA 94551 [email protected] Versão para português por: José Fernando Pesquero - [email protected] Sistema de Visualização e Operação Meteorológica Centro de Previsão de Tempo e Estudos Climáticos - CPTEC/INPE Rod. Dutra, Km 40 Cachoeira Paulista - SP - 12.630-000

Manual Grads

Embed Size (px)

Citation preview

Page 1: Manual Grads

Sistema de Exibição e Análise de Grade

GrADS

V1.5.1.12

Brian Doty

[email protected]

17 Fevereiro, 1998(revisado em Dezembro de 1999)

Manual formatado e atualizado por:Tom Holt,Unidade de Pesquisa Climatológica,Universidade de Anglia Oriental, Norwich, [email protected]

e

Mike FiorinoPrograma para Modelagem Diagnose e Intercomparação ClimatológicaLawrence Livermore Laboratório Nacional L-264Livermore, CA 94551 [email protected]

Versão para português por:José Fernando Pesquero - [email protected] de Visualização e Operação MeteorológicaCentro de Previsão de Tempo e Estudos Climáticos - CPTEC/INPERod. Dutra, Km 40 Cachoeira Paulista - SP - 12.630-000

Page 2: Manual Grads

2

Tabela de Tópicos

TABELA DE TÓPICOS 002

RESUMO 009

SUGESTÕES 010

COMO USAR ESTE MANUAL 011

GUIA DE APRESENTAÇÃO 012

1.0 INICIANDO E SAINDO DO GRADS 013

Ajuda 013

Diagnósticos iniciais 013

Opções iniciais 013

Saindo do GrADS 014

2.0 CONCEITO BÁSICO DE OPERAÇÃO 015

3.0 TUTORIAL 016

4.0 USANDO OS ARQUIVOS DE DADOS NO GRADS 021Padrão de extensão dos arquivos 021

Introdução aos conjuntos de dados no GrADS 021Conjuntos de dados em ponto de grade 022

O registro OPTIONS no arquivo descritor de dados 027Conjuntos de dados de estação 028O arquivo descritor de dados de estação 029O Utilitário STNMAP 030

Criando Arquivos de dados 030Exemplos de criação de um conjunto de dados em ponto de grade 030Exemplos de criação de conjuntos de dados de estação 031

5.0 AMBIENTE DIMENSIONADO 034

6.0 NOMES DE VARIÁVEIS 035

Page 3: Manual Grads

3

7.0 EXPRESSÕES 036

8.0 VARIÁVEIS DEFINIDAS 037

Definindo novas variáveis 037

Indefinindo novas variáveis 039

9.0 EXIBINDO A PLOTAGEM DE DADOS 040

Exibindo os dados 040

Limpando a janela gráfica 040

10.0 TIPOS DE SAÍDAS GRÁFICAS 041

11.0 ANIMAÇÃO 043

12.0 CONTROLE DE PÁGINA 044

Páginas virtuais e reais 044

Controlando a área de plotagem 044

13.0 GRÁFICOS DE PRIMITIVAS 045

Comandos de desenho 045

Controlando os comandos de desenho 046

Plotagem em uma área específica 047

14.0 SAÍDA DE IMPRESSÃO 048

Produzindo um arquivo de impressão no GrADS 048

Imprimindo um arquivo impressão no GrADS 048

15.0 COMANDO EXEC 049

16.0 USANDO DADOS DE ESTAÇÃO 050

Operando com dados de estação 050

Modelos de estação 051

17.0 INTRODUÇÃO AOS SCRIPTS DO GRADS 052

Page 4: Manual Grads

4

O que os scripts podem fazer 052

Executando os scripts 052

Executando automaticamente um script 052

Armazenando scripts do GrADS 053

18.0 FACILIDADES ADICIONAIS 054

Comandos do shell 054

Opções de linha de comando nos utilitários do GrADS 054

Reinicializando o GrADS 054

Exibindo os metafiles do GrADS 055

SEÇÃO DE REFERÊNCIA 056

19.0 OPÇÕES GRÁFICAS 057

Gráficos 1-D 057Gráficos de Linha (gxout = line): 057Gráficos de Barra (gxout = bar) 057Barras de Erro (gxout = errbar) 058Gráfico de Linha Sombreada (gxout = linefill) 058

Gráficos em Grade 2-D 058Plotando em Linhas de Contorno (gxout = contour) 058Plotando em Contorno Sombreado ou Grade Pintada (gxout = shaded ou grfill) 060Plotando em Valor de Ponto de Grade (gxout = grid) 061Plotando em Forma de Vetor (gxout = vector) 061Plotando em Forma de Barbela de Vento (gxout = barb) 062Gráfico de Espalhamento (gxout = scatter) 063Plotando um Valor de Ponto de Grade Especifico (gxout = fgrid) 063Plotando em Forma de Linhas de Corrente (gxout = stream) 063

1-D Gráficos De Estação 064Plotando uma série de tempo de barbela de vento em um ponto (gxout = tserbarb) 064Plotando uma série de símbolos de tempo em um ponto (gxout = tserwx) 064

2-D Gráficos De Estação 064Plotando os valores de estação(gxout = value) 064Plotando a barbela de vento na estação (gxout = barb) 064Plotando o símbolo de tempo na estação (gxout = wxsym) 065Plotando o modelo de estação (gxout = modelo) 065

Outras Opções de Exibição 066Encontrando a estação mais próxima do ponto x, y (gxout = findstn) 066Escrevendo os dados para um arquivo (gxout = fwrite) 066Exibindo informações sobre os dados (gxout = stat) 066

Page 5: Manual Grads

5

Comandos de Atribuição para Controlar a Exibição Gráfica 067Atribuindo limite para plotagem 1-D ou plotagem scatter 067Controlando a escala log quando a dimensão Z é plotada sobre qualquer plotagem 067Controlando a orientação dos eixos 068Controlando a rotulação dos eixos 068Controlando a exibição das projeções de mapa 069Controlando o desenho do mapa 069Controlando a anotação 070Controlando a exibição do console 070Controlando a moldura 070Controlando a exibição do logotipo 070

20.0 FUNÇÕES DO GRADS 071Funções de média 071

aave 071amean 072ave 072mean 074vint 074

Funções de filtro 075smth9 075

Funções de diferenças finitas 075cdiff 075

Funções de grade 076const 076maskout 077skip 078

Funções Matemática 078abs 078acos 078asin 079atan2 079cos 079exp 079gint 079gint(expr ) 079log 079log10 079pow 080seno 080sqrt 080tan 080

Funções meteorológicas 080tvrh2q 080tvrh2t 082

Funções de propósitos especiais 081tloop 082

Page 6: Manual Grads

6

Funções de dados de estação 083gr2stn 083oacres 083stnave 085stnmin 085tnmax 085

Funções de vetor 086hcurl 086hdivg 086mag 086

21.0 FUNÇÕES DEFINIDAS PELOS USUÁRIOS (UDFS): 088

Resumo das funções definidas pelo usuário 088

A tabela das funções definidas pelo usuário 088

Formato do arquivo transferência de dados da função 089

Formato do arquivo resultado ad função 091

Exemplo: Função de regressão linear 091

22.0 RECURSOS ADIC. DO CONJUNTOS DE DADOS NO GRADS 094

Cabeçalhos de grupos de arquivo e tempo 094

Controle do formato/estrutura da variável 094

Séries de tempo de múltiplos arquivos 099

Formato e a estrutura dos dados acrescentadas 101

23.0 PROGR. NO GRADS: USANDO A LINGUAGEM DE SCRIPT 102

Resumo da linguagem de script 102

Elementos da Linguagem 102Variáveis 103

Variáveis de String 103Variáveis Predefinidas 103Variáveis Globais 103Variáveis Compostas 103

Operadores 104Expressões 105Controle de Fluxo 106

Blocos IF 106Blocos WHILE 106

Funções 107Designação 108Padrão de Entrada/Saída 108

Page 7: Manual Grads

7

Enviando comandos ao GrADS 108Funções Intrínsecas 109

Funções de String 109Funções Entrada/Saída 109

Comandos que complementam a linguagem de script 110Widgets 112

Botões na tela 113Rubber banding 113

Exemplos 114

24.0 USANDO PROJEÇÕES DE MAPA NO GRADS 116

Usando Grades Preprojetadas 116Dados pré-projetados Estéreo Polar ( baixa resolução para modelos do NMC) 117Dados pré-projetados Lambert Conformal 120Modelo Eta do NMC (grades não balanceada) 122Alta resolução em Estéreo Polar do NMC para os dados do SSM/I 124Grades Estéreo Polar Oblíquas do RAMS no CSU 126Conselhos quando usando dados preprojetados 128

Exibição de Projeções no GrADS 128

Resumo e Planos 128

APÊNDICES 130

APÊNDICE A: SCRIPTS SUPLEMENTARES 131

1) Correlação entre duas grades horizontais (corr.gs) 131

2) Script de Tabela de Cores no GrADS (cmap.gs) 131

3) Exibição de Fonte (font.gs) 134

4) Plota uma barra de cores (cbar.gs) 134

5) Acumula comandos e faz exibição de uma só vez (stack.gs) 134

6) Plota todos os Símbolos do WX (wxsym.gs) 134

7) (draw.gs) 134

8) (string.gs) 134

9) (loop.gs) 134

10) (bsamp.gs) 135

11) Script de Barra de cores Expandido(cbarn.gs) 135

Page 8: Manual Grads

8

12) Calculando o desvio padrão (sd.gs) 135

13) Desenha uma plotagem em x,y (xyplot.gs) 135

APÊNDICE B: USANDO DADOS GRIB NO GRADS 136

Gribscan 136Opções de arquivo 136Opções de processamento: 136Nota especial aos usuários do NMC 137Opções de exibição: 137Alguns exemplos: 137

Gribmap 138

APÊNDICE C: USANDO GRADS NO PC 142

Conjunto de dados de outras plataformas 142

Imprimindo em impressoras sem postscript 142

Incorporando gravuras do GrADS dentro de software para PC 142

APÊNDICE D: - FACILIDADES DE REDE RELACIONADAS AO GRADS 143

Sites de ftp 143

Listserver 143

Sites na WWW 143

Page 9: Manual Grads

9

Resumo

O Analisador de Grade e Sistema de Exibição (GrADS) é uma ferramenta interativa que estáatualmente em uso global para a análise e exibição de dados de ciência da Terra. O GrADS estáimplementado em todas as plataformas UNIX de estações de trabalho disponíveis, MS-DOS eWin95/98, é gratuitamente distribuído na Internet. O GrADS fornece um ambiente integrado paraacesso, manipulação e exibição de dados de ciência da Terra.

O GrADS trabalha com modelos de dados em 4 dimensões, onde as dimensões normalmente sãolatitude, longitude, nível e tempo. Cada conjunto de dados está localizado dentro de um espaço de 4dimensões pelo uso de um arquivo descritor de dados. Podem ser descritos dados em grade e emestação. Os dados em grade, podem ser não-linearmente espaçados; grades do tipo Gaussiana e gradesde modelagem oceanográfica de resolução variável são diretamente suportados. A representaçãointerna de um arquivo de dados pode ser binário ou GRIB.

Desde que cada conjunto de dados esteja localizado dentro de um espaço de dados 4-D, é muito fácil aintercomparação dos conjuntos de dados. As operações podem ser desempenhadas entre dados emgrades diferentes, ou entre dados em grades e dados observacionais. Dados de diferentes conjuntospodem ser graficamente sobrepostos, desde que estejam com registro espacial e temporal correto.

O usuário acessa os dados da perspectiva do modelo 4-D. Um ambiente dimensionado é descrito pelousuário como um subconjunto desejado do espaço 4-D. Os dados são acessados, manipulados eexibidos dentro deste subconjunto.

As operações podem ser realizadas diretamente e interativamente nos dados, por chamar programascomo feitos em FORTRAN na linha de comando. O GrADS já possui um bom conjunto de funçõesembutidas. Mesmo assim, os usuários podem adicionar as suas próprias funções como rotinas externasescritas em qualquer linguagem de programação. A sintaxe das expressões permite que operaçõescomplexas, que variam sobre grandes quantidades de dados, sejam realizadas com simplesexpressões.

Uma vez que os dados foram acessados e manipulados, eles podem ser exibidos usando umavariedade de técnicas de saídas gráficas, incluindo linha, barra, e gráfico de espalhamento, assimcomo contorno, contorno sombreado, linhas de corrente, vetor de vento, caixa de grade, caixa degrade sombreada e o modelo de plotagem de estação. Os gráficos também podem sair em formatoPostscript para impressão em impressoras de postscript monocromático ou colorido. O usuário temum vasto controle sobre todos os aspectos de saídas gráficas ou pode escolher usar intuitivamente assaídas padrão.

Uma interface programável é fornecida na forma de uma interpretação de linguagem de script. Umscript pode exibir widgets, assim como gráficos e pega ações baseado no clique do mouse solicitadopelo usuário. Podem ser construídas completas e sofisticadas interfaces gráficas de dados. Alinguagem de script pode também ser usada para automatizar cálculos e exibições de multi passocomplexas. O GrADS pode ser rodado em modo lote, e a linguagem de script facilita o uso do GrADSpara fazer longos trabalhos de lote durante a noite.

O grupo de desenvolvimento planeja suporte para dados de imagens geograficamente registradas edesenvolvimento de uma interface para conjunto de dados em formato BUFR. Finalmente, planeja-seimplementar uma quantidade de recursos solicitado pelo usuário, tais como cortes transversaisverticais arbitrários, uma interface ao pacote de armazenamento de dados NetCDF, e uma acentuadaquantidade de ajuda através do clique do mouse .

Page 10: Manual Grads

10

SugestõesPor favor quaisquer sugestões que tiver para melhorar o GrADS mande para [email protected] sempre interessados em escutar o que se gosta e não se gosta sobre o GrADS e estaremossempre procurando formas para melhorá-lo.

Também recomendo que junte-se ao listserv do gradsusr descrito no apêndice D. Este fórum étambém monitorado pela comunidade de desenvolvimento do GrADS e é outro canal para fazersugestões.

Page 11: Manual Grads

11

Como usar este Manual

Este manual está dividido em três seções:

• Guia de apresentação• Seção de referência• Apêndices

Guia de apresentação

O guia de apresentação fornece uma estrutura conceitual, dentro da qual uma mais detalhadainformação está contida em subsequentes seções, e pode ser entendida quando for necessário. Assim,esta seção contém a maior parte da informação necessária para uso do GrADS em um nível básico.Entretanto, este não foi projetado para ficar sozinho e quase imediatamente os usuários certamenteirão precisar se referir à algum deste material na Seção de Referência.

Seção de Referência

Os primeiros dois capítulos desta seção contêm uma detalhada descrição de todas as opçõesdisponíveis para exibições gráficas dos dados, seguidos por uma referência às funções do GrADS.Ambos os capítulos estão organizados por categorias funcionais. Isto habilita aos usuários a decidir oque eles desejam fazer e, então, referem-se rapidamente à todas as opções disponíveis. Os capítulosrestantes nesta seção fornecem uma informação para um uso mais avançado do GrADS e umacompreensão mais profunda dos processos descritos no guia de apresentação.

Apêndices

Os apêndices contêm uma informação considerada não imediatamente relevante para os primeiroscapítulos. Isto inclui alguma informação de plataforma específica e material auxiliar o qual poderáreduzir o tempo gasto para tornar-se familiar com as facilidades do GrADS. Todos os usuários sãoaconselhados a folhear os apêndices antes de usar o GrADS.

Usando o Manual

Em vez de um índice, este manual faz uso de uma detalhada Tabela de Tópicos para ajudar a achar asinformações. Os usuários são aconselhados a referir-se para este se estiverem com dúvidas sobrecomo fazer algo. O manual foi organizado de uma maneira funcional para reduzir o tempo gasto naleitura da informação irrelevante. Antes de usar o GrADS com seus próprios dados, é sugerido aosnovos usuários que leiam os três primeiros capítulos do Guia de Introdução e então experimentemcom o arquivo de dados de exemplo descrito no Capítulo 3 Tutorial. Os arquivos de descrição dedados de exemplo, listados no Capítulo 4 Usando o Arquivo de Dados no GrADS, deve serestudado. Seguindo as instruções neste capítulo, a construção de um descritor de dados de teste parauma pequena amostra de um conjunto de dados, deverá ser uma problema realmente simples. Istopode então ser feito usando o GrADS pela referência apropriada dos capítulos e gradualmenteexpandir suas capacidades no GrADS.

Page 12: Manual Grads

12

Guia de Apresentação

Page 13: Manual Grads

13

1.0 Iniciando e Saindo do GrADS

O GrADS é iniciado digitando o comando: grads

Antes do ambiente de saída gráfica ser iniciado, o GrADS perguntará pelo modo paisagem ou retrato.O modo paisagem tem 11 x 8.5 polegadas (normalmente o mais usado) e o retrato tem 8.5 x 11polegadas (normalmente usado para produzir saídas verticais de impressão). O tamanho real da janelanão será, certamente, de 11 x 8.5 polegadas (ou 8. 5 x 11 polegadas), mas ao em vez disso será dotamanho qualquer escolhido pelo uso do gerenciador de janela da estação de trabalho. Mas o GrADStratará a janela como se esta tivesse um dos tamanhos acima, assim é melhor manter o tamanho dajanela com um aspecto próprio. Isto pode ser feito usando o gerenciador de janela ou no GrADSusando o comando:

set xsize x y

que modifica o tamanho da janela para x ,y pixels.

Após esta pergunta ser respondida, uma janela de saída gráfica, separada, será aberta. O tamanhodesta janela pode ser modificado a qualquer tempo.

Os comandos do GrADS são digitados na janela de texto de onde o GrADS foi iniciado. A saída degráficos aparecerá na janela de gráficos em resposta aos comandos digitados. Assim é necessário fazera janela de texto a janela "ativa"; a janela que recebe a entrada do teclado.

AjudaDigitando help na linha de comando, o GrADS mostra um resumo da lista de operações básicas parafazer algo no GrADS. Isto é pretendido para balançar a memória, ao invés de fornecer uma grandefacilidade de ajuda. Se o manual do GrADS não está disponível, uma informação pode ser obtida, damaior parte dos parâmetros do comando, apenas por digitar o comando. Alternativamente, umadocumentação compreensiva e pretendida a ser usada como uma facilidade da Web local, está sendoconstruída.

Diagnósticos iniciaisQuando o GrADS é iniciado obtém-se um diagnóstico específico da plataforma, por exemplo:

GX Package Initialization: Size = 11 8.5!!!! 32-bit machine version BIG ENDIANga>

A linha !!!! conta que esta versão é para máquinas de 32-bit (i.e., os dados estão em 32-bit) e este foicompilado para uma máquina big endian (a Sun neste caso). Na Cray será obtido ...

!!!! 64-BIT MACHINE VERSION (CRAYS)

Opções iniciaisExistem as seguintes opções como argumentos no comando 'grads' quando o GrADS é iniciado:

b Inicia o grads no modo lote. Nenhuma janela de saída de gráficos é aberta.l Inicia o grads no modo paisagem. O modo retrato vs. modo paisagem não é perguntado.p Inicia o grads em modo de retrato.c Executa o comando fornecido como o 1º. comando do GrADS após ser inicializado.

Page 14: Manual Grads

14

Um exemplo:grads -c "run profile.gs"

Estas opções podem ser usadas em combinações. Por exemplo:

grads -blc "run batch.gs"

Iniciará o grads no modo lote, usando a orientação paisagem (desta forma, nenhuma questão seráperguntada no início) e executará o comando:

"batch.gs" uma vez iniciado.

Saindo do GrADSPara sair do GrADS, o seguinte comando deve ser usado:

quit

Page 15: Manual Grads

15

2.0 Conceito Básico de Operação

Conseguindo o sucesso de instalação e iniciando o GrADS, haverá duas janelas, uma janela terminalcom uma linha de comando, muito parecido com o C:> do MS-DOS, e uma janela de tamanhomodificável (fundo preto pelo padrão) onde os gráficos serão exibidos.

Os comando do GrADS são digitados na janela terminal e a resposta do GrADS é ou gráfica na janelagráfica, ou texto na janela terminal. Os três comandos fundamentais do GrADS são:

• open abre ou torna disponível ao GrADS um arquivo de dados em grade ou dados de estação• d exibe uma "expressão" do GrADS (i.e., uma fatia dos dados)• set manipula o "qual", "onde" e "como" da exibição dos dados

A "expressão" do GrADS ou o que se deseja ver, pode ser tão simples como uma variável no arquivode dados que foi aberto, i.e., ‘d slp’ ou uma aritmética ou uma operação de funções dos dados noGrADS, i.e., ‘d slp/100' ou ‘d mag(u,v)’ onde mag é uma função intrínseca do GrADS.

O "onde" da exibição dos dados é chamado de " ambiente dimensionado " e define de qual parte, curtaou "muito grossa" do espaço geofísico 4-D (lon, lat, nível, tempo), é exibida. O ambientedimensionado é manipulado através do comando set e é controlado em coordenadas de grade (x, y, z,t ou índices) ou em coordenas globais (lon, lat, lev, tempo).

O "qual" e "como" da exibição é controlado pelo comando set, e inclui os métodos gráficos (i.e.,contornos, linhas de corrente) e dados (i.e., d para um arquivo).

Os gráficos do GrADS podem ser escritos para um arquivo (i.e., enable print nome do arquivo eprint) e então convertido em postscript para impressão e/ou conversão para outros formatos deimagem.

Em adição, o GrADS inclui gráfico de primitivas (i.e., linhas e círculos) e rótulos básicos através docomando draw.

O comando q ou query é usado para obter informações do GrADS, tais como, que arquivos estãoabertos e até mesmo estatísticas.

Page 16: Manual Grads

16

3.0 TutorialUm tutorial e um exemplo de dados estão disponíveis nos sites de distribuição(ftp://grads.iges.org/example.tar e ftp://sprite.llnl.gov/pub/fiorino/grads/exemple). Porções dossample.txt estão incluídos abaixo como outro ponto de partida para novos usuários do GrADS:

A seguinte sessão de exemplo dará um conhecimento de como devem ser usadas as capacidadesbásicas do GrADS. Será necessário o arquivo de dados 'model.dat' no sistema. Esta sessão de amostratoma cerca de 30 minutos para realizá-la.

Este arquivo de dados está descrito pelo arquivo descritor de dados 'model.ctl'. Seria interessante olhareste arquivo antes de continuar. O arquivo descritor de dados descreve o arquivo de dados real, o qualno caso, contém 5 dias de grades globais que tem 72 x 46 elementos em tamanho.

Para iniciar o GrADS, deve ser digitado:

grads

Se o grads não está no diretório corrente, ou se este não está em algum lugar do PATH, entre com onome inteiro do caminho, por exemplo:

/usr/homes/smith/grads/grads

O GrADS perguntará uma questão na linha de comando: paisagem vs. retrato; somente pressioneenter. Neste ponto deverá abrir no console uma janela de saída gráfica. O tamanho desta janela podeser modificável. Os comandos do GrADS deverão ser digitados na janela de onde o GrADS foiiniciado – será necessário tornar a janela 'ativa' antes de digitar e não deverá cubrir inteiramente estajanela com a janela de saída gráfica.

Na janela de texto , haverá uma linha de comando: ga>. Os comandos do GrADS deverão serdigitados nesta linha de comando e os resultados serão exibidos na janela de saída gráfica.

O primeiro comando a ser digitado é:

open model.ctl

Para exibir o que existe neste arquivo digite:

query file

Uma das variáveis disponíveis é ps, para pressão à superfície. Para exibir esta variável penas digite:

d ps

d é apenas o curto comando para exibição. Note, pelo padrão, que o GrADS exibirá uma plotagem X,Y referente ao primeiro tempo e ao nível mais baixo no conjunto dos dados.

Digite os comandos para alterar as ' dimensões do ambiente '. O comando de exibição (eimplicitamente, o acesso, a operação e a saída dos dados) fará coisas com respeito ao correnteambiente dimensionado. O ambiente dimensionado pode ser controlado entrando com comandos set:

Page 17: Manual Grads

17

clear limpa a janela gráficaset lon -90 atribui longitude fixaset lat 40 atribui latitude fixaset lev 500 atribui nível fixoset t 1 atribui tempo fixod z exibe uma variável

Na seqüência dos comandos acima, todas as quatro dimensões do GrADS foram atribuídas para umvalor singular, é dito que estas dimensões estão fixas. Quando a variável for exibida, desde que todasas dimensões estejam fixas, obtém-se um único valor, neste caso, o valor na localização 90W, 40N,500mb e no 1º. tempo no conjunto de dados.

Se for digitado agora:

set lon -180 0 X está agora com uma dimensão variandod z

Foi atribuído à dimensão de X, ou longitude, uma variação. Isto foi feito devido aos dois valorescolocados no comando set. Agora uma dimensão está variando (as outras dimensões estão aindafixas) e, quando for exibido uma variável, será plotado um gráfico de linha, neste caso, um gráfico de500mb na altura de 40N.

Digite:

clearset lat 0 90d z

Neste caso há duas dimensões variando, assim pelo padrão, uma plotagem em contorno é realizada.Agora com 3 dimensões variando:

cset t 1 5d z

uma seqüência de animação é realizada, neste caso, através do tempo.

Agora digite:

clearset lon -90set lat -90 90set lev 1000 100set t 1d td u

Neste caso é atribuído ao Y (latitude) e ao Z (nível) dimensões variantes, assim uma seção verticaltransversal é plotada. As duas variáveis exibidas simplesmente se sobrepõem uma sobre a outra. Onúmero de campos exibidos sobrepostos será quantos desejar antes de entrar com o comando clear.

Page 18: Manual Grads

18

Outro exemplo, neste caso com X e T variando (diagrama de Hovmoller):

cset lon -180 0set lat 40set lev 500set t 1 5d z

Agora que já é conhecido como selecionar uma porção do conjunto dos dados, o tópico será mudadopara operações nos dados. Primeiro, o ambiente dimensionado é mudado para uma variação Z, Y:

clearset lon -180 0set lat 0 90set lev 500set t 1

Querendo ver a temperatura em Fahrenheit em vez de Kelvin. A conversão será feita digitando:

display (t-273.16)*9/5+32

Pode ser usada qualquer expressão que envolva os operadores padronizados de +, -, *, e /, e as quais,envolvem operandos que podem ser constantes, variáveis, ou funções. Um exemplo envolvendofunções:

cleard sqrt(u*u+v*v)

para calcular a magnitude do vento. Uma função é fornecida para fazer este cálculo diretamente:

d mag(u,v)

Outra construção de função é a função do cálculo da média:

cleard ave(z,t=1,t=5)

Neste caso é calculado a média dos 5 dias. É possível remover a media do campo corrente:

d z - ave(z,t=1,t=5)

As médias podem ser tomadas sobre a longitude para remover a media zonal:

cleard z-ave(z,x=1,x=72)d z

Uma diferenciação no tempo pode também ser aplicado:

cleard z(t=2)-z(t=1)

Este calcula a variação entre os dois campos sobre 1 dia. Este cálculo pode também ser feito usandoum compensador do tempo atual:

d z(t+1) - z

A especificação completa do nome de uma variável é:

name.file(dim +|-|= valor, ...)

Page 19: Manual Grads

19

Se dois arquivos estiverem abertos, talvez um com saída de modelo e o outro com análises, adiferença entre os dois campos pode ser tomada entrando com: display z.2 - z.1

Esta função interna calcula a vorticidade relativa horizontal via diferenciação finita:

cleard hcurl(u,v)

Outra função calcula o peso da massa integral vertical:

cleard vint(ps,q,275)

Aqui foi calculado a água precipitável em mm.

Passando agora para o tópico de controle de saída gráfica, até aqui foi permitido ao GrADS controlaro intervalo de contorno, o espaçamento entre as linhas pode ser mudado digitando:

clearset cint 30d z

Ou também controlar a cor do contorno digitando:

clearset ccolor 3d z

Outro modelo de exibição dos dados pode ser selecionado:

clearset gxout shadedd hcurl(u,v)

Se este não estiver muito suave, um suavizador cúbico pode ser aplicado digitando:

clearset csmooth ond hcurl(u,v)

Um gráfico diferente pode sobrepor este digitando:

set gxout contourset ccolor 0set cint 30d z

e um título também pode ser anotado:

draw title 500mb Altura e Vorticidade

Para ver os vetores de vento:

clearset gxout vectord u;v

Aqui foram exibidas duas expressões, a 1ª. para a componente U do vetor; a 2ª. para a componente Vdo vetor. Para colorir, um 3º campo pode ser especificado:

d u;v;q

Page 20: Manual Grads

20

ou talvez:

d u;v;hcurl(u,v)

Para exibir pseudo vetores entre qualquer campo escolhido:

cleard mag(u,v) ; q*10000

Aqui a componente U é a magnitude do vento e a componente V é a umidade.

Um processo quase idêntico para ver as linhas de corrente (e as colorir):

clearset gxout streamd u;v;hcurl(u,v)

Os valores vigentes dos pontos de grade:

clearset gxout gridd u

É possível alterar o fundo do mapa:

clearset lon -110 -70set lat 30 45set mpdset hiresset digsiz 0.2 tamanho dos dígitosset dignum 2 # de dígitos depois da casa decimald u

Como também alterar a projeção:

set lon -140 -40set lat 15 80set mpvals -120 -75 25 65 constantes da projeção de mapaset mproj nps estéreográfica polar norteset gxout contourset cint 30d z

Neste caso, o grads foi informado que deverá acessar e operar os dados da longitude 140W para 40W,e da latitude 15N para 80N, foi exibido uma plotagem estereográfica polar que contém a região unidaentre 120W a 75W e 25N a 65N. A área extra de plotagem é recortada pela rotina de projeção demapa.

Isto conclui esta sessão. Neste ponto, examine um conjunto de dados adicionais, ou siga através dadocumentação do GrADS para tentar as outras opções descritas lá.

Page 21: Manual Grads

21

4.0 Usando os Arquivos de Dados no GrADS

O GrADS suporta dois tipos de dados básicos:

• dados em grade dados em uma grade• dados de estações estação ou pontos de observações.

Os dados e os dados meta (ou informações sobre os dados) são guardados em arquivos separados. Oarquivo de dados meta contém uma descrição completa dos dados além do nome deste arquivo dedados. O arquivo de dados é puramente de dados com nenhum espaço ou tempo identificador. Oarquivo que se abre no GrADS é o arquivo descritor de dados (os dados meta) ou arquivo .ctl. O .ctlé construído para descrever os vários tipos de dados e estruturas (i.e., binário e GRIB).

É, no mínimo, necessária a abertura de um arquivo descritor de dados antes de entrar outros comandosdo GrADS.

open nome_do_arquivo

Não existe problemas em abrir mais de um arquivo descritor de dados. Cada arquivo será numeradona ordem em que ele foi aberto. Inicialmente, o "arquivo padrão" é o arquivo 1, ou o 1º. arquivoaberto. A importância do arquivo padrão será discutido mais tarde.

Padrão de extensão do arquivo".ctl" é, de fato, a extensão padronizada para os arquivos descritores de dados do GrADS.Contribuindo para aderir a este padrão, não há necessidade de digitar a extensão ".ctl" quando digitaro comando open. Por exemplo, digitando:

open jandata.1966 tem o mesmo efeito de open jandata.1966.ctl

Introdução aos conjuntos de dados no GrADSOs dados puros estão em disco ou no formato binário de acesso binário direto ou seqüencial nãoformatado (IEEE flutuantes e inteiros) ou GRIB.

Os dados estão descritos pelo arquivo descritor de dados, o qual contém:

• Nome do conjunto de dados binário;• Mapeamento entre coordenada de grade e coordenada global;• Número de variáveis, abreviações para as variáveis.

O arquivo descritor de dados tem formato livre onde, cada campo, é delimitado por um campo vazio.Isto pode ser criado facilmente com um editor de texto. O arquivo descritor de dados designa, paracada variável do arquivo, de um até doze caracteres de abreviação. Essas abreviações são usadas emexpressões do GrADS.

O uso do arquivo descritor de dados é agora discutido para dados em ponto de grade e dados deestação. Este material usa exemplos simples os quais devem ser o bastante para habilitar os usuários aexplorar as capacidades do GrADS. Mais recursos avançados de arquivos .ctl estão descritos noCapítulo 22 na Seção de Referência.

Page 22: Manual Grads

22

Conjuntos de dados em ponto de gradeOs grade do GrADS pode conter qualquer número de variáveis em especificada longitude, latitude,níveis verticais e intervalos de tempo. As latitudes podem variar de norte para sul ou de sul paranorte (o padrão), e os níveis podem variar de cima para baixo ou de baixo para cima.

O GrADS vê este conjunto de dados como um vetor gigante "5-D" — com X (longitude ou lon)variando mais rápido, então Y (latitude ou lat), Z ( nível vertical ou lev), o tipo de variável e então T(tempo).

É mais fácil pensar nos dados em termos de uma seqüência de grades horizontais, onde variamlongitude e latitude. Cada grade horizontal representa uma variável particular, em uma altura e tempoparticular, além de serem do mesmo tamanho em qualquer particular conjunto de dados do GrADS (seexistir grades de tamanhos diferentes, estas devem ser criadas em conjuntos de dados separados).

Estas grades são escritas para o conjunto de dados na seguinte ordem: começando com uma variávelparticular, as grades, para cada nível vertical, são escritas (em um tempo particular) em ordemascendente. Então as grades para a próxima variável serão escritas. Quando todas as grades, em umtempo particular forem escritas, as grades do próximo tempo serão escritas.

O formato deste conjunto de dados tem assim exatamente o mesmo formato do Pressure History doCOLA, exceto: não há registros de data/tempo e, pelo padrão, a latitude varia de sul para norte (não denorte para sul como nos dados do pressure history).

Cada conjunto de dados binário em grade, é descrito por um arquivo descritor de dados separadodeste, basicamente é uma tabela (mapa) dos conjuntos de dados binários. Seguindo há um exemplo deum arquivo descritor de dados:

DSET ua.datTITLE Dados de Ar SuperiorUNDEF -9.99E33OPTIONS BYTESWAPPEDXDEF 80 LINEAR -140.0 1.0YDEF 50 LINEAR 20.0 1.0ZDEF 10 LEVELS 1000 850 700 500 400 300 250 200 150 100TDEF 4 LINEAR 0Z10apr1991 12hrVARS 6

slp 0 0 Pressão ao nível médio do marz 10 0 Altura geopotencialt 10 0 Temperaturatd 6 0 Ponto de orvalhou 10 0 Componente u do ventov 10 0 Componente v do vento

ENDVARS

O arquivo descritor de dados tem ' formato livre', i.e., cada entrada é delimitada por caracter embranco e pode aparecer em qualquer coluna. Os Registros comentados começam com um asterisco('*') na coluna 1. Os comentários não podem aparecer na lista de registros de variáveis (entre osregistros vars e endvars). Os registros não podem ser mais longos que 255 caracteres.

Neste exemplo, um conjunto de dados binário é especificado como ua.dat, o valor indefinido ouausente dos dados é -9.99e33, há 80 pontos de grade na direção do X, 50 na direção Y, 10 níveis, 4tempos e 6 variáveis. As variáveis, z, t, u, e v têm 10 níveis, a variável td tem 6 níveis, e a variávelslp tem um nível (veja abaixo para mais uma descrição especifica de cada entrada).

Pensando em termos de pontos de dados em X e Y, em um nível para uma variável em um temposendo uma grade horizontal. Esta grade está exatamente na mesma ordem de armazenamento de um

Page 23: Manual Grads

23

vetor em FORTRAN, neste caso um vetor de DIMENSÃO A(80,50). A primeira dimensão semprevaria de oeste para leste, a segunda de sul para norte (pelo padrão).

No exemplo acima, as grades horizontais seriam escritas na seguinte ordem:

Tempo 1, Nivel ?, Variável slpTempo 1, Nível 1000, Variável zTempo 1, Nível 850, Variável z

então os níveis de 700, 500, 400, 300, 250, 200, entãoTempo 1, Nível 150, Variável zTempo 1, Nível 100, Variável zTempo 1, Nível 1000, Variável tTempo 1, Nível 850, Variável t

então os níveis de 700, 500, 400, 300, 250, 200, entãoTempo 1, Nível 150, Variável tTempo 1, Nível 100, Variável tTempo 1, Nível 1000, Variável tdTempo 1, Nível 850, Variável tdTempo 1, Nível 700, Variável tdTempo 1, Nível 500, Variável tdTempo 1, Nível 400, Variável tdTempo 1, Nível 300, Variável tdTempo 1, Nível 1000, Variável uTempo 1, Nível 850, Variável u

então os níveis de 700, 500, 400, 300, 250, 200, entãoTempo 1, Nível 150, Variável uTempo 1, Nível 100, Variável uTempo 1, Nível 1000, Variável vTempo 1, Nível 850, v Variável v

então os níveis de 700, 500, 400, 300, 250, 200, entãoTempo 1, Nível 150, Variável vTempo 1, Nível 100, Variável vTempo 2, Nível ?, Variável slpTempo 2, Nível 1000,Variável zTempo 2, Nível 850, Variável zTempo 2, Nível 700, Variável zTempo 2, Nível 500, Variável zTempo 2, Nível 400, Variável z.etc.

Uma descrição de cada registro do arquivo descritor de dados em grade de exemplo segue:

DSET nome – do conjunto – de dados

Esta linha especifica o nome do conjunto de dados binário. Este pode ter em caso misto.

Se o conjunto de dados binário está no mesmo diretório que o arquivo descritor de dados, pode serdigitado, no descritor de dados, o nome do arquivo de dados sem especificar o diretório completo,apenas por prefixar um caracter ^ . Por Exemplo, se o arquivo de descritor de dados é:

/dados/wx/grads/sa.ctl

e o arquivo de dados binário é:

Page 24: Manual Grads

24

/dados/wx/grads/sa.dat

pode ser usado o seguinte nome no arquivo de descritor de dados:

DSET ^sa.dat

em vez de:

DSET /dados/wx/grads/sa.dat

Enquanto os dois arquivos forem guardados juntos, estes poderão ser colocados em qualquerdiretório sem ter que mudar o caminho dos dados do arquivo descritor.

TITLE caracteres

Uma breve descrição do conteúdo do conjunto de dados, este será exibido durante o comandoquery, portanto neste local pode ser colocado uma informação significativa.

UNDEF valor

Indefinido ou ausente. As operações no GrADS e as rotinas gráficas irão ignorar os dados comeste valor no conjunto de dados. Este é um parâmetro requerido mesmo que não exista dadosindefinidos.

OPTIONS BYTESWAPPED

Indica que o arquivo de dados binário está com o byte invertido com relação ao byte normal damáquina. Isto pode acontecer ao mudar, por exemplo, um arquivo em formato binário de uma Sunpara um PC. Colocando esta palavra chave no arquivo descritor do GrADS, o byte do arquivo dedados que está sendo lido será invertido.

XDEF número < LINEAR início incremento> ou <LEVEL lista de valores>

Define o mapeamento entre os valores de grade e longitude. Especificamente:

número -- o número de valores de grade na direção X, especificado como um número inteiro.Deve ser >= 1.

LINEAR ou LEVELS - Indica o tipo do mapeamento da grade.Para LINEAR:

início -- longitude inicial, ou a longitude para X=1. Deve ser especificado como umvalor de ponto flutuante onde negativo indica graus oeste.

incremento -- espaçamento entre o valores de grade na direção X. É assumido que osvalores da dimensão X vão de oeste para leste. Especificado como um valor positivoflutuante.

Para LEVELS:lista de valores -- lista de valores ‘numéricos’ representando a longitude de cada dimensão

X. Pode começar e continuar no próximo registro no arquivo descritor (o registro nãopode ter mais que 255 caracteres). Deve existir no mínimo 2 níveis (de outro modo deveser usado o mapeamento LINEAR).

YDEF número mapeamento início <incremento> ou <LEVELS lista de valores>

Define o mapeamento entre os valores de grade e latitude. Especificamente:

número -- número de valores de grades na direção Y, especificada como um número inteiro.mapeamento -- tipo de mapeamento, especificado como uma palavra-chave.

As válidas são:LINEAR -- mapeamento linearGAUSR15 -- latitudes Gaussiana R15

Page 25: Manual Grads

25

GAUSR20 -- latitudes Gaussiana R20GAUSR30 -- latitudes Gaussiana R30GAUSR40 -- latitudes Gaussiana R40

Exemplos de como especificar o mapeamento GAUSRxx:

YDEF 20 GAUSR40 15

Indica que há 20 valores na dimensão Y os quais começam na Latitude Gaussiana 15 (64.10sul) na grade Gaussiana R40. Assim os 20 valores irão corresponder às Latitudes:

64.10, -62.34, -60.58, -58.83, -57.07, -55.32, -53.56,51.80, -50.05, -48.29, -46.54, -44.78, -43.02, -41.27,39.51, -37.76, -36.00, -34.24, -32.49, -30.73

YDEF 102 GAUSR40 1

A grade gaussiana inteira esta presente, começando na latitude mais ao sul (-88.66).

início -- Para o mapeamento LINEAR, a latitude inicial, i.e., a latitude onde Y = 1, e éespecificada como um valor de ponto flutuante, com o negativo indicando graus sul. Paramapeamento GAUSRxx, o valor inicial indica o primeiro número da grade gaussiana, onde 1será a latitude de grade gaussiana mais ao sul.

incremento -- espaçamento entre os valores de grade na direção Y. É assumido que os valores dadimensão Y vão de sul para norte. Pode ser especificado por um valor positivo de pontoflutuante. É usado somente pelo mapeamento LINEAR.

Para LEVELS:lista de valores -- lista de valores ‘numéricos’ representando a latitude de cada dimensão Y.

Pode começar e continuar no próximo registro do arquivo descritor (o registro não pode termais que 80 caracteres). Deve haver no mínimo 2 níveis (de outro modo deve ser usado omapeamento LINEAR).

ZDEF número mapeamento <início incremento> ou <lista de valores>

Define o mapeamento entre os valores de grade e os níveis de pressão. Especificamente:

número -- número de valores de grade na direção Z, especificado como um número inteiro.mapeamento-- tipo de mapeamento, especificado como uma palavra-chave.

Os válidos são:LINEAR – mapeamento linearLEVELS -- níveis arbitrários de pressão

início -- quando o mapeamento é LINEAR, este é o valor inicial , ou o valor quando Z=1.incremento -- quando o mapeamento é LINEAR, indica o incremento na direção de Z ou do mais

baixo para o mais alto. Este pode ser um valor negativo, por exemplo:

ZDEF 10 LINEAR 1000 -100

indicando que os dados estão para os níveis 1000, 900, 800, 700, etc.lista de valores -- quando o mapeamento é LEVELS, os níveis especificados são simplesmente

listados em ordem ascendente. Se há somente um nível, deve ser usado LINEAR, desde queLEVELS implica em dois níveis no mínimo.

TDEF número do incremento tempo-inicial LINEAR

Define o mapeamento entre valores de grade e tempo. Especificamente:

número -- número de tempos no conjunto de dados. Especificado como um número inteiro.

tempo-inicial – valor inicial de data/tempo, especificados no formato absoluto de data/tempo do

Page 26: Manual Grads

26

GrADS. Este é o valor quando T=1. O formato de data/tempo é:hh:mmZddmmmyyyy onde:

hh = hora (dois dígitos inteiros)mm = minutos (dois dígitos inteiros)dd = dia (um ou dois dígitos inteiros)mmm = mês (jan, feb, mar, apr, may, jun, jul, aug, set, oct, nov, dec)yyyy = ano (dois ou quatro dígitos inteiros. Dois dígitos implica em um ano entre 1950 e

2049).

Se não for especificado, o padrão de hh é 00, o de mm é 00 e o de dd é 1. O mês e o anodeverão ser especificados. No formato absoluto de data/tempo do GrADS nenhum espaçoem branco intervindo é permitido.

Exemplos:

12Z1JAN199014:20Z22JAN1987JUN1960

incremento -- incremento de tempo. Especificado formato de incremento de tempo do GrADS:vvkk onde:

vv = um número inteiro, 1 ou 2 dígitoskk = uma palavra-chave de incremento,

mn = minutoshr = horasdy = diasmo = mêsyr = ano

Exemplos:

20mn -- incremento de 20 minutos1mo -- incremento de 1 mês2dy -- incremento de 2 dias

Exemplos adicionais de uma declaração do TDEF:

TDEF 24 LINEAR 00Z01JUN1987 1HR

O conjunto tem 24 tempos, iniciando às 00Z de 1º de Junho de 1987, com incremento de1hora

TDEF 30 LINEAR 2JUN1988 1DY

O conjunto de dados tem 30 tempos, começando às 00Z de 2 de Junho de 1988, comincremento de 1 dia.

VARS número

Indica o início dos registros que descrevem as variáveis no conjunto de dados.

número – o número do registro de variáveis

registro de variáveis (slp ... v)

Há seis registros de variáveis neste exemplo, cada um com o seguinte formato:

abrev niv unids descrição

Page 27: Manual Grads

27

abrev -- de um 1 a 12 caracter de abreviação para a variável. Esta abreviação devecomeçar com um caracter alfabético (a-z) e ser composto de caracteres alfabéticos enúmeros. Esta abreviação será o "nome" da variável que será acessada dentro GrADS.

niv -- um valor inteiro especificando o número de níveis que esta variável tem noconjunto de dados. Este não pode exceder o número de níveis na declaração do ZDEF. Ovalor do niv 0 indica que esta variável tem um "nível" que não corresponde à um nívelvertical. Um exemplo poderia ser uma variável de superfície.

unids -- usado para dados em formato GRIB ou formato/estrutura de dadosespecial. Deve ser colocado um valor de 99 aqui.

descrição -- uma descrição da variável em texto, com no máximo 40 caracteres.

ENDVARS

Após o último registro das variáveis vem a declaração ENDVARS. Este é o fim do arquivodescritor de dados. Linhas vazias após a declaração ENDVARS pode fazer o open do GrADSfalhar!

O registro OPTIONS no arquivo descritor de dadosO registro options no arquivo descritor permite o controle de vários aspectos na forma que o GrADSinterpreta o arquivo de dados. Este aposenta o antigo registro "format" e tem a forma:

options <palavras-chave>

Algumas palavras-chave são:

options <yrev> <zrev> <sequential> <byteswapped> <template> <big_endian><little_endian> <cray_32bit_ieee> onde:

sequential especifica que o arquivo foi escrito no I/O não formatado seqüencial, onde cadaregistro é uma grade variando em X,Y. Note que se tiver somente uma dimensão em X e Y noarquivo, cada registro no arquivo será um elemento longo (este modo pode não ser uma boaidéia).

yrev especifica que a dimensão Y, ou latitude, foi escrita na ordem invertida da qual oGrADS tem no passado feito. Uma coisa importante para lembrar é que o GrADS aindaapresenta a visão de que os dados vão de sul para norte. A declaração do YDEF não muda;estes ainda descrevem a transformação de um espaço de grade indo de sul para norte. O reversodo eixo Y é feito quando os dados estão sendo lidos do arquivo de dados.

zrev indica que os dados foram escritos dentro do arquivo do topo para baixo, em vez docontrário como o GrADS assume. As mesmas considerações do yrev são aplicadas.

template nomes de arquivos arranjados estão em uso (veja a seção em Séries de tempo dearquivo múltiplo no Capítulo 22)

byteswapped a ordem dos bytes é invertida (veja as próximas duas opções e o exemplo do arquivo.ctl acima)

O melhor modo de assegurar a independência de hardware nos arquivos de dados em grade éespecificar a plataforma da fonte dos dados. Isto permite que os dados trabalhem em ambos ostipos de hardware sem ter que se preocupar com a ordem dos bytes. Os dois parâmetros deopção seguintes indicam a atual ordem dos bytes dos dados. Se os dados já estão no formatocorreto, então nenhuma conversão será realizada. Estas opções facilitam o deslocamento de umarquivo de dados e o arquivo descritor entre as máquinas.

big_endian real de 32-bit IEEE criada em uma plataforma de big_endian (cray, sun, sgi e hp).

little_endian real de 32-bit IEEE criada em uma plataforma de little_endian (iX86 e dec)

Page 28: Manual Grads

28

Conjuntos de dados de estaçãoOs conjuntos de dados de estação são escritos para um arquivo binário uma observação em um tempo.A única ordem necessária é que as observações das estações estejam agrupadas em um arquivo dentrode algum intervalo de tempo. Por exemplo, o intervalo de tempo para as observações de ar superiorpoderia ser de 12 horas. No Capítulo 16 há mais informação sobre as facilidades do GrADS paraanálise e exibição dos dados de estação.

As variáveis dentro de cada observação estão divididas em dois grupos. Cada variável ou é umavariável de superfície, assim pode ser relatada no máximo uma vez por estação, ou é uma variáveldependente de nível, assim pode ser relatada em um número de níveis diferentes dento umaobservação.

O controle de ordenação dos bytes para os arquivos de dados de estação: Pode agora ser especificadoo trocador de bytes (byteswapped, big_endian, ou little_endian) para os arquivos de dados de estação.O utilitário stnmap, e o GrADS, desempenharão a necessária conversão. Os arquivos de mapa deestação devem ainda ser criados na máquina onde eles serão usados.

O formato de uma observação em um arquivo de dados de estação binário é:

• Um cabeçalho que fornece informação sobre a localização da estação;• Variáveis de Superfície, se quaisquer existir ;• Variáveis dependentes de níveis, se quaisquer existir;

O cabeçalho é descrito pela seguinte estrutura de dados em linguagem C:struct rpthdr {

char id[8]; /* Caracter identif de estação */float lat; /* Latitude da observação */float lon; /* Longitude da observação */float t; /* Tempo em relativas unids grade */int nlev; /* Número de níveis seguintes */int flag; /* Flag atrib var independente */

};

Uma descrição detalhada de cada item do cabeçalho segue:

Id - identificador da estação. Este é um identificador de 1 a 7 caracteres que deve identificarsomente a estação. Este pode ser designado arbitrariamente; i.e., as estações podem ser numeradasem alguma ordem arbitrária.

lat - localização da dimensão Y da estação em coordenadas globais, tipicamente latitude.lon - localização da dimensão X da estação em coordenadas globais, tipicamente longitude.t - tempo desta observação, em unidades de grade relativas. Este refere-se ao modo como as

estações estão agrupadas no tempo. Por exemplo, no trabalho com observações de superfície derotas aéreas, pode-se provavelmente ter um intervalo de agrupamento de tempo de um hora. Se fornecessário tratar os tempos das observações de cada observação como sendo de exatamente 1 hora,t deve ser atribuído para 0.0. Se a observação foi para 12:15pm, e o agrupamento de tempo estavasendo escrito para 12pm, pode-se atribuir t para 0.25. Assim, t deverá tipicamente ter um limiteentre -0.5 a 0.5.

nlev - número de grupo de dados seguindo o cabeçalho. Este é a soma de um grupo de superfície,se presente, mais o número de grupos dependentes de nível. Se for atribuído para zero marca o fimde um grupo de tempo

flag - se zero, não há nenhuma variável de superfície seguindo o cabeçalho. Se um, então hávariáveis de superfície seguindo o cabeçalho.

Seguindo o cabeçalho, os dados desta observação são escritos. O primeiro grupo de dados deverá tertodas as variáveis de superfície presente. A presença ou ausência da variável de superfície, serádeterminada pelo flag no cabeçalho. Se presente, então todas as variáveis de superfície

Page 29: Manual Grads

29

deverão ser escritas — variáveis ausentes deverão receber o valor de dados ausentes. Assim, cadagrupo de variáveis de superfície deverá ter o mesmo tamanho para cada observação no arquivo.

As variáveis de superfície são escritas como números em ponto flutuante. A ordem das variáveis deveser a mesma em cada observação e deve ser a mesma ordem dada no arquivo descritor de dados.

Seguindo o grupo da variável de superfície, qualquer número de grupos dependentes de nível podemser escritos. O número total de grupos de dados é fornecido no cabeçalho. Cada grupo dependente denível, deve ter todas as variáveis dependentes de nível presente, até mesmo se elas estiverempreenchidas com o valor de dado ausente. Assim, cada grupo dependente de nível será do mesmotamanho para todos os níveis e todas as observações no arquivo.

O grupo dependente de nível é escrito como segue:

nível -- valor em ponto flutuante dando o valor da dimensão de Z em coordenadas globais paraeste nível

variáveis -- as variáveis dependentes de nível para este nível.

Após todas as observações, para um grupo de tempo, serem escritas, um cabeçalho especial (comnenhum grupo de dados) é escrito para indicar o final de tempo do grupo. O cabeçalho terá um valorde zero para o nlev. O próximo grupo de tempo, então, pode começar logo após. Um grupo de tempocom nenhuma mensagem ainda conterá um registro de cabeçalho finalizador de grupo tempo (i.e.,dois finalizadores em uma fila).

Os arquivos de dados de estação do GrADS devem ser escritos como um conjunto de dados stream doUNIX, sem qualquer informação de descritor de registro embutido. Isto é facilmente feito em umprograma em C. De um programa em FORTRAN, isto normalmente requer uma opção dedependência de sistema na declaração OPEN. Por exemplo, no FORTRAN da DEC pode-se usar aopção:

RECORDTYPE='STREAM'

opção para evitar a presença da informação de descritor de registro, embutido na saída do arquivo.Exemplos de programa em C e FORTRAN, para criar conjuntos de dados de estação, serão fornecidosneste documento mais tarde. Por não haver padrões para I/O binários no f77 é fortementerecomendado que os programas de conversão de dados de estação sejam escritos em C.

O arquivo descritor de dados de estaçãoO formato do arquivo descritor de dados, para os dados de estação, é parecido com o formato dosconjuntos de dados em grade. Um exemplo de um arquivo de descritor de dados de estação é:

dset ^ua.repsdtype stationstnmap ^ua.mapundef -999.0title Tempo Real obs de ar Superiortdef 10 linear 12z18jan1992 12hrvars 12

slp 0 99 SLPts 0 99 Temp. Superf.ds 0 99 Ponto de Orv. Superf.us 0 99 Vento U Superf.vs 0 99 Vento V Superf.z 1 99 Geopotencialt 1 99 Temperaturad 1 99 Ponto de Orvalho

Page 30: Manual Grads

30

u 1 99 Vento Uv 1 99 Vento V

endvars

Note as diferenças entre este descritor de arquivo e um arquivo de descritor de grade:

registro DTYPE -- especifica um tipo de dado: station.registro STNMAP -- dá o nome do arquivo de mapeamento da estação . Este arquivo é criado peloutilitário stnmap, que será descrito mais tarde.registro XDEF, YDEF, ZDEF -- não é especificado.registro TDEF -- descreve o intervalo do grupo de tempo e o número de grupos de tempo no arquivo.registros VAR -- variáveis de superfície devem vir primeiro, é colocado um zero no campo do númerode níveis. Variáveis dependentes de nível são listadas após as variáveis de superfície, e é colocado umno campo do número de níveis.

O utilitário STNMAPUma vez que o conjunto de dados foi escrito e o arquivo descritor criado, deve-se em seguida criar oarquivo de mapeamento de estação usando o utilitário stnmap. Este utilitário escreve informações databela misturada e/ou liga listas que permite ao GrADS acessar os dados das observações de formamais eficiente. O utilitário vai perguntar pelo nome do arquivo descritor de dados.

Se houver mudança nos arquivos de dados — talvez pela anexação de outro grupo de tempo — deveráhaver também mudança no arquivo descritor para refletir as mudanças — o novo número de tempospor exemplo -- e então o utilitário stnmap deverá ser reutilizado.

Criando arquivos de dadosEsta seção descreve como criar os arquivos de dados binários para grade e dados de estação, comexemplos de arquivos descritor de dados apropriados.

Exemplos de criação de um conjunto de dados em ponto de gradeEm uma estação de trabalho os dados binários do GrADS precisam ser criados como um conjunto dedados stream, i.e., não deverá haver o registro normal do descritor de palavras do FORTRANembutidas nele. Isto pode ser feito no FORTRAN usando acesso direto I/O:

REAL Z(72,46,16) . .OPEN (8,FILE='grads.dat',FORM='UNFORMATTED',

& ACCESS='DIRECT',RECL=72*46) . .IREC=1DO 10 I=1,18

WRITE (8,REC=IREC) ((Z(J,K,I),J=1,72),K=1,46)IREC=IREC+1

10 CONTINUE

Este exemplo descreve 16 níveis de um variável para um arquivo com formato de acesso direto. Osdados estão realmente sendo escritos seqüencialmente e usando acesso direto para evitar ter palavrasdescritoras de registros escritas. Deve haver opções em alguns compiladores para fazer isto maisdiretamente, ou os dados podem ser escritos usando um programa em C.

Page 31: Manual Grads

31

Outro exemplo simples pode ser:REAL X(100)DO 10 I=1,100

X(I)=I 10 CONTINUE

OPEN (8,FILE='samp.dat',FORM='UNFORMATTED',ACCESS='DIRECT', & RECL=100)

WRITE (8,REC=1) XSTOPEND

O arquivo descritor associado:

DSET samp.datTITLE Conjunto De Dados De AmostraUNDEF -9.99E33XDEF 100 LINEAR 1 1YDEF 1 LINEAR 1 1ZDEF 1 LINEAR 1 1TDEF 1 LINEAR 1JAN2000 1DYVARS 1

x 0 99 100 Pontos De DadosENDVARS

Uma vez criado, o conjunto de dados pode ser usado com funções de dados do GrADS, tal como:

display sin(x/50)

Exemplos de criação de conjuntos de dados de estação

Seja um conjunto de dados com chuva mensal:Ano Mes Est Lat Lon Chuva1980 1 QQQ 34.3 -85.5 123.31980 1 RRR 44.2 -84.5 87.11980 1 SSS 22.4 -83.5 412.81980 1 TTT 33.4 -82.5 23.31980 2 QQQ 34.3 -85.5 145.11980 2 RRR 44.2 -84.5 871.41980 2 SSS 22.4 -83.5 223.11980 2 TTT 33.4 -82.5 45.5

Para escrever estes dados no formato do GrADS, um programa em FORTRAN na versão para DECpode ser:

CHARACTER*8 STIDOPEN (8,NAME='rain.ch')OPEN (10,NAME='rain.dat',FORM='UNFORMATTED',

& RECORDTYPE='STREAM')IFLAG = 0

CC Le e EscreveC10 READ (8,9000,END=90) IYEAR,IMONTH,STID,RLAT,RLON,RVAL9000 FORMAT (I4,3X,I2,2X,A8,3F8.1)

IF (IFLAG.EQ.0) THENIFLAG = 1IYROLD = IYEAR

Page 32: Manual Grads

32

IMNOLD = IMONTHENDIF

CC Se há novo grupo de tempo, escreve um finalizador de grupo de tempo.C Assumindo nenhum grupo de tempo vazio.C

IF (IYROLD.NE.IYEAR.OR.IMNOLD.NE.IMONTH) THENNLEV = 0WRITE (10) STID,RLAT,RLON,TIM,NLEV,NFLAG

ENDIFIYROLD = IYEARIMNOLD = IMONTH

CC Escreva esta observaçãoC

TIM = 0.0NLEV = 1NFLAG = 1WRITE (10) STID,RLAT,RLON,TIM,NLEV,NFLAGWRITE (10) RVALGO TO 10

CC No fim do arquivo escreva o ultimo finalizador de grupo de tempoC90 CONTINUE

NLEV = 0WRITE (10) STID,RLAT,RLON,TIM,NLEV,NFLAGSTOPEND

Para um compilador diferente, será necessário uma declaração OPEN apropriada para escrever umconjunto de dados stream, mas esta opção é muitas vezes não disponível. Suporte para dadoseqüencial está sob consideração.

Um programa equivalente em C pode ser:#include <stdio.h>/* Estrutura que descreve que o cabecalho da observação em um arquivo de

estacao*/struct rpthdr {

char id[8]; /* Caracter id da estação */float lat; /* Latitude da observação */float lon; /* Longitude da observação */float t; /* Tempo em relativa unid grid */int nlev; /* Número de níveis seguintes */int flag; /* Flag conj var indepen de nivel */

} hdr;

main () {FILE *ifile, *ofile;char rec[80];int flag,year,month,yrsav,mnsav,i;float val;/* Abrindo Arquivos */ifile = fopen ("rain.ch","r");ofile = fopen ("rain.dat","wb");if (ifile==NULL || ofile==NULL) {

printf ("Erro abrindo arquivos\n");return;

}/* Le, escreve e loop */

Page 33: Manual Grads

33

flag = 1;while (fgets(rec,79,ifile)!=NULL) {

/* Conversão de formato */sscanf (rec,"%i %i ",&year,&month);sscanf (rec+20," %g %g %g",&hdr.lat,&hdr.lon,&val);for (i=0; i<8; i++) hdr.id[i] = rec[i+11];/* Time group terminator if needed */if (flag) {

yrsav = year;mnsav = month;flag = 0;

}if (yrsav!=year || mnsav!=month) {

hdr.nlev = 0;fwrite (&hdr,sizeof(struct rpthdr), 1, ofile);

}yrsav = year;mnsav = month;

/* Escreve esta observação*/hdr.nlev = 1;hdr.flag = 1;hdr.t = 0.0;fwrite (&hdr,sizeof(struct rpthdr), 1, ofile);fwrite (&val,sizeof(float), 1, ofile);

}hdr.nlev = 0;fwrite (&hdr,sizeof(struct rpthdr), 1, ofile);

}

Uma que vez o arquivo de dados binário foi escrito, o arquivo descritor deverá ser criado. Este poderáser parecido com algo como:

dset rain.datdtype stationstnmap rain.mapundef -999.0title Chuvatdef 12 linear jan1980 1movars 1

p 0 99 Chuvaendvars

Então, o utilitário stnmap é usado para criar o arquivo de mapeamento de estação. Assim serápossível abrir e exibir estes dados dentro do GrADS.

Page 34: Manual Grads

34

5.0 Ambiente Dimensionado

O conjunto de dados é sempre visto pelo GrADS como um vetor 4-D generalizado (5-D se incluir asvariáveis), localizado em um espaço físico (lon, lat, lev, tempo), mesmo que isto seja na realidade umsubconjunto de um espaço 4-D.

O atual ambiente dimensionado descreve com que parte dos dados ser quer trabalhar. As expressõessão avaliadas com respeito ao ambiente dimensionado (a qual permite simplicidade na sintaxe daexpressão), e a exibição final será determinada pelo ambiente dimensionado. Assim, o ambientedimensionado é um conceito do GrADS que é importante entender.

O ambiente dimensionado é manipulado pela entrada de um dos seguintes comandos set:

set lat|lon|lev|tempo val1 <val2 >

Este comando, atribui uma das dimensões do ambiente dimensionado usando coordenadas globais.

Alternativamente:

set x|y|z|t val1 <val2>

Este atribui uma das dimensões do ambiente dimensionado usando coordenadas de grade. A coordenamais conveniente deve ser usada. Digitando "set lon" é equivalente a digitar "set x", ambos atribuemum dimensão a x. A diferença está nas unidades que serão digitadas no comando.

Quando apenas um valor é digitado, esta dimensão é dita estar "fixa". Quando dois valores sãodigitados, esta dimensão é dita estar "variando". A combinação de dimensões fixas e variantesdefinem o ambiente dimensionado.

Exemplos:

set lon -180 0 (atribui a longitude uma variação de 180W a 0).set lat 0 90 (atribui a latitude uma variação do equador a 90N)set lev 500 (atribui o nível para 500mb - uma dimensão fixa)set t 1 (atribui o tempo ao 1º. tempo no conjunto de dados — usando coordena de grade

neste caso. O tempo é agora dimensão fixa).

Quando todas as dimensões estão fixas, esta se referindo a um único ponto de dados.

Quando uma dimensão varia, esta se referindo a uma "fatia" 1-D através do conjunto de dados.

Quando duas dimensões variam, esta se referindo a uma "fatia" 2-D através do conjunto de dados.

Quando três dimensão variam, o GrADS interpreta isto como uma seqüência de fatias 2-D.

Uma nota importante: As dimensões digitadas em coordenadas de grade são sempre convertidas acoordenadas globais. Esta conversão requer algum conhecimento de qual escala está sendo usada paraconversões de grade para globais. A escala que é usada em todos os casos (exceto um) é a escala doarquivo padrão. A exceção existe quando uma expressão de dimensão é fornecida dentro de umaespecificação de variável, que será visto mais tarde.

Page 35: Manual Grads

35

6.0 Nomes de Variáveis

A especificação completa para o nome de uma variável é:

abbrev.file#(dimexpr,dimexpr,...) onde:

abbrev é a abreviação da variável (como especificada no arquivo descritor de dados);file# é o número do arquivo que contém esta variável. O padrão é o 1º. ("set dfile"

muda o padrão).dimexpr é uma expressão de dimensão que está localmente modificando o atual ambiente

dimensionado.

Uma expressão de dimensão é usada localmente para modificar o ambiente dimensionado somentepara aquela variável. Apenas dimensões fixas podem ser assim modificadas.

Uma expressão de dimensão absoluta é:

X|Y|Z|T|LON|LAT|LEV|TEMPO = valor

Uma expressão de dimensão relativa (relativo ao corrente ambiente dimensionado):

X|Y|Z|T|LON|LAT|LEV|TEMPO +/- compensação

Exemplos de especificações de variáveis são:

z.3(lev=500) arquivo 3, expressão de dimensão absolutatv.1(time-12hr) expressão de dimensão relativarh número do arquivo padrão é usadoq.2(t-1,lev=850) duas expressões de dimensãoz(t+0) Isto tem usos....

Uma nota importante: quando uma dimensão é digitada em unidades de grade, o GrADS sempreconverte esta para coordenadas globais. Esta conversão é feita usando a escala do arquivo padrão.Entretanto, quando uma grade de coordena (x,y,z,t) é fornecida dentro de uma expressão de dimensão,como parte de uma especificação da variável, a escala para aquele arquivo (i.e., o arquivo de ondeaquela variável foi tomada) é usada.

O GrADS já tem alguns nomes de variáveis "predefinidas". É possível pensar nestes como sendovariáveis implicitamente contidas dentro de qualquer arquivo em grade aberto. Os nomes dasvariáveis são:

latlonlev

Quando usado, eles irão conter o lat, lon, e lev nos respectivos pontos de grade, usando a escala dosarquivos apropriados. Pode ser especificado: lat.2 por exemplo, para obter as latitudes na grade do 2ºconjunto de dados aberto.

Page 36: Manual Grads

36

7.0 Expressões

Uma expressão do GrADS consiste de operadores, operandos e parêntesis. Para controlar a forma deoperação, os parêntesis são usados do mesmo modo como no FORTRAN.

Operadores são:

+ Adição- Subtração* Multiplicação/ Divisão

Os operandos são:

especificações de variáveis, funções e constantes.

Em cada grade, as operações são realizadas com os equivalentes pontos de grade. Os valores de dadosausentes em uma ou outra grade dão um resultado de valor de dados ausente nestes pontos de grade.Divisão por zero obtém como resultado o valor de dado ausente neste ponto de grade.

As operações não podem ser realizadas entre grades que possuem escalas diferentes em suasdimensões variantes — i.e., grades que possuem regras diferentes para a conversão das dimensõesvariantes, de espaço de grade para espaço de coordenadas globais. Isto somente pode ser encontradoquando as operações entre grades de arquivos diferentes que possuem regras de escalas diferentes.

Se uma grade tem mais dimensões variando que outra, a grade com menos dimensões variantes é'expandida' e a operação é realizada.

Alguns exemplos de expressões:

z - z(t-1) (Diferença do geopotencial no tempo)t(lev=500)-t(lev=850) (Diferença da temperatura entre 500 e 850)ave(z,t=1,t=5) (Média de z sobre os primeiro 5 tempos no arquivo)z - ave(z,lon=0,lon=360,-b) (Remove a media zonal)tloop(aave(p,x=1,x=72,y=1,y=46)) (Série de tempo da média global da precip, grade 72x46)

Page 37: Manual Grads

37

8.0 Variáveis Definidas

Definindo novas variáveisO comando define permite a criação uma nova variável. A sintaxe é:

define nome_variável = expr

A nova variável pode então ser usada em expressões subsequentes (este pode ser usado emsubsequentes comandos define ou display). A nova variável é armazenada em memória, não emdisco, assim evite definir variáveis sobre largos limites de dimensão.

A variável é definida para cobrir os limites de dimensão em efeito no tempo em que o comando édigitado. A variável pode ser definida para ter de 0 a 4 variações de dimensão. O comando define é oúnico caso dentro do GrADS onde é valido ter quatro dimensões variando.

Quando Z e/ou T tem dimensões variando, o comando define avalia a expressão, passo a passo,através de Z e T. Em outras palavras, a expressão é avaliada dentro de um ambiente dimensionado quetem Z e T fixos. Esta afetará a forma de como compor a expressão.

Quando uma variável definida é usada, os dados são tomados de uma variável de forma similar aosdados tomados de um arquivos do GrADS. Por exemplo, definindo uma variável com quatrodimensões variantes:

set lon -180 0set lat 0 90set lev 1000 100set t 1 10define temp = rh

Após o comando define, o ambiente dimensionado deverá ser retornado para um valor menor que as 4dimensões variantes que possui!

set t 5set lev 500d temp

A exibição da variável definida irá mostrar uma fatia 2-D tomada no tempo 5 e no nível 500.

Se uma variável é definida com dimensões fixas, e em seguida a variável é acessada, as dimensõesfixas são tratadas como “coringas”. O melhor forma de mostrar isto está no exemplo:

set lon -180 0set lat 0 90set lev 500set t 10define zave = ave(z,t=1,t=30)

A variável definida tem duas dimensões variando. Quando está variável for exibida (ou usada emuma expressão), as dimensões fixas da variável definida, a saber Z e T, casarão com QUALQUERatribuição da dimensão de Z e T:

set t 1set lev 200d zave

Page 38: Manual Grads

38

Na exibição acima, a variável zave será mostrada como ela foi definida, i.e., será obtido uma médiano tempo do geopotencial em 500mb, ainda que o nível atribuído seja de 200.

Quando a variável definida tem dimensões variando, e tem-se um ambiente de dimensão onde adimensão é fixa, a dimensão apropriada é recuperada da variável:

set lon -180 0set lat 0 90set lev 500set t 10defina temp = zset lat 40d temp

No exemplo acima, a variável definida tem a dimensão de Y variante. Fixando a dimensão Y para ser40N, será exibido uma fatia 1-D dos dados. Serão acessados os dados de 40N na grade definida.Agora digitando:

set lat -40d temp

Os dados de 40S serão acessados da variável definida. Sendo que estes estão além das dimensõesoriginalmente usadas quando a variável foi definida, os dados serão atribuídos como indefinidos.

É possível também, localmente, sobrepor ao ambiente dimensionado:

d temp(lat=50)

Se esta dimensão é uma dimensão variante dentro da variável definida. Se a dimensão é umadimensão fixa para esta variável, a local que esta sobrepondo será ignorada:

d temp(t=15)

No comando acima, a variável definida de temp tem T fixo, assim o t=15 será ignorado.

Nota: o comando define atualmente suporta somente grades.

Uma vez que tenha sido definido uma variável de grade, pode ser dito ao GrADS que a nova variávelé climatológica, i.e., a dimensão do tempo da nova variável pode ser tratada num sentido de“coringa”.

O comando é:

modify nome_variável <seasonal>

<diurnal>

onde o nome da variável é o nome da grade definida (o comando define deverá ter sido previamenteusado). Se a grade é descrita como seasonal, então é assumido que a grade contem médias mensais(ou multi mês). Note que médias diárias ou multi dia ainda não são suportadas. Se diurnal forespecificado, é assumido que a variável definida contem médias sobre algum período de tempo menorque um dia.

Após descrever a variável definida como climatológica, então as datas/tempos serão tratadasapropriadamente quando os dados forem acessados da variável definida.

Page 39: Manual Grads

39

Um exemplo. O conjunto de dados contém 10 anos de médias mensais:

set lon -180 180set lat -90 90set lev 500set t 1 12define zave = ave(z,t+0,t=120,1yr)

Esta definição irá montar uma variável chamada zave que contém 12 tempos, cada tempo sendo amédia de 10 anos para aquele mês. Aqui está sendo feito uso do fato que o comando define “laça”através de uma dimensão de variação de tempo quando está avaliando a expressão, e dentro da funçãoave é feito o uso de um compensador de tempo da variável t+0, o qual usa um tempo inicial que équalquer tempo que o comando define esteja usando como estes “laço”.

modifique zave sazonalset t 120d z - zave

A exibição final removerá a média mensal de 10 anos para Dezembro do último Dezembro noconjunto de dados.

Indefinindo novas variáveisCada variável definida usando o de comando define reserva alguma memória do sistema. Se nãohouver nenhuma necessidade por um tempo maior de uma variável definida, é sensato liberar estamemória para outro uso. Isto é efetuado com o comando undefine. Por exemplo:

undefine p

irá liberar a memória usada para definir a variável p. Certamente, a variável p não estará avaliávelpara o processamento no GrADS.

Page 40: Manual Grads

40

9.0 Exibindo a Plotagem de Dados

Exibindo os dadosO comando display é utilizado para fazer a plotagem dos dados (expressões de saída) via janela desaída gráfica. O comando é:

display expressão

ou

d expressão

A mais simples expressão é uma abreviação de variável.

Quando todas as dimensões estão fixas, um único valor é obtido na janela de comandos.

Quando uma dimensão varia, uma linha gráfica 1-D pelo padrão é obtida.

Quando duas dimensões variam, uma plotagem de contorno em 2-D pelo padrão é obtida.

Uma variedade de tipos de plotagem estão disponíveis além dos padrões acima. Escolher estes é oassunto do próximo capítulo.

Limpando a janela gráficaO GrADS irá sobrepor a saída de cada comando de exibição. Para limpar a tela gráfica, entre:

clear (ou somente c)

Digitando sem os parâmetros, o comando clear faz uma linda forte e devida limpeza de muitasatribuições internas do GrADS. Alguns parâmetros podem contribuir para limitar o que será limpadoquando recursos mais avançados forem usados, por exemplo:

c events limpa os eventos do buffer (i.e., cliques do mouse)c graphics limpa os gráficos, mas não os widgetsc hbuff limpa a exibição do buffer quando no modo de buffer duplo

CUIDADO: Se acontecer algum erro na sintaxe do clear então o GrADS fará o clear total...

Page 41: Manual Grads

41

10.0 Tipos de Saídas Gráficas

Antes da exibição de um gráfico, é necessário atribuir o tipo de plotagem, provavelmente, algunsoutros parâmetros gráficos também.

Pelo padrão, quando uma dimensão varia, um gráfico de linha é obtido e, quando duas dimensõesvariam, uma plotagem em contorno é obtida. Estes padrões podem ser modificados pelo comando:

set gxout tipo_de_gráfico

alguns exemplos de tipo_de_gráfico são:

contour: Plotagem de contornoshaded: Plotagem de contorno sombreadogrfill: Igual ao sombreado exceto que cada caixa de grade é preenchidagrid: Caixas de grade com valoresvector: Flechas do vetor de ventostream: Linhas de correntebar: Gráfico de barraline: Gráfico de linhabarb: Barbelas de ventofgrid: Caixas de grade preenchidas de valores especificados usando set fgvals....linefill: Preenche com cor entre duas linhasstat: Envia a saída para o terminal em vez de plotar

para dados de estação:

value: Valores de estaçãobarb: Barbelas de ventowxsym:Símbolos do Wxfindstn: Encontra a estação mais próxima (ver a linguagem de scripts)stat: Envia a saída para o terminal em vez de plotar

Há muitas opções que podem ser atribuídas para controlar como o tipo_de_gráfico será exibido.Estes e outros tipos de gráficos são abordados em detalhes no Capítulo 19 Opções Gráficas.

Para os tipos de saídas gráficas de vetor, linhas de corrente e barbelas, as rotinas de exibiçãonecessitam de duas grades, onde a 1ª grade é tratada como a componente U, e a 2ª grade é tratadacomo a componente V. Para obter duas grades, duas expressões serão digitadas no comando deexibição separadas por um ponto e vírgula:

display u ; vdisplay ave(u,t=1,t=10) ; ave(v,t=1,t=10)

Para os tipos de vetor e corrente, pode ser especificado uma 3ª grade que será utilizada para colorir osvetores ou as linhas de corrente:

d u;v;hcurl(u,v)d u;v;mag(u,v)

Page 42: Manual Grads

42

Para um gxout de wxsym, cada valor em uma localização de estação é assumido ser um número docódigo de símbolo do wx. Furacões e símbolos de tempestade tropicais estão incluídos no conjunto desímbolos.

draw wxsym símbolo x y tamanho <cor <espessura >>

Desenha o especificado símbolo wx na localização especificada, onde:

símbolo - é um inteiro especificando que símbolo será desenhadox - localização x, em polegadasy - localização ysize - tamanho do símbolo (rudemente)color - cor do símbolo. Use -1 para obter cores padronizadas (vermelho para tempestade,

azul para neve, etc.)espessura - espessura da linha do símbolo

Para ver que símbolos estão disponíveis, inicie no grads, então:

run wxsym.gs

deve ser verificado neste script como foi editado o comando wxsym.

Page 43: Manual Grads

43

11.0 Animação

Uma seqüência de animação é obtida para exibições realizadas quando há 3 dimensões variando. Aanimação pode ser conseguida através de qualquer uma das três dimensões variantes.

Pelo padrão, a dimensão de animação é o tempo. A dimensão de animação é atribuída através de:

set loopdim x|y|z|t

A animação pode ser feita quando menor que três dimensões estão variando (i.e., animar um gráficode linha), o controle da animação pode ser feito digitando:

set looping on|off

A atribuição para set looping off após a animação deverá ser feita antes de digitar sua próximaexpressão!

Page 44: Manual Grads

44

12.0 Controle de Página

Páginas virtuais e reaisO número e o tamanho da plotagem pode ser controlado na pagina "real" definindo uma ou maispáginas "virtuais". O comando a ser usado é:

set vpage xmin xmax ymin ymax

Este comando define uma "página virtual" que se ajusta dentro dos limites específicos da página real.Todas as saídas gráficas serão desenhadas dentro desta "página virtual" até que outro comando 'setvpage' seja digitado. Um comando clear limpa a página física (e quaisquer páginas virtuaisdesenhadas neste).

Quando o GrADS é iniciado, ele pergunta pelo modo paisagem ou retrato. Este define o tamanho dapágina real (11x8.5 ou 8.5x11). As dimensões da página virtual devem ser encaixadas dentro dapágina real.

O comando 'set vpage' definirá os limites da página virtual em termos de polegadas (polegadas depágina virtual), as quais são as coordenadas que serão usadas nos vários comandos que requerempolegadas para serem usadas. Os novos limites de página são impressos quando o comando 'set vpage'é completado.

Para voltar ao estado padrão onde as página reais e virtual são iguais, digite:

set vpage off

Controlando a área de plotagemPara controlar a área dentro da página virtual que o GrADS plota, use:

set parea xmin xmax ymin ymax

<off>

O comando especifica a área para plotagem de contorno, mapas, ou gráficos de linha. Esta área nãoinclui os rótulos dos eixos, títulos, etc., assim se precisar vê-los, forneça uma margem adequada.

A região está especificada em termos de unidades de página virtual. Pelo padrão, a página virtual éigual à página real, assim na página real as unidades são aproximadamente polegadas.

Os mapas são escalados para se encaixarem dentro da área de plotagem desde que sua correta razão deaspecto seja mantida. Assim, o mapa não encherá inteiramente a área de plotagem, exceto sob certoslimites de lat/lon. Um gráfico de linha ou uma plotagem de contorno sem um mapa será escalado parase encaixar inteiramente dentro da especificada área do plotagem.

Pelo padrão, uma apropriada área de plotagem é escolhida dependendo do tipo de saída gráfica. Paravoltar para este padrão, digite:

set parea off

Este comando não é apropriado para colocar múltiplas plotagens em uma mesma página. Para isto émelhor usar o comando ‘set vpage'.

Page 45: Manual Grads

45

13.0 Gráficos de Primitivas

Vários comandos são fornecidos para permitir o controle e exibição de vários gráficos de primitivas:Estes acentuam a forma de plotagem dos dados por serem somados ao tradicional "trabalho de arte".Alternativamente, estes comandos podem ser usados para criar, por exemplo, um diagrama de base demapas com nenhuma plotagem de dados envolvida.

Comandos de desenhodraw map

Desenha a delineação de mapa controlado pelas correntes atribuições e pela dimensão doambiente.

draw xale conjunto_de_caracteresylab

Escreve um conjunto_de_caracteres na posição apropriada para rotulação dos eixos x e y.

draw string x y conjunto_de_caracteres

Desenha um conjunto_de_caracteres na posição x,y. x e y são medidos em polegadas napágina virtual. O conjunto de caracteres é desenhado usando o atual atributo de caracteres —veja os comandos "set string" e "set strsiz".

draw line x1 y1 x2 y2

Desenha uma linha de x1, y1 para x2, y2 usando o atual atributo de desenho de linha. Veja ocomando "set line".

draw rec xlo ylo xhi yhi

Desenha o contorno de um retângulo de xlo, ylo ao xhi, ylo ao xhi, yhi ao xlo, yhi ao xlo, ylo.O retângulo é desenhado usando os corrente atributos de desenho de linha.

draw recf xlo ylo xhi yhi

Desenha um retângulo fechado na área descrita por xlo, ylo, xhi, yhi. A cor do quadrado é aatual cor do atributo de desenho de linha.

draw mark marca x y tamanho

Desenha uma marca de requisitado tamanho na posição x, y. Os tipos de marcadores são:

1 - x2 – contorno de círculo3 – círculo fechado4 – contorno de quadrado5 - quadrado fechado

draw polyf x1 y1 x2 y2 x3 y3 .... xn yn

Desenhe um polígono entre uma série de pontos x,y. O polígono é ligado pelas coordenadas epreenchido quando xn = x1 e yn = y1. Set line controla a cor.

Page 46: Manual Grads

46

Controlando os comandos de desenho

Os seguintes comandos especificam vários aspectos do modo como o comando draw trabalha.

set font número onde: número = 0 ... 5

Seleciona a fonte para operações de texto subsequentes.

set line cor <estilo> <espessura >

Estabelece atributos de linha atuais.

cores são:

0 - preto 5 - ciano1 - branco 6 - magenta2 - vermelho 7 - amarelo3 - verde 8 - laranja4 - azul 15 - cinza

estilos são:

1 - sólido 5 - ponto2 - tracejado longo 6 - ponto traço3 - tracejado curto 7 – ponto ponto traço4 - tracejado curto, longo

Os valores de espessura variam de 1 a 6, e fornecem várias espessuras de linha em saída deimpressão a laser

set string cor <justificação <espessura <rotação>>>

Atribui certos atributos de desenho de caracteres. A cor está descrita acima. Justificação é ajustificação do conjunto de caracteres, ou como o conjunto de caracteres será plotado comrespeito a posição x,y dado no comando "draw line". Os códigos apropriados estão referidos naseguinte gravura: tl tc tr tl – topo esquerda

+-------------+--------------+ tc – topo centro

| | tr – topo direita

l + + c + r etc.

| |

+-------------+--------------+

bl bc br

A opção de rotação especifica a rotação que o desejado conjunto de caracteres terá em graus.Quando rodado, o centro de rotação é o ponto de justificação. A rotação é realizada no sentidohorário.

set strsiz hsiz <vsiz>

Este comando atribui o tamanho do caracter, onde hsiz é a largura dos caracteres, vsiz é a alturados caracteres, em polegadas de página virtual. Se vsiz não for especificado, será atribuído omesmo valor como hsiz.

Page 47: Manual Grads

47

set rgb número vermelho verde azul

Definirá novas cores no GrADS, e designa a estes um novo número de cor. Este novo númerode cor pode então ser usado dentro de qualquer comando do GrADS que necessita um númerode cor, tal como "set ccols".

A cor do número deve ser um valor entre 16 e 99 (0 e 15 são predefinidos). Os valoresvermelho, verde, e azul devem estar entre 0 e 255. Por exemplo:

set rgb 50 255 255 255

Definirá um novo número de cor, 50, e designará uma cor neste. Neste caso, a cor será branca.

O tradutor gxps usará os novos valores de cores embora a saída colorida terá que ser checadapara a desejada tradução. O gxps não irá traduzir diretamente as novas cores dentro de umaescala de cinza — a não ser que, este traduzirá somente a intensidade de verde dentro de umnovo valor de escala de cinza. Note que o gxps tem um mapeamento predefinido de valores decores de 0 a 15 tal que o predefinido efeito de cor "arco-íris" seja traduzido como umaagradável graduação de tons de cinza, o qual não pode ser feito para recentes cores definidas.

Plotagem em uma área específicaPode ser especificado uma área específica para o desenho de gráficos de primitivas tais como linhas econjuntos de caracteres. Quando o comando de exibição for acionado, o GrADS atribui a região deárea específica para o parea, desenha o gráfico, então atribui a região da área específica para todapagina. Mesmo que se tenha atribuído a região de uma área específica, o comando de exibiçãoreinicializará este para toda pagina. Para anexar a exibição de vários comandos de desenho:

set clip xlo xhi ylo yhi

onde xlo,xhi,ylo,yhi são coordenadas da área específica em polegadas de página reais.

Page 48: Manual Grads

48

14.0 Saída de Impressão

Produzindo um arquivo de impressão no GrADSPara fazer a saída de impressão, primeiro o seguinte comando deve ser digitado:

enable print nome-arquivo

Isto habilita o comando print e direciona o comando de saída de impressão ao arquivo dado.Quaisquer conteúdos já existentes neste arquivo serão perdidos.

Quando o gráfico na tela estiver pronto entre o comando:

print

Este copiará as instruções do vetor usado para criar a atual exibição, para dentro do arquivo de saídano formato metacode do GrADS

O arquivo de saída pode ser fechado por sair do GrADS (comando quit), pelo comando reinit, oupelo:

disable print

Imprimindo um arquivo de impressão no GrADSUma vez que o arquivo de saída foi fechado, os comandos de metacode dentro deste deverão sertraduzidos ao desejado formato. O utilitário gxps foi fornecido para isto. Este utilitário não pode serusado dentro do ambiente de comandos do GrADS, este deverá ser usado na linha de comandos doUNIX.

gxps - Traduz para postscript monocromático (fundo branco). O padrão de cores de arco-íris doGrADS (cores de números 2 a 14) são traduzidos dentro de agradáveis valores de tons de cinza.As cores definidas pelo usuário (números acima de 15) serão traduzidas para intensidade detons de cinza com base somente em seu conteúdo verde.

O utilitário gxps converte arquivos meta gráficos do GrADS (quando "impressos" noGrADS) para postscript. Isto soluciona todos os problemas de conversões em um utilitáriousando as opções de linha de comando:

-c colorido com fundo branco (=velho gxpscw)-r colorido com fundo preto (=velho gxpsc)-i nome-arq onde nome-arq é o nome do arquivo meta do GrADS de entrada-o nome-arq onde nome-arq é o nome do arquivo ps de saída-d adiciona um ctrl-d no final do arquivo, útil para impressora coloridaHP1200C/PS

O utilitário gxps perguntará por ambos: o nome do arquivo de entrada e do arquivo de saída. O nomedo arquivo de entrada será o arquivo criado pelo comando enable print. O nome do arquivo de saídapoderá ser um nome qualquer. Qualquer arquivo existente com este nome será apagado. Uma vez queo arquivo de saída foi criado, poderá ser impresso usando os comandos de impressão do UNIX. Opadrão é uma plotagem em preto e branco.

Page 49: Manual Grads

49

15.0 O Comando EXEC

O comando exec é usado para executar uma seqüência de comandos do GrADS a partir de umarquivo. Se o comando clear for encontrado, o GrADS espera até que o enter seja pressionado antesde limpar e continuar com o processamento dos comandos.

O comando é:

exec nome-arquivo <arg0 arg1 ... arg9 >

onde: nome-arquivo é o nome de um arquivo contendo os comandos do GrADS.

As variáveis de &0 a &9 podem ser usadas dentro do arquivo exec para serem substituídas peloargumentos delimitados por espaços em branco.

Page 50: Manual Grads

50

16.0 Usando Dados de Estação

Os dados de estação também são suportados no GrADS em um limitado grau. Dados de estaçãoconsistem em pontos de dados distribuídos essencialmente e aleatoriamente dentro das quatrodimensões.

Operando com dados de estaçãoAtualmente, operações e exibições dos dados de estação são suportados por três dimensões deambientes distintos:

• X,Y variando ( plotagem horizontal X,Y)• Z variando ( perfil vertical)• T variando ( série do tempo)

As operações podem ser feitas em dados de estação como em dados em grade. As operações entregrades e dados de estação não são suportados.

As operações entre dados de estação são definidos como sendo a operação desempenhada em pontosde dados que tem exatamente os mesmos valores de dimensão variando.

Por exemplo, se T é a única dimensão variando, a expressão:

d ts-ds

resultará em uma série de tempo de observações de dados de estação sendo restabelecida por duasvariáveis separadas. Então para observações de estação que tem o mesmo tempo, a operação érealizada. Note que os valores duplicados serão ignorados, com a operação sendo realizada entre asprimeiras ocorrências encontradas

Quando X e Y são dimensões fixas, a especificação da variável pode incluir um identificador daestação, o qual especifica um local coberto por ambos lat e lon.

A sintaxe deste será:

varname(stid=ident)

Os identificadores de estação são casos insensíveis.

Algumas funções não suportam os tipos de dados de estação. Estas são:

hdivg hcurl vint maskout ave aave tloop

Quando X e Y estão variando, os valores dos dados de estação são exibidos como números centradosem suas localizações. Se duas expressões são fornecidas no comando de exibição (i.e., d ts;ds) entãodois valores são exibidos, acima e baixo da localização da estação. A exibição é controlada pelosseguintes comandos de atribuição:

set ccolor corset dignum dígitosset digsiz tamanhoset stid on|off

O comando 'set stid' controla se o identificador da estação será exibido com cada valor.

Page 51: Manual Grads

51

Modelos de EstaçãoO GrADS plotará os modelos de estação para dados de estação. Isto é possibilitado por:

set gxout model

O comando de exibição apropriado é:

d u;v;t;d;slp;delta;cld;wx;vis

onde:

u e v são as componentes do vento. Uma barbela de vento será plotada usando esses valores. Seum ou outro dado estiver faltando, o modelo de estação não irá plotá-lo de qualquer modo.

t, d, slp, e delta são plotados numericamente ao redor do modelo de estação:

t slpvis wx O delta d

cld é o valor do símbolo desejado no centro do modelo de estação. Os valores de 1 a 9 sãoconsiderados do tipo marca (i.e., círculo, quadrado, cruz, etc.). Os valores de 20 a 25 sãoconsiderados valores de nebulosidade:

20 -claro21 -espalhado22 -quebrado23 -nublado24 -obscurecido25 -ausente (M é plotado)

wx é o valor do símbolo wx (veja ' plot wxsym ') para ser plotado na localização wx.vis é a visibilidade como um número real. Este será plotado como um número inteiro e uma

fração.

Quando qualquer um destes itens estiver ausente (outro que u e v), o modelo será plotado sem esteselementos. Para representar um valor ausente globalmente, entre uma constante no comando deexibição. Por exemplo, se o delta estiver sempre ausente, use:

d u;v;t;d;slp;0.0;cld

Os modelos de estação respondem aos usuais comandos de atribuição tais como ‘set digsiz', 'setdignum’ 'set cthick', 'set ccolor’.

Complementando, há:

set stnopts <dig3> <nodig3 >

o qual causará ao modelo plotar o número com três dígitos na localização de slp, com somente os trêsúltimos dígitos do número todo plotado. Isto permite o padrão de 3 dígitos para a pressão ao nível domar ser plotado através da habilitação de 'dig3' e plotando slp*10.

Page 52: Manual Grads

52

17.0 Introdução aos Scripts do GrADS

Os scripts oferecem aos usuários algumas facilidades ao programar as operações do GrADS. Emboraseja relativamente fácil aos usuários produzirem gráficos sofisticados no GrADS sem jamais teremescrito um script, há ocasiões onde a capacidade de programação torna as coisas até mesmo maisfáceis. Este capítulo explica as capacidades gerais dos scripts, o que fazer para iniciá-los e sugere umaestratégia aos usuários que desejam escrever seus próprios scripts.

O que os scripts podem fazerA linguagem de script do GrADS, usada via o comando run, fornece uma capacidade semelhante aocomando exec, exceto que um script pode ter variáveis, controle de fluxo e acessa os comandos desaída do GrADS. Os scripts podem ser escritos para desempenhar uma variedade de funções, tal comopermitir a um usuário, através do clique do mouse na tela gráfica, selecionar alguma coisa, animarquaisquer quantidades desejadas, anotar plotagens com a informação obtida dos comandos query doGrADS.

A documentação completa da linguagem de scripts está no Capítulo 23 Programando no GrADS:Usando a Linguagem de Scripts. Antes de tentar escrever seus próprios scripts é recomendado aleitura do restante deste capítulo e então deve-se usar alguns scripts fornecidos (como os listados noApêndice A). Estudando os scripts de exemplo, referidos no Capítulo 23 para informação sobresintaxe, etc., o usuário já estará preparado para escrever seus próprios scripts.

Executando os scriptsO comando para executar um script é o comando run:

run nome-arquivo opções onde: nome-arquivo = *.gs

Este comando executa o script contido no arquivo especificado.

Executando automaticamente um scriptUm simples script pode ser executado automaticamente antes de todo comando de exibição:

set imprun nome-script

Este script será tipicamente usado para atribuir uma opção que, pelo padrão, é reinicializada após cadacomando de exibição, por exemplo:

'set grads off'

Qualquer comando do GrADS pode ser escrito neste script, mas as interações não são sempre boas.Por exemplo, um comando display neste script, poderá facilmente entrar num laço recursivo infinito.

O argumento para este script é a expressão do comando de exibição.

Page 53: Manual Grads

53

Armazenando scripts do GrADSPode ser conveniente colocar todo os scripts "utilitários" do GrADS, tais como cbarn.gs e font.gs,num diretório (i.e., /usr/local/grads/lib/scripts).

Para simplificar a execução desses scripts, primeiro o GrADS procura o script no diretório atual eentão, se ele não puder encontra-lo, anexa o ".gs" a extensão e tenta novamente. Por exemplo,suponha um script de teste chamado t.gs. Este será executado por,

run t

Se após às duas primeiras tentativas o script ainda não puder ser localizado, então o GrADS procurano diretório definido pela variável de ambiente GASCRP. No t (csh), por exemplo,

setenv GASCRP /home1/grads/lib

ou no ksh,

export GASCRP=/home1/grads/lib

Note que se a / não está presente no final do nome do diretório, este é automaticamente anexado peloUNIX. Entretanto, poderá ainda ser usado,

setenv GASCRP /home1/grads/lib/

Se o script não puder ser encontrado, então o .gs será anexado e o GrADS tentará novamente. Assim,

d slprun /home1/grads/lib/cbarn.gs

pode ser simplificado para,

d slprun cbarn

Page 54: Manual Grads

54

18.0 Facilidades adicionais

Comandos do shellPrecedido por um ponto de exclamação, os comandos do shell podem ser digitados na linha decomando do GrADS:

ga> !ls -l /dados/wx/grads

A saída do comando, a menos que redirecionada, aparecerá em seu console. Os comandos do shellpodem ser executados via script ou exec; mas a saída do comando não será retornado ao script atravésda variável result.

Opções de linha de comando nos utilitários do GrADSNomes de arquivos podem ser especificados na linha de comando dos utilitários do GrADS:

ga> !stnmap -i nome-descritorga> !gxps -i nome-arquivo-meta -o nome-arquivo-ps

Reinicializando o GrADSDois comandos foram desenvolvidos para restabelecer ou reinicializar o estado do GrADS:

reset : Este comando inicializa o GrADS para seu estado inicial com as seguintes exceções:

1) Nenhum arquivo é fechado2) Nenhum objeto definido é liberado3) As atribuições de ‘set display' não são modificadas

Se os arquivos estão abertos, o arquivo padrão é atribuído para o 1, e o ambiente de dimensão éatribuído para variações de X, Y e Z e T são atribuídos para 1. (como se o arquivo 1 fossesomente o único aberto).

reset pode restabelecer somente certas partes do GrADS para seu estado inicial usando osseguintes parâmetros:

reset events restabelece o eventos do buffer (i.e., cliques dos mouse)reset gráficos restabelece os gráficos, mas não os widgetsreset hbuff restabelece o buffer de exibição quando em modo de buffer duploreset norset restabelece somente os eventos de X

reinit: Este comando faz o mesmo que o reset, e em adição fecha todos os arquivos abertos elibera todos os objetos definidos. Isto essencialmente volta o GrADS para seu estado inicial.

Page 55: Manual Grads

55

Exibindo os metafiles do GrADSUm metafile do GrADS é o arquivo criado com o comando print o qual contém as instruções pararecriar a plotagem em um dispositivo de saída, tal como tela ou impressora.

gxtran.exe é usado para exibir os metafiles do GrADS. Várias opções de linha de comando estãodisponíveis:

-i nomearq nomearq é o nome do arquivo meta;-r plotagem em fundo preto;-g WWWWxHHHH+X+Y

Este é mesmo como a opção de linha de comando no GrADS e permite atribuir a geometriada janela gráfica como usado em qualquer outro aplicativo X. A única diferença é o espaçoentre -g e WWWW. A janela de exibição terá WWWW pixels de largura e HHHH pixels dealtura começando no X e Y na tela.

-a anima os quadros, i.e., não faz pausa entre os quadros até o usuário teclar enter na janela decomando.

Por exemplo,

gxtran -r -a -g 800x600+0 -i test.gm

abrirá uma janela de 800x600 iniciando no canto alto esquerdo da tela e animará todos os quadros(plotagens) no arquivo test.gm usando o fundo de tela reverso.

Page 56: Manual Grads

56

Seção de Referência

Page 57: Manual Grads

57

19.0 Opções Gráficas

As opções gráficas controlam os modos e formatos das saídas gráficas. Algumas das opções sãoválidas para a maioria dos tipos de saídas gráficas, algumas são válidas somente para um.

Algumas das opções se "fixam" até serem modificadas. Outras permanecem as mesmas até que umcomando clear seja encontrado, e ainda outras são retornadas para seus padrões ou por um comandoclear ou por um comando display.

Gráficos 1-DGráficos de linha (gxout = line):

set ccolor cor - Atribui cor a linha. Retorna ao padrão pelo clear ou display, onde:0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set cstyle estilo - Atribui estilo de linha. Retorna ao padrão pelo clear ou display.set cmark marca - Atribui um marcador de linha:

0 - nenhum1 - cruz2 - círculo aberto3 - círculo fechado4 - quadrado aberto5 - quadrado fechado6 - X7 - diamante8 - triângulo9 - nenhum10 - círculo aberto com linha vertical11 - oval abertaRetorna ao padrão pelo clear ou display

set missconn on - Pelo padrão, quando o GrADS plota um gráfico de linha, os dados ausentes sãoindicados por uma 'quebra' na linha. Este comando conecta as linhas através dos dadosausentes.

set missconn off - Retorna ao comportamento padrão

Gráficos de Barra (gxout = bar)set bargap val - Atribui o intervalo entre as barras em percentagem. val deverá limitar de 0 a 100.

O padrão é 0, ou sem espaço. Um valor de 100 dá uma linha vertical única para cada barra.set barbase val| bottom|top - Se val for dado, cada barra ascende ou desce a partir deste valor,

assumindo que o valor está dentro do limite do plotador. Se bottom for especificado, cada barraascende de baixo para cima da plotagem. Se top for especificado, cada barra desce de cima parabaixo na plotagem.

set baropts opts

Page 58: Manual Grads

58

onde: opts = outline não preenche a barrafilled preenche a barra

set ccolor cor - Atribui cor a linha. Retorna ao padrão pelo clear ou display, onde:0 - preto 5 – ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

Barras de Erro (gxout = errbar)set ccolor cor - Atribui cor a linha. Retorna ao padrão pelo clear ou display, onde:

0 - preto 5 – ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set bargap val - Atribui o intervalo entre as barras em percentagem. val deverá limitar de 0 a 100.O padrão é 0, ou sem espaço. Um valor de 100 dá uma linha vertical única para cada barra.

set barbase val| bottom|top - Se val for dado, cada barra ascende ou desce a partir deste valor,assumindo que o valor está dentro do limite do plotador. Se bottom for especificado, cada barraascende de baixo para cima da plotagem. Se top for especificado, cada barra desce de cima parabaixo na plotagem.

Gráfico de Linha Sombreada (gxout = linefill)set lfcols 1 2d a;b

Colore onde a < b em branco (1) e b > a em vermelho (2)

Gráficos em Grade 2-D

Plotando em Linhas de Contorno (gxout = contorno)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:

set ccolor rainbow - para obter a seqüência do cores do arco-íris.

Page 59: Manual Grads

59

set ccolor revrain - usa a seqüência inversa do arco-íris, complementa set ccolor rainbow

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set cstyle estilo - Atribui os estilo de linha de contorno:Os números dos estilos são:

1 - sólido2 - traço longo3 - traço curto5 - pontosRetorna ao padrão pelo clear ou display

set cterp on|off - coloca o suavizador spline em on ou off. Permanece até uma nova atribuição. Oscontornos sombreados são plotados sem ajuste spline, assim para assegurar uma exatacomparação quando sobrepor o contorno de linha e os contornos sombreados do mesmo campo,especifique cterp como off. Pode ainda ser usado a opção 'csmooth', que afeta ambos, ocontorno de linha e o contorno sombreado.

set cint valor - Atribui o intervalo de contorno ao valor especificado. Retorna ao padrão pelo clearou display.

set cmin valor - Os contornos não são plotados abaixo deste valor. Retorna ao padrão pelo c ou d.set cmax valor - Os contornos não são plotados acima deste valor. Retorna ao padrão pelo c ou d.set black off/val1 val2 - Os contornos não são plotados dentro deste intervalo. Retorna ao padrão

pelo clear ou display.set clevs lev1 lev2 - Atribui especificados níveis de contorno. Retorna ao padrão pelo c ou d.set ccols col1 col2 - Atribui especificadas cores aos níveis do clev. Retorna ao padrão pelo clear

ou display (Nota: A seqüência do arco-íris é: 9, 14, 4, 11, 5, 13, 3, 10, 7, 12, 8, 2, 6)set rbrange baixo alto - Atribui um limite de valores que serão usados para determinar quais irão

adquir a cor arco-íris. Pelo padrão, são atribuídos ao baixo e ao alto o resultado de min e maxda grade. Retorna ao padrão pelo comando clear.

set rbcols cor1 cor2 <cor3> ... <auto>

Especifica um nova seqüência de cor 'rainbow'. Os números das cores podem ser as novascores definidas via o comando ‘set rgb'. Essas cores substituem a seqüência de cores do arco-íris padrão quaisquer que sejam as seqüências de cores arco-íris usadas. Quando utilizar 'setrbcols auto' a construída seqüência de arco-íris é usada. Este se ‘fixa’ até um novo comando.

set clopts cor <espessura <tamanho>>> onde:cor - é a cor do rótulo. -1 é o padrão, e indica o uso das cores de linhas de contorno como as

cores de rótuloespessura - é a espessura do rótulo. -1 é o padrão.tamanho - é o tamanho do rótulo. 0.09 é o padrão.Permanece atribuído até ser mudada pelo uso de outro comando 'set clopts'.

set csmooth on| off | linear - Se on, a grade é interpolada para uma grade mais fina usandointerpolação cúbica antes de traçar os contornos. Fixa-se até um novo comando.

Note: esta opção resultará em valores de contorno abaixo e acima do min e max da gradeinterpolada. Este pode fisicamente resultar em valores inválidos tal como no caso de chuvanegativa. O problema pode ser evitado usando o set csmooth linear, que usa interpolaçãolinear para criar a grade mais fina.

Page 60: Manual Grads

60

set clab on|off|forced|string|auto - Controla a rotulação do contorno. Se "fixa" até um novocomando.on - indica o contorno de rótulo ‘rápido’. Os rótulos são plotados onde a linha de

contorno é horizontal.off - nenhum rótulo de contornoforced - é feito uma tentativa de rotular todas linhas de contornostring - especifica um modelo de 'substituição' para conversão do valor de contorno para

caracter.

Esta conversão é feita pela chamada de uma rotina da biblioteca da linguagem C 'sprintf'. Ocomando man do UNIX pode ser usado para printf (na estações DEC, faça 'man 3s printf')para obter informações de como esta substituição trabalha.

Note que um único número em ponto flutuante está sendo passado à rotina do sprintf paracada uso do conjunto de caracter de substituição.

O resultado desta substituição é então passado ao sistema plotador de caracter do GrADS.Os controles de fonte também são passados, assim é possível incluir um comando decontrole de fonte do GrADS em seu caracter de substituição.

Padrão: set clab auto Um caracter de substituição de %g deve ser usado

Exemplo:set clab %gK Coloca um K no fim de cada rótuloset clab %g%% Coloca um sinal de porcentagem no finalset clab %.2f Coloca dois dígitos após o ponto decimal em cada rótuloset clab %03.0f Plota cada valor de contorno como um inteiro de 3 de dígitos

começando por zeroset clab Foo Rotula cada contorno com Foo

Aviso!!!! Nestes caracteres nenhum erro feito é checado! Se for especificado uma múltiplasubstituição (i.e., %g%i), a rotina do sprintf irá procurar por argumentos não existentes eo resultado provavelmente será um core (lixo). Não deverá ser usado em substituições quesejam diferentes de flutuantes (i.e., %i ou %s não deverão ser usados).

Esta opção obtém um retorno ao padrão 'auto' quando um clear for usado.

auto - especifica que um conjunto de caracteres não precisa ser especificadopreviamente, mas em vez disto será usado a substituição padrão.

set clskip número - onde número é o número de linhas de contorno que serão puladas narotulação. Por exemplo, set clskip 2 irá rotular a cada duas linhas de contornos.

Plotando em Contorno Sombreado ou Grade Pintada (gxout = shaded ou grfill)set cint valor - Atribui o intervalo de contorno ao valor especificado. Retorna ao padrão pelo clear

ou display.set cmin valor - Os contornos não são plotados abaixo deste valor. Retorna ao padrão pelo c ou d.set cmax valor - Os contornos não são plotados acima deste valor. Retorna ao padrão pelo c ou d.set black off/val1 val2 - Os contornos não são plotados dentro deste intervalo. Retorna ao padrão

pelo clear ou display.set clevs lev1 lev2 - Atribui especificados níveis de contorno. Retorna ao padrão pelo c ou d.set ccols col1 col2 - Atribui especificadas cores aos níveis do clev. Retorna ao padrão pelo clear

ou display (Nota: A seqüência do arco-íris é: 9, 14, 4, 11, 5, 13, 3, 10, 7, 12, 8, 2, 6)set rbrange baixo alto - Atribui um limite de valores que serão usados para determinar quais irão

adquir a cor arco-íris. Pelo padrão, são atribuídos ao baixo e ao alto o resultado de min e maxda grade. Retorna ao padrão pelo comando clear.

set rbcols cor1 cor2 <cor3> ...

Page 61: Manual Grads

61

<auto>Especifica um nova seqüência de cor 'rainbow'. Os números das cores podem ser as novascores definidas via o comando ‘set rgb'. Essas cores substituem a seqüência de cores do arco-íris padrão quaisquer que sejam as seqüências de cores arco-íris usadas. Quando utilizar 'setrbcols auto' a construída seqüência de arco-íris é usada. Este se ‘fixa’ até um novo comando.

set csmooth on| off | linear - Se on, a grade é interpolada para uma grade mais fina usandointerpolação cúbica antes de traçar os contornos. Se fixa até um novo comando.

Note: esta opção resultará em valores de contorno abaixo e acima do min e max da gradeinterpolada. Este pode fisicamente resultar em valores inválidos tal como no caso de chuvanegativa. O problema pode ser evitado usando o set csmooth linear, que usa interpolaçãolinear para criar a grade mais fina.

Plotando em Valor de Ponto de Grade (gxout = grid)set dignum número - Número de dígitos depois do decimalset digsize tamanho - Tamanho (em polegadas) dos números. Um bom limite de valores para ser

usado é de 0.1 até 0.15. Ambas as opções permanecem as mesmas até que sejam modificadas.

Plotando em Forma de Vetor (gxout = vector)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set arrscl tamanho <magnitude> - Especifica a escala do comprimento da flecha. tamanho é ocomprimento da flecha em unidades de plotagem (polegadas na página virtual). Um valor típicodeverá estar ente 0.5 e 1.0. magnitude é a magnitude do vetor que produzirá uma flecha deespecificado tamanho. Os outros comprimentos de flecha serão escalados apropriadamente. Sea magnitude não é dada, todas irão ter o mesmo comprimento. Retorna ao padrão pelo clear oudisplay.

set arrowhead tamanho - onde tamanho é o tamanho da ponta da flecha. O padrão e 0.05. Seatribuído para 0, nenhuma ponta de flecha é plotada. Se for atribuído um valor negativo, otamanho da ponta da flecha será escalonado pelo tamanho da flecha. O valor específico será dotamanho de quando a flecha está com uma polegada de comprimento.

set cint valor - Atribui o intervalo de contorno ao valor especificado. c ou d retorna ao padrão.set cmin valor - Os contornos não são plotados abaixo deste valor. Retorna ao padrão pelo c ou d.set cmax valor - Os contornos não são plotados acima deste valor. Retorna ao padrão pelo c ou d.set black off/val1 val2 - Os contornos não são plotados dentro deste intervalo. Retorna ao padrão

pelo clear ou display.set clevs lev1 lev2 - Atribui especificados níveis de contorno. Retorna ao padrão pelo c ou d.set ccols col1 col2 - Atribui especificadas cores aos níveis do clev. Retorna ao padrão pelo clear

Page 62: Manual Grads

62

ou display (Nota: A seqüência do arco-íris é: 9, 14, 4, 11, 5, 13, 3, 10, 7, 12, 8, 2, 6)set rbrange baixo alto - Atribui um limite de valores que serão usados para determinar quais irão

adquir a cor arco-íris. Pelo padrão, são atribuídos ao baixo e ao alto o resultado de min e maxda grade. Retorna ao padrão pelo comando clear.

set rbcols cor1 cor2 <cor3> ... <auto>

Especifica um nova seqüência de cor 'rainbow'. Os números das cores podem ser as novascores definidas via o comando ‘set rgb'. Essas cores substituem a seqüência de cores do arco-íris padrão quaisquer que sejam as seqüências de cores arco-íris usadas. Quando utilizar 'setrbcols auto' a construída seqüência de arco-íris é usada. Este se ‘fixa’ até um novo comando.

set arrlab on|off - Estabelece a plotagem do rótulo do vetor para gxout vector: O padrão é on eeste se "fixa" (o clear não muda este estado).

Plotando em Forma de Barbela do Vento (gxout = barb)Igual para gxout = vector.

Gráfico de Espalhamento (gxout = scatter)set cmark marca - Atribui um marcador de linha:

0 - nehum1 - cruz2 - círculo aberto3 - círculo fechado4 - quadrado aberto5 - quadrado fechado6 - X7 - diamante8 - triângulo9 - nenhum10 - círculo aberto com linha vertical11 - oval abertaRetorna ao padrão pelo clear ou display

set digsize tamanho - Tamanho (em polegadas) dos números. Uma bom limite de valores para usoé de 0.1 a 0.15. Ambas as opções permanecem as mesmas até serem modificadas.

set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

Page 63: Manual Grads

63

Plotando um Valor de Ponto de Grade Especifico (gxout = fgrid)set fgvals valor cor <valor cor><valor cor> ... - O tipo de saída do fgrid trata os valores de

grade como inteiros arredondados, e pintará uma grade de valor inteiro especificado com a corespecificada. Os valores não especificados não serão pintados. Se “Fixa”.

Plotando em Forma de Linhas de Corrente (gxout = stream)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:

set ccolor rainbow - para obter a seqüência do cores do arco-íris.set ccolor revrain - usa a seqüência inversa do arco-íris, complementa set ccolor rainbow

set cint valor - Atribui o intervalo de contorno ao valor especificado. Retorna ao padrão pelo clearou display.

set cmin valor - Os contornos não são plotados abaixo deste valor. Retorna ao padrão pelo c ou d.set cmax valor - Os contornos não são plotados acima deste valor. Retorna ao padrão pelo c ou d.set black off/val1 val2 - Os contornos não são plotados dentro deste intervalo. Retorna ao padrão

pelo clear ou display.set clevs lev1 lev2 - Atribui especificados níveis de contorno. Retorna ao padrão pelo c ou d.set ccols col1 col2 - Atribui especificadas cores aos níveis do clev. Retorna ao padrão pelo clear

ou display (Nota: A seqüência do arco-íris é: 9, 14, 4, 11, 5, 13, 3, 10, 7, 12, 8, 2, 6)set rbrange baixo alto - Atribui um limite de valores que serão usados para determinar quais irão

adquir a cor arco-íris. Pelo padrão, são atribuídos ao baixo e ao alto o resultado de min e maxda grade. Retorna ao padrão pelo comando clear.

set rbcols cor1 cor2 <cor3> ... <auto>

Especifica um nova seqüência de cor 'rainbow'. Os números das cores podem ser as novascores definidas via o comando ‘set rgb'. Essas cores substituem a seqüência de cores do arco-íris padrão quaisquer que sejam as seqüências de cores arco-íris usadas. Quando utilizar 'setrbcols auto' a construída seqüência de arco-íris é usada. Este se ‘fixa’ até um novo comando.

set strmden valor - especifica a densidade de linhas de corrente, onde o valor é de 1 a 10. Opadrão é 5.

Page 64: Manual Grads

64

1-D Gráficos de Estação

Plotando uma série de tempo de barbela de vento em um ponto (gxout = tserbarb)Por exemplo:

set gxout tserbarbd us(stid=79001);vs(stid=79001)

Plotando uma série de símbolos de tempo em um ponto (gxout = tserwx)Por exemplo:

set parea 0.75 10.5 3.875 4.25set grads offset gxout tserwxset digsiz 0.11d wx(stid=79001)

onde a grade wx contem códigos para os símbolos de tempo

Gráficos de Estação 2-D

Plotando os valores de estação (gxout = value)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set digsize tamanho - Tamanho (em polegadas) dos números. Um bom limite de valores para serusado é de 0.1 até 0.15. Ambas as opções permanecem as mesmas até que sejam modificadas.

set stid on/off - Controla se o identificador da estação será exibido próximo aos valores ou não.

Plotando a barbela de vento na estação (gxout = barb)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio

Page 65: Manual Grads

65

2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set digsize tamanho - Tamanho (em polegadas) dos números. Um bom limite de valores para serusado é de 0.1 até 0.15. Ambas as opções permanecem as mesmas até que sejam modificadas.

Plotando o símbolo de tempo na estação (gxout = wxsym)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set digsize tamanho - Tamanho (em polegadas) dos números. Um bom limite de valores para serusado é de 0.1 até 0.15. Ambas as opções permanecem as mesmas até que sejam modificadas.

set wxcols c1 c2 c3 c4 c5 c6 - onde: c1 ... c6 são as cores dos símbolos

Plotando o modelo de estação (gxout = model)set ccolor cor - Atribui a cor do contorno, onde cor é um número especificado por:

0 - preto 5 - ciano 10 - amarelo/verde 15 - cinza1 - branco 6 - magenta 11 - azul médio2 - vermelho 7 - amarelo 12 - amarelo escuro3 - verde 8 - laranja 13 - aqua4 - azul 9 - roxo 14 - roxo escuro

Retorna ao padrão pelo comando clear ou display

Pode também ser escolhido:set ccolor rainbow - para obter a seqüência de cores do arco-íris.

set ccolor revrain - usa a seqüência inversa de arco-íris, complementa set ccolor rainbow

Page 66: Manual Grads

66

set cthick espessura - Atribui a espessura de uma linha aos contornos dado um inteiro no limite de1 a 10 representando as espessuras de linhas relativas. Espessura de 6 ou mais será mais espessana tela. Primeiramente usado para controlar a saída de impressão.

set digsize tamanho - Tamanho (em polegadas) dos números. Um bom limite de valores para serusado é de 0.1 até 0.15. Ambas as opções permanecem as mesmas até que sejam modificadas.

set mdlopts opt - onde: opt = noblank, blank, dig3, ou nodig3set wxcols c1 c2 c3 c4 c5 c6 - onde: c1 ... c6 são as cores dos símbolos

Outras Opções de Exibição

Encontrando a estação mais próxima do ponto x,y (gxout = findstn)Veja Capítulo 23 Programando no GrADS.

Escrevendo os dados para um arquivo (gxout = fwrite)set fwrite out.datset gxout fwrite

Direciona a grade ao arquivo out.dat (direciona para grads.fwrite pelo padrão). Os dadosconsistem de flutuantes locais (i.e., flutuante 32-bit IEEE big_endian em uma estação detrabalho sun/sgi/hp)

Exibindo informações sobre os dados (gxout = stat)set gxout statd

envia a saída para o terminal ao contrário de uma plotagem ou saída de dados (i.e., set fwriteout.dat ; set gxout fwrite; d rh). Ou a saída vai para a variável de script "result" que pode seranalisada gramaticalmente no interior de um script (veja o script corr.gs do GrADS)

A saída permite que muitos cálculos estatísticos sejam realizados. Aqui está um exemplo daabertura de um arquivo do modelo global e veremos estatisticamente a umidade relativa em1000 mb, estatisticamente,

ga-> set gxout statga-> d rhData Type = gridDimensions = 0 1I Dimensions = 1 to 145J Dimensions = 1 to 73Sizes = 145 73 10585Undef value = 1e+20Undef count= 0 Valid count = 10585Min, Max = 0.0610352 100.061Stats(sm,sumsqr,n): 787381 6.35439e+07 10585Stats(sum,sumsqr)/n: 74.3865 6003.2Stats(sun,sumsqr)/(n-1): 74.3935 6003.77

Stats(sigma,var)(n): 21.6761 469.854Stats(sigma,var)(n-1): 21.6771 469.898

Cmin, cmax, cint = 10 100 10

Estudando agora estes em detalhes:

Page 67: Manual Grads

67

Data Type = grid ----- dados em gradeDimensions = 0 1 ----- o tipo de dimensão para a variável

0 - lon1 - lat2 - lev3 - tempo

1 - não variandoI Dimensions = 1 para 145 ------ óbvioJ Dimensions = 1 para 73Sizes = 145 73 10585 ------- 10585 é 145*73 ou o número total de pontosUndef Value = 1e+20 ------- valor indefinidoUndef Count = 0 Valid count = 10585 ----- # de pontos definidos e indefinidos na grade. É

bom lembrar que se o GrADS não puder encontrar quaisquer dados ele retornará undefs.Isto é útil para checar se quaisquer dados existem, Valid count= 0 significa não...

Min, Max = 0.0610352 100.061 ---- UHHH OHHHH! uma ligeira super saturação.Stats(sum,sumsqr,n): 787381 6.35439e+07 10585 - Este honestamente deveria ser

óbvio, sum = a soma simples de todos os pontos definidos. sumsqr = soma de, nestecaso, rh*rh e 10585 é n.

Stats(sum,sumsqr)/n: 74.3865 6003.2 - dividido por n por conveniência, o primeironúmero é a media "influenciada"...

Stats(sum,sumsqr)/(n-1): 74.3935 6003.77 - a assim chamada media "não influenciada"(removido 1 grau de liberdade), etc.

Stats(sigma,var)(n): 21.6761 469.854 - o desvio padrão e a variância "influenciada" (n)Stats(sigma,var)(n-1): 21.6771 469.898 - o desvio padrão e a variância "não influenciada"

(n-1)Cmin, cmax, cint = 10 100 10 - o que o GrADS usará quando plotar o contorno.

NOTA: Este trabalha para ambos grade e dados de estação

Comandos de Atribuição para Controlar a Exibição Gráfica

Atribuindo um limite para a plotagem 1-D ou plotagem scatterset vrange y1 y2 - Especifica um limite de valores das variáveis para a escala do eixo y (de y1 -

y2). Retorna ao padrão pelo clear somente.set vrange2 x1 x2 - Especifica um limite de valores das variáveis para a escala do eixo x (de x1 -

x2). Retorna ao padrão pelo clear somente.

Controlando a escala log quando a dimensão de Z é plotada em qualquer plotagem:set zlog on|off - Atribui a escala log na dimensão de Z para on ou off. Fixa-se até o reset.

Controlando a orientação dos eixos:set xyrev on off - Inverte os eixos em uma plotagem.

Exemplo:

Pelo padrão para uma plotagem de Z, T, a dimensão do tempo é plotada horizontalmente, e a

Page 68: Manual Grads

68

dimensão Z é plotada verticalmente. Pela atribuição xyrev, a dimensão do tempo será plotadaverticalmente e a dimensão Z horizontalmente.

set xflip on off - move a ordem do eixo horizontal (se o eixo é horizontal depois do xyrev seraplicado).

set yflip on off - move a ordem do eixo vertical.

Todos os comandos de orientação de eixos acima retornam ao padrão pelo comando clear ou setvpage.

Controlando a rotulação dos eixosset xaxis|yaxis inícial final <incr> - Especifica que o eixo será rotulado pelos especificados

valores, desde o inicial até o final com o incremento. Os rótulos podem ter nenhuma relaçãocom os dados ou dimensões.

set xlint intervalo ylint

Especifica o intervalo do rótulo. Sobreposto pelos ‘set xlevs/ylevs'. Retorna ao padrão pelocomando clear.

Note que os rótulos são sempre 'iniciados' em 0. i.e., se for atribuído o intervalo para 3, osrótulos serão 0, 3, 6, 9 ...

Se for atribuído ao intervalo um valor negativo, este indica que a rotulação começa no iníciodos valores do eixo. Se este for 1 ( e intervalo de 3), então os rótulos serão 1, 4, 7...

Esta atribuição irá sobrepor um intervalo rotulado especificado nos comandos xaxis ou yaxis.

Este comando não se aplica para um eixo de data/ tempo.

set xlab on | off | auto | string ylab

Este trabalha da mesma forma que o comando 'set clab'. Um exemplo:

set ylab %.2f

plotará todos os rótulos do eixo Y com 2 dígitos depois do ponto decimal. Este é retorna aopadrão pelo comando clear.

set xlevs rot1 rot2 ...ylevs

Especifica os níveis dos rótulos para a plotagem do eixo X ou Y. Cada rótulo desejado pode serespecificado. Retorna ao padrão pelo comando clear.

Aplicando set xaxis ou yaxis, e então set xlevs/ylevs, os níveis especificados aplicam-se à umlimite de rotulação especificado no comando xaxis ou yaxis.

Este comando não se aplica para um eixo de data/ tempo.

Page 69: Manual Grads

69

set xlopts cor<espessura < tamanho>> - controla aspectos de exibição de eixo, onde: ylopts

xlopts controla o eixo Xylopts controla o eixo Ycor cor do rótulo (Padrão 1)espessura espessura do rótulo (Padrão 4)tamanho tamanho do rótulo (Padrão 0.12)

set xlpos offset lado - controla a posição dos rótulos do eixo x, onde:offset offset em polegadaslado b ou t (abaixo ou acima)

set ylpos offset lado - Controla a posição dos rótulos do eixo y, onde:offset offset em polegadasside r ou l (direita ou esquerda)

Controlando a exibição das projeções de mapaset mproj proj – Atribui atual projeção de mapa, as palavras-chave são:

robinson projeção Robinson, requer atribuição de lon de -180 a 180 e lat de -90 a 90latlon o padrão. A projeção lat/lon com a razão de aspecto mantida.ccaled projeção de latlon onde a razão de aspecto não é mantida. A plotagem preenche

toda a área de plotagem.nps estereográfica polar nortesps estereográfica polar suloff a mesma que a scaled, mas nenhum mapa é desenhado e os rótulos do eixo não são

interpretados como rótulos de lat/lon.

set mpvals lonmin lonmax latmin latmaxoff

Atribui referência de longitudes e de latitudes para plotagens estereográficas polares. Pelopadrão, estes são atribuídos aos atuais limites do ambiente dimensionado. Este comandocancela este, e permite referência aos dados para ser casado com a exibição do mapa. Aplotagem polar será desenhada tal qual a região unida por essas longitudes e latitudes e seráinteiramente incluída na plotagem.

O GrADS plotará as linhas de lat/lon em plotagens polares ainda com nenhum rótulo. Paradesligar este

set grid off .

Controlando o desenho do mapa:set mpdset <lowres|mres|hires|nmap> - seleciona a resolução da base do mapa, onde:

lowres é o padrãomres e hires tem os contornos dos estados e dos paísesnmap cobre somente a América do Norte

set poli on|off – seleciona se os limites políticos serão desenhados quando usando os conjuntos dedados de mapas mres ou hires. O padrão é on.

set map auto cor estilo espessura - desenha um mapa de fundo usando os atributos de linhasolicitados.

set mpdraw on|off - Se off, não desenha o mapa de fundo. O solicitado escalonamento do mapaestá ainda em uso.

Page 70: Manual Grads

70

set grid on | off | valores de estilo | horizontal | vertical – Desenha, ou não, linhas de gradeusando a cor e o estilo de linha especificado. O padrão é desenhar a linha de grade com a cor15 (cinza) e com o estilo de linha 5 (pontos marcados). horizontal indica plotar somente aslinhas de grade horizontais; vertical as linhas de grade verticais.

Todos os valores acima permanecem os mesmos até que sejam modificados por novos comandosset.

Controlando a anotaçãoset font número - Seleciona a fonte para as subsequentes operações de texto, onde: número = 0 ...

9.draw title caracteres - Desenha o título no topo do gráfico. A barra invertida no conjunto de

caracteres denota nova linha.set annot cor <espessura> - Atribui cor e espessura de linha para o comandos de desenho acima

mencionado. O padrão é branco e espessura 6. Este comando também atribui a cor e espessuraàs bordas dos eixos, rótulos dos eixos e marcadores. Os marcadores e os rótulos são plotados naespecificada espessura menos 1.

Controlando a exibição do consoleset display grey|greyscale|color <black|white> - Atribui o modo de exibição.

Pelo padrão, o modo é color, onde o sombreado e o contorno são feitos com as cores do arco-íris. Quando for usado uma exibição monocromática, essas cores poderão mapear a escala decinza em um modo não muito agradável. Quando o modo está atribuído ao greyscale, oscontornos são exibidos usando um nível de cinza único, e contornos são exibidos usando umúnico nível de cinza, e contornos sombreado são feitos usando uma seqüência de tons de cinza.

Opcionalmente, pode-se atribuir a cor de fundo da janela gráfica para black ou white. O padrãoé black.

set display grey white

dá um resultado na exibição que é muito parecido à saída produzida pelo gxps.

Este comando NÃO afeta a saída de impressão.

set background white/black o padrão é black

Controlando a molduraset frame on | off | circle - onde:

on plota uma moldura retangular cercando a região escolhidaoff nenhuma moldura é plotadacírculo plota uma moldura retangular para projeções lat-lon, plota uma moldura circular

para uma plotagem polar na latitude mais exterior. Usado para plotar hemisférios inteirossomente.

Controlando a exibição do logotipo

set grads on|off - off desabilita a exibição do logotipo do GrADS na tela e saída deimpressora. Retorna ao padrão pelo clear.

Page 71: Manual Grads

71

20.0 Funções do GrADS

O verdadeiro poder do GrADS está na sua capacidade de análise de dados. Essas capacidades sãoacessadas através das funções internas do GrADS ou através de funções externas definidas (as assimchamadas udfs, veja o Capítulo 21) aplicadas para uma expressão (o GrADS pede por uma grade dedados, i.e. var.1(t=1)).

As funções são invocadas por nome, com seus argumentos separados por vírgulas e posicionadosentre parêntesis.

As expressões são tipicamente um dos argumentos fornecidos para uma função. As funções podem seraninhadas. Algumas funções modificam o ambiente de dimensão ao operarem.

A seguir será apresentada a lista de funções do GrADS que está agrupada alfabeticamente sobcategorias descritivas.

Funções de Médiaaave

aave(expr,xdim1,xdim2,ydim1,ydim2)Calcula uma média de área sobre uma região X-Y. Normalmente melhor do que usando funções aveaninhadas.

expr qualquer expressão do GrADS válida.xdim1 expressão de dimensão inicial para a dimensão X.xdim2 expressão de dimensão final para a dimensão X.ydim1 expressão de dimensão inicial para a dimensão Y.ydim2 expressão de dimensão final para a dimensão Y.

Notas de uso1) Na ausência de valores de dados ausentes aave dá o mesmo resultado que as funções ave aninhadas

nas dimensões X e Y:

ave(ave(expr,x=1,x=72),y=1,y=46)

sendo equivalente a:

aave(expr,x=1,x=72,y=1,y=46)

em termos dos resultados numéricos. A função aave é mais eficiente.

2) Quando há valores de dados ausentes, a função aave não retorna o mesmo resultado que as funçõesave aninhadas. Por exemplo, considere a pequena grade:

6 18 3 510 10 10 1012 U U U

onde U representa os valores de dados ausentes. Se forem aplicadas as funções ave aninhadas, aave interior fornecerá médias das filas de 6, 10, e 12. Quando a ave exterior for aplicada, oresultado será uma média de 10. Quando a aave é utilizada, todos os valores participam igualmente(neste caso, nenhum peso é aplicado na média final), e o resultado será 84/9 ou aproximadamente9.33.

Page 72: Manual Grads

72

3) A função aave assume que as coordenadas globais são longitude na dimensão X e latitude nadimensão Y. E faz a ponderação na dimensão de latitude pelo delta do seno da latitudes e será,também, calculado apropriadamente para grades espaçadas desigualmente.

4) A função aave sempre calcula a média no limite exato que for especificado em coordenadasglobais. Algo diferente ocorre na função ave onde o símbolo –b é usado para obter esteprocedimento. Se os limites especificados pelas expressões de dimensão não caírem nos limites degrade, então os valores de limite serão apropriadamente ponderados na média.

Quando as coordenas de grade são utilizadas nas expressões de dimensões, então estas sãoconvertidas para coordenas globais para o limite ser determinado. Esta conversão é feita utilizandoa escala do arquivo padrão . Note que a conversão é feita utilizando o limite de grade exterior, emvez da grade central. Por exemplo:

aave(expr,x=1,x=72,y=1,y=46)

Aqui o limite será determinado utilizando os valores de grade 0.5, 72.5, 0.5, e 46.5 os quais serãoconvertidos para coordenadas globais. Se for assumido que x=1 está em 0 graus de longitude ex=72 está em 355 graus de longitude, então o limite para a média será de -2.5 para 357.5 graus,que pode cobrir toda a Terra. Na dimensão Y, quando os limites estão além do pólo, a função aavereconhece estas e os pondera apropriadamente.

Exemplos1) Veja na função tloop um exemplo de como criar uma série de tempo de médias de área.2) Um exemplo de como calcular uma média de área dos dados somente sobre os continentes, dado

uma grade de máscara:

aave(maskout(p,mask.3(t=1)),x=1,x=72,y=1,y=46)

Neste caso, é assumido que a grade de máscara tem valores negativos nos pontos sobre o oceano.

ameanamean(expr,xdim1,xdim2,ydim1,ydim2)

Trabalha exatamente igual a aave, exceto que a ponderação da área está desabilitada, i.e., a média éuma simples soma direta / # pontos.

aveave(expr,dexpr1,dexpr2<,tincr<,símbolos>>)

Calcula a média da expr sobre um especificado limite de dimensões iniciando na dexpr1 e terminandona dexpr2. Se no cálculo da média a dimensão for tempo, pode ser especificado um incrementoopcional de tempo tincr.

expr é qualquer expressão do GrADS válida.dexpr1 é o ponto inicial para a média, especificado como uma expressão de dimensão

padrão do GrADS.dexpr2 é o ponto final para a média. As dimensões das dexpr1 e dexpr2 devem combinar.tincr é um incrementando de tempo para a média, se dexpr1 e dexpr2 são dimensões de

tempo.símbolos Os seguintes símbolos são válidos:

b O símbolo de limite indica que a média deverá ser calculada nos limites exatosespecificados em dexpr1 e dexpr2, ao invés de ser nos pontos de grade mais próximos. Vejaas notas de uso abaixo.

Page 73: Manual Grads

73

Notas de Uso:1) Os limites e intervalos sobre os quais a média é calculada são determinados pela escala do arquivo

padrão. As conversões das dexpr1 e dexpr2 para coordenadas de grade são realizadas usando aescala do arquivo padrão. Os exemplos abaixo mostram o que isto significa.

2) A média é ponderada para intervalos de grade não linear. As médias sobre latitudes são ponderadaspelo delta do seno das latitudes no limite grade. Os limites da grade são sempre definidos comosendo o ponto médio entre pontos de grade adjacentes.

3) Se dexpr1 e dexpr2 são especificadas em coordenas globais, as coordenadas são convertidas para amais próxima coordenadas de grade inteira baseando-se na escala do arquivo padrão. A média éentão desempenhada sobre o limite destas coordenadas de grade. Para os pontos finais serão dadosponderações normais, a menos que o símbolo -b seja especificado.

Exemplos:Todo os exemplos usam os dois arquivos descritores de dados de exemplo no começo desta seção.Para os seguintes exemplos, o ambiente de dimensão X-Y está variando e Z-T está fixo.

1) Considera a seguinte média, quando o arquivo padrão é o arquivo #1:

ave(z.2,t=1,t=10)

Esta sendo calculado a média da variável do arquivo #2, mas usando a escala do arquivo #1. Oarquivo #1 tem um intervalo de tempo de 6 horas, mas o arquivo #2 tem um intervalo de tempo de12 horas. A média tentará assim acessar os dados do arquivo #2 para os tempos que não estãodisponíveis, e um erro ocorrerá. Para evitar isto, o arquivo padrão deverá ser atribuído ao arquivo#2: set dfile 2

A média:

ave(z,t=1,t=120,4)

calculará somente dos dados das 00Z do arquivo #1, desde que o incremento do tempo seja 4, oqual para este arquivo está em 24 horas.

3) No cálculo de uma média zonal como segue:

ave(z,lon=0,lon=360)

a coordena global será convertida para coordena de grade, aqui X varia de 1 para 181, e o ponto degrade na longitude 0º (e 360º) será usado duas vezes na média. Para ter os pontos finais destamédia apropriadamente ponderados, deve ser usada o símbolo -b:

ave(z,lon=0,lon=360,-b)

ou calculando a média usando a coordena de grade diretamente:

ave(z,x=1,x=180)

4) As operações de média podem ser aninhadas:

ave(ave(z,x=1,x=180),y=1,y=46)

Neste caso, para calcular uma média de área. Note que para média de área, a função aave é melhor.Veja o funcionamento do aave.

Quando aninhando médias, a ordem do aninhamento pode ter um efeito dramático na performance.Deve sempre ser lembrado a ordem dos dados nos arquivos do GrADS: X varia mais rápido, entãoo Y, Z e T. Quando aninhando médias, a dimensão que varia mais rápido deve ficar dentro do aveinterior:

Page 74: Manual Grads

74

set lon -90set lat -90 90set lev 1000 100d ave(ave(t,x=1,x=180),t=1,t=20)

Este cálculo de média seria mais eficiente do que, por exemplo:

ave(ave(t,t=1,t=20),x=1,x=180)

embora o resultado numérico final seja o mesmo.

5) O uso do comando define pode fazer certas operações de forma mais eficiente. Para calcular odesvio padrão, por exemplo:

sqrt(ave(pow(ave(z,t=1,t=20)-z,2),t=1,t=20))

seria correta, mas a média interna será calculada 20 vezes. Definindo a média interior antes serásubstancialmente mais rápido:

define zave = ave(z,t=1,t=20)d sqrt(ave(pow(zave-z,2),t=1,t=20))

meanmeio(expr,dexpr1,dexpr2<,tincr<,bandeiras)

Trabalha exatamente igual a ave, exceto que a ponderação de área é desabilitada, i.e., a média é umasoma direta / # pontos.

vintvint(expr,psexpr,topo)

Desempenha uma integral vertical da peso-massa em coordena de pressão em mb, onde:

expr uma expressão do GrADS para a quantidade que será integrada.psexpr uma expressão fornecendo a pressão à superfície, em mb, o qual será usada para limitar

a integração sobre a basetopo uma constante, dando a pressão limitante no topo, em mb. Este valor não pode ser

fornecido como uma expressão.

O cálculo é uma soma da peso-massa das camadas:

1g

expr p∑ ∆ K

onde os limites são a pressão à superfície sobre a base e o valor de topo indicado no topo. Osomatório é feito para cada camada presente que está entre os níveis unidos. As camadas sãodeterminadas pelos diferentes níveis da dimensão Z do arquivo padrão. Cada camada é consideradaestar no ponto médio entre os níveis realmente presentes e é assumido ter o mesmo valor por toda acamada, i.e., o valor do ponto de grade no meio da camada.

Notas De Uso

1) Desde que o somatório seja feito usando os níveis Z do arquivo padrão, é importante que o arquivopadrão tenha a mesma coordenada da dimensão Z como a expr.

Page 75: Manual Grads

75

2) Os níveis de dados abaixo e acima dos níveis do somatório (pressão à superfície na base; valor detopo no topo) são ignorados, até mesmo se presente.

3) É assumido que os valores de dimensões globais para a dimensão Z são valores de pressão em mb.As unidades de g são tais que quando a expressão integrada é umidade específica (q) em unidadesde g/g, o resultado é g de água por metro quadrado, ou essencialmente água precipitável em mm.

4) É normalmente uma boa idéia fazer o valor da pressão no topo estar no topo de uma camada. Porexemplo, se o arquivo padrão (e os dados) têm níveis de pressão em ...,500,400,300,250,... entãoum bom valor para topo poderia ser 275, o valor no topo da camada que estende de 350 até 275mb.

5) A função vint opera somente em um ambiente de dimensão com X-Y variando

Exemplos

1) Um uso típico de vint pode ser:

vint(q,ps,275)

para integrar a umidade específica para obter água precipitável, em mm.

Funções de Filtro

smth9smth9(expr)

Desempenha um alisamento de 9 pontos para a grade resultante da expr.

Notas De Uso1) O resultado em cada ponto de grade é uma média ponderada do ponto da grade mais os 8 pontos

circundantes. O ponto de grade central recebe um peso de 1.0, os pontos de cada lado, acima eabaixo recebem peso 0.5, e os pontos de canto recebem um peso 0.3.

2) Todos os 9 pontos são multiplicados pelos seus pesos e somados, então são divididos pelo pesototal para obter um valor suave. Quaisquer pontos de dados ausentes não são incluídos na soma; ospontos além do limite da grade são considerados ser ausentes. Assim o resultado final pode ser oresultado de uma média com menos que 9 pontos.

3) Se os dados de grade tem 1-Dimensão, o resultado é um alisamento de 3 pontos.

Funções de Diferença Finitas

cdiffcdiff(expr,dim)

Desempenha uma operação de diferença centrada sobre a expr na direção especificada pela dim. Adiferença é feita no espaço de grade e nenhuma adaptação é desempenhada para grades espaçadasdesigualmente. O valor resultante em cada ponto de grade é o valor no ponto de grade mais um menoso valor no ponto de grade menos um. O argumento dim especifica a dimensão sobre o qual a diferençaesta sendo calculada, e é um simples caracter: X, Y, Z, ou T.

Page 76: Manual Grads

76

O valores resultantes nas grade limites são atribuídos para ausentes.

Exemplos1) A função cdiff pode ser usada para duplicar o cálculo feito pela função hcurl:

dv = cdiff(v,x)dx = cdiff(lon,x)*3.1416/180du = cdiff(u*cos(lat*3.1416/180),y)dy = cdiff(lat,y)*3.1416/180display (dv/dx-du/dy)/(6.37e6*cos(lat*3.1416/180))

O exemplo acima assume que há uma variação do ambiente dimensionado X-Y. Note que asvariáveis intrínsecas lat e lon dão resultados em graus e devem ser convertidas no cálculo pararadianos. Note também que foi assumido o raio da Terra ter 6.37e6 metros, portanto ascomponentes do vento U e V terão unidades de m/seg.

2) A advecção de temperatura pode ser calculada usando a função cdiff como segue:

dtx = cdiff(t,x)dty = cdiff(t,y)dx = cdiff(lon,x)*3.1416/180dy = cdiff(lat,y)*3.1416/180display -1*( (u*dtx)/(cos(lat*3.1416/180)*dx) + v*dty/dy )/6.37e6

onde a variável t é a temperatura, u é a componente do U do vento, e v é a componente V dovento.

Funções de Grade

constconst(expr,constante<,símbolo>)

Algum ou todos os valores na expr são atribuídos para o valor da constante, dependendo do valor dosímbolo:

expr Uma expressão válida do GrADS.constante Uma constante, dada como um inteiro ou valor de ponto flutuante. O valor será

tratado como ponto flutuante.símbolo Se nenhum símbolo for especificado, todos os valores de dados presentes na expr

serão atribuídos ao valor da constante para formar o resultado. Os valores de dados ausentesserão preservados como ausentes.

Outros valores da símbolo:

u todos os valores de dados ausentes são atribuídos ao valor da constante. Os dados não ausentespermanecem inalterados.

a todos os valores de dados possíveis no resultado são atribuídos ao valor da constante, incluindoos valores de dados ausentes.

Notas de Uso1) Esta função opera com dados em grade e dados de estação.

Page 77: Manual Grads

77

Exemplos1) A função const pode ser usada para designar um novo valor para dados ausentes, assim os dados

ausentes podem participar em operações:

const(z,0.0,-u)

2) A função const é útil quando for exibido uma plotagem usando o tipo de saída gráfica linefill,quando uma das linhas precisar ser uma linha reta horizontal:

set lon -90set lat -90 90set gxout linefillset lev 500d const(t,-20);t-273.16

3) A função const pode ser usada para calcular a fração do globo coberta por algum valor de interesse.Neste caso, a porção do globo coberta por precipitação maior que 10 mm/dia é calculado comouma série do tempo:

set lon 0 360set lat -90 90set t 1 lastdefine ones = const(const(maskout(p,p-10),1),0,-u)set x 1set y 1d tloop(aave(ones,lon=0,lon=360,lat=0,lat=360))

Note que primeiro foi criado um vetor definido que contém 1 onde o valor da precip é maior que10, e 0 onde quer que o valor da precip seja menor que 10. Isto é feito via funções indentadas,onde primeiro foi usado a função maskout para atribuir a todos os valores menores que 10 paraausentes. Então foi usada a função const com nenhum argumento para atribuir a todos os valoresnão ausentes para 1, então a função const com o símbolo -u foi usado para atribuir todos os valoresde dados ausentes para 0. A função aave é usada para calcular uma média ponderada em área.Desde que zeros e uns são avaliados, o resultado é uma fração de área onde há uns. Veja a funçãotloop para uma descrição de como desempenhar para séries de tempo de médias de áreas.

maskoutmaskout(expr,máscara)

Onde os valores de máscara são menores que zero, aos valores da expr são atribuídos valores dedados ausentes.

Trabalha com dados em grade ou dados de estação. Onde valores de máscara são positivos, os valoresda expr não são modificados. Assim o resultado do maskout são dados com um possível aumento nonúmero de valores de dados ausentes. A função do maskout, em vista de sua simplicidade aparente, éextremamente útil.

Exemplos1) Veja os Exemplos da função const para uma descrição do uso do maskout para calcular a

porcentagem do globo coberta por precipitação.

Page 78: Manual Grads

78

2) A função maskout pode ser usada para causar que parte dos dados sejam ignorados enquanto sãofeitos cálculos com ou outros. Por exemplo, tendo uma máscara terra-mar, onde valores no mar sãonegativos, para calcular alguma média de área de uma quantidade somente sobre a terra:

d aave(maskout(p,mask.2),lon=0,lon=360,lat=0,lat=90)

3) Algumas pessoas muitas vezes têm dificuldade de usar uma grade de máscara, porque este écolocado, algumas vezes, dentro um arquivo separado e com data/tempo e nível arbitrário. Assim,é necessário, em algumas vezes, sobrepor localmente o ambiente de dimensão quando usar a gradede máscara:

d aave(maskout(p,mask.2(t=1)),lon=0,lon=360,lat=0,lat=90)

provavelmente seria como no exemplo 2 teria que ser expressa nesta ordem para funcionar, com alocal sobrepondo de t=1 especificado no dado da máscara. Veja a documentação sobre comoavaliar expressões dentro do ambiente de dimensões do GrADS para mais informações.

skipskip(expr,skipx,skipy)

Atribui os valores alternantes da expr para valores de dados ausente. Esta função é usada na exibiçãode vetores de vento ou barbelas para uma menor densidade do número de vetores ou barbelas.

expr uma expressão em grade.skipx número de pontos de grade a ser pulado na direção do X.skipy número de pontos de grade a ser pulado na direção do Y.

Exemplos1) Para exibir um ponto de grade sim e outro não em ambas as direções X e Y:

d skip(u,2,2);v

2) Para exibir cada ponto de grade na direção do X, mas a cada 5 pontos de grade na direção do Y:

d skip(u,1,5);v

Note que não é necessário usar a função skip nas componentes U e V do vento; é suficiente plotarsomente uma componente com valores de dados ausentes para suprimir a plotagem do vetor oubarbela de vento.

Funções Matemáticas

absabs(expr)

Toma o valor absoluto da expr. Opera com dados em grade e estação. Os valores de dados ausentenão participam.

acosacos(expr)

Page 79: Manual Grads

79

Aplica a função cos-1 ao resultado da expr. Os valores da expr que excedem 1 ou são menores que -1são atribuídos a ausente. O resultado da função acos está em radianos.

asinasin(expr)

Aplica a função sin-1 na expr. Valores da expr que excedem 1 ou são menores que -1 são atribuídos aausente no resultado final. O resultado da função asin está em radianos.

atan2atan2(expr1,expr2)

Aplica a função tan-1 ao resultado das duas expressões, usando a fórmula:

tanθ = yx

onde y é a expr1 e x está expr2. Situações onde x e y são ambas zero são válidas; o resultado éarbitrariamente atribuído para zero. O resultado da função atan está em radianos.

coscos(expr)

Toma o cosseno da expr. Os valores são assumidos estar em radianos. Funciona com dados em gradee estação.

expexp(expr)

Realiza a operação e**x, onde a expr é x. Funciona com dados em grade e estação.

gintgint(expr)

Integral comum, o mesmo que ave exceto por não dividir pela área total

loglog(expr)

Toma o logaritmo natural da expressão. Pode ser usado com dados em grade ou estação. Os valoresmenores ou iguais a zero são atribuídos para ausente no resultado.

log10log10(expr)

Page 80: Manual Grads

80

Toma o logaritmo de base 10 da expressão. Pode ser usado com dados em grade ou estação. Osvalores menores ou iguais a zero são atribuídos para ausente no resultado.

powpow(expr1,expr2)

A função pow eleva os valores da expr1 ao expoente da expr2. Nenhuma verificação de erro é feitapara valores inválidos nos operandos. Esta função funciona com dados em grade e estação.

Exemplos1) Para o quadrado de algum valor:

pow(expr,2)

2) Para duplicar a operação da função mag:

sqrt(pow(u,2)+pow(v,2))

sinsin(expr)

Toma o seno da expressão fornecida. É assumido que a expressão esteja em radianos. Os valores doresultantes estão na série -1 para 1. Esta função trabalha com dados em grade e estação.

sqrtsqrt(expr)

Toma a raiz quadrada da expr. Esta função funciona com dados em grades e estação. Os valores naexpr que são menores que zero são atribuídos para ausentes no resultado.

tantan(expr)

Aplica a função trigonométrica da tangente da expr o qual é assumido estar em radianos. Opera comdados em grade e estação.

Funções Meteorológicas

tvrh2qtvrh2q(tvexpr,rhexpr)

Dado a temperatura virtual e a umidade relativa, tvrh2q calcula a umidade especifica, q, em g/g. Especificamente:

tvexpr Uma expressão do GrADS válida onde o resultado é temperatura virtual, em Kelvin.rhexpr Uma expressão do GrADS que resulta em umidade relativa, em porcentagem (de 0 a100).

Esta função trabalha somente com dados em grade.

Page 81: Manual Grads

81

Notas De Uso

1) A fórmula de conversão requer a pressão em mb. tvrh2q assume que o sistema da coordenada Z épressão em mb. Se Z é uma dimensão variante, a pressão válida em cada ponto de grade é usada.Quando Z é uma dimensão fixa, o valor de Z usado é o do atual ambiente dimensionado.

Note que é possível fornecer valores de um nível de pressão incorreto pela sobreposição docorrente ambiente dimensionado:

set lev 500d tvrh2q(tv(lev=850),rh(lev=850))

Neste caso, a função tvrh2q assumirá uma pressão de 500mb, a qual é o valor do atual ambientedimensionado atribuído para a dimensão Z. Entretanto, esta sendo usado dados do nível de 850mb,assim a função produzirá resultados incorretos.

tvrh2ttvrh2t(tvexpr,rhexpr)

Dado a temperatura virtual e a umidade relativa, tvrh2t retorna a temperatura em graus Kelvin. Aoperação desta função é a mesma como tvrh2q; refira-se a descrição acima para maior informação.

Funções de Propósito Especiais

tlooptloop(expr)

Quando o tempo é uma dimensão variante no ambiente dimensionado, a função tloop avalia a expr emtempos fixos, então reconstrói a série de tempo para obter um resultado final que é variação de tempo.A função tloop é necessária devido à implementação das regras de avaliação da expressão do GrADS,e a implementação de outras certas funções. A função do tloop pode também melhorar performancede certos cálculos.

A função do tloop é fornecida como um modo para obter uma série de tempo de funções que por elasmesmos não estão prontas para poder operar quando o tempo é uma dimensão variante. Veja osexemplos abaixo.

Notas De Uso1) O função tloop laça através do tempo baseado no incremento de tempo do arquivo padrão; é então

importante ter o arquivo padrão atribuído apropriadamente.

2) O função tloop e o comando define trabalham muito similarmente. Em muitos casos, o comandodefine pode ser usado para obter o mesmo resultado que quando usando tloop. De fato, o comandodefine pode ser ainda mais útil ao longo de algumas linhas, desde que isto também lace através dadimensão de Z, em efeito criando uma função zloop. Veja o comando define para maioresinformações.

Page 82: Manual Grads

82

Exemplos1) Uma típica aplicação da função tloop é calcular uma série de tempo de média de área usando a

função aave. Desde que a função aave não irá funcionar quando o tempo é uma dimensão variante,o uso do tloop é necessário:

set x 1set y 1set t 1 31d tloop(aave(ts,lon=0,lon=360,lat=-90,lat=90))

Note que o ambiente dimensionado está montando para refletir o tipo de plotagem desejada, asaber uma plotagem de linha onde o tempo é a dimensão variante. Assim é necessário fixar asdimensões X e Y; os valores destas dimensões neste caso não são relevantes. Usando define pode-se alcançar o mesmo efeito, i.e.,

define t=aave(ts,lon=0,lon=360,lat=-90,lat=90)d t

2) A função tloop pode estar usada para suavizar no tempo:

set lon -180 0set lat 40set lev 500set t 3 28d tloop(ave(z,t-2,t+2))

Neste exemplo, foi plotado um corte transversal de tempo-longitude, onde cada tempo é umamédia de um período de 5 tempos centrado naquele tempo.

3) Pode-se desejar exibir um corte transversal tempo-longitude (com X e T variando), com os dadossendo avaliados sobre a latitude, o modo 'padrão' para fazer isto poderia ser:

set lon -180 0set lat 40set lev 500set t 1 31d ave(z,lat=20,lat=40)

Este cálculo pode estar consumindo um tempo razoável, desde que para desempenhar a média,uma seção longitude-tempo é obtida em cada latitude. Se o período de tempo é longo, então esteserá uma operação muito ineficiente, devido a ordem dos dados em um típico conjunto de dados doGrADS. A função tloop poderá substancialmente melhorar a performance deste cálculo:

d tloop(ave(z,lat=20,lat=40))

desde que a media é então feita em cada tempo fixo, e é desta forma somente uma média de Xvariando dados sobre Y. Assim a função tloop aqui está simplesmente sendo usada para forçar umdiferente ordem para o cálculo, embora o resultado seja o mesmo.

Page 83: Manual Grads

83

Funções de Dados de Estação

gr2stngr2stn(grid_expr,stn_expr)

Desempenha uma interpolação de espaço de grade para localizações de estações, onde:

grid_expr é qualquer expressão do GrADS válida que dá um resultado em grade. A interpolaçãoserá feita usando a grade destes dados.

stn_expr é qualquer expressão do GrADS válida que dá um resultado em dados de estação.A interpolação será feita para essas localizações de estações, o valor do dado de estação não éusado.

O resultado da função são dados de estação. A interpolação é feita bi-linearmente dentro do espaço degrade. Nenhuma ponderação é feita justificando o sistema de coordenadas globais.

Exemplos1) Para examinar a diferença entre uma análise (i.e., dados em grade) e as observações originais,

pode-se fazer:

d t.3-gr2stn(t.1,t.3)

onde o arquivo 1 é de dados em grade e o arquivo 3 é de dados de estação. O resultado exibirácomo diferenças na localização da estação.

2) Para exibir a diferença calculada no Exemplo 1 como um campo de contorno, deve ser usada afunção oacres para fazer uma análise rápida dos valores de estação:

d oacres(t.1,t.3-gr2stn(t.1,t.3))

oacresoacres(grid_expr,stn_expr<,radii<first guess>>)

Uma análise objetiva de cressman é desempenhada nos dados de estação para produzir um resultadoem grade representando os dados de estação:

grid_expr uma expressão que tem um resultado de dados em grade. Os valores atuais da gradesão ignorados; a grade é usada como um modelo para desempenhar a analise. A escala destagrade deve ser linear em lat-lon.

stn_expr uma expressão que tem um resultado de dados estação. O dado de estação é analisadospara a grade.

radii raio de influencia opcional. Raios múltiplos são usualmente fornecidos, separado porvirgula. Se não for fornecido, os raios padrão usados estão em unidades de grade: 10,7,4,2,1. Oterceiro raio especificado é especial, neste quaisquer pontos de grade que não tem estaçõesdentro deste raio são atribuídos para valores de dados ausentes. Veja abaixo para uma discussãodo raio de influência.

O esquema da Análise de Cressman é descrito em um trabalho no Monthly Weather Review, 1959.Em resumo, múltiplas passagens são feitas através da grade em subsequentes raios menores deinfluência. Em cada passagem, um novo valor é determinado para cada ponto de grade pela chegada aum fator de correção para aquele ponto de grade. Este fator de correção é determinado por olhar emcada estação dentro do raio de influência do ponto de grade. Para cada tal estação, um erro é calculadocomo a diferença entre o valor da estação e um valor conseguido por interpolação da grade para estaestação. Uma fórmula de distância ponderada é então aplicado para todos os tais erros dentro do raiode influência do ponto de grade para chegar em um valor de correção para aquele ponto de grade. Osfatores de correção são aplicados para toda grade antes da próxima passagem ser feita.

Page 84: Manual Grads

84

Notas de Uso1) A função oacres pode ser muito lenta para ser usada, dependendo da grade e os dados de estação.

2) O esquema de Análise de Cressman pode ser instável se a densidade de grade é substancialmentemais alta do que a densidade de dados de estação (i.e., muitíssimo mais pontos de grade do quepontos de dados de estação). Em tais casos, a análise pode produzir extremos valores de grade quenão são realísticos. Sugere-se que os resultados do oacres sejam examinados e compare estes aosdados de estação para assegurar que eles encontram-se nas necessidades.

3) No general, a análise objetiva é um tópico complexo, e muitos esquemas para fazer isto tem sidodesenvolvido atualmente. A função oacres é fornecida mais como um rápida olhada nascaracterísticas propriamente do que uma esquema de análise rigorosa. Se houver necessidade deanálise específica, considere fazer sua análise objetiva exterior ao GrADS com programas depropósito especiais.

Exemplos1) No caso mais simples:

oacres(ts,ts.2)

2) Para especificar outros raios de influência:

oacres(ts,ts.2,12,8,5,4,3,2,1)

3) Atribuindo o first guess no oacres

oacres atribui um valor inicial da grade de análise para a média aritmética das observações na área.Para quantidades positivas definidas como precipitação, isto pode produzir uma análise irrealistaem regiões de nenhuma observação (i.e., nenhuma chuva é melhor guess que média da chuva).

A chamada para o oacres (suporta para analise de exame Cressman r**2) tem a forma,

d oacres(grade,obs,r1,r2,r3,...,r30)

onde:

grade é uma grade para na qual a obs será analisadaobs é a obs "grade"r1,...,r30 são os raios de exame em UNIDADES DE GRADE.

Os raios de exame padrão são:

r1=10.0r2=7.0r3=4.0r4=2.0r5=1.0

ou cinco raios. Este é bom para campos meteorológicos, mas pode produzir uma análise nãodesejável para campos hidrológicos os quais não são contínuos. O número de raios pode sermudado, subindo até um máximo de 30, para acomodar as necessidades de tipos diferentes dedados de estação.

Para mudar o first guess, atribui-se o penúltimo r para -1 e o último r para o desejado first guess.Por Exemplo,

'd oacres(pr.1,pr.2,5,4,-1,-0.01)'

fará uma análise da obs pr.2 para a grade pr.1 com 2 raios de exame de 5 e 4 unidades de gradecom um first guess de -0.01. Um first guess de 0 pode ser usado para reduzir a tendência do

Page 85: Manual Grads

85

oacress em criar olhos artificiais para campos com descontinuidade espacial tais como chuva.

Erros na atribuição do first guess produz o oacres padrão.

stnave

stnave(expr,dexpr1,dexpr2<,-m cnt>)Toma uma média de dados de estação sobre o tempo:

expr uma expressão do GrADS válida que dá um resultado de dados de estação.dexpr1 uma expressão de dimensão dando o tempo inicial para a média.dexpr2 uma expressão de dimensão dando o tempo final para a média.m cnt conta mínima de dados opcional para a média ser calculada. Se, na série de tempo, há

um número menor de pontos de dados disponíveis para uma particular estação do que o valorde cnt, então o resultado para aquela estação é o valor de dados ausentes. O valor padrão de cnté 1 (i.e., até mesmo 1 estação válida em uma série de tempo de ate mesmo milhares de pontosdará um resultado válido para aquela estação).

Notas de Uso1) Os tempos são laçados baseados no intervalo de tempo do arquivo padrão. É desta forma muito

importante atribuir o arquivo padrão para aquele do arquivo de dados de estação, ou um arquivo oqual tem o mesmo intervalo do tempo, ou nem todas as observações serão incluídas na média.

2) Se há mais que uma observação por estação para um tempo particular, destas observações sãocalculadas a média igualmente para chegar em um único valor para aquele tempo. A média finalconsiste de cada observação para cada tempo sendo calculado a média, com os tempos ausentesnão incluídos na média.

3) Observações de tempos diferentes são considerados ser da mesma estação quando o id da estação, alatitude, e a longitude todas combinam exatamente.

Exemplos1) Um uso típico da função stnave poderia ser:

stnave(ts,t=1,t=20,-m 10)

Aqui uma media é tomada sobre 20 tempos, e se há menos que 10 boletins para uma estação entãoaquela de estação estará ausente no resultado final.

stnminstnmin(expr,dexpr1,dexpr2<,-m cnt>)

Examina uma série de tempo de dados de estação e retorna o valor mínimo encontrado para cadaestação. Operandos e formas de uso são os mesmos como na função stnave; veja acima.

stnmax

stnmax(expr,dexpr1,dexpr2<,-m cnt>)Examina uma série de tempo de dados de estação e retorna o valor máximo encontrado para cadaestação. Operandos e formas de uso são os mesmos como na função stnave; veja acima.

Page 86: Manual Grads

86

Funções Vetoriais

hcurlhcurl(uexpr,vexpr)

Calcula a componente vertical da espiral (i.e., vorticidade) em cada ponto de grade usandodiferenciamento finito nas providas grades. É assumido que uexpr dá a componente U do vento, e quevexpr fornece a componente V do vento.

Notas de Uso1) O algoritmo usado para o cálculo da diferença finita está descrito como um Exemplo para a função

cdiff.2) A função assume um ambiente de dimensão com X-Y variante, e não operará a menos que este seja

o caso. O comando define pode ser usado em conjunto com a função hcurl e criar campos devorticidade de 3 ou 4 dimensões, dos quais cortes transversais podem ser exibidos.

3) As grades limites são atribuídas para dados ausentes4) O raio da terra usado no cálculo está em metros; assim as unidades das expressões de vento

fornecidas serão normalmente em m/s.

Exemplos1) Para exibir a vorticidade:

d hcurl(u,v)

2) Para exibir um corte transversal vertical de vorticidade, primeiro é necessário calculá-lo para umaregião de 3 dimensões:

set lon 0 360set lat -90 90set lev 1000 100define vort = hcurl(u,v)set lon -90d vort

hdivghdivg(uexpr,vexpr)

Calcula a divergência horizontal usando diferenciação finita. Exatamente o mesmo como hcurl emtodos os aspectos; veja a Nota de Uso e os Exemplos acima.

Notas de Uso1) A estabilidade numérica de calcular divergência horizontal usando diferenciação finita é muitobaixo. Portanto esta função deve ser usada com cuidado.

magmag(uexpr,vexpr)

Desempenha o cálculo: sqrt(uexpr*uexpr+vexpr*vexpr). Pode ser usado com dados de grade ou dados

Page 87: Manual Grads

87

de estação.

Page 88: Manual Grads

88

21.0 Funções Definidas pelo Usuário (UDFs):

Os usuários podem escrever suas próprias funções do GrADS na linguagem de computador de suaescolha, e ter estas disponíveis pela facilidade de expressão do GrADS (via o comando display). Algumas possíveis funções definidas pelo usuário poderão ser:

• funções de filtro• funções de interpolação de grade• funções de termodinâmica

Um função escrita pode ser invocada via a facilidade de expressão do GrADS. Esta função pode serescrita em qualquer linguagem de computador, e pode desempenhar qualquer desejado I/O, cálculos,etc. Leia a seguinte documentação cuidadosamente para compreender as restrições destacapacidade.

Resumo das Funções Definidas pelos UsuáriosOs passos que o GrADS usa para invocar uma função definida pelo usuário são:

1) Quando GrADS é iniciado, ele lê um arquivo que descreve as funções definidas pelo usuário. Estearquivo é chamado de 'tabela de funções definidas pelo usuário'.

2) Quando uma função do usuário é invocada via a expressão de comando na tela, o GrADS analisagramaticalmente os argumentos para as funções, obtém os resultados de quaisquer expressões, eescreve os dados resultantes para um 'arquivo transferência de dados da função'.

Note que em uma função definida pelo usuário adicionando a citação a dupla apóstrofe ("") em tornode um argumento de char passa o conjunto de caracteres diretamente sem a conversão usual para omas baixo caso e remove os caracteres em branco, i.e.:,

d grhilo(slp,F8.2,"Isto é o Rótulo",0.25)

Aqui F8.2 é passado como f8.2, mas o segundo conjunto de caracteres não será convertido paraistoeumrotulo.

3) Um programa escrito pelo usuário é então invocado. Este programa pode ler o arquivo transferênciade dados da função, fazer qualquer desejado processamento e então escrever o resultado dentro doarquivo resultado da função.

4) O GrADS irá ler a arquivo resultado da função e gerar os objetos internos necessários para esteresultado participar no restante da avaliação da expressão.

A Tabela das Funções Definidas pelo UsuárioA tabela da função definida pelo usuário é um simples arquivo de texto que contem informações sobrecada função definida pelo usuário. Há cinco registros para cada função definida, e o arquivo podeconter descrições para qualquer número de funções.

Os 5 registros são:

Registro 1: Este registro contem vários campos brancos delimitando os campos:

Campo 1: O nome da função tem de 1 a 8 caracteres, começando com una letra. O nomedeverá estar no caso baixo . Note que os nomes das funções não são dependentes dos casos,e que o GrADS converte toda expressão para o caso baixo antes da avaliação.

Campo 2: Um valor inteiro, especificando o número mínimo de argumentos que a funçãopode ter.Campo 3: Um valor inteiro, especificando o número máximo de argumentos que a função

Page 89: Manual Grads

89

pode ter. Este não pode ser maior que 8.Campo 4 para N: Uma palavra-chave descrevendo o tipo de dados de cada argumento:

expr: O argumento é uma expressão.valor: O argumento é um valor de dados.char: O argumento é um conjunto de caracteres.

Registro 2: Este registro contem vários campos vazios delimitando as opções de palavras-chaves. Atuais opções:

sequential o GrADS escreverá os dados para o arquivo transferência de dados da funçãoem registros seqüenciais não formatados do FORTRAN.direct o GrADS escreverá os dados para o arquivo transferência de dados da funçãosem quaisquer registros descritor de palavras.Note: sequential é tipicamente apropriado se a rotina da função é escrita em FORTRAN.direct é mais apropriado em C.

Registro 3: Este registro contém o nome do arquivo da rotina executável da função. Esta rotinaserá iniciada com o seu próprio separado processo via a chamada do 'system'. Faça um 'mansystem' para mais informações sobre as regras que governam as características deste sistema.

Registro 4: Este registro contém o nome do arquivo transferência de dados da função. Isto é oarquivo onde o GrADS escreverá os dados para depois invocar a função executável do usuário, eé tipicamente o arquivo que a função lerá para obter os dados para que sejam efetuados oscálculos.

Registro 5: Este registro contém o arquivo que especifica o arquivo resultado da função. Afunção escreve o resultado de suas operações dentro deste arquivo em um formato especificado, eo GrADS lê este arquivo para obter o resultado do cálculo de uma função.

A tabela de funções definidas pelo usuário, por ela mesma, está apontada para a variável de ambienteGAUDFT. Se esta variável não está atribuída, a tabela da função não será lida. Um exemplo deatribuição desta variável é:

setenv GAUDFT /usr/local/grads/udft

As funções definidas pelo usuário têm precedência sobre as funções intrínsecas do GrADS, assim umafunção definida pelo usuário pode ser montada para repor uma função do GrADS. Assim não haveráproblema se for escolhido uma função especifica já em uso pelo GrADS.

Formato do arquivo transferência de dados da funçãoOs arquivo transferência de dados da função contém um registro de cabeçalho único, então contémum ou mais registros representando cada argumento da função. A rotina da função do usuário saberáque tipos de dados esperar (desde que eles sejam especificados na TFDU), e pode ler o arquivo em ummodo previsível. O formato do arquivo pode parecer algo complexo a princípio, mas após exemplosmostrarão que isto não é tão mau como isto pode parecer a princípio.

Registo de Cabeçalho: O cabeçalho tem 20 números em ponto flutuante. O registro sempre terá omesmo tamanho. Os valores definidos neste registro são:

1º. valor: Número args do usuário usados quando invocando a função2º. valor: Atribuído para zero, para indicar que este é um formato particular de arquivotransferência. A função deverá testar este valor, e voltar um erro se esta for diferente de zero, naseqüência ser compatível com os incrementos futuros para este formato de arquivo.Valores 2 para 20: Reservado para uso futuro.

Page 90: Manual Grads

90

Registros do Arg: Cada tipo de argumento resultará em um específico conjunto de registrossendo escritos. Os registros são escritos na ordem que os argumentos são apresentados. Paracada tipo de dado:

valor: Um registro será escrito contendo um único valor em ponto flutuante.char: Um registro será escrito contendo o valor de caracter do argumento particular. O

comprimento do registro será 80 bytes. Se o argumento é mais longo, os bytes puxadosserão perdidos. Se o argumento é mais curto, este será aumentado com espaços embranco. Note que o argumento já estará processado pelo analisador gramatical deexpressão do GrADS para alguma extensão, o qual irá converter todos os caracteres parao caso baixo e remover quaisquer caracteres em branco.

expr: Quando o argumento é uma expressão, o GrADS avaliará a expressão e escreveráo resultado no arquivo de transferência. Atualmente somente dado em grade é suportado. Vários registros serão escritos no arquivo para cada argumento de tipo expr:

1º. registro: O registro de grade. Este registro contém 20 valores, todos em pontoflutuante. Note que algum dos valores são essencialmente inteiros, mas porconveniência eles são escritos como um vetor em ponto flutuante. Atençãoapropriada deverá ser tomada convertendo esses valores de volta para inteiro.

1: Valor indefinido para a grade2: i dimensão (idim). Dimensões são:

1 - Nada0 - dimensão do X (lon)1 - dimensão do Y (lat)2 - dimensão do Z (lev)3 - dimensão do T (tempo)

3: dimensão do j (jdim). Note: se idim e jdim são -1, a grade é um único valor. Sejdim é -1, a grade é de uma 1-D de grade.4: número de elementos na direção i (isiz)5: número de elementos na direção j (jsiz). Arranjo é dimensionado (isiz,jsiz).6: bandeira de dimensão linear i. Se 0, a dimensão tem escala não-linear.7: bandeira de dimensão linear j.8: istrt. Este é um valor em coordenadas globais da primeiro dimensão i,SOMENTE se a dimensão i tem escala linear e a dimensão i não é tempo.9: iincr. Incremento na dimensão i de coordenadas globais. SOMENTE se adimensão i tem escala linear.10: jstrt. Coordenadas globais da primeira dimensão j, somente se a dimensão j temescala linear, e a dimensão j não é tempo.11: jincr. Incremento de coordenadas globais para dimensão j.12: Se uma das dimensões é tempo, os valores de 12 a 16 são definidos como otempo inícial:

12: é o ano inicial.13: mês inicial14: dia inicial15: hora inicial16: minuto inicial

17: Os valores 17 e 18 contêm o incremento de tempo para a dimensão do tempo.17: contêm o incremento em minutos.

18: incremento em meses. (O GrADS trata todos os incrementos em termos deminutos e meses).19,20: reservado

Page 91: Manual Grads

91

2º. Registro: Este contem os dados em grade. Isto é o número isiz*jsiz de elementosem ponto flutuante.

Possível 3º. registro. Se a escala da dimensão i ou j é não linear, o valor em coordenadaglobal em cada valor integral de dimensão i(j) é escrito. Assim, se a dimensão i é nãolinear, o número isiz de elementos é escrito. Se a dimensão do j é não linear (e adimensão de i É linear), então jsiz elementos serão escritos.

Possível 4º. registro. Somente escrito se ambas as dimensões i e j tem escala não linear.Neste caso, este registro contem valores de coordenadas globais da dimensão j;número jsiz de elementos de ponto flutuante.

A existência dos 3º. ou 4º. registro pode somente ser determinada por examinar o conteúdo doregistro de cabeçalho de grade. Note que a dimensão do tempo é sempre linear como atualmenteimplementada no GrADS.

Note que não é necessário para a função tratar todas as possíveis perturbações de argumento de dados.A função pode testar para certas condições e retornar um código de erro se aquelas condições não sãoencontradas.

Formato do arquivo resultado da funçãoO arquivo resultado da função retorna o resultado de uma função para o GrADS. É responsabilidadedo processo da função escrever este arquivo no formato próprio. Um arquivo escrito em um formatoimpróprio pode causar problemas ao GrADS, ou produzir resultados incorretos.

O resultado de uma função é sempre uma grade. Assim, o formato do arquivo resultado de umafunção é:

Primeiro, um registro de cabeçalho.

Este registro contem 20 valores de ponto flutuante. O primeiro valor contem o código deretorno. Qualquer valor diferente de zero causa ao GrADS assumir para a função detectadaum erro, e o GrADS não lê qualquer outro além para a saída. O segundo valor deveatualmente sempre ser atribuído para zero (indicando um simples arquivo resultado), evalores 3 para 20 são reservados para uso futuro.

Próximo, um conjunto de registros de grade

Esses registros estão exatamente na mesma ordem e formato como no arquivo detransferência de dados. (Note que se a função está retornando uma grade que tem a mesmaescala e ambiente de dimensão como um argumento de grade, os registros para aqueleargumento de grade podem ser escritos para o arquivo de resultado sem modificação -somente os dados necessitam mudança).

Exemplo: Função de regressão linearIsto é um exemplo simples de que uma função definida pelo usuário poderia parecer como emFORTRAN. Este é uma função de regressão linear simples, que trata somente uma grade 1-D e tomaum argumento, e uma expressão.

Primeiro, a tabela de definição da função:

linreg 1 1 exprsequential/mnt/grads/linreg/mnt/grads/linreg.out/mnt/grads/linreg.in

Page 92: Manual Grads

92

O programa em FORTRAN está compilado, e chamado de linreg e colocado em /mnt/grads. O fontedo programa é:

real vals(20),ovals(20)real x(10000),y(10000)

copen (8,file='/mnt/grads/linreg.out',form='unformatted')open (10,file='/mnt/grads/linreg.in',form='unformatted')

cread (8)read (8) valsidim = vals(2)jdim = vals(3)

cc Se este nao é uma grade 1-D, escreve uma mensagem de erro e saic

if (idim.eq.-1 .or. jdim.ne.-1) thenwrite (6,*) 'Erro do linreg: Dimenção de Ambiente Inválidavals(1) = 1write (10) valsstop

endifcc Se a grade é muito grande, escreve mensagem de erro e saic

isiz = vals(4)if (isiz.gt.10000) then

write (6,*) 'Erro do linreg: Grade muito grande'vals(1) = 1write (10) valsstop

endifcc Lê os dadosc

read (8) (y(i),i=1,isiz)cc Le escala não linear se necessárioc

ilin = vals(6)if (ilin.eq.0) then

read (8) (x(i),i=1,isiz)else

do 100 i=1,isizx(i) = i

100 continueendif

cc Faz a Regressão linearc

call fit (x,y,isiz,a,b)cc Preenche os valores de Dadosc

do 110 i=1,isizy(i) = a+x(i)*b

110 continuecc escrve info de retorno. O cabeçalho e a escala não linearc info será o mesmo como o qual o GrADs nos deu.c

ovals(1) = 0.0

Page 93: Manual Grads

93

write (10) ovalswrite (10) valswrite (10) (y(i),i=1,isiz)if (ilin.eq.0) write(10) (x(i),i=1,isiz)

cstopend

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

SUBROUTINE FIT(X,Y,NDATA,A,B)CC A é o interceptadoC B é o slopeC

REAL X(NDATA), Y(NDATA)C

SX = 0.SY = 0.ST2 = 0.B = 0.DO 12 I = 1, NDATA

SX = SX + X(I)SY = SY + Y(I)

12 CONTINUESS = FLOAT(NDATA)SXOSS = SX/SS

DO 14 I = 1, NDATAT = X(I) - SXOSSST2 = ST2 + T * TB = B + T * Y(I)

14 CONTINUEB = B/ST2A = (SY - SX * B)/SSRETURNEND

Page 94: Manual Grads

94

22.0 Recursos Adicionais do Conjunto de Dados no GrADS

Este capítulo fornece mais informação sobre como controlar e especificar conjunto de dados noGrADS. Enquanto o material no Capítulo 4 é fundamental para usar o GrADS, a informação presenteaqui dá acentuada flexibilidade e controle do conjunto de dados o qual muitos usuários não irãoimediatamente necessitar. Uma total compreensão dos conteúdos do Capítulo 4 Usando arquivos dedados no GrADS é assumida.

Cabeçalhos de grupos de arquivo e tempoPode ser indicado ao GrADS que um arquivo de dados tem um cabeçalho. Inclua o registro noarquivo descritor:

fileheader comprimento

onde comprimento é o número de bytes no cabeçalho. O GrADS irá pular este cabeçalho, então trataro arquivo como se este fosse um arquivo normal do GrADS depois deste ponto. Esta opção é válidasomente para conjuntos de dados do GrADS em grade.

Controle do formato/estrutura da variávelEste recurso permite controle da estrutura e formato de cada variável.

Em um arquivo descritor de dados do GrADS cada variável é definida usando a seguinte sintaxe,

vname nlevs unids1,unids2,unids3,unids4 vdesc onde:

vname o nome como este está referenciado no GrADSnlevs o número de níveis verticais ou dimensão de Zunids? uma seqüência de um para quatro inteiros usado para definir a variável para oprocesso GRIB e para tratamento especializado.

Esses recursos são invocados através dos parâmetros unids? segundo a seguinte sintaxe:

-1,xx,yy onde:

xx = estruturayy = atributos adicionais-1 é usado para indicar ao GrADS que um formato especial está acontecendo.

Há quatro estruturas suportadas......

1) xx = 10

Dados onde a variável e os níveis são transpostos, (lon,lat,var,lev,tempo em vez delon,lat,lev,var,tempo). Por Exemplo, supondo as quatro variáveis abaixo,

u(x,y,z),v(x,y,z),t(x,y,z),z(x,y,z)

para escrevê-los out/in assim eles podem ser vistos no GrADS.

No FORTRAN você teria,parameter (ni=144,nj=91,nk=18,nt=4)dimension u(ni,nj,nk),v(ni,nj,nk),t(ni,nj,nk),z(ni,nj,nk),dum(ni,nj)do n=1,nk

call load(u,ni,nj,nk,n,dum)

Page 95: Manual Grads

95

write(10) dumend dodo n=1,nk

call load(v,ni,nj,nk,n,dum)write(10) dum

end dodo n=1,nk

call load(t,ni,nj,nk,n,dum)write(10) dum

end dodo n=1,nk

call load(z,ni,nj,nk,n,dum)write(10) dum

end dosubroutine load(a,ni,nj,nk,n,dum)dimension a(ni,nj,nk),dum(ni,nj)do i=1,ni

do j=1,njdum(i,j)=a(i,j,n)

end doend doreturn

e o .ctl pareceria algo como:

dset ^model.dattitle alguns modelos de dadosundef 0.10000E+16options sequentialxdef 144 linear 0 2.5ydef 91 linear -90 2.0zdef 18 levels1000.000 950.000 900.000 850.000 800.000 700.000 600.000 500.000 400.000 300.000 250.000 200.000 150.000 100.000 70.000 50.000 30.000 20.000tdef 4 linear apr85 1movars 4

u 18 0 component u do modelo da NASAv 18 0 component v do modelo da NASAt 18 0 temperatura do modelo da NASAz 18 0 altura geopotencial do modelo da NASA

endvars

Entretanto, no formato "phoenix" GCM da NASA, para somente as variáveis do programa de arsuperior, eles tem,do n=1,nk

call load(u,ni,nj,nk,n,dum)write(10) dumcall load(v,ni,nj,nk,n,dum)write(10) dumcall load(t,ni,nj,nk,n,dum)write(10) dumcall load(z,ni,nj,nk,n,dum)write(10) dum

end do

Assim, as variáveis e z são tranpostas ou todas as variáveis são escritas: um nível em umtempo....

Page 96: Manual Grads

96

Para fazer problemas mais elaborados, aos diagnósticos de ar superior, o formato da NASAreverte a convenção do GrADS, assim agora necessita-se contar ao GrADS que a var-ztransposta não está funcionando...

Para tratar as variáveis do programa de ar superior, e então diagnósticos de ar superior (i.e.,cuheat e nuvens), no arquivo .ctl:

dset ^model.nasa.dattitle algum modelo de dados da NASAundef 0.10000E+16options sequentialxdef 144 linear 0 2.5ydef 91 linear -90 2.0zdef 18 levels1000.000 950.000 900.000 850.000 800.000 700.000 600.000 500.000 400.000 300.000 250.000 200.000 150.000 100.000 70.000 50.000 30.000 20.000tdef 4 linear apr85 1movars 6

u 18 -1,10,1 componente u do modelo da NASAv 18 -1,10,1 componente v do modelo da NASAt 18 -1,10,1 temperatura do modelo da NASAz 18 -1 ,10,1 altura geopotential do modelo da NASAcuheat 18 -1,10,2 cumulus heatingclouds 18 -1,10,2 fração de nuvens

endvars

Assim,

yy = 1 significa que as variáveis têm sido transpostas var-zyy = 2 significa que as variáveis são agora "normais"

2) xx = 20

Este trata de variáveis 4-D, i.e., todos os tempos para um variável são escritas em um pedaçogrande como oposto para escrever para todas variáveis em um tempo e então todas as variáveisno próximos tempo. Do exemplo prévio, é assumido agora ter dados nos tempos nt...

Em um modelo típico temos,parameter (ni=144,nj=91,nk=18)dimension u(ni,nj,nk),v(ni,nj,nk),t(ni,nj,nk),z(ni,nj,nk),dum(ni,nj)do l=1,nt

C run model and update the prog variablescall prog(u,v,t,z)do n=1,nk

call load(u,ni,nj,nk,n,dum)write(10) dum

end dodo n=1,nk

call load(v,ni,nj,nk,n,dum)write(10) dum

end dodo n=1,nk

call load(t,ni,nj,nk,n,dum)write(10) dum

Page 97: Manual Grads

97

end dodo n=1,nk

call load(z,ni,nj,nk,n,dum)write(10) dum

end doend do

E não haverá problema para ler estes dados no GrADS, mas supondo agora ler a saída do modelo eescrever os dados u,v e t diferentemente,

parameter (ni=144,nj=91,nk=18,nt=4)dimension u(ni,nj,nk),v(ni,nj,nk),t(ni,nj,nk),z(ni,nj,nk),dum(ni,nj)open (10...)open (12...)

do l=1,ntC write out all the u's

do n=1,nkread(10) dumwrite(12) dum

end dodo n=1,nk

read(10) dumend dodo n=1,nk

read(10) dumend dodo n=1,nk

read(10) dumend do

end dorewind 10

C now write out all the vdo l=1,nt

do n=1,nkread(10) dum

end dodo n=1,nk

read(10) dumwrite(12) dum

end dodo n=1,nk

read(10) dumend dodo n=1,nk

read(10) dumend do

end dorewind 10

C now write out all the tdo l=1,nt

do n=1,nkread(10) dum

end dodo n=1,nk

read(10) dumend dodo n=1,nk

read(10) dumwrite(12) dum

Page 98: Manual Grads

98

end dodo n=1,nk

read(10) dumend do

end do

Enquanto isto parece não natural para um modelo, alguns conjuntos de dados parecem como estecom várias variáveis contendo todos os tempos.

O arquivo .ctl do GrADS para o exemplo acima, poderá ser:

undef 0.10000E+16options sequentialxdef 144 linear 0 2.5ydef 91 linear -90 2.0zdef 18 levels1000.000 950.000 900.000 850.000 800.000 700.000 600.000 500.000 400.000 300.000 250.000 200.000 150.000 100.000 70.000 50.000 30.000 20.000tdef 4 linear apr85 1movars 3u 18 -1,20 componente u do modelo da NASAv 18 -1,20 componente v do modelo da NASAt 18 -1,20 temperatura do modelo da NASAendvars

A opção sequential é atribuída porque escrevemos os dados usando I/O não formatado (f77).

Agora suponha usar a opção template no tempo. Use yy para indicar ao GrADS quantos temposhá em cada arquivo, i.e.,

dset ^mydate.%y2.datoptions sequential templatetdef 120 linear jan79 1movars 3

u 18 -1,20,12 u componentv 18 -1,20,12 v componentt 18 -1,20,12 temperature all

endvars

yy=12 conta ao GrADS que há 12 mês em cada arquivo.

3) xx = 30Este trata um caso patológico onde lon e lat são transpostos (lat,lon) como opostos para dados(lon,lat). Enquanto este faz "o trabalho" ele é muito ineficiente porque haveria a necessidade deuma grande mudança interna no I/O do GrADS para tratar este caso raro.

Entretanto, isto é útil para inspeção inicial e verificação de erro e é somente para isto que ele éprojetado. Aqui está um exemplo do arquivo do .ctl

dset ^latlon.dattitleteste de caso de dados onde lat and lon are transpostos a(j,i) versos a(i,j)

Page 99: Manual Grads

99

undef 1e20xdef 144 linear 0 2.5ydef 73 linear -90 2.5zdef 1 levels 1013tdef 1 linear 00z1jan1995 12hrvars 1u 0 -1,30 u compendvars

4) xx = 40Esta opção trata de dados não flutuantes pela conversão interna para flutuante após a leitura.

Há duas opções (yy)

yy=1 -um-byte não formatado ints (0-255)yy=4 -dados inteiros (4 byte em máquinas de 32-bit e 8-byte nas crays)

O primeiro caso foi tratar dados do GMS em um CD-ROM do MRI no Tsukuba, Japão. Aqui estáo arquivo gms .ctl:

dset ^I921110.Z12undef 1e20title GMS imagem IR durante TOGA COAREfileheader 500options yrevxdef 500 linear 130.05 0.1ydef 300 linear -14.95 0.1zdef 1 levels 1013tdef 1 linear 00Z1nov1992 12hrvars 1

tb 0 -1,40,1 IR temperatura do brilho - 100 Kendvars

A opção yy=4 tem sido usada para dados inteiros representando tipo de superfície...

Séries de tempo de múltiplos arquivosO GrADS agora permite tratar muitos arquivos de dados atuais como um arquivo do GrADS, se osarquivos de dados individuais estão em um formato legível do GrADS, e se os arquivos estãodivididos ao longo do tempo. Na implementação inicial, os tempos que estão em cada arquivo estãoindicados pelo nome do arquivo.

Um exemplo disto pode ser os dados de hora em hora, onde a cada 24 horas este é colocado em umarquivo separado. Cada arquivo é especificado deste modo:

1may92.dat2may92.datetc.

Indica-se ao GrADS que há múltiplos arquivos nesta série de tempo por dar um modelo desubstituição como o nome de arquivo:

dset %d1%mc%y2.dat

e dando um registro options que parece como:

Page 100: Manual Grads

100

options template

e especificando o limite e o incremento de tempo no registro do tdef:

tdef 72 linear 0z1may1993 1hr

O GrADS imaginará automaticamente que há 24 tempos em cada arquivo, e quais nomes de arquivoscorrespondem para quais tempos. Quando os dados são exibidos, o GrADS vai somente abrir umarquivo em um tempo. Quando os tempos são mudados tal que outro arquivo está sendo referido, oarquivo aberto é fechado, e um novo arquivo é aberto.

Substituições válidas são:

%y2 - 2 dígitos para o ano(últimos 2 dígitos)%y4 - 4 dígitos para o ano%m1 - 1 ou 2 dígitos para o mês%m2 - 2 dígitos para o mês (primeiro zero se necessário)%mc - 3 caracter para abreviação do mês%d1 - 1 ou 2 dígito para o dia%d2 - 2 dígitos para o dia%h1 - 1 ou 2 dígitos para a hora%h2 - 2 dígitos para a hora%h3 - 3 dígitos para a 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 o minuto ( primeiro zero se necessário)

para especificar o tempo inicial (i.e., saída do modelo NWP para NMC e FNMOC)

%iy2 - inicial 2 dígitos para o ano (últimos 2 dígitos)%iy4 - inicial 4 dígitos para o ano%im1 - inicial 1 ou 2 dígitos para o mês%im2 - inicial 2 dígitos para o mês (primeiro zero se necessário)%in2 - inicial 2 dígitos para o minuto ( primeiro zero se necessário)%imc - inicial 3 caracter de abreviação de mês%id1 - inicial 1 ou 2 dígitos para o dia%id2 - inicial 2 dígitos para o dia%ih1 - inicial 1 ou 2 dígitos para a hora%ih2 - inicial 2 dígitos para a hora%ih3 - inicial 3 dígitos para a hora

(incremento do tempo deve ser horas)

Esta ajuda funciona com todos os tipos de dados suportados pelo GrADS (grades do GrADS, GRIB,dados de estação do GrADS). Para especificar as opções de formato de arquivo, as opções devem seaplicar igualmente para cada arquivo.

Os dados em tempo-real nas estações DEC usam este novo recurso. Veja os arquivos de descritoresde dados:

/dados/wx/grads/sa.ctl/dados/wx/grads/sareps.ctl/dados/wx/grads/wx.ctl

para exemplos adicionais.

Page 101: Manual Grads

101

Formatos e estruturas de dados acrescentadasA camada I/O do GrADS tem sido modificado para tratar de tipos e estruturas extras de dados. Istofoi inicialmente questionado pela necessidade para trabalhar com as reanálises do GSFC DAO daNASA e da saída de dados do GCM por ser próprio formato "phoenix" e o Climate AnalysisCenter’s Climate Diagnostic Data Base (CDDB). Essas opções definem características globais doarquivo de dados......

No descritor de arquivo de dados as seguintes palavras-chaves foram acrescentadas,

theader tttttxyheader xxxxx onde:

ttttt = o número de bytes do cabeçalho precedendo os dados para cada bloco de tempo(i.e., cada 4-D lon,lat,lev,var no tempo)

xxxxx = o número de bytes do cabeçalho que precedem os dados para cada bloco xy (i.e.,um campo 2-D lon/lat).

N.B. Usando esses recursos requer-se uma compreensão detalhada de seus dados! O GrADS lerá osarquivos de dados exatamente do modo que são mostrados! Erros aqui vão prejudicar os resultados.

Um programa em FORTRAN para construir automaticamente o arquivo .ctl do formato phoenix daNASA está disponível para [email protected].

Page 102: Manual Grads

102

23.0 Programando em GrADS: Usando a Linguagem de Script

A linguagem de script do GrADS, usada via o comando run do GrADS, fornece uma capacidadesimilar ao comando exec, exceto que um script pode ter variáveis, controle de fluxo, e acesso aocomando de saída do GrADS. Scripts podem ser escritos para desempenhar uma variedade defunções, tais como permitir a um usuário apontar e clicar na tela para selecionar algo, animarquaisquer quantidades desejadas, escrever nas plotagens informações obtidas do comando query doGrADS.

Resumo da linguagem de scriptA linguagem do script é parecida ao REXX em implementação. Todas variáveis são de tipo STRING.Operações são suportadas nas variáveis do script. O controle de fluxo é alcançado via construções deif/else/endif e while/endwhile. O loop de fluxo pode ser modificado pelos comandos continue oubreak. Os strings contidos em variáveis ou gerados via uma expressão podem ser emitidas ao GrADScomo comandos. O resultado destes comandos (o string que GrADS teria digitado no terminal) écolocado dentro uma variável e feito avaliação para o script. A linguagem incluí suporte parafunções.

Elementos da linguagemUm arquivo de script é dividido em registros. O fim de um registro de script é determinado ou por umcaracter de nova linha (fim do registro para o arquivo) ou um ponto e vírgula (onde o ponto e vírgulanão está contido dentro de um string constante).

Cada registro do script pode ser um dos seguintes tipos de registro de script:

• designação• if / else / endif• while / endwhile / break / continue• function header / return• say / pull• comentário

Se um registro de script não é nenhum dos acima, é assumido ser um registro de declaração, o qualcontem uma expressão do script. O resultado da expressão é passado ao GrADS como um comandopara execução. O resultado texto do comando do GrADS é inserido na variável 'result' para serexaminado pelo script.

Muitos dos tipos de registro acima irão conter expressões. Expressão de script são compostos deoperadores e operandos, onde os operandos são variáveis de script, chamadas de funções, ouconstantes, e os operadores são lógicos, matemáticos, ou operações de concatenação.

Não há nehum 'goto' nesta linguagem.

N.B. O GrADS necessita da presença de um return após a última linha de comando no arquivo doscript, de outro modo GrADS não executará esta linha de comando.

Page 103: Manual Grads

103

VariáveisOs nomes das variáveis da linguagem de script tem de 1 a 8 caracteres, começando com um caracteralfabético e contendo somente letras ou números. O nome é caso sensitivel.

Os conteúdos de uma variável de script são sempre um string de caracter. Para algumas operações, ostring de caracter será interpretado como um número.

Se uma variável não foi ainda designada, seu valor é seu nome.

Se o conteúdo de uma variável ou constante string é um número no formato correto, certos operadoresdesempenharão operações numéricas, dando um string de resultado o qual também será um número.

Variáveis de string

Variáveis de string ou constantes de string são cercadas de citações simples ‘' ou duplas "" . PorExemplo:

nome = ‘Peter Pan’nome = "Peter Pan"

Variáveis Predefinidas

Alguns nomes de variáveis estão predefinidos, é uma boa idéia evitar designar valores para estasvariáveis. As seguintes são variáveis predefinidas:

latlonlevresultrec

Variáveis globais do script

As variáveis do script são normalmente locais às funções em que elas estão contidas. Variáveisglobais do script estão também disponíveis. Elas são especificadas via o nome da variável. Qualquernome de variável começando com um sublinhado (_) será assumido ser uma variável global, eguardará este valor do começo ao fim arquivo do script. Por Exemplo:

_var1 = " variável global 1"

N.B. as variáveis globais não podem ser usadas em cabeçalhos de função: Assim:

function dostuff(_var)

não faria sentido, desde que _var é uma variável global, e seria inválido se este fosse o únicoargumento.

Variáveis compostas do script

A linguagem do script suporta variáveis compostas, que podem ser usadas para construir vetores emscripts. Uma variável composta tem um nome de variável com segmentos separados por períodos. Porexemplo:

varname.i.jNeste caso, quando o conteúdo da variável é acessado, i e j serão procurados para ver se eles sãotambém variáveis (não compostas). Se eles são, i e j serão repostos pelo valor dos strings i e j.

Page 104: Manual Grads

104

Por Exemplo:

i = 10j = 3varname.i.j = 343

No exemplo acima, a designação é equivalente à:

varname.10.3 = 343

Note que o valor dos strings i e j podem ser qualquer coisa, mas a especificação do nome da variávelno script deve seguir as regras para os nomes das variáveis: letras ou números, começando com letra.O nome da variável após a substituição pode ser qualquer string:

i = 'a#$xx'varname.i = 343

O acima é valido. Entretanto, não é permitido se referir para este nome de variável diretamente:

varname.a#$xx = 343

Os nomes de variáveis não podem ser mais longos que 16 caracteres, ou antes ou após a substituição.

Note que a linguagem de script do GrADS não é particularmente eficiente em tratar grandes númerosde variáveis. Assim variáveis compostas não deveriam ser usadas para criar grandes vetores:

i = 1while (i<10000)

var.i = iendwhile

O loop acima criará 10000 nomes de variáveis distintas. Tendo este número de variáveis na cadeia devariáveis deixará o script muito lento. Se isto se mostra como uma pobre escolha de projeto, deixe-mesaber e eu considerarei a fazer a variável tratando-a de modo mais eficiente.

OperadoresOs seguintes operadores estão implementados:

| lógico OU& lógico E! unário NÃO- unário MENOS= igual!= diferente> maior que>= maior ou igual que< menor que<= menor ou igual que% concatenação+ adição- subtração* multiplicação/ divisão

Page 105: Manual Grads

105

Os seguintes operadores desempenharão uma operação numérica se o operandos são numéricos:

=, !=,>,>=, <, <=, +, -, *, /

Se qualquer uma das seguintes operações são tentadas com um operando não numérico, um erroresultará:

+, -, *, /

Operações de aritmética são feitas em ponto flutuante. Se o resultado é integral, o resultado de umstring é um inteiro.

Um operador lógico dará um caracter 0 (zero) se o resultado é FALSO, e um caracter 1 (um) se oresultado é VERDADEIRO.

ExpressõesExpressões de script consistem de operandos, operadores, e parêntesis.

O precedência de operadores é:

-, ! (Unário)/, *+, -%=, !=, , =, <, <=&|

Dentro do mesmo nível de precedência, as operações são desempenhados da esquerda para a direita.Parêntesis modificam o pedido de operação segundo convenção padrão.

Operandos podem ser variáveis (discutidas a pouco), constantes de string, ou chamadas de função.Constantes de strings são cercadas por um citação simples ou dupla. Constantes numéricas podem serentradas sem citações, mas são ainda consideradas constantes de string.

Um exemplo de uma constante de conjunto de caracteres:

'Isto é uma string'

A expressão inteira, incluindo todas chamadas de função, etc. serão desempenhadas para obter umresultado. Por exemplo:

var1!='' & var1*var2<10

Nesta expressão, ambos os lados da operação lógica AND serão resolvidos, e a subexpressão à direitapode resultar em um erro. Nestes casos, uma duplo aninhamento será requerido.

Em alguns casos, o operador de concatenação está contido. Isto toma lugar quando dois operandos selimitam (com ou sem intervir caracteres em branco — os caracteres em branco são ignorados).

Por exemplo, as seguintes expressões têm o mesmo efeito:

var1%var2%'String' usa o operador de concatenação %var1 var2'String' concatenação implícita

dando:

‘var1var2String'

Deve ser lembrado a ordem de precedência para o operador de concatenação.

Page 106: Manual Grads

106

Chamadas de função tomam a forma de:

nome(arg,arg,arg,...)

onde o nome segue as mesmas regras como para nomes de variáveis, e os argumentos podem serexpressões.

Controle de fluxo

Blocos if

O controle de fluxo pode ser controlado via a construção if/else/endif. O formato é:

if expressão Deverá estar em registro separadoregistro do scriptregistro do script..

else Opcionalregistro do script..

endif Requerido!

Note que o seguinte registro de script é inválido:

if (i=10) j=20

Será necessário entrar três registros de script:

if (i=10)j = 20

endif

Para entrar esses três registros de script na mesma linha:

if (i=10); j=20; endif;

A porção do bloco if executado conta com o resultado da expressão. Se a expressão resolve para umstring contendo o caracter 0, o 'else' da porção é executado. Se o string resultado for qualquer coisaalém disto, a porção 'if' é executada.

N.B. Não há nenhuma construção ELSE IF no GrADS.

Blocos While

A construção while é como segue:

while expressão Em registro de script separadoregistro de scriptregistro de script.

.endwhile Requerido!

Enquanto a expressão é verdadeira — i.e., não é exatamente igual ao caracter 0 -- o loop é executado.

Page 107: Manual Grads

107

Dois comandos de script adicionais podem ser usados para modificar a execução do loop. breakterminará a execução do loop imediatamente. continue irá ramificar imediatamente e retornar para otopo do loop, e a expressão será reavaliada.

Por exemplo:

t = 1while (t<10)

'set t 't'display z'if (rc!=0); break; endif;t = t + 1

endwhile

FunçõesAs funções podem ou estar contidas dentro do arquivo do script, ou podem ser uma função intrínseca. As funções contidas dentro de outros arquivos de script não são suportados até agora (outros arquivosde script podem ser executados via o comando run do GrADS).

Em um ou outro caso, as funções são invocadas como uma expressão de script que está sendoavaliada. As funções de script tem um resultado de string único, mas pode ter um ou mais strings deargumento. As funções são invocadas por:

nome(arg,arg,arg...)

Se a função tem nenhum argumento, deve-se ainda fornecer os parêntesis:

nome()

Pode-se fornecer funções dentro do arquivo do script pelo uso do registro de definição de função:

function nome(variável, variável, ...)

Para retornar de uma função, o comando return deve ser usado:

return expressão

A expressão é opcional; se não fornecida, um string NULO será retornado. (Um string nulo é: '') Oresultado da função é o resultado da expressão especificada no comando return

Quando uma função é invocada, os argumentos são avaliados, então controle de fluxo é transferidopara a função. As variáveis contidas na lista dentro do registro de definição de função sãoinicializados aos valores de argumentos passados. Se tão poucos argumentos forem passado para asespecíficas variáveis, as variáveis seguintes são não inicializadas. Se muitos argumentos sãopassados, os argumentos extras são descartados.

As variáveis do registro da definição da função podem ser modificadas sem modificar as variáveis darotina chamada.

A extensão das variáveis é normalmente local à função, mas pode ser global.

Quando um arquivo de script é primeiramente invocado (via o comando run), a execução começa noinício do arquivo. Um registro de definição de função pode opcionalmente ser fornecido no início. Seisto for feito, deverá especificar o nome de uma variável. Esta variável será inicializada para qualqueropção do comando 'run'. Se nenhuma opção for dada, a variável será inicializada para o valorNULO.

Page 108: Manual Grads

108

DesignaçãoO formato do registro de designação é:

variável = expressão

A expressão é avaliada, e o resultado é designado ser o valor da variável indicada.

Padrão Entrada/SaídaPara escrever informações ou perguntas no terminal (saída padrão), devem ser usados os comandos'say' ou ‘prompt’:

say expressãoprompt expressão

O resultado da expressão é escrita no terminal. O comando prompt trabalha do mesmo modo comoo comando say mas não anexa a presença do return.

Para ler a informação do terminal (entrada padronizada), deve ser usado o comando pull:

pull variável

O script pausa para entrada do usuário via teclado (até a presença do return), e o string digitado pelousuário é designado para o nome da variável indicada.

Por exemplo:

linha = " Peter Pan, um voador"say linha

Para combinar variáveis e comentários quando escrevendo para saída padronizada:

say ‘Ela disse este é ‘ linha

dá:

Ela disse este é Peter Pan, um voador

Enviando comandos ao GrADSO registro de declaração consiste unicamente de uma expressão:

expressão

A expressão é avaliada, e o string resultado é submetido ao GrADS como um comando.

Após este registro ser executado, é dado à variável 'result' do script o valor do resultado do comandodo GrADS (o resultado neste caso é o conjunto de caracteres que o GrADS teria digitado para oterminal tendo o comando entrado interativamente). À variável de escrita 'rc' é dado o código deretorno do comando do GrADS (este sempre será um valor de inteiro).

O resultado pode conter várias linhas de saída do GrADS. Essa será concatenada dentro um conjuntode caracteres longo, e pode ser separado no script usando a função 'sublin'.

Um erro do GrADS resultando de um comando inválido NÃO terminará execução do script.

Page 109: Manual Grads

109

Qualquer comando do GrADS pode ser editado no ambiente de script, incluindo o comando run. Oconjunto de caracteres de resultado de emissão do comando run será o conjunto de caracteres passadode retorno do script de 'nível baixo' via o comando ‘return’ naquele script— quando aquele scriptretorna ao GrADS (e assim retorna ao nível mais alto do script). Pode-se recursivamente chamarqualquer script, mas deve-se assegurar de obter retorno das recursões.

Funções Intrínsecas

Funções de String

subwrd (string, palavra) - obtém uma única palavra de um string.

O resultado é a enésima 'palavra' do string. Se o string é muito curto, o resultado é NULO. A'palavra' deve ser um inteiro.

sublin (string, linha) - obtém uma única linha de um string contendo várias linhas

O resultado é a enésima 'linha' do string. Se o string tem muito poucas linhas, o resultado éNULO. A 'linha' deve ser um inteiro.

substr (string, começo, comprimento) - obtém parte de um string

O subconjunto de um string começando na localização 'começo' de comprimento 'comprimento'será retornado. Se o string é muito curto, o resultado será um string curto ou NULO. O 'começo' e' comprimento devem ser valores inteiros.

Funções de Entrada/Saída (I/O)

read (nome de arquivo) - lê registros de um arquivo

O próximo registro do arquivo 'nome de arquivo' ; é lido. Repetidas chamadas podem ser feitaspara ler consecutivos registros. O resultado são duas linhas dentro um conjunto de caracteres. Aprimeira linha é o código de retorno, a segunda linha é o registro lido. O registro pode ter ummáximo de 80 caracteres. Use a função 'sublin' para separar o resultado. Os códigos de retornosão:

0 - ok1 - erro de abertura2 - fim de arquivo8 - arquivo aberto para escrita9 - Erro de Entrada/Saída (I/O)

Os arquivos são abertos quando a primeira chamada de leitura é feita para um nome de arquivoparticular. Os arquivos são fechados quando a execução do arquivo de escrita termina (note que osarquivos permanecem abertos entre chamadas de função, etc.).

write (nome de arquivo, registro <,append>) - escreve registros para um arquivo de saída

O registro é escrito para o arquivo 'nome de arquivo'. Na primeira chamada para escrever paraum arquivo particular, o arquivo é aberto no modo de escrita. Este destruirá um arquivo jáexistente! Se for usada o símbolo opcional append, o arquivo será aberto no modo anexar e tudoque for escrito será anexado no fim do arquivo. Os códigos de retorno são:

0 - ok1 - erro de abertura8 - arquivo aberto para leitura

Page 110: Manual Grads

110

close (nome)

Fecha o especificado arquivo. Este deve ser feito se for escolhido ler um arquivo o qual foi escrito.Isto pode também ser usado para retornar no começo de um arquivo. Os códigos de retorno são:

0 - ok1 - arquivo não aberto

Comandos que complementam a linguagem de scriptHá alguns comandos no GrADS que, embora não foram projetados exclusivamente para scripts, sãona maior parte úteis quando usados como complemento da linguagem de script. Esses incluem:

query <opção>

Emitindo o comando query sem nenhuma opção pode-se ver algumas das opções disponíveis domesmo. O seguinte é uma lista completa das opções query:

transforma - faz transformações de coordenadas, por exemplo

query transforma valor1 valor2

onde transforma é um destes:

xy2w coords XY para coords globaisxy2gr coords XY para coords de gradew2xy coords globais para coords XYw2gr coords globais para coords gradegr2w coords de grade para coords globaisgr2xy coords de grade para coords XYll2xy coords lat/lon para coords XYpp2xy coords de página para coords XY

Estes queries são válidos SOMENTE APÓS alguma coisa ter sido exibida. Astransformações aplicam-se SOMENTE para o mais recente item que foi exibido.

Coords XY estão em polegadas na página (i.e., monitor) onde a página tem 11x8.5polegadas ou 8.5x11 polegadas, dependendo de como o GrADS foi iniciado.

Coords Globais são lat, lon, lev, tempo ou val, dependendo do ambiente de dimensão queestá atuando quando a grade foi exibida. Nota-se que o tempo é exibido (e deve serespecificado) no formato absoluto de data/tempo do GrADS. val é o valor da coordena parauma plotagem 1-D (gráfico de linha).

Coordena de Grade são as coordenadas com respeito à grade sendo exibida. Para conjuntosde dados de estação, a grade e coordenas globais são equivalentes exceto na dimensão dotempo. Se for exibido uma grade de um 'envolvido' conjunto de dados, os números da gradepodem estar fora do limite dos números de grade de arquivos atuais. (Um 'envolvido'conjunto de dados é um conjunto de dados que cobre a terra na direção da longitude.Envolvimento toma lugar automaticamente). As conversões são feitas consistentemente,mas para certificar que trata-se de caso de envolvimento se seu conjunto de dados é global.

Exemplo:

Você tem exibido um diagrama de Hovmoller:

query xy2w 5.0 4.5

A resposta poderá ser:

Page 111: Manual Grads

111

Lon = -95 Tempo = 00z5nov1992

define - lista as atuais variáveis definidasdefval - dá o valor de uma variável definida em um ponto.

Por exemplo, query defval p 1 1 dará o valor da variável definida p no ponto 1,1. Parainterativamente modificar os valores de ponto grade em uma grade definida, q defvalpode ser usado em conjunto com o set defval, por exemplo:

define p=prq defval p 1 1

retornará para o terminal (e para a variável de script result)

defval is 100

quando 100 é o valor da grade definida p no ponto 1,1.

Para mudar o valor da grade definida p no ponto 1,1:

set defval p 1 1 65

muda o valor da variável definida p no ponto 1,1 para 65.

dims - dá o atual ambiente dimensionado

file n - dá informação do arquivo de número n

files - lista os arquivos abertos

fwrite - dá o nome do arquivo usado para operações do fwrite

gxinfo - lista atribuições de gráficos

q gxinfo é útil quando tentando encontrar a área gráfica, por exemplo:

ga-> q gxinfo

poderá dar:

Last Graphic = LinePage Size = 11 by 8.5X Limits = 2 to 10.5Y Limits = 0.75 to 7.75Xaxis = Lon Yaxis = ValMproj = 2

onde:

Last Graphic = Line um gráfico de linha foi plotadoPage Size = 11 por 8.5 modo de paisagem (padrão)X Limits = 2 para 10.5 o desenho está limitado na página entre o x=2 e 10.5

polegadasY Limits = 0.75 para 7.75 o desenho está limitado entre o y=0.75 e 7.75

polegadasXaxis = Lon Yaxis = Val tipo de dado plotado em cada eixoMproj = número mproj é a projeção do mapa os dados estão exibidos

abaixo.

onde: número é

1 – scaled (nenhuma preservação de razão de aspecto)

Page 112: Manual Grads

112

2 -latlon (2-D campos horiz, lon/lat)3 -nps (estéreo polar norte)4 -sps (estéreo polar sul)5 -Robinson

NOTA: a projeção Robinson trabalha somente quando:

'set lon -180 180''set lat -90 90'

pos - - espera pelo clique do mouse e retorna a posição do cursor do mouse.

shades - dá as cores e os níveis de contornos sombreados

string xxx - - retorna a largura do conjunto de caracteres xxxx.

time - - dá o limite de tempo do atual arquivo aberto

udft - lista a tabela da função definida pelo usuário

set gxout findstn

Este tipo de saída de gráficos espera três argumentos via um comando display. O primeiroargumento é um argumento de dado de estação. O 2o. e 3o. argumentos são a posição X e Y natela da desejada coordenadas de pesquisa. O GrADS irá pesquisar pela mais próxima estação paraa especificada posição X e Y, e imprimir o stid, lon, e lat da estação encontrada. Isto deverá sersomente usado quando X e Y são as dimensões variantes e APÓS um comando regular de exibição(que resulta em saída gráfica) ser usado.

Este comando é primeiramente pretendido para uso em script. Este comando é fornecido comouma facilidade interina para fazer esta operação; uma mais completa facilidade será fornecida parafazer uma variedade de operações de filtro e pesquisa. Assim, deve-se isolar o uso do comando emseus scripts caso seja necessário trocá-los mais tarde.

set dbuff on|off

Atribui o modo de buffer duplo em on ou off. Isto permite que a animação seja controlada de umscript. O comando clear também atribui o modo de buffer duplo para off.

swap

Troca buffers, quando o modo de buffer duplo está on. Se o modo de buffer duplo está off, estecomando não tem efeito.

O modo usual destes comandos seria:

set dbuff onloopdisplay somethingswapendloopset dbuff off

WidgetsO GrADS contem dois tipos de interface gráfica widgets (GUI) o qual pode ser usado paraimplementar uma interface " ponto e clique" usando a linguagem do script.

Page 113: Manual Grads

113

Botões na telaAqui está um script de botão ilustrando como desenhar um botão widget na tela

**-------------------------- dbutton ------------------*

set rgb 90 100 100 100set rgb 91 50 50 50set rgb 92 200 200 200function dbutton(bnum,xc,yc,dx,dy,string,oncol,offcol,facecol)set button 'oncol' 'facecol' 91 92 'offcol' '_bgcol' 91 92 6draw button 'bnum' 'xc' 'yc' 'dx' 'dy' 'stringreturn

onde:

para set button....

oncol cor do texto quando no estado “ligado”(1)facecol cor da face do botão no estado "ligado"offcol cor do texto quando no estado "desligado"(0)91 92 cor do delineando do botão para aparência de 3-D_bgcol cor da face do botão no estado "desligado"6 espessura do delineamento de sombra

para draw button ...

bnum número do botão (1-512)xc x central do botão em coordena de página (polegadas)yc y central do botão em coordena de página (polegadas)dx comprimento (x) do botão em polegadasdy altura (y) do botão em polegadasstring conjunto de caracteres para exibir no centro do botão em (xc,yc)

Pode-se também redesenhar um botão:

redraw button ### 0|1 onde:

### é o número do botão para o draw button ### ..., e 0 ou 1 é o "estado"

Rubber BandingO GrADS tem um tipo de widget chamado "rband" para rubber banding. Há dois modos: 1) box; e 2)line

No modo box, quando o usuário clica e arrasta, um quadrado é aberto e no modo line uma linha éobtida.

Para montar o rband,

set rband nn modo x1 y1 x2 y2 onde:

nn - widget #modo = box ou linex1 - o ponto mais baixo em x nas unidades de página onde o widget estará ativoy1 - o ponto mais baixo em y nas unidades de página onde o widget estará ativox2 - o ponto mais alto em x nas unidades de página onde o widget estará ativo

Page 114: Manual Grads

114

y2 - o ponto mais alto em y nas unidades de página onde o widget estará ativo

Por exemplo, após o comando q gxinfo deseja-se montar um widget ruber band de box na região daplotagem somente,

Last Graphic = LinePage Size = 11 by 8.5X Limits = 2 to 10.5Y Limits = 0.75 to 7.75Xaxis = Lon Yaxis = ValMproj = 2

Primeiro,

set rband 21 box 2 0.75 10.5 7.75

e então para ativar o widget,

ga-> q pos

o qual congela o sistema até o usuário clicar sobre a tela gráfica. Após pressionar e arrastar, este tipode resposta será obtida GrADS:

Positions = 2.13125 7.565 1 2 7.08125 2.19583 onde:

2.13 - x do primeiro canto do quadrado (x1)7.56 - y do primeiro canto do quadrado (y1)1 - qual botão foi pressionado:

1 - esquerda2 - médio3 - direita

2 - tipo de widget (rband):1 - botão2 - rband

7.8 - x do segundo canto do quadrado (x2)7.56 - y do segundo canto do quadrado (y2)

A coordena de página pode ser então analisada gramaticalmente e usada em

'q xy2w'

para recuperar os pontos de lat/lon...

ExemplosAlguns simples scripts de exemplo são fornecidos com a distribuição do GrADS. Estes podem serconseguidos via ftp (anonymous) no endereço grads.iges.org no diretório /grads. Neste endereço umnúmero bem grande de scripts estará sempre disponível. Desde scripts menores e mais simples atémaiores e mais complicados.

cbar.gs Desenhe uma barras de cores após uma plotagem em shaded ser exibidaxyplot.gs Faz uma plotagem geral em XY.string.gs Desenha um conjunto de caracteres na posição do clique do mouse na tela.draw.gs Desenha uma linha via o clique do mouse na tela.

Page 115: Manual Grads

115

24.0 Usando Projeções de Mapa no GrADS

É importante compreender a distinção entre os dois usos de projeções de mapa quando criandoexibição de seus dados no GrADS:

• projeção dos dados ( grades preprojetadas);• projeção de exibição

O GrADS suporta dois tipos de dados em grades:

• grades lat/lon (e não necessariamente regulares, i.e., gaussiana);• grades preprojetadas.

Usando Grades PreprojetadasOs dados preprojetados são dados já em uma projeção de mapa. O GrADS suporta quatro tipos dedados preprojetados:

1. N polar estéreo (projeção do modelo do NMC);2. S polar estéreo (projeção do modelo do NMC) ;3. Lambert Conformal (originalmente para o modelo NORAPS da Marinha);4. Modelo do NMC eta (não balanceado).5. Mais preciso N e S polar estéreo (dados de alta resolução SSM/I)6. Modelo do RAMS da Universidade Estadual do Colorado (polar estéreo oblíquo; beta)

Quando grades preprojetadas são abertas no GrADS, constantes de interpolação bilinear sãocalculadas e todos os dados são exibidas em uma grade interna lat/lon do GrADS definida pelo cartãoxdef e do ydef no descritor de dados ou arquivo ".ctl" (que é porque isto toma longo tempo para"abrir" um conjunto de dados de grade preprojetada).

É muito importante apontar que a grade interna do GrADS pode ser qualquer grade como isto estácompletamente independente da grade dos dados preprojetados. Assim, não há nada que impeçaexibir dados preprojetados em uma resolução muito alta de grade lon/lat (outra vez, definida no .ctlpor xdef e ydef). De fato, pode-se criar e abrir múltiplos arquivos .ctl com diferentes resoluções e/ouregiões que apontam para o mesmo arquivo de dados preprojetados.

Quando é feito um "display" (i.e., obter uma grade de dados), os dados preprojetados são bi-linearmente interpolados para a grade interna lat/lon do GrADS. Para campos escalarespreprojetados (i.e., geopotencial em 500 mb), a exibição é adequada e a exatidão da interpolaçãopode ser controlada pelo xdef e ydef para definir uma grade de resolução espacial mais alta.

A grande virtude desta aproximação é que toda a construção de funções analíticas do GrADS (i.e.,aave, hcurl...) continua a trabalhar até mesmo quando os dados não estiveram originalmente em gradelon/lat. O ponto é que não está se olhando diretamente em seus dados em um mapa geográfico.Entretanto, poderia sempre definir-se um arquivo .ctl que simplesmente abrisse os arquivos de dadoscomo dados i,j e os exibisse sem o mapa (set mpdraw off). Assim, em minha opinião, estecompromisso não é o que está limitando até mesmo olhar na grade — somente não se obtém obackground do mapa.

Campos Preprojetados de vetor são uns pequenos malandros, dependendo de se o vetor é definidorelativo à grade de dados ou relativo a Terra. Por exemplo, grades do NMC polar estéreo usamventos relativos à grade de dados e assim deve ser girada para a grade interna lat/lon do GrADS(outra vez definida no arquivo .ctl pelos cartões xdef e ydef).

Page 116: Manual Grads

116

O único potencial problema em trabalhar com dados preprojetados (i.e., modelo de dados LambertConformal) é definir a projeção para o GrADS. Isto é efetuado usando um cartão pdef no arquivodescritor de dados ".ctl".

Dados de Preprojeção Polar Estéreo (grossa precisão para Modelos do NMC)Os dados preprojetados em uma projeção polar estéreo (N e S) estão definidos como no NMC. Paraos dados GRIB do modelo NMC NGM distribuídos via ftp no anonymous nic.fb4.noaa.gov, o cartãodo pdef é:

pdef isize jsize projtype ipole jpole lonref gridincpdef 53 45 nps 27 49 -105 190.5

(NOTA: o * na primeira coluna do arquivo .ctl significa um comentário...)

onde,

ipole e jpole são o (i,j) do pólo e gridinc é o dx em km.

A relevante fonte do GrADS é:void w3fb04 (float alat, float along, float xmeshl, float orient,float *xi, float *xj) {/*CC SUBPROGRAM: W3FB04 LATITUDE, LONGITUDE TO GRID COORDINATESC AUTHOR: MCDONELL,J. ORG: W345 DATE: 90-06-04CC ABSTRACT: CONVERTS THE COORDINATES OF A LOCATION ON EARTH FROM THEC NATURAL COORDINATE SYSTEM OF LATITUDE/LONGITUDE TO THE GRID (I,J)C COORDINATE SYSTEM OVERLAID ON A POLAR STEREOGRAPHIC MAP PRO-C JECTION TRUE AT 60 DEGREES N OR S LATITUDE. W3FB04 IS THE REVERSEC OF W3FB05.CC PROGRAM HISTORY LOG:C 77-05-01 J. MCDONELLC 89-01-10 R.E.JONES CONVERT TO MICROSOFT FORTRAN 4.1C 90-06-04 R.E.JONES CONVERT TO SUN FORTRAN 1.3C 93-01-26 B. Doty converted to CCC USAGE: CALL W3FB04 (ALAT, ALONG, XMESHL, ORIENT, XI, XJ)CC INPUT VARIABLES:C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPESC ------ --------- -----------------------------------------------C ALAT ARG LIST LATITUDE IN DEGREES (<0 IF SH)C ALONG ARG LIST WEST LONGITUDE IN DEGREESC XMESHL ARG LIST MESH LENGTH OF GRID IN KM AT 60 DEG LAT(<0 IF SH)C (190.5 LFM GRID, 381.0 NH PE GRID,-381.0 SH PE GRID)C ORIENT ARG LIST ORIENTATION WEST LONGITUDE OF THE GRIDC (105.0 LFM GRID, 80.0 NH PE GRID, 260.0 SH PE GRID)CC OUTPUT VARIABLES:C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPESC ------ --------- -----------------------------------------------C XI ARG LIST I OF THE POINT RELATIVE TO NORTH OR SOUTH POLEC XJ ARG LIST J OF THE POINT RELATIVE TO NORTH OR SOUTH POLECC SUBPROGRAMS CALLED:C NAMES LIBRARYC ------------------------------------------------------- --------C COS SIN SYSLIBC

Page 117: Manual Grads

117

C REMARKS: ALL PARAMETERS IN THE CALLING STATEMENT MUST BEC REAL. THE RANGE OF ALLOWABLE LATITUDES IS FROM A POLE TOC 30 DEGREES INTO THE OPPOSITE HEMISPHERE.C THE GRID USED IN THIS SUBROUTINE HAS ITS ORIGIN (I=0,J=0)C AT THE POLE IN EITHER HEMISPHERE, SO IF THE USER'S GRID HAS ITSC ORIGIN AT A POINT OTHER THAN THE POLE, A TRANSLATION IS NEEDEDC TO GET I AND J. THE GRIDLINES OF I=CONSTANT ARE PARALLEL TO AC LONGITUDE DESIGNATED BY THE USER. THE EARTH'S RADIUS IS TAKENC TO BE 6371.2 KM.CC ATTRIBUTES:C LANGUAGE: SUN FORTRAN 1.4C MACHINE: SUN SPARCSTATION 1+C*/static float radpd = 0.01745329;static float earthr = 6371.2;

float re,xlat,wlong,r;re = (earthr * 1.86603) / xmeshl;xlat = alat * radpd;if (xmeshl>0.0) {

wlong = (along + 180.0 - orient) * radpd;r = (re * cos(xlat)) / (1.0 + sin(xlat));*xi = r * sin(wlong);*xj = r * cos(wlong);

} else {re = -re;xlat = -xlat;wlong = (along - orient) * radpd;

r = (re * cos(xlat)) / (1.0+ sin(xlat));*xi = r * sin(wlong);*xj = -r * cos(wlong);

}}

Dados na Projeção Lambert ConformalA projeção Lambert Conformal (lcc) foi implementado para o modelo de área limitado NORAPS daMarinha Americana. Assim, para trabalhar com os dados do lcc deve-se expressar a grade nocontexto do lcc da grade da Marinha. O NMC foi capaz de fazer isto para suas grades do AIWIPS e adefinição da Marinha deverá ser geral o suficiente para outros.

Uma típica grade Lambert-conformal do NORAPS está descrita abaixo, incluindo o código em C quemonta a interpolação interna.

Page 118: Manual Grads

118

O arquivo .ctl é:

dset ^temp.grdtitle DADOS DE TESTE NORAPSundef 1e20pdef 103 69 lcc 30 -88 51.5 34.5 20 40 -88 90000 90000xdef 180 linear -180 1.0ydef 100 linear -10 1.0zdef 16 levels 1000 925 850 700 500 400 300 250 200 150 100 70 50 30 20 10tdef 1 linear 00z1jan94 12hrvars 1

t 16 0 tempendvars

onde,

103 = #pts no x69 = #pts no ylcc = Lambert-conformal30 = lat de um ponto de ref88 = lon de ponto de ref (Leste é positivo no GrADS, Oeste é negativo)51.5 = i de ponto de ref34.5 = j de ponto de ref20 = lat verdadeira S40 = lat verdadeira N88 = lon padrão90000 = dx em M90000 = dy em M

De outro modo, é o mesmo como outros arquivos do GrADS.

Nota - o xdef/ydef aplica para a grade lon/lat interpola internamente para o GrADS e pode ser algo...

O fonte do GrADS o qual projeta lon/lat de grade interna lon/lat do GrADS para i,j da gradepreprojetada é:/* Lambert Conformal conversion */void ll2lc (float *vals, float grdlat, float grdlon,float *grdi, float *grdj) {/* Subroutine to convert from lat-lon to Lambert Conformal i,j.Provided by NRL Monterey; converted to C 6/15/94.c SUBROUTINE: ll2lccc PURPOSE: To compute i- and j-coordinates of a specifiedc grid given the latitude and longitude points.c All latitudes in this routine startc with -90.0 at the south pole and increasec northward to +90.0 at the north pole. Thec longitudes start with 0.0 at the Greenwichc meridian and increase to the east, so thatc 90.0 refers to 90.0E, 180.0 is the inter-c national dateline and 270.0 is 90.0W.cc INPUT VARIABLES:cc vals+0 reflat: latitude at reference point (iref,jref)cc vals+1 reflon: longitude at reference point (iref,jref)

Page 119: Manual Grads

119

cc vals+2 iref: i-coordinate value of reference pointcc vals+3 jref: j-coordinate value of reference pointcc vals+4 stdlt1: standard latitude of gridcc vals+5 stdlt2: second standard latitude of grid (only requiredc if igrid = 2, lambert conformal)cc vals+6 stdlon: standard longitude of grid (longitude thatc points to the north)cc vals+7 delx: grid spacing of grid in x-directionc for igrid = 1,2,3 or 4, delx must be in metersc for igrid = 5, delx must be in degreescc vals+8 dely: grid spacing (in meters) of grid in y-directionc for igrid = 1,2,3 or 4, delx must be in metersc for igrid = 5, dely must be in degreescc grdlat: latitude of point (grdi,grdj)cc grdlon: longitude of point (grdi,grdj)cc grdi: i-coordinate(s) that this routine will generatec information forcc grdj: j-coordinate(s) that this routine will generatec information forc*/

float pi, pi2, pi4, d2r, r2d, radius, omega4;float gcon,ogcon,ahem,deg,cn1,cn2,cn3,cn4,rih,xih,yih,rrih,check;float alnfix,alon,x,y;pi = 4.0*atan(1.0);pi2 = pi/2.0;pi4 = pi/4.0;d2r = pi/180.0;r2d = 180.0/pi;radius = 6371229.0;omega4 = 4.0*pi/86400.0;

/*mf -------------- mf*//*case where standard lats are the same */

if(*(vals+4) == *(vals+5)) {gcon = sin(*(vals+4)*d2r);

} else {gcon = (log(sin((90.0-*(vals+4))*d2r))log(sin((90.0-*(vals+5))*d2r)))/(log(tan((90.0-*(vals+4))*0.5*d2r))log(tan((90.0-*(vals+5))*0.5*d2r)));

}/*mf -------------- mf*/

ogcon = 1.0/gcon;ahem = fabs(*(vals+4))/(*(vals+4));deg = (90.0-fabs(*(vals+4)))*d2r;cn1 = sin(deg);cn2 = radius*cn1*ogcon;

Page 120: Manual Grads

120

deg = deg*0.5;cn3 = tan(deg);deg = (90.0-fabs(*vals))*0.5*d2r;cn4 = tan(deg);rih = cn2*pow((cn4/cn3),gcon);deg = (*(vals+1)-*(vals+6))*d2r*gcon;xih = rih*sin(deg);yih = -rih*cos(deg)*ahem;deg = (90.0-grdlat*ahem)*0.5*d2r;cn4 = tan(deg);rrih = cn2*pow((cn4/cn3),gcon);check = 180.0-*(vals+6);alnfix = *(vals+6)+check;alon = grdlon+check;while (alon<0.0) alon = alon+360.0;while (alon>360.0) alon = alon-360.0;deg = (alon-alnfix)*gcon*d2r;x = rrih*sin(deg);y = -rrih*cos(deg)*ahem;*grdi = *(vals+2)+(x-xih)/(*(vals+7));*grdj = *(vals+3)+(y-yih)/(*(vals+8));

}

Modelo do NMC Eta ( grades não balanceadas)A grade "nativa" do modelo eta do NMC é desajeitada para trabalhar com ela porque as variáveisestão sobre balanceamento (i.e., a grade para ventos não é a mesma como a grade para pontos demassa) e grades não retangulares (o número de pontos em i não é constante com j). Porque qualquercontorno de dados em grade irregular envolve interpolação em algum ponto, NMC cria campos domodelo eta "não balanceado" para programas de aplicação prática tais como o GrADS. Nas gradesnão balanceado todas as variáveis são colocadas em uma grade comum e retangular (os pontos demassa).

A rotação do vento também foi adicionado de modo que os dados de vetor serão propriamenteexibidos.

O cartão do pdef para uma típica grade do modela eta é:

pdef 181 136 eta.u -97.0 41.0 0.38888888 0.37037037

181 = #pts no x136 = #pts no yeta.u = grade do eta, não balanceado-97.0 = lon de ponto do ref (E é positivo no GrADS, W é negativa) [deg]41.0 = lat de ponto do ref [deg]0.3888 = dlon [deg]0.3703 = dlat [deg]

O código fonte no GrADS para o mapeamento de lon,lat para i,j é:void ll2eg (int im, int jm, float *vals, float grdlon, float grdlat,

float *grdi, float *grdj, float *alpha) {

/* Subroutine to convert from lat-lon to NMC eta i,j.

Provided by Eric Rogers NMC; converted to C 3/29/95 by Mike Fiorino.

c SUBROUTINE: ll2egcc PURPOSE: To compute i- and j-coordinates of a specified

Page 121: Manual Grads

121

c grid given the latitude and longitude points.

c All latitudes in this routine startc with -90.0 at the south pole and increasec northward to +90.0 at the north pole. Thec longitudes start with 0.0 at the Greenwichc meridian and increase to the east, so thatc 90.0 refers to 90.0E, 180.0 is the inter-c national dateline and 270.0 is 90.0W.cc INPUT VARIABLES:cc vals+0 tlm0d: longitude of the reference center pointcc vals+1 tph0d: latitude of the reference center pointcc vals+2 dlam: dlon grid increment in degcc vals+3 dphi: dlat grid increment in degccc grdlat: latitude of point (grdi,grdj)cc grdlon: longitude of point (grdi,grdj)cc grdi: i-coordinate(s) that this routine will generatec information forcc grdj: j-coordinate(s) that this routine will generatec information forc*/ float pi,d2r,r2d, earthr; float tlm0d,tph0d,dlam,dphi; float

phi,lam,lame,lam0,phi0,lam0e,cosphi,sinphi,sinphi0,cosphi0,sinlamr,coslamr;

float x1,x,y,z,bigphi,biglam,cc,num,den,tlm,tph;

int idim,jdim;

pi=3.141592654;

d2r=pi/180.0; r2d=1.0/d2r; earthr=6371.2; tlm0d=-*(vals+0); /* convert + W to + E, the grads standard for

longitude */ tph0d=*(vals+1); dlam=(*(vals+2))*0.5; dphi=(*(vals+3))*0.5; /* grid point and center of eta grid trig */ /* convert to radians */ phi = grdlat*d2r; lam = -grdlon*d2r; /* convert + W to + E, the grads standard for

longitude */ lame = (grdlon)*d2r; phi0 = tph0d*d2r; lam0 = tlm0d*d2r; lam0e = ( 360.0 + *(vals+0) )*d2r;

Page 122: Manual Grads

122

/* cos and sin */

cosphi = cos(phi); sinphi = sin(phi);

sinphi0 = sin(phi0); cosphi0 = cos(phi0);

sinlamr=sin(lame-lam0e); coslamr=cos(lame-lam0e);

x1 = cosphi*cos(lam-lam0); x = cosphi0*x1+sinphi0*sinphi; y = -cosphi*sin(lam-lam0); z = -sinphi0*x1+cosphi0*sinphi;

/* params for wind rotation alpha */

cc=cosphi*coslamr; num=cosphi*sinlamr; den=cosphi0*cc+sinphi0*sinphi;

tlm=atan2(num,den);/* parms for lat/lon -> i,j */ bigphi = atan(z/(sqrt(x*x+y*y)))*r2d; biglam = atan(y/x)*r2d;

idim = im*2-1; jdim = jm*2-1 ;

*grdi = (biglam/dlam)+(idim+1)*0.5; *grdj = (bigphi/dphi)+(jdim+1)*0.5; *grdi = (*grdi+1)*0.5-1; *grdj = (*grdj+1)*0.5-1;

*alpha = asin( ( sinphi0*sin(tlm)) / cosphi ) ;/* printf("qqq %6.2f %6.2f %6.2f %6.2f %g %g %g %g\n", grdlon,grdlat,*grdi,*grdj,*alpha,tlm*r2d,cosphi,sinphi0);*/

}

Polar estéreo de alta resolução para dados do SSM/IA projeção polar estéreo usada pelos modelos originais do NMC não é muito precisa porque elaassume que a terra é redonda (excentricidade = 0). Enquanto esta aproximação era razoável paramodelos do NWP de grossa resolução, é inadequado para trabalhar com dados de alta resolução talcomo SSM/I.

A Rotação do vento não foi implementada!!! Use unicamente para campos escalares.

pdef ni nj pse slat slon polei polej dx dy sgn

ni = # pontos no xnj = # pontos no yslat = valor absoluto da latitude padrãoslon = valor absoluto da longitude padrãopse = polar estéreo, "excêntrico"

Page 123: Manual Grads

123

polei = índice da posição x do pólo (onde (0,0) é o índice do primeiro ponto em vez do maistípico (1,1) )

polej = índice da posição y do pólo (onde (0,0) é o índice do primeiro ponto em vez do maistípico (1,1) )

dx = delta x em kmdy = delta y em kmsgn = 1 para polar estéreo N e -1 para polar estéreo S

O código fonte no GrADS para o mapeamento de lon,lat para i,j:void ll2pse (int im, int jm, float *vals, float lon, float lat,

float *grdi, float *grdj) {

/* Convert from geodetic latitude and longitude to polar stereographic grid coordinates. Follows mapll by V. J. Troisi. */ /* Conventions include that slat and lat must be absolute values */ /* The hemispheres are controlled by the sgn parameter */ /* Bob Grumbine 15 April 1994. */

const rearth = 6738.273e3; const eccen2 = 0.006693883; const float pi = 3.141592654;

float cdr, alat, along, e, e2; float t, x, y, rho, sl, tc, mc; float slat,slon,xorig,yorig,sgn,polei,polej,dx,dy;

slat=*(vals+0); slon=*(vals+1); polei=*(vals+2); polej=*(vals+3); dx=*(vals+4)*1000; dy=*(vals+5)*1000; sgn=*(vals+6);

xorig = -polei*dx; yorig = -polej*dy;

/*printf("ppp %g %g %g %g %g %g%g\n",slat,slon,polei,polej,dx,dy,sgn);*/

cdr = 180./pi; alat = lat/cdr; along = lon/cdr; e2 = eccen2; e = sqrt(eccen2); if ( fabs(lat) > 90.) { *grdi = -1; *grdj = -1; return; } else { t = tan(pi/4. - alat/2.) / pow( (1.-e*sin(alat))/(1.+e*sin(alat)) , e/2.); if ( fabs(90. - slat) < 1.E-3) { rho = 2.*rearth*t/

pow( pow(1.+e,1.+e) * pow(1.-e,1.-e) , e/2.);

Page 124: Manual Grads

124

} else { sl = slat/cdr; tc = tan(pi/4.-sl/2.) /

pow( (1.-e*sin(sl))/(1.+e*sin(sl)), (e/2.) ); mc = cos(sl)/ sqrt(1.-e2*sin(sl)*sin(sl) ); rho = rearth * mc*t/tc; }

x = rho*sgn*cos(sgn*(along+slon/cdr)); y = rho*sgn*sin(sgn*(along+slon/cdr));

*grdi = (x - xorig)/dx+1; *grdj = (y - yorig)/dy+1;

/*printf("ppp (%g %g) (%g %g %g) %g%g\n",lat,lon,x,y,rho,*grdi,*grdj);*/

return; }

}

Grades Polar Estéreo Oblíquas do RAMS do CSUO modelo do RAMS do CSU usa uma projeção polar estéreo oblíqua. Esta projeção está sendo aindatestada...

pdef 26 16 ops 40.0 -100.0 90000.0 90000.0 14.0 9.0 180000.0 180000.0

26 = # pts em x16 = # pts em yops = polar estéreo oblíqua40.0 = lat do ponto de ref (14.0, 9.0)-100.0 = lon do ponto de ref (14.0, 9.0 (L é positivo no GrADS, O é negativo)90000 = offset do xref [m]90000 = offset do yref [m]14.0 = i do ponto de ref9.0 = j do ponto de ref180000 = dx [m]180000 = dy [m]

Rotação de Vento não foi implementada!!! Usado somente para campos escalares.O código fonte no GrADS para o mapeamento de lon,lat para i,j é:

void ll2ops(float *vals, float lni, float lti, float *grdi, float *grdj){

const float radius = 6371229.0 ; const float pi = 3.141592654;

float stdlat, stdlon, xref, yref, xiref, yjref, delx , dely;

float plt,pln; double pi180,c1,c2,c3,c4,c5,c6,arg2a,bb,plt1,alpha,

pln1,plt90,argu1,argu2;

double hsign,glor,rstdlon,glolim,facpla,x,y;

Page 125: Manual Grads

125

stdlat = *(vals+0); stdlon = *(vals+1); xref = *(vals+2); yref = *(vals+3); xiref = *(vals+4); yjref = *(vals+5); delx = *(vals+6); dely = *(vals+7);

c1=1.0 ; pi180 = asin(c1)/90.0;

/*cc set flag for n/s hemisphere and convert longitude to <0 ; 360>

intervalc*/ if(stdlat >= 0.0) { hsign= 1.0 ; } else { hsign=-1.0 ; }/*cc set flag for n/s hemisphere and convert longitude to <0 ; 360>

intervalc*/ glor=lni ; if(glor <= 0.0) glor=360.0+glor ; rstdlon=stdlon; if(rstdlon < 0.0) rstdlon=360.0+stdlon;

/*cc test for a n/s pole casec*/ if(stdlat == 90.0) { plt=lti ; pln=fmod(glor+270.0,360.0) ; goto l2000; }

if(stdlat == -90.0) { plt=-lti ; pln=fmod(glor+270.0,360.0) ; goto l2000; }

/*cc test for longitude on 'greenwich or date line'c*/ if(glor == rstdlon) { if(lti > stdlat) { plt=90.0-lti+stdlat;

Page 126: Manual Grads

126

pln=90.0; } else { plt=90.0-stdlat+lti; pln=270.0;; } goto l2000; }

if(fmod(glor+180.0,360.0) == rstdlon) { plt=stdlat-90.0+lti; if(plt < -90.0) { plt=-180.0-plt; pln=270.0; } else { pln= 90.0; } goto l2000 ; }

/*cc determine longitude distance relative to rstdlon so it belongs toc the absolute interval 0 - 180c*/ argu1 = glor-rstdlon; if(argu1 > 180.0) argu1 = argu1-360.0; if(argu1 < -180.0) argu1 = argu1+360.0;

/*cc 1. get the help circle bb and angle alpha (legalize arguments)c*/

c2=lti*pi180 ; c3=argu1*pi180 ; arg2a = cos(c2)*cos(c3) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = max1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* min1(arg2a, c1) */ bb = acos(arg2a) ; c4=hsign*lti*pi180 ; arg2a = sin(c4)/sin(bb) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ alpha = asin(arg2a) ;/*cc 2. get plt and pln (still legalizing arguments)c*/ c5=stdlat*pi180 ; c6=hsign*stdlat*pi180 ; arg2a = cos(c5)*cos(bb) + sin(c6)*sin(c4) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ plt1 = asin(arg2a) ; arg2a = sin(bb)*cos(alpha)/cos(plt1) ;

if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */

Page 127: Manual Grads

127

if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ pln1 = asin(arg2a) ;

/*cc test for passage of the 90 degree longitude (duallity in pln)c get plt for which pln=90 when lti is the latitudec*/ arg2a = sin(c4)/sin(c6) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ plt90 = asin(arg2a) ;

/*cc get help arc bb and angle alphac*/ arg2a = cos(c5)*sin(plt90) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ bb = acos(arg2a) ;

arg2a = sin(c4)/sin(bb) ; if( -c1 > arg2a ) arg2a = -c1 ; /* arg2a = dmax1(arg2a,-c1) */ if( c1 < arg2a ) arg2a = c1 ; /* arg2a = dmin1(arg2a, c1) */ alpha = asin(arg2a) ;

/*cc get glolim - it is nesc. to test for the existence of solutionc*/ argu2 = cos(c2)*cos(bb) / (1.-sin(c4)*sin(bb)*sin(alpha)) ; if( fabs(argu2) > c1 ) { glolim = 999.0; } else { glolim = acos(argu2)/pi180; }/*cc modify (if nesc.) the pln solutionc*/ if( ( fabs(argu1) > glolim && lti <= stdlat ) || ( lti > stdlat ) ) { pln1 = pi180*180.0 - pln1; }/*cc the solution is symmetric so the direction must be if'edc*/ if(argu1 < 0.0) { pln1 = -pln1; }/*c convert the radians to degrees

Page 128: Manual Grads

128

c*/ plt = plt1/pi180 ; pln = pln1/pi180 ;

/*cc to obtain a rotated value (ie so x-axis in pol.ste. points east)c add 270 to longitudec*/ pln=fmod(pln+270.0,360.0) ;

l2000:

/*cc this program convert polar stereographic coordinates to x,y dittoc longitude: 0 - 360 ; positive to the eastc latitude : -90 - 90 ; positive for northern hemispherec it is assumed that the x-axis point towards the east andc corresponds to longitude = 0cc tsp 20/06-89cc constants and functionsc*/ facpla = radius*2.0/(1.0+sin(plt*pi180))*cos(plt*pi180); x = facpla*cos(pln*pi180) ; y = facpla*sin(pln*pi180) ;

*grdi=(x-xref)/delx + xiref; *grdj=(y-yref)/dely + yjref;

return;

}

Armadilhas quando usando dados preprojetadosHá algumas armadilhas com o uso de dados preprojetados:

1) as unidades na definição da variável para as componentes u e v devem ser 33 e 34 (o padrão GRIB)respectivamente, i.e.,

u 15 33 componente u do vento em 15 níveis de pressãov 15 34 componente v do vento em 15 níveis de pressão

2) a rotação do vento é tratada para dados preprojetados em polar estéreo (N e S), mas não paraLambert Conformal, como a Marinha roda os ventos relativos a Terra. Esta será adicionada maistarde......

3) as projeções eta.u e ops são ainda experimentais...

Exibição de Projeções do GrADSAgora que foi compreendido os dados em grades do GrADS, é tempo para discutir a exibição deprojeções. Os gráficos no GrADS são calculados relativamente ao espaço i,j dos dados em gradeinternos do GrADS transformado para a coordenada do dispositivo de exibição (i.e., a tela) e então

Page 129: Manual Grads

129

exibidos. Que é, o i,j do elemento gráfico é convertido ao lat/lon e então ao x,y na tela via umaprojeção de mapa.

O GrADS atualmente suporta quatro projeções de exibição:

• lat/lon (ou esférica);• N polar estéreo (set mproj nps);• S polar estéreo (set mproj sps);• a projeção do Robinson (set lon -180 180, set lat -90 90, set mproj robinson).

Como pode ser visto, o i,j-para-lon/lat-para-tela x,y para exibição de lon/lat é muito simples e éconsideravelmente mais complicado para as projeção polar estéreo. N e S

Em princípio, a projeção de exibição Lambert Conformal será implementado. Isto somente tomatrabalho e uma simples interface do usuário para montar aquela projeção de exibição. Realmente, ainterface do usuário (i.e., "conjunto" chamadas) é o problema mais difícil...

Resumo e PlanosO GrADS trata projeções de mapa de dois modos diferentes. O primeiro é o dado preprojetado ondeos campos já estão em uma projeção (e.g., Lambert Conformal). É sinceramente direito paraimplementar outras projeções de dados preprojetados e será totalmente implementando a grade doeta do NMC ambos balanceado e não balanceado, "finas" grades gaussianas e a projeção oblíquapolar estéreo do RAMS do CSU. O segundo está em como gráficos i,j (calculados no espaço de"grade") são exibidos sobre um mapa de fundo. Atualmente, umas poucas e básicas projeções(lon/lat, polar estéreo e robinson) são suportadas, mas talvez o grupo de desenvolvimento irá manejareste problema.

Page 130: Manual Grads

130

Apêndices

Page 131: Manual Grads

131

Apêndice A: Scripts Suplementares

Este apêndice abrange documentação (onde está disponível) e nomes de scripts disponíveispara suplementar as utilidades do GrADS.

1) Correlação entre duas grades horizontais (corr.gs)

Autor: Mike Fiorino

2) Script de Tabela de Cores no GrADS (cmap.gs)

Autor: Mike Fiorino

Pré requisitosAssume-se que o usuário saiba alguma coisa sobre scripts do GrADS e esperançosamente tenhaescrito alguns. No texto abaixo, os conjuntos de caracteres entre ‘ ‘ são comandos do GrADS e osconjunto de caracteres entre " " são comandos do UNIX ou nomes de arquivo.

Usando Cores no GrADSVamos primeiro tratar do uso de cores. O GrADS tem 16 cores, pelo padrão, numeradas de 0 a 15 etem a capacidade de estender o número de cores usando

'set rgb ## R G B' onde

## é o número de corR é o valor Vermelho (0-255)G é o valor Verde da cor (0-255)B é o valor Azul da cor (0-255)

Assim, para criar um mapa de cores entre os número de cores 21-24, por exemplo,

'set rgb 20 0 155 155''set rgb 21 155 0 155''set rgb 22 0 0 155''set rgb 23 155 155 155''set rgb 24 155 0 0'

estas cores serão acessadas da mesmo forma como são acessadas as cores de 0-15 embutidas. Porexemplo,

'set contorno do gxout''set ccolor 23''d slp'

contornará o campo de slp usando a cor 23

Se atribuir a seqüência "arco-íris" para suas novas cores,

'set rbcols 21 22 23 24''d slp'

contornará slp com um limite de cores de 21-24

Page 132: Manual Grads

132

Talvez a mais usada aplicação de cores definidas pelo usuário está nos gráficos de cores preenchidas.Por exemplo,

'set gxout shaded''set clevs 1000 1008 1016 1024 ''set ccols 0 21 22 23 24'

pintará áreas < 1000 no slp em preto (nenhuma cor), áreas onde slp é 1000 - 1008 em 21, ... , 1016 -1024 em 23 e todos valores > que 1024 em 24.

Para grades com índice ou dados paramétricos (i.e., não contínuo), o comando do fgrid é muito útil,

'set gxout fgrid''set fgvals 1000 22'‘d slp'

preencherá caixa das grades onde slp=1000 com a cor 22. Você pode estender este pelo,

'set fgvals 1000 22 1008 23 1016 24'

para colorir mais caixas de grade,

Uma alternativa para cor de contorno preenchida é a cor de caixa preenchida usando,

'set gxout grfill''d slp'

o qual a cor preenche as caixas da grade usando o mesmo esquema de coloração como,

'set gxout shaded'

e você pode controlar o esquema de coloração do mesmo modo. O único problema com o

'set rgb'

é que não se pode dizer que cor aparecerá na tela (ou na impressão) até testar este rodando o GrADS.Aqui é onde o script cmap.gs entra; este permitirá a criação ou modificação interativa de uma tabelade cor.

Usando cmap.gsForam criados os arquivos com a extensão .gct para distinguir as tabelas de cores do GrADS de outrosarquivos do GrADS (i.e., .gs = Scripts do GrADS) e na primeira invocação do cmap.gs, uma tabela decor chamada "grads.gct" é criada. Normalmente o arquivo grads.gct é renomeado para outro nome dearquivo (i.e., nmc.gct) e então está tabela poderá ser usada em scripts subsequentes.

Para criar uma tabela de cor. Primeiro o GrADS deve ser iniciado no modo de paisagem

"grads -l"

o tamanho da janela de gráficos pode ser modificado, e na janela terminal do GrADS deverá serdigitado,

'run cmap.gs'

A primeira coisa que o script dirá é,

"Enter the number of Colors:

Um número entre 1-100 deverá ser digitado, por exemplo,

'10'Então deverá ser visto na tela de gráficos ( explica o que é o que):

Page 133: Manual Grads

133

GrADS color table for : grads.gct --> nome do arquivo da tabela de cores(10 quadrados) --> quadrados com as cores para editar1 2 3 4 5 6 7 8 9 10 --> número dos quadrados1 --> número da cor sendo editada

--- --- ---

| | |

| | |

| | | --> controladores de R G B

| | |

| | |

| | |

|0 |0 |0 --> o valor de R G B

--- --- ---

|--------|

| Save & | --> para clicar com o mouse salvar e sair

| Quit |

|--------|

Para editar a cor #2, deve-se posicionar o cursor do mouse sobre a caixa número 2 e pressionar. Onúmero de cor mudará para 2 e estará pronto para editar. Deve-se pressionar somente à esquerda docontrolador para mudar o valor. A parte de baixo do controlador é de 0 e o topo é 255. Apenas toquecom cada controlador até gostar da cor e continue para outra color. Repita o "pressionar somente àesquerda do controlador" e quando for feito tudo, o botão save and quit deverá ser acionado. Estesalvará a tabela de cor para o arquivo "grads.gct". Este irá se parecer com algo como:

1 225 174 912 238 214 1293 163 233 04 0 0 885 0 201 06 0 213 1077 240 192 698 233 144 2279 221 192 10910 247 0 0

Para acessar essas cores no GrADS deve ser usado a função colortab fornecida no fim do doc. Aquiestá como o arquivo de tabela de cores "grads.gct" é acessado em um script do GrADS:

'rc=colortab(grads)'

rc é um código de retorno e igual ao número de cores no arquivo de tabela de cor "grads.gct", se oarquivo esteve lá e esteve legível. Note que o ".gct" no nome do arquivo está implícito. Ainda que osnúmeros são referenciados de 1-10 no cmap.gs, no GrADS as cores são numeradas de 21-30. Onúmero iniciado da tabela de cor é arbitrário; foi escolhido 21 para que as cores definidas pelo usuáriosejam separadas das cores 0-15 padrão do GrADS o qual não pode ser mudado.

Para usar as cores pode-se tentar algo como,

'set gxout shaded''set clevs 1000 1004 1008 1016'

Page 134: Manual Grads

134

'set ccols 0 21 22 23 24'

Suponha, por acaso, que não ficou muito bem a tabela de cor criada. Para editar esta, deve somente serreprisado o cmap.gs, mas deve ser usado o nome do arquivo como um parâmetro da linha de comandopara cmap.gs, i.e.,

"grads"'run cmap.gs. grads

A cor da tabela será lida e pode-se agora editar as cores e salvar estas. Entretanto, o cmap.gs vaiescrever sobre o arquivo, assim este arquivo devera ser copiado para outro para guardar o original.

Problemas e perguntasAs cores não saem direito em um PC rodando Xvision durante a edição, mas não quando rodando oGrADS. O problema está no servidor X porque quando foi desenhado a cor 20 na tela e então, 'setrgb 20' para uma cor diferente, isto muda na tela (a diferença entre a cor verdadeira e a pseudo no X).

3) Exibição de Fonte (font.gs)

Exibe um conjunto de fontes do GrADS. Todos os caracteres para a fonte correspondem ao argumentochamado são mostrados (padrão para set font 1). Por exemplo:

run font.gs 2 exibe o conjunto de fonte 2.

4) Plota uma barra de cores (cbar.gs)

Plota uma barra de cor chave próximo ao mapa quando gxout = shaded.

5) Empilha comandos e exibem em rubor (stack.gs)

Útil para GrADS em PC. Espera para exibir até que uma seqüência de comandos tenham sido entradae então executa estes seqüencialmente em rubor.

6) Desenha todos os símbolos do WX (wxsym.gs)

Exibe os símbolos de tempo disponíveis.

7) (draw.gs)

Autor: Mike Fiorino

8) (string.gs)

Autor: Mike Fiorino

9) (loop.gs)

Autor: Mike Fiorino

10) (bsamp.gs)

Page 135: Manual Grads

135

Autor: Mike Fiorino

11) Script de Barra de Cor Ampliada (cbarn.gs)

Autor: Mike Fiorino

Aqui está uma nova versão do script cbar.gs. Chama-se cbarn.gs e está consideravelmente maispoderosa que o original. Este permite escalonar e colocar a barra de cores em qualquer parte dapágina e está visualmente mais simpática.

12) Calculando o Desvio Padrão (sd.gs)

Autor: Anjuli S Bamzai

Este é um exemplo de script delineando o procedimento para ser usado para escrever uma scriptgerando desvios padronizados.

Recentemente foi escrito um script realmente longo que pegou uma série de dados em grade globalsemanal e calculou o std dev sazonal., dados mensais deveriam estar ao longo das mesmas linhas...calcule séries de clima e tempo de anomalias da série primeiro.

Vamos assumir calcular o std dev de slp para Jan. Aqui é usado a notação slpanom para a série detempo de anomalias de slp que será gerado primeiro. sd.gs dará a soma dos quadrados das anomaliasapós o do loop. nJan é o número de Janeiros que ocorreram na serie de tempo inteira. sdJan para ostd dev de slp para Jan.. é o resultado final

O truque básico é atribuir um do loop que vai acima da série inteira e usa comandos tal como no sd.gs,

13) Desenha uma Plotagem x, y (xyplot.gs)

Autor: Mike Fiorino

Page 136: Manual Grads

136

Apêndice B: Usando Dados GRIB no GrADS

GribscanO "gribscan" é uma rotina usada para extrair informação de grade de dados do arquivo GRIB e osrecursos:

• saída de grade em ASCII, flutuantes, e/ou grib;• informação de produto/grade;• automático "exame" para registros GRIB de modo que não é necessário saber o esquema

físico dos dados para encaminhar estes.

Opções de Arquivo:

i ifname = nome do arquivo grib de entradao ofname = nome do arquivo de saída SEM uma extensãoog = saída GRIBoa = saída ASCII (%8g em C)of = uma corrente de flutuante. Isto é dependente da máquina and = 64-bit em Crays &32-bit em qualquer outra

Se o -i não é invocado então o gribscan pede um nome de arquivo. Se -o é omitido então um padrãoofname de zy0x1w2.type é criado onde type =

asc - asciigrb - GRIBdat - uma corrente de flutuante ( formato do GrADS)

O pessoal do FNMOC "obterá" o nome zy0x1w2...

Opções de Processamento:hNNN

cabeçalho de arquivo fixo de NNN bytes. O padrão é procurar a primeira mensagem doGRIB automaticamente, mas se NNN é conhecido, é mais eficiente especificar este.

sNNN

número max de bytes entre mensagens GRIB no arquivo, o padrão é 500 e é assumido quedeseja-se ignorar lixo (i.e., coisa comum) entre dados.

SpNNN = parâmetro selecionado # NNN (i.e., -sp11 para temperatura)slNNN = nível selecionado # NNN (i.e., -sp500 para obter campos de 500 mb)stNNN = tal selecionado # NNN (i.e.., -st12 para obter o t=12 previsões)

A opção -s? pode ser enfileirada junto para sair um bem estreito conjunto de campos. Por exemplopara sair somente a componente em 500 mb de u no t=48 use:

sp33 -sl500 -st48

Page 137: Manual Grads

137

Nota Especial aos usuários do NMCO uma vez "padrão" cabeçalho de 81-bytes em um arquivo GRIB do NMC incluí o conjunto decaracteres GRIB

Infelizmente, o mesmo conjunto de caracteres é parte da seção indicadora GRIB por si mesmo!Assim, um exame automático para GRIB para demarcar o início dos dados falhará se o cabeçalho de81-bytes estiver presente!

Assim, é necessário saber que os arquivos de fluxo do avn têm o cabeçalho de 81 byte e rode istocomo, gribscan -h81

Quando em dúvida (ou falha) tente -h81 -v.

Opções de Exibição:q = saída rápida para extrair coisas que importam sobre o gribmap do GrADSq1 = uma linha de saída rápidad = modo delimitado comumv = modo prolixo aos diagnósticosbd = informação da seção de dados bináriogv = usa a tabela de variável GRIB do NMC para saída mnemônica, título e unidades para

tabela padrão do NMCgd = informação de saída para o sec defn da gradeS = silenciosa NENHUMA saída padrão

Alguns exemplos:Primeiro,

cd /cray3_com_eta/PROD/erl.940829

Então,

1) Um "rápido" exame para obter as informações importantes do GrADS sobre:

gribscan -q -eu eta.T12Z.PGrbF48 | grep 184 :184, F ,135,108,100,0,100,0,1e+09, T ,1994,8,29,12,0,1,48,0, G ,104, BDTG, 94082912

184 - campo # no arquivoF - dados do campo135 - param #108 - nível indicador100 - nível0 - l1 byte 1 do nível100 - l2 byte 2 do nível0 - indicador de limite de tempo1e+09 - fator de escala decimalT - dados do tempo seguinte1994 - ano8 - mês29 - dia12 - hora0 - min1 - unidade de tempo (hora) da previsão48 - t=48h previsão

Page 138: Manual Grads

138

G - param de grade seguinte104 - grade #104 do NMCBDTG - Base do grupo data-tempo- (yymmddhh) seguinte

2) Saída delimitada por paipe para analisar gramaticalmente coisas como o awk:

gribscan -d -eu eta.T12Z.PGrbF48 | grep 184 :PDS,184,104,135,108,100,0,100,1994,8,29,12,0,1,48,0,0,1e+09

mesmo como acima mas arranjado diferentemente

3) Uma listagem cheia:

gribscan -d -gv -bd -gd -eu eta.T12Z.PGrbF48 | grep 184 :PDS,184,104,135,108,100,0,100,1994,8,29,12,0,1,48,0,0,1e+09,mconv, Horizontal moisturedivergênce,[kg/kg/s],GDS,5,147,110,-139.475,90.755,0.354,-0.268,-105.000,33536.000,0,1,0,BDS,12, -646.844,16170,4825059,26366 onde

104 - id da gradeparam #135 - mconv, Horizontal moisture divergence,[kg/kg/s] (mostrado pela opção -gv)BDS - seção de dados binário646.844 - valor de ref16170 - # de pontos4825059 - byte inicial dos dados26366 - comprimento da mensagem grib

N.B. não usando o -d dá uma saída tipo coluna fixa ...

4) Saída de uns campos poucos selecionados no GRIB:

gribscan -og -sp135 -q -eu eta.T12Z.PGrbF48 -o /wd2/wd20/wd20mf/tmp/eta.135

Escreve toda a mensagem do GRIB contendo a 135 parâmetro para o arquivo/wd2/wd20/wd20mf/tmp/eta.135.grb. Um gribscan subsequente em eta.135.grb :

gribscan -q -eu eta.135.grb :1, F ,135,108,100,0,100,0,1e+09, T ,1994,8,29,12,0,1,48,0, G ,104, BDTG, 940829122, F ,135,108,21860,85,100,0,1e+09, T ,1994,8,29,12,0,1,48,0, G ,104, BDTG, 94082912

GribmapQuando um arquivo descritor de dados no GrADS é montado (i.e., o arquivo ".ctl"), está se definindo,externo para os dados por si mesmo, uma estrutura, -- como variáveis, como tempos em um arquivo(ou conjunto de arquivos com a opção template), a dimensão espacial ou "forma" das variáveis, etc. O formato do "GrADS" (flutuantes, ou 64-bit ou 32-bit IEEE dependendo da plataforma) é tãosimples que o relacionamento entre a estrutura de dados definida no arquivo .ctl é calculada earmazenada em memória quando o arquivo é aberto.

O que faz o GRIB tão doloroso é que não há relacionamento entre os dados GRIB e o maior contextoestrutural implicado pelo arquivo .ctl. Dai, a necessidade para um utilitário que "faça um mapa" entreos dados do GRIB e a descrição de dados do GrADS.

Como isto realmente acontece no gribmap é que cada campo no arquivo de dados GRIB é lido e estesparâmetros (variável, nível, tempo, etc.) são extraídos e comparados para TODAS as variáveis emquaisquer um dos níveis/tempos/UNIDADES no arquivo .ctl até que uma combinação(esperançosamente) seja encontrada.

Os novos recursos do gribmap permitem que restrições sejam colocadas nestes processos decombinação. Entretanto, a primeira melhora na versão 1.5.1 é que ela suporta ambos GRIB0 eGRIB1.... (versão 0 e versão 1).

Page 139: Manual Grads

139

Segundo o código agora exames automáticos para conjunto de caracteres "GRIB" ao invés de ter quese preocupar sobre cabeçalhos e o que não (i.e., "lixo" entre o começo e o término da mensagemGRIB). Que é a menos que você esteja no NMC e ponha (duh) GRIB no cabeçalho. O limite padrãodo exame é 1000 o qual pode ser mudado via a opção do comando de linha:

sxxxxx onde xxxxx é o número max de bytes para pesquisar entre os registros para GRIB.

Para desviar os bytes antes de começar o processo de exame:

hxxx onde xxx é o número de bytes, ou para o nmc:hnmc

Outros recursos invocados na linha de comando incluem:

v saída mais simpática para verificar o que se está tentando mapear...t0 uma combinação pode somente ocorrer se o tempo base no registro do grib é o mesmo

como o tempo inicial no arquivo .ctl. Este é usado para retirar uma seqüência de previsão(0, 12, 24, ... ,72 h) começando em um tempo especifico (i.e., 95010300)

fxxx onde xxx é o tempo de previsão em horas. Neste caso, uma combinação ocorresomente se o tempo de previsão no registro grib combina xxx (horas). Isto é usado paraisolar uma seqüência de previsões, i.e., todas as 120h de previsões verificadas durante operíodo de 00z1jan1995 até 12Z2jan1995 das rodadas por ensemble do MRF.

0 ignora o tempo de previsão na realização das comparações... Este é útil nas reanálises ondealgum dos campos diagnósticos são "válidos" em ligeiramente diferente tempo de previsãoainda que eles dividam o mesmo tempo inicial.

Aqui esta um simpático truque. Para verificar o que é mapeado durante o gribmap:

gribmap -v -t0 ..... | grep MATCH todos registros combinados serão exibidos...

Outro recurso foi adicionado para mapear pelo "indicator-limite-tempo" do GRIB como especificadono arquivo .ctl. Isto foi inserido para tratar de dados de reanálises do NMC onde o indicator-limite-tempo distinguem entre variâncias de medias mensais e medias

Aqui um exemplo de reanálises (flux.ctl):

dset /d2/reanal/nmc/output/grib.v02/month.flux.%y2%m2.grbundef 1.0e20dtype gribíndice ^flux.gmptítulo NMC-NCAR fluxo de reanálises/quantidades de grade gaussianaoptions yrev templatexdef 192 linear 0 1.875ydef 94 níveis -88.54195 -86.65317 -84.75323 -82.85077 -80.9473679.04349 -77.13935 -75.23505 -73.33066 -71.4261969.52167 -67.61710 -65.71251 -63.80790 -61.9032659.99861 -58.09395 -56.18928 -54.28460 -52.3799150.47522 -48.57052 -46.66582 -44.76111 -42.8564040.95169 -39.04697 -37.14225 -35.23753 -33.3328131.42809 -29.52336 -27.61863 -25.71391 -23.8091721.90444 -19.99971 -18.09498 -16.19025 -14.2855112.38078 -10.47604 -8.571312 -6.666580 -4.761841

Page 140: Manual Grads

140

2.857109 -0.9523697 0.9523621 2.857101 4.7618336.666565 8.571304 10.47604 12.38077 14.2855116.19024 18.09497 19.99970 21.90443 23.8091725.71389 27.61862 29.52335 31.42808 33.3328035.23752 37.14224 39.04697 40.95168 42.8563844.76111 46.66580 48.57051 50.47520 52.3799054.28459 56.18927 58.09395 59.99860 61.9032663.80789 65.71249 67.61710 69.52165 71.4261873.33064 75.23505 77.13934 79.04347 80.9473682.85077 84.75322 86.65315 88.54195zdef 1 linear 1 1tdef 84 linear jan1985 1movars 54

ps 0 1, 1, 0,113 Pressão [Pa]tg 0 11, 1, 0,113 Temperatura da superfície [K]tas 0 11,105, 2,113 2m Temperatura [K]tg300 0 11,111,300,113 Temperatura 300 cm abaixo da superfície[K]tg10 0 11,112, 10,113 Temperatura 10 cm abaixo da superfície[K]tg200 0 11,112,2760,113 Temperatura 10-200 cm abaixo da superfície [K]tcll 0 11,213, 0,113 Temperatura de Nuvem Baixa [K]tclm 0 11,223, 0,113 Temperatura de Nuvem Media [K]tclh 0 11,233, 0,113 Temperatura de Nuvem Alta [K]tasmax 0 15,105, 2,113 Temperatura Máxima [K]tasmin 0 16,105, 2,113 Temperatura Mínima [K]uas 0 33,105, 10,113 u vento 10m [m/s]vas 0 34,105, 10,113 v vento 10m [m/s]huss 0 51,105, 2,113 Humidade especifica 2m [kg/kg]pr 0 59, 1, 0,113 Valor de Precipitação [kg/m**2/s]snm 0 65, 1, 0,113 Equiv de agua accum. neve profundidade [kg/m**2]clt 0 71,200, 0,113 Cobertura de nuvem Total [porcentagem]cll 0 71,214, 0,113 Cobertura de nuvem Total [porcentagem]clm 0 71,224, 0,113 Coberturade nuvem Total [porcentagem]clh 0 71,234, 0,113 Cobertura de nuvem Total [porcentagem]albds 0 84, 1, 0,113 Albedo [porcentagem]mrro 0 90, 1, 0,113 Runoff [kg/m**2]sic 0 91, 1, 0,113 Concentração de Gelo (gelo=1; nenhum gelo=0) [1/0]rss 0 111, 1, 0,113 Rede radiação de onda curta (superficie) [W/m**2]rls 0 112, 1, 0,113 Rede radiação de onda longa (superficie) [W/m**2]hfls 0 121, 1, 0,113 Fluxo de calor Latente [W/m**2]hfss 0 122, 1, 0,113 Fluxo de calor Sensivel [W/m**2]tauu 0 124, 1, 0,113 Componente Zonal de fluxo de momento [N/m**2]tauv 0 125, 1, 0,113 Comp. Meridional de fluxo de momento [N/m**2]mrso10 0 144,112, 10,113 Cont. Volum de Humid. de solo a 10 cm abaixo[fração]mrs200 0 144,112,2760,113 Cont Vol. de Humid de solo 10-200cm abaixo [fração]pevpr 0 145, 1, 0,113 Valor de evaporação Potencial [w/m**/]gwdu 0 147, 1, 0,113 Estresse de Ondas de Gravidade Zonal [N/m**2]gwdv 0 148, 1, 0,113 Estresse de Ondas de Gravidade Meridional [N/m**2]gflux 0 155, 1, 0,113 Terra esquenta fluxo [W/m**2]rsuscs 0 160, 1, 0,113 Ceú Claro fluxo solar para cima[W/m**2]rsutcs 0 160, 8, 0,113 Ceú Claro fluxo solar para cima[W/m**2]

Page 141: Manual Grads

141

rsdtcs 0 161, 1, 0,113 Ceú Claro fluxo solar para baixo[W/m**2]rlutcs 0 162, 8, 0,113 Ceu Claro fluxo de onda longo para cima [W/m**2]rldscs 0 163, 1, 0,113 Ceú Claro fluxo de onda longo para baixo [W/m**2]crfss 0 164, 1, 0,113 Nuvem forçando rede fluxo solar na sfc [W/m**2]crfsa 0 164,200, 0,113 Nuvem forçando rede fluxo solar na atmos [W/m**2]crfst 0 164, 8, 0,113 Nuvem forçando rede fluxo solar no topo [W/m**2]crfls 0 165, 1, 0,113 Nuvem forçando rede fluxo de onda longa na sfc [W/m**2]crfla 0 165,200, 0,113 Nuv. forçando rede fluxo de onda longo na atm [W/m**2]crflt 0 165, 8, 0,113 Nuvem forçando rede fluxo de onda longo em topo [W/m**2]rsds 0 204, 1, 0,113 Fluxo de radiação solar para baixo na sfc [W/m**2]rsdt 0 204, 8, 0,113 Fluxo de radiação solar para baixo no topo [W/m**2]rlds 0 205, 1, 0,113 Fluxo de radiação de onda longo para baixo na sfc[W/m**2]rsus 0 211, 1, 0,113 Fluxo de radiação solar para cima na sfc [W/m**2]rsut 0 211, 8, 0,113 Fluxo de radiação solar para cima no topo [W/m**2]rlus 0 212, 1, 0,113 Fluxo de radiação de onda longa para cima na sfc [W/m**2]rlut 0 212, 8, 0,113 Fluxo de radiação de onda longo para cima no topo [W/m**2]prc 0 214, 1, 0,113 Valor de precipitação Convectiva [kg/m**2/s]

endvars

O parâmetro de quatro unidades na descrição da variável é 113 para uma média, para variância:

.uas 0 33,105, 10,118 10m vento comp u [m/s]vas 0 34,105, 10,118 10m vento comp v [m/s]huss 0 51,105, 2,118 2m Umidade Especifica [kg/kg]

endvars

Se o indicador do limite de tempo não foi entendido, então consulte o Evangelho do GRIB segundoJohn Stackpole (que e; Nota Oficial do NMC 388).

Page 142: Manual Grads

142

Apêndice C: Usando GrADS no PC

Conjunto de dados de outras plataformasO conjunto de dados binários em grade pode ser movido de qualquer máquina de UNIX para o PC eexibido usando o GrADS. O PC tem uma diferente ordem de byte que a maior parte dos ambientesUNIX, tais como Sun, IBM, Íris, e CRAY IEEE. O PC tem a mesma ordem de bytes como estaçõesDEC. Simplesmente mova o conjunto de dados em formato de grade do GrADS em modo binário,então se necessário coloque a palavra-chave de BYTESWAPPED na linha de OPTIONS dodescritor do arquivo de dados. Veja o Capítulo 4 para mais informações.

Imprimindo em impressoras sem postscriptSe não tem uma impressora de postscript disponível, deve-se obter o ghostscript, um utilitário paraimprimir arquivos postscript em impressoras sem postscript. Este utilitário está disponível de váriasfontes de ftp anonymous e trabalha extremamente bem.

Incorporando gravuras do GrADS dentro de software de PCGhostscript vem com um utilitário, ps2epsi, que converterá arquivos postscript dentro de postscriptencapsulado (.eps) conveniente para importar dentro de software gráficos. Infelizmente, muitos dosfiltros importadores gráficos esperam arquivos .eps compatíveis com o Adobe Ilustrador e aimportação falha. Há duas soluções para este problema. Pode-se converter a gravura para um bitmapusando Ghostscript ou qualquer utilitário de captura de tela. Se for necessário editar a gravura, ouremodela-la, será necessário um programa igual ao CorelDraw 5 o qual importa arquivos postscriptdiretamente (não será necessário usar o utilitário do Ghostscript). Este trabalha bem para gravuras semsombreado, por exemplo, desenhos de contorno, e para saída sombreadas em impressora colorida.Saída de gravuras sombreadas em uma Laserjet usando escala de cinza, entretanto, não tem a mesmaqualidade como quando saída para uma impressora de postscript.

A versão do beta 1.5x do GrADS vem com um muito útil utilitário do MS WINDOWS, o gv.exe. Este importara meta arquivos do GrADS diretamente e esses podem então ser passados dentro deoutras aplicações do Windows. Embora em um estágio próximo de desenvolvimento, o gv ofereceráuma melhor solução até agora para imprimir e editar suas gravuras do GrADS em uma impressoralaser monocromática.

Page 143: Manual Grads

143

Apêndice D: Facilidades de Rede Relacionados ao GrADS

Há um número de sites de rede oferecendo várias instalações de apoio aos usuários do GrADS. Estasestão listadas sem nenhuma ordem particular de importância, mas uma assinatura ao listserver éaltamente recomendado como um primeiro passo para obter informação de minuto, tão bem comoajudar com problemas particulares/técnicos. Omissões são involuntárias. Comunique sobre quaisqueroutros sites úteis por email ([email protected]).

Tom Holt, Setembro 1995.

Sites de ftpOs seguintes sites de ftp contêm atualizações, documentação, etc. nas várias versões do GrADS paratodas as plataformas disponíveis.

grads.iges.orgEste é o site de ftp do GrADS contendo documentação oficial e executáveis de Brian Doty, o autor doGrADS. Em conexão, você está imediatamente no principal diretório do GrADS.

sprite.llnl.govEste site contem documentação e executáveis das versões do GrADS em desenvolvimento do GrADSproduzido pelo time de desenvolvimento do GrADS e Mike Fiorino. Estas estão provavelmentemudando antes de serem incorporadas dentro da mais recente "oficial" versão do GrADS. Mesmoassim, há muita informação útil aqui e as versões do GrADS são muitas usáveis. Esta documentação ébaseada em uma versão do GrADS obtida deste site.

Em conexão, faca cd pub/fiorino/grads para obter as coisas do GrADS.

Listserver

[email protected] listserver automaticamente despacha mensagens para todos os usuários assinados. Tipicamente asmensagens contêm uma solicitação para ajuda e, esperançosamente, soluções para a solicitação dosusuários os quais tem resolvido o problema. Referência é freqüentemente feita para atualizações doGrADS e como obtê-las.

Usando email, envie uma mensagem ao endereço acima contendo somente as palavras helpsubscriber para detalhes sobre como registrar-se como listserver.

Uma vez assinado, leia a importante informação com respeito a enviar as mensagens .etc. Muitocuidadosamente e armazenar este em um lugar seguro em seu computador.

Sites na WWWHá um número de sites da Web Globais oferecendo informação do GrADS.

Os seguintes dois sites estão no servidor web do COLA (Centro para Estudos Oceâno-Terra-Atmosfera).

Page 144: Manual Grads

144

http://grads.iges.org/grads/head.html

É a home page do GrADS.

http://grads.iges.org/home.html

A home page do COLA, está contêm mapas de tempo e clima gerados pelo GrADS. O COLAesta também tentando fornecer links para outros relacionados servidores do GrADS.

http://dao.gsfc.nasa.gov/grads_listserv/INDEX.html

Mantém um arquivo dos emails mandados ao listserver do GrADS.