FUNCTION dustem_read_chrg,file,silent=silent,help=help ;+ ; NAME: ; dustem_read_chrg ; ; PURPOSE: ; reads information relating to grain charge from the ; appropriate .DAT files ; ; CATEGORY: ; DustEMWrap, Distributed, LowLevel, Initialization ; ; CALLING SEQUENCE: ; st=dustem_read_chrg(file) ; ; INPUTS: ; file : 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: ; Files are written ; ; 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_chrg' full_st=0. goto,the_end ENDIF ;CAUTION: the data is read as strings ... st='' Nmax=10000L sts=strarr(Nmax) openr,unit,file,/get_lun ;==read comments str='' comments=[''] first_char='#' Ncomments=0L WHILE first_char EQ '#' DO BEGIN readf,unit,str first_char=strmid(str,0,1) comments=[comments,str] IF first_char EQ '#' THEN Ncomments=Ncomments+1 ENDWHILE comments=comments[1:*] IF Ncomments NE 0 THEN comments=comments[0:Ncomments-1] ;stop ;==read data ;last line in previous WHILE loop is first data tmp = [str] WHILE NOT EOF(unit) DO BEGIN readf, unit, str tmp = [tmp, str] ENDWHILE ;==save and return structure full_st={file:file,fchrg:tmp,comments:comments} close,unit free_lun,unit the_end: RETURN,full_st END