pro time_interp_over_gaps ; Les dimensions des fichiers nlon=720 nlat=360 nt=1032 une_annee=[31,30,29,31,30,31,30,31,31,30,31,30] les_mois = [31,28,31,30,31,30,31,31,30,31,30,31] jours_in = [15, 45, 74, 105, 135, 166, 196, 227, 258, 288, 319, 349, 1840, 1870, $ 1899, 1930, 1960, 1991, 2021, 2052, 2083, 2113, 2144, 2174, 5490, 5520, $ 5549, 5580, 5610, 5641, 5671, 5702, 5733, 5763, 5794, 5824, 9140, 9170, $ 9199, 9230, 9260, 9291, 9321, 9352, 9383, 9413, 9444, 9474, 12790, 12820, $ 12849, 12880, 12910, 12941, 12971, 13002, 13033, 13063, 13094, 13124, $ 16440, 16470, 16499, 16530, 16560, 16591, 16621, 16652, 16683, 16713, $ 16744, 16774, 20090, 20120, 20149, 20180, 20210, 20241, 20271, 20302, $ 20333, 20363, 20394, 20424, 23740, 23770, 23799, 23830, 23860, 23891, $ 23921, 23952, 23983, 24013, 24044, 24074, 27390, 27420, 27449, 27480, $ 27510, 27541, 27571, 27602, 27633, 27663, 27694, 27724, 31040, 31070, $ 31099, 31130, 31160, 31191, 31221, 31252, 31283, 31313, 31344, 31374] jours_out=make_array(1032) jours_out(0) = 15 for cpt=1,1031 do jours_out(cpt) = jours_out(cpt-1) + une_annee(cpt mod 12) 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') varid = ncdf_varid(idin,'NH3_em_openburning') ; Here, small caps lonid = ncdf_varid(idin,'lon') latid = ncdf_varid(idin,'lat') ;lonbndid = ncdf_varid(idin,'lon_bnds') ;latbndid = ncdf_varid(idin,'lat_bnds') timbndid = ncdf_varid(idin,'time_bnds') ncdf_varget, idin, varid, emiss_init ncdf_attget, idin, varid, "units", emiss_unit ncdf_attget, idin, varid, "long_name", emiss_longname ncdf_varget, idin, lonid, lon ncdf_varget, idin, latid, lat ;ncdf_varget, idin, lonbndid, lonbnds ;ncdf_varget, idin, latbndid, latbnds ncdf_varget, idin, timbndid, timbnds_in ncdf_close, idin timbnds_out = make_array(2,1032) timbnds_out(*,0) = [0,31] timbnds_out(*,1) = [31,59] for cpt=2,1031 do timbnds_out(0,cpt) = timbnds_out(0,cpt-1) + une_annee((cpt-1) mod 12) for cpt=1,1030 do timbnds_out(1,cpt) = timbnds_out(0,cpt+1) timbnds_out(1,1031) = 31390 emiss_interpol=make_array(nlon,nlat,1032,value=0.) indices_out_mois = make_array(86,12,value=0) for m=0,11 do begin for n=0,85 do indices_out_mois(n,m) = 12*n + m endfor jours_out_mois = make_array(86,12,value=0) for n=0,85 do begin for m=0,11 do jours_out_mois(n,m) = jours_out(indices_out_mois(n,m)) endfor jours_in_mois = make_array(n_elements(jours_in)/12,12,value=0) for m=0,11 do begin for n=0,n_elements(jours_in)/12-1 do jours_in_mois(n,m) = jours_in(n*12 + m) endfor indices_in_mois = make_array(n_elements(jours_in)/12,12,value=0) for m=0,11 do begin for n=0,n_elements(jours_in)/12-1 do indices_in_mois(n,m) = where(jours_in eq jours_in_mois(n,m)) endfor ; Interpolation mois par mois... for i=0,nlon-1 do begin for j=0,nlat-1 do begin for m=0,11 do begin 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)) endfor endfor endfor 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) dimlonid = ncdf_dimdef(idout,'lon',nlon) dimlatid = ncdf_dimdef(idout,'lat',nlat) dimtimid = ncdf_dimdef(idout,'time',1032) dimbndid = ncdf_dimdef(idout,'bound',2) varlonid = ncdf_vardef(idout, 'lon', [dimlonid], /double) varlatid = ncdf_vardef(idout, 'lat', [dimlatid], /double) vartimid = ncdf_vardef(idout, 'time', [dimtimid], /double) ;varlonbndsid = ncdf_vardef(idout, 'lon_bnds', [dimbndid,dimlonid], /double) ;varlatbndsid = ncdf_vardef(idout, 'lat_bnds', [dimbndid,dimlatid], /double) vartimbndsid = ncdf_vardef(idout, 'time_bnds', [dimbndid,dimtimid], /double) varemissid = ncdf_vardef(idout, 'NH3_em_openburning', [dimlonid,dimlatid,dimtimid], /float) ncdf_control, idout, /endef ncdf_varput, idout, varlonid, lon ncdf_varput, idout, varlatid, lat ;ncdf_varput, idout, varlonbndsid, lonbnds ;ncdf_varput, idout, varlatbndsid, latbnds ncdf_varput, idout, vartimbndsid, timbnds_out ncdf_varput, idout, varemissid, emiss_interpol ncdf_varput, idout, vartimid, jours_out ncdf_control, idout, /redef ncdf_attput, idout, varlonid, "units", "degrees_east" ncdf_attput, idout, varlonid, "long_name", "longitude" ncdf_attput, idout, varlonid, "axis", "X" ncdf_attput, idout, varlonid, "bounds", "lon_bnds" ncdf_attput, idout, varlonid, "modulo", 360. ncdf_attput, idout, varlonid, "realtopology", "circular" ncdf_attput, idout, varlonid, "standard_name", "longitude" ncdf_attput, idout, varlonid, "topology", "circular" ncdf_attput, idout, varlatid, "units", "degrees_north" ncdf_attput, idout, varlatid, "long_name", "latitude" ncdf_attput, idout, varlatid, "axis", "Y" ncdf_attput, idout, varlatid, "bounds", "lat_bnds" ncdf_attput, idout, varlatid, "realtopology", "linear" ncdf_attput, idout, varlatid, "standard_name", "latitude" ncdf_attput, idout, varemissid, "units", string(emiss_unit) ncdf_attput, idout, varemissid, "_FillValue", 1.e+20 ncdf_attput, idout, varemissid, "cell_methods", "time: mean" ncdf_attput, idout, varemissid, "long_name", string(emiss_longname) ncdf_attput, idout, varemissid, "missing_value", 1.e+20 ncdf_attput, idout, vartimid, "units", "days since 2015-01-01 0:0:0" ncdf_attput, idout, vartimid, "long_name", "time" ncdf_attput, idout, vartimid, "calendar", '365_day' ncdf_attput, idout, vartimid, "axis", "T" ncdf_attput, idout, vartimid, "bounds", "time_bnds" ncdf_attput, idout, vartimid, "realtopology", "linear" ncdf_attput, idout, vartimid, "standard_name", "time" ncdf_close, idout end