PRO dustem_set_params,params ;if empty description, do nothing ind=where(*(*!dustem_fit).param_descs EQ '',count) IF count EQ n_elements(*(*!dustem_fit).param_descs) THEN BEGIN message,'param_descs not set. Doing nothing',/continue stop goto,the_end ENDIF Nparams=n_elements(*(*!dustem_fit).param_descs) dustem_set_func_ind,*(*!dustem_fit).param_descs,params ;SET THE PARAMETER VALUES IN DUSTEM INPUT FILES FOR i=0L,Nparams-1 DO BEGIN IF (*(*!dustem_fit).param_func)(i) EQ 0 THEN BEGIN str=(*(*!dustem_fit).param_descs)(i)+'=params(i)' toto=execute(str) ;print,params[i] IF !dustem_verbose NE 0 THEN message,str,/info ENDIF ELSE BEGIN length=strlen((*(*!dustem_fit).param_descs)(i)) strr=strmid((*(*!dustem_fit).param_descs)(i),14,length-16) ; stop IF strr NE 'continuum' AND strr NE 'freefree' AND strr NE 'synchrotron' THEN BEGIN ;This is not very clean programming .... IF strr eq 'isrf2' then strr = 'isrf' IF !dustem_which EQ 'VERSTRAETE' THEN BEGIN ddir=!dustem_dat+'les_DAT/' ENDIF ELSE BEGIN ddir=!dustem_dat ENDELSE ; JPB: Caution this line reads ISRF.DAT through an execute statement str='(*!dustem_params).'+strr+'=dustem_read_'+strr+'('+"'"+ddir+strupcase(strr)+'.DAT'+"'"+',/silent)' toto=execute(str) IF toto NE 1 then BEGIN message,'Could not execute ',str ENDIF IF !dustem_verbose NE 0 THEN message,str,/info ENDIF ENDELSE ENDFOR dustem_write_all,*!dustem_params,!dustem_dat the_end: END