Isis 3 Programmer Reference
Isis::Anisotropic2 Class Reference

#include <Anisotropic2.h>

Inheritance diagram for Isis::Anisotropic2:
Inheritance graph
Collaboration diagram for Isis::Anisotropic2:
Collaboration graph

Public Member Functions

 Anisotropic2 (Pvl &pvl, PhotoModel &pmodel)
 Empty constructor. More...
 
void CalcAtmEffect (double pha, double inc, double ema, double *pstd, double *trans, double *trans0, double *sbar, double *transs)
 Calculate the atmospheric scattering effect using photometric angle information. More...
 
virtual void SetStandardConditions (bool standard)
 Used to calculate atmosphere at standard conditions. More...
 
void GenerateAhTable ()
 This method computes the values of the atmospheric Ah table and sets the properties of the atmospheric Ah spline. More...
 
void GenerateHahgTables ()
 This method computes the values of the atmospheric Hahg and Hahg0 tables and sets the properties of the atmospheric Hahg and Hahg0 splines. More...
 
void GenerateHahgTablesShadow ()
 This method is a modified version of the GenerateHahgTables method and is used solely for shadow modeling. More...
 
void SetAtmosAtmSwitch (const int atmswitch)
 Set the switch that controls the function that will be integrated. More...
 
void SetAtmosBha (const double bha)
 Set the Anisotropic Atmospheric function parameter. More...
 
void SetAtmosHga (const double hga)
 Set the Hapke atmospheric function parameter. More...
 
void SetAtmosInc (const double inc)
 Set the incidence angle. More...
 
void SetAtmosNulneg (const string nulneg)
 Set the Atmospheric function parameter. More...
 
void SetAtmosPhi (const double phi)
 Set the azimuth angle. More...
 
void SetAtmosTau (const double tau)
 Set the Atmospheric function parameter. More...
 
void SetAtmosTauref (const double tauref)
 Set the Atmospheric function parameter. More...
 
void SetAtmosWha (const double wha)
 Set the Atmospheric function parameter. More...
 
void SetAtmosHnorm (const double hnorm)
 Set the Atmospheric function parameter. More...
 
void SetAtmosIord (const string offset)
 Set additive offset in fit. More...
 
void SetAtmosEstTau (const string esttau)
 Estimate the optical depth tau using shadows. More...
 
string AlgorithmName () const
 Return atmospheric algorithm name. More...
 
bool AtmosAdditiveOffset () const
 Allow additive offset in fit? More...
 
double AtmosHnorm () const
 Return atmospheric Hnorm value. More...
 
double AtmosBha () const
 Return atmospheric Bha value. More...
 
double AtmosTau () const
 Return atmospheric Tau value. More...
 
double AtmosWha () const
 Return atmospheric Wha value. More...
 
double AtmosHga () const
 Return atmospheric Hga value. More...
 
double AtmosTauref () const
 Return atmospheric Tauref value. More...
 
bool AtmosNulneg () const
 Return atmospheric Nulneg value. More...
 
double AtmosAb () const
 Return atmospheric Ab value. More...
 
double AtmosHahgsb () const
 Return atmospheric Hahgsb value. More...
 
int AtmosNinc () const
 Return atmospheric Ninc value. More...
 
double AtmosMunot () const
 Return atmospheric Munot value. More...
 
vector< double > AtmosIncTable ()
 Return atmospheric IncTable value. More...
 
vector< double > AtmosAhTable ()
 Return atmospheric AhTable value. More...
 
vector< double > AtmosHahgtTable ()
 Return atmospheric HahgtTable value. More...
 
vector< double > AtmosHahgt0Table ()
 Return atmospheric Hahgt0Table value. More...
 
NumericalApproximation AtmosAhSpline ()
 If GenerateAhTable() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosAhTable) with first derivatives of the endpoints equal to 1.0e30. More...
 
NumericalApproximation AtmosHahgtSpline ()
 If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosHahgtTable) with first derivatives of the endpoints equal to 1.0e30. More...
 
NumericalApproximation AtmosHahgt0Spline ()
 If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosHahgt0Table) with first derivatives of the endpoints equal to 1.0e30. More...
 

Static Public Member Functions

static double G11Prime (double tau)
 Perform Chandra and Van de Hulst's series approximation for the g'11 function needed in second order scattering theory. More...
 
static double Ei (double x)
 This routine computes the exponential integral, Ei(x). More...
 
static double En (unsigned int n, double x)
 This routine evaluates the generalized exponential integral, En(x). More...
 

Protected Member Functions

virtual void AtmosModelAlgorithm (double phase, double incidence, double emission)
 Anisotropic atmospheric scattering with P1 single-particle phase fn, in the second approximation. More...
 
void SetAtmosNulneg (bool nulneg)
 
void SetAtmosIord (bool offset)
 
void SetAtmosEstTau (bool esttau)
 
void SetAlgorithmName (string name)
 
void SetOldTau (double tau)
 
void SetOldWha (double wha)
 
PhotoModelGetPhotoModel () const
 
bool StandardConditions () const
 
bool TauOrWhaChanged () const
 Checks whether tau or wha have changed. More...
 
double Eulgam () const
 

Protected Attributes

int p_atmosAtmSwitch
 
int p_atmosNinc
 
double p_atmosBha
 
double p_atmosBhasave
 
double p_atmosHgasave
 
double p_atmosTauref
 
double p_atmosTausave
 
double p_atmosWhasave
 
double p_pstd
 Pure atmospheric-scattering term. More...
 
double p_trans
 Transmission of surface reflected light through the atmosphere overall. More...
 
double p_trans0
 Transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere. More...
 
double p_transs
 Transmission of light that must be subtracted from the flat surface model to get the shadow model. More...
 
double p_sbar
 Illumination of the ground by the sky. More...
 
double p_atmosHga
 
double p_atmosTau
 
double p_atmosWha
 
double p_atmosAb
 
double p_atmosHnorm
 Atmospheric shell thickness normalized to planet radius. More...
 
bool p_atmosAddOffset
 Allow additive offset in fit. More...
 
bool p_atmosEstTau
 Estimate optical depth tau using shadows. More...
 
vector< double > p_atmosIncTable
 
vector< double > p_atmosAhTable
 
double p_atmosHahgsb
 
vector< double > p_atmosHahgtTable
 
vector< double > p_atmosHahgt0Table
 
double p_atmosInc
 
double p_atmosPhi
 
double p_atmosMunot
 
double p_atmosSini
 
double p_atmosCosphi
 
double p_atmosEulgam
 
NumericalApproximation p_atmosAhSpline
 Spline object for the atmospheric Ah Table. Properties are set in GenerateAhTable(). More...
 
NumericalApproximation p_atmosHahgtSpline
 Spline object for the atmospheric Hahg Table. Properties are set in GenerateHahgTables(). More...
 
NumericalApproximation p_atmosHahgt0Spline
 Spline object for the atmospheric Hahg0 Table. Properties are set in GenerateHahgTables(). More...
 

Private Attributes

double p_wha2
 ??? More...
 
double p_wham
 ??? More...
 
double p_e1
 ??? More...
 
double p_e1_2
 ??? More...
 
double p_e2
 ??? More...
 
double p_e3
 ??? More...
 
double p_e4
 ??? More...
 
double p_e5
 ??? More...
 
double p_em
 ??? More...
 
double p_e
 ??? More...
 
double p_f1m
 ??? More...
 
double p_f2m
 ??? More...
 
double p_f3m
 ??? More...
 
double p_f4m
 ??? More...
 
double p_g12
 ??? More...
 
double p_g13
 ??? More...
 
double p_g14
 ??? More...
 
double p_g32
 ??? More...
 
double p_g33
 ??? More...
 
double p_g34
 ??? More...
 
double p_f1
 ??? More...
 
double p_f2
 ??? More...
 
double p_f3
 ??? More...
 
double p_f4
 ??? More...
 
double p_g11p
 ??? More...
 
double p_g12p
 ??? More...
 
double p_g13p
 ??? More...
 
double p_g14p
 ??? More...
 
double p_g32p
 ??? More...
 
double p_g33p
 ??? More...
 
double p_g34p
 ??? More...
 
double p_x0_0
 ??? More...
 
double p_y0_0
 ??? More...
 
double p_x0_1
 ??? More...
 
double p_y0_1
 ??? More...
 
double p_delta_0
 ??? More...
 
double p_delta_1
 ??? More...
 
double p_alpha0_0
 ??? More...
 
double p_alpha1_0
 ??? More...
 
double p_beta0_0
 ??? More...
 
double p_beta1_0
 ??? More...
 
double p_fac
 ??? More...
 
double p_den
 ??? More...
 
double p_p0
 ??? More...
 
double p_q0
 ??? More...
 
double p_p1
 ??? More...
 
double p_q1
 ??? More...
 
double p_q02p02
 ??? More...
 
double p_q12p12
 ??? More...
 
bool p_standardConditions
 
string p_atmosAlgorithmName
 
PhotoModelp_atmosPM
 
bool p_atmosNulneg
 
double p_atmosTauold
 
double p_atmosWhaold
 

Detailed Description

Author
1998-12-21 Randy Kirk
History:
1998-12-21 Randy Kirk - USGS, Flagstaff - Original code.
History:
2007-02-20 Janet Barrett - Imported from Isis2.
History:
2007-08-15 Steven Lambright - Refactored code
History:
2008-03-07 Janet Barrett - Moved code to set standard conditions to the AtmosModel class
History:
2008-06-18 Christopher Austin - Fixed documentation error
History:
2008-11-05 Jeannie Walldren - Replaced references to NumericalMethods::r8expint() with AtmosModel::En(), NumericalMethods::G11Prime() with AtmosModel::G11Prime(), and NumericalMethods::r8ei() with AtmosModel::Ei(). Added documentation from Isis2.
History:
2011-08-17 Sharmila Prasad - Moved common HNORM to base AtmosModel
History:
2011-12-19 Janet Barrett - Added code to estimate the shadow brightness value (transs). Also got rid of unnecessary check for identical photometric angle values between successive calls. This check should only be made in the photometric models.
History:
2017-07-03 Makayla Shepherd - Updated documentation. References #4807.

Definition at line 44 of file Anisotropic2.h.

Constructor & Destructor Documentation

