./
al_nlte.pro
This file contains a set of functions for use with NLTE grids from Nordlander, T., & Lind, K. 2017, A&A, 607, A75.
The grids and routines are available for download from here.
Execute .r al_nlte
to interactively load a grid of LTE and NLTE calculations,
and compile the interpolation routines. Instructions will be printed to
screen, including the coverage in parameter space and the line data.
Typical use cases include interpolating NLTE curves of growth using
find_abund
, or applying NLTE corrections to LTE abundances using
interp_nlte_to_lte
.
Note that equivalent widths are communicated in units of pm (=10^-9 m) throughout these routines, and stored as log(EW/pm) in the grids.
Examples
Example run for Arcturus, using NLTE_Al_mean3D_NordlanderLind2017.sav:
.compile al_nlte
restore, 'NLTE_Al_mean3D_NordlanderLind2017.sav' ; load data
Teff = 4247. & logg = 1.59 & FeH = -0.52 ; reference parameters from Jofre et al. 2014
line = [2,3,4,5,6,7,11,15,16,17,18,19,20,21] & n = n_elements(line)
; These <3D> LTE abundances were measured by profile fitting:
LTE = [6.266,6.214,6.217,6.207,6.241,6.245,6.186,6.349,6.421,6.290,6.281,6.266,6.344,6.344]
LTE = LTE - 6.43 - FeH ; translate A(Al) to [Al/Fe]
; Now compute NLTE corrections:
dNLTE = interp_nlte_to_lte(line, LTE, replicate(Teff,n), replicate(logg,n), replicate(FeH,n), EW=EW, ltegrid=ltegrid, nltegrid=nltegrid, warnings=warnings)
forprint,textout=2, /stdout, nltegrid.wavelength[line], LTE+dNLTE, LTE, dNLTE, EW*10, format='f10.3, 3f7.3, f10.2'
; Wavelength NLTE LTE dNLTE EW [mA]
; 6696.021 0.245 0.356 -0.111 88.08
; 6698.671 0.232 0.304 -0.072 60.36
; 7835.314 0.214 0.307 -0.093 65.35
; 7836.134 0.186 0.297 -0.111 81.16
; 8772.871 0.147 0.331 -0.184 99.09
; 8773.900 0.117 0.335 -0.218 120.60
; 10872.972 0.230 0.276 -0.046 29.70
; 13123.420 0.175 0.439 -0.264 536.62
; 13150.753 0.226 0.511 -0.285 457.62
; 16718.952 0.175 0.380 -0.205 444.44
; 16750.534 0.154 0.371 -0.217 556.92
; 16763.331 0.263 0.356 -0.093 294.92
; 21093.082 0.227 0.434 -0.207 357.34
; 21163.762 0.179 0.434 -0.255 435.12
.compile al_nlte
restore, 'NLTE_Al_MARCS_NordlanderLind2017.sav'
c = mrdfits('carretta_etal_2009.fit', 1)
n = n_elements(c)
LTE = c.__al_fe_ & FeH = c.__a_h_
; Their analysis is based on the 6696-6698 A doublet. We assume here that
; the NLTE correction of the 6696 line is representative:
dNLTE = interp_nlte_to_lte(replicate(2, n), LTE, c.teff, c.logg, FeH, EW=EW, ltegrid=ltegrid, nltegrid=nltegrid)
NLTE = dNLTE + LTE
plot, FeH, NLTE, psym=4, xtitle='[Fe/H]', ytitle='[Al/Fe]', title='NLTE corrected abundances'
for i=0,n-1 do oplot, FeH[i]+[0,0], [LTE[i], NLTE[i]]

Author information
- Author
Thomas Nordlander, RSAA/ANU - Website
- History
Change history:
Written, 2017-12-20, TN Modified, 2018-01-22, TN: completely rewritten to use grids stored in structures. This improves portability and compatibility with GDL.
Other file information
- Uses:
Routines
Routines from al_nlte.pro
result = find_abund(line, teff, logg, feh, ew, grid=grid [, warnings=float/fltarr(n)])
Interpolate the curves of growth to a given equivalent width (units of pm).
result = find_ew(line, teff, logg, feh [, xfe], grid=grid [, warnings=float/fltarr(n)])
Interpolate the curves of growth to a given abundance.
result = interp_nlte_to_lte(line, xfe, teff, logg, feh [, ew=float/fltarr(n)], ltegrid=grid, nltegrid=grid [, warnings=float/fltarr(n)])
Find the abundance correction at a given LTE abundance [X/Fe].
result = interp_lte_to_nlte(line, xfe, teff, logg, feh [, ew=float/fltarr(n)], ltegrid=grid, nltegrid=grid [, warnings=float/fltarr(n)])
Find the abundance correction at a given NLTE abundance [X/Fe].
Routine details
top source find_abund
result = find_abund(line, teff, logg, feh, ew, grid=grid [, warnings=float/fltarr(n)])
Interpolate the curves of growth to a given equivalent width (units of pm).
Note that the input parameters may be vectors if equivalent widths are given,
in which case the output will also be vectors. All parameters must have the
same length. A special case is allowed, where all parameters except EW
are scalar.
Return value
The abundance (float
/lonarr(n)
) is returned.
Parameters
- line in required type=long/lonarr(n)
Line indices
- teff in required type=float/fltarr(n)
- logg in required type=float/fltarr(n)
- feh in required type=float/fltarr(n)
- ew in required type=float/fltarr(n)
Equivalent width in units of pm.
Keywords
- grid in required type=grid
A structure containing an LTE or NLTE grid
- warnings out optional type=float/fltarr(n)
Warnings and errors. These use a floating scale 0-1 to indicate the fraction of nodes used for interpolation that may be unreliable due to extrapolation.
top source find_ew
result = find_ew(line, teff, logg, feh [, xfe], grid=grid [, warnings=float/fltarr(n)])
Interpolate the curves of growth to a given abundance.
If no abundance is provided, then grid.abund
will be used and an array of
equivalent widths (the curve of growth) is returned.
Note that the input parameters may be vectors, in which case the output will
also be vectors. All parameters must have the same length. A special case
is allowed, where all parameters except XFE
are scalar.
Return value
The equivalent width (float
/lonarr(n)
) is returned in units of pm.
Parameters
- line in required type=long/lonarr(n)
Line indices
- teff in required type=float/fltarr(n)
- logg in required type=float/fltarr(n)
- feh in required type=float/fltarr(n)
- xfe in optional type=float/fltarr(n)
Abundances [X/Fe] to find. If unspecified or not finite,
grid.abund
will be used instead.
Keywords
- grid in required type=grid
A structure containing an LTE or NLTE grid
- warnings out optional type=float/fltarr(n)
Warnings and errors. These use a floating scale 0-1 to indicate the fraction of nodes used for interpolation that may be unreliable due to extrapolation.
top source interp_nlte_to_lte
result = interp_nlte_to_lte(line, xfe, teff, logg, feh [, ew=float/fltarr(n)], ltegrid=grid, nltegrid=grid [, warnings=float/fltarr(n)])
Find the abundance correction at a given LTE abundance [X/Fe]. A sequence of
values can be provided, but note that all parameters must have the same
number of elements. The difference DeltaNLTE = A(NLTE)-A(LTE)
is returned.
Note that the equivalent widths returned are slightly (0.01 dex) inconsistent with the interpolated NLTE corrections. Rather than interpolate and match COGs, the NLTE corrections themselves are interpolated. This typically results in smoother variations with abundance and avoids numerical noise.
Return value
A scalar (float
) or n-element array (fltarr(n)
) with the NLTE correction
at the requested LTE abundance. The NLTE correction is defined as the
abundance difference deltaNLTE = A(NLTE) - A(LTE)
.
Parameters
- line in required type=long/lonarr(n)
Line indices
- xfe in required type=float/fltarr(n)
LTE abundance [X/Fe]
- teff in required type=float/fltarr(n)
- logg in required type=float/fltarr(n)
- feh in required type=float/fltarr(n)
Keywords
- ew out optional type=float/fltarr(n)
Equivalent width, in units of pm.
- ltegrid in required type=grid
A structure containing an LTE grid
- nltegrid in required type=grid
A structure containing an NLTE grid
- warnings out optional type=float/fltarr(n)
Warnings and errors. These use a floating scale 0-1 to indicate the fraction of nodes used for interpolation that may be unreliable due to extrapolation.
top source interp_lte_to_nlte
result = interp_lte_to_nlte(line, xfe, teff, logg, feh [, ew=float/fltarr(n)], ltegrid=grid, nltegrid=grid [, warnings=float/fltarr(n)])
Find the abundance correction at a given NLTE abundance [X/Fe]. A sequence of
values can be provided, but note that all parameters must have the same
number of elements. The difference DeltaNLTE = A(NLTE)-A(LTE)
is returned.
Note that the equivalent widths returned are slightly (0.01 dex) inconsistent with the interpolated NLTE corrections. Rather than interpolate and match COGs, the NLTE corrections themselves are interpolated. This typically results in smoother variations with abundance and avoids numerical noise.
Return value
A scalar (float
) or n-element array (fltarr(n)
) with the NLTE correction
at the requested LTE abundance. The NLTE correction is defined as the
abundance difference deltaNLTE = A(NLTE) - A(LTE)
.
Parameters
- line in required type=long/lonarr(n)
Line indices
- xfe in required type=float/fltarr(n)
NLTE abundance [X/Fe]
- teff in required type=float/fltarr(n)
- logg in required type=float/fltarr(n)
- feh in required type=float/fltarr(n)
Keywords
- ew out optional type=float/fltarr(n)
Equivalent width, in units of pm.
- ltegrid in required type=grid
A structure containing an LTE grid
- nltegrid in required type=grid
A structure containing an NLTE grid
- warnings out optional type=float/fltarr(n)
Warnings and errors. These use a floating scale 0-1 to indicate the fraction of nodes used for interpolation that may be unreliable due to extrapolation.
File attributes
Modification date: | Mon Jan 22 15:38:42 2018 |
Lines: | 221 |
Docformat: | rst rst |