ReFRACtor
FullPhysics::SpurrBrdfDriver Class Referenceabstract

Abstracts away set up of BRDF kernel interfaces. More...

#include <spurr_driver.h>

+ Inheritance diagram for FullPhysics::SpurrBrdfDriver:
+ Collaboration diagram for FullPhysics::SpurrBrdfDriver:

Public Member Functions

virtual bool do_kparams_derivs (const int kernel_index) const =0
 
virtual bool do_shadow_effect () const =0
 
virtual void initialize_brdf_inputs (int surface_type)
 Initializes the BRDF kernels for the given Ground surface type integer. More...
 
virtual int n_brdf_kernels () const =0
 
virtual int n_kernel_factor_wfs () const =0
 
virtual int n_kernel_params_wfs () const =0
 
virtual int n_surface_wfs () const =0
 
virtual ArrayAd< double, 1 > setup_brdf_inputs (int surface_type, const ArrayAd< double, 1 > &surface_parameters) const
 Sets up the BRDF inputs to be used by the BRDF calculation code This routine is intended to be called for each spectral point. More...
 
virtual void setup_geometry (double sza, double azm, double zen) const =0
 

Protected Member Functions

virtual void calculate_brdf () const =0
 
virtual void do_kparams_derivs (const int kernel_index, const bool do_kparams)=0
 
virtual void do_shadow_effect (const bool do_shadow) const =0
 
virtual void initialize_brdf_kernel (int kernel_type)
 Initializes a specific BRDF kernel based on the kernel type integer Each call adds a new kernel setup to the BRDF interface, meaning multiple calls are set up by successive calls to this method. More...
 
virtual void initialize_kernel_parameters (const int kernel_index, const int which_brdf, const bool lambertian_flag, const int n_brdf_parameters, const bool do_factor_wfs, const blitz::Array< bool, 1 > &do_params_wfs)=0
 
virtual void n_brdf_kernels (const int n_kernels)=0
 
virtual void n_kernel_factor_wfs (const int n_factors)=0
 
virtual void n_kernel_params_wfs (const int n_params)=0
 
virtual void n_surface_wfs (const int n_wfs)=0
 
virtual void setup_breon_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > &parameter_indexes) const
 
virtual void setup_coxmunk_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > &parameter_indexes) const
 
virtual void setup_lambertian_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > &parameter_indexes) const
 
virtual void setup_rahman_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > &parameter_indexes) const
 

Protected Attributes

blitz::Array< double, 1 > brdf_factors
 
blitz::Array< double, 2 > brdf_params
 

Detailed Description

Abstracts away set up of BRDF kernel interfaces.

The arrays needing setting for the initialization steps are done through methods because it is often the case that boolean arrays passed to Fortran will need to be copied and can not be set directly into the memory read by Fortran. Since this step is only done once this is probably acceptable.

For the setup of the values for the surface to be calculated, three double arrays are exposed so that this interface might copy values into the memory used by Fortran once instead of twice if method calls were used to do the setting.

The public inteface only exposes the two main initialization and setup routines. However, most of the protected interface needs to be implemented by implementing classes. These are mostly methods to link a parameter to the location it is stored by the specific incarnation of Spurr BRDF code.

Definition at line 37 of file spurr_driver.h.

Member Function Documentation

◆ calculate_brdf()

virtual void FullPhysics::SpurrBrdfDriver::calculate_brdf ( ) const
protectedpure virtual

◆ do_kparams_derivs() [1/2]

virtual bool FullPhysics::SpurrBrdfDriver::do_kparams_derivs ( const int  kernel_index) const
pure virtual

◆ do_kparams_derivs() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::do_kparams_derivs ( const int  kernel_index,
const bool  do_kparams 
)
protectedpure virtual

◆ do_shadow_effect() [1/2]

virtual bool FullPhysics::SpurrBrdfDriver::do_shadow_effect ( ) const
pure virtual

◆ do_shadow_effect() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::do_shadow_effect ( const bool  do_shadow) const
protectedpure virtual

◆ initialize_brdf_inputs()

void SpurrBrdfDriver::initialize_brdf_inputs ( int  surface_type)
virtual