◆ Anisotropic2()

Isis::Anisotropic2::Anisotropic2 ( Pvl pvl,
PhotoModel pmodel 
)

Empty constructor.

Parameters
pvlPvl object containing a valid Anisotropic2 specification
pmodelPhotoModel object containing valid Anisotropic2 data

Definition at line 27 of file Anisotropic2.cpp.

Member Function Documentation

◆ AlgorithmName()

string Isis::AtmosModel::AlgorithmName ( ) const
inlineinherited

Return atmospheric algorithm name.

Definition at line 100 of file AtmosModel.h.

◆ AtmosAb()

double Isis::AtmosModel::AtmosAb ( ) const
inlineinherited

Return atmospheric Ab value.

Definition at line 139 of file AtmosModel.h.

Referenced by Isis::AlbedoAtm::NormModelAlgorithm().

◆ AtmosAdditiveOffset()

bool Isis::AtmosModel::AtmosAdditiveOffset ( ) const
inlineinherited

Allow additive offset in fit?

Definition at line 105 of file AtmosModel.h.

◆ AtmosAhSpline()

NumericalApproximation Isis::AtmosModel::AtmosAhSpline ( )
inlineinherited

If GenerateAhTable() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosAhTable) with first derivatives of the endpoints equal to 1.0e30.

Otherwise, it is a natural cubic spline with an empty data set.

Returns
NumericalApproximation Cubic spline
History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 183 of file AtmosModel.h.

Referenced by Isis::AlbedoAtm::AlbedoAtm(), and Isis::AlbedoAtm::NormModelAlgorithm().

◆ AtmosAhTable()

vector<double> Isis::AtmosModel::AtmosAhTable ( )
inlineinherited

Return atmospheric AhTable value.

Definition at line 160 of file AtmosModel.h.

◆ AtmosBha()

double Isis::AtmosModel::AtmosBha ( ) const
inlineinherited

Return atmospheric Bha value.

Definition at line 115 of file AtmosModel.h.

◆ AtmosHahgsb()

double Isis::AtmosModel::AtmosHahgsb ( ) const
inlineinherited

Return atmospheric Hahgsb value.

Definition at line 143 of file AtmosModel.h.

◆ AtmosHahgt0Spline()

NumericalApproximation Isis::AtmosModel::AtmosHahgt0Spline ( )
inlineinherited

If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosHahgt0Table) with first derivatives of the endpoints equal to 1.0e30.

Otherwise, it is a natural cubic spline with an empty data set.

Returns
NumericalApproximation Cubic spline
History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 211 of file AtmosModel.h.

◆ AtmosHahgt0Table()

vector<double> Isis::AtmosModel::AtmosHahgt0Table ( )
inlineinherited

Return atmospheric Hahgt0Table value.

Definition at line 168 of file AtmosModel.h.

◆ AtmosHahgtSpline()

NumericalApproximation Isis::AtmosModel::AtmosHahgtSpline ( )
inlineinherited

If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosIncTable, p_atmosHahgtTable) with first derivatives of the endpoints equal to 1.0e30.

Otherwise, it is a natural cubic spline with an empty data set.

Returns
NumericalApproximation Cubic spline
History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 197 of file AtmosModel.h.

◆ AtmosHahgtTable()

vector<double> Isis::AtmosModel::AtmosHahgtTable ( )
inlineinherited

Return atmospheric HahgtTable value.

Definition at line 164 of file AtmosModel.h.

◆ AtmosHga()

double Isis::AtmosModel::AtmosHga ( ) const
inlineinherited

Return atmospheric Hga value.

Definition at line 127 of file AtmosModel.h.

Referenced by Isis::NumericalAtmosApprox::InrFunc2Bint().

◆ AtmosHnorm()

double Isis::AtmosModel::AtmosHnorm ( ) const
inlineinherited

Return atmospheric Hnorm value.

Definition at line 110 of file AtmosModel.h.

◆ AtmosIncTable()

vector<double> Isis::AtmosModel::AtmosIncTable ( )
inlineinherited

Return atmospheric IncTable value.

Definition at line 156 of file AtmosModel.h.

◆ AtmosModelAlgorithm()

void Isis::Anisotropic2::AtmosModelAlgorithm ( double  phase,
double  incidence,
double  emission 
)
protectedvirtual

Anisotropic atmospheric scattering with P1 single-particle phase fn, in the second approximation.

This subroutine goes through much of the derivation twice, once for the axisymmetric (m=0) and once for the m=1 parts of scattered light.

Parameters
phaseValue of the phase angle.
incidenceValue of the incidence angle.
emissionValue of the emission angle.
History:
1998-12-21 Randy Kirk - USGS, Flagstaff - Original code
History:
1999-03-12 K Teal Thompson Port to Unix/ISIS; declare vars; add implicit none.
History:
2007-02-20 Janet Barrett - Imported from Isis2 pht_atm_functions to Isis3.
History:
2008-11-05 Jeannie Walldren - Replaced NumericalMethods::r8expint() with AtmosModel::En(), NumericalMethods::G11Prime() with AtmosModel::G11Prime(), and NumericalMethods::r8ei() with AtmosModel::Ei(). Replaced Isis::PI with PI since this is in Isis namespace.
History:
2011-12-19 Janet Barrett - Added code to estimate the shadow brightness value (transs). Also got rid of unnecessary check for identical photometric angle values between successive calls. This check should only be made in the photometric models.

