/** \file Declaration of class VProfileModel \author Luis Prado Jr \version $Id: VProfileModel.h 20705 2012-03-28 16:20:59Z javierg $ \date 21 Sep 2003 */ #ifndef _atm_VProfileModel_h_ #define _atm_VProfileModel_h_ static const char CVSId_atm_VProfileModel[] = "$Id: VProfileModel.h 20705 2012-03-28 16:20:59Z javierg $"; #include #include namespace atm { class ProfileResult; /** \class VProfileModel \brief Base class for a Profile Model \author Luis Prado Jr \date 21 Sep 2003 \ingroup atm_models */ class VProfileModel : public atm::VModel { public: VProfileModel(); virtual ~VProfileModel(); /// Return a table of vertical column depth vs. altitude virtual const ProfileResult& EvaluateDepthVsHeight() const = 0; /// Return a table of altitude vs atmospheric column depth virtual const ProfileResult& EvaluateHeightVsDepth() const = 0; /// Return a table of air pressure vs. altitude virtual const ProfileResult& EvaluatePressureVsHeight() const = 0; /// Return a table of H2O vapor pressure vs. altitude virtual const ProfileResult& EvaluateVaporPressureVsHeight() const = 0; /// Return a table of air temperature vs. altitude virtual const ProfileResult& EvaluateTemperatureVsHeight() const = 0; /// Return a table of air density vs. altitude virtual const ProfileResult& EvaluateDensityVsHeight() const = 0; /// Return a table of wavelength-independent refractive index vs. altitude virtual const ProfileResult& EvaluateRefractionIndexVsHeight() const; /// Return a table of wavelength-independent refractive index vs. altitude virtual const ProfileResult& EvaluateRefractionIndexVsHeight(const double wl) const; /// Evaluate light signal time-of-flight between two altitudes virtual double GetVerticalTimeOfFlight(const double height1, const double height2) const; protected: /// Clean up refraction indices. Derived modules decide when to do this void CleanRIVsWavelength() const; /// Use the U.S. Standard Atmosphere of 1976 to extend the altitude /// profiles to 100 km (deprecated, pending release of the new molecular DB) void ExtendProfilesTo100km() const; ProfileResult* fTabLogDepthVsHeight; ProfileResult* fTabHeightVsLogDepth; ProfileResult* fTabLogPressureVsHeight; ProfileResult* fTabLogVaporPressureVsHeight; ProfileResult* fTabTemperatureVsHeight; ProfileResult* fTabLogDensityVsHeight; ProfileResult* fTabRIVsHeight; typedef std::map AltWLFunction; mutable AltWLFunction fTabRIVsHeightAndWaveLength; }; typedef utl::ObjectFactory VProfileModelFactory; } // atm #endif // _atm_VProfileModel_h_ // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. -k" // End: