1 #ifndef RADIATIVE_TRANSFER_H 2 #define RADIATIVE_TRANSFER_H 7 #include <blitz/array.h> 8 #include <boost/progress.hpp> 9 #include <boost/shared_ptr.hpp> 56 bool Skip_jacobian =
false)
const = 0;
68 int Spec_index)
const = 0;
89 virtual void print(std::ostream& Os,
bool Short_form =
false)
const 90 { Os <<
"RadiativeTransfer";}
94 blitz::Array<double, 1>&
wn)
const;
static AccumulatedTimer timer
virtual int number_spectrometer() const =0
Number of spectrometer we have.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
This is a Mixin for classes that can be printed.
This runs a Radiative Transfer code to determine the reflectance for a given set of wavelengths...
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
virtual blitz::Array< double, 2 > stokes(const SpectralDomain &Spec_domain, int Spec_index) const =0
Calculate stokes vector for the given set of wavenumbers/wavelengths.
boost::shared_ptr< boost::progress_display > progress_display(const blitz::Array< double, 1 > &wn) const
Helper routine, creates a progress meter.
This is a simple timer class that can be used to accumulate the time spent in multiple calls to a fun...
Contains classes to abstract away details in various Spurr Radiative Transfer software.
virtual ArrayAd< double, 2 > stokes_and_jacobian(const SpectralDomain &Spec_domain, int Spec_index) const =0
Calculate stokes vector for the given set of wavenumbers/wavelengths.
virtual Spectrum reflectance(const SpectralDomain &Spec_domain, int Spec_index, bool Skip_jacobian=false) const =0
Calculate reflectance for the given set of wavenumbers/wavelengths.
virtual void print(std::ostream &Os, bool Short_form=false) const
Print to stream.
virtual ~RadiativeTransfer()
virtual int number_stokes() const =0
Number of stokes parameters we will return in stokes and stokes_and_jacobian.