1 #ifndef STANDARD_FORWARD_MODEL_H 2 #define STANDARD_FORWARD_MODEL_H 42 return swin->number_spectrometer();
48 throw Exception (
"setup_grid needs to be called before calling spectral_domain");
51 return g->low_resolution_grid(channel_index);
56 return inst->pixel_spectral_domain(0).type_preference();
59 virtual Spectrum radiance(
int channel_index,
bool Skip_jacobian =
false)
const;
61 virtual void print(std::ostream& Os)
const;
64 const std::vector<std::vector<boost::shared_ptr<SpectrumEffect> > >&
spectrum_effect()
const 100 return spectrum_sampling_;
105 spectrum_sampling_ = V;
129 std::vector<std::vector<boost::shared_ptr<SpectrumEffect> > > spec_effect;
virtual void setup_grid()
This notifies the forward model that it should setup the grid.
virtual int num_channels() const
The number of spectral channels associated with forward model.
void radiative_transfer(const boost::shared_ptr< RadiativeTransfer > &V)
virtual Spectrum radiance(int channel_index, bool Skip_jacobian=false) const
Spectrum for the given spectral band.
const boost::shared_ptr< SpectralWindow > & spectral_window() const
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
This is the Forward Model spectral grid.
void add_observer_do(Observer< boost::shared_ptr< NamedSpectrum > > &Obs, boost::shared_ptr< NamedSpectrum > &t)
Add an observer.
virtual SpectralDomain::TypePreference spectral_domain_type_preference() const
Type preference for spectral domain.
This is the base of the exception hierarchy for Full Physics code.
virtual void print(std::ostream &Os) const
const boost::shared_ptr< RadiativeTransfer > & radiative_transfer() const
void spectrum_sampling(const boost::shared_ptr< SpectrumSampling > &V)
const boost::shared_ptr< SpectrumSampling > & spectrum_sampling() const
virtual void remove_observer(Observer< boost::shared_ptr< NamedSpectrum > > &Obs)
Remove an observer.
void remove_observer_do(Observer< boost::shared_ptr< NamedSpectrum > > &Obs, boost::shared_ptr< NamedSpectrum > &t)
Remove an observer.
virtual ~StandardForwardModel()
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.
This is the forward model used form GOSAT/OCO.
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
Mixin for a class that allows other classes to observe it state.
void spectral_window(const boost::shared_ptr< SpectralWindow > &V)
The forward model represents the encapsulation of modeling spectra from an atmospheric state then app...
virtual void add_observer(Observer< boost::shared_ptr< NamedSpectrum > > &Obs)
Required observable functions.
const std::vector< std::vector< boost::shared_ptr< SpectrumEffect > > > & spectrum_effect() const
virtual const SpectralDomain spectral_domain(int channel_index) const
Spectral domain for the given spectral band.
const boost::shared_ptr< Instrument > & instrument() const
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.
void notify_spectrum_update(const Spectrum &updated_spec, const std::string &spec_name, int channel_index) const
void instrument(const boost::shared_ptr< Instrument > &V)
const boost::shared_ptr< ForwardModelSpectralGrid > & spectral_grid() const
Simple Mixin to be and Observer of another object of class T.