9 .def(luabind::constructor <
29 : spec_effect(Spectrum_effect), inst(Inst), swin(Spectral_window), rt(Rt), spectrum_sampling_(Spectrum_sampling)
31 if(spec_effect.size() == 0) {
36 throw Exception(
"Spectrum effect needs to be the same size as the number of spectrometers");
42 (
int channel_index,
bool Skip_jacobian)
const 45 throw Exception (
"setup_grid needs to be called before calling radiance");
50 rt->reflectance(g->high_resolution_grid(channel_index), channel_index,
67 throw Exception (
"setup_grid needs to be called before calling apply_spectrum_corrections");
71 g->interpolate_spectrum(highres_spec, channel_index);
75 i->apply_effect(highres_spec_intepolated, *g);
79 return inst->apply_instrument_model(highres_spec_intepolated,
80 g->pixel_list(channel_index), channel_index);
85 if (
olist.size() > 0) {
93 Os <<
"StandardForwardModel:\n";
94 Os <<
" Spectral Window:\n";
95 opad << *swin <<
"\n";
97 Os <<
" Spectrum Sampling:\n";
98 opad << *spectrum_sampling_ <<
"\n";
100 Os <<
" Instrument:\n";
101 opad << *inst <<
"\n";
103 Os <<
" Radiative Transfer:\n";
108 Os <<
" Spectrum Effect[" << i <<
"]:\n";
#define range_check(V, Min, Max)
Range check.
virtual int num_channels() const
The number of spectral channels associated with forward model.
virtual Spectrum radiance(int channel_index, bool Skip_jacobian=false) const
Spectrum for the given spectral band.
This is a filtering stream that adds a pad to the front of every line written out.
std::list< boost::weak_ptr< Observer< boost::shared_ptr< NamedSpectrum > > > > olist
This is the base of the exception hierarchy for Full Physics code.
virtual void print(std::ostream &Os) const
#define REGISTER_LUA_DERIVED_CLASS(X, Y)
Adds name and spec index fields to a Spectrum.
void notify_update_do(const boost::shared_ptr< NamedSpectrum > &Self)
Function to call to notify Observers of a state change.
StandardForwardModel(const boost::shared_ptr< Instrument > &Inst, const boost::shared_ptr< SpectralWindow > &Spectral_window, const boost::shared_ptr< RadiativeTransfer > &Rt, const boost::shared_ptr< SpectrumSampling > &Spectrum_sampling, const std::vector< std::vector< boost::shared_ptr< SpectrumEffect > > > &Spectrum_effect=std::vector< std::vector< boost::shared_ptr< SpectrumEffect > > >())
Constructor.
Apply value function to a blitz array.
This is the forward model used form GOSAT/OCO.
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
The forward model represents the encapsulation of modeling spectra from an atmospheric state then app...
Spectrum apply_spectrum_corrections(const Spectrum &highres_spec, int channel_index) const
Applies corrections and modeling to modeled spectrum:
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define REGISTER_LUA_END()
void notify_spectrum_update(const Spectrum &updated_spec, const std::string &spec_name, int channel_index) const
const boost::shared_ptr< ForwardModelSpectralGrid > & spectral_grid() const