/usr/share/gnudatalanguage/astrolib/ismeuv.pro is in gdl-astrolib 2018.02.16+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 49 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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | function ismeuv,wave,Hcol,HeIcol,HeIIcol,Fano=fano
;+
; NAME:
; ISMEUV
; PURPOSE:
; Compute the continuum interstellar EUV optical depth
;
; EXPLANATION:
; The EUV optical depth is computed from the photoionization of
; hydrogen and helium.
;
; CALLING SEQUENCE:
; tau = ISMEUV( wave, Hcol, [ HeIcol, HeIIcol, /Fano ]
;
; INPUTS:
; wave - Vector of wavelength values (in Angstroms). Useful range is
; 40 - 912 A; at shorter wavelengths metal opacity should be
; considered, at longer wavelengths there is no photoionization.
; Hcol - Scalar specifying interstellar hydrogen column density in cm-2.
; Typical values are 1E17 to 1E20.
;
; OUTPUT:
; tau - Vector giving resulting optical depth, same number of elements
; as wave, non-negative values. To obtain the attenuation of
; an input spectrum, multiply by exp(-tau).
;
; OPTIONAL INPUTS:
; HeIcol - Scalar specifying neutral helium column density in cm-2.
; Default is 0.1*Hcol (10% of hydrogen column)
; HeIIcol - Scalar specifying ionized helium column density in cm-2
; Default is 0 (no HeII)
;
; OPTIONAL INPUT KEYWORDS:
; /FANO - If this keyword is set and non-zero, then the 4 strongest
; auto-ionizing resonances of He I are included. The shape
; of these resonances is given by a Fano profile - see Rumph,
; Bowyer, & Vennes 1994, AJ, 107, 2108. If these resonances are
; included then the input wavelength vector should have
; a fine (>~0.01 A) grid between 190 A and 210 A, since the
; resonances are very narrow.
; EXAMPLE:
; (1) One has a model EUV spectrum with wavelength, w (in Angstroms) and
; flux,f . Plot the model flux after attenuation by 1e18 cm-2 of HI,
; with N(HeI)/N(HI) = N(HeII)/N(HI) = 0.05
;
; IDL> Hcol = 1e18
; IDL> plot, w, f*exp(-ismeuv(w, Hcol, .05*Hcol, .05*Hcol))
;
; (2) Plot the cross-section of HeI from 180 A to 220 A for 1e18 cm-2
; of HeI, showing the auto-ionizing resonances. This is
; Figure 1 in Rumph et al. (1994)
;
; IDL> w = 180 + findgen(40000)*0.001 ;Need a fine wavelength grid
; IDL> plot, w, ismeuv(w, 0, 1e18, /Fano)
;
; NOTES:
; (1) The more complete program ismtau.pro at
; http://hea-www.harvard.edu/PINTofALE/pro/ extends this work
; to shorter wavelengths and includes metal and molecular hydrogen
; opacities
; (2) This program only compute continuum opacities, and for example,
; the He ionization edges at 504 A and 228 A are blurred by
; converging line absorptions (Dupuis et al. 1995. ApJ, 455, 574)
;
; HISTORY:
; Written, W. Landsman October, 1994
; Adapted from ism.c at anonymous ftp site cea-ftp.cea.berkeley.edu
; by Pat Jelinsky, Todd Rumph & others.
; Avoid underflow messages, support double prec. W. Landsman October 2003
; Fix error in He II optical Depth J. Slavin/WL Sep 2013
;-
On_error,2
if N_params() LT 2 then begin
print,'Syntax - tau = ISMEUV( wave, Hcol, [ HeIcol, HeIIcol, /FANO] )'
return,-1
endif
if N_elements( HeIcol) EQ 0 then HeIcol = 0.1*Hcol
if N_elements( HeIIcol) EQ 0 then HeIIcol = 0.0*Hcol
; Compute attenuation due to photoionization of hydrogen. See Spitzer
; (Physical processes in the interstellar medium), page 105
if (size(wave,/TNAME) EQ 'DOUBLE') then begin
pi = !dpi
double = 1b
endif else begin
pi = !pi
double = 0b
endelse
ratio = wave/911.75
tauh = wave*0.
good = where(ratio LT 1, Ngood)
minexp = alog((machar(double=double)).xmin) ;Min exponent to avoid underflow
if Ngood GT 0 then begin
r = ratio[good]
z = sqrt( r/(1.0-r) )
denom = replicate(1.0, Ngood)
y = -2.*pi*z
good1 = where(y GT minexp, Ngood1)
if Ngood1 GT 0 then denom[good1] = (1.0 - exp(y[good1]))
tauh[good] = Hcol * 3.44e-16 * (r^4)*exp(-4.0*z*atan(1/z)) / denom
endif
; Now compute photoionization cross-section of He II; just like hydrogen but
; with a nuclear charge Z = 2
tauheII = wave*0.
ratio = 4. * wave/911.75
good = where(ratio LT 1, Ngood)
if Ngood GT 0 then begin
r = ratio[good]
z = sqrt( r/(1.0-r) )
denom = replicate(4.0, Ngood) ;Z^2 Bug fix Sep 13
y = -2*PI*z
good1 = where(y GT minexp, Ngood1)
if Ngood1 GT 0 then denom[good1] *= (1.0 - exp(y[good1]))
tauheII[good] = heiicol * 3.44e-16 * (r^4)*exp(-4.0*z*atan(1/z)) / denom
endif
; Polynomial coefficients for He I cross-section taken from experimental
; data by Marr & West (1976)
; c1 for wavelengths greater than 46 A
c1 = [-2.953607d+01, 7.083061d+00, 8.678646d-01,-1.221932d+00, $
4.052997d-02, 1.317109d-01, -3.265795d-02, 2.500933d-03 ]
; c2 for wavelengths less than 46 A.
c2 = [ -2.465188d+01, 4.354679d+00, -3.553024d+00, 5.573040d+00, $
-5.872938d+00, 3.720797d+00, -1.226919d+00, 1.576657d-01 ]
; parameters of autoionization resonances for 4 strongest He I resonances
; Numbers are from Oza (1986), Phys Rev. A, 33, 824 -- nu and gamma
; and Fernley et al., J. Phys. B., 20, 6457, 1987 -- q
q = [2.81d, 2.51d, 2.45d, 2.44d ]
nu = [1.610d, 2.795d, 3.817d, 4.824d ]
fano_gamma = [2.64061d-03, 6.20116d-04, 2.56061d-04, 1.320159d-04 ]
esubi = 3.0d - 1.0d/nu^2 + 1.807317d
tauHeI = wave*0.
good = where( wave LT 503.97, Ngood )
if Ngood GT 0 then begin
x = alog10(wave[good])
y = x*0.
good1 = where(wave LT 46.0, Ngood1 )
if Ngood1 GT 0 then y[good1] = poly( x[good1], c2)
good2 = where(wave GE 46.0, Ngood2 )
if Ngood2 GT 0 then begin
y[good2] = poly( x[good2], c1)
if keyword_set(fano) then begin
epsilon = 911.2671/wave
for i=0,3 do begin ;Loop over first four HeI resonances
x = 2.0 * ((epsilon-esubi[i] )/ fano_gamma[i] )
y = y + alog10( (x - q[i])^2/ (1 + x*x ) )
endfor
endif
endif
tauHeI[good] = HeIcol * 10^y
endif
; Total optical depth from HI, HeII and HeI
return, tauH + tauHeII + tauHeI
end
|