;**************************************************************** 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" begin ;**************************************************************** ; PDO indices ************************************************** x = asciiread("/home/linx/work/indices/PDO_Mantua_Obs_1900-2005_ANN.MAM.dat",(/106,2/),"float") pdo1 = x(:,0) ; ANN PDO from Mantua pdo1!0 = "time" ntime = dimsizes(pdo1) pdo1&time = fspan(1900,2005,ntime) pdo1@units = "standard value" pdo1@long_name = "PDO.ANN Obs" ; for leftstring pdo1@reference = "(Mantua et.al,1997)" pdo1@time_domain = "1900-2005" ; for rightstring pdo1@output_name = "PDO.ANN.Obs_Mantua" ; for output file's name ( no " ") ;pdo1@description = "Updated standardized values for the PDO index, derived as the ; leading PC of monthly SST anomalies in the North Pacific Ocean, ; poleward of 20N. The monthly mean global average SST anomalies ; are removed to separate this pattern of variability from any ; global warming signal that may be present in the data." pdo2 = x(:,1) pdo2!0 = "time" pdo2&time = ispan(1900,2005,1)*1. pdo2@units = "standard value" pdo2@long_name = "PDO.MAM Obs" pdo2@reference = "(Mantua et.al,1997)" pdo2@output_name = "PDO.MAM.Obs_Mantua" pdo2@time_domain = "1900-2005" delete(x) pdo3 = asciiread("/home/linx/work/indices/PDO.ANN.1790-1979.Darrigo2001.dat",-1,"float") pdo3!0 = "time" pdo3&time = ispan(1790,1979,1)*1. pdo3@units = "" pdo3@long_name = "PDO.ANN Recon" pdo3@reference = "(Darrigo et.al,2001)" pdo3@output_name = "PDO.ANN.Recon_Darrigo" pdo3@time_domain = "1790-1979" pdo4 = asciiread("/home/linx/work/indices/PDO.MAM.1565-1988.Darrigo2006.dat",-1,"float") pdo4!0 = "time" pdo4&time = ispan(1565,1988,1)*1. pdo4@long_name = "PDO.MAM Recon" pdo4@reference = "(Darrigo et.al,2006)" pdo4@output_name = "PDO.MAM.Recon_Darrigo" pdo4@time_domain = "1565-1988" pdo5 = asciiread("/home/linx/work/indices/PDO.ANN.993-1996.Mcdonald2005.dat",-1,"float") ; ANN PDO from Mcdonald pdo5!0 = "time" pdo5&time = ispan(993,1996,1)*1. pdo5@long_name = "PDO.ANN Recon" pdo5@reference = "(Mcdonald et.al,2005)" pdo5@output_name = "PDO.ANN.Recon_Mcdonald" pdo5@time_domain = "993-1996" pdo6 = asciiread("/home/linx/work/indices/PDO.ANN.1470-1998.Shen2006.dat",-1,"float") ; ANN PDO from Shen pdo6!0 = "time" pdo6&time = ispan(1470,1998,1)*1. pdo6@long_name = "PDO.ANN Recon" pdo6@reference = "(Shen et.al,2006)" pdo6@output_name = "PDO.ANN.recon_Shen" pdo6@time_domain = "1470-1998" ;*** ENSO ************************************************************************************************888 nino31 = asciiread("/home/linx/work/indices/Nino3.Obs.1856-1991.Kalpan.dat",-1,"float") nino31!0 = "time" nino31&time = ispan(1856,1991,1)*1. nino31@units = "degree_Celsius" nino31@long_name = "Nino3.ANN Obs" ; I calculate ANN from monthly nino3 sst (cdf file) nino31@reference = "(Kalpan et.al,1998)" nino31@output_name = "Nino3.ANN.recon_Kalpan" nino31@time_domain = "1856-1991" nino32 = asciiread("/home/linx/work/indices/ENSO/sst_nino3.dat",-1,"float") nino32!0 = "time" ntime = dimsizes(nino32) nino32&time = fspan(1871.25,1996,ntime) nino32@units = "degree_Celsius" nino32@long_name = "Nino3.Seasonal Obs" nino32@reference = "(GISST)" nino32@output_name = "Nino3.Seasonal_GISST" nino32@time_domain = "1871-1996" nino33 = asciiread("/home/linx/work/indices/ENSO/ENSO.Index_1501-2000.WangSW.dat",-1,"float") nino33!0 = "time" nino33&time = ispan(1501,2000,1)*1. nino33@units = "Grade" nino33@long_name = "ENSO.Grade" nino33@reference = "(Wang et.al,2006)" nino33@output_name = "ENSO.ANN_Wang" nino33@time_domain = "1501-2000" xx = asciiread("/home/linx/work/indices/ENSO/ninocold-recon_1650-1980_Mann2000.dat",(/331,2/),"float") nino34 = xx(:,1) nino34!0 = "time" nino34&time = ispan(1650,1980,1)*1. ;nino34@units = "Grade" nino34@long_name = "Nino3.Cold-Season" nino34@reference = "(Mann et.al,2000)" nino34@output_name = "Nino3.ColdSeason_Mann" nino34@time_domain = "1650-1980" delete(xx) nino35 = asciiread("/home/linx/work/indices/ENSO/nino3_recon.Cook2005.1408-1978.dat",(/571,2/),"float") nino35!0 = "time" nino35&time = ispan(1408,1978,1)*1. ; nino35@units = "Grade" nino35@long_name = "Nino3.DJF" nino35@reference = "(Cook et.al,2005)" nino35@output_name = "Nino3.DJF_Cook" nino35@time_domain = "1408-1978" ; ***** NHI and SHI **************************************************************************** xx = asciiread("/home/linx/work/indices/SHI.NPI/NPI.Instru.Hurrel_NDJFM_1900-2006.dat",(/11,11/),"float") yy = xx(:,1:10) z = ndtooned(yy) NH = z(0:106) NH!0 = "time" NH&time = ispan(1900,2006,1)*1. ; nino35@units = "Grade" NH@long_name = "NHI Obs" NH@reference = "(Trenberth et.al,1994)" NH@output_name = "NHI.NDJFM_Hurrel" NH@time_domain = "1900-2006" NH2 = asciiread("/home/linx/work/indices/SHI.NPI/NPI_1600-1983_Darrigo.dat",-1,"float") NH2!0 = "time" NH2&time = ispan(1600,1983,1)*1. ; nino35@units = "Grade" NH2@long_name = "NHI Recon" NH2@reference = "(Darrigo et.al,2005)" NH2@output_name = "NHI.Recon_Darrigo" NH2@time_domain = "1600-1983" SH = asciiread("/home/linx/work/indices/SHI.NPI/SHI.Instru_1872-2004_Darrigo.dat",-1,"float") SH!0 = "time" SH&time = ispan(1872,2004,1)*1. ; nino35@units = "Grade" SH@long_name = "SHI Obs" SH@reference = "(Zhang et.al)" SH@output_name = "SHI.Obs_Darrigo" SH@time_domain = "1872-2004" SH2 = asciiread("/home/linx/work/indices/SHI.NPI/SHI_1599-1980_Darrigo.dat",-1,"float") SH2!0 = "time" SH2&time = ispan(1599,1980,1)*1. ; nino35@units = "Grade" SH2@long_name = "SHI Recon" SH2@reference = "(Darrigo et.al,2006)" SH2@output_name = "SHI.Recon_Darrigo" SH2@time_domain = "1599-1980" ; ***** NAO ******************************************************************************************* nao1 = asciiread("/home/linx/work/indices/NAO_1825-1999_Instru.dat",-1,"float") ; NAO Obs ntime = dimsizes(nao1) timeo = fspan(1825,1999,ntime) nao1@long_name = "NAO Obs" nao1@reference = "(Jone et.al)" nao1@output_name = "NAO.Obs_Jones" nao1@time_domain = "1825-1999" delete(xx) delete(yy) xx = asciiread("/home/linx/work/indices/NAO/NAO.Hurrel_ANN_PCbased_1899-2005.dat",(/12,11/),"float") ; 12 rows, 13 column yy = xx(:,1:10) xnao = ndtooned(yy) time = ispan(1890,2009,1)*1. xnao!0 = "time" xnao&time = time nao2 = xnao({1899:2005}) nao2@long_name = "NAO ANN Obs" nao2@reference = "(Hurrel et.al)" nao2@output_name = "NAO.ANN.Obs_Hurrel" nao2@time_domain = "1825-1999" delete(xx) delete(yy) xx = asciiread("/home/linx/work/indices/NAO/NAO.Hurrel_DJFM_PCbased_1899-2006.dat",(/12,11/),"float") ; 12 rows, 13 column yy = xx(:,1:10) xano = ndtooned(yy) time = ispan(1890,2009,1)*1. xnao!0 = "time" xnao&time = time nao3 = xnao({1899:2005}) nao3@long_name = "NAO DJFM Obs" nao3@reference = "(Hurrel et.al)" nao3@output_name = "NAO.DJFM.Obs_Hurrel" nao3@time_domain = "1899-2005" delete(xx) delete(yy) x = asciiread("/home/linx/work/indices/NAO/NAO.Glueck2001_1429-1983.dat",(/555,2/),"float") nao4 = x(:,1) ntime = dimsizes(nao4) nao4!0 = "time" nao4&time = fspan(1429,1983,ntime) nao4@long_name = "NAO Recon" nao4@reference = "(Glueck et.al)" nao4@output_name = "NAO.recon_Glueck" nao4@time_domain = "1429-1983" delete(x) nao5 = asciiread("/home/linx/work/indices/NAO/NAO.Luterbacher_Ann_1500-2000.dat",-1,"float") ntime = dimsizes(nao5) nao5!0 = "time" nao5&time = fspan(1500,2000,ntime) nao5@long_name = "NAO Recon" nao5@reference = "(Luterbacher et.al)" nao5@output_name = "NAO.recon_Luterbacher" nao5@time_domain = "1500-2000" x = asciiread("/home/linx/work/indices/NAO/NAO.Timm_DJFM_1700-1978.dat",(/279,2/),"float") nao6 = x(:,1) ntime = dimsizes(nao6) nao6!0 = "time" nao6&time = fspan(1700,1978,ntime) nao6@long_name = "NAO Recon" nao6@reference = "(Timm et.al)" nao6@output_name = "NAO.recon_Timm" nao6@time_domain = "1700-1978" delete(x) ; AO **************************************************** ao = asciiread("/home/linx/work/indices/AO/AO.Thompson_Ann_1899-2001.dat",-1,"float") ; AO Thompson ao!0 = "time" ao&time = ispan(1899,2001,1)*1. ao@long_name = "AO Obs" ao@reference = "(Thompson et al)" ao@output_name = "AO.Obs_Thompson" ao@time_domain = "1899-2001" x = asciiread("/home/linx/work/indices/AO/NAM.Hurrel_DJFM_PCbased_1899-2006.dat",(/12,11/),"float") y = x(:,1:10) xx = ndtooned(y) xx!0 = "time" xx&time = ispan(1890,2009,1)*1. NAM = xx({1899:2006}) ;NAM!0 ="time" ;NAM&time = ispan(1899,2006,1) NAM@long_name = "NAM Obs" NAM@reference = "(Hurrel et al)" NAM@output_name = "NAM.Obs_Hurrel" NAM@time_domain = "1899-2006" system("rm ./ClimateIndices.nc") fout = addfile("./ClimateIndices.nc","c") fout@title="Climate Indices (Both Obs and Proxy record, Including PDO,ENSO,NHI&SHI,AO&NAO..)" fout@creation_date = systemfunc("date") fout@author = "Lin Xiang,PKU" ; make time and UNLIMITED dimension ; recommended for most applications ; filedimdef(fout,"time",-1,True) ; output variables directly fout->pdo_ann_mantua = pdo1 fout->pdo_mam_mantua = pdo2 fout->pdo_ann_darrigo = pdo3 fout->pdo_mam_darrigo = pdo4 fout->pdo_ann_mcdonald = pdo5 fout->pdo_ann_shen = pdo6 fout->nino3_ann_kalpan = nino31 fout->nino3_seasonal = nino32 fout->enso_wang = nino33 fout->nino_cold_mann = nino34 fout->nino3_djf_cook = nino35 fout->NHI_obs_hurrel = NH fout->NHI_rec_darrigo = NH2 fout->SHI_obs_zhang = SH fout->SHI_rec_darrigo = SH2 fout->nao_obs_jones = nao1 fout->nao_ann_hurrel = nao2 fout->nao_djfm_hurrel = nao3 fout->nao_glueck = nao4 fout->nao_luterbacher = nao5 fout->nao_timm = nao6 fout->ao_Thompson = ao fout->NAM_hurrel = NAM end