/** \file Declaration of GDASProfileModel \author M. Will \version $Id$ \date 17 December 2010 */ #ifndef _atm_GDASProfileModel_h_ #define _atm_GDASProfileModel_h_ static const char CVSId_atm_GDASProfileModel[] = "$Id$"; #include #include namespace utl { class TimeStamp; } namespace atm { class ProfileResult; /** \class GDASProfileModel GDASProfileModel.h "atm/GDASProfileModel.h" \brief Molecular profile taken from GDAS database. This model provides access to molecular profiles taken from GDAS. \author M. Will \date 9 August 2010 \ingroup atm_models */ class GDASProfileModel : public atm::VProfileModel { public: GDASProfileModel(); void Init(); /// Table of depth as a function of height const ProfileResult& EvaluateDepthVsHeight() const; /// Table of height as a function of depth const atm::ProfileResult& EvaluateHeightVsDepth() const; /// Table of air pressure as a function of height const atm::ProfileResult& EvaluatePressureVsHeight() const; /// Table of vapor pressure as a function of height const ProfileResult& EvaluateVaporPressureVsHeight() const; /// Table of temperature as a function of height const atm::ProfileResult& EvaluateTemperatureVsHeight() const; /// Table of density as a function of height const atm::ProfileResult& EvaluateDensityVsHeight() const; /// Table of refraction index as a function of height const atm::ProfileResult& EvaluateRefractionIndexVsHeight() const; // returns true if some data has been cached bool HasData() const; private: // returns true if some data has been cached bool CheckForUpdates() const; mutable utl::TimeStamp fCurrentTime; mutable bool fDbIsEmptyNow; REGISTER_MODEL(atm::VProfileModel, "GDAS", GDASProfileModel); }; } // #endif // _atm_GDASProfileModel_h_