G21

class dust_extinction.shapes.G21(scale=0.37, alpha=1.5, sil1_amp=0.07, sil1_center=9.87, sil1_fwhm=2.5, sil1_asym=-0.23, sil2_amp=0.025, sil2_center=17.0, sil2_fwhm=13.0, sil2_asym=-0.27, **kwargs)[source]

Bases: BaseExtModel, Fittable1DModel

Gordon et al. (2021) powerlaw plus two modified Drude profiles (for the 10 & 20 micron silicate features) for the 1 to 40 micron A(lambda)/A(V) extinction curve.

Parameters:
scale: float

amplitude of the powerlaw at 1 micron

alpha: float

power of powerlaw

sil1_amp: float

central amplitude of the 10 micron silicate feature

sil1_center: float

center wavelength of the 10 micron silicate feature

sil1_fwhm: float

full width at half maximum of the 10 micron silicate feature

sil1_asym: float

asymmetry of the 10 micron silicate feature

sil2_amp: float

central amplitude of the 20 micron silicate feature

sil2_center: float

center wavelength of the 20 micron silicate feature

sil2_fwhm: float

full width at half maximum of the 20 micron silicate feature

sil2_asym: float

asymmetry of the 20 micron silicate feature

Notes

From Gordon et al. (2021, ApJ, submitted)

Only applicable at NIR/MIR wavelengths from 1-40 micron

Example showing a G21 curve with components identified.

import numpy as np
import matplotlib.pyplot as plt
import astropy.units as u

from dust_extinction.shapes import G21

fig, ax = plt.subplots()

# generate the curves and plot them
lam = np.logspace(np.log10(1.01), np.log10(39.9), num=1000)
x = (1.0/lam)/u.micron

ext_model = G21()
ax.plot(1/x,ext_model(x),label='total')

ext_model = G21(sil1_amp=0.0, sil2_amp=0.0)
ax.plot(1./x,ext_model(x),label='power-law only')

ext_model = G21(sil2_amp=0.0)
ax.plot(1./x,ext_model(x),label='power-law+sil1 only')

ext_model = G21(sil1_amp=0.0)
ax.plot(1./x,ext_model(x),label='power-law+sil2 only')

ax.set_xscale('log')
ax.set_yscale('log')

ax.set_xlabel('$\lambda$ [$\mu$m]')
ax.set_ylabel('$A(x)/A(V)$')

ax.set_title('G21')

ax.legend(loc='best')
plt.show()

(Source code, png, hires.png, pdf)

../_images/dust_extinction-shapes-G21-1.png

Attributes Summary

alpha

param_names

Names of the parameters that describe models of this type.

scale

sil1_amp

sil1_asym

sil1_center

sil1_fwhm

sil2_amp

sil2_asym

sil2_center

sil2_fwhm

x_range

Methods Summary

evaluate(x, scale, alpha, sil1_amp, ...)

G21 function

Attributes Documentation

alpha = Parameter('alpha', value=1.5, bounds=(0.5, 5.0))
param_names = ('scale', 'alpha', 'sil1_amp', 'sil1_center', 'sil1_fwhm', 'sil1_asym', 'sil2_amp', 'sil2_center', 'sil2_fwhm', 'sil2_asym')

Names of the parameters that describe models of this type.

The parameters in this tuple are in the same order they should be passed in when initializing a model of a specific type. Some types of models, such as polynomial models, have a different number of parameters depending on some other property of the model, such as the degree.

When defining a custom model class the value of this attribute is automatically set by the Parameter attributes defined in the class body.

scale = Parameter('scale', value=0.37, bounds=(0.0, 1.0))
sil1_amp = Parameter('sil1_amp', value=0.07, bounds=(0.001, 0.3))
sil1_asym = Parameter('sil1_asym', value=-0.23, bounds=(-2.0, 2.0))
sil1_center = Parameter('sil1_center', value=9.87, bounds=(8.0, 12.0))
sil1_fwhm = Parameter('sil1_fwhm', value=2.5, bounds=(1.0, 10.0))
sil2_amp = Parameter('sil2_amp', value=0.025, bounds=(0.001, 0.3))
sil2_asym = Parameter('sil2_asym', value=-0.27, bounds=(-2.0, 2.0))
sil2_center = Parameter('sil2_center', value=17.0, bounds=(16.0, 24.0))
sil2_fwhm = Parameter('sil2_fwhm', value=13.0, bounds=(5.0, 20.0))
x_range = [0.025, 1.0]

Methods Documentation

evaluate(x, scale, alpha, sil1_amp, sil1_center, sil1_fwhm, sil1_asym, sil2_amp, sil2_center, sil2_fwhm, sil2_asym)[source]

G21 function

Parameters:
x: float

expects either x in units of wavelengths or frequency or assumes wavelengths in wavenumbers [1/micron]

Returns:
axav: np array (float)

A(x)/A(V) extinction curve [mag]

Raises:
ValueError

Input x values outside of defined range