12#include "PhotoModel.h"
13#include "NumericalApproximation.h"
14#include "NumericalAtmosApprox.h"
68 static double Ei(
double x);
69 static double En(
unsigned int n,
double x);
71 void CalcAtmEffect(
double pha,
double inc,
double ema,
double *pstd,
72 double *trans,
double *trans0,
double *sbar,
double *transs);
101 return p_atmosAlgorithmName;
132 return p_atmosTauref;
136 return p_atmosNulneg;
144 return p_atmosHahgsb;
157 return p_atmosIncTable;
161 return p_atmosAhTable;
165 return p_atmosHahgtTable;
169 return p_atmosHahgt0Table;
216 virtual void AtmosModelAlgorithm(
double phase,
double incidence,
double emission) = 0;
218 void SetAlgorithmName(
string name) {
219 p_atmosAlgorithmName = name;
222 p_atmosNulneg = nulneg;
230 void SetOldTau(
double tau) {
233 void SetOldWha(
double wha) {
237 PhotoModel *GetPhotoModel()
const {
240 bool StandardConditions()
const {
241 return p_standardConditions;
244 double Eulgam()
const {
245 return p_atmosEulgam;
248 int p_atmosAtmSwitch;
252 double p_atmosBhasave;
253 double p_atmosHgasave;
254 double p_atmosTauref;
255 double p_atmosTausave;
256 double p_atmosWhasave;
270 vector <double> p_atmosIncTable;
271 vector <double> p_atmosAhTable;
272 double p_atmosHahgsb;
273 vector <double> p_atmosHahgtTable;
274 vector <double> p_atmosHahgt0Table;
279 double p_atmosCosphi;
280 double p_atmosEulgam;
290 bool p_standardConditions;
292 string p_atmosAlgorithmName;
298 double p_atmosTauold;
299 double p_atmosWhaold;
Isotropic atmos scattering model.
double p_trans
Transmission of surface reflected light through the atmosphere overall.
static double En(unsigned int n, double x)
This routine evaluates the generalized exponential integral, En(x).
void SetAtmosHga(const double hga)
Set the Hapke atmospheric function parameter.
double p_atmosHnorm
Atmospheric shell thickness normalized to planet radius.
NumericalApproximation AtmosHahgtSpline()
If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosI...
double AtmosHahgsb() const
Return atmospheric Hahgsb value.
double p_sbar
Illumination of the ground by the sky.
NumericalApproximation AtmosHahgt0Spline()
If GenerateHahgTables() has been called this returns a clamped cubic spline of the data set (p_atmosI...
bool p_atmosEstTau
Estimate optical depth tau using shadows.
vector< double > AtmosHahgt0Table()
Return atmospheric Hahgt0Table value.
void SetAtmosInc(const double inc)
Set the incidence angle.
double AtmosHnorm() const
Return atmospheric Hnorm value.
void SetAtmosEstTau(const string esttau)
Estimate the optical depth tau using shadows.
NumericalApproximation p_atmosAhSpline
Spline object for the atmospheric Ah Table. Properties are set in GenerateAhTable().
double AtmosBha() const
Return atmospheric Bha value.
double AtmosTau() const
Return atmospheric Tau value.
static double G11Prime(double tau)
Perform Chandra and Van de Hulst's series approximation for the g'11 function needed in second order ...
vector< double > AtmosIncTable()
Return atmospheric IncTable value.
double AtmosMunot() const
Return atmospheric Munot value.
void SetAtmosWha(const double wha)
Set the Atmospheric function parameter.
bool p_atmosAddOffset
Allow additive offset in fit.
void SetAtmosTau(const double tau)
Set the Atmospheric function parameter.
void SetAtmosBha(const double bha)
Set the Anisotropic Atmospheric function parameter.
double p_transs
Transmission of light that must be subtracted from the flat surface model to get the shadow model.
NumericalApproximation AtmosAhSpline()
If GenerateAhTable() has been called this returns a clamped cubic spline of the data set (p_atmosIncT...
NumericalApproximation p_atmosHahgt0Spline
Spline object for the atmospheric Hahg0 Table. Properties are set in GenerateHahgTables().
static double Ei(double x)
This routine computes the exponential integral, Ei(x).
void SetAtmosIord(const string offset)
Set additive offset in fit.
double AtmosTauref() const
Return atmospheric Tauref value.
double AtmosAb() const
Return atmospheric Ab value.
void GenerateAhTable()
This method computes the values of the atmospheric Ah table and sets the properties of the atmospheri...
void SetAtmosHnorm(const double hnorm)
Set the Atmospheric function parameter.
void SetAtmosAtmSwitch(const int atmswitch)
Set the switch that controls the function that will be integrated.
vector< double > AtmosAhTable()
Return atmospheric AhTable value.
virtual void SetStandardConditions(bool standard)
Used to calculate atmosphere at standard conditions.
void GenerateHahgTablesShadow()
This method is a modified version of the GenerateHahgTables method and is used solely for shadow mode...
AtmosModel(Pvl &pvl, PhotoModel &pmodel)
Create an AtmosModel object.
double p_pstd
Pure atmospheric-scattering term.
void SetAtmosPhi(const double phi)
Set the azimuth angle.
vector< double > AtmosHahgtTable()
Return atmospheric HahgtTable value.
void SetAtmosNulneg(const string nulneg)
Set the Atmospheric function parameter.
double p_trans0
Transmission of surface reflected light through the atmosphere with no scatterings in the atmosphere.
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.
bool AtmosAdditiveOffset() const
Allow additive offset in fit?
NumericalApproximation p_atmosHahgtSpline
Spline object for the atmospheric Hahg Table. Properties are set in GenerateHahgTables().
int AtmosNinc() const
Return atmospheric Ninc value.
double AtmosWha() const
Return atmospheric Wha value.
bool AtmosNulneg() const
Return atmospheric Nulneg value.
void GenerateHahgTables()
This method computes the values of the atmospheric Hahg and Hahg0 tables and sets the properties of t...
virtual ~AtmosModel()
Empty destructor.
string AlgorithmName() const
Return atmospheric algorithm name.
double AtmosHga() const
Return atmospheric Hga value.
void SetAtmosTauref(const double tauref)
Set the Atmospheric function parameter.
bool TauOrWhaChanged() const
Checks whether tau or wha have changed.
NumericalApproximation provides various numerical analysis methods of interpolation,...
This class extends Isis::NumericalApproximation.
Container for cube-like labels.
This is free and unencumbered software released into the public domain.
Namespace for the standard library.