;#================PROGRAMAM SULFUR DIOXIDE======================================================================================= ;ESTE PROGRAMA CALCULA COLUNA TOTAL DE DIOXIDO DE ENXOFRE PARA A AMERICA DO SUL ;CALCULANDO O LIMIAR DE 5 UD (CINCO UNIDADES DOBSON) - FIOLETOV et al. (2012) ;VERSAO 1.0 ;MATEUS DIAS NUNES - 2013 ;********************************************************************************************************************************** ;# Calcula a coluna total de dioxido de enxofre para os niveis PBL para todo periodo de 2.005 - 2.012. ;# Utilizou-se um incremento de 1.0° de lat/lon em cada localidade: ;# BUENOS AIRES {.-35.60:-33.60},{-59.45:-57.45} ;# SAO PAULO {-24.30:-22.30},{-44.35:-42.35} ;# PORTO ALEGRE {.-31.01:-29.01},{-52.200:-20.200} ;# MONTEVIDEO {.-35.20:-33.20},{-57.200:-55.200} ;# SANTIAGO {-34.45:-32.45},{-71.60:-69.60} ;# A principio o calculo se dá sem loop anual, tendo que realizar a troca manual para cada ano e localidade. ;#================================================================================================================================ ;#Carregando as bibliotecas load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ;#================================================================================================================================ ;#inicializando o programa ;#================================================================================================================================ begin fils = systemfunc("ls OMI-Aura_L3-OMSO2e_2012*.he5") ;carregando todos os arquivos no ano de.. f = addfiles(fils,"r") ;add os arquivos fils em modo leitura ListSetType (f,"join") ;listando os aquivos da variavel f usando a função join n_files = dimsizes(fils) ;tamanho da dimensão fils ;print(n_files) ;caso necessite, imprimir n_files so2PBL = f[:]->ColumnAmountSO2_PBL_OMI_Total_Column_Amount_SO2 ;carregando a variavel contida em f dsizes_so2PBL = dimsizes(so2PBL) n_files = dsizes_so2PBL(0) ;tamanho da dimensão ;print(n_files) ;caso necessite, imprimir n_files ;#================================================================================================================================ ;# Definindo coordenas de lat/lon ;#================================================================================================================================ so2PBL!1= "lat" so2PBL!2= "lon" lat = f[1]->YDim_OMI_Total_Column_Amount_SO2 lat@units="degrees_north" lon = f[1]->XDim_OMI_Total_Column_Amount_SO2 ;coordenadas de # BUENOS AIRES 34.36S and 58.27W lon@units="degrees_east" so2PBL&lat = lat so2PBL&lon = lon ;#================================================================================================================================ ;# loop dos dados para degrees ;#=============================================================================================================================== ;printVarSummary(so2PBL) ;caso necessite ver a variavel so2PBL ;print(sizeof(so2PBL)) so2PBL2 = where (so2PBL.le.5,so2PBL,so2PBL@_FillValue) ; definindo o limiar de 5UD utilizando a função where, ;criando a nova variavel so2PBL2, considerando valores acima de 5UD ; como valres inexistentes _FillVallue copy_VarCoords (so2PBL, so2PBL2) d = fspan(0,n_files-1,366) ;matriz de números de ponto flutuante uniformemente espaçados. do n=0,n_files-1 ;#(incremento de 1.0 degree) d(n)=(max(so2PBL2(n,{-35.10:-33.10},{-59.95:-57.95}))) end do y1 = d(:) data = new((/1,dimsizes(y1)/),float) data(0,:) = y1(:) ;#================================================================================================================================ ;# atributos gráficos ;#================================================================================================================================ wks = gsn_open_wks ("png","Buenos_Aires_PBL_L2G_2012_resolution_one_degrees") ;criando area grafica com extensão png res = True res@tiMainString = "" res@gsnLeftString = "" res@gsnRightString ="" res@tiXAxisString = "2012" res@tiYAxisString = "Coluna Total de Dio~H-13V2F35~B~FV-2H3~xido de Enxofre na CLP (UD)" res@tiXAxisFontHeightF = 0.02 res@tiYAxisFontHeightF = 0.02 res@trXMinF = 0. ;limite inicial dos dias res@trXMaxF = 366. ;limite final dos dias res@trYMinF = 0. ;valor minimo da coluna so2 res@trYMaxF = 5. ;valor máximo da coluna de so2 res@tmYROn = False ; Turn off right tickmarks res@tmXTOn = False ; Turn off top tickmarks res@tmXBOn = True ; Turn off base tickmarks res@tmYLOn = True ; Turn off left tickmarks res@tmXBLabelFontHeightF = 0.008 ;altura da latitude res@tmYLLabelFontHeightF = 0.008 ;altura da longitude res@tmXBMode = "Explicit" res@tmXBValues = (/0,32,61,92,122,153,183,214,245,275,306,335/) ;dia juliano res@tmXBLabels = (/"JAN","FEV","MAR","ABR","MAI","JUN","JUL","AGO","SET","OUT","NOV","DEZ"/) ;iniciais dos meses no gráfico ;#climatologia do OCTÊNIO ;res@tmXBValues = (/0,365,730,1095,1461,1826,2186,2551/) ;dia juliano entre os anos ;res@tmXBLabels = (/"2005","2006","2007","2008","2009","2010","2012","2012"/) ;iniciais dos anos no gráfico res@tmXBLabelAngleF = 45. ;ângulo da legenda res@gsnMaximize=True ;make plot large res@xyLineColors = (/"black"/) ; cor da linha plot = gsn_csm_y (wks,data,res) ;#====================ESCREVENDO DADOS TEXTO================================= data = new((/1,dimsizes(y1)/),float) do n=0,n_files-1 data(0,n)=(max(so2PBL2(n,{-35.10:-33.10},{-59.95:-57.95}))) ;print(data) asciiwrite ("maximo_buenosaires_PBL2012.txt", data) end do end