Implements Isis::AtmosModel.

Definition at line 59 of file Anisotropic2.cpp.

References Isis::AtmosModel::Ei(), Isis::AtmosModel::En(), Isis::AtmosModel::G11Prime(), p_alpha0_0, p_alpha1_0, Isis::AtmosModel::p_atmosHnorm, p_beta0_0, p_beta1_0, p_delta_0, p_delta_1, p_den, p_e, p_e1, p_e1_2, p_e2, p_e3, p_e4, p_e5, p_em, p_f1, p_f1m, p_f2, p_f2m, p_f3, p_f3m, p_f4, p_f4m, p_fac, p_g11p, p_g12, p_g12p, p_g13, p_g13p, p_g14, p_g14p, p_g32, p_g32p, p_g33, p_g33p, p_g34, p_g34p, p_p0, p_p1, Isis::AtmosModel::p_pstd, p_q0, p_q02p02, p_q1, p_q12p12, Isis::AtmosModel::p_sbar, Isis::AtmosModel::p_trans, Isis::AtmosModel::p_trans0, Isis::AtmosModel::p_transs, p_wha2, p_wham, p_x0_0, p_x0_1, p_y0_0, p_y0_1, Isis::PI, Isis::AtmosModel::TauOrWhaChanged(), Isis::IException::Unknown, and Isis::IException::User.

◆ AtmosMunot()

double Isis::AtmosModel::AtmosMunot ( ) const
inlineinherited

Return atmospheric Munot value.

Definition at line 151 of file AtmosModel.h.

◆ AtmosNinc()

int Isis::AtmosModel::AtmosNinc ( ) const
inlineinherited

Return atmospheric Ninc value.

Definition at line 147 of file AtmosModel.h.

◆ AtmosNulneg()

bool Isis::AtmosModel::AtmosNulneg ( ) const
inlineinherited

Return atmospheric Nulneg value.

Definition at line 135 of file AtmosModel.h.

◆ AtmosTau()

double Isis::AtmosModel::AtmosTau ( ) const
inlineinherited

Return atmospheric Tau value.

Definition at line 119 of file AtmosModel.h.

Referenced by Isis::NumericalAtmosApprox::InrFunc2Bint().

◆ AtmosTauref()

double Isis::AtmosModel::AtmosTauref ( ) const
inlineinherited

Return atmospheric Tauref value.

Definition at line 131 of file AtmosModel.h.

◆ AtmosWha()

double Isis::AtmosModel::AtmosWha ( ) const
inlineinherited

Return atmospheric Wha value.

Definition at line 123 of file AtmosModel.h.

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ CalcAtmEffect()

void Isis::AtmosModel::CalcAtmEffect ( double  pha,
double  inc,
double  ema,
double *  pstd,
double *  trans,
double *  trans0,
double *  sbar,
double *  transs 
)
inherited

Calculate the atmospheric scattering effect using photometric angle information.

Parameters
phaphase angle
incincidence angle
emaemission angle
pstdpure atmospheric-scattering term
transtransmission of surface reflected light through the atmosphere overall
trans0transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere
sbarillumination of the ground by the sky
Exceptions
Isis::IException::User"Invalid photometric angles"

Definition at line 475 of file AtmosModel.cpp.

Referenced by Isis::AlbedoAtm::AlbedoAtm(), and Isis::AlbedoAtm::NormModelAlgorithm().

◆ Ei()

double Isis::AtmosModel::Ei ( double  x)
staticinherited

This routine computes the exponential integral, Ei(x).

This is defined as

\[ Ei(x) = - \int_{-x}^{\infty} \frac{e^{-t}}{t}\mathrm{d}t = \int_{-\infty}^{x} \frac{e^{t}}{t}\mathrm{d}t \]

for x > 0.

For small x, this method uses the power series,

\[ Ei(x) = \gamma + \ln x + \frac{x}{1*1!} + \frac{x^2}{2*2!} + ... \]

where \( \gamma = 0.5772156649... \) is Euler's constant, and for large x, the asymptotic series is used,

\[ Ei(x) \sim \frac{e^x}{x} (1 + \frac{1!}{x} + \frac{2!}{x^2} + ...) \]

See also
mathworld.wolfram.com/ExponentialIntegral.html
Parameters
xValue at which the exponential integral will be computed, x > 0.0
Returns
double The exponential integral for the given x.
Exceptions
Isis::IException::Programmer"Invalid arguments. Definition requires x > 0.0."
Isis::IException::Math"Power series failed to converge"
History:
1999-08-11 K Teal Thompson - Original version named pht_r8ei in Isis2.
History:
2007-02-20 Janet Barrett - Imported to Isis3 in NumericalMethods class named r8ei().
History:
2008-11-05 Jeannie Walldren - Renamed and modified input parameters. Added documentation.

Definition at line 229 of file AtmosModel.cpp.

Referenced by AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ En()

double Isis::AtmosModel::En ( unsigned int  n,
double  x 
)
staticinherited

This routine evaluates the generalized exponential integral, En(x).

