4 #include <blitz/array.h> 9 AutoDerivative<double>
refr_index_rs(
double bwpar,
const AutoDerivative<double>& press,
const AutoDerivative<double>& temp);
10 AutoDerivative<double>
refr_index_vn(
double wl,
const AutoDerivative<double>&
p,
const AutoDerivative<double>& T,
const AutoDerivative<double>& xc,
const AutoDerivative<double>& xw);
12 AutoDerivative<double>
calc_Dair(
const AutoDerivative<double>&
p,
const AutoDerivative<double>& tc);
14 AutoDerivative<double>
calc_Z(
const AutoDerivative<double>&
p,
const AutoDerivative<double>& T,
const AutoDerivative<double>& tc,
const AutoDerivative<double>& xw);
15 AutoDerivative<double>
calc_rho(
const AutoDerivative<double>&
p,
const AutoDerivative<double>& x,
const AutoDerivative<double>& M,
const AutoDerivative<double>& Z,
const AutoDerivative<double>& T);
45 virtual blitz::Array<AutoDerivative<double>, 1>
level_values()
const {
46 blitz::Array<AutoDerivative<double>, 1> res(
number_level());
64 blitz::Array<AutoDerivative<double>, 1> res(
number_layer());
66 res(li) =
at_layer(li, interp_vals(li));
82 blitz::Array<AutoDerivative<double>, 1> interp_vals(
number_layer());
108 blitz::Array<AutoDerivative<double>, 1> press_;
109 blitz::Array<AutoDerivative<double>, 1> temp_;
143 static bool wavelength_in_bounds(
double wavelength);
147 blitz::Array<AutoDerivative<double>, 1> press_;
148 blitz::Array<AutoDerivative<double>, 1> temp_;
149 blitz::Array<AutoDerivative<double>, 1> co2_vmr_;
150 blitz::Array<AutoDerivative<double>, 1> h2o_vmr_;
AutoDerivative< double > calc_Z(const AutoDerivative< double > &p, const AutoDerivative< double > &T, const AutoDerivative< double > &tc, const AutoDerivative< double > &xw)
#define range_max_check(V, Max)
Range check.
virtual ~OcoRefractiveIndex()
virtual blitz::Array< AutoDerivative< double >, 1 > level_values() const
Returns refractive index at all levels.
virtual AutoDerivative< double > at_layer_midpoint(int layer_index) const
Convenience routine to returns refractive index ay layer index where layer data is taken as mean of b...
virtual ~AtmRefractiveIndex()
Computes refractive index per level/layer using a simple approximation using pressure and temperature...
virtual blitz::Array< AutoDerivative< double >, 1 > layer_values(const blitz::Array< AutoDerivative< double >, 1 > &interp_vals) const
Returns refractive index at all layers according to a mapping of where each layer value should be cal...
virtual AutoDerivative< double > at_layer(int layer_index, const AutoDerivative< double > &interp_val) const =0
Returns refractive index at a layer index interpolated between bounding levels using a linear interpo...
AutoDerivative< double > refr_index_vn(double wl, const AutoDerivative< double > &p, const AutoDerivative< double > &T, const AutoDerivative< double > &xc, const AutoDerivative< double > &xw)
AutoDerivative< double > calc_rho(const AutoDerivative< double > &p, const AutoDerivative< double > &x, const AutoDerivative< double > &M, const AutoDerivative< double > &Z, const AutoDerivative< double > &T)
virtual int number_level() const
Number of levels of atmospheric data represented.
AutoDerivative< double > calc_Dair(const AutoDerivative< double > &p, const AutoDerivative< double > &tc)
AutoDerivative< double > refr_index_rs(double bwpar, const AutoDerivative< double > &press, const AutoDerivative< double > &temp)
virtual int number_level() const
Number of levels of atmospheric data represented.
virtual int number_level() const =0
Number of levels of atmospheric data represented.
virtual blitz::Array< AutoDerivative< double >, 1 > layer_midpoint_values() const
Returns refractive index at the middle of each layer.
This class provides an interface for classes that compute a refractive index for an atmosphere at a g...
virtual int number_layer() const
Number of layers of atmospheric data represented.
Computes refractive index per level/layer using a method that takes into account knowledge of OCO spe...
virtual AutoDerivative< double > at_level(int level_index) const =0
Returns refractive index at a level index.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
virtual ~SimpleRefractiveIndex()
double calc_nw(double wlm2)