ReFRACtor
ground_lambertian.h
Go to the documentation of this file.
1 #ifndef GROUND_LAMBERTIAN_H
2 #define GROUND_LAMBERTIAN_H
3 
4 #include "ground.h"
5 #include "array_with_unit.h"
7 
8 namespace FullPhysics {
9 /****************************************************************/
12 class GroundLambertian: public SubStateVectorArray<Ground> {
13 
14 public:
15 
16  GroundLambertian(const blitz::Array<double, 2>& Spec_coeffs,
17  const blitz::Array<bool,2>& Flag,
18  const ArrayWithUnit<double, 1>& Ref_points,
19  const std::vector<std::string>& Desc_band_names);
20 
21  virtual ArrayAd<double, 1> surface_parameter(const double wn, const int spec_index) const;
22 
23  virtual const AutoDerivative<double> albedo(const DoubleWithUnit wave_point, const int spec_index) const;
24 
25  virtual const int number_spectrometer() const { return desc_band_names.size(); }
26  virtual const int number_params() const { return coefficient().value().rows() / number_spectrometer(); }
27 
28  virtual const ArrayAd<double, 1> albedo_coefficients(const int spec_index) const;
29  virtual const blitz::Array<double, 2> albedo_covariance(const int spec_index) const;
30 
32  virtual const DoubleWithUnit reference_point(const int spec_index) const { return reference_points(spec_index); }
33 
34  virtual boost::shared_ptr<Ground> clone() const;
35 
36  virtual std::string sub_state_identifier() const { return "ground/lambertian"; }
37 
38  virtual std::string state_vector_name_i(int i) const;
39 
40  virtual void print(std::ostream& Os) const;
41 
42  virtual std::string desc() const { return "GroundLambertian"; }
43 
44 protected:
45 
46  GroundLambertian(const blitz::Array<double, 1>& Spec_coeffs,
47  const blitz::Array<bool, 1>& Flag,
48  const ArrayWithUnit<double, 1>& Ref_points,
49  const std::vector<std::string>& Desc_band_names);
50 
51 private:
52 
53  ArrayWithUnit<double, 1> reference_points;
54  std::vector<std::string> desc_band_names;
55 
56 };
57 }
58 #endif
virtual const ArrayAd< double, 1 > albedo_coefficients(const int spec_index) const
virtual const int number_params() const
virtual const AutoDerivative< double > albedo(const DoubleWithUnit wave_point, const int spec_index) const
virtual void print(std::ostream &Os) const
This class implements a Lambertian albedo as a ground type.
virtual std::string state_vector_name_i(int i) const
Return state vector name for ith entry in coeff.
const blitz::Array< T, D > & value() const
Definition: array_ad.h:306
virtual const blitz::Array< double, 2 > albedo_covariance(const int spec_index) const
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 int number_spectrometer() const
We frequently have a double with units associated with it.
GroundLambertian(const blitz::Array< double, 2 > &Spec_coeffs, const blitz::Array< bool, 2 > &Flag, const ArrayWithUnit< double, 1 > &Ref_points, const std::vector< std::string > &Desc_band_names)
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.
Definition: doxygen_python.h:1
virtual ArrayAd< double, 1 > surface_parameter(const double wn, const int spec_index) const
Surface parmeters.
virtual std::string desc() const
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.

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:08