Blame view

src/idl/dustem_plugin_freefree.pro 2.95 KB
759a527d   Ilyes Choubani   general update
1
FUNCTION dustem_plugin_freefree,key=key,val=val,scope=scope,paramtag=paramtag,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
  output=0.
  goto,the_end
ENDIF

;default values of input parameters
Tgas=10000.                 ;default gas temperature
Amplitude=1.          ;Amplitude
759a527d   Ilyes Choubani   general update
47
paramtag=['T_gas (K)','Amp']
b5ccb706   Jean-Philippe Bernard   improved to fit p...
48
49
50
51
52
53
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

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

;stop
9818c4c0   Jean-Philippe Bernard   cant remember wha...
69
;use_method='Deschenes2008'
b5ccb706   Jean-Philippe Bernard   improved to fit p...
70
;use_method='WallsGabaud1998'
9818c4c0   Jean-Philippe Bernard   cant remember wha...
71
use_method='Dickinson2003_norm'
b5ccb706   Jean-Philippe Bernard   improved to fit p...
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

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...
106
scope='ADD_SED'
452c334e   Ilyes Choubani   Implementation Of...
107

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

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