ReFRACtor
radiative_transfer.h
Go to the documentation of this file.
1 #ifndef RADIATIVE_TRANSFER_H
2 #define RADIATIVE_TRANSFER_H
3 #include "printable.h"
4 #include "accumulated_timer.h"
5 #include "array_ad.h"
6 #include "spectrum.h"
7 #include <blitz/array.h>
8 #include <boost/progress.hpp>
9 #include <boost/shared_ptr.hpp>
10 
11 namespace FullPhysics {
12 /****************************************************************/
27 class RadiativeTransfer : public Printable<RadiativeTransfer> {
28 public:
29  virtual ~RadiativeTransfer() {}
30 
31 //-----------------------------------------------------------------------
34 //-----------------------------------------------------------------------
35 
36  virtual int number_stokes() const = 0;
37 
38 //-----------------------------------------------------------------------
40 //-----------------------------------------------------------------------
41 
42  virtual int number_spectrometer() const = 0;
43 
44 //-----------------------------------------------------------------------
52 //-----------------------------------------------------------------------
53 
54  virtual Spectrum reflectance
55  (const SpectralDomain& Spec_domain, int Spec_index,
56  bool Skip_jacobian = false) const = 0;
57 
58 //-----------------------------------------------------------------------
65 //-----------------------------------------------------------------------
66 
67  virtual blitz::Array<double, 2> stokes(const SpectralDomain& Spec_domain,
68  int Spec_index) const = 0;
69 
70 //-----------------------------------------------------------------------
80 //-----------------------------------------------------------------------
81 
83  (const SpectralDomain& Spec_domain, int Spec_index) const = 0;
84 
85 //-----------------------------------------------------------------------
87 //-----------------------------------------------------------------------
88 
89  virtual void print(std::ostream& Os, bool Short_form = false) const
90  { Os << "RadiativeTransfer";}
91 protected:
94  blitz::Array<double, 1>& wn) const;
95 };
96 
97 }
98 #endif
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.
Definition: printable.h:24
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.
Definition: spectrum.h:18
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.
Definition: doxygen_python.h:1
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 int number_stokes() const =0
Number of stokes parameters we will return in stokes and stokes_and_jacobian.

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