FUNCTION dustem_read_size,file,silent=silent,help=help ;+ ; NAME: ; dustem_read_size ; ; PURPOSE: ; reads information relating to the grain size distribution ; from the corresponding .DAT file ; ; CATEGORY: ; DustEMWrap, Distributed, LowLevel, Initialization ; ; CALLING SEQUENCE: ; st=dustem_read_size(file) ; ; INPUTS: ; file : input file to be read ; ; OPTIONAL INPUT PARAMETERS: ; ; OUTPUTS: ; st : dustem data structure ; ; OPTIONAL OUTPUT PARAMETERS: ; ; ACCEPTED KEY-WORDS: ; help : writes this help ; ; COMMON BLOCKS: ; None ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; The DustEM fortran code must be installed ; The DustEMWrap IDL code must be installed ; ; PROCEDURES AND SUBROUTINES USED: ; ; EXAMPLES: ; ; MODIFICATION HISTORY: ; Evolution details on the DustEMWrap gitlab. ; See http://dustemwrap.irap.omp.eu/ for FAQ and help. ;- IF keyword_set(help) THEN BEGIN doc_library,'dustem_read_size' full_st=0. goto,the_end ENDIF 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 bulk materials Nbulk=fix(str) readf,unit,density readf,unit,mass_frac readf,unit,Nsize Nsize=fix(Nsize) a=fltarr(Nsize) & dloga=fltarr(Nsize) & a4dnda=fltarr(Nsize) f_mix=fltarr(nsize) & f_pol=fltarr(nsize) & rho_eff=fltarr(nsize) & fv=fltarr(Nsize) FOR i=0L,Nsize-1 DO BEGIN readf,unit,st stv=str_sep(strtrim(strcompress(st),2),' ') a(i)=float(stv(0)) dloga(i)=float(stv(1)) a4dnda(i)=float(stv(2)) f_mix(i)=float(stv(3)) f_pol(i)=float(stv(4)) rho_eff(i)=float(stv(5)) fv(i)=float(stv(6)) ENDFOR close,unit free_lun,unit one_size_st={a:0.,dloga:0.,a4dnda:0.,f_mix:0.,f_pol:0.,rho_eff:0.,fv:0.} size_st=replicate(one_size_st,Nsize) size_st.a=a size_st.dloga=dloga size_st.a4dnda=a4dnda size_st.f_mix=f_mix size_st.f_pol=f_pol size_st.rho_eff=rho_eff size_st.fv=fv full_st={file:file,Nbulk:Nbulk,density:density,mass_frac:mass_frac,Nsize:Nsize,size_st:size_st} the_end: return,full_st END