25 e <<
"SolarModel::apply_solar_model expects the input spectrum to be in units of\n" 26 <<
"inverse solid angle (e.g., sr^-1). Instead, it was passed a spectrum with\n" 33 res.value() *= s.spectral_range().data();
34 for(
int i = 0; i < res.number_variable(); ++i)
35 res.
jacobian()(blitz::Range::all(), i) *= s.spectral_range().data();
const Unit s("s", 1.0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
virtual Spectrum solar_spectrum(const SpectralDomain &Spec_domain) const =0
Calculate solar spectrum.
This applies a solar model to reflectance to model the incoming solar irradiance. ...
This is the base of the exception hierarchy for Full Physics code.
const SpectralRange & spectral_range() const
Spectral range (e.g, radiance values)
#define REGISTER_LUA_DERIVED_CLASS(X, Y)
const blitz::Array< T, D+1 > jacobian() const
This class models models any effects that need to be applied to high resolution spectra after the rad...
const Unit & units() const
Units of data.
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
ArrayAd< T, D > copy() const
const Unit inv_sr("sr^-1", pow(sr, -1))
We have a number of different spectrums that appear in different parts of the code.
const ArrayAd< double, 1 > & data_ad() const
Underlying data, possibly with a Jacobian.
bool is_commensurate(const Unit &Units) const
Test if this set of units is commensurate with another set.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define REGISTER_LUA_END()
const SpectralDomain & spectral_domain() const
Spectral domain (i.e., wavenumber or wavelength).
virtual Spectrum apply_solar_model(const Spectrum &Spec) const
Apply the solar model.