dustem_set_params.pro
1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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