| Title: | Mars Solar Radiation |
|---|---|
| Description: | A set of functions to calculate solar irradiance and insolation on Mars horizontal and inclined surfaces. Based on NASA Technical Memoranda 102299, 103623, 105216, 106321, and 106700, i.e. the canonical Mars solar radiation papers. |
| Authors: | Georges Labrèche [aut, cre] (ORCID: <https://orcid.org/0000-0002-2104-8789>) |
| Maintainer: | Georges Labrèche <[email protected]> |
| License: | GPL-3 |
| Version: | 1.0.1 |
| Built: | 2026-06-09 05:56:57 UTC |
| Source: | https://github.com/georgeslabreche/marsrad |
A set of functions to calculate solar irradiance and insolation on Mars horizontal and inclined surfaces. Based on NASA Technical Memoranda 102299, 103623, 105216, 106321, and 106700, i.e. the canonical Mars solar radiation papers.
The package provides three types of solar radiation calculations:
Instantaneous irradiance (G_* functions) — Power per unit area at a specific moment
Daily insolation (H_* functions) — Energy per unit area over one Martian sol
Period insolation (I_* functions) — Energy per unit area over multiple sols
All calculations support both horizontal and inclined surfaces. The package includes functions for optimal tilt angle calculation, sunrise/sunset times, and atmospheric optical depth modeling.
1.0.0
GPL-3
R (>= 2.10)
If you use this package in your research or publication, please cite the paper it was developed for:
Labrèche, G., & Cordes, F. (2020). Using a Rover's Active Suspension System as a 2-Axis Solar Tracker Mechanism. 15th International Symposium on Artificial Intelligence, Robotics and Automation in Space (i-SAIRAS '20). https://www.hou.usra.edu/meetings/isairas2020fullpapers/pdf/5035.pdf
Maintainer: Georges Labrèche [email protected] (ORCID)
Appelbaum, J., & Flood, D. J. (1989). Solar Radiation on Mars. NASA Technical Memorandum 102299. https://ntrs.nasa.gov/citations/19890018252
Appelbaum, J., & Flood, D. J. (1990). Solar radiation on Mars: Update 1990. NASA Technical Memorandum 103623. https://ntrs.nasa.gov/citations/19910005804
Appelbaum, J., & Flood, D. J. (1991). Solar radiation on Mars: Update 1991. NASA Technical Memorandum 105216. https://ntrs.nasa.gov/citations/19910023732
Appelbaum, J., Sherman, I., & Landis, G. A. (1993). Solar radiation on Mars: Stationary photovoltaic array. NASA Technical Memorandum 106321. https://ntrs.nasa.gov/citations/19940010257
Appelbaum, J., Flood, D. J., & Norambuena, M. (1994). Solar radiation on Mars: Tracking photovoltaic array. NASA Technical Memorandum 106700. https://ntrs.nasa.gov/citations/19950004977
Labrèche, G. (2020). Exploiting the SherpaTT Rover Active Suspension System to Enable Optimal Solar Array Inclination and Orientation for Long Traverses in a Martian Environment. Master's Thesis, Luleå University of Technology. https://www.diva-portal.org/smash/record.jsf?pid=diva2:1413245
# Calculate horizontal irradiance at Viking 1 landing site on Ls 90 (northern summer solstice) G_h(Ls = 90, phi = 22.48, longitude = -48, Ts = 12, tau = 0.5) # Find optimal panel tilt angle for the same location and season optimal_angle(Ls = 90, phi = 22.48) # Calculate daily insolation on a horizontal surface H_h(Ls = 90, phi = 22.48, longitude = -48, tau = 0.5) # Calculate insolation over a 24-hour period on an inclined surface I_i(Ls = 90, phi = 22.48, longitude = -48, tau = 0.5, Ts_start = 0, Ts_end = 24, beta = 25, gamma_c = 0)# Calculate horizontal irradiance at Viking 1 landing site on Ls 90 (northern summer solstice) G_h(Ls = 90, phi = 22.48, longitude = -48, Ts = 12, tau = 0.5) # Find optimal panel tilt angle for the same location and season optimal_angle(Ls = 90, phi = 22.48) # Calculate daily insolation on a horizontal surface H_h(Ls = 90, phi = 22.48, longitude = -48, tau = 0.5) # Calculate insolation over a 24-hour period on an inclined surface I_i(Ls = 90, phi = 22.48, longitude = -48, tau = 0.5, Ts_start = 0, Ts_end = 24, beta = 25, gamma_c = 0)
Calculate the albedo value given geographical location and tau factor. Source: Appelbaum, Joseph & Landis, Geoffrey & Sherman, I. (1991). Solar radiation on Mars — Update 1991.
albedo(latitude, longitude, tau, coordinates_rounding = TRUE)albedo(latitude, longitude, tau, coordinates_rounding = TRUE)
latitude |
Planetary latitude [deg], from -90° to +90° |
longitude |
Planetary longitude [deg], from -180° to 180° |
tau |
Atmospheric optical depth (dimensionless) |
coordinates_rounding |
Logical, whether to round coordinates to nearest grid point |
Surface albedo value (dimensionless, 0-1)
Calculates the angular position of the Sun at solar noon with respect to the plane of the Martian equator. For Mars: -24.936° <= delta <= 24.936°. The declination is 0° at vernal (Ls=0°) and autumnal equinoxes (Ls=180°), +24.936° at summer solstice (Ls=90°), and -24.936° at winter solstice (Ls=270°). Implements Equation 7 from Appelbaum & Flood (1990).
declination(Ls, unit = 1)declination(Ls, unit = 1)
Ls |
Areocentric longitude [deg] |
unit |
Output unit: 1 for radians, 2 for degrees (default: 1) |
Declination angle [rad] or [deg] depending on unit parameter
Calculates the normalized net solar flux on the Martian surface accounting for multiple wavelength and multiple scattering in the atmosphere. Based on Pollack's calculations presented in Appelbaum & Flood (1990). Can use polynomial expression or lookup tables.
f(z, tau, al = 0.1)f(z, tau, al = 0.1)
z |
Sun zenith angle [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, ranges from 0.1 to 0.4) |
Normalized net flux (dimensionless)
The function behavior can be configured via environment variables:
NET_FLUX_FUNCTION_TYPE: Controls which implementation to use:
"polynomial" (default) - Analytical polynomial expression with ~0.7% mean error.
Maximum error ~7% at zenith angles 80-85° and tau > 5.
"lookup_v1" - Lookup table from NASA TM-102299. Albedo fixed at 0.1.
"lookup_v2" - Lookup table from NASA TM-103623. Supports albedo 0.1 and 0.4.
Set with: Sys.setenv(NET_FLUX_FUNCTION_TYPE = "polynomial")
NET_FLUX_FUNCTION_SHOW_WARNINGS: Controls warning display (TRUE/FALSE, default: TRUE). Warnings are shown when polynomial calculations may have notable error margin (tau > 5 or z >= 80°).
Set with: Sys.setenv(NET_FLUX_FUNCTION_SHOW_WARNINGS = TRUE)
Calculates the solar irradiance reflected from the Martian surface (ground-reflected radiation) incident on an inclined surface. Accounts for the view factor of the ground from the tilted surface.
G_ali( Ls, phi, longitude, Ts, z = Z(Ls = Ls, Ts = Ts, phi = phi), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta )G_ali( Ls, phi, longitude, Ts, z = Z(Ls = Ls, Ts = Ts, phi = phi), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
Albedo-reflected irradiance on inclined surface [W/m²]
Calculates the direct beam solar irradiance on the Martian surface normal to the solar rays (i.e., perpendicular to the sun's direction). Uses Beer's law to account for atmospheric attenuation. Implements Equation 14 from Appelbaum & Flood (1990).
G_b(Ls, phi = NULL, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau)G_b(Ls, phi = NULL, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg]. Can be NULL if z is provided |
Ts |
Solar time [h]. Can be NULL if z is provided |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
Direct beam irradiance normal to sun [W/m²]
Calculates the direct beam solar irradiance incident on a horizontal surface on Mars. Accounts for the angle of incidence on the horizontal plane. Implements Equation 18 from Appelbaum & Flood (1990).
G_bh(Ls, phi, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau)G_bh(Ls, phi, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
Direct beam irradiance on horizontal surface [W/m²]
Calculates the direct beam solar irradiance incident on an inclined surface on Mars. Accounts for the sun's angle of incidence on the tilted and oriented surface. Based on Appelbaum, Flood & Norambuena (1994).
G_bi(Ls, phi, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, beta, gamma_c)G_bi(Ls, phi, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, beta, gamma_c)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Direct beam irradiance on inclined surface [W/m²]
Calculates the diffuse solar irradiance (scattered by atmospheric dust) incident on a horizontal surface on Mars. Computed as the difference between global and direct beam irradiance. Implements Equation 16 from Appelbaum & Flood (1990).
G_dh( Ls, phi, longitude, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )G_dh( Ls, phi, longitude, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
Ts |
Solar time [h]. Can be NULL for daily calculations |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Diffuse irradiance on horizontal surface [W/m²]
Calculates the diffuse solar irradiance (scattered by atmospheric dust) incident on an inclined surface on Mars. Accounts for the view factor of the sky from the tilted surface.
G_di( Ls, phi, longitude, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta )G_di( Ls, phi, longitude, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
Diffuse irradiance on inclined surface [W/m²]
Calculates the total solar irradiance (direct beam + diffuse + albedo) incident on a horizontal surface on Mars. Implements Equation 17 from Appelbaum & Flood (1990).
G_h( Ls, phi, longitude, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )G_h( Ls, phi, longitude, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Global irradiance [W/m²]
Calculates the total solar irradiance (direct beam + diffuse + albedo-reflected) incident on an inclined surface on Mars. Implements Equation 3 from Appelbaum, Flood & Norambuena (1994).
G_i( Ls, phi, longitude, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )G_i( Ls, phi, longitude, Ts, z = Z(Ls = Ls, phi = phi, Ts = Ts), tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Global irradiance on inclined surface [W/m²]
Calculates the solar beam irradiance at the top of the Martian atmosphere (before any atmospheric effects) as a function of Mars' orbital position. Accounts for Mars' elliptical orbit which causes seasonal variation in solar intensity. Implements Equation 4 from Appelbaum & Flood (1990).
G_ob(Ls)G_ob(Ls)
Ls |
Areocentric longitude [deg] |
Beam irradiance at top of atmosphere [W/m²]
Calculates the solar beam irradiance on a horizontal surface at the top of the Martian atmosphere (before atmospheric attenuation). Implements Equation 5 from Appelbaum & Flood (1990).
G_obh(Ls, phi = NULL, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts))G_obh(Ls, phi = NULL, Ts = NULL, z = Z(Ls = Ls, phi = phi, Ts = Ts))
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg]. Can be NULL if z is provided |
Ts |
Solar time [h]. Can be NULL if z is provided |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
Beam irradiance at top of atmosphere [W/m²]
Calculates the ground-reflected solar energy received over a full Martian day on an inclined surface. Obtained by integrating albedo-reflected irradiance from sunrise to sunset.
H_ali( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )H_ali( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Albedo-reflected daily insolation on inclined surface [Wh/m²-day]
Calculates the direct beam solar energy received over a full Martian day on a horizontal surface. Obtained by integrating beam irradiance from sunrise to sunset.
H_bh(Ls, phi, tau)H_bh(Ls, phi, tau)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Beam daily insolation [Wh/m²-day]
Calculates the direct beam solar energy received over a full Martian day on an inclined surface. Obtained by integrating beam irradiance from sunrise to sunset.
H_bi(Ls, phi, tau, beta, gamma_c)H_bi(Ls, phi, tau, beta, gamma_c)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Beam daily insolation on inclined surface [Wh/m²-day]
Calculates the diffuse solar energy (scattered by atmospheric dust) received over a full Martian day on a horizontal surface. Obtained by integrating diffuse irradiance from sunrise to sunset.
H_dh( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )H_dh( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Diffuse daily insolation [Wh/m²-day]
Calculates the diffuse solar energy (scattered by atmospheric dust) received over a full Martian day on an inclined surface. Obtained by integrating diffuse irradiance from sunrise to sunset.
H_di( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )H_di( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Diffuse daily insolation on inclined surface [Wh/m²-day]
Calculates the total solar energy received over a full Martian day on a horizontal surface. Obtained by integrating global hourly insolation from sunrise to sunset.
H_h( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )H_h( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Global daily insolation [Wh/m²-day]
Calculates the total solar energy received over a full Martian day on an inclined surface. Obtained by integrating global hourly insolation from sunrise to sunset. Based on Appelbaum, Flood & Norambuena (1994).
H_i( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )H_i( Ls, phi, longitude, tau, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Global daily insolation on inclined surface [Wh/m²-day]
Calculates the solar beam energy over a full Martian day on a horizontal surface at the top of the Martian atmosphere (before atmospheric attenuation). Implements Equation 13 from Appelbaum & Flood (1990).
H_obh(Ls, phi)H_obh(Ls, phi)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Daily beam insolation at top of atmosphere [Wh/m²-day]
Calculates the ground-reflected solar energy received on an inclined surface between specified start and end times. Obtained by integrating albedo-reflected irradiance over the time period.
I_ali( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )I_ali( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Albedo-reflected insolation on inclined surface over specified time period [Wh/m²]
Calculates the direct beam solar energy received on a horizontal surface between specified start and end times. Implements Equation 19 from Appelbaum & Flood (1990).
I_bh(Ls, phi, tau, Ts_start, Ts_end)I_bh(Ls, phi, tau, Ts_start, Ts_end)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
Beam insolation over specified time period [Wh/m²]
Calculates the direct beam solar energy received on an inclined surface between specified start and end times. Obtained by integrating beam irradiance over the time period.
I_bi(Ls, phi, tau, Ts_start, Ts_end, beta, gamma_c)I_bi(Ls, phi, tau, Ts_start, Ts_end, beta, gamma_c)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Beam insolation on inclined surface over specified time period [Wh/m²]
Calculates the diffuse solar energy (scattered by atmospheric dust) received on a horizontal surface between specified start and end times. Computed as difference between global and beam insolation.
I_dh( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau) )I_dh( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Diffuse insolation over specified time period [Wh/m²]
Calculates the diffuse solar energy (scattered by atmospheric dust) received on an inclined surface between specified start and end times. Obtained by integrating diffuse irradiance over the time period.
I_di( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )I_di( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Diffuse insolation on inclined surface over specified time period [Wh/m²]
Calculates the total solar energy received on a horizontal surface between specified start and end times. Obtained by integrating global irradiance over the time period.
I_h( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau) )I_h( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau) )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
Global insolation over specified time period [Wh/m²]
Calculates the total solar energy received on an inclined surface between specified start and end times. Obtained by integrating global irradiance over the time period.
I_i( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )I_i( Ls, phi, longitude, tau, Ts_start, Ts_end, al = albedo(latitude = phi, longitude = longitude, tau = tau), beta, gamma_c )
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
longitude |
Planetary longitude [deg] |
tau |
Atmospheric optical depth (dimensionless) |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
al |
Surface albedo (dimensionless, 0-1). If not provided, calculated from latitude, longitude, and tau |
beta |
Surface tilt/slope angle from horizontal [deg] |
gamma_c |
Surface azimuth angle [deg]. Zero facing equator, east negative, west positive (-180 to +180) |
Global insolation on inclined surface over specified time period [Wh/m²]
Calculates the solar beam energy on a horizontal surface at the top of the Martian atmosphere (before atmospheric attenuation) between specified start and end times. Implements Equation 11 from Appelbaum & Flood (1990).
I_obh(Ls, phi, Ts_start, Ts_end)I_obh(Ls, phi, Ts_start, Ts_end)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Ts_start |
Start of integration period [h] |
Ts_end |
End of integration period [h] |
Beam insolation at top of atmosphere over specified time period [Wh/m²]
Determines whether a surface at a given location and time is receiving solar irradiance. Accounts for polar night/day conditions, sunrise/sunset times, and sun position below horizon.
is_irradiated(Ls, phi, Ts, z = Z(Ls, Ts, phi), beta = NULL, gamma_c = NULL)is_irradiated(Ls, phi, Ts, z = Z(Ls, Ts, phi), beta = NULL, gamma_c = NULL)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Ts |
Solar time [h] |
z |
Sun zenith angle [deg]. If not provided, calculated from Ls, phi, and Ts |
beta |
Surface tilt/slope angle from horizontal [deg]. Optional, for inclined surfaces |
gamma_c |
Surface azimuth angle [deg]. Optional, for inclined surfaces |
TRUE if surface is receiving irradiance, FALSE otherwise
Determines whether a given location on Mars is experiencing polar day (24-hour sunlight) for the specified season. During polar day, the sun remains above the horizon continuously.
is_polar_day(Ls, phi)is_polar_day(Ls, phi)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
TRUE if experiencing polar day, FALSE otherwise
Determines whether a given location on Mars is experiencing polar night (24-hour darkness) for the specified season. During polar night, the sun remains below the horizon continuously.
is_polar_night(Ls, phi)is_polar_night(Ls, phi)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
TRUE if experiencing polar night, FALSE otherwise
Calculates the optical depth of the Martian atmosphere as a function of latitude and season. The optical depth varies spatially and temporally, with peaks during global dust storms. Implements Equations 1 and 2 from Appelbaum, Landis & Sherman (1991).
optical_depth(Ls, phi, model = 1)optical_depth(Ls, phi, model = 1)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
model |
Dust storm model (1 or 2). Model 1 assumes both storms originated at -30° latitude. Model 2 assumes storms at -30° (Ls=215°) and -10° (Ls=295°) |
Atmospheric optical depth (dimensionless, minimum 0.5)
# Calculate optical depth at Viking Lander 1 site during dust storm season tau <- optical_depth(Ls = 215, phi = 22.3, model = 1)# Calculate optical depth at Viking Lander 1 site during dust storm season tau <- optical_depth(Ls = 215, phi = 22.3, model = 1)
Calculates the optimal surface tilt angle (beta) that maximizes daily solar energy collection for a given location and season on Mars. The surface is assumed to face the equator. Based on Equations 40 and 43 from Appelbaum (1993).
optimal_angle(Ls, phi, unit = 1)optimal_angle(Ls, phi, unit = 1)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
unit |
Output unit: 1 for radians, 2 for degrees (default: 1) |
Optimal tilt angle [rad] or [deg] depending on unit parameter
Calculates the sunrise time for a horizontal or inclined surface on Mars. Returns NA during polar night/day periods.
sunrise(Ls, phi, beta = NULL, gamma_c = NULL, unit = 1)sunrise(Ls, phi, beta = NULL, gamma_c = NULL, unit = 1)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
beta |
Surface tilt angle [deg]. Optional, for inclined surfaces |
gamma_c |
Surface azimuth angle [deg]. Optional, for inclined surfaces. Zero facing equator, east negative, west positive (-180 to +180) |
unit |
Output unit: 1 for radians, 2 for degrees, 3 for solar hours (default: 1) |
Sunrise time [rad], [deg], or [h] depending on unit parameter, or NA during polar night/day
Calculates the sunset time for a horizontal or inclined surface on Mars. Returns NA during polar night/day periods.
sunset(Ls, phi, beta = NULL, gamma_c = NULL, unit = 1)sunset(Ls, phi, beta = NULL, gamma_c = NULL, unit = 1)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
beta |
Surface tilt angle [deg]. Optional, for inclined surfaces |
gamma_c |
Surface azimuth angle [deg]. Optional, for inclined surfaces. Zero facing equator, east negative, west positive (-180 to +180) |
unit |
Output unit: 1 for radians, 2 for degrees, 3 for solar hours (default: 1) |
Sunset time [rad], [deg], or [h] depending on unit parameter, or NA during polar night/day
Calculates the duration of daylight (time between sunrise and sunset) for a given location and season on Mars. Implements Equation 10 from Appelbaum & Flood (1990).
T_d(Ls, phi)T_d(Ls, phi)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Number of daylight hours [h]
Calculates the angle between the sun's rays and the vertical (zenith) direction. A zenith angle of 0° means the sun is directly overhead, while 90° means the sun is at the horizon. Implements Equation 6 from Appelbaum & Flood (1990).
Z(Ls, phi, Ts)Z(Ls, phi, Ts)
Ls |
Areocentric longitude [deg] |
phi |
Planetary latitude [deg] |
Ts |
Solar time [h] |
Sun zenith angle [deg]