Blame view

src/idl/dustem_make_polarization_sed_example.pro 5.67 KB
fd152fd2   Annie Hughes   cosmetic changes ...
1
PRO dustem_make_polarization_sed_example,model=model,filters=filters,help=help,outfile=outfile
21b2be95   Jean-Philippe Bernard   First commit
2
3
4
5
6

;+
; NAME:
;    dustem_make_polarization_sed_example
; PURPOSE:
fd152fd2   Annie Hughes   cosmetic changes ...
7
;    This is an example of how to generate an SED using DustEMWrap.
21b2be95   Jean-Philippe Bernard   First commit
8
;    It is meant to be an example to follow when writing your own
fd152fd2   Annie Hughes   cosmetic changes ...
9
;    programs using DustEMWrap
21b2be95   Jean-Philippe Bernard   First commit
10
; CATEGORY:
fd152fd2   Annie Hughes   cosmetic changes ...
11
;    DustEMWrap, Distributed, High-Level, User Example
21b2be95   Jean-Philippe Bernard   First commit
12
; CALLING SEQUENCE:
fd152fd2   Annie Hughes   cosmetic changes ...
13
;    dustem_make_polarization_sed_example[,model=][,filters=][,/help]
21b2be95   Jean-Philippe Bernard   First commit
14
15
16
17
18
19
20
; INPUTS:
;    None
; OPTIONAL INPUT PARAMETERS:
;    None
; OUTPUTS:
;    None
; OPTIONAL OUTPUT PARAMETERS:
fd152fd2   Annie Hughes   cosmetic changes ...
21
;    outfile = path+filename for .xcat output of the SED
21b2be95   Jean-Philippe Bernard   First commit
22
; ACCEPTED KEY-WORDS:
fd152fd2   Annie Hughes   cosmetic changes ...
23
;    model     = if set, name of the DustEM dust model to use (default='G17_MODELC')
21b2be95   Jean-Philippe Bernard   First commit
24
25
26
27
28
29
;    help      = If set print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    None
; RESTRICTIONS:
fd152fd2   Annie Hughes   cosmetic changes ...
30
31
;    The DustEM fortran code must be installed
;    The DustEMWrap IDL code must be installed
21b2be95   Jean-Philippe Bernard   First commit
32
33
34
; PROCEDURE:
;    None
; EXAMPLES
eab2e158   Jean-Philippe Bernard   did some (sometim...
35
36
;    dustem_make_polarization_sed_example
;    dustem_make_polarization_sed_example,model='G17_MODELD'
21b2be95   Jean-Philippe Bernard   First commit
37
; MODIFICATION HISTORY:
fd152fd2   Annie Hughes   cosmetic changes ...
38
39
40
;    Written by JPB June-2022
;    Evolution details on the DustEMWrap gitlab.
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
21b2be95   Jean-Philippe Bernard   First commit
41
42
43
;-

IF keyword_set(help) THEN BEGIN
fd152fd2   Annie Hughes   cosmetic changes ...
44
  doc_library,'dustem_make_polarization_sed_example'
21b2be95   Jean-Philippe Bernard   First commit
45
46
47
48
49
  goto,the_end
ENDIF

dustem_define_la_common

fd152fd2   Annie Hughes   cosmetic changes ...
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
IF keyword_set(model) THEN BEGIN
  use_model=strupcase(model)
ENDIF ELSE BEGIN
  use_model='G17_MODELD'    ;Default is one of the Guillet et al (2017) models since they treat dust polarisation properties
ENDELSE

IF keyword_set(filters) THEN BEGIN
  use_filters=strupcase(filters)
ENDIF ELSE BEGIN
  use_filters=['IRAS1','IRAS2','IRAS3','IRAS4','PACS3','SPIRE1','SPIRE2','SPIRE3','HFI2','HFI3','HFI4','HFI5','HFI6','LFI1','LFI2','LFI3']
ENDELSE

IF keyword_set(outfile) THEN BEGIN
  use_outfile=outfile
ENDIF ELSE BEGIN
  use_outfile='./polarization_sed.xcat'
ENDELSE

known_mdls=['MC10','DBP90','DL01','WD01_RV5P5B','DL07','J13','G17_MODELA','G17_MODELB','G17_MODELC','G17_MODELD'] 
pol_mdls=['G17_MODELA','G17_MODELB','G17_MODELC','G17_MODELD'] 
test_model = where(known_mdls eq use_model,ct)
if ct eq 0 then begin
   message,'ISM dust model '+use_model+' unknown',/continue
   message,'Known models are MC10,DBP90,DL01,WD01_RV5P5B,DL07,J13,G17_MODELA,G17_MODELB,G17_MODELC,G17_MODELD',/continue
   stop
end
test_model = where(pol_mdls eq use_model,ct)
if ct eq 0 then begin
   message,'The only models with polarisation are G17_MODELA,G17_MODELB,G17_MODELC,G17_MODELD',/continue
   stop
end


if keyword_set(verbose) then use_verbose=1

dustem_define_la_common
21b2be95   Jean-Philippe Bernard   First commit
86

fd152fd2   Annie Hughes   cosmetic changes ...
87
88
;dustem_init,mode=use_model,grain_keywords=['logn-chrg-spin','?','plaw-pol'],polarization=1
dustem_init,mode=use_model,polarization=1
21b2be95   Jean-Philippe Bernard   First commit
89
90
91
92
!dustem_verbose=1
!dustem_show_plot=1
!dustem_nocatch=1

fd152fd2   Annie Hughes   cosmetic changes ...
93
94
;=== initialize filters for the SED
Nfilt=n_elements(use_filters)
21b2be95   Jean-Philippe Bernard   First commit
95
sed=dustem_initialize_sed(Nfilt)
fd152fd2   Annie Hughes   cosmetic changes ...
96
97
98
sed.filter=use_filters
sed.wave=dustem_filter2wav(use_filters)
sed.instru=dustem_filter2instru(use_filters)
21b2be95   Jean-Philippe Bernard   First commit
99

fd152fd2   Annie Hughes   cosmetic changes ...
100
;=== initialize IQU and associated errors to avoid problems when checking SED in dustem_set_data.pro
21b2be95   Jean-Philippe Bernard   First commit
101
102
103
104
105
106
107
108
109
110
sed[*].StokesI=1.
sed.StokesQ=sed.StokesI/100.
sed.StokesU=sed.StokesI/100.
sed.SigmaII=sed.StokesI/100.
sed.SigmaQQ=sed.StokesI/100.
sed.SigmaUU=sed.StokesI/100.
sed.SigmaIQ=sed.StokesI/100.
sed.SigmaIU=sed.StokesI/100.
sed.SigmaQU=sed.StokesI/100.

fd152fd2   Annie Hughes   cosmetic changes ...
111
112
;=== initialize the !dustem_data structure that will be used internally
dustem_set_data,sed,sed
21b2be95   Jean-Philippe Bernard   First commit
113

724127ad   Jean-Philippe Bernard   clean the code a bit
114
;help,!dustem_data
21b2be95   Jean-Philippe Bernard   First commit
115
116

;=== Set which model parameters to use for the SED
01f481d4   Jean-Philippe Bernard   added dust polari...
117
118
pd = [ $
             '(*!dustem_params).G0', $                   ;G0
fd152fd2   Annie Hughes   cosmetic changes ...
119
120
121
122
             '(*!dustem_params).grains(0).mdust_o_mh',$  ;PAH0_MC10 mass fraction
             '(*!dustem_params).grains(1).mdust_o_mh',$  ;amCBE_0.3333x mass fraction   
             '(*!dustem_params).grains(2).mdust_o_mh', $    ;aSil2001BE6pctG_0.4x mass fraction
             'dustem_plugin_modify_dust_pol_2',  $     ;Dust polarization angle
01f481d4   Jean-Philippe Bernard   added dust polari...
123
124
125
126
127
             'dustem_plugin_synchrotron_1', $   ;Synchrotron spectra index
             'dustem_plugin_synchrotron_2', $   ;Synchrotron amplitude at 10 mm
             'dustem_plugin_synchrotron_3', $    ;Synchrotron polarization fraction
             'dustem_plugin_synchrotron_4'  $    ;Synchrotron polarization angle
             ]                   
fd152fd2   Annie Hughes   cosmetic changes ...
128
pd_true=[1.,7.8000E-04,7.8000E-04,7.8000E-04, 10.,3., 1.e-2, 0.3, 45.]
01f481d4   Jean-Philippe Bernard   added dust polari...
129

21b2be95   Jean-Philippe Bernard   First commit
130
131
132
133
134
Npar=n_elements(pd)  
ulimed=replicate(0,Npar)
llimed=replicate(1,Npar)
llims=replicate(0,Npar)

fd152fd2   Annie Hughes   cosmetic changes ...
135
136
137
dustem_init_params,use_model,pd,pd_true,pol=1
;dustem_init_parinfo,pd,pd_true,up_limited=ulimed,lo_limited=llimed,up_limits=ulims,lo_limits=llims
;dustem_init_plugins,pd
21b2be95   Jean-Philippe Bernard   First commit
138

fd152fd2   Annie Hughes   cosmetic changes ...
139
140
dustem_Ised=dustem_compute_sed(pd_true,ssti)   ;sst is not set on purpose, for dustem_compute_sed to compute the sed using fortran code
toto=dustem_compute_stokes(pd_true,sstqu,dustem_Qsed,dustem_Used) ;this procedure also allows for the extraction of the spectra
21b2be95   Jean-Philippe Bernard   First commit
141

724127ad   Jean-Philippe Bernard   clean the code a bit
142
;print,dustem_Qsed,dustem_Used
eab2e158   Jean-Philippe Bernard   did some (sometim...
143

4d1fdbd6   Jean-Philippe Bernard   added some synchr...
144
145
146
147
sed.stokesI=dustem_Ised
sed.stokesQ=dustem_Qsed
sed.stokesU=dustem_Used

724127ad   Jean-Philippe Bernard   clean the code a bit
148
;=== set arbitrary uncertainties to I,Q,U
eab2e158   Jean-Philippe Bernard   did some (sometim...
149
150
sed.sigmaII=abs(sed.StokesI*0.000001)
sed.sigmaQQ=abs(sed.StokesQ*0.000001)
21b2be95   Jean-Philippe Bernard   First commit
151
152
sed.sigmaUU=abs(sed.StokesU*0.000001)

eab2e158   Jean-Philippe Bernard   did some (sometim...
153
154
155
156
sed.sigmaIQ=0.
sed.sigmaIU=0.
sed.sigmaQU=0.

724127ad   Jean-Philippe Bernard   clean the code a bit
157
158
;print,sed.stokesI,sed.stokesQ,sed.stokesU
;print,sed.sigmaII,sed.sigmaQQ,sed.sigmaUU
eab2e158   Jean-Philippe Bernard   did some (sometim...
159

4d1fdbd6   Jean-Philippe Bernard   added some synchr...
160
161
162
;==== fill in dependent columns of the SED.
sed=dustem_fill_sed_dependent_columns(sed)

fd152fd2   Annie Hughes   cosmetic changes ...
163
164
165
;======== save the SED to a file
write_xcat,sed,use_outfile
message,'Wrote '+use_outfile,/continue
21b2be95   Jean-Philippe Bernard   First commit
166

fd152fd2   Annie Hughes   cosmetic changes ...
167
168
169
170
;======== move the file to the Data/EXAMPLE_OBSDATA/ subdirectory 
;filename_final=!dustem_wrap_soft_dir+'/Data/EXAMPLE_OBSDATA/my_example_SED_###.xcat'
;str='cp '+use_outfile+' '+filename_final
;message,'Do '+str+' to make change permanent',/continue
2a47d796   Jean-Philippe Bernard   improved
171

21b2be95   Jean-Philippe Bernard   First commit
172
173
the_end:

fd152fd2   Annie Hughes   cosmetic changes ...
174
END