This is defined as

\[ E_n(x) = \int_{1}^{\infty} \frac{e^{-xt}}{t^n}\mathrm{d}t \mathrm{ for } x \in \mathbb{R }, n \in \mathbb{Z } \mathrm{such that } x \ge 0.0, n \ge 0 \]

Notice that if x = 0, then the equation is not defined for n = 0 or n = 1, as these will result in \( E_n(x) = \infty \).

This method uses the following for cases:

  • For n > 1 and x = 0.0,

    \[ E_n(0) = \frac{1}{n-1} \]

  • For n = 0 and x > 0.0,

    \[ E_0(x) = \frac{e^{-x}}{x} \]

  • For \( x >\sim 1.0 \), Lentz's continued fraction algorithm is used,

    \[ E_n(x) = e^{-x}(\frac{1}{x + n - \frac{1*n}{x + n + 2 - \frac{2(n+1)}{x + n + 4 - ...}}}) \]

  • For \( 0.0 < x <\sim 1.0 \), series representation is used,

    \[ E_n(x) = \frac{(-x)^{n-1}}{(n-1)!}[- \ln x + \psi (n)] - \sum_{m=0, m \neq n-1}^{\infty}\frac{(-x)^m}{(m-n+1)m!} \]

    where \( \psi (1) = \gamma \) and \( \psi (n) = - \gamma + \sum_{m=1}^{n-1} \frac{1}{m}\) and \( \gamma = 0.5772156649... \) is Euler's constant.

The parameter n is of type unsigned int since n cannot be negative.

The routine allows fast evaluation of En(x) to any accuracy, \(\epsilon\), within the reach of your machine's word length for floating-point numbers. The only modification required for increased accuracy is to supply Euler's constant with enough significant digits.

See also
mathworld.wolfram.com/En-Function.html
Parameters
nInteger value at which the exponential integral will be evaluated (n >= 0)
xThe exponential integral En(x) will be evaluated
Returns
double Value of the exponential integral for the give n and x.
Exceptions
Isis::IException::Programmer"Invalid arguments. Definition requires (x > 0.0 and n >=0 ) or (x >= 0.0 and n > 1)." @throws Isis::IException::Math "Continued fraction failed to converge" @throws Isis::IException::Math "Series representation failed to converge"
History:
1999-08-10 K Teal Thompson - Original version in named pht_r8expint Isis2.
History:
2007-02-20 Janet Barrett - Imported to Isis3 in NumericalMethods class named r8expint().
History:
2008-11-05 Jeannie Walldren - Renamed and modified input parameters. Added documentation.

Definition at line 370 of file AtmosModel.cpp.

Referenced by Isis::Anisotropic1::AtmosModelAlgorithm(), AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ G11Prime()

double Isis::AtmosModel::G11Prime ( double  tau)
staticinherited

Perform Chandra and Van de Hulst's series approximation for the g'11 function needed in second order scattering theory.

Parameters
taunormal optical depth of atmosphere
Returns
double Value of the g'11 function evaluated at the given tau
History:
1998-12-21 Randy Kirk, USGS - Flagstaff - Original code in Isis2 pht_am_functions
History:
1999-03-12 K Teal Thompson - Port to Unix/ISIS; declare vars; cadd implicit none.
History:
2007-02-20 Janet Barrett - Imported from Isis2 to Isis3 in NumericalMethods class.
History:
2008-11-05 Jeannie Walldren - Moved this method from NumericalMethods class.

Definition at line 153 of file AtmosModel.cpp.

References Isis::PI.

Referenced by AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ GenerateAhTable()

void Isis::AtmosModel::GenerateAhTable ( )
inherited

This method computes the values of the atmospheric Ah table and sets the properties of the atmospheric Ah spline.

It obtains the hemispheric albedo by integrating the photometric function times mu over mu = 0 to 1 and then over phi = 0 to 2*pi to calculate the hemispheric reflectance Ah needed for the photometric model with atmosphere. The Trapezoid rule is applied to the table of Ah to obtain bihemispheric albedo Ab. The parameter p_atmosAtmSwitch is set to 0 to integrate Ah.

History:
1998-12-21 Randy Kirk - USGS, Flagstaff - Original specs
History:
1999-01-15 K Teal Thompson - Original code
History:
2000-12-29 Randy Kirk - Modified /hide_inc/ so phi gets passed, etc. moved factors to outside integration
History:
2006-05-30 Randy Kirk - Added code to report the directional hemispheric albedo that relates to thermal balance for simulating Themis images
History:
2007-02-20 Janet Barrett - Imported to Isis3 from Isis2 pht_get_ah_table
History:
2008-11-05 Jeannie Walldren - Modified references to NumericalMethods and replaced r8qromb() with NumericalAtmosApprox::RombergsMethod(). Changed name from PhtGetAhTable().

Definition at line 537 of file AtmosModel.cpp.

References Isis::PI, Isis::NumericalAtmosApprox::RombergsMethod(), and Isis::IString::UpCase().

Referenced by Isis::AlbedoAtm::AlbedoAtm().

◆ GenerateHahgTables()

void Isis::AtmosModel::GenerateHahgTables ( )
inherited

