USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::Anisotropic2 Class Reference
[Radiometric And Photometric Correction]

#include <Anisotropic2.h>

Inheritance diagram for Isis::Anisotropic2:

Inheritance graph
[legend]
Collaboration diagram for Isis::Anisotropic2:

Collaboration graph
[legend]
List of all members.

Detailed Description

Author:
1998-12-21 Randy Kirk

For internal use only.

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.

Definition at line 53 of file Anisotropic2.h.

Public Member Functions

 Anisotropic2 (Pvl &pvl, PhotoModel &pmodel)
virtual ~Anisotropic2 ()
void CalcAtmEffect (double pha, double inc, double ema, double *pstd, double *trans, double *trans0, double *sbar)
 Calculate the atmospheric scattering effect using photometric angle information.
virtual void SetStandardConditions (bool standard)
 Used to calculate atmosphere at standard conditions.
void GenerateAhTable ()
 This method computes the values of the atmospheric Ah table and sets the properties of the atmospheric Ah spline.
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.
void SetAtmosAtmSwitch (const int atmswitch)
 Set the switch that controls the function that will be integrated.
void SetAtmosBha (const double bha)
 Set the Anisotropic Atmospheric function parameter.
void SetAtmosBharef (const double bharef)
 Set the Atmospheric function parameter.
void SetAtmosHga (const double hga)
 Set the Hapke atmospheric function parameter.
void SetAtmosHgaref (const double hgaref)
 Set the Atmospheric function parameter.
void SetAtmosInc (const double inc)
 Set the incidence angle.
void SetAtmosNulneg (const string nulneg)
 Set the Atmospheric function parameter.
void SetAtmosPhi (const double phi)
 Set the azimuth angle.
void SetAtmosTau (const double tau)
 Set the Atmospheric function parameter.
void SetAtmosTauref (const double tauref)
 Set the Atmospheric function parameter.
void SetAtmosWha (const double wha)
 Set the Atmospheric function parameter.
void SetAtmosWharef (const double wharef)
 Set the Atmospheric function parameter.
string AlgorithmName () const
 Return atmospheric algorithm name.
double AtmosBha () const
 Return atmospheric Bha value.
double AtmosTau () const
 Return atmospheric Tau value.
double AtmosWha () const
 Return atmospheric Wha value.
double AtmosHga () const
 Return atmospheric Hga value.
double AtmosBharef () const
 Return atmospheric Bharef value.
double AtmosHgaref () const
 Return atmospheric Hgaref value.
double AtmosTauref () const
 Return atmospheric Tauref value.
double AtmosWharef () const
 Return atmospheric Wharef value.
bool AtmosNulneg () const
 Return atmospheric Nulneg value.
double AtmosAb () const
 Return atmospheric Ab value.
double AtmosHahgsb () const
 Return atmospheric Hahgsb value.
int AtmosNinc () const
 Return atmospheric Ninc value.
vector< double > AtmosIncTable ()
 Return atmospheric IncTable value.
vector< double > AtmosAhTable ()
 Return atmospheric AhTable value.
vector< double > AtmosHahgtTable ()
 Return atmospheric HahgtTable value.
vector< double > AtmosHahgt0Table ()
 Return atmospheric Hahgt0Table value.
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.
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.
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.

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.
static double Ei (double x) throw (iException &)
 This routine computes the exponential integral, Ei(x).
static double En (unsigned int n, double x) throw (iException &)
 This routine evaluates the generalized exponential integral, En(x).

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.
void SetAtmosNulneg (bool nulneg)
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.
double Eulgam () const

Protected Attributes

int p_atmosAtmSwitch
int p_atmosNinc
double p_atmosBha
double p_atmosBharef
double p_atmosBhasave
double p_atmosHgaref
double p_atmosHgasave
double p_atmosTauref
double p_atmosTausave
double p_atmosWharef
double p_atmosWhasave
double p_pstd
double p_trans
 Pure atmospheric-scattering term.
double p_trans0
 Transmission of surface reflected light through the atmosphere overall.
