31 GroundBrdf(
const blitz::Array<double, 2>& Coeffs,
32 const blitz::Array<bool, 2>& Flag,
34 const std::vector<std::string>& Desc_band_names);
58 const blitz::Array<double, 2>
brdf_covariance(
const int spec_index)
const;
64 virtual const double black_sky_albedo(
const int Spec_index,
const double Sza) = 0;
67 virtual const double kernel_value(
const int Spec_index,
const double Sza,
const double Vza,
const double Azm) = 0;
70 virtual const std::string
breon_type()
const = 0;
81 virtual void print(std::ostream& Os)
const;
83 virtual std::string
desc()
const {
return "GroundBrdf"; }
87 GroundBrdf(
const blitz::Array<double, 1>& Spec_coeffs,
88 const blitz::Array<bool, 1>& Flag,
90 const std::vector<std::string>& Desc_band_names);
104 const blitz::Array<bool, 2>& Flag,
106 const std::vector<std::string>& Desc_band_names) :
107 GroundBrdf(Coeffs, Flag, Ref_points, Desc_band_names) {}
109 virtual const double black_sky_albedo(
const int Spec_index,
const double Sza);
110 virtual const double kernel_value(
const int Spec_index,
const double Sza,
const double Vza,
const double Azm);
111 virtual const std::string
breon_type()
const {
return "Vegetative"; }
118 const blitz::Array<bool, 1>& Flag,
120 const std::vector<std::string>& Desc_band_names) :
121 GroundBrdf(Spec_coeffs, Flag, Ref_points, Desc_band_names) {}
127 const blitz::Array<bool, 2>& Flag,
129 const std::vector<std::string>& Desc_band_names) :
130 GroundBrdf(Coeffs, Flag, Ref_points, Desc_band_names) {}
132 virtual const double black_sky_albedo(
const int Spec_index,
const double Sza);
133 virtual const double kernel_value(
const int Spec_index,
const double Sza,
const double Vza,
const double Azm);
134 virtual const std::string
breon_type()
const {
return "Soil"; }
141 const blitz::Array<bool, 1>& Flag,
143 const std::vector<std::string>& Desc_band_names) :
144 GroundBrdf(Spec_coeffs, Flag, Ref_points, Desc_band_names) {}
virtual ArrayAd< double, 1 > surface_parameter(const double wn, const int spec_index) const
Surface parmeters.
virtual const std::string breon_type() const
String describing which type of Breon surface type, also makes this class abstract.
virtual const AutoDerivative< double > anisotropy_parameter(const int spec_index) const
virtual const std::string breon_type() const =0
String describing which type of Breon surface type, also makes this class abstract.
virtual std::string sub_state_identifier() const
Return a string to identify this part of the state, this name should be all lower case and seperate p...
virtual const AutoDerivative< double > breon_factor(const int spec_index) const
virtual const AutoDerivative< double > weight_slope(const int spec_index) const
virtual const std::string breon_type() const
String describing which type of Breon surface type, also makes this class abstract.
virtual const double refractive_index(const int Spec_idx) const
Returns hard coded value of 1.5 since that is the value hardcoded into LIDORT.
virtual const AutoDerivative< double > hotspot_parameter(const int spec_index) const
virtual std::string desc() const
blitz::Array< double, 1 > kernel_value_params(const int Spec_index)
GroundBrdf(const blitz::Array< double, 2 > &Coeffs, const blitz::Array< bool, 2 > &Flag, const ArrayWithUnit< double, 1 > &Ref_points, const std::vector< std::string > &Desc_band_names)
Constructor that defines coefficients in a 2d array: Num_spectrometer * NUM_COEFF Each row has the NU...
virtual const AutoDerivative< double > weight_intercept(const int spec_index) const
const blitz::Array< bool, 1 > & used_flag_value() const
virtual boost::shared_ptr< Ground > clone() const =0
Clone a Ground object.
virtual const int number_spectrometer() const
ArrayWithUnit< double, 1 > reference_points
std::vector< std::string > desc_band_names
virtual std::string state_vector_name_i(int i) const
Return state vector name for ith entry in coeff.
virtual boost::shared_ptr< Ground > clone() const
Clone a Ground object.
virtual const DoubleWithUnit reference_point(const int spec_index) const
Center wavelength that spectrally dependent parameter is referenced to.
virtual boost::shared_ptr< Ground > clone() const
Clone a Ground object.
We frequently have a double with units associated with it.
GroundBrdfSoil(const blitz::Array< double, 2 > &Coeffs, const blitz::Array< bool, 2 > &Flag, const ArrayWithUnit< double, 1 > &Ref_points, const std::vector< std::string > &Desc_band_names)
virtual const AutoDerivative< double > weight(const double wn, const int spec_index) const
virtual void print(std::ostream &Os) const
const ArrayAd< double, 1 > & coefficient() const
It is common to have a class that is an Observable with a set of coefficients, a subset of which are ...
Contains classes to abstract away details in various Spurr Radiative Transfer software.
GroundBrdfVeg(const blitz::Array< double, 2 > &Coeffs, const blitz::Array< bool, 2 > &Flag, const ArrayWithUnit< double, 1 > &Ref_points, const std::vector< std::string > &Desc_band_names)
blitz::Array< double, 1 > black_sky_params(const int Spec_index)
const blitz::Array< double, 2 > brdf_covariance(const int spec_index) const
virtual const double black_sky_albedo(const int Spec_index, const double Sza)=0
virtual const double kernel_value(const int Spec_index, const double Sza, const double Vza, const double Azm)=0
virtual const AutoDerivative< double > rahman_factor(const int spec_index) const
virtual const AutoDerivative< double > asymmetry_parameter(const int spec_index) const
This class implements the Breon + Rahman ground type.
double value(const FullPhysics::AutoDerivative< double > &Ad)