This method computes the values of the atmospheric Hahg and Hahg0 tables and sets the properties of the atmospheric Hahg and Hahg0 splines.

It integrates functions involving the single particle phase function (assumed to be Hapke Henyey-Greenstein) over mu = 0 to 1 and then over phi = 0 to 2*pi to calculate the corrections needed for the anisotropic photometric model with atmosphere. The Trapezoid rule is applied to the table of Ah to obtain bihemispheric albedo Ab. The parameter p_atmosAtmSwitch is set to 1, 2, 3 to evaluate the 3 required integrals.

History:
1998-12-21 Randy Kirk - USGS, Flagstaff - Original specs
History:
1999-01-15 K Teal Thompson - Original code
History:
2006-07-07 Randy Kirk - Modify get_ah_table to get other integrals
History:
2000-12-29 Randy Kirk - Modified /hide_inc/ so phi gets passed, etc. moved factors to outside integration
History:
2007-02-20 Janet Barrett - Imported to Isis3 from Isis2 pht_get_ah_table
History:
2008-11-05 Jeannie Walldren - Modified references to NumericalMethods and replaced r8qromb() with NumericalAtmosApprox::RombergsMethod(). Changed name from GetHahgTables().

Definition at line 637 of file AtmosModel.cpp.

References Isis::PI, Isis::NumericalApproximation::Reset(), and Isis::NumericalAtmosApprox::RombergsMethod().

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ GenerateHahgTablesShadow()

void Isis::AtmosModel::GenerateHahgTablesShadow ( )
inherited

This method is a modified version of the GenerateHahgTables method and is used solely for shadow modeling.

Unlike the GenerateHahgTables method, this method does not tabulate the first or third integrals. It only evaluates the middle integral that corrects the sbar variable (illumination of the ground by the sky).

History:
1998-12-21 Randy Kirk - USGS, Flagstaff - Original specs
History:
1999-01-15 K Teal Thompson - Original code
History:
2006-07-07 Randy Kirk - Modify get_ah_table to get other integrals
History:
2000-09-15 Randy Kirk - Delete first, last integrals and table of second integral
History:
2000-12-29 Randy Kirk - Modified /hide_inc/ so phi gets passed, etc. moved factors to outside integration
History:
2011-12-16 Janet Barrett - Imported to Isis3 from Isis2 get_hahgsb_shad routine in the not_shadow_tau set of routines

Definition at line 726 of file AtmosModel.cpp.

References Isis::PI, Isis::NumericalApproximation::Reset(), and Isis::NumericalAtmosApprox::RombergsMethod().

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ SetAtmosAtmSwitch()

void Isis::AtmosModel::SetAtmosAtmSwitch ( const int  atmswitch)
inherited

Set the switch that controls the function that will be integrated.

This method is only used for testing the methods in this class. This parameter is limited to the values 0, 1, 2, and 3.

Parameters
atmswitchInternal atmospheric function parameter, there is no default
Exceptions
Isis::IException::User"Invalid value of atmospheric atmswitch"

Definition at line 779 of file AtmosModel.cpp.

◆ SetAtmosBha()

void Isis::AtmosModel::SetAtmosBha ( const double  bha)
inherited

Set the Anisotropic Atmospheric function parameter.

This is the coefficient of the single particle Legendre phase function. This parameter is limited to values that are >=-1 and <=1.

Parameters
bhaAnisotropic atmospheric function parameter, default is 0.85
Exceptions
Isis::IException::User"Invalid value of atmospheric bha"

Definition at line 799 of file AtmosModel.cpp.

◆ SetAtmosEstTau()

void Isis::AtmosModel::SetAtmosEstTau ( const string  esttau)
inherited

Estimate the optical depth tau using shadows.

Author
Janet Barrett (12/16/2011)
Parameters
esttautrue/false

Definition at line 1002 of file AtmosModel.cpp.

References Isis::IString::UpCase().

◆ SetAtmosHga()

void Isis::AtmosModel::SetAtmosHga ( const double  hga)
inherited

Set the Hapke atmospheric function parameter.

This is the coefficient of the single particle Henyey-Greenstein phase function. This parameter is limited to values that are >-1 and <1.

Parameters
hgaHapke atmospheric function parameter, default is 0.68
Exceptions
Isis::IException::User"Invalid value of atmospheric hga"

Definition at line 820 of file AtmosModel.cpp.

◆ SetAtmosHnorm()

void Isis::AtmosModel::SetAtmosHnorm ( const double  hnorm)
inherited

Set the Atmospheric function parameter.

This is the atmospheric shell thickness normalized to the planet radius and is used to modify angles to get more accurate path lengths near the terminator (ratio of scale height to the planetary radius). This parameter is limited to values that are >=0.

Parameters
hnormAtmospheric function parameter, default is 0.003

Definition at line 968 of file AtmosModel.cpp.

References Isis::toString().

◆ SetAtmosInc()

void Isis::AtmosModel::SetAtmosInc ( const double  inc)
inherited

Set the incidence angle.

This method is only used for testing the methods in this class. This parameter is limited to values >=0 and <=90.

Parameters
incInternal atmospheric function parameter, there is no default
Exceptions
Isis::IException::User"Invalid value of atmospheric inc"

Definition at line 839 of file AtmosModel.cpp.

