source: TOOLS/CMIP6_FORCING/SCENARIOS/AER_TROP_EMISSIONS/REGRID/time_interp_over_gaps.pro @ 4605

Last change on this file since 4605 was 4007, checked in by tlurton, 6 years ago

Adding scripts to regrid tropospheric aerosol emissions for scenarios.

File size: 5.6 KB
Line 
1pro time_interp_over_gaps
2
3; Les dimensions des fichiers
4nlon=720
5nlat=360
6nt=1032
7
8une_annee=[31,30,29,31,30,31,30,31,31,30,31,30]
9les_mois = [31,28,31,30,31,30,31,31,30,31,30,31]
10
11jours_in = [15, 45, 74, 105, 135, 166, 196, 227, 258, 288, 319, 349, 1840, 1870, $
12    1899, 1930, 1960, 1991, 2021, 2052, 2083, 2113, 2144, 2174, 5490, 5520, $
13    5549, 5580, 5610, 5641, 5671, 5702, 5733, 5763, 5794, 5824, 9140, 9170, $
14    9199, 9230, 9260, 9291, 9321, 9352, 9383, 9413, 9444, 9474, 12790, 12820, $
15    12849, 12880, 12910, 12941, 12971, 13002, 13033, 13063, 13094, 13124, $
16    16440, 16470, 16499, 16530, 16560, 16591, 16621, 16652, 16683, 16713, $
17    16744, 16774, 20090, 20120, 20149, 20180, 20210, 20241, 20271, 20302, $
18    20333, 20363, 20394, 20424, 23740, 23770, 23799, 23830, 23860, 23891, $
19    23921, 23952, 23983, 24013, 24044, 24074, 27390, 27420, 27449, 27480, $
20    27510, 27541, 27571, 27602, 27633, 27663, 27694, 27724, 31040, 31070, $
21    31099, 31130, 31160, 31191, 31221, 31252, 31283, 31313, 31344, 31374]
22
23jours_out=make_array(1032)
24jours_out(0) = 15
25for cpt=1,1031 do jours_out(cpt) = jours_out(cpt-1) + une_annee(cpt mod 12)
26
27idin = ncdf_open('/data/tlurton/CMIP6/AEROSOL/ScenarioMIP/ssp119/v1/NH3-em-openburning_input4MIPs_emissions_ScenarioMIP_IAMC-IMAGE-ssp119-1-1_gn_201501-210012_tmp.nc')
28varid = ncdf_varid(idin,'NH3_em_openburning')      ; Here, small caps
29lonid = ncdf_varid(idin,'lon')
30latid = ncdf_varid(idin,'lat')
31;lonbndid = ncdf_varid(idin,'lon_bnds')
32;latbndid = ncdf_varid(idin,'lat_bnds')
33timbndid = ncdf_varid(idin,'time_bnds')
34ncdf_varget, idin, varid, emiss_init
35ncdf_attget, idin, varid, "units", emiss_unit
36ncdf_attget, idin, varid, "long_name", emiss_longname
37ncdf_varget, idin, lonid, lon
38ncdf_varget, idin, latid, lat
39;ncdf_varget, idin, lonbndid, lonbnds
40;ncdf_varget, idin, latbndid, latbnds
41ncdf_varget, idin, timbndid, timbnds_in
42ncdf_close, idin
43
44timbnds_out = make_array(2,1032)
45timbnds_out(*,0) = [0,31]
46timbnds_out(*,1) = [31,59]
47for cpt=2,1031 do timbnds_out(0,cpt) = timbnds_out(0,cpt-1) + une_annee((cpt-1) mod 12)
48for cpt=1,1030 do timbnds_out(1,cpt) = timbnds_out(0,cpt+1)
49timbnds_out(1,1031) = 31390
50
51emiss_interpol=make_array(nlon,nlat,1032,value=0.)
52
53indices_out_mois = make_array(86,12,value=0)
54for m=0,11 do begin
55   for n=0,85 do indices_out_mois(n,m) = 12*n + m
56endfor
57
58jours_out_mois = make_array(86,12,value=0)
59for n=0,85 do begin
60   for m=0,11 do jours_out_mois(n,m) = jours_out(indices_out_mois(n,m))
61endfor
62
63jours_in_mois = make_array(n_elements(jours_in)/12,12,value=0)
64for m=0,11 do begin
65   for n=0,n_elements(jours_in)/12-1 do jours_in_mois(n,m) = jours_in(n*12 + m)
66endfor
67
68indices_in_mois = make_array(n_elements(jours_in)/12,12,value=0)
69for m=0,11 do begin
70   for n=0,n_elements(jours_in)/12-1 do indices_in_mois(n,m) = where(jours_in eq jours_in_mois(n,m))
71endfor
72
73; Interpolation mois par mois...
74for i=0,nlon-1 do begin
75   for j=0,nlat-1 do begin
76      for m=0,11 do begin
77         emiss_interpol(i,j,indices_out_mois(*,m)) = interpol(emiss_init(i,j,indices_in_mois(*,m)),jours_in_mois(*,m),jours_out_mois(*,m))
78      endfor
79   endfor
80endfor
81
82idout = ncdf_create('/data/tlurton/CMIP6/AEROSOL/ScenarioMIP/ssp119/v1/NH3-em-openburning_input4MIPs_emissions_ScenarioMIP_IAMC-IMAGE-ssp119-1-1_gn_201501-210012_interp.nc', /clobber)
83dimlonid = ncdf_dimdef(idout,'lon',nlon)
84dimlatid = ncdf_dimdef(idout,'lat',nlat)
85dimtimid = ncdf_dimdef(idout,'time',1032)
86dimbndid = ncdf_dimdef(idout,'bound',2)
87varlonid = ncdf_vardef(idout, 'lon', [dimlonid], /double)
88varlatid = ncdf_vardef(idout, 'lat', [dimlatid], /double)
89vartimid = ncdf_vardef(idout, 'time', [dimtimid], /double)
90;varlonbndsid = ncdf_vardef(idout, 'lon_bnds', [dimbndid,dimlonid], /double)
91;varlatbndsid = ncdf_vardef(idout, 'lat_bnds', [dimbndid,dimlatid], /double)
92vartimbndsid = ncdf_vardef(idout, 'time_bnds', [dimbndid,dimtimid], /double)
93varemissid = ncdf_vardef(idout, 'NH3_em_openburning', [dimlonid,dimlatid,dimtimid], /float)
94ncdf_control, idout, /endef
95ncdf_varput, idout, varlonid, lon
96ncdf_varput, idout, varlatid, lat
97;ncdf_varput, idout, varlonbndsid, lonbnds
98;ncdf_varput, idout, varlatbndsid, latbnds
99ncdf_varput, idout, vartimbndsid, timbnds_out
100ncdf_varput, idout, varemissid, emiss_interpol
101ncdf_varput, idout, vartimid, jours_out
102ncdf_control, idout, /redef
103ncdf_attput, idout, varlonid, "units", "degrees_east"
104ncdf_attput, idout, varlonid, "long_name", "longitude"
105ncdf_attput, idout, varlonid, "axis", "X"
106ncdf_attput, idout, varlonid, "bounds", "lon_bnds"
107ncdf_attput, idout, varlonid, "modulo", 360.
108ncdf_attput, idout, varlonid, "realtopology", "circular"
109ncdf_attput, idout, varlonid, "standard_name", "longitude"
110ncdf_attput, idout, varlonid, "topology", "circular"
111ncdf_attput, idout, varlatid, "units", "degrees_north"
112ncdf_attput, idout, varlatid, "long_name", "latitude"
113ncdf_attput, idout, varlatid, "axis", "Y"
114ncdf_attput, idout, varlatid, "bounds", "lat_bnds"
115ncdf_attput, idout, varlatid, "realtopology", "linear"
116ncdf_attput, idout, varlatid, "standard_name", "latitude"
117ncdf_attput, idout, varemissid, "units", string(emiss_unit)
118ncdf_attput, idout, varemissid, "_FillValue", 1.e+20
119ncdf_attput, idout, varemissid, "cell_methods", "time: mean"
120ncdf_attput, idout, varemissid, "long_name", string(emiss_longname)
121ncdf_attput, idout, varemissid, "missing_value", 1.e+20
122ncdf_attput, idout, vartimid, "units", "days since 2015-01-01 0:0:0"
123ncdf_attput, idout, vartimid, "long_name", "time"
124ncdf_attput, idout, vartimid, "calendar", '365_day'
125ncdf_attput, idout, vartimid, "axis", "T"
126ncdf_attput, idout, vartimid, "bounds", "time_bnds"
127ncdf_attput, idout, vartimid, "realtopology", "linear"
128ncdf_attput, idout, vartimid, "standard_name", "time"
129ncdf_close, idout
130end
Note: See TracBrowser for help on using the repository browser.