ReFRACtor
FullPhysics::RadiativeTransfer Class Referenceabstract

This runs a Radiative Transfer code to determine the reflectance for a given set of wavelengths. More...

#include <radiative_transfer.h>

+ Inheritance diagram for FullPhysics::RadiativeTransfer:
+ Collaboration diagram for FullPhysics::RadiativeTransfer:

Public Member Functions

virtual ~RadiativeTransfer ()
 
virtual int number_spectrometer () const =0
 Number of spectrometer we have. More...
 
virtual int number_stokes () const =0
 Number of stokes parameters we will return in stokes and stokes_and_jacobian. More...
 
virtual void print (std::ostream &Os, bool Short_form=false) const
 Print to stream. More...
 
std::string print_to_string () const
 Print to string. More...
 
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. More...
 
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. More...
 
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. More...
 

Protected Member Functions

boost::shared_ptr< boost::progress_display > progress_display (const blitz::Array< double, 1 > &wn) const
 Helper routine, creates a progress meter. More...
 

Static Protected Attributes

static AccumulatedTimer timer
 

Detailed Description

This runs a Radiative Transfer code to determine the reflectance for a given set of wavelengths.

We support both vector and scalar calculations. Because of the large size of the arrays returned, we often use only a subset of the stokes parameters given by number_stokes(). This can be up to 4, in which case we return I, Q, U and V (in that order). For Gosat, we commonly return 3 parameters: I, Q and U.

If the Radiative Transfer code is scalar, then you can either set the number_stokes() to 1 and return I, or just set the terms other than I to 0.

Definition at line 27 of file radiative_transfer.h.

Constructor & Destructor Documentation

◆ ~RadiativeTransfer()

virtual FullPhysics::RadiativeTransfer::~RadiativeTransfer ( )
inlinevirtual

Definition at line 29 of file radiative_transfer.h.

Member Function Documentation

◆ number_spectrometer()

virtual int FullPhysics::RadiativeTransfer::number_spectrometer ( ) const
pure virtual

Number of spectrometer we have.

Implemented in FullPhysics::ChapmanBoaRT, and FullPhysics::RadiativeTransferFixedStokesCoefficient.

◆ number_stokes()

virtual int FullPhysics::RadiativeTransfer::number_stokes ( ) const
pure virtual

Number of stokes parameters we will return in stokes and stokes_and_jacobian.

Implemented in FullPhysics::LRadRt, FullPhysics::SpurrRt, FullPhysics::ChapmanBoaRT, FullPhysics::LsiRt, and FullPhysics::HresWrapper.

◆ print()

virtual void FullPhysics::RadiativeTransfer::print ( std::ostream &  Os,
bool  Short_form = false 
) const
inlinevirtual

◆ print_to_string()

std::string FullPhysics::Printable< RadiativeTransfer >::print_to_string ( ) const
inlineinherited

Print to string.

This is primarily useful for SWIG wrappers to this class, e.g. a to_s method in ruby.

Definition at line 31 of file printable.h.

◆ progress_display()

boost::shared_ptr< boost::progress_display > RadiativeTransfer::progress_display ( const blitz::Array< double, 1 > &  wn) const
protected

Helper routine, creates a progress meter.

This will return 0 if we aren't logging, or if we don't have enough points to bother with.

Definition at line 19 of file radiative_transfer.cc.

◆ reflectance()

virtual Spectrum FullPhysics::RadiativeTransfer::reflectance ( const SpectralDomain Spec_domain,
int  Spec_index,
bool  Skip_jacobian = false 
) const
pure virtual

Calculate reflectance for the given set of wavenumbers/wavelengths.

Parameters
Spec_domainList of wavenumber/wavelength to calculate for.
Spec_indexThe Spectral index
Skip_jacobianIf true, don't do the Jacobian calculation. Often this is significantly faster to calculate.
Returns
The set of reflectance values.

Implemented in FullPhysics::ChapmanBoaRT, FullPhysics::RadiativeTransferFixedStokesCoefficient, and FullPhysics::RadiativeTransferImpBase.

◆ stokes()

virtual blitz::Array<double, 2> FullPhysics::RadiativeTransfer::stokes ( const SpectralDomain Spec_domain,
int  Spec_index 
) const
pure virtual

Calculate stokes vector for the given set of wavenumbers/wavelengths.

Parameters
Spec_domainList of wavenumber/wavelength to calculate for.
Spec_indexThe Spectral index
Returns
The set of stokes coefficients. This is Spec_domain.data().rows() x number_stokes() in size.

Implemented in FullPhysics::ChapmanBoaRT, FullPhysics::RadiativeTransferSingleWn, and FullPhysics::LsiRt.

◆ stokes_and_jacobian()

virtual ArrayAd<double, 2> FullPhysics::RadiativeTransfer::stokes_and_jacobian ( const SpectralDomain Spec_domain,
int  Spec_index 
) const
pure virtual

Calculate stokes vector for the given set of wavenumbers/wavelengths.

This also calculates the Jacobian of the stokes with respect to the state vector elements.

Parameters
Spec_domainList of wavenumber/wavelength to calculate for.
Spec_indexThe Spectral index
Returns
The set of stokes coefficients, along with derivatives with respect to the state vector elements. This is Spec_domain.data().rows() x number_stokes() in size.

Implemented in FullPhysics::ChapmanBoaRT, FullPhysics::RadiativeTransferSingleWn, and FullPhysics::LsiRt.

Member Data Documentation

◆ timer

AccumulatedTimer RadiativeTransfer::timer
staticprotected

Definition at line 92 of file radiative_transfer.h.


The documentation for this class was generated from the following files:

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