FUNCTION dustem_read_dustem,file,silent=silent,help=help ;+ ; NAME: ; dustem_read_dustem ; ; PURPOSE: ; reads information relating to the emission from each grain type ; from the corresponding .DAT file ; ; CATEGORY: ; DustEMWrap, Distributed, LowLevel, Initialization ; ; CALLING SEQUENCE: ; st=dustem_read_dustem(file) ; ; INPUTS: ; file : output file to be read ; ; OPTIONAL INPUT PARAMETERS: ; None ; ; OUTPUTS: ; st : dustem data structure ; ; OPTIONAL OUTPUT PARAMETERS: ; None ; ; 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_dustem' st=0. goto,the_end ENDIF ;=== determine the number of grains str=' ' OPENR,unit,file,/get_lun readf,unit,str CLOSE,unit free_lun,unit str=strcompress(str) str=strtrim(str,2) vv=str_sep(str,' ') Ngrains=n_elements(vv)-2 ;Ngrains=!dustem_params.Ngrains ;Read model output instruc='readcol,file,wav,' FOR i=0L,Ngrains-1 DO BEGIN instruc=instruc+'em_grain_'+strtrim(i+1,2)+',' ENDFOR instruc=instruc+'em_tot,silent=silent' toto=execute(instruc) ;stop ;readcol,wav,em_pah,em_vsg,em_bg,em_tot,silent=silent nlines=n_elements(wav) ;one_st={wav:0.,em_pah:0.,em_vsg:0.,em_bg:0.,em_tot:0.} instruc='one_st={wav:0.,' FOR i=0L,Ngrains-1 DO BEGIN instruc=instruc+'em_grain_'+strtrim(i+1,2)+':0.,' ENDFOR instruc=instruc+'em_tot:0.}' toto=execute(instruc) ;stop st=replicate(one_st,Nlines) st.wav=wav FOR i=0L,Ngrains-1 DO BEGIN instruc='st.(i+1)='+'em_grain_'+strtrim(i+1,2) toto=execute(instruc) ;st.em_vsg=em_vsg ;st.em_bg=em_bg ENDFOR st.em_tot=em_tot the_end: return,st END