1 #ifndef SOLAR_DOPPLER_SHIFT_POLYNOMIAL_H 2 #define SOLAR_DOPPLER_SHIFT_POLYNOMIAL_H 6 #include <boost/array.hpp> 25 bool apply_doppler_shift =
true);
29 bool apply_doppler_shift =
true);
37 virtual void print(std::ostream& Os)
const;
55 {
return solar_velocity_ + doppler_rot_earth_sun_; }
63 double doppler_shift_;
64 bool apply_doppler_shift_;
65 bool calculated_doppler_shift;
66 void calc_solar_distance(
const Constant& constant,
const Time& t);
This class handles the solar Doppler stretch to calculate the shift of the solar lines with respect t...
virtual SpectralDomain doppler_stretch(const SpectralDomain &Spec_domain) const
Shift wavenumbers to account for doppler stretch.
SolarDopplerShiftPolynomial(const Time &t, const DoubleWithUnit &lat, const DoubleWithUnit &sol_zen, const DoubleWithUnit &sol_az, const DoubleWithUnit &elevation, const Constant &constant=DefaultConstant(), bool apply_doppler_shift=true)
Create a SolarDopplerShiftPolynomial.
This class is an implementation of Constant that uses hard coded values suitable for Earth...
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
virtual void print(std::ostream &Os) const
Print description of object.
virtual ~SolarDopplerShiftPolynomial()
DoubleWithUnit solar_velocity() const
Velocity of the center of the earth to the center of the sun.
This class contains various constants.
This class handles the solar Doppler stretch to calculate the shift of the solar lines with respect t...
double doppler_shift() const
DoubleWithUnit total_velocity() const
Total velocity, including rotation of earth.
We frequently have a double with units associated with it.
virtual DoubleWithUnit solar_distance() const
Return Earth-Sun distance.
This is a simple time class.
Contains classes to abstract away details in various Spurr Radiative Transfer software.