ReFRACtor
FullPhysics::LRadDriver Class Reference

This class drives the LRAD code, which gives a polarization correction to scalar intensity and jacobians. More...

#include <l_rad_driver.h>

+ Inheritance diagram for FullPhysics::LRadDriver:
+ Collaboration diagram for FullPhysics::LRadDriver:

Public Types

enum  PsMode { REGULAR, ENHANCED, PLANE_PARALLEL, DETECT }
 

Public Member Functions

 LRadDriver (int Number_stream, int Number_stokes, int surface_type, bool Tms_Correction=false, bool Pure_nadir=false, const PsMode ps_mode=DETECT)
 
virtual ~LRadDriver ()
 Destructor. More...
 
virtual blitz::Array< double, 3 > atmospheric_jacobian () const
 Atmospheric jacobian from last calculation. More...
 
virtual void calculate_first_order ()
 Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs for the first order of scattering. More...
 
virtual void calculate_second_order ()
 Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs for the second order of scattering. More...
 
virtual void clear_linear_inputs ()
 Mark that we are not retrieving weighting functions. More...
 
virtual int number_stokes () const
 
virtual int number_stream () const
 
virtual void print (std::ostream &Os, bool Short_form=false) const
 
std::string print_to_string () const
 Print to string. More...
 
virtual void setup_geometry (blitz::Array< double, 1 > alt, double sza, double zen, double azm) const
 Setup viewing geometry, should only be called once per instance or if the viewing geometry changes. More...
 
virtual void setup_linear_inputs (const ArrayAd< double, 1 > &od, const ArrayAd< double, 1 > &ssa, const ArrayAd< double, 3 > &pf, const ArrayAd< double, 2 > &zmat)
 Set up linearization, weighting functions. More...
 
virtual void setup_optical_inputs (const blitz::Array< double, 1 > &od, const blitz::Array< double, 1 > &ssa, const blitz::Array< double, 3 > &pf, const blitz::Array< double, 2 > &zmat)
 Set up optical depth, single scattering albedo and scattering matrix Should be called per spectral point. More...
 
virtual void setup_surface_params (const blitz::Array< double, 1 > &surface_param)
 Set up surface parameters for spectral point. More...
 
virtual blitz::Array< double, 1 > stokes () const
 Retrieve the stokes values calculated. More...
 
virtual blitz::Array< double, 2 > surface_jacobian () const
 Surface jacobian. More...
 
ArrayAd< double, 2 > z_matrix (const ArrayAd< double, 3 > &pf) const
 Calculate the z matrix. More...
 

Detailed Description

This class drives the LRAD code, which gives a polarization correction to scalar intensity and jacobians.

The correction used here is described in the paper "A fast linearized pseudo-spherical two orders of scattering model to account for polarization in vertically inhomogeneous scattering-absorbing media" by Vijah Natrah and Robert Spurr in Journal of Quantitative Spectroscopy & Radiative Transfer 107 (2007) 263-293 (a copy of this paper can be found in the source tree at 'doc/LRAD Paper.pdf').

Definition at line 24 of file l_rad_driver.h.

Member Enumeration Documentation

◆ PsMode

Enumerator
REGULAR 
ENHANCED 
PLANE_PARALLEL 
DETECT 

Definition at line 27 of file l_rad_driver.h.

Constructor & Destructor Documentation

◆ LRadDriver()

LRadDriver::LRadDriver ( int  Number_stream,
int  Number_stokes,
int  surface_type,
bool  Tms_Correction = false,
bool  Pure_nadir = false,
const PsMode  ps_mode = DETECT 
)

Definition at line 47 of file l_rad_driver.cc.

◆ ~LRadDriver()

LRadDriver::~LRadDriver ( )
virtual

Destructor.

Definition at line 87 of file l_rad_driver.cc.

Member Function Documentation

◆ atmospheric_jacobian()

Array< double, 3 > LRadDriver::atmospheric_jacobian ( ) const
virtual

Atmospheric jacobian from last calculation.

Definition at line 452 of file l_rad_driver.cc.

◆ calculate_first_order()

void LRadDriver::calculate_first_order ( )
virtual

Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs for the first order of scattering.

Definition at line 344 of file l_rad_driver.cc.

◆ calculate_second_order()

void LRadDriver::calculate_second_order ( )
virtual

Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs for the second order of scattering.

Definition at line 370 of file l_rad_driver.cc.

◆ clear_linear_inputs()

void LRadDriver::clear_linear_inputs ( )
virtual

Mark that we are not retrieving weighting functions.

Definition at line 192 of file l_rad_driver.cc.

◆ number_stokes()

virtual int FullPhysics::LRadDriver::number_stokes ( ) const
inlinevirtual

Definition at line 37 of file l_rad_driver.h.

◆ number_stream()

virtual int FullPhysics::LRadDriver::number_stream ( ) const
inlinevirtual

Definition at line 38 of file l_rad_driver.h.

◆ print()

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

Definition at line 470 of file l_rad_driver.cc.

◆ print_to_string()

std::string FullPhysics::Printable< LRadDriver >::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.

◆ setup_geometry()

void LRadDriver::setup_geometry ( blitz::Array< double, 1 >  alt,
double  sza,
double  zen,
double  azm 
) const
virtual

Setup viewing geometry, should only be called once per instance or if the viewing geometry changes.

Update the altitude information.

This can change the number of layers if desired.

Definition at line 97 of file l_rad_driver.cc.

◆ setup_linear_inputs()

void LRadDriver::setup_linear_inputs ( const ArrayAd< double, 1 > &  od,
const ArrayAd< double, 1 > &  ssa,
const ArrayAd< double, 3 > &  pf,
const ArrayAd< double, 2 > &  zmat 
)
virtual

Set up linearization, weighting functions.

Definition at line 235 of file l_rad_driver.cc.

◆ setup_optical_inputs()

void LRadDriver::setup_optical_inputs ( const blitz::Array< double, 1 > &  od,
const blitz::Array< double, 1 > &  ssa,
const blitz::Array< double, 3 > &  pf,
const blitz::Array< double, 2 > &  zmat 
)
virtual

Set up optical depth, single scattering albedo and scattering matrix Should be called per spectral point.

Definition at line 143 of file l_rad_driver.cc.

◆ setup_surface_params()

void LRadDriver::setup_surface_params ( const blitz::Array< double, 1 > &  surface_param)
virtual

Set up surface parameters for spectral point.

Definition at line 135 of file l_rad_driver.cc.

◆ stokes()

Array< double, 1 > LRadDriver::stokes ( ) const
virtual

Retrieve the stokes values calculated.

Definition at line 443 of file l_rad_driver.cc.

◆ surface_jacobian()

Array< double, 2 > LRadDriver::surface_jacobian ( ) const
virtual

Surface jacobian.

Definition at line 461 of file l_rad_driver.cc.

◆ z_matrix()

ArrayAd< double, 2 > LRadDriver::z_matrix ( const ArrayAd< double, 3 > &  pf) const

Calculate the z matrix.

This does the full calculation, and is somewhat expensive to call.

Must be called after setup_geometry since this calculation uses geometry values setup from it.

Definition at line 116 of file l_rad_driver.cc.


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