#include <LyaNeutralHydrogenGasMix.hpp>
Public Member Functions | |
double | defaultTemperature () const |
bool | hasExtraSpecificState () const override |
bool | hasPolarizedScattering () const override |
bool | hasResonantScattering () const override |
bool | hasScatteringDispersion () const override |
bool | includePolarization () const |
double | indicativeTemperature (const MaterialState *state, const Array &Jv) const override |
void | initializeSpecificState (MaterialState *state, double metallicity, double temperature, const Array ¶ms) 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 |
double | sectionAbs (double lambda) const override |
double | sectionExt (double lambda) const override |
double | sectionSca (double lambda) const override |
vector< StateVariable > | specificStateVariableInfo () const override |
Public Member Functions inherited from MaterialMix | |
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 |
Public Member Functions inherited from SimulationItem | |
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 |
Public Member Functions inherited from Item | |
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 | |
LyaNeutralHydrogenGasMix () | |
void | setupSelfBefore () override |
Protected Member Functions inherited from MaterialMix | |
MaterialMix () | |
Configuration * | config () const |
Random * | random () const |
void | setupSelfBefore () override |
Protected Member Functions inherited from SimulationItem | |
SimulationItem () | |
virtual bool | offersInterface (const std::type_info &interfaceTypeInfo) const |
virtual void | setupSelfAfter () |
virtual void | setupSelfBefore () |
Protected Member Functions inherited from Item | |
Item () | |
Private Types | |
using | BaseType = MaterialMix |
using | ItemType = LyaNeutralHydrogenGasMix |
Private Attributes | |
double | _defaultTemperature |
DipolePhaseFunction | _dpf |
bool | _includePolarization |
Friends | |
class | ItemRegistry |
Additional Inherited Members | |
Public Types inherited from MaterialMix | |
enum class | DynamicStateType { None , Primary , Secondary , PrimaryIfMergedIterations } |
enum class | MaterialType { Dust , Electrons , Gas } |
The LyaNeutralHydrogenGasMix class describes the material properties related to Lyman-alpha line transfer for a population of neutral hydrogen atoms, including support for polarization by scattering.
The spatial distributions for both the mass density and the temperature of the neutral hydrogen gas must be defined by the input model and are considered to be constant during the simulation. In this context, this material mix offers a configuration property to specify a default gas temperature that is used by geometric media as a fixed temperature across the spatial domain. Imported media offer an importTemperature flag that allows defining a different gas temperature for each particle or cell. In this case, the default dust temperature configured for the material mix is ignored.
This material mix also offers a configuration property to enable or disable support for polarization. It returns one of the Lya
or LyaPolarization
scattering modes depending on the configured value for this property. The dust-oriented functions for retrieving material properties are not used for the Lyman-alpha-specific aspects of the photon cycle, but some of them are used during setup, for example to normalize the mass of a geometric medium component based on optical depth. To this end, the scattering cross section is calculated using the configured default temperature and the absorption cross section is zero.
This item type is displayed only if the Boolean expression "Lya" evaluates to true after replacing the names by true or false depending on their presence.
When an item of this type is used, the names provided by the conditional value expression "GasMix" are inserted into the name sets used for evaluating Boolean expressions.
|
inlineprotected |
Default constructor for concrete Item subclass LyaNeutralHydrogenGasMix : "neutral hydrogen for Lyman-alpha line transfer" .
|
inline |
This function returns the value of the discoverable double property defaultTemperature : "the default temperature of the neutral hydrogen gas" .
This property represents a physical quantity of type "temperature" .
The minimum value for this property is "[3" .
The maximum value for this property is "1e9]" .
The default value for this property is given by the conditional value expression "1e4" .
This property is displayed only if the Boolean expression "Level2" evaluates to true after replacing the names by true or false depending on their presence.
|
overridevirtual |
This function returns true, indicating that the cross sections returned by this material mix depend on the values of specific state variables other than the number density, in this case the temperature.
Reimplemented from MaterialMix.
|
overridevirtual |
This function returns the value of the includePolarization flag, indicating whether the material mix supports polarization during scattering events or not.
Reimplemented from MaterialMix.
|
overridevirtual |
This function returns true, indicating that scattering for the material mix is resonant.
Reimplemented from MaterialMix.
|
overridevirtual |
This function returns true, indicating that a scattering interaction for this material mix may (and usually does) adjust the wavelength of the interacting photon packet.
Reimplemented from MaterialMix.
|
inline |
This function returns the value of the discoverable Boolean property includePolarization : "include support for polarization" .
The default value for this property is given by the conditional value expression "false" .
This property is displayed only if the Boolean expression "Level2" evaluates to true after replacing the names by true or false depending on their presence.
|
overridevirtual |
This function returns an indicative temperature of the material mix when it would be embedded in a given radiation field. The implementation in this class ignores the radiation field and returns the temperature stored in the specific state for the relevant spatial cell and medium component. Because the hydrogen temperature is not calculated self-consistently in our treatment, this value corresponds to the temperature defined by the input model at the start of the simulation.
Reimplemented from MaterialMix.
|
overridevirtual |
This function initializes the specific state variables requested by this fragmented dust mix through the specificStateVariableInfo() function except for the number density. For the Lyman-alpha material mix, the function initializes the temperature to the specified imported temperature, or if this is not available, to the user-configured default temperature for this material mix. The metallicity and custom parameter arguments are ignored.
Reimplemented from MaterialMix.
|
overridevirtual |
This function returns the mass of neutral hydrogen atom.
Implements MaterialMix.
|
overridevirtual |
This function returns the fundamental material type represented by this material mix, which is MaterialType::Gas.
Implements MaterialMix.
|
overridevirtual |
This function returns the absorption opacity \(k^\text{abs}=n\varsigma^\text{abs}\), which is trivially zero for the Lyman-alpha material mix.
Implements MaterialMix.
|
overridevirtual |
This function returns the extinction opacity \(k^\text{ext}=k^\text{abs}+k^\text{sca}\) for the given wavelength and material state. The photon properties are not used. For the Lyman-alpha material mix, the extinction opacity equals the scattering opacity.
Implements MaterialMix.
|
overridevirtual |
This function returns the scattering opacity \(k^\text{sca}=n\varsigma^\text{sca}\) for the given wavelength and material state. The photon properties are not used.
Implements MaterialMix.
|
overridevirtual |
This function calculates the contribution of the medium component associated with this material mix to the peel-off photon luminosity, polarization state, and wavelength shift, for the given wavelength, geometry, material state, and photon properties. The contributions to the Stokes vector components are stored in the I, Q, U, V arguments, which are guaranteed to be initialized to zero by the caller, and the adjusted wavelength is stored in the lambda argument.
For the Lyman-alpha material mix, the function implements resonant scattering without or with support for polarization depending on the user-configured includePolarization property.
Implements MaterialMix.
|
overridevirtual |
This function performs a scattering event on the specified photon packet in the spatial cell and medium component represented by the specified material state and the receiving material mix. For the Lyman-alpha material mix, the function implements resonant scattering without or with support for polarization depending on the user-configured includePolarization property.
Implements MaterialMix.
|
overridevirtual |
This function returns the Lyman-alpha absorption cross section per hydrogen atom \(\varsigma^\text{abs}_\alpha(\lambda, T_\text{def})\) which is trivially zero for all wavelengths and temperatures.
Implements MaterialMix.
|
overridevirtual |
This function returns the total Lyman-alpha extinction cross section per hydrogen atom \(\varsigma^\text{ext}_\alpha(\lambda, T_\text{def})\) at the given wavelength and using the default gas temperature configured for this material mix. The extinction cross section is identical to the scattering cross section because the absorption cross section is zero.
Implements MaterialMix.
|
overridevirtual |
This function returns the Lyman-alpha scattering cross section per hydrogen atom \(\varsigma^\text{sca}_\alpha(\lambda, T_\text{def})\) at the given wavelength and using the default gas temperature configured for this material mix.
Implements MaterialMix.
|
overrideprotectedvirtual |
This function initializes the DipolePhaseFunction instance held by this class.
Reimplemented from SimulationItem.
|
overridevirtual |
This function returns a list of StateVariable objects describing the specific state variables used by the receiving material mix. See the description of the MaterialMix::specificStateVariableInfo() function for more information.
The Lyman-alpha material mix requires a gas temperature in addition to the standard number density, so this function returns a list containing these two items.
Implements MaterialMix.