References Isis::PI.

◆ SetAtmosIord()

void Isis::AtmosModel::SetAtmosIord ( const string  offset)
inherited

Set additive offset in fit.

Author
Sharmila Prasad (8/18/2011)
Parameters
offsettrue/false

Definition at line 983 of file AtmosModel.cpp.

References Isis::IString::UpCase().

◆ SetAtmosNulneg()

void Isis::AtmosModel::SetAtmosNulneg ( const string  nulneg)
inherited

Set the Atmospheric function parameter.

This determines if negative values after removal of atmospheric effects will be set to NULL. This parameter is limited to values of YES or NO.

Parameters
nulnegAtmospheric function parameter, default is NO
Exceptions
Isis::IException::User"Invalid value of atmospheric nulneg"

Definition at line 861 of file AtmosModel.cpp.

References Isis::IString::UpCase().

◆ SetAtmosPhi()

void Isis::AtmosModel::SetAtmosPhi ( const double  phi)
inherited

Set the azimuth angle.

This method is only used for testing the methods in this class. This parameter is limited to values >=0 and <=360.

Parameters
phiInternal atmospheric function parameter, there is no default
Exceptions
Isis::IException::User"Invalid value of atmospheric phi"

Definition at line 884 of file AtmosModel.cpp.

References Isis::PI.

◆ SetAtmosTau()

void Isis::AtmosModel::SetAtmosTau ( const double  tau)
inherited

Set the Atmospheric function parameter.

This specifies the normal optical depth of the atmosphere. This parameter is limited to values that are >=0.

Parameters
tauAtmospheric function parameter, default is 0.28
Exceptions
Isis::IException::User"Invalid value of atmospheric tau"

Definition at line 903 of file AtmosModel.cpp.

◆ SetAtmosTauref()

void Isis::AtmosModel::SetAtmosTauref ( const double  tauref)
inherited

Set the Atmospheric function parameter.

This specifies the reference optical depth of the atmosphere to which the image will be normalized. This parameter is limited to values that are >=0.

Parameters
taurefAtmospheric function parameter, default is 0.0
Exceptions
Isis::IException::User"Invalid value of atmospheric tauref"

Definition at line 922 of file AtmosModel.cpp.

◆ SetAtmosWha()

void Isis::AtmosModel::SetAtmosWha ( const double  wha)
inherited

Set the Atmospheric function parameter.

This is the single- scattering albedo of atmospheric particles. This parameter is limited to values that are >0 and <=1.

Parameters
whaAtmospheric function parameter, default is 0.95
Exceptions
Isis::IException::User"Invalid value of atmospheric wha"

Definition at line 941 of file AtmosModel.cpp.

◆ SetStandardConditions()

void Isis::AtmosModel::SetStandardConditions ( bool  standard)
virtualinherited

Used to calculate atmosphere at standard conditions.

Definition at line 498 of file AtmosModel.cpp.

Referenced by Isis::AlbedoAtm::AlbedoAtm().

◆ TauOrWhaChanged()

bool Isis::AtmosModel::TauOrWhaChanged ( ) const
protectedinherited

Checks whether tau or wha have changed.

Returns
bool True if either have changed.

Definition at line 954 of file AtmosModel.cpp.

Referenced by Isis::Anisotropic1::AtmosModelAlgorithm(), AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

Member Data Documentation

◆ p_alpha0_0

double Isis::Anisotropic2::p_alpha0_0
private

???

Definition at line 91 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_alpha1_0

double Isis::Anisotropic2::p_alpha1_0
private

???

Definition at line 92 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_atmosAddOffset

bool Isis::AtmosModel::p_atmosAddOffset
protectedinherited

Allow additive offset in fit.

Definition at line 268 of file AtmosModel.h.

◆ p_atmosAhSpline

NumericalApproximation Isis::AtmosModel::p_atmosAhSpline
protectedinherited

Spline object for the atmospheric Ah Table. Properties are set in GenerateAhTable().

Definition at line 283 of file AtmosModel.h.

◆ p_atmosEstTau

bool Isis::AtmosModel::p_atmosEstTau
protectedinherited

Estimate optical depth tau using shadows.

Definition at line 269 of file AtmosModel.h.

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ p_atmosHahgt0Spline

NumericalApproximation Isis::AtmosModel::p_atmosHahgt0Spline
protectedinherited

Spline object for the atmospheric Hahg0 Table. Properties are set in GenerateHahgTables().

Definition at line 287 of file AtmosModel.h.

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ p_atmosHahgtSpline

NumericalApproximation Isis::AtmosModel::p_atmosHahgtSpline
protectedinherited

Spline object for the atmospheric Hahg Table. Properties are set in GenerateHahgTables().

Definition at line 285 of file AtmosModel.h.

Referenced by Isis::HapkeAtm1::AtmosModelAlgorithm(), and Isis::HapkeAtm2::AtmosModelAlgorithm().

◆ p_atmosHnorm

double Isis::AtmosModel::p_atmosHnorm
protectedinherited

◆ p_beta0_0

double Isis::Anisotropic2::p_beta0_0
private

???

Definition at line 93 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_beta1_0

double Isis::Anisotropic2::p_beta1_0
private

???

