1 | pro time_interp_over_gaps |
---|
2 | |
---|
3 | ; Les dimensions des fichiers |
---|
4 | nlon=720 |
---|
5 | nlat=360 |
---|
6 | nt=1032 |
---|
7 | |
---|
8 | une_annee=[31,30,29,31,30,31,30,31,31,30,31,30] |
---|
9 | les_mois = [31,28,31,30,31,30,31,31,30,31,30,31] |
---|
10 | |
---|
11 | jours_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 | |
---|
23 | jours_out=make_array(1032) |
---|
24 | jours_out(0) = 15 |
---|
25 | for cpt=1,1031 do jours_out(cpt) = jours_out(cpt-1) + une_annee(cpt mod 12) |
---|
26 | |
---|
27 | idin = 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') |
---|
28 | varid = ncdf_varid(idin,'NH3_em_openburning') ; Here, small caps |
---|
29 | lonid = ncdf_varid(idin,'lon') |
---|
30 | latid = ncdf_varid(idin,'lat') |
---|
31 | ;lonbndid = ncdf_varid(idin,'lon_bnds') |
---|
32 | ;latbndid = ncdf_varid(idin,'lat_bnds') |
---|
33 | timbndid = ncdf_varid(idin,'time_bnds') |
---|
34 | ncdf_varget, idin, varid, emiss_init |
---|
35 | ncdf_attget, idin, varid, "units", emiss_unit |
---|
36 | ncdf_attget, idin, varid, "long_name", emiss_longname |
---|
37 | ncdf_varget, idin, lonid, lon |
---|
38 | ncdf_varget, idin, latid, lat |
---|
39 | ;ncdf_varget, idin, lonbndid, lonbnds |
---|
40 | ;ncdf_varget, idin, latbndid, latbnds |
---|
41 | ncdf_varget, idin, timbndid, timbnds_in |
---|
42 | ncdf_close, idin |
---|
43 | |
---|
44 | timbnds_out = make_array(2,1032) |
---|
45 | timbnds_out(*,0) = [0,31] |
---|
46 | timbnds_out(*,1) = [31,59] |
---|
47 | for cpt=2,1031 do timbnds_out(0,cpt) = timbnds_out(0,cpt-1) + une_annee((cpt-1) mod 12) |
---|
48 | for cpt=1,1030 do timbnds_out(1,cpt) = timbnds_out(0,cpt+1) |
---|
49 | timbnds_out(1,1031) = 31390 |
---|
50 | |
---|
51 | emiss_interpol=make_array(nlon,nlat,1032,value=0.) |
---|
52 | |
---|
53 | indices_out_mois = make_array(86,12,value=0) |
---|
54 | for m=0,11 do begin |
---|
55 | for n=0,85 do indices_out_mois(n,m) = 12*n + m |
---|
56 | endfor |
---|
57 | |
---|
58 | jours_out_mois = make_array(86,12,value=0) |
---|
59 | for n=0,85 do begin |
---|
60 | for m=0,11 do jours_out_mois(n,m) = jours_out(indices_out_mois(n,m)) |
---|
61 | endfor |
---|
62 | |
---|
63 | jours_in_mois = make_array(n_elements(jours_in)/12,12,value=0) |
---|
64 | for 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) |
---|
66 | endfor |
---|
67 | |
---|
68 | indices_in_mois = make_array(n_elements(jours_in)/12,12,value=0) |
---|
69 | for 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)) |
---|
71 | endfor |
---|
72 | |
---|
73 | ; Interpolation mois par mois... |
---|
74 | for 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 |
---|
80 | endfor |
---|
81 | |
---|
82 | idout = 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) |
---|
83 | dimlonid = ncdf_dimdef(idout,'lon',nlon) |
---|
84 | dimlatid = ncdf_dimdef(idout,'lat',nlat) |
---|
85 | dimtimid = ncdf_dimdef(idout,'time',1032) |
---|
86 | dimbndid = ncdf_dimdef(idout,'bound',2) |
---|
87 | varlonid = ncdf_vardef(idout, 'lon', [dimlonid], /double) |
---|
88 | varlatid = ncdf_vardef(idout, 'lat', [dimlatid], /double) |
---|
89 | vartimid = 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) |
---|
92 | vartimbndsid = ncdf_vardef(idout, 'time_bnds', [dimbndid,dimtimid], /double) |
---|
93 | varemissid = ncdf_vardef(idout, 'NH3_em_openburning', [dimlonid,dimlatid,dimtimid], /float) |
---|
94 | ncdf_control, idout, /endef |
---|
95 | ncdf_varput, idout, varlonid, lon |
---|
96 | ncdf_varput, idout, varlatid, lat |
---|
97 | ;ncdf_varput, idout, varlonbndsid, lonbnds |
---|
98 | ;ncdf_varput, idout, varlatbndsid, latbnds |
---|
99 | ncdf_varput, idout, vartimbndsid, timbnds_out |
---|
100 | ncdf_varput, idout, varemissid, emiss_interpol |
---|
101 | ncdf_varput, idout, vartimid, jours_out |
---|
102 | ncdf_control, idout, /redef |
---|
103 | ncdf_attput, idout, varlonid, "units", "degrees_east" |
---|
104 | ncdf_attput, idout, varlonid, "long_name", "longitude" |
---|
105 | ncdf_attput, idout, varlonid, "axis", "X" |
---|
106 | ncdf_attput, idout, varlonid, "bounds", "lon_bnds" |
---|
107 | ncdf_attput, idout, varlonid, "modulo", 360. |
---|
108 | ncdf_attput, idout, varlonid, "realtopology", "circular" |
---|
109 | ncdf_attput, idout, varlonid, "standard_name", "longitude" |
---|
110 | ncdf_attput, idout, varlonid, "topology", "circular" |
---|
111 | ncdf_attput, idout, varlatid, "units", "degrees_north" |
---|
112 | ncdf_attput, idout, varlatid, "long_name", "latitude" |
---|
113 | ncdf_attput, idout, varlatid, "axis", "Y" |
---|
114 | ncdf_attput, idout, varlatid, "bounds", "lat_bnds" |
---|
115 | ncdf_attput, idout, varlatid, "realtopology", "linear" |
---|
116 | ncdf_attput, idout, varlatid, "standard_name", "latitude" |
---|
117 | ncdf_attput, idout, varemissid, "units", string(emiss_unit) |
---|
118 | ncdf_attput, idout, varemissid, "_FillValue", 1.e+20 |
---|
119 | ncdf_attput, idout, varemissid, "cell_methods", "time: mean" |
---|
120 | ncdf_attput, idout, varemissid, "long_name", string(emiss_longname) |
---|
121 | ncdf_attput, idout, varemissid, "missing_value", 1.e+20 |
---|
122 | ncdf_attput, idout, vartimid, "units", "days since 2015-01-01 0:0:0" |
---|
123 | ncdf_attput, idout, vartimid, "long_name", "time" |
---|
124 | ncdf_attput, idout, vartimid, "calendar", '365_day' |
---|
125 | ncdf_attput, idout, vartimid, "axis", "T" |
---|
126 | ncdf_attput, idout, vartimid, "bounds", "time_bnds" |
---|
127 | ncdf_attput, idout, vartimid, "realtopology", "linear" |
---|
128 | ncdf_attput, idout, vartimid, "standard_name", "time" |
---|
129 | ncdf_close, idout |
---|
130 | end |
---|