ReFRACtor
FullPhysics::SpurrRtDriver Class Referenceabstract

Abstracts away set up of Radiative Transfer software from Rob Spurr into a simpler common inteface used by the L2 software. More...

#include <spurr_driver.h>

+ Inheritance diagram for FullPhysics::SpurrRtDriver:
+ Collaboration diagram for FullPhysics::SpurrRtDriver:

Public Member Functions

 SpurrRtDriver (bool do_solar=true, bool do_thermal=false)
 
const boost::shared_ptr< SpurrBrdfDriverbrdf_driver () const
 Access to BRDF driver. More...
 
virtual void calculate_rt () const =0
 Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs. More...
 
virtual void clear_linear_inputs () const =0
 Mark that we are not retrieving weighting functions. More...
 
virtual void copy_jacobians (blitz::Array< double, 2 > &jac_atm, blitz::Array< double, 1 > &jac_surf) const =0
 Copy jacobians out of internal xdata structures. More...
 
virtual double get_intensity () const =0
 Retrieve the intensity value calculated. More...
 
virtual void reflectance_and_jacobian_calculate (const blitz::Array< double, 1 > &height_grid, double sza, double azm, double zen, int surface_type, ArrayAd< double, 1 > &surface_parameters, const ArrayAd< double, 1 > &od, const ArrayAd< double, 1 > &ssa, const ArrayAd< double, 2 > &pf, double &reflectance, blitz::Array< double, 2 > &jac_atm, blitz::Array< double, 1 > &jac_surf, double surface_bb=0, const blitz::Array< double, 1 > &atmosphere_bb=blitz::Array< double, 1 >())
 Calculates intensity, profile and surface weighting factors (jacobians) with the given inputs. More...
 
virtual double reflectance_calculate (const blitz::Array< double, 1 > &height_grid, double sza, double azm, double zen, int surface_type, const blitz::Array< double, 1 > &surface_parameters, const blitz::Array< double, 1 > &od, const blitz::Array< double, 1 > &ssa, const blitz::Array< double, 2 > &pf, double surface_bb=0, const blitz::Array< double, 1 > &atmosphere_bb=blitz::Array< double, 1 >())
 Computes reflectance without jacobians. More...
 
virtual void setup_geometry (double sza, double azm, double zen) const =0
 Setup viewing geometry, should only be called once per instance or if the viewing geometry changes. More...
 
virtual void setup_height_grid (const blitz::Array< double, 1 > &height_grid) const =0
 Setup height grid, should only be called once per instance or if the height grid changes. More...
 
virtual void setup_linear_inputs (const ArrayAd< double, 1 > &od, const ArrayAd< double, 1 > &ssa, const ArrayAd< double, 2 > &pf, bool do_surface_linearization) const =0
 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, 2 > &pf) const =0
 Set up optical depth, single scattering albedo and phase function Should be called per spectral point. More...
 
virtual void setup_thermal_inputs (double surface_bb, const blitz::Array< double, 1 > atmosphere_bb) const =0
 Set up thermal emission inputs. More...
 

Protected Member Functions

virtual void initialize_rt ()=0
 Initializes radiative transfer data structures. More...
 

Protected Attributes

boost::shared_ptr< SpurrBrdfDriverbrdf_driver_
 Spurr BRDF class interface class to use. More...
 
bool do_solar_sources
 
bool do_thermal_emission
 

Detailed Description

Abstracts away set up of Radiative Transfer software from Rob Spurr into a simpler common inteface used by the L2 software.

This interface should be independent of the L2 Atmosphere class to make unit testing easier.

Definition at line 90 of file spurr_driver.h.

Constructor & Destructor Documentation

◆ SpurrRtDriver()

FullPhysics::SpurrRtDriver::SpurrRtDriver ( bool  do_solar = true,
bool  do_thermal = false 
)
inline

Definition at line 94 of file spurr_driver.h.

Member Function Documentation

◆ brdf_driver()

const boost::shared_ptr<SpurrBrdfDriver> FullPhysics::SpurrRtDriver::brdf_driver ( ) const
inline

Access to BRDF driver.

Definition at line 123 of file spurr_driver.h.

◆ calculate_rt()

virtual void FullPhysics::SpurrRtDriver::calculate_rt ( ) const
pure virtual

Perform radiative transfer calculation with the values setup by setup_optical_inputs and setup_linear_inputs.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ clear_linear_inputs()

virtual void FullPhysics::SpurrRtDriver::clear_linear_inputs ( ) const
pure virtual

Mark that we are not retrieving weighting functions.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ copy_jacobians()

virtual void FullPhysics::SpurrRtDriver::copy_jacobians ( blitz::Array< double, 2 > &  jac_atm,
blitz::Array< double, 1 > &  jac_surf 
) const
pure virtual

Copy jacobians out of internal xdata structures.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ get_intensity()

virtual double FullPhysics::SpurrRtDriver::get_intensity ( ) const
pure virtual

Retrieve the intensity value calculated.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ initialize_rt()

virtual void FullPhysics::SpurrRtDriver::initialize_rt ( )
protectedpure virtual

Initializes radiative transfer data structures.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ reflectance_and_jacobian_calculate()

void SpurrRtDriver::reflectance_and_jacobian_calculate ( const blitz::Array< double, 1 > &  height_grid,
double  sza,
double  azm,
double  zen,
int  surface_type,
ArrayAd< double, 1 > &  surface_parameters,
const ArrayAd< double, 1 > &  od,
const ArrayAd< double, 1 > &  ssa,
const ArrayAd< double, 2 > &  pf,
double &  reflectance,
blitz::Array< double, 2 > &  jac_atm,
blitz::Array< double, 1 > &  jac_surf,
double  surface_bb = 0,
const blitz::Array< double, 1 > &  atmosphere_bb = blitz::Array<double,1>() 
)
virtual

Calculates intensity, profile and surface weighting factors (jacobians) with the given inputs.

Definition at line 276 of file spurr_driver.cc.

◆ reflectance_calculate()

double SpurrRtDriver::reflectance_calculate ( const blitz::Array< double, 1 > &  height_grid,
double  sza,
double  azm,
double  zen,
int  surface_type,
const blitz::Array< double, 1 > &  surface_parameters,
const blitz::Array< double, 1 > &  od,
const blitz::Array< double, 1 > &  ssa,
const blitz::Array< double, 2 > &  pf,
double  surface_bb = 0,
const blitz::Array< double, 1 > &  atmosphere_bb = blitz::Array<double,1>() 
)
virtual

Computes reflectance without jacobians.

Calculates intensity value with the given inputs.

Definition at line 237 of file spurr_driver.cc.

◆ setup_geometry()

virtual void FullPhysics::SpurrRtDriver::setup_geometry ( double  sza,
double  azm,
double  zen 
) const
pure virtual

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

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ setup_height_grid()

virtual void FullPhysics::SpurrRtDriver::setup_height_grid ( const blitz::Array< double, 1 > &  height_grid) const
pure virtual

Setup height grid, should only be called once per instance or if the height grid changes.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ setup_linear_inputs()

virtual void FullPhysics::SpurrRtDriver::setup_linear_inputs ( const ArrayAd< double, 1 > &  od,
const ArrayAd< double, 1 > &  ssa,
const ArrayAd< double, 2 > &  pf,
bool  do_surface_linearization 
) const
pure virtual

Set up linearization, weighting functions.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ setup_optical_inputs()

virtual void FullPhysics::SpurrRtDriver::setup_optical_inputs ( const blitz::Array< double, 1 > &  od,
const blitz::Array< double, 1 > &  ssa,
const blitz::Array< double, 2 > &  pf 
) const
pure virtual

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

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

◆ setup_thermal_inputs()

virtual void FullPhysics::SpurrRtDriver::setup_thermal_inputs ( double  surface_bb,
const blitz::Array< double, 1 >  atmosphere_bb 
) const
pure virtual

Set up thermal emission inputs.

Implemented in FullPhysics::LidortRtDriver, and FullPhysics::TwostreamRtDriver.

Member Data Documentation

◆ brdf_driver_

boost::shared_ptr<SpurrBrdfDriver> FullPhysics::SpurrRtDriver::brdf_driver_
mutableprotected

Spurr BRDF class interface class to use.

Definition at line 169 of file spurr_driver.h.

◆ do_solar_sources

bool FullPhysics::SpurrRtDriver::do_solar_sources
protected

Definition at line 163 of file spurr_driver.h.

◆ do_thermal_emission

bool FullPhysics::SpurrRtDriver::do_thermal_emission
protected

Definition at line 163 of file spurr_driver.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