/** \file Atmospheric profile using best available data source \author Martin Will \version $Id$ \date 17 Dec 2010 */ #ifndef _atm_SuperProfileModel_h_ #define _atm_SuperProfileModel_h_ static const char CVSId_atm_SuperProfileModel[] = "$Id$"; #include namespace atm{class GDASProfileModel;}; namespace atm{class MonthlyAvgDBProfileModel;}; namespace atm { /** \class SuperProfileModel SuperProfileModel.h "atm/SuperProfileModel.h" \brief Atmospheric profile using best available data source. This model attempts to find data, in order, by checking the following sources: - GDAS Profile Model - Monthly Average DB Profile Model \author Martin Will \date 17 Dec 2010 \ingroup atm_models */ class SuperProfileModel :public atm::VProfileModel { public: SuperProfileModel(); virtual ~SuperProfileModel(); 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; // This model should, by design, always return a result bool HasData() const {return true;}; private: GDASProfileModel* fGDASProfileModel; MonthlyAvgDBProfileModel* fMonthlyAvgDBProfileModel; REGISTER_MODEL(atm::VProfileModel, "Super", SuperProfileModel); }; } // atm #endif // _atm_SuperProfileModel_h_