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

#include <skrtscatter_phasematrix.h>

Inheritance diagram for skOpticalProperties_AerosolProfile:
skOpticalProperties skOpticalProperties_AerosolProfileH2SO4 skOpticalProperties_AerosolProfileIce skOpticalProperties_AerosolProfileDust

Public Member Functions

bool SetLogNormalProfileClimatology (const double *altmeters, const double *moderadius_microns, const double *modewidth, size_t numalt)
 
bool SetLogNormalProfileClimatologyFromFile (const char *filename)
 
bool SetGammaProfileClimatology (const double *altmeters, const double *effectiveradius_microns, const double *rate, size_t numalt)
 
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. More...
 
virtual bool UpdateInternalClimatology (const GEODETIC_INSTANT &pt) override
 
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
 Calculate the phase matrix at the specified wavenumber and scattering angle.
 
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.
 
- 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 base class that allows the optical properties of atmospheric particles to be calculated. The class combines the MIE/TMATRIX codes for individual particles with the refractive index and suitable particle distributions such as log normal and gamma. The class also provides the option for a climatology that provides the spatial variation of distribution parameters with height, time and location. (eg variations in mode radius and mode width can be specified via the climatology).

Member Function Documentation

bool skOpticalProperties_AerosolProfile::SetLogNormalProfileClimatology ( const double *  altmeters,
const double *  moderadius_microns,
const double *  modewidth,
size_t  numalt 
)

Sets the particle size climatology to a single log normal profile of mode radius in microns and mode width

Referenced by SetLogNormalProfileClimatologyFromFile().

bool skOpticalProperties_AerosolProfile::SetLogNormalProfileClimatologyFromFile ( const char *  filename)

Sets the particle size climatology to a single log normal profile of mode radius in microns and mode width read from a text file.

References SetLogNormalProfileClimatology().

bool skOpticalProperties_AerosolProfile::SetGammaProfileClimatology ( const double *  altmeters,
const double *  effectiveradius_microns,
const double *  rate,
size_t  numalt 
)

Sets the particle size climatology to a single gamma profile of effective radius and rate

bool skOpticalProperties_AerosolProfile::SetAtmosphericState ( skClimatology *  neutralatmosphere,
const GEODETIC_INSTANT &  pt,
bool *  crosssectionschanged 
)
overridevirtual

Sets the atmospheric state and location for calculating cross-sections, usually temperature, pressure and position.

[NOT THREAD SAFE} Function that allows the optical properties class to update internal parameters in response to the caller changing geophysical location. This is provided so that radiative transfer models can manage cross-sections that depend upon pressure and temperature. The user (eg the radiative transfer model) will usually call SetAtmosphericState before calling CalculateCrossSections.

Parameters
neutralatmosphereA climatology passed in by the user. The optical properties class can use this class if they wish to lookup parameters of interest. The climatology will usually support, pressure, temperature and density.
ptThe time and location at which the next set of cross-sections will be needed. Note that the height field in point will be valid (as this is often used to get the pressure and temperature).
crosssectionschangedreturns true if the new geophysical location will cause a change in cross-section. Several species (eg Rayleigh scattering) are completely unaffected by changes in location.

Implements skOpticalProperties.

Referenced by skOpticalProperties_MartHybridProfile::SetAtmosphericState().

bool skOpticalProperties_AerosolProfile::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.

Referenced by skOpticalProperties_MartHybridProfile::UpdateInternalClimatology().


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