PRO dustem_write_chrg,dir,st,help=help ;+ ; NAME: ; dustem_write_chrg ; ; PURPOSE: ; writes information relating to grain charge in the ; appropriate .DAT files ; ; CATEGORY: ; DustEMWrap, Distributed, LowLevel, Initialization ; ; CALLING SEQUENCE: ; dustem_write_chrg,dir,st ; ; INPUTS: ; st : dustem data structure ; file : output directory for file to be written ; ; OPTIONAL INPUT PARAMETERS: ; None ; ; OUTPUTS: ; None ; ; 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. ;- ;Writes ALL needed CHRG_xxx.DAT files in temporary dustem directory IF keyword_set(help) THEN BEGIN doc_library,'dustem_write_chrg' goto,the_end ENDIF IF ptr_valid(st[0]) THEN BEGIN comments=(*st[0]).comments Ncomments=n_elements(comments) ENDIF ELSE BEGIN Ncomments=0L ENDELSE Nst=n_elements(st) ;stop ; frmts=[ $ ; '(F8.5,F8.5,F8.5,F8.5,E8.5,E8.5,F8.5)', $ ; '(F8.5,F8.5,F8.5,F8.5,F8.5,F8.5)', $ ; '(F8.5,F8.5,F8.5,F8.5,F8.5)', $ ; '(F8.5,F8.5,F8.5,F8.5,F8.5)', $ ; '(F8.5)'] frmts=[ $ '(A)', $ '(A)', $ '(A)', $ '(A)', $ '(A)'] ;stop ;Start loop over type of grain FOR i=0L,Nst-1 DO BEGIN ;Test if the pointer is pointing to something IF ptr_valid(st[i]) THEN BEGIN frmts=replicate('(A)',n_elements((*st(i)).fchrg)) ;Get filename ffile=(*st[i]).file fv=str_sep(ffile,'/') file=dir+fv(n_elements(fv)-1) ;Open file message,'Will write CHRG file '+file,/info openw,unit,file,/get_lun ;Print comments IF Ncomments NE 0 THEN BEGIN FOR ii=0,Ncomments-1 DO BEGIN printf,unit,comments[ii] ENDFOR ENDIF ;Print data FOR k=0L,n_elements((*st[i]).fchrg)-1 DO BEGIN printf,unit,((*st[i]).fchrg)[k],format=frmts[k] ENDFOR close,unit free_lun,unit ENDIF ELSE BEGIN ;left blank intentionally ENDELSE ENDFOR the_end: END