#include <DraineLiDustMix.hpp>
Public Member Functions | |
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 | |
DraineLiDustMix () | |
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 = DraineLiDustMix |
Private Attributes | |
int | _numGraphiteSizes |
int | _numPAHSizes |
int | _numSilicateSizes |
Friends | |
class | ItemRegistry |
Additional Inherited Members | |
![]() | |
enum class | ScatteringMode { HenyeyGreenstein , MaterialPhaseFunction , SphericalPolarization , SpheroidalPolarization } |
![]() | |
enum class | DynamicStateType { None , Primary , Secondary , PrimaryIfMergedIterations } |
enum class | MaterialType { Dust , Electrons , Gas } |
The DraineLiDustMix class represents a dust mixture of silicate, graphite, and PAH dust grains designed by Draine & Li 2007. The size distribution of each of these dust grain populations is fine-tuned in such a way that the global dust properties accurately reproduce the extinction curve of the Milky Way.
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 following is an extract from the GRAIN_DL07.DAT data file specifying this dust model for the DustEM code (version 4.2), described by Compiègne et al. 2011 (AA, 525, A103):
# grain type, nsize, type keywords, Mdust/MH, rho, amin, amax, alpha/a0 [, at, ac, gamma (ED)] [, au, zeta, eta (CV)] # (cgs units) aSil 70 plaw-ed-cv 7.64E-03 3.50E+0 3.10E-8 2.00E-4 -3.21E+0 1.64E-5 1.00E-5 3E+0 1.64E-5 3.00E-01 1E+0 Gra 70 plaw-ed-cv 2.21E-03 2.24E+0 3.10E-8 2.00E-4 -2.54E+0 1.07E-6 4.28E-5 3E+0 1.07E-6 -1.65E-01 1E+0 Gra 30 logn 1.66E-04 2.24E+0 3.10E-8 4.00E-6 2.00E-7 5.50E-1 PAH0_DL07 10 mix-logn 4.97E-04 2.24E+0 3.10E-8 1.20E-7 4.00E-8 4.00E-1 PAH1_DL07 10 mix-logn 4.97E-04 2.24E+0 3.10E-8 1.20E-7 4.00E-8 4.00E-1
This class uses grain compositions obtained through the DustEmGrainComposition class, respectively selecting the grain types aSil (astronimical silicates), Gra (graphite), PAH0_DL07 (neutral PAHs), and PAH1_DL07 (ionized PAHs). It further uses the size distributions defined in the ModifiedPowerLawGrainSizeDistribution and LogNormalGrainSizeDistribution classes.
|
inlineprotected |
Default constructor for concrete Item subclass DraineLiDustMix : "a Draine and Li (2007) dust mix" .
|
inline |
This function returns the value of the discoverable integer property numGraphiteSizes : "the number of graphite grain size bins (for each of two populations)" .
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 SimulationItem.