double p_sbar
 Transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere.
double p_atmosHga
 Illumination of the ground by the sky.
double p_atmosTau
double p_atmosWha
double p_atmosAb
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().
NumericalApproximation p_atmosHahgtSpline
 Spline object for the atmospheric Hahg Table. Properties are set in GenerateHahgTables().
NumericalApproximation p_atmosHahgt0Spline
 Spline object for the atmospheric Hahg0 Table. Properties are set in GenerateHahgTables().

Private Member Functions

void SetAtmosHnorm (const double hnorm)
 Set the Atmospheric function parameter.

Private Attributes

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


Member Function Documentation

string Isis::AtmosModel::AlgorithmName (  )  const [inline, inherited]

Return atmospheric algorithm name.

Definition at line 99 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosAlgorithmName.

double Isis::AtmosModel::AtmosAb (  )  const [inline, inherited]

Return atmospheric Ab value.

Definition at line 120 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosAb.

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

NumericalApproximation Isis::AtmosModel::AtmosAhSpline (  )  [inline, inherited]

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

For internal use only.

History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 146 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosAhSpline.

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

vector<double> Isis::AtmosModel::AtmosAhTable (  )  [inline, inherited]

Return atmospheric AhTable value.

Definition at line 129 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosAhTable.

double Isis::AtmosModel::AtmosBha (  )  const [inline, inherited]

Return atmospheric Bha value.

Definition at line 102 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosBha.

double Isis::AtmosModel::AtmosBharef (  )  const [inline, inherited]

Return atmospheric Bharef value.

Definition at line 110 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosBharef.

double Isis::AtmosModel::AtmosHahgsb (  )  const [inline, inherited]

Return atmospheric Hahgsb value.

Definition at line 122 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHahgsb.

NumericalApproximation Isis::AtmosModel::AtmosHahgt0Spline (  )  [inline, inherited]

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

For internal use only.

History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 170 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHahgt0Spline.

vector<double> Isis::AtmosModel::AtmosHahgt0Table (  )  [inline, inherited]

Return atmospheric Hahgt0Table value.

Definition at line 133 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHahgt0Table.

NumericalApproximation Isis::AtmosModel::AtmosHahgtSpline (  )  [inline, inherited]

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

For internal use only.

History:
2008-11-05 Jeannie Walldren - Original version

Definition at line 158 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHahgtSpline.

vector<double> Isis::AtmosModel::AtmosHahgtTable (  )  [inline, inherited]

Return atmospheric HahgtTable value.

Definition at line 131 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHahgtTable.

double Isis::AtmosModel::AtmosHga (  )  const [inline, inherited]

Return atmospheric Hga value.

Definition at line 108 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHga.

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

double Isis::AtmosModel::AtmosHgaref (  )  const [inline, inherited]

Return atmospheric Hgaref value.

Definition at line 112 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosHgaref.

vector<double> Isis::AtmosModel::AtmosIncTable (  )  [inline, inherited]

Return atmospheric IncTable value.

Definition at line 127 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosIncTable.

void Isis::Anisotropic2::AtmosModelAlgorithm ( double  phase,
double  incidence,
double  emission 
) [protected, virtual]

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:
phase Value of the phase angle.
incidence Value of the incidence angle.
emission Value 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.

Implements Isis::AtmosModel.

Definition at line 68 of file Anisotropic2.cpp.

References _FILEINFO_, e, Isis::AtmosModel::Ei(), Isis::AtmosModel::En(), Isis::AtmosModel::Eulgam(), Isis::AtmosModel::G11Prime(), Isis::iException::Message(), p_alpha0_0, p_alpha1_0, Isis::AtmosModel::p_atmosBha, p_atmosHnorm, Isis::AtmosModel::p_atmosTau, Isis::AtmosModel::p_atmosWha, 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, p_wha2, p_wham, p_x0_0, p_x0_1, p_y0_0, p_y0_1, Isis::PI(), Isis::AtmosModel::SetOldTau(), Isis::AtmosModel::SetOldWha(), sum, and Isis::AtmosModel::TauOrWhaChanged().

