************************************************************************
*   Script do GrADS inicia.gs                                          *
*                                                                      *
*   Marcos Longo, Lab. MASTER/DCA/IAG/USP                              *
*   São Paulo, 3 de dezembro de 2002                                   *
*                                                                      *
*    Este script personaliza algumas opções de visualização do GrADS.  *
* Além disto, contém várias funções prontas, que precisam ser copiadas *
* para o gs em que se está trabalhando (ainda estou pensando em como   *
* incluí-las automaticamente).                                         *
************************************************************************


************************************************************************
* Seqüência de comandos executados automaticamente, com o run inicia.gs*
************************************************************************
'set display color white'
'set mpdset mres'
'set map 1 1 3'
'run paleta.gs'
'set gxout shaded'
'set xlopts 1 5 0.16'
'set ylopts 1 5 0.16'
'set clopts -1 5 0.13'
'set annot 1 5'
'set arrowhead 0.125'
'clear'
say 'Pronto!'

************************************************************************
* Função que diagrama um mapa de vetores de forma personalizada, em que*
* a escala do vetor fica numa posição que não interfere no uso do      *
* cbarn.gs, e inclusive acrescenta a unidade que se trabalha           *
* vetx, vety: componentes zonal e meridional do vetor                  *
* pula: 100/pula % das setas serão diagramadas                         *
* flecha: se 'vector', diagramará flechas, se 'barb' barbelas.         *
* tamtip: tamanho da flecha (se flecha='vector' apenas)                *
* magtip: magnitude da flecha (se flecha='vector', apenas)             *
* ponta: tamanho da ponta da seta (se flecha='vector', apenas)         *
* colore: colore as flechas com a magnitude? ('sim','NÃO')             *
* quecor: que cor desenha os vetores (se colore!='sim', apenas)        *
* escala: desenha a escala? ('sim', 'NÃO', apenas se flecha='vector')  *
* unidade: unidade das flechas (apenas se flecha='vector')             *
************************************************************************
function vetores(vetx,vety,pula,flecha,tamtip,magtip,ponta,colore,quecor,escala,unidade)
  if (flecha = 'vector')
    'set arrscl 'tamtip' 'magtip
    'set arrowhead 'ponta
    'set gxout 'flecha
    'set arrlab off'
  endif
  if (colore = 'sim')
    'display skip('vetx','pula');'vety';mag('vetx','vety')'
   else
    'set ccolor 'quecor
    'display skip('vetx','pula');'vety
  endif
  if (escala = 'sim' & flecha = 'vector')
   'query gxinfo'
   lixo=sublin(result,3)
   xmin=subwrd(lixo,4)
   lixo=sublin(result,4)
   ymin=subwrd(lixo,4)
   xmin=xmin*0.2
   xmax=xmin+tamtip
   xmed=0.5*(xmin+xmax)
   ymed=ymin*0.85
   'set line 1 1 5'
   'draw line 'xmin' 'ymed' 'xmax' 'ymed
   'draw line 'xmax-0.1' 'ymed-0.1' 'xmax' 'ymed
   'draw line 'xmax-0.1' 'ymed+0.1' 'xmax' 'ymed
   'set strsiz 0.15'
   'set string 1 c 5 0'
   'draw string 'xmed' 'ymed-0.2' 'magtip''unidade
  endif
return



************************************************************************
*   Função que arredonda um certo número para um determinado número de *
* casas (se casas=0, então arredonda para um número inteiro            *
************************************************************************
function arred(numero,casas)
  pot10=1
  i=1
  while (i <= casas)
     pot10=pot10*10
     i=i+1
  endwhile
  numero=numero*pot10
*Tiro o inteiro do número novo
  i=0
  ponto=0
  while (ponto != '.' & ponto !='' & ponto !=' ')
     i=i+1
     ponto = substr(numero,i,1)
  endwhile
  if (ponto = '.')
     aponto=i-1
     dponto=i+1
     arredonda=substr(numero,dponto,1)
     if (arredonda < 5);arredonda=0;endif
     if (arredonda != 0);arredonda=1;endif
     numinteiro=substr(numero,1,aponto)
     numinteiro=numinteiro+arredonda
   else
     numinteiro=numero
  endif
  numinteiro=numinteiro/pot10
return numinteiro



************************************************************************
*   Função que traduz o nome do mês do inglês para o português.        *
************************************************************************
function mesport(month)
 if (month = 'feb');mes='fev';else
 if (month = 'apr');mes='abr';else
 if (month = 'may');mes='mai';else
 if (month = 'aug');mes='ago';else
 if (month = 'sep');mes='set';else
 if (month = 'oct');mes='out';else
 if (month = 'dec');mes='dez';else
 mes=month
 endif;endif;endif;endif;endif;endif;endif
return mes

*****************************************************************************
* Argumentos:                                                               *
* 1- lon      : longitude em graus                                          *
* 2- lat      : latitude em graus                                           *
* 3- cor      : cor da marca (tabela GrADS)                                 *
* 4- esp      : espessura da marca                                          *
* 5- marca    : tipo de marca (tabela GrADS), se -1, círculos concêntricos  *
* 6- tamarca  : tamanho da marca                                            *
* 7- com      : rótulo para a marca                                         *
* 8- tamcom   : tamanho do rótulo da marca                                  *
* 9- lado     : posicionamento do rótulo (à direita -d - ou à esquerda - e) *
*10- alt      : posicionamento do rótulo (acima - c - ou abaixo - b)        *
*****************************************************************************
function marcando(lon,lat,cor,esp,marca,tamarca,com,tamcom,lado,alt)
   'query w2xy 'lon' 'lat
   x=subwrd(result,3)
   y=subwrd(result,6)
   'set line 'cor' 1 'esp
   'set strsiz 'tamcom
   if (marca != -1)
       'draw mark 'marca' 'x' 'y' 'tamarca
     else
       'draw mark 2 'x' 'y' 'tamarca
       'draw mark 3 'x' 'y' '0.5*tamarca
   endif
   if (lado = 'e')
       'set string 'cor' r 'esp' 0'
       x0=x-0.5*tamarca
     else
       'set string 'cor' l 'esp' 0'
       x0=x+0.5*tamarca
   endif
   if (alt = 'c')
       y0=y+0.75*tamarca
     else
       y0=y-0.75*tamarca
   endif
   'draw string 'x0' 'y0' 'com
*   'draw rec 'x-0.2' 'y-0.2' 'x+0.2' 'y+0.2
return
