26 return Lambertian->albedo_coefficients(spec_idx).value()(0);
31 return Lambertian->albedo_coefficients(spec_idx).value()(1);
36 Array<double, 2> cov = Lambertian->albedo_covariance(spec_idx);
37 if(cov.rows() > 0 and cov.cols() > 0) {
38 return (cov(0, 0) < 0 ? 0.0 : sqrt(cov(0, 0)));
46 Array<double, 2> cov = Lambertian->albedo_covariance(spec_idx);
47 if (cov.rows() > 1 and cov.cols() > 1) {
48 return (cov(1, 1) < 0 ? 0.0 : sqrt(cov(1, 1)));
59 for(
int spec_idx = 0; spec_idx < lambertian->number_spectrometer(); spec_idx++) {
60 std::string band_name = hdf_band_names[spec_idx];
62 { boost::function<double ()> f = boost::bind(&
albedo, lamb_freeze, spec_idx);
63 out->register_data_source(
"/RetrievalResults/albedo_apriori_" + band_name +
"_fph", f); }
65 { boost::function<double ()> f = boost::bind(&
albedo_slope, lamb_freeze, spec_idx);
66 out->register_data_source(
"/RetrievalResults/albedo_slope_apriori_" + band_name, f); }
72 for(
int spec_idx = 0; spec_idx < lambertian->number_spectrometer(); spec_idx++) {
73 std::string band_name = hdf_band_names[spec_idx];
75 { boost::function<double ()> f = boost::bind(&
albedo, lambertian, spec_idx);
76 out->register_data_source(
"/RetrievalResults/albedo_" + band_name +
"_fph", f); }
78 { boost::function<double ()> f = boost::bind(&
albedo_slope, lambertian, spec_idx);
79 out->register_data_source(
"/RetrievalResults/albedo_slope_" + band_name, f); }
81 { boost::function<double ()> f = boost::bind(&
albedo_uncert, lambertian, spec_idx);
82 out->register_data_source(
"/RetrievalResults/albedo_uncert_" + band_name +
"_fph", f); }
85 out->register_data_source(
"/RetrievalResults/albedo_slope_uncert_" + band_name, f); }
88 out->register_data_source(
"/RetrievalResults/surface_type", surface_type.c_str());
double albedo(boost::shared_ptr< GroundLambertian > &Lambertian, int spec_idx)
This class implements a Lambertian albedo as a ground type.
#define REGISTER_LUA_DERIVED_CLASS(X, Y)
double albedo_slope(boost::shared_ptr< GroundLambertian > &Lambertian, int spec_idx)
This registers the portions of the GroundLambertian class that should be written as output...
double albedo_uncert(boost::shared_ptr< GroundLambertian > &Lambertian, int spec_idx)
Apply value function to a blitz array.
double albedo_slope_uncert(boost::shared_ptr< GroundLambertian > &Lambertian, int spec_idx)
virtual void register_output_apriori(const boost::shared_ptr< Output > &out) const
Register apriori portions of class.
As described in the Output class, we have a decentralized model of producing output for L2 Full Physi...
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define REGISTER_LUA_END()
def(luabind::constructor< int >()) .def("rows"
virtual void register_output(const boost::shared_ptr< Output > &out) const
Register portions of class that will be written to output.