Definition at line 94 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_delta_0

double Isis::Anisotropic2::p_delta_0
private

???

Definition at line 89 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_delta_1

double Isis::Anisotropic2::p_delta_1
private

???

Definition at line 90 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_den

double Isis::Anisotropic2::p_den
private

???

Definition at line 96 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e

double Isis::Anisotropic2::p_e
private

???

Definition at line 63 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e1

double Isis::Anisotropic2::p_e1
private

???

Definition at line 56 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e1_2

double Isis::Anisotropic2::p_e1_2
private

???

Definition at line 57 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e2

double Isis::Anisotropic2::p_e2
private

???

Definition at line 58 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e3

double Isis::Anisotropic2::p_e3
private

???

Definition at line 59 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e4

double Isis::Anisotropic2::p_e4
private

???

Definition at line 60 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_e5

double Isis::Anisotropic2::p_e5
private

???

Definition at line 61 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_em

double Isis::Anisotropic2::p_em
private

???

Definition at line 62 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f1

double Isis::Anisotropic2::p_f1
private

???

Definition at line 74 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f1m

double Isis::Anisotropic2::p_f1m
private

???

Definition at line 64 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f2

double Isis::Anisotropic2::p_f2
private

???

Definition at line 75 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f2m

double Isis::Anisotropic2::p_f2m
private

???

Definition at line 65 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f3

double Isis::Anisotropic2::p_f3
private

???

Definition at line 76 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f3m

double Isis::Anisotropic2::p_f3m
private

???

Definition at line 66 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f4

double Isis::Anisotropic2::p_f4
private

???

Definition at line 77 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_f4m

double Isis::Anisotropic2::p_f4m
private

???

Definition at line 67 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_fac

double Isis::Anisotropic2::p_fac
private

???

Definition at line 95 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g11p

double Isis::Anisotropic2::p_g11p
private

???

Definition at line 78 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g12

double Isis::Anisotropic2::p_g12
private

???

Definition at line 68 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g12p

double Isis::Anisotropic2::p_g12p
private

???

Definition at line 79 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g13

double Isis::Anisotropic2::p_g13
private

???

Definition at line 69 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g13p

double Isis::Anisotropic2::p_g13p
private

???

Definition at line 80 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g14

double Isis::Anisotropic2::p_g14
private

???

Definition at line 70 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g14p

double Isis::Anisotropic2::p_g14p
private

???

Definition at line 81 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g32

double Isis::Anisotropic2::p_g32
private

???

Definition at line 71 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g32p

double Isis::Anisotropic2::p_g32p
private

???

Definition at line 82 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g33

double Isis::Anisotropic2::p_g33
private

???

Definition at line 72 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g33p

double Isis::Anisotropic2::p_g33p
private

???

Definition at line 83 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g34

double Isis::Anisotropic2::p_g34
private

???

Definition at line 73 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_g34p

double Isis::Anisotropic2::p_g34p
private

???

Definition at line 84 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_p0

double Isis::Anisotropic2::p_p0
private

???

Definition at line 97 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_p1

double Isis::Anisotropic2::p_p1
private

???

Definition at line 99 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_pstd

double Isis::AtmosModel::p_pstd
protectedinherited

◆ p_q0

double Isis::Anisotropic2::p_q0
private

???

Definition at line 98 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_q02p02

double Isis::Anisotropic2::p_q02p02
private

???

Definition at line 101 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_q1

double Isis::Anisotropic2::p_q1
private

???

Definition at line 100 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_q12p12

double Isis::Anisotropic2::p_q12p12
private

???

Definition at line 102 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_sbar

double Isis::AtmosModel::p_sbar
protectedinherited

◆ p_trans

double Isis::AtmosModel::p_trans
protectedinherited

Transmission of surface reflected light through the atmosphere overall.

Definition at line 259 of file AtmosModel.h.

Referenced by Isis::Anisotropic1::AtmosModelAlgorithm(), AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ p_trans0

double Isis::AtmosModel::p_trans0
protectedinherited

Transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere.

Definition at line 260 of file AtmosModel.h.

Referenced by Isis::Anisotropic1::AtmosModelAlgorithm(), AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ p_transs

double Isis::AtmosModel::p_transs
protectedinherited

Transmission of light that must be subtracted from the flat surface model to get the shadow model.

Definition at line 261 of file AtmosModel.h.

Referenced by Isis::Anisotropic1::AtmosModelAlgorithm(), AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::HapkeAtm2::AtmosModelAlgorithm(), and Isis::Isotropic2::AtmosModelAlgorithm().

◆ p_wha2

double Isis::Anisotropic2::p_wha2
private

???

Definition at line 54 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_wham

double Isis::Anisotropic2::p_wham
private

???

Definition at line 55 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_x0_0

double Isis::Anisotropic2::p_x0_0
private

???

Definition at line 85 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_x0_1

double Isis::Anisotropic2::p_x0_1
private

???

Definition at line 87 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_y0_0

double Isis::Anisotropic2::p_y0_0
private

???

Definition at line 86 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().

◆ p_y0_1

double Isis::Anisotropic2::p_y0_1
private

???

Definition at line 88 of file Anisotropic2.h.

Referenced by AtmosModelAlgorithm().


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