FUNCTION dustem_read_qabs_lv,file,silent=silent st='' Nmax=10000L sts=strarr(Nmax) openr,unit,file,/get_lun ;==read comments str='' & first_char='#' WHILE first_char EQ '#' DO BEGIN readf,unit,str first_char=strmid(str,0,1) ENDWHILE ;read number of sizes Nsizes=fix(str) ;Get sizes readf,unit,st sizes=float(str_sep(strcompress(strtrim(st,2)),' ')) Ncol=Nsizes ;==read comments str='' & first_char='#' WHILE first_char EQ '#' DO BEGIN readf,unit,str first_char=strmid(str,0,1) ENDWHILE ;== read Qabs sts(0)=str nlines=1L first_char=' ' WHILE first_char NE '#' DO BEGIN readf,unit,st sts(nlines)=st nlines=nlines+1 first_char=strmid(st,0,1) ENDWHILE ;stop qabs_str=sts(0:nlines-2) ;==read comments str='' & first_char='#' WHILE first_char EQ '#' DO BEGIN readf,unit,str first_char=strmid(str,0,1) ENDWHILE ;== read Qsca sts(*)='' sts(0)=str nlines=1L first_char=' ' WHILE not eof(unit) and first_char NE '#' DO BEGIN readf,unit,st sts(nlines)=st nlines=nlines+1 first_char=strmid(st,0,1) ENDWHILE close,unit free_lun,unit qsca_str=sts(0:nlines-1) Nlines=n_elements(qsca_str) qabs_values=fltarr(Nlines,Ncol) qsca_values=fltarr(Nlines,Ncol) FOR i=0L,Nlines-1 DO BEGIN qabs_values(i,*)=str_sep(strcompress(strtrim(qabs_str(i),2)),' ') qsca_values(i,*)=str_sep(strcompress(strtrim(qsca_str(i),2)),' ') ENDFOR ;== Make output structure cmd='one_st={' FOR i=0L,Ncol-1 DO BEGIN cmd=cmd+'v'+strtrim(i+1,2)+':'+'0.' IF i NE Ncol-1 THEN BEGIN cmd=cmd+',' ENDIF ELSE BEGIN cmd=cmd+'}' ENDELSE ENDFOR toto=execute(cmd) qabs_st=replicate(one_st,Nlines) qsca_st=replicate(one_st,Nlines) ;=== fill in the qabs structure FOR j=0L,Ncol-1 DO BEGIN qabs_st.(j)=reform(qabs_values(*,j)) qsca_st.(j)=reform(qsca_values(*,j)) ENDFOR full_st={file:file,Nsizes:Nsizes,sizes:sizes,Qabs:qabs_st,Qsca:qsca_st} return,full_st END