Dust Attenuation

Class computing the fraction of the emission from a galaxy which is transmitted through its dust.

Default implementation: dustAttenuationZero

Methods

transmissiondouble 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 of descriptors, 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. inclination overrides the angle at which an orientation-dependent attenuator is evaluated, in radians. It is how dustAttenuationInclinationAveraged drives 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 own galacticInclination object when it is absent.

  • type(treeNode) node [inout]

  • type(emissionDescriptor)(:) descriptors [in]

  • double precision inclination (optional) [in]

requesttype(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.

supportsComponentlogical

Return 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 dustAttenuationScreen object through its depthOpticalV method. Delegating this keeps the Milky Way calibration of dustAttenuationScreenSurfaceDensityMetals as 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 screenSurfaceDensityMetals computes, so the definitions agree.

  • The inclination, from a galacticInclinationClass object, or from the inclination argument when one is imposed, as dustAttenuationInclinationAveraged does. One or the other must be available, and an error is reported if neither is.

Parameters

  • [dust] (string; one of milkyWay, smallMagellanicCloud; default milkyWay) — The extinction curve of the dust grains: milkyWay or smallMagellanicCloud.

  • [heightRatio] (real; default 1.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

\[\tau_\mathrm{V} = C \frac{Z}{Z_\mathrm{ISM}},\]

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; default 1.0d0) — The \(V\)-band optical depth of a birth cloud of local interstellar medium metallicity.

  • [timescale] (real; default 1.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; default 1.0d0) — The \(V\)-band optical depth of a birth cloud of local interstellar medium metallicity.

  • [coefficientISM] (real; default 1.0d0) — A dimensionless multiplicative coefficient applied to the \(V\)-band optical depth of the diffuse interstellar medium.

  • [timescale] (real; default 1.0d-2) — The lifetime of a stellar birth cloud, in Gyr. Default from: Charlot and Fall (2000).

  • [exponent] (real; default 0.7d0) — The exponent of the power-law extinction curve applied to both components. Default from: Charlot and Fall (2000).

  • [wavelengthReference] (real; default wavelengthVBand) — 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.

dustAttenuationInclinationAveraged

A dust attenuation class which averages the transmission of another attenuator over orientation, for models in which no inclination is available for each galaxy—which is the default, see galacticInclinationNull.

Orientations are isotropic, so uniform in \(\cos i\), and the average is

\[\bar{T}(\lambda) = \int_0^1 T(\lambda,i) \, \mathrm{d}\cos i.\]

It is the transmission which is averaged, not the optical depth. Those are not the same thing: attenuation is exponential in optical depth, so a galaxy seen at a range of orientations transmits more light than one seen at the mean optical depth, and averaging the depth instead would systematically over-attenuate. What an observer averaging over an orientation-blind sample measures is the mean flux, which is the mean transmission.

The wrapped attenuator is evaluated at each abscissa through the optional inclination argument of its transmission method, so nothing is mutated and the arrangement is safe under threading. Wrapping a dustAttenuationSequence averages the sequence as a whole—the product of its members evaluated at a common orientation—rather than the product of separately averaged members, which is a different and incorrect quantity.

The integral is evaluated by Gauss-Legendre quadrature of order order. Fixed-order quadrature is used in preference to an adaptive rule because the integrand is smooth and bounded, so it converges quickly, and because the cost of the average multiplies the cost of every luminosity: a fixed order makes that cost predictable and puts it under the user’s control. Order 8 is accurate to better than one part in \(10^{6}\) for the attenuation curves of interest.

Parameters

  • [order] (integer; default 8) — The order of the Gauss-Legendre quadrature used to average over orientation. The cost of the average is proportional to this.

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

\[T = \frac{1-\mathrm{e}^{-\tau}}{\tau},\]

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

\[T(\lambda) = \exp\left[ -\tau_\mathrm{V} \frac{k(\lambda)}{k_\mathrm{V}} \right],\]

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

depthOpticalVdouble precision

Return 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; default 1.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,

\[\tau_\mathrm{V} = C \, \frac{A_\mathrm{V}/E(B-V)}{N_\mathrm{H}/E(B-V)} \, \frac{X_\mathrm{H}}{m_\mathrm{u}} \, \frac{\Sigma_\mathrm{Z}}{Z_\odot} \, \frac{1}{2.5 \log_{10} \mathrm{e}},\]

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; default 1.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)