#include <GrainComposition.hpp>
Public Member Functions | |
virtual double | bulkDensity () const =0 |
virtual string | name () const =0 |
virtual string | resourceNameForEnthalpies () const =0 |
virtual string | resourceNameForMuellerMatrix () const |
virtual string | resourceNameForOpticalProps () const =0 |
virtual bool | resourcesForSpheroidalEmission (bool &resource, double &interpol, string &tableName1, string &tableName2) 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 |
Protected Member Functions | |
GrainComposition () | |
![]() | |
SimulationItem () | |
virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
virtual void | setupSelfAfter () |
virtual void | setupSelfBefore () |
![]() | |
Item () | |
Private Types | |
using | BaseType = SimulationItem |
using | ItemType = GrainComposition |
Friends | |
class | ItemRegistry |
GrainComposition is an abstract class that represents the optical and calorimetric properties of a population of dust grains with a given material composition.
The basic optical properties are provided for arbitrary grain sizes and at arbitrary wavelengths; in practice, they are defined on a two-dimensional grid of wavelengths
Optionally, a grain composition may provide the four coefficients
Furthermore, a grain composition may optionally provide additional properties relevant for calculating the polarization effects of scattering, absorption and emission by spheroidal grains. The current implementation supports only the properties relevant for polarized emission, i.e the absorption efficiencies
The calorimetric properties consist of the specific enthalpy (internal energy) per unit volume, given in J/m3, at arbitrary temperature. The specific enthalpy is obtained by integrating the specific heat capacity of the material over the temperature range, using an arbitrary zero point. In practice, the specific enthalpy is defined on a grid of temperatures
A final, key property is the bulk mass density
The GrainComposition class provides a public interface for retrieving the resource names for the various tables mentioned above, and for retrieving the value of the bulk mass density. Subclasses are required to implement these functions appropriately.
|
inlineprotected |
Default constructor for abstract Item subclass GrainComposition : "a dust grain composition" .
|
pure virtual |
This function returns the bulk mass density
Implemented in BegemannPorousAluminaGrainComposition, CrystalEnstatiteGrainComposition, CrystalForsteriteGrainComposition, DorschnerOlivineGrainComposition, DraineGraphiteGrainComposition, DraineIonizedPAHGrainComposition, DraineNeutralPAHGrainComposition, DraineSilicateGrainComposition, DustEmGrainComposition, HofmeisterPericlaseGrainComposition, MieSilicateGrainComposition, MinSilicateGrainComposition, PolarizedGraphiteGrainComposition, PolarizedSilicateGrainComposition, TrustGraphiteGrainComposition, TrustNeutralPAHGrainComposition, and TrustSilicateGrainComposition.
|
pure virtual |
This function returns a brief human-readable identifier for the type of grain composition represented by the instance. The identifier is not allowed to contain white space.
Implemented in BegemannPorousAluminaGrainComposition, CrystalEnstatiteGrainComposition, CrystalForsteriteGrainComposition, DorschnerOlivineGrainComposition, DraineGraphiteGrainComposition, DraineIonizedPAHGrainComposition, DraineNeutralPAHGrainComposition, DraineSilicateGrainComposition, DustEmGrainComposition, HofmeisterPericlaseGrainComposition, MieSilicateGrainComposition, MinSilicateGrainComposition, PolarizedGraphiteGrainComposition, PolarizedSilicateGrainComposition, SpheroidalGraphiteGrainComposition, SpheroidalSilicateGrainComposition, TrustGraphiteGrainComposition, TrustNeutralPAHGrainComposition, and TrustSilicateGrainComposition.
|
pure virtual |
This function returns the name of the stored table resource tabulating the specific enthalpies per unit volume as a function of temperature.
Implemented in BegemannPorousAluminaGrainComposition, CrystalEnstatiteGrainComposition, CrystalForsteriteGrainComposition, DorschnerOlivineGrainComposition, DraineGraphiteGrainComposition, DraineIonizedPAHGrainComposition, DraineNeutralPAHGrainComposition, DraineSilicateGrainComposition, DustEmGrainComposition, HofmeisterPericlaseGrainComposition, MieSilicateGrainComposition, MinSilicateGrainComposition, PolarizedGraphiteGrainComposition, PolarizedSilicateGrainComposition, TrustGraphiteGrainComposition, TrustNeutralPAHGrainComposition, and TrustSilicateGrainComposition.
|
virtual |
This function returns the name of the stored table resource tabulating the coefficients of the Mueller matrix as a function of wavelength, grain size, and scattering angle. This function is invoked for the MaterialPhaseFunction scattering mode (to obtain
Reimplemented in PolarizedGraphiteGrainComposition, and PolarizedSilicateGrainComposition.
|
pure virtual |
This function returns the name of the stored table resource tabulating the basic optical properties (absorption and scattering efficiencies and asymmetry parameter) as a function of wavelength and grain size. The asymmetry parameter values are used only with the HenyeyGreenstein scattering mode.
Implemented in BegemannPorousAluminaGrainComposition, CrystalEnstatiteGrainComposition, CrystalForsteriteGrainComposition, DorschnerOlivineGrainComposition, DraineGraphiteGrainComposition, DraineIonizedPAHGrainComposition, DraineNeutralPAHGrainComposition, DraineSilicateGrainComposition, DustEmGrainComposition, HofmeisterPericlaseGrainComposition, MieSilicateGrainComposition, MinSilicateGrainComposition, PolarizedGraphiteGrainComposition, PolarizedSilicateGrainComposition, TrustGraphiteGrainComposition, TrustNeutralPAHGrainComposition, and TrustSilicateGrainComposition.
|
virtual |
This function returns information on the resources required for implementing thermal emission from aligned spheriodal grains. It is invoked for the SpheroidalPolarization scattering mode. If the grain composition does not support this mode, the function returns false and the output arguments remain unchanghed. If the grain composition does support this mode, the function returns true and the output arguments are updated as follows:
Each of the stored tables tabulates the absorption efficiencies
The default implementation in this base class returns false and does not change the output arguments, indicating that there is no support for spheroidal grains.
Reimplemented in SpheroidalGraphiteGrainComposition, and SpheroidalSilicateGrainComposition.