PRO read_expl_volc_ncdf,year=year CLOSE,/ALL fid=NCDF_OPEN('volc_sporadic.nc',/NOWRITE) id1=NCDF_VARID(fid,'vname') id2=NCDF_VARID(fid,'start_day') id3=NCDF_VARID(fid,'end_day') id4=NCDF_VARID(fid,'elevation') id5=NCDF_VARID(fid,'cloud_column_height') id6=NCDF_VARID(fid,'lat') id7=NCDF_VARID(fid,'lon') id8=NCDF_VARID(fid,'so2') id9=NCDF_VARID(fid,'vid') NCDF_VARGET,fid,id1,vname NCDF_VARGET,fid,id2,start_day NCDF_VARGET,fid,id3,end_day NCDF_VARGET,fid,id4,elevation NCDF_VARGET,fid,id5,cloud NCDF_VARGET,fid,id6,lat NCDF_VARGET,fid,id7,lon NCDF_VARGET,fid,id8,so2 NCDF_VARGET,fid,id9,vid NCDF_CLOSE,fid name=STRING(vname) nse=N_ELEMENTS(name) id=STRING(vid) years=JULDAY(1,1,year) yeare=JULDAY(12,31,year) so2_tot=0. nname=strarr(nse) nid=strarr(nse) nstart=fltarr(nse) nend=fltarr(nse) nday=fltarr(nse) nalt=fltarr(nse) ncld=fltarr(nse) nlat=fltarr(nse) nlon=fltarr(nse) nso2=fltarr(nse) nrec=0 file='volc_sporadic_'+STRCOMPRESS(STRING(year),/REMOVE_ALL)+'.dat' OPENW,lun,file,/GET_LUN for n=0,nse-1 do begin ;number of days for the episode ndays=end_day(n)-start_day(n)+1 ;Gg(SO2) emitted per day so2d=so2(n)/FLOAT(ndays) ;check cloud height (some errors were found in the original file) IF (cloud(n) gt elevation(n)) THEN BEGIN cloud(n)=cloud(n)-elevation(n) ENDIF ;find if episodes occurred in the needed year and for how many days ;episode all in the year IF (start_day(n) ge years and end_day(n) le yeare) THEN BEGIN ;so2 emitted by this episod during this year (Gg/y) nde=FLOAT(ndays) so2y=so2d*nde nname(nrec) =name(n) nid(nrec) =id(n) nstart(nrec)=start_day(n) nend(nrec) =end_day(n) nday(nrec) =nde nalt(nrec) =elevation(n) ncld(nrec) =cloud(n) nlat(nrec) =lat(n) nlon(nrec) =lon(n) nso2(nrec) =so2y nrec=nrec+1 ENDIF ;episode starting before the year and endig in the year IF (start_day(n) lt years and end_day(n) le yeare and end_day(n) ge years) THEN BEGIN ;so2 emitted by this episod during this year (Gg/y) nde=FLOAT(end_day(n)-years+1) so2y=so2d*nde nname(nrec) =name(n) nid(nrec) =id(n) nstart(nrec)=years nend(nrec) =end_day(n) nday(nrec) =nde nalt(nrec) =elevation(n) ncld(nrec) =cloud(n) nlat(nrec) =lat(n) nlon(nrec) =lon(n) nso2(nrec) =so2y nrec=nrec+1 ENDIF ;episode starting in the year and endig after the year IF (start_day(n) ge years and start_day(n) le yeare and end_day(n) gt yeare) THEN BEGIN ;so2 emitted by this episod during this year (Gg/y) nde=FLOAT(yeare-start_day(n)+1) so2y=so2d*nde nname(nrec) =name(n) nid(nrec) =id(n) nstart(nrec)=start_day(n) nend(nrec) =yeare nday(nrec) =nde nalt(nrec) =elevation(n) ncld(nrec) =cloud(n) nlat(nrec) =lat(n) nlon(nrec) =lon(n) nso2(nrec) =so2y nrec=nrec+1 ENDIF ;episode starting before the year and endig after the year IF (start_day(n) lt years and end_day(n) gt yeare) THEN BEGIN ;so2 emitted by this episod during this year (Gg/y) nde=FLOAT(yeare-years+1) so2y=so2d*nde nname(nrec) =name(n) nid(nrec) =id(n) nstart(nrec)=years nend(nrec) =yeare nday(nrec) =nde nalt(nrec) =elevation(n) ncld(nrec) =cloud(n) nlat(nrec) =lat(n) nlon(nrec) =lon(n) nso2(nrec) =so2y nrec=nrec+1 ENDIF endfor IF (nrec ge 1) THEN BEGIN for n=0,nrec-1 do begin CALDAT,nstart(n),ms,ds,ys CALDAT,nend(n),me,de,ye ; print,ds,'/',ms,'/',ys,';',de,'/',me,'/',ye,';',nday(n),';',nlat(n),';',nlon(n),';',nid(n),';',nname(n),';',nalt(n),';',ncld(n),';',nso2(n), $ ; format='(2(1x,i2,a1,i2,a1,i4,a1),i5,a1,2(1x,f6.1,a1),1x,a10,a1,1x,a20,a1,2(1x,i5,a1),1x,f12.5)' printf,lun,ds,'/',ms,'/',ys,';',de,'/',me,'/',ye,';',nday(n),';',nlat(n),';',nlon(n),';',nid(n),';',nname(n),';',nalt(n),';',ncld(n),';',nso2(n), $ format='(2(1x,i2,a1,i2,a1,i4,a1),i5,a1,2(1x,f6.1,a1),1x,a10,a1,1x,a20,a1,2(1x,i5,a1),1x,f12.5)' so2_tot=so2_tot+nso2(n) endfor FREE_LUN,lun CLOSE,/ALL print,'Total SO2(Gg/y) emitted for year ',year,': ',so2_tot,format='(a43,i4,a2,f10.2)' ;create a ncdf file filenc='volc_sporadic_'+STRCOMPRESS(STRING(year),/REMOVE_ALL)+'.nc' fid=NCDF_CREATE(filenc,/CLOBBER) ;define dimension did=NCDF_DIMDEF(fid,'nse',nrec) did1=NCDF_DIMDEF(fid,'char1',8) did2=NCDF_DIMDEF(fid,'char2',37) ;define variables id1=NCDF_VARDEF(fid,'vname',[did2,did],/CHAR) id2=NCDF_VARDEF(fid,'vid',[did1,did],/CHAR) id3=NCDF_VARDEF(fid,'start_day',did,/FLOAT) id4=NCDF_VARDEF(fid,'end_day',did,/FLOAT) id5=NCDF_VARDEF(fid,'nday',did,/FLOAT) id6=NCDF_VARDEF(fid,'elevation',did,/FLOAT) id7=NCDF_VARDEF(fid,'cloud',did,/FLOAT) id8=NCDF_VARDEF(fid,'lat',did,/FLOAT) id9=NCDF_VARDEF(fid,'lon',did,/FLOAT) id10=NCDF_VARDEF(fid,'so2',did,/FLOAT) ;add values to variables NCDF_CONTROL,fid,/ENDEF NCDF_VARPUT,fid,id1,nname(0:nrec-1) NCDF_VARPUT,fid,id2,nid(0:nrec-1) NCDF_VARPUT,fid,id3,nstart(0:nrec-1) NCDF_VARPUT,fid,id4,nend(0:nrec-1) NCDF_VARPUT,fid,id5,nday(0:nrec-1) NCDF_VARPUT,fid,id6,nalt(0:nrec-1) NCDF_VARPUT,fid,id7,ncld(0:nrec-1) NCDF_VARPUT,fid,id8,nlat(0:nrec-1) NCDF_VARPUT,fid,id9,nlon(0:nrec-1) NCDF_VARPUT,fid,id10,nso2(0:nrec-1) NCDF_CONTROL,fid,/REDEF ;attributes NCDF_ATTPUT,fid,id1,'long_name','Volcano name',/CHAR NCDF_ATTPUT,fid,id2,'long_name','Volcano number',/CHAR NCDF_ATTPUT,fid,id3,'long_name','Julian Day Number of start date of eruption',/CHAR NCDF_ATTPUT,fid,id4,'long_name','Julian Day Number of end date of eruption',/CHAR NCDF_ATTPUT,fid,id5,'long_name','Duration of eruption',/CHAR NCDF_ATTPUT,fid,id5,'units','days',/CHAR NCDF_ATTPUT,fid,id6,'long_name','Elevation of volcano',/CHAR NCDF_ATTPUT,fid,id6,'units','m above sea level',/CHAR NCDF_ATTPUT,fid,id7,'long_name','Cloud column height',/CHAR NCDF_ATTPUT,fid,id7,'units','m',/CHAR NCDF_ATTPUT,fid,id8,'long_name','Latitude of volcano',/CHAR NCDF_ATTPUT,fid,id8,'units','degree_north',/CHAR NCDF_ATTPUT,fid,id9,'long_name','Longitude of volcano',/CHAR NCDF_ATTPUT,fid,id9,'units','degree_east',/CHAR NCDF_ATTPUT,fid,id10,'long_name','Amount of SO2 emitted during eruption period',/CHAR NCDF_ATTPUT,fid,id10,'units','Gg(SO2)',/CHAR NCDF_ATTPUT,fid,/GLOBAL,'description','Sporadic volcanic emissions for year '+STRING(year),/CHAR NCDF_ATTPUT,fid,/GLOBAL,'filter','No fiter applied',/CHAR NCDF_ATTPUT,fid,/GLOBAL,'total_so2_emitted',so2_tot,/FLOAT NCDF_ATTPUT,fid,/GLOBAL,'source_file','volc_sporadic.nc (Thomas Diehl)',/CHAR NCDF_ATTPUT,fid,/GLOBAL,'author','Luca Pozzoli (MPI-met)',/CHAR NCDF_CLOSE,fid ENDIF ELSE BEGIN;nrec>1 print,'no records found, files are not created' ENDELSE END