ReFRACtor
solar_doppler_shift_polynomial.h
Go to the documentation of this file.
1 #ifndef SOLAR_DOPPLER_SHIFT_POLYNOMIAL_H
2 #define SOLAR_DOPPLER_SHIFT_POLYNOMIAL_H
3 #include "solar_doppler_shift.h"
4 #include "fp_time.h"
5 #include "double_with_unit.h"
6 #include <boost/array.hpp>
7 #include "default_constant.h"
8 
9 namespace FullPhysics {
10 /****************************************************************/
18 public:
20  const DoubleWithUnit& lat,
21  const DoubleWithUnit& sol_zen,
22  const DoubleWithUnit& sol_az,
23  const DoubleWithUnit& elevation,
24  const Constant& constant = DefaultConstant(),
25  bool apply_doppler_shift = true);
26  SolarDopplerShiftPolynomial(double Doppler_shift,
27  const Time& t,
28  const Constant& constant = DefaultConstant(),
29  bool apply_doppler_shift = true);
30 
32 
33 //-----------------------------------------------------------------------
35 //-----------------------------------------------------------------------
36 
37  virtual void print(std::ostream& Os) const;
38  virtual DoubleWithUnit solar_distance() const {return solar_distance_;}
40  const SpectralDomain& Spec_domain) const;
41 
42 //-----------------------------------------------------------------------
46 //-----------------------------------------------------------------------
47 
48  DoubleWithUnit solar_velocity() const {return solar_velocity_;}
49 
50 //-----------------------------------------------------------------------
52 //-----------------------------------------------------------------------
53 
55  { return solar_velocity_ + doppler_rot_earth_sun_; }
56 
57  double doppler_shift() const {return doppler_shift_;}
58 
59 private:
60  DoubleWithUnit solar_distance_;
61  DoubleWithUnit solar_velocity_;
62  DoubleWithUnit 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);
67 };
68 
69 }
70 #endif
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.
DoubleWithUnit solar_velocity() const
Velocity of the center of the earth to the center of the sun.
This class contains various constants.
Definition: constant.h:11
This class handles the solar Doppler stretch to calculate the shift of the solar lines with respect t...
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.
Definition: fp_time.h:29
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1

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