19 #ifndef SUNTAJECTORY_H
20 #define SUNTAJECTORY_H
35 SunTrajectory(
const double& i_latitude,
const double& i_longitude);
44 virtual void setDate(
const double& i_julian,
const double& i_TZ=0.)=0;
45 virtual void setLatLon(
const double& i_latitude,
const double& i_longitude)=0;
46 virtual void setAll(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.)=0;
54 virtual void getDaylight(
double& sunrise,
double& sunset,
double& daylight)=0;
57 static void getEaster(
const int& year,
int &month,
int &day);
65 double getRadiationOnSlope(
const double& slope_azi,
const double& slope_elev,
const double& radiation)
const;
66 double getHorizontalOnSlope(
const double& slope_azi,
const double& slope_elev,
const double& H_radiation,
const double& elev_threshold=5.)
const;
70 const double& slope_azi,
const double& slope_elev);
72 const double& slope_azi,
const double& slope_elev,
const double& H_radiation,
const double& elev_threshold=5.);
74 const double& slope_azi,
const double& slope_elev,
const double& S_radiation);
110 SunMeeus(
const double& i_latitude,
const double& i_longitude);
111 SunMeeus(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.);
113 void setDate(
const double& i_julian,
const double& i_TZ=0.);
114 void setLatLon(
const double& i_latitude,
const double& i_longitude);
115 void setAll(
const double& i_latitude,
const double& i_longitude,
const double& i_julian,
const double& i_TZ=0.);
121 void getDaylight(
double& sunrise,
double& sunset,
double& MeeusDaylight);
131 double SolarElevationAtm;
Calculate the Sun's position based on the Meeus algorithm. See J. Meeus, "Astronomical Algorithms",...
Definition: Suntrajectory.h:106
SunMeeus()
Definition: Suntrajectory.cc:269
~SunMeeus()
Definition: Suntrajectory.h:109
double getSolarElevation() const
Definition: Suntrajectory.cc:325
void setAll(const double &i_latitude, const double &i_longitude, const double &i_julian, const double &i_TZ=0.)
Definition: Suntrajectory.cc:310
void setLatLon(const double &i_latitude, const double &i_longitude)
Definition: Suntrajectory.cc:300
void getDaylight(double &sunrise, double &sunset, double &MeeusDaylight)
Definition: Suntrajectory.cc:354
static double SideralToLocal(const double &JD)
Definition: Suntrajectory.cc:395
void getHorizontalCoordinates(double &azimuth, double &elevation) const
Definition: Suntrajectory.cc:336
void getEquatorialSunVector(double &sunx, double &suny, double &sunz)
Definition: Suntrajectory.cc:379
void getEquatorialCoordinates(double &right_ascension, double &declination)
(http://en.wikipedia.org/wiki/Equatorial_coordinate_system)
Definition: Suntrajectory.cc:367
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:290
void reset()
Definition: Suntrajectory.cc:319
A class to calculate the Sun's position This class is purely virtual.
Definition: Suntrajectory.h:32
static const double nodata
Definition: Suntrajectory.h:90
double longitude
Definition: Suntrajectory.h:84
SunTrajectory()
Definition: Suntrajectory.cc:33
virtual void getDaylight(double &sunrise, double &sunset, double &daylight)=0
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:183
double TZ
Definition: Suntrajectory.h:83
double SolarElevation
Definition: Suntrajectory.h:85
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:198
double SunRise
Definition: Suntrajectory.h:87
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.
virtual void setLatLon(const double &i_latitude, const double &i_longitude)=0
double SunlightDuration
Definition: Suntrajectory.h:87
static void getEaster(const int &year, int &month, int &day)
Return the date of easter for the given year.
Definition: Suntrajectory.cc:221
double eccentricityEarth
>this is the TRUE solar elevation, not the apparent one
Definition: Suntrajectory.h:86
virtual void getEquatorialCoordinates(double &right_ascension, double &declination)=0
(http://en.wikipedia.org/wiki/Equatorial_coordinate_system)
double latitude
Definition: Suntrajectory.h:84
double SolarNoon
Definition: Suntrajectory.h:87
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:108
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:143
double SolarAzimuthAngle
Definition: Suntrajectory.h:85
double getRadiationOnSlope(const double &slope_azi, const double &slope_elev, const double &radiation) const
Definition: Suntrajectory.cc:84
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:124
double SunSet
Definition: Suntrajectory.h:87
virtual ~SunTrajectory()
Definition: Suntrajectory.h:37
static double projectHorizontalToBeam(const double &sun_elev, const double &H_radiation)
Definition: Suntrajectory.cc:160
double HourAngle
Definition: Suntrajectory.h:89
virtual void setAll(const double &i_latitude, const double &i_longitude, const double &i_julian, const double &i_TZ=0.)=0
const std::string toString() const
Definition: Suntrajectory.cc:242
double SunDeclination
Definition: Suntrajectory.h:88
double julian_gmt
Definition: Suntrajectory.h:83
virtual void getHorizontalCoordinates(double &azimuth, double &elevation, double &eccentricity) const =0
virtual void getHorizontalCoordinates(double &azimuth, double &elevation) const =0
virtual double getSolarElevation() const =0
double getRadiationOnHorizontal(const double &radiation) const
Definition: Suntrajectory.cc:73
double SunRightAscension
Definition: Suntrajectory.h:88
double getAngleOfIncidence(const double &slope_azi, const double &slope_elev) const
radiation projection methods
Definition: Suntrajectory.cc:54