24 const std::string& Lsi_fname,
25 double Water_vapor_fraction_threshold = 0.8);
29 const std::string& Lsi_group =
"LSI",
30 double Water_vapor_fraction_threshold = 0.8);
33 {
return high_stream_rt->number_stokes(); }
35 int Spec_index)
const;
40 virtual void print(std::ostream& Os,
bool Short_form =
false)
const;
47 int Spec_index,
bool Calc_jacobian,
48 bool Skip_stokes_calc)
const;
50 std::vector<std::vector<double> > optical_depth_boundary;
51 std::vector<std::string> main_gas;
53 mutable blitz::Array<double, 2> stokes_only;
56 mutable blitz::Array<int, 1> wv_index;
61 mutable std::vector<linear_interp_type> linear_interp;
62 mutable std::vector<log_linear_interp_type> log_linear_interp;
virtual void print(std::ostream &Os, bool Short_form=false) const
Print to stream.
virtual blitz::Array< double, 2 > stokes(const SpectralDomain &Spec_domain, int Spec_index) const
Calculate stokes vector for the given set of wavenumbers/wavelengths.
virtual int number_stokes() const
Number of stokes parameters we will return in stokes and stokes_and_jacobian.
LsiRt(const boost::shared_ptr< RadiativeTransferSingleWn > &Low_stream_rt, const boost::shared_ptr< RadiativeTransferSingleWn > &High_stream_rt, const std::string &Lsi_fname, double Water_vapor_fraction_threshold=0.8)
Create a object that uses the low stream RT + LSI corrections based on the low and high stream RT...
This does a Low Stream Interpolator correction to another RadiativeTransfer object.
virtual ArrayAd< double, 2 > correction_only(const SpectralDomain &Spec_domain, int Spec_index) const
Normally we calculate both the low streams stokes parameters, the LSI correction, and we apply them...
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
This class takes a set of points and values, and linearly interpolates between those values...
Wrapper around LinearInterpolate that uses log(x) rather than x in interpolating. ...
This class reads and writes a HDF5 file.
boost::shared_ptr< RadiativeTransfer > high_stream_radiative_transfer() const
Contains classes to abstract away details in various Spurr Radiative Transfer software.
boost::shared_ptr< RadiativeTransfer > low_stream_radiative_transfer() const
virtual ArrayAd< double, 2 > stokes_and_jacobian(const SpectralDomain &Spec_domain, int Spec_index) const
Calculate stokes vector for the given set of wavenumbers/wavelengths.
For GOSAT and OCO, we have a set of stokes coefficients to go from Stokes vector to radiation...