pvlib-python icon indicating copy to clipboard operation
pvlib-python copied to clipboard

Glossary update: surface/solar zenith/azimuth angles, and others

Open RDaxini opened this issue 8 months ago • 4 comments

Is your feature request related to a problem? Please describe. Some longer definitions and conventions are being removed from parameter descriptions in #2311

Describe the solution you'd like Migrate definitions and conventions over to the nomenclature page

See thread below for examples.

Additional context Let's agree on some definitions here, then I'll add them to the glossary. Note: some conventions (e.g. angle ranges or irradiance limits) might be function specific. Related discussion/comments: Issue #1421, comment in #1421, Comment in #2311, #2284

RDaxini avatar Apr 25 '25 21:04 RDaxini

Original definitions from irradiance.py with some suggested modifications from me.

surface_tilt
Surface tilt angle, must be >=0°  and <=180°. The surface tilt angle describes
the inclination of the PV panel and is defined as degrees from the horizontal
such that a surface facing up would have a surface tilt of 0°, and one facing
the horizon would be 90°.  [°]

surface_azimuth
Surface azimuth angle, must be >=0° and <=360°. This angle describes the
horizontal orientation of the PV panel relative to a reference direction, and
the convention is defined as degrees east (clockwise) of north. For example,
North = 0°, South=180° East = 90°, West = 270°.  [°]

solar_zenith
Apparent (refraction-corrected) zenith angle, must be ≥0° and ≤180°. The solar
zenith angle describes the position of the sun relative to the vertical and is
defined as the angle between the sun’s rays and a vector pointing straight up from
the observer. [°]

solar_azimuth
Solar azimuth angle, must be ≥0° and ≤360°. The solar azimuth angle describes
the sun’s position along the horizon and is defined as degrees east (clockwise)
of north. For example, North = 0°, East = 90°, South = 180°, West = 270°. [°]

Some of these would be new definitions, some of these exist in the glossary but need to be updated with more detail. There are others. We can update this list...

RDaxini avatar Apr 25 '25 21:04 RDaxini

A couple suggestions:

  • surface_azimuth: remove "for example", as that could be interpreted as indicating that the user could choose another convention if they like. Also make clear that east of north is pvlib's convention, and other tools use different conventions.
  • solar_zenith: add something like This is the complement of :term:`solar_elevation`.

kandersolar avatar May 08 '25 17:05 kandersolar

Is this open issue relevant, https://github.com/pvlib/pvlib-python/issues/1976?

williamhobbs avatar May 08 '25 18:05 williamhobbs

I've updated the nomenclature page with comprehensive definitions for solar angles and related terms. The key changes include:

  1. Added detailed definitions with angle ranges and conventions:

    • solar_zenith: Added range constraints (>=0 and <=180) and relationship to elevation angle
    • solar_azimuth: Added range constraints (>=0 and <=360) and directional conventions
    • apparent_zenith: Added range constraints and explanation of refraction effects
    • apparent_elevation: Added new entry with range constraints and relationship to apparent_zenith
  2. Enhanced existing angle definitions:

    • aoi: Added range constraints and explanation of values when sun is behind surface
    • aoi_projection: Added explanation of negative values and usage notes
    • surface_azimuth: Added range constraints and clarified that the east-of-north convention is specifically pvlib's convention
    • surface_tilt: Added range constraints
  3. Added cross-references between related terms:

    • Used :term: directive to link solar_zenith with solar_elevation
    • Explained complement relationships (e.g., zenith = 90 - elevation)
  4. Added coordinate system conventions:

    • latitude: Added sign conventions
    • longitude: Added sign conventions

The changes maintain consistency with the codebase's implementation while providing clearer documentation for users.

OmarBahamida avatar Jun 15 '25 19:06 OmarBahamida