Blame view

src/idl/dustem_plugin_freefree.pro 2.93 KB
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
1
FUNCTION dustem_plugin_freefree,key=key,val=val,scope=scope,help=help
b5ccb706   Jean-Philippe Bernard   improved to fit p...
2
3
4

;+
; NAME:
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
5
;    dustem_plugin_freefree
b5ccb706   Jean-Philippe Bernard   improved to fit p...
6
; PURPOSE:
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
7
;    DUSTEM plugin to compute free-free emission
b5ccb706   Jean-Philippe Bernard   improved to fit p...
8
9
10
; CATEGORY:
;    DUSTEM Wrapper
; CALLING SEQUENCE:
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
11
;    freefree=dustem_plugin_freefree([,key=][,val=])
b5ccb706   Jean-Philippe Bernard   improved to fit p...
12
13
14
15
16
17
18
19
; INPUTS:
;    None
; OPTIONAL INPUT PARAMETERS:
;    key  = input parameter number
;    val  = input parameter value
; OUTPUTS:
;    freefree = free-free spectrum (on dustem wavelengths)
; OPTIONAL OUTPUT PARAMETERS:
403e9eaa   Jean-Philippe Bernard   modified to match...
20
;    scope = scope of the plugin
b5ccb706   Jean-Philippe Bernard   improved to fit p...
21
22
23
24
25
26
27
28
29
; ACCEPTED KEY-WORDS:
;    help                  = if set, print this help
; COMMON BLOCKS:
;    None
; SIDE EFFECTS:
;    None
; RESTRICTIONS:
;    None
; PROCEDURE:
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
30
;    This is a dustem plugin
b5ccb706   Jean-Philippe Bernard   improved to fit p...
31
; EXAMPLES
403e9eaa   Jean-Philippe Bernard   modified to match...
32
;    dustem_init
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
33
;    vec=dustem_plugin_freefree(scope=scope)
b5ccb706   Jean-Philippe Bernard   improved to fit p...
34
35
36
37
38
; MODIFICATION HISTORY:
;    Written by JPB 
;-

IF keyword_set(help) THEN BEGIN
cbf75ef0   Ilyes Choubani   dustem_init_plugi...
39
  doc_library,'dustem_plugin_freefree'
b5ccb706   Jean-Philippe Bernard   improved to fit p...
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  output=0.
  goto,the_end
ENDIF

;default values of input parameters
Tgas=10000.                 ;default gas temperature
Amplitude=1.          ;Amplitude

IF keyword_set(key) THEN BEGIN 
  a=where(key EQ 1,count1)
  b=where(key EQ 2,count2)
  IF count1 NE 0 then Tgas=(val(a))(0)
  IF count2 NE 0 then Amplitude=(val(b))(0)
ENDIF
403e9eaa   Jean-Philippe Bernard   modified to match...
54
55
56
57
58
59
60
61

;IF !dustem_which EQ 'DESERT' THEN BEGIN
;  lambir=((*!dustem_params).gemissiv.lambir)
;ENDIF ELSE BEGIN
;  lambir=((*!dustem_params).lambda.lambda)
;ENDELSE
;replaced by the following to ease the life of plugins writters
lambir=dustem_get_wavelengths()
b5ccb706   Jean-Philippe Bernard   improved to fit p...
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

cmic=3.e14
nu=cmic/lambir   ;Hz
mjy=1           ;output is in MJy/sr
lambir_ref=10000.

;stop
;use_method='Deschenes2008'
;use_method='WallsGabaud1998'
;use_method='Halpha_scaled'
use_method='Dickinson2003_norm'

CASE use_method OF
    'WallsGabaud1998':BEGIN
		em=1.   ;This is a stupid value for the Emission measure. Result will be rescaled based on I_halpha_R anyway
		output=intensity_free_free(nu,Tgas,em,I_halpha_R=I_halpha_R,nHe=nHe,ergs=ergs,mjy=mjy)
		fact=Amplitude/I_halpha_R
        ;=== normalize to the requested Halpha value.
		output=output*fact
	END
    'WallsGabaud1998_scaled':BEGIN
		em=1.   ;This is a stupid value for the Emission measure. Result will be rescaled based on I_halpha_R anyway
		output=intensity_free_free(nu,Tgas,em,I_halpha_R=I_halpha_R,nHe=nHe,ergs=ergs,mjy=mjy)
		norm=interpol(output,lambir,lambir_ref)
		output=output/norm*Amplitude
	END
	'Deschenes2008':BEGIN
		beta_freefree=2.+1./(10.48+1.5*alog(Tgas/8.e3)-alog(nu/1.e9))
		output=nu^(-1.*beta_freefree)
		norm=interpol(output,lambir,lambir_ref)
		output=output/norm*Amplitude
	END
	'Dickinson2003_norm':BEGIN
		;stop
		em=1.
		T4=Tgas/1.e4
		nu_ghz=nu/1.e9
		a=0.366*(nu_ghz/1.e9)^(-0.15)*(alog(4.995*1e-2*(nu_ghz)^(-1.))+1.5*alog(Tgas))
		Tb=8.369e3*a*(nu_ghz)^(-2.)*T4^0.667*10^(0.029*T4)*(1.+0.08)  ;in mK for 1 Rayleigh
		convert_mk_mjy, lambir, Tb, I_Mjy, /RJ
		norm=interpol(I_Mjy,lambir,lambir_ref)
		output=I_Mjy/norm*Amplitude
	END
ENDCASE

403e9eaa   Jean-Philippe Bernard   modified to match...
107
scope='ADD_SED'
452c334e   Ilyes Choubani   Implementation Of...
108

d66feb17   Ilyes Choubani   Fix to some routines
109
 
452c334e   Ilyes Choubani   Implementation Of...
110

b5ccb706   Jean-Philippe Bernard   improved to fit p...
111
112
113
114
the_end:
RETURN,output
  
END