int Isis::AtmosModel::AtmosNinc (  )  const [inline, inherited]

Return atmospheric Ninc value.

Definition at line 124 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosNinc.

bool Isis::AtmosModel::AtmosNulneg (  )  const [inline, inherited]

Return atmospheric Nulneg value.

Definition at line 118 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosNulneg.

double Isis::AtmosModel::AtmosTau (  )  const [inline, inherited]

Return atmospheric Tau value.

Definition at line 104 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosTau.

Referenced by Isis::NumericalAtmosApprox::InrFunc2Bint(), and Isis::AtmosModel::TauOrWhaChanged().

double Isis::AtmosModel::AtmosTauref (  )  const [inline, inherited]

Return atmospheric Tauref value.

Definition at line 114 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosTauref.

double Isis::AtmosModel::AtmosWha (  )  const [inline, inherited]

Return atmospheric Wha value.

Definition at line 106 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosWha.

Referenced by Isis::AtmosModel::GenerateHahgTables(), and Isis::AtmosModel::TauOrWhaChanged().

double Isis::AtmosModel::AtmosWharef (  )  const [inline, inherited]

Return atmospheric Wharef value.

Definition at line 116 of file AtmosModel.h.

References Isis::AtmosModel::p_atmosWharef.

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

Calculate the atmospheric scattering effect using photometric angle information.

Parameters:
pha phase angle
inc incidence angle
ema emission angle
pstd pure atmospheric-scattering term
trans transmission of surface reflected light through the atmosphere overall
trans0 transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere
sbar illumination of the ground by the sky
Exceptions:
Isis::iException::User "Invalid photometric angles"

Definition at line 469 of file AtmosModel.cpp.

References Isis::AtmosModel::p_pstd, Isis::AtmosModel::p_sbar, Isis::AtmosModel::p_trans, and Isis::AtmosModel::p_trans0.

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

double Isis::AtmosModel::Ei ( double  x  )  throw (iException &) [static, inherited]

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:
x Value 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"

For internal use only.

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 222 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), sum, and x.

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

double Isis::AtmosModel::En ( unsigned int  n,
double  x 
) throw (iException &) [static, inherited]

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:

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:
n Integer value at which the exponential integral will be evaluated (n >= 0)
x The 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)."
Isis::iException::Math "Continued fraction failed to converge"
Isis::iException::Math "Series representation failed to converge"

For internal use only.

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 363 of file AtmosModel.cpp.

References _FILEINFO_, a, b, c, d, delta, Isis::iException::Message(), and x.

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

double Isis::AtmosModel::G11Prime ( double  tau  )  [static, inherited]

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

Parameters:
tau normal optical depth of atmosphere
Returns:
double Value of the g'11 function evaluated at the given tau

For internal use only.

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; c add 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 146 of file AtmosModel.cpp.

References e, Isis::AtmosModel::En(), MAX(), Isis::PI(), and sum.

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

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.

For internal use only.

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::NumericalApproximation::AddData(), Isis::PhotoModel::AlgorithmName(), Isis::NumericalApproximation::CubicClamped, Isis::NumericalAtmosApprox::OuterFunction, Isis::AtmosModel::p_atmosAb, Isis::AtmosModel::p_atmosAhSpline, Isis::AtmosModel::p_atmosAhTable, Isis::AtmosModel::p_atmosAtmSwitch, Isis::AtmosModel::p_atmosInc, Isis::AtmosModel::p_atmosIncTable, Isis::AtmosModel::p_atmosMunot, Isis::AtmosModel::p_atmosNinc, Isis::AtmosModel::p_atmosPM, Isis::AtmosModel::p_atmosSini, Isis::PI(), Isis::NumericalApproximation::Reset(), Isis::NumericalAtmosApprox::RombergsMethod(), Isis::NumericalApproximation::SetCubicClampedEndptDeriv(), Isis::NumericalApproximation::SetInterpType(), sub(), and Isis::iString::UpCase().

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

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.

For internal use only.

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::NumericalApproximation::AddData(), Isis::AtmosModel::AtmosWha(), Isis::NumericalApproximation::CubicClamped, Isis::NumericalAtmosApprox::OuterFunction, Isis::AtmosModel::p_atmosAtmSwitch, Isis::AtmosModel::p_atmosHahgsb, Isis::AtmosModel::p_atmosHahgt0Spline, Isis::AtmosModel::p_atmosHahgt0Table, Isis::AtmosModel::p_atmosHahgtSpline, Isis::AtmosModel::p_atmosHahgtTable, Isis::AtmosModel::p_atmosInc, Isis::AtmosModel::p_atmosIncTable, Isis::AtmosModel::p_atmosMunot, Isis::AtmosModel::p_atmosNinc, Isis::AtmosModel::p_atmosSini, Isis::PI(), Isis::NumericalApproximation::Reset(), Isis::NumericalAtmosApprox::RombergsMethod(), Isis::NumericalApproximation::SetCubicClampedEndptDeriv(), Isis::NumericalApproximation::SetInterpType(), and sub().

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

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:
atmswitch Internal atmospheric function parameter, there is no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric atmswitch"

Definition at line 714 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosAtmSwitch.

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:
bha Anisotropic atmospheric function parameter, default is 0.85
Exceptions:
Isis::iException::User "Invalid value of atmospheric bha"

Definition at line 734 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosBha.

Referenced by Isis::AtmosModel::AtmosModel().

void Isis::AtmosModel::SetAtmosBharef ( const double  bharef  )  [inherited]

Set the Atmospheric function parameter.

This specifies the reference value of Bha to which the image will be normalized. If no value is given, then this parameter defaults to the value provided for Bha. This parameter is limited to values that are >=-1 and <=1.

Parameters:
bharef Atmospheric function parameter, no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric bharef"

Definition at line 755 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosBharef.

Referenced by Isis::AtmosModel::AtmosModel().

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:
hga Hapke atmospheric function parameter, default is 0.68
Exceptions:
Isis::iException::User "Invalid value of atmospheric hga"

Definition at line 775 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosHga.

Referenced by Isis::AtmosModel::AtmosModel().

void Isis::AtmosModel::SetAtmosHgaref ( const double  hgaref  )  [inherited]

Set the Atmospheric function parameter.

This specifies the reference value of Hga to which the image will be normalized. If no value is given, then this parameter defaults to the value provided for Hga. This parameter is limited to values that are >-1 and <1.

Parameters:
hgaref Hapke atmospheric function parameter, no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric hgaref"

Definition at line 795 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosHgaref.

Referenced by Isis::AtmosModel::AtmosModel().

void Isis::Anisotropic2::SetAtmosHnorm ( const double  hnorm  )  [private]

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:
hnorm Atmospheric function parameter, default is 0.003

Definition at line 36 of file Anisotropic2.cpp.

References _FILEINFO_, Isis::iException::Message(), and p_atmosHnorm.

Referenced by Anisotropic2().

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:
inc Internal atmospheric function parameter, there is no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric inc"

Definition at line 814 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), Isis::AtmosModel::p_atmosInc, Isis::AtmosModel::p_atmosMunot, Isis::AtmosModel::p_atmosSini, and Isis::PI().

Referenced by Isis::AtmosModel::AtmosModel().

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:
nulneg Atmospheric function parameter, default is NO
Exceptions:
Isis::iException::User "Invalid value of atmospheric nulneg"

Definition at line 836 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::iString::UpCase().

Referenced by Isis::AtmosModel::AtmosModel().

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:
phi Internal atmospheric function parameter, there is no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric phi"

Definition at line 859 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), Isis::AtmosModel::p_atmosCosphi, Isis::AtmosModel::p_atmosPhi, and Isis::PI().

Referenced by Isis::AtmosModel::AtmosModel().

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:
tau Atmospheric function parameter, default is 0.28
Exceptions:
Isis::iException::User "Invalid value of atmospheric tau"

Definition at line 878 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosTau.

Referenced by Isis::AtmosModel::AtmosModel().

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:
tauref Atmospheric function parameter, default is 0.0
Exceptions:
Isis::iException::User "Invalid value of atmospheric tauref"

Definition at line 897 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosTauref.

Referenced by Isis::AtmosModel::AtmosModel().

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:
wha Atmospheric function parameter, default is 0.95
Exceptions:
Isis::iException::User "Invalid value of atmospheric wha"

Definition at line 916 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosWha.

Referenced by Isis::AtmosModel::AtmosModel().

void Isis::AtmosModel::SetAtmosWharef ( const double  wharef  )  [inherited]

Set the Atmospheric function parameter.

This is the reference single-scattering albedo of atmospheric particles to which the image will be normalized. This parameter is limited to values that are >0 and <=1.

Parameters:
wharef Atmospheric function parameter, no default
Exceptions:
Isis::iException::User "Invalid value of atmospheric wharef"

Definition at line 935 of file AtmosModel.cpp.

References _FILEINFO_, Isis::iException::Message(), and Isis::AtmosModel::p_atmosWharef.

Referenced by Isis::AtmosModel::AtmosModel().

void Isis::AtmosModel::SetStandardConditions ( bool  standard  )  [virtual, inherited]

Used to calculate atmosphere at standard conditions.

Definition at line 490 of file AtmosModel.cpp.

References Isis::AtmosModel::p_atmosBha, Isis::AtmosModel::p_atmosBharef, Isis::AtmosModel::p_atmosBhasave, Isis::AtmosModel::p_atmosHga, Isis::AtmosModel::p_atmosHgaref, Isis::AtmosModel::p_atmosHgasave, Isis::AtmosModel::p_atmosTau, Isis::AtmosModel::p_atmosTauref, Isis::AtmosModel::p_atmosTausave, Isis::AtmosModel::p_atmosWha, Isis::AtmosModel::p_atmosWharef, Isis::AtmosModel::p_atmosWhasave, and Isis::AtmosModel::p_standardConditions.

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

bool Isis::AtmosModel::TauOrWhaChanged (  )  const [protected, inherited]

Checks whether tau or wha have changed.

Returns:
bool True if either have changed.

Definition at line 948 of file AtmosModel.cpp.

References Isis::AtmosModel::AtmosTau(), Isis::AtmosModel::AtmosWha(), Isis::AtmosModel::p_atmosTauold, and Isis::AtmosModel::p_atmosWhaold.

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


Member Data Documentation

NumericalApproximation Isis::AtmosModel::p_atmosAhSpline [protected, inherited]

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

Definition at line 219 of file AtmosModel.h.

Referenced by Isis::AtmosModel::AtmosAhSpline(), and Isis::AtmosModel::GenerateAhTable().

NumericalApproximation Isis::AtmosModel::p_atmosHahgt0Spline [protected, inherited]

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

Definition at line 223 of file AtmosModel.h.

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

NumericalApproximation Isis::AtmosModel::p_atmosHahgtSpline [protected, inherited]

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

Definition at line 221 of file AtmosModel.h.

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

double Isis::AtmosModel::p_atmosHga [protected, inherited]

Illumination of the ground by the sky.

Definition at line 202 of file AtmosModel.h.

Referenced by Isis::AtmosModel::AtmosHga(), Isis::AtmosModel::AtmosModel(), Isis::HapkeAtm2::AtmosModelAlgorithm(), Isis::HapkeAtm1::AtmosModelAlgorithm(), Isis::AtmosModel::SetAtmosHga(), and Isis::AtmosModel::SetStandardConditions().

double Isis::AtmosModel::p_sbar [protected, inherited]

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

Definition at line 201 of file AtmosModel.h.

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

double Isis::AtmosModel::p_trans [protected, inherited]

Pure atmospheric-scattering term.

Definition at line 199 of file AtmosModel.h.

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

double Isis::AtmosModel::p_trans0 [protected, inherited]

Transmission of surface reflected light through the atmosphere overall.

Definition at line 200 of file AtmosModel.h.

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


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