Builds a table of Stark widths and shifts from user-supplied values, in
the format of starkb_lines(), so that stark_width() and
electron_density() can use Stark parameters from any source:
values copied from the STARK-B website, from a publication, or from the
fitted temperature laws that STARK-B provides.
Usage
stark_table(
wavelength,
temperature,
width = NULL,
units,
density = 1e+17,
shift = 0,
perturber = "electron",
species = NA_character_,
upper = "",
lower = "",
coefficients = NULL,
shift_coefficients = NULL,
log_base = 10,
source = "user-supplied"
)Arguments
- wavelength
The wavelength of the line (or multiplet), in
units.- temperature
The temperatures, in K.
- width
The Stark full widths at half maximum at each temperature, in
units. LeaveNULLwhencoefficientsare given.- units
The units of
wavelength,widthandshift:"nm"or"A"(Ångström). Required.- density
The perturber density of the widths, in cm\(^{-3}\). Default is \(10^{17}\).
- shift
The Stark shifts, in
units. Default is 0 (unknown).- perturber
The perturber. Default is
"electron".- species, upper, lower
Optional labels of the emitter and of the upper and lower levels.
- coefficients
Optional coefficients \((a_0, a_1, a_2)\) of the fitted width law.
- shift_coefficients
Optional coefficients \((b_0, b_1, b_2)\) of the fitted law for the ratio \(d/w\); used with
coefficients.- log_base
The base of the logarithms of the fitted laws. Default is 10.
- source
A description of where the data come from.
Value
A tibble with the columns of starkb_lines().
Details
Give either the tabulated width at each temperature, or the
coefficients of a fitted temperature law. STARK-B fits the widths and
shifts at a given perturber density as
$$\log w = a_0 + a_1 \log T + a_2 (\log T)^2$$
$$d / w = b_0 + b_1 \log T + b_2 (\log T)^2$$
with decimal logarithms and \(w\) in the units of its tables (Å); the
fits are only valid within the tabulated temperature range
(Sahal-Bréchot, Dimitrijević and Ben Nessib, 2011). With
coefficients, the table is evaluated at temperature, which should
span that range. Check the base of the logarithm and the units of any
other source.
units is required, because Stark widths are reported in both Å and nm,
and a wrong guess changes the electron density tenfold. It applies to
wavelength, width and shift (and to the fitted widths); the table
is returned in nm.
Arguments of length 1 are recycled. Tables for several lines or
perturbers can be combined with rbind() or dplyr::bind_rows().
References
Sahal-Bréchot, S., Dimitrijević, M.S., Ben Nessib, N. (2011). Widths and shifts of isolated lines of neutral and ionized atoms perturbed by collisions with electrons and ions: an outline of the semiclassical perturbation (SCP) method and of the approximations used for the calculations. Baltic Astronomy, 20:523-530.
Examples
# made-up widths of a hypothetical line, in Angstrom at 1e17 cm-3
x <- stark_table(
wavelength = 5000, temperature = c(5000, 10000, 20000),
width = c(0.20, 0.16, 0.13), units = "A", species = "X II"
)
x
#> # A tibble: 3 × 10
#> species wavelength upper lower perturber temperature density width shift
#> <chr> <dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 X II 500 "" "" electron 5000 1e17 0.02 0
#> 2 X II 500 "" "" electron 10000 1e17 0.016 0
#> 3 X II 500 "" "" electron 20000 1e17 0.013 0
#> # ℹ 1 more variable: source <chr>
electron_density(0.012, stark = x, wavelength = 500, temperature = 8000)
#> [1] 6.980125e+16
# the same line from the coefficients of a fitted temperature law
# log10(w) = a0 + a1 log10(T) + a2 log10(T)^2 (here fitted to the table above)
lt <- log10(c(5000, 10000, 20000))
a <- unname(coef(lm(log10(c(0.20, 0.16, 0.13)) ~ lt + I(lt^2))))
stark_table(wavelength = 5000, temperature = c(5000, 10000, 20000),
coefficients = a, units = "A")
#> # A tibble: 3 × 10
#> species wavelength upper lower perturber temperature density width shift
#> <chr> <dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 NA 500 "" "" electron 5000 1e17 0.0200 0
#> 2 NA 500 "" "" electron 10000 1e17 0.016 0
#> 3 NA 500 "" "" electron 20000 1e17 0.013 0
#> # ℹ 1 more variable: source <chr>