Initializes the BRDF kernels for the given Ground surface type integer.

A surface type might consist of multiple kernels.

Definition at line 13 of file spurr_driver.cc.

◆ initialize_brdf_kernel()

void SpurrBrdfDriver::initialize_brdf_kernel ( int  which_brdf)
protectedvirtual

Initializes a specific BRDF kernel based on the kernel type integer Each call adds a new kernel setup to the BRDF interface, meaning multiple calls are set up by successive calls to this method.

Definition at line 41 of file spurr_driver.cc.

◆ initialize_kernel_parameters()

virtual void FullPhysics::SpurrBrdfDriver::initialize_kernel_parameters ( const int  kernel_index,
const int  which_brdf,
const bool  lambertian_flag,
const int  n_brdf_parameters,
const bool  do_factor_wfs,
const blitz::Array< bool, 1 > &  do_params_wfs 
)
protectedpure virtual

◆ n_brdf_kernels() [1/2]

virtual int FullPhysics::SpurrBrdfDriver::n_brdf_kernels ( ) const
pure virtual

◆ n_brdf_kernels() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::n_brdf_kernels ( const int  n_kernels)
protectedpure virtual

◆ n_kernel_factor_wfs() [1/2]

virtual int FullPhysics::SpurrBrdfDriver::n_kernel_factor_wfs ( ) const
pure virtual

◆ n_kernel_factor_wfs() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::n_kernel_factor_wfs ( const int  n_factors)
protectedpure virtual

◆ n_kernel_params_wfs() [1/2]

virtual int FullPhysics::SpurrBrdfDriver::n_kernel_params_wfs ( ) const
pure virtual

◆ n_kernel_params_wfs() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::n_kernel_params_wfs ( const int  n_params)
protectedpure virtual

◆ n_surface_wfs() [1/2]

virtual int FullPhysics::SpurrBrdfDriver::n_surface_wfs ( ) const
pure virtual

◆ n_surface_wfs() [2/2]

virtual void FullPhysics::SpurrBrdfDriver::n_surface_wfs ( const int  n_wfs)
protectedpure virtual

◆ setup_brdf_inputs()

ArrayAd< double, 1 > SpurrBrdfDriver::setup_brdf_inputs ( int  surface_type,
const ArrayAd< double, 1 > &  surface_parameters 
) const
virtual

Sets up the BRDF inputs to be used by the BRDF calculation code This routine is intended to be called for each spectral point.

Definition at line 112 of file spurr_driver.cc.

◆ setup_breon_inputs()

void SpurrBrdfDriver::setup_breon_inputs ( int  kernel_index,
ArrayAd< double, 1 > &  surface_parameters,
const blitz::Array< int, 1 > &  parameter_indexes 
) const
protectedvirtual

Definition at line 223 of file spurr_driver.cc.

◆ setup_coxmunk_inputs()

void SpurrBrdfDriver::setup_coxmunk_inputs ( int  kernel_index,
ArrayAd< double, 1 > &  surface_parameters,
const blitz::Array< int, 1 > &  parameter_indexes 
) const
protectedvirtual

Definition at line 181 of file spurr_driver.cc.

◆ setup_geometry()

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

◆ setup_lambertian_inputs()

void SpurrBrdfDriver::setup_lambertian_inputs ( int  kernel_index,
ArrayAd< double, 1 > &  surface_parameters,
const blitz::Array< int, 1 > &  parameter_indexes 
) const
protectedvirtual

Definition at line 168 of file spurr_driver.cc.

◆ setup_rahman_inputs()

void SpurrBrdfDriver::setup_rahman_inputs ( int  kernel_index,
ArrayAd< double, 1 > &  surface_parameters,
const blitz::Array< int, 1 > &  parameter_indexes 
) const
protectedvirtual

Definition at line 205 of file spurr_driver.cc.

Member Data Documentation

◆ brdf_factors

blitz::Array<double, 1> FullPhysics::SpurrBrdfDriver::brdf_factors
mutableprotected

Definition at line 78 of file spurr_driver.h.

◆ brdf_params

blitz::Array<double, 2> FullPhysics::SpurrBrdfDriver::brdf_params
mutableprotected

Definition at line 79 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