Blame view

src/idl/dustem_plugin_modify_dust_pol.pro 3.03 KB
e6ef3674   Ilyes Choubani   removed st keywor...
1
FUNCTION dustem_plugin_modify_dust_pol, key=key, val=val, scope=scope, paramtag=paramtag, help=help
6cde48ea   Ilyes Choubani   missing procedure
2
3
4
5
6

;+
; NAME:
;    dustem_plugin_modify_dust_pol
; PURPOSE:
eab2e158   Jean-Philippe Bernard   did some (sometim...
7
;    modifies stokes Q,U values for dust polarization in st according to the given keywords and values
6cde48ea   Ilyes Choubani   missing procedure
8
9
10
; CATEGORY:
;    DUSTEM Wrapper
; CALLING SEQUENCE:
eab2e158   Jean-Philippe Bernard   did some (sometim...
11
;    a=dustem_plugin_modify_dust_pol(st,[key=][val=][,scope=][,paramtag=][,/help])
6cde48ea   Ilyes Choubani   missing procedure
12
; INPUTS:
eab2e158   Jean-Philippe Bernard   did some (sometim...
13
;    st = dustem structure
6cde48ea   Ilyes Choubani   missing procedure
14
; OPTIONAL INPUT PARAMETERS:
eab2e158   Jean-Philippe Bernard   did some (sometim...
15
16
;    key  = input parameter numbers (first = polarization fraction in %, default=1.%, second=polarization angle, default=0.)
;    val  = input parameter values
6cde48ea   Ilyes Choubani   missing procedure
17
18
19
; OUTPUTS:
;    out = array containing the stokes emission parameters associated to the dust/synchrotron component or a concatenated version for both
; OPTIONAL OUTPUT PARAMETERS:
eab2e158   Jean-Philippe Bernard   did some (sometim...
20
21
;    scope = if set, returns only the scope of the pluggin
;    paramtag = if set, returns only the parameter tags
6cde48ea   Ilyes Choubani   missing procedure
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; ACCEPTED KEY-WORDS:
;    help                  = if set, print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    None
; RESTRICTIONS:
;    The dustem fortran code must be installed
;    The dustem idl wrapper must be installed
; PROCEDURE:
;    This is a dustem plugin
;-

IF keyword_set(help) THEN BEGIN
eab2e158   Jean-Philippe Bernard   did some (sometim...
36
  doc_library,'dustem_plugin_modify_dust_pol'
6cde48ea   Ilyes Choubani   missing procedure
37
  out=0.
eab2e158   Jean-Philippe Bernard   did some (sometim...
38
  GOTO,the_end
6cde48ea   Ilyes Choubani   missing procedure
39
ENDIF
1fcff162   Ilyes Choubani   removed stop from...
40
       
afde94a3   Ilyes Choubani   general update
41

91e991b5   Ilyes Choubani   Applying correcti...
42

5f04fa07   Ilyes Choubani   general update
43
IF keyword_set(scope) THEN BEGIN
91e991b5   Ilyes Choubani   Applying correcti...
44
    out=0
01612ee4   Ilyes Choubani   General update: I...
45
    GOTO, the_end
5f04fa07   Ilyes Choubani   general update
46
47
48
ENDIF 

IF keyword_set(paramtag) THEN BEGIN
5f04fa07   Ilyes Choubani   general update
49
    out=0.
01612ee4   Ilyes Choubani   General update: I...
50
    GOTO, the_end
5f04fa07   Ilyes Choubani   general update
51
52
ENDIF 

01612ee4   Ilyes Choubani   General update: I...
53
;Retrieving this sytem variable  (dustem output)  
91e991b5   Ilyes Choubani   Applying correcti...
54
55
56
57
if ~isa(!dustem_current) then begin
    out =0 
    goto, the_end 
ENDIF else st=(*!dustem_current)
01612ee4   Ilyes Choubani   General update: I...
58

eab2e158   Jean-Philippe Bernard   did some (sometim...
59
;below are the default values for the plugin parameters
d571675e   Jean-Philippe Bernard   went back to a mu...
60
61
smallp_fact=1.     ;This is the default multiplicative factore to the dust polarization
psi=0.             ;This is the default polarization angle
5f04fa07   Ilyes Choubani   general update
62

6cde48ea   Ilyes Choubani   missing procedure
63
64
65
IF keyword_set(key) THEN BEGIN 
  ind1=where(key EQ 1,count1)
  ind2=where(key EQ 2,count2)
d571675e   Jean-Philippe Bernard   went back to a mu...
66
  IF count1 NE 0 THEN smallp_fact=val[ind1[0]] ; setting smallp from pd - this is another polarization fraction (constant) that is applied to the total dust emission
68598bce   Ilyes Choubani   reducing number o...
67
  IF count2 NE 0 THEN psi=val[ind2[0]] & !dustem_psi = psi ; setting psi from pd.  !dustem_psi here helps for the plotting.   
6cde48ea   Ilyes Choubani   missing procedure
68
69
ENDIF

6cde48ea   Ilyes Choubani   missing procedure
70
fact = 1.e4*(*!dustem_HCD)/(4.*!pi)/(3.e8/1.e-6/((st.polsed).wav))*1.e20/1.e7
eab2e158   Jean-Philippe Bernard   did some (sometim...
71
72
P=((st.polsed).em_tot)*fact   ; This is the polarized emission P
I=((st.sed).em_tot)*fact      ; This is the total intensity emission I
5f04fa07   Ilyes Choubani   general update
73
    
6cde48ea   Ilyes Choubani   missing procedure
74
75
Nwaves=(size(I))[1]

19961cc2   Ilyes Choubani   fixing NaN values...
76
77
78
79
;0/0 division in frac
;since we divide by I we only need to avoid its null indices 

indI = where(I ne 0, countI)
f59b4fee   Ilyes Choubani   added remoced com...
80
if countI ne 0 then frac_model = P*0. & frac_model[indI] = P[indI]/I[indI] ;This is the polarization fraction in the model
19961cc2   Ilyes Choubani   fixing NaN values...
81
82


d571675e   Jean-Philippe Bernard   went back to a mu...
83
frac_used=frac_model*smallp_fact
6cde48ea   Ilyes Choubani   missing procedure
84

eab2e158   Jean-Philippe Bernard   did some (sometim...
85
psi_used = replicate(psi,Nwaves)
5f04fa07   Ilyes Choubani   general update
86

eab2e158   Jean-Philippe Bernard   did some (sometim...
87
polar_ippsi2iqu,I,Q,U,frac_used,psi_used
6cde48ea   Ilyes Choubani   missing procedure
88

19961cc2   Ilyes Choubani   fixing NaN values...
89

6ddd46ab   Ilyes Choubani   removed extra dim...
90
out=fltarr(Nwaves,3) ; modified this. This is the only plugin that has this number of outputs.
6cde48ea   Ilyes Choubani   missing procedure
91

eab2e158   Jean-Philippe Bernard   did some (sometim...
92
;degtorad = !pi/180
6cde48ea   Ilyes Choubani   missing procedure
93
94
95
96

out[*,0]=I
out[*,1]=Q
out[*,2]=U
6ddd46ab   Ilyes Choubani   removed extra dim...
97
98
99
; out[*,3]=frac_used
; ;out[*,4]=0.5*atan(U,Q)/degtorad
; out[*,4]=psi_used
6cde48ea   Ilyes Choubani   missing procedure
100

eab2e158   Jean-Philippe Bernard   did some (sometim...
101
RETURN, out
6cde48ea   Ilyes Choubani   missing procedure
102
103

the_end:
91e991b5   Ilyes Choubani   Applying correcti...
104
105
106
scope='REPLACE_POLSED'
paramtag=['p','Psi (deg)']

6cde48ea   Ilyes Choubani   missing procedure
107

eab2e158   Jean-Philippe Bernard   did some (sometim...
108
END
6cde48ea   Ilyes Choubani   missing procedure