#include <WeingartnerDraineDustMix.hpp>
Public Types | |
enum class | Environment : int { MilkyWay , LMC , SMC } |
![]() | |
enum class | ScatteringMode { HenyeyGreenstein , MaterialPhaseFunction , SphericalPolarization , SpheroidalPolarization } |
![]() | |
enum class | DynamicStateType { None , Primary , Secondary , PrimaryIfMergedIterations } |
enum class | MaterialType { Dust , Electrons , Gas } |
Public Member Functions | |
Environment | environment () const |
int | numGraphiteSizes () const |
int | numPAHSizes () const |
int | numSilicateSizes () const |
![]() | |
Array | emissivity (const Array &Jv) const override |
bool | hasStochasticDustEmission () const override |
int | numPopulations () const override |
const GrainPopulation * | population (int c) const |
double | populationBulkDensity (int c) const override |
string | populationGrainType (int c) const override |
double | populationMass (int c) const override |
double | populationNormalization (int c) const |
const GrainSizeDistribution * | populationSizeDistribution (int c) const override |
Range | populationSizeRange (int c) const override |
double | totalMass () const override |
![]() | |
double | asymmpar (double lambda) const override |
Array | emissionSpectrum (const MaterialState *state, const Array &Jv) const override |
DisjointWavelengthGrid * | emissionWavelengthGrid () const override |
Array | emissivity (const Array &Jv) const override |
bool | hasContinuumEmission () const override |
double | indicativeTemperature (const MaterialState *state, const Array &Jv) const override |
double | mass () const override |
MaterialType | materialType () const override |
double | opacityAbs (double lambda, const MaterialState *state, const PhotonPacket *pp) const override |
double | opacityExt (double lambda, const MaterialState *state, const PhotonPacket *pp) const override |
double | opacitySca (double lambda, const MaterialState *state, const PhotonPacket *pp) const override |
void | peeloffScattering (double &I, double &Q, double &U, double &V, double &lambda, Direction bfkobs, Direction bfky, const MaterialState *state, const PhotonPacket *pp) const override |
void | performScattering (double lambda, const MaterialState *state, PhotonPacket *pp) const override |
virtual ScatteringMode | scatteringMode () const |
double | sectionAbs (double lambda) const override |
double | sectionExt (double lambda) const override |
const Array & | sectionsAbs (double lambda) const override |
const Array & | sectionsAbspol (double lambda) const override |
double | sectionSca (double lambda) const override |
vector< StateVariable > | specificStateVariableInfo () const override |
const Array & | thetaGrid () const override |
![]() | |
virtual double | asymmpar (double lambda) const |
virtual Array | emissionSpectrum (const MaterialState *state, const Array &Jv) const |
virtual DisjointWavelengthGrid * | emissionWavelengthGrid () const |
virtual Array | emissivity (const Array &Jv) const |
virtual bool | hasContinuumEmission () const |
virtual DynamicStateType | hasDynamicMediumState () const |
virtual bool | hasExtraSpecificState () const |
virtual bool | hasLineEmission () const |
virtual bool | hasNegativeExtinction () const |
virtual bool | hasPolarizedAbsorption () const |
virtual bool | hasPolarizedEmission () const |
virtual bool | hasPolarizedScattering () const |
virtual bool | hasResonantScattering () const |
virtual bool | hasScatteringDispersion () const |
virtual bool | hasStochasticDustEmission () const |
virtual double | indicativeTemperature (const MaterialState *state, const Array &Jv) const |
virtual void | initializeSpecificState (MaterialState *state, double metallicity, double temperature, const Array ¶ms) const |
bool | isDust () const |
bool | isElectrons () const |
bool | isGas () const |
virtual bool | isSpecificStateConverged (int numCells, int numUpdated, int numNotConverged, MaterialState *currentAggregate, MaterialState *previousAggregate) const |
virtual Array | lineEmissionCenters () const |
virtual Array | lineEmissionMasses () const |
virtual Array | lineEmissionSpectrum (const MaterialState *state, const Array &Jv) const |
virtual double | mass () const =0 |
virtual MaterialType | materialType () const =0 |
virtual double | opacityAbs (double lambda, const MaterialState *state, const PhotonPacket *pp) const =0 |
virtual double | opacityExt (double lambda, const MaterialState *state, const PhotonPacket *pp) const =0 |
virtual double | opacitySca (double lambda, const MaterialState *state, const PhotonPacket *pp) const =0 |
virtual vector< SnapshotParameter > | parameterInfo () const |
virtual void | peeloffScattering (double &I, double &Q, double &U, double &V, double &lambda, Direction bfkobs, Direction bfky, const MaterialState *state, const PhotonPacket *pp) const =0 |
virtual void | performScattering (double lambda, const MaterialState *state, PhotonPacket *pp) const =0 |
virtual double | sectionAbs (double lambda) const =0 |
virtual double | sectionExt (double lambda) const =0 |
virtual const Array & | sectionsAbs (double lambda) const |
virtual const Array & | sectionsAbspol (double lambda) const |
virtual double | sectionSca (double lambda) const =0 |
virtual vector< StateVariable > | specificStateVariableInfo () const =0 |
virtual const Array & | thetaGrid () const |
virtual UpdateStatus | updateSpecificState (MaterialState *state, const Array &Jv) const |
![]() | |
template<class T > | |
T * | find (bool setup=true) const |
template<class T > | |
T * | interface (int levels=-999999, bool setup=true) const |
virtual string | itemName () const |
void | setup () |
string | typeAndName () const |
![]() | |
Item (const Item &)=delete | |
virtual | ~Item () |
void | addChild (Item *child) |
const vector< Item * > & | children () const |
virtual void | clearItemListProperty (const PropertyDef *property) |
void | destroyChild (Item *child) |
virtual bool | getBoolProperty (const PropertyDef *property) const |
virtual vector< double > | getDoubleListProperty (const PropertyDef *property) const |
virtual double | getDoubleProperty (const PropertyDef *property) const |
virtual string | getEnumProperty (const PropertyDef *property) const |
virtual int | getIntProperty (const PropertyDef *property) const |
virtual vector< Item * > | getItemListProperty (const PropertyDef *property) const |
virtual Item * | getItemProperty (const PropertyDef *property) const |
virtual string | getStringProperty (const PropertyDef *property) const |
int | getUtilityProperty (string name) const |
virtual void | insertIntoItemListProperty (const PropertyDef *property, int index, Item *item) |
Item & | operator= (const Item &)=delete |
Item * | parent () const |
virtual void | removeFromItemListProperty (const PropertyDef *property, int index) |
virtual void | setBoolProperty (const PropertyDef *property, bool value) |
virtual void | setDoubleListProperty (const PropertyDef *property, vector< double > value) |
virtual void | setDoubleProperty (const PropertyDef *property, double value) |
virtual void | setEnumProperty (const PropertyDef *property, string value) |
virtual void | setIntProperty (const PropertyDef *property, int value) |
virtual void | setItemProperty (const PropertyDef *property, Item *item) |
virtual void | setStringProperty (const PropertyDef *property, string value) |
void | setUtilityProperty (string name, int value) |
virtual string | type () const |
![]() | |
virtual | ~MultiGrainPopulationInterface () |
virtual int | numPopulations () const =0 |
virtual double | populationBulkDensity (int c) const =0 |
virtual string | populationGrainType (int c) const =0 |
virtual double | populationMass (int c) const =0 |
virtual const GrainSizeDistribution * | populationSizeDistribution (int c) const =0 |
virtual Range | populationSizeRange (int c) const =0 |
virtual double | totalMass () const =0 |
Protected Member Functions | |
WeingartnerDraineDustMix () | |
void | setupSelfBefore () override |
![]() | |
MultiGrainDustMix () | |
void | addPopulation (const GrainPopulation *population) |
void | addPopulation (GrainComposition *composition, GrainSizeDistribution *sizeDistribution, int numSizes, GrainPopulation::NormalizationType normType, double normValue) |
double | getOpticalProperties (const Array &lambdav, const Array &thetav, Array &sigmaabsv, Array &sigmascav, Array &asymmparv, Table< 2 > &S11vv, Table< 2 > &S12vv, Table< 2 > &S33vv, Table< 2 > &S34vv, ArrayTable< 2 > &sigmaabsvv, ArrayTable< 2 > &sigmaabspolvv) override |
size_t | initializeExtraProperties (const Array &lambdav) override |
![]() | |
DustMix () | |
virtual double | getOpticalProperties (const Array &lambdav, const Array &thetav, Array &sigmaabsv, Array &sigmascav, Array &asymmparv, Table< 2 > &S11vv, Table< 2 > &S12vv, Table< 2 > &S33vv, Table< 2 > &S34vv, ArrayTable< 2 > &sigmaabsvv, ArrayTable< 2 > &sigmaabspolvv)=0 |
void | informAvailableWavelengthRange (Range available) |
virtual size_t | initializeExtraProperties (const Array &lambdav) |
void | setupSelfAfter () override |
![]() | |
MaterialMix () | |
Configuration * | config () const |
Random * | random () const |
void | setupSelfBefore () override |
![]() | |
SimulationItem () | |
virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
virtual void | setupSelfAfter () |
virtual void | setupSelfBefore () |
![]() | |
Item () | |
![]() | |
MultiGrainPopulationInterface () | |
Private Types | |
using | BaseType = MultiGrainDustMix |
using | ItemType = WeingartnerDraineDustMix |
Private Attributes | |
Environment | _environment |
int | _numGraphiteSizes |
int | _numPAHSizes |
int | _numSilicateSizes |
Friends | |
class | ItemRegistry |
The WeingartnerDraineDustMix class represents realistic dust mixtures consisting of populations of silicate, graphite, and PAH dust grains. It is assumed that 50% of the PAHs are neutral and 50% are ionized. The size distributions of each of these grains are fitted in such a way that they can reproduce the extinction curve of the Milky Way, the LMC, or the SMC, respectively. For details we refer to Weingartner & Draine (2001, ApJ, 548, 296) and Li & Draine (2001, ApJ, 554, 778).
As noted at the end of section 3 in Weingartner & Draine (2001), the absence of PAHs in the SMC dust model might be a special attribute of the specific sight line, so it may be unrealistic.
For each of the populations, the user can configure the number of grain size bins used to discretize the thermal emission calculations for the dust mix.
The class uses the grain compositions defined in the DraineSilicateGrainComposition, DraineGraphiteGrainComposition, DraineNeutralPAHGrainComposition, and DraineIonizedPAHGrainComposition classes.
The grain size distributions are implementated internally in the class because they are very specific to this particular dust mix. They are given as complicated analytical formulas with predefined constant parameters depending on the selected environment (Milky Way, LMC or SMC). For the graphite and silicate populations, the distribution is a power-law function with a curvature and an exponential cutoff. For the PAH populations, it is the sum of two log-normal distributions, cut off at some upper grain size. The exact forms of the grain size distribution functions can be found in Weingartner & Draine (2001, ApJ, 548, 296).
|
strong |
The enumeration type indicating the environment for the Weingartner-Draine dust.
MilkyWay : "the Milky Way" .
LMC : "the Large Magellanic Cloud" .
SMC : "the Small Magellanic Cloud" .
|
inlineprotected |
Default constructor for concrete Item subclass WeingartnerDraineDustMix : "a Weingartner and Draine (2001) dust mix" .
|
inline |
This function returns the value of the discoverable Environment enumeration property environment : "the environment determining the dust model" .
The default value for this property is given by the conditional value expression "MilkyWay" .
|
inline |
This function returns the value of the discoverable integer property numGraphiteSizes : "the number of graphite grain size bins" .
The minimum value for this property is "1" .
The default value for this property is given by the conditional value expression "5" .
|
inline |
This function returns the value of the discoverable integer property numPAHSizes : "the number of neutral and ionized PAH size bins (each)" .
The minimum value for this property is "1" .
The default value for this property is given by the conditional value expression "5" .
|
inline |
This function returns the value of the discoverable integer property numSilicateSizes : "the number of silicate grain size bins" .
The minimum value for this property is "1" .
The default value for this property is given by the conditional value expression "5" .
|
overrideprotectedvirtual |
This function adds the relevant grain populations to the dust mix
Reimplemented from MaterialMix.