ReFRACtor
|
Abstracts away set up of BRDF kernel interfaces. More...
#include <spurr_driver.h>
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 > ¶meter_indexes) const |
virtual void | setup_coxmunk_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > ¶meter_indexes) const |
virtual void | setup_lambertian_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > ¶meter_indexes) const |
virtual void | setup_rahman_inputs (int kernel_index, ArrayAd< double, 1 > &surface_parameters, const blitz::Array< int, 1 > ¶meter_indexes) const |
Protected Attributes | |
blitz::Array< double, 1 > | brdf_factors |
blitz::Array< double, 2 > | brdf_params |
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.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
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.
|
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.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedpure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
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.
|
protectedvirtual |
Definition at line 223 of file spurr_driver.cc.
|
protectedvirtual |
Definition at line 181 of file spurr_driver.cc.
|
pure virtual |
Implemented in FullPhysics::LidortBrdfDriver, and FullPhysics::TwostreamBrdfDriver.
|
protectedvirtual |
Definition at line 168 of file spurr_driver.cc.
|
protectedvirtual |
Definition at line 205 of file spurr_driver.cc.
|
mutableprotected |
Definition at line 78 of file spurr_driver.h.
|
mutableprotected |
Definition at line 79 of file spurr_driver.h.