-
Notifications
You must be signed in to change notification settings - Fork 19
Open
Labels
Description
Currently, dust attenuation is implemented by the stellarSpectraDustAttenuation class - but this is quite simple. It allows for wavelength and age dependence, and is normalized by passing a vBandAttenuation.
- This class is used for more than just stellar spectra, so is poorly named;
- It is quite simplistic in what it assumes can affect dust attenuation;
- The
nodePropertyExtractorLmnstyStllrCF2000class (re-)implements its own version of the Charlot & Fall (2000) dust attenuation model - not good to have duplicated implementation - remove dust attenuation from this and have it just return the unattenuated luminosity.
Create a new class which provides a much more versatile dust attenuation framework. Then, create a new nodePropertyExtractor which can be applied to any extracted luminosity (broadband, emission line, SED) and simply applies dust attenuation to it.
- New
dustAttenuationclass:- Re-implement the current set of
stellarSpectraDustAttenuationmodels:- Create an abstract subclass of
dustAttenuationwhich simply computes thevBandAttenuationand has an abstract method that applies the relevant extinction curve, then implement the current models as subclasses of this abstract class.
- Create an abstract subclass of
- Requirements:
- Computes attenuations directly from
nodeproperties (so must receivenodeas an argument) - Can be passed different components (
disk, spheroid, AGN) and work with them. - Can apply to broad-band luminosities (e.g. total and recent).
- Can apply to time-resolved stellar populations.
- Can apply to emission lines.
- Allow for a specific inclination angle or averaged over all angles.
- Computes attenuations directly from
- Re-implement the current set of
- New
nodePropertyExtractorDustAttenuationclass- Apply attenuation to any other
nodePropertyExtractorthat provides a luminosity, output it with a suitable suffix (e.g.dustAttenuated- perhaps with some extra descriptive suffix provided by the useddustAttenuationclass).- Optionally still output the unattenuated luminosity also.
- This would need to handle scalars, tuples, arrays, etc., so probably needs to be a subclass of the
nodePropertyExtractorMulticlass.- This is useful anyway - can wrap a bunch of luminosities in single dust attenuator.
- The wrapped
nodePropertyExtractorwould need to provide methods that give:- component information:
disk/spheroid/blackHole/NSC/total(note that a given attenuator could refuse to apply to, e.g.total) - viewing angle information?
- a data structure that details the luminosity produced split by:
- (rest-frame) wavelength
- component?
- type (stellar, emission line, accretion disk, etc.)
- age
- ....???
- this probably needs to be a list of objects that give this information so that the luminosity can be arbitrarily split (into various ages, components, etc.)
- the wrapped
nodePropertyExtractorclass probably needs to provide a reduction function that is able to recombine the attenuated luminosities back into whatever form they want- for, e.g. broad band, could then split into recent and old light - dust attenuators could attenuate these differently if they want - reducer just adds them together to get the total luminosity
- component information:
- Apply attenuation to any other
In addition to re-implemeting the existing classes should also implement:
- "dust compendium" models
- "birth cloud" models
- a
sequenceattenuation which applies multiple other attenuators;- e.g. applying a "birth cloud" attenuation, followed by a "diffuse ISM" attenuation
- possibly a "dust emission"
nodePropertyExtractorwhich uses these classes to figure out total absorbed luminosity and then re-emits it with some dust spectrum.
Reactions are currently unavailable