ReFRACtor
spurr_rt.h
Go to the documentation of this file.
1 #ifndef SPURR_RT_H
2 #define SPURR_RT_H
3 
4 #include "spurr_driver.h"
6 #include "rt_atmosphere.h"
7 #include <boost/noncopyable.hpp>
8 
9 namespace FullPhysics {
10 
11 /****************************************************************/
17  public Observer<RtAtmosphere>,
18  public boost::noncopyable {
19 public:
20 
22  const boost::shared_ptr<StokesCoefficient>& Stokes_coef,
23  const blitz::Array<double, 1>& Sza,
24  const blitz::Array<double, 1>& Zen,
25  const blitz::Array<double, 1>& Azm,
26  bool do_solar = true,
27  bool do_thermal = false);
28 
29  //-----------------------------------------------------------------------
33  //-----------------------------------------------------------------------
35 
38  virtual int number_stokes() const { return stokes_coef->stokes_coefficient().cols(); }
39 
41  virtual int number_stream() const = 0;
42 
44  virtual int number_moment() const = 0;
45 
47  virtual int surface_type() const { return surface_type_int; }
48 
49  virtual void print(std::ostream& Os, bool Short_form = false) const;
50 
51  virtual blitz::Array<double, 1> stokes_single_wn(double Wn, int Spec_index, const ArrayAd<double, 2>& Iv) const;
52  virtual ArrayAd<double, 1> stokes_and_jacobian_single_wn(double Wn, int Spec_index, const ArrayAd<double, 2>& Iv) const;
53 
54 protected:
55 
58 
59  blitz::Array<double, 1> sza, zen, azm;
60 
62 
63  // Last index we updates the altitude/geometry for.
65  virtual void update_altitude(int spec_index) const;
66  virtual void update_geometry(int spec_index) const;
67  virtual void setup_thermal_inputs(double wn, int spec_index) const;
68 
69 };
70 }
71 #endif
72 
virtual void setup_thermal_inputs(double wn, int spec_index) const
Definition: spurr_rt.cc:116
void notify_update(const RtAtmosphere &atm)
For performance, we cache some data as we calculate it.
Definition: spurr_rt.h:34
This class is responsible for setting up the atmosphere and ground information needed to run the Radi...
Definition: rt_atmosphere.h:51
virtual ArrayAd< double, 1 > stokes_and_jacobian_single_wn(double Wn, int Spec_index, const ArrayAd< double, 2 > &Iv) const
Calculate stokes vector and Jacobian for the given wavenumber.
Definition: spurr_rt.cc:174
boost::shared_ptr< SpurrRtDriver > rt_driver_
Definition: spurr_rt.h:61
virtual blitz::Array< double, 1 > stokes_single_wn(double Wn, int Spec_index, const ArrayAd< double, 2 > &Iv) const
Calculate stokes vector for the given wavenumber.
Definition: spurr_rt.cc:125
SpurrRt(const boost::shared_ptr< RtAtmosphere > &Atm, const boost::shared_ptr< StokesCoefficient > &Stokes_coef, const blitz::Array< double, 1 > &Sza, const blitz::Array< double, 1 > &Zen, const blitz::Array< double, 1 > &Azm, bool do_solar=true, bool do_thermal=false)
Constructor.
Definition: spurr_rt.cc:32
virtual int number_moment() const =0
Number of moments for scattering matrix.
This is a RadiativeTransfer that supplies an interface that can be called for a single wavenumber...
virtual void update_geometry(int spec_index) const
Update the geometry if necessary, only needs to change when spectrometer index changes.
Definition: spurr_rt.cc:102
Abstract Interface for Rt classes based on Spurr driver implementations.
Definition: spurr_rt.h:16
blitz::Array< double, 1 > zen
Definition: spurr_rt.h:59
blitz::Array< double, 1 > azm
Definition: spurr_rt.h:59
bool do_thermal_emission
Definition: spurr_rt.h:57
blitz::Array< double, 1 > sza
Definition: spurr_rt.h:59
virtual void print(std::ostream &Os, bool Short_form=false) const
Print to a stream.
Definition: spurr_rt.cc:282
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
virtual void update_altitude(int spec_index) const
Update the altitude information.
Definition: spurr_rt.cc:83
boost::shared_ptr< StokesCoefficient > stokes_coef
Object to go from stokes vector to reflectance.
virtual int number_stream() const =0
Number of quadtature streams in the cosine half space.
virtual int number_stokes() const
Number of stokes in returned stokes values Note that LIDORT will only ever calculate the first stoke ...
Definition: spurr_rt.h:38
Simple Mixin to be and Observer of another object of class T.
Definition: observer.h:29
virtual int surface_type() const
Integer representing the surface type using the LIDORT indexing nomenclature.
Definition: spurr_rt.h:47

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