ReFRACtor
lsi_rt.h
Go to the documentation of this file.
1 #ifndef LSI_RT_H
2 #define LSI_RT_H
4 #include "hdf_file.h"
5 #include "log_interpolate.h"
6 
7 namespace FullPhysics {
8 /****************************************************************/
21 public:
24  const std::string& Lsi_fname,
25  double Water_vapor_fraction_threshold = 0.8);
28  const HdfFile& Config_file,
29  const std::string& Lsi_group = "LSI",
30  double Water_vapor_fraction_threshold = 0.8);
31  virtual ~LsiRt() {}
32  virtual int number_stokes() const
33  { return high_stream_rt->number_stokes(); }
34  virtual blitz::Array<double, 2> stokes(const SpectralDomain& Spec_domain,
35  int Spec_index) const;
37  (const SpectralDomain& Spec_domain, int Spec_index) const;
39  (const SpectralDomain& Spec_domain, int Spec_index) const;
40  virtual void print(std::ostream& Os, bool Short_form = false) const;
42  low_stream_radiative_transfer() const { return low_stream_rt; }
44  high_stream_radiative_transfer() const { return high_stream_rt; }
45 private:
46  void calc_correction(const SpectralDomain& Spec_domain,
47  int Spec_index, bool Calc_jacobian,
48  bool Skip_stokes_calc) const;
49  boost::shared_ptr<RadiativeTransferSingleWn> low_stream_rt, high_stream_rt;
50  std::vector<std::vector<double> > optical_depth_boundary;
51  std::vector<std::string> main_gas;
52  double wv_threshold;
53  mutable blitz::Array<double, 2> stokes_only;
54  mutable ArrayAd<double, 2> stokes_and_jac;
55  mutable ArrayAd<double, 1> gas_opd;
56  mutable blitz::Array<int, 1> wv_index;
58  blitz::Array<AutoDerivative<double>, 1> > linear_interp_type;
60  blitz::Array<AutoDerivative<double>, 1> > log_linear_interp_type;
61  mutable std::vector<linear_interp_type> linear_interp;
62  mutable std::vector<log_linear_interp_type> log_linear_interp;
63 };
64 }
65 #endif
virtual void print(std::ostream &Os, bool Short_form=false) const
Print to stream.
Definition: lsi_rt.cc:138
virtual blitz::Array< double, 2 > stokes(const SpectralDomain &Spec_domain, int Spec_index) const
Calculate stokes vector for the given set of wavenumbers/wavelengths.
Definition: lsi_rt.cc:167
virtual int number_stokes() const
Number of stokes parameters we will return in stokes and stokes_and_jacobian.
Definition: lsi_rt.h:32
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...
Definition: lsi_rt.cc:63
This does a Low Stream Interpolator correction to another RadiativeTransfer object.
Definition: lsi_rt.h:20
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...
Definition: lsi_rt.cc:220
virtual ~LsiRt()
Definition: lsi_rt.h:31
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.
Definition: hdf_file.h:39
boost::shared_ptr< RadiativeTransfer > high_stream_radiative_transfer() const
Definition: lsi_rt.h:44
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
boost::shared_ptr< RadiativeTransfer > low_stream_radiative_transfer() const
Definition: lsi_rt.h:42
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.
Definition: lsi_rt.cc:191
For GOSAT and OCO, we have a set of stokes coefficients to go from Stokes vector to radiation...

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:10