Dust Attenuation¶
Class computing the fraction of the emission from a galaxy which is transmitted through its dust.
Default implementation: dustAttenuationZero
Methods¶
transmission→double precision(size(descriptors))Return the fraction of the emission transmitted through dust, for each of the given parcels of emission from the given
node. A value of unity indicates no attenuation. The result has one element per element ofdescriptors, in the same order. The value is non-negative, and is normally at most unity—but not necessarily. This is a directional transmission, the fraction reaching an observer in one particular direction, and where dust scatters light it can redirect more into that direction than it removes from it, leaving the galaxy brighter at that angle than it would be with no dust at all. Radiative transfer calculations show this at low optical depth and low inclination: the atlas of Ferrara et al. (1999) exceeds unity by up to 3% there. Consumers must therefore not assume an upper bound of one. Energy is still conserved, since what is gained along one line of sight is lost along others—a constraint on the average over orientation, not on any single direction.inclinationoverrides the angle at which an orientation-dependent attenuator is evaluated, in radians. It is howdustAttenuationInclinationAverageddrives its quadrature: the wrapped attenuator is asked for the transmission at each angle in turn, without any shared state being mutated, so the arrangement is safe under threading. An implementation which does not depend on orientation ignores it; one which does falls back to its owngalacticInclinationobject when it is absent.type(treeNode) node[inout]type(emissionDescriptor)(:) descriptors[in]double precision inclination(optional) [in]
request→type(decompositionRequest)Return the resolution which a decomposition must have for this attenuator to be applied correctly: the boundaries of the age bins it distinguishes, and whether it depends upon component, metallicity, or radius. A producer of luminosities uses this to split its output no more finely than necessary. The default requests no age resolution and no metallicity or radius resolution, but does request splitting by component—which is what any attenuator depending on the properties of an individual component needs.
supportsComponent→logicalReturn true if this attenuator can be applied to emission from the given component. The default accepts any individual component but rejects
componentTypeAll: different components are attenuated differently, so a luminosity summed over components can not meaningfully be attenuated—it must be decomposed, attenuated, and only then summed. This is checked when the attenuating property extractor is constructed, so that a misconfiguration is reported immediately rather than part way through a run.type(enumerationComponentTypeType) componentType[in]
dustAttenuationAtlasFerrara2000¶
Dust attenuation from the radiative transfer atlas of Ferrara et al. (1999), which tabulates the fraction of light escaping a galaxy as a function of wavelength, inclination, optical depth, and—for the spheroid—the size of the spheroid relative to the disk.
This is a non-separable attenuator. The tabulated escape fraction is the result of a radiative transfer
calculation through a specified geometry, and is not the exponential of a single optical depth times a
wavelength-dependent curve, so it takes no dustExtinctionCurve—the wavelength dependence is in the table,
which is the point of tabulating it. It also means the transmission can slightly exceed unity at low optical
depth and low inclination, where scattering redirects more light into the line of sight than the dust removes
from it.
The tabulation is selected by two parameters: dust, the extinction curve of the grains, either milkyWay
or smallMagellanicCloud; and heightRatio, the ratio of the dust scale height to the stellar scale height,
one of 0.4, 1.0, or 2.5.
Two quantities are supplied per galaxy rather than tabulated:
The optical depth, obtained from a
dustAttenuationScreenobject through itsdepthOpticalVmethod. Delegating this keeps the Milky Way calibration ofdustAttenuationScreenSurfaceDensityMetalsas the single home of that normalization, and lets a fixed depth be substituted for testing. It is always evaluated for the disk, whichever component is being attenuated: in this model the dust lies in the disk and a spheroid is reddened by the disk’s dust, so asking for a spheroid’s own optical depth would compute a surface density of a component holding no dust here.The atlas defines its optical depth as that through the center of the galaxy perpendicular to the plane, in the \(V\) band. For an exponential disk \(\Sigma_0 = M/2\pi r_\mathrm{d}^2\), which is what
screenSurfaceDensityMetalscomputes, so the definitions agree.The inclination, from a
galacticInclinationClassobject, or from theinclinationargument when one is imposed, asdustAttenuationInclinationAverageddoes. One or the other must be available, and an error is reported if neither is.
Parameters
[dust](string; one ofmilkyWay,smallMagellanicCloud; defaultmilkyWay) — The extinction curve of the dust grains:milkyWayorsmallMagellanicCloud.[heightRatio](real; default1.0d0) — The ratio of the dust scale height to the stellar scale height. Tabulations exist for 0.4, 1.0, and 2.5.
dustAttenuationBirthCloud¶
Attenuation of stellar populations which remain embedded in the dense clouds from which they formed. Stars younger
than timescale are attenuated by a screen of \(V\)-band optical depth
proportional to the metallicity \(Z\) of the gas of the component in which they formed, relative to that of the
local interstellar medium; stars older than timescale are not attenuated at all by this class. This is the
birth cloud term of the Charlot and Fall (2000) model, in which the coefficient \(C\) (coefficient)
is the optical depth of a birth cloud of local interstellar medium metallicity.
Note that the optical depth depends only on metallicity, not on the surface density of the gas: a birth cloud is a local structure, and its column is not set by the global structure of the galaxy.
A parcel of emission whose age is unresolved spans all ages, and is therefore treated as old and left unattenuated
rather than being attenuated as though it were entirely young. Combine this class with a
dustAttenuationScreenClass through dustAttenuationSequence to obtain the
full two-component model.
Parameters
[coefficient](real; default1.0d0) — The \(V\)-band optical depth of a birth cloud of local interstellar medium metallicity.[timescale](real; default1.0d-2) — The lifetime of a stellar birth cloud, in Gyr. Stellar populations younger than this are attenuated by their birth cloud; older populations are not. Default from: Charlot and Fall (2000).
dustAttenuationCharlotFall2000¶
The two-component dust attenuation model of Charlot and Fall (2000): young stars are attenuated both by the dust of the birth clouds in which they remain embedded and by the diffuse dust of the interstellar medium, while older stars, having escaped their birth clouds, are attenuated only by the diffuse component.
This class carries no physics of its own. It is exactly
<dustAttenuation value="sequence">
<dustAttenuation value="birthCloud">
<dustExtinctionCurve value="powerLaw"><exponent value="0.7"/></dustExtinctionCurve>
</dustAttenuation>
<dustAttenuation value="screenSurfaceDensityMetals">
<dustExtinctionCurve value="powerLaw"><exponent value="0.7"/></dustExtinctionCurve>
</dustAttenuation>
</dustAttenuation>
and is provided because that is the combination users most often want and because it pins the canonical parameter
values of the model in one place. Anything expressible here is expressible with
dustAttenuationSequence; use that directly to vary the extinction curve of either component
independently, or to build a model with more than two components.
Parameters
[coefficientBirthCloud](real; default1.0d0) — The \(V\)-band optical depth of a birth cloud of local interstellar medium metallicity.[coefficientISM](real; default1.0d0) — A dimensionless multiplicative coefficient applied to the \(V\)-band optical depth of the diffuse interstellar medium.[timescale](real; default1.0d-2) — The lifetime of a stellar birth cloud, in Gyr. Default from: Charlot and Fall (2000).[exponent](real; default0.7d0) — The exponent of the power-law extinction curve applied to both components. Default from: Charlot and Fall (2000).[wavelengthReference](real; defaultwavelengthVBand) — The wavelength, in Å, at which the power-law extinction curve is normalized to unity. Set it to \(5500\,`Å to reproduce the ``lmnstyStllrCF2000`\) property extractor exactly.
dustAttenuationMixedSlab¶
Attenuation by dust mixed uniformly with the emitting stars, rather than lying in a screen in front of them. For a slab in which emitters and absorbers are uniformly interspersed the emergent fraction is
which tends to unity as \(\tau \rightarrow 0\) and, crucially, falls only as \(1/\tau\) at large optical depth rather than exponentially: stars on the near side of the slab always escape, so a mixed geometry can never extinguish a component completely. This is the qualitative difference from a screen, and it matters whenever the inferred optical depths are large.
This class is a decorator: it takes the transmission \(T_\mathrm{screen}\) computed by any other attenuator, recovers the equivalent optical depth \(\tau = -\ln T_\mathrm{screen}\), and re-applies it in the mixed geometry. Any prescription for how much dust a galaxy has can therefore be used in either geometry without being reimplemented.
dustAttenuationScreen¶
An abstract dust attenuation class describing a uniform screen of dust lying between the emitting stars and the observer, so that
where the wavelength dependence \(k(\lambda)/k_\mathrm{V}\) is supplied by a
dustExtinctionCurveClass object and the normalization \(\tau_\mathrm{V}\) by the
depthOpticalV method of a concrete subclass. Separating the two means any extinction curve may be combined with
any prescription for how much dust a galaxy has.
A screen is the simplest possible geometry. It attenuates all of the light it is applied to equally, and—unlike a mixed distribution of dust and stars—has no upper limit to the attenuation it can produce.
Methods
depthOpticalV→double precisionReturn the \(V\)-band optical depth of the screen for one component of one node.
type(treeNode) node[inout]type(enumerationComponentTypeType) componentType[in]
dustAttenuationScreenFixed¶
A uniform dust screen whose \(V\)-band optical depth is a fixed parameter, independent of the properties of the galaxy. This is the appropriate choice when the optical depth is to be treated as a free parameter—when fitting an observed spectral energy distribution, for example—rather than predicted from a model of the interstellar medium.
Parameters
[depthOpticalV](real; default1.0d0) — The \(V\)-band optical depth of the dust screen.
dustAttenuationScreenSurfaceDensityMetals¶
A uniform dust screen whose \(V\)-band optical depth is proportional to the surface density of metals in the gas of the component being attenuated,
with the ratios \(A_\mathrm{V}/E(B-V)=3.1\) and \(N_\mathrm{H}/E(B-V)=5.8\times10^{21}\,\hbox{atoms cm}^{-2}\,\hbox{mag}^{-1}\) from
, and \(\Sigma_\mathrm{Z}\) the surface density of gas-phase metals. The
dimensionless coefficient \(C\) (coefficient) allows the overall normalization to be adjusted.
The scaling assumes a universal dust-to-metals ratio, so that a galaxy with the metallicity and gas surface density of the local interstellar medium reproduces the Milky Way relation between column density and reddening.
The surface density is that of an exponential disk or of a spheroid of the same scale radius, \(\Sigma_\mathrm{Z} = Z M_\mathrm{gas} / 2\pi r^2\), and is taken to be zero for a component with no gas or no size.
Parameters
[coefficient](real; default1.0d0) — A dimensionless multiplicative coefficient applied to the \(V\)-band optical depth, allowing the overall normalization of the dust content to be adjusted away from the Milky Way calibration.
dustAttenuationSequence¶
A dust attenuation class which applies a sequence of other attenuators, returning the product of their transmissions. Because transmission is multiplicative, this is exactly the result of the light passing through each in turn, and—for pure absorption—the order in which they are listed does not matter.
The canonical use is to build a two-component model: a dustAttenuationBirthCloud attenuating
young populations, followed by a diffuse interstellar medium screen attenuating everything. See
dustAttenuationCharlotFall2000 for that combination pre-assembled.
The decomposition requested by a sequence is the union of those requested by its members: the age bin boundaries are merged, and an axis is resolved if any member depends upon it. A component is supported only if every member supports it.
dustAttenuationZero¶
A dust attenuation class in which nothing is attenuated: the transmission is unity at all wavelengths, for all components, and at all ages. This is the default, and is useful as a control against which the effect of a dust model can be measured.
Because it depends on nothing, it requests no decomposition at all—not even by component—so that wrapping a luminosity in this attenuator costs a single parcel per output element.
(Default implementation)