18 #ifndef SUNTAJECTORY_H
19 #define SUNTAJECTORY_H
34 SunTrajectory(
const double& i_latitude,
const double& i_longitude);
43 virtual void setDate(
const double& i_julian,
const double& i_TZ=0.)=0;
44 virtual void setLatLon(
const double& i_latitude,
const double& i_longitude)=0;
45 virtual void setAll(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.)=0;
46 virtual void reset()=0;
52 virtual void getDaylight(
double& sunrise,
double& sunset,
double& daylight)=0;
62 double getRadiationOnSlope(
const double& slope_azi,
const double& slope_elev,
const double& radiation)
const;
63 double getHorizontalOnSlope(
const double& slope_azi,
const double& slope_elev,
const double& H_radiation,
const double& elev_threshold=5.)
const;
67 const double& slope_azi,
const double& slope_elev);
69 const double& slope_azi,
const double& slope_elev,
const double& H_radiation,
const double& elev_threshold=5.);
71 const double& slope_azi,
const double& slope_elev,
const double& S_radiation);
107 SunMeeus(
const double& i_latitude,
const double& i_longitude);
108 SunMeeus(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.);
110 void setDate(
const double& i_julian,
const double& i_TZ=0.);
111 void setLatLon(
const double& i_latitude,
const double& i_longitude);
112 void setAll(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.);
117 void getDaylight(
double& sunrise,
double& sunset,
double& daylight);
125 double SolarElevationAtm;
double longitude
Definition: Suntrajectory.h:81
double SunRightAscension
Definition: Suntrajectory.h:85
static double projectHorizontalToBeam(const double &sun_elev, const double &H_radiation)
Definition: Suntrajectory.cc:159
virtual void getHorizontalCoordinates(double &azimuth, double &elevation) const =0
virtual void setLatLon(const double &i_latitude, const double &i_longitude)=0
void getEquatorialSunVector(double &sunx, double &suny, double &sunz)
Definition: Suntrajectory.cc:327
double SolarElevation
Definition: Suntrajectory.h:82
double SunlightDuration
Definition: Suntrajectory.h:84
double SolarAzimuthAngle
Definition: Suntrajectory.h:82
SunMeeus()
Definition: Suntrajectory.cc:237
virtual double getSolarTime() const
Return the current solar time. Since the Sun reaches its zenith at a time different than the local no...
Definition: Suntrajectory.cc:182
double getAngleOfIncidence(const double &slope_azi, const double &slope_elev) const
radiation projection methods
Definition: Suntrajectory.cc:53
void setLatLon(const double &i_latitude, const double &i_longitude)
Definition: Suntrajectory.cc:268
double getRadiationOnSlope(const double &slope_azi, const double &slope_elev, const double &radiation) const
Definition: Suntrajectory.cc:83
double SunSet
Definition: Suntrajectory.h:84
double HourAngle
Definition: Suntrajectory.h:86
double SunDeclination
Definition: Suntrajectory.h:85
double SunRise
Definition: Suntrajectory.h:84
virtual ~SunTrajectory()
Definition: Suntrajectory.h:36
static const double nodata
Definition: Suntrajectory.h:87
virtual void getEquatorialCoordinates(double &right_ascension, double &declination)=0
(http://en.wikipedia.org/wiki/Equatorial_coordinate_system)
double SolarNoon
Definition: Suntrajectory.h:84
double TZ
Definition: Suntrajectory.h:80
void reset()
Definition: Suntrajectory.cc:287
double latitude
Definition: Suntrajectory.h:81
void getHorizontalCoordinates(double &azimuth, double &elevation) const
Definition: Suntrajectory.cc:293
virtual void getDaylight(double &sunrise, double &sunset, double &daylight)=0
const std::string toString() const
Definition: Suntrajectory.cc:210
double getHorizontalOnSlope(const double &slope_azi, const double &slope_elev, const double &H_radiation, const double &elev_threshold=5.) const
Project a given horizontal radiation to a given slope. The sun position is the current one...
Definition: Suntrajectory.cc:107
void getDaylight(double &sunrise, double &sunset, double &daylight)
Definition: Suntrajectory.cc:308
double julian_gmt
Definition: Suntrajectory.h:80
void setAll(const double &i_latitude, const double &i_longitude, const double &i_julian, const double &i_TZ=0.)
Definition: Suntrajectory.cc:278
A class to calculate the Sun's position This class is purely virtual.
Definition: Suntrajectory.h:31
~SunMeeus()
Definition: Suntrajectory.h:106
virtual double getSolarTimeOfDay() const
Return the current solar time of day. Since the Sun reaches its zenith at a time different than the l...
Definition: Suntrajectory.cc:197
void getEquatorialCoordinates(double &right_ascension, double &declination)
(http://en.wikipedia.org/wiki/Equatorial_coordinate_system)
Definition: Suntrajectory.cc:318
virtual void setDate(const double &i_julian, const double &i_TZ=0.)=0
Set the date and time if no timezone is specified, GMT is assumed.
static double projectSlopeToHorizontal(const double &sun_azi, const double &sun_elev, const double &slope_azi, const double &slope_elev, const double &S_radiation)
Definition: Suntrajectory.cc:142
double eccentricityEarth
>this is the TRUE solar elevation, not the apparent one
Definition: Suntrajectory.h:83
double getRadiationOnHorizontal(const double &radiation) const
Definition: Suntrajectory.cc:72
void setDate(const double &i_julian, const double &i_TZ=0.)
Set the date and time if no timezone is specified, GMT is assumed.
Definition: Suntrajectory.cc:258
SunTrajectory()
Definition: Suntrajectory.cc:32
virtual void setAll(const double &i_latitude, const double &i_longitude, const double &i_julian, const double &i_TZ=0.)=0
static double projectHorizontalToSlope(const double &sun_azi, const double &sun_elev, const double &slope_azi, const double &slope_elev, const double &H_radiation, const double &elev_threshold=5.)
Definition: Suntrajectory.cc:123
Calculate the Sun's position based on the Meeus algorithm. See J. Meeus, "Astronomical Algorithms"...
Definition: Suntrajectory.h:103