ReFRACtor
radiant_driver.h
Go to the documentation of this file.
1 #ifndef RADIANT_DRIVER_H
2 #define RADIANT_DRIVER_H
3 #include "atmosphere_oco.h"
5 #include "rt_atmosphere.h"
6 #include <boost/noncopyable.hpp>
7 #include <blitz/array.h>
8 
9 using namespace FullPhysics;
10 using namespace blitz;
11 
12 namespace FullPhysics {
13 /****************************************************************/
17  public Observer<RtAtmosphere>,
18  public boost::noncopyable {
19 public:
21  const blitz::Array<double, 1>& Sza);
22  virtual ~RadiantDriver();
23 
24  //-----------------------------------------------------------------------
28  //-----------------------------------------------------------------------
29 
30  void notify_update(const RtAtmosphere& atm) { alt_spec_index_cache = -1; }
31 
32  //-----------------------------------------------------------------------
34  //-----------------------------------------------------------------------
35 
36  virtual int number_stream() const {return 0;}
37 
38  virtual void print(std::ostream& Os) const;
39 
40  virtual blitz::Array<double, 1> stokes_single_wn
41  (double Wn, int Spec_index, const ArrayAd<double, 2>& Iv) const;
42 
43  virtual ArrayAd<double, 1> stokes_and_jacobian_single_wn
44  (double Wn, int Spec_index, const ArrayAd<double, 2>& Iv) const;
45 
46 private:
47  static constexpr double SOLID_ANGLE = 6.79929414e-5;
48  virtual int number_stokes() const {return 1;}
49 
50  blitz::Array<double, 1> sza;
51 
52  mutable blitz::Array<double, 1> tau_in;
53  mutable blitz::Array<double, 2> l_tau_in;
54 
55  ArrayAd<double, 1> stokes_and_maybe_jacobian
56  (double Wn, int Spec_index, const ArrayAd<double, 2>& Iv) const;
57 
58  // Last index we updates the altitude for.
59  mutable int alt_spec_index_cache;
60 
61 };
62 }
63 #endif
64 
void notify_update(const RtAtmosphere &atm)
For performance, we cache some data as we calculate it.
This class is responsible for setting up the atmosphere and ground information needed to run the Radi...
Definition: rt_atmosphere.h:51
virtual int number_stream() const
Number of moments for scattering matrix.
This is a RadiativeTransfer that supplies an interface that can be called for a single wavenumber...
Apply value function to a blitz array.
This class drives the RADIANT Radiative Transfer code.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
Simple Mixin to be and Observer of another object of class T.
Definition: observer.h:29

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