skOpticalProperties  2.1
Public Member Functions | List of all members
skOpticalProperties_HenyeyGreenstein Class Reference

#include <skrtscatter_phasematrix.h>

Inheritance diagram for skOpticalProperties_HenyeyGreenstein:
skOpticalProperties

Public Member Functions

virtual bool SetAtmosphericState (skClimatology *neutralatmosphere, const GEODETIC_INSTANT &pt, bool *crosssectionschanged) override
 Sets the atmospheric state and location for calculating cross-sections, usually temperature, pressure and position.
 
virtual bool UpdateInternalClimatology (const GEODETIC_INSTANT &pt) override
 
virtual bool IsScatterer () const override
 Returns true if this particles scatters radiation.
 
virtual bool IsAbsorber () const override
 Returns true if this particles absorbs radiation radiation.
 
virtual bool CalculateCrossSections (double wavenumber, double *absxs, double *extxs, double *scattxs, size_t threadindex) override
 Calculate cross-sections at the specified wave-number.
 
virtual bool CalculatePhaseMatrix (double wavenumber, double cosscatterangle, skRTPhaseMatrix *phasematrix, size_t threadindex) override
 
- Public Member Functions inherited from skOpticalProperties
 skOpticalProperties ()
 
bool GetRotatedPhaseMatrix (double wavenum, double mu, double muprime, double dphi, skRTPhaseMatrix *rotatedmatrix, size_t threadindex)
 Returns the rotated phase matrix necessary for scattering. More...
 
void CheckCosineRange (double *mu)
 
bool IsDeltaFunctionForwardScatter () const
 Returns true if this cross-section has a delta function forward scatter element.
 
virtual bool CalculateCrossSectionsArray (const std::vector< double > &wavenumber, std::vector< double > *absxs, std::vector< double > *extxs, std::vector< double > *scattxs)
 Calculate cross-sections at the specified array of wave-numbers. More...
 

Detailed Description

A class that calculates the Henyey-Greenstein phase matrices. The calculation is only scalar and does not provide any polarization: only P(1,1) of the phase matrix is non-zero.

Support for Scattering Cross Section
The Henyey Greenstein algorithm does not specify the scattering cross-section. This implentation provides this information by extracting extinction, scattering and cross-section information from another instance of class skOpticalProperties. The user is free to choose the instance and may, for example, choose a user defined table or the Mie scattering cross-sections which when coupled to this object provide HG phase matrices. It is important that the the supplied instance returns true for the "IsScatterer" method otherwise if this calculation is to have any effect on the radiative transfer calculation.

Member Function Documentation

bool skOpticalProperties_HenyeyGreenstein::UpdateInternalClimatology ( const GEODETIC_INSTANT &  pt)
overridevirtual
Function that allows the optical properties class to update any internal
climatologies it may be using. This is useful for optical properties that use
internal climatologies to store various parameters (eg aerosols that store geographical distributions
of mode radius and mode width). The call to UpdateInternalClimatology differs from SetAtmosphericState
in its expected usage: a call to UpdateInternalClimatology configures internal climatologies so they
can quickly service the many subsequent calls to SetAtmosphericState.
Parameters
ptThe time and location at which the next set of cross-sections will be needed. Note thatthe height field is usually ignored as all internal climatologies are expected to cache height profiles of their respective parameters.
Returns
True if success otherwise false.

Implements skOpticalProperties.

References skOpticalProperties::UpdateInternalClimatology().

bool skOpticalProperties_HenyeyGreenstein::CalculatePhaseMatrix ( double  wavenumber,
double  cosscatterangle,
skRTPhaseMatrix P,
size_t  threadindex 
)
overridevirtual

Claculates the Henyey Greenstein phase matrix. Normailized so it equals 4pi when integrated over the unit sphere

Reimplemented from skOpticalProperties.

References skRTPhaseMatrix::At().


The documentation for this class was generated from the following files: