Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@ repos:
hooks:
- id: julia-formatter
- repo: https://github.com/crate-ci/typos
rev: v1
rev: v1.40.0
hooks:
- id: typos
33 changes: 22 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,24 +61,35 @@ accuracy and implementation status.

| Algorithm | Reference | Accuracy | Default Refraction | Status |
| --------- | ----------------------------------------------------------------------------------------------- | -------- | ------------------ | ------ |
| PSA | [Blanco-Muriel et al.](https://www.sciencedirect.com/science/article/abs/pii/S0038092X00001560) | ±0.0083° | None | ✅ |
| NOAA | [Global Monitoring Laboratory](https://gml.noaa.gov/grad/solcalc/calcdetails.html) | ±0.0167° | HUGHES | ✅ |
| Walraven | [Walraven, 1978](<https://doi.org/10.1016/0038-092X(78)90155-X>) | ±0.0100° | None | ✅ |
| USNO | [U.S. Naval Observatory](https://aa.usno.navy.mil/faq/sun_approx) | ±0.0500° | None | ✅ |
| SPA | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | ±0.0003° | Built-in | ✅ |
| PSA | [Blanco-Muriel et al.](https://www.sciencedirect.com/science/article/abs/pii/S0038092X00001560) | ±0.0083° | None | ✅ |
| NOAA | [Global Monitoring Laboratory](https://gml.noaa.gov/grad/solcalc/calcdetails.html) | ±0.0167° | HUGHES | ✅ |
| Walraven | [Walraven, 1978](<https://doi.org/10.1016/0038-092X(78)90155-X>) | ±0.0100° | None | ✅ |
| USNO | [U.S. Naval Observatory](https://aa.usno.navy.mil/faq/sun_approx) | ±0.0500° | None | ✅ |
| SPA | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | ±0.0003° | Built-in | ✅ |

## Refraction correction algorithms

Atmospheric refraction correction algorithms available in SolarPosition.jl.

| Algorithm | Reference | Atmospheric Parameters | Status |
| --------- | ------------------------------------------------------------------------------------------------ | ---------------------- | ------ |
| HUGHES | [Hughes, 1985](https://pvpmc.sandia.gov/app/uploads/sites/243/2022/10/Engineering-Astronomy.pdf) | Pressure, Temperature | ✅ |
| ARCHER | Archer et al., 1980 | None | ✅ |
| BENNETT | [Bennett, 1982](https://doi.org/10.1017/S0373463300022037) | Pressure, Temperature | ✅ |
| MICHALSKY | [Michalsky, 1988](<https://doi.org/10.1016/0038-092X(88)90045-X>) | None | ✅ |
| SG2 | [Blanc & Wald, 2012](https://doi.org/10.1016/j.solener.2012.07.018) | Pressure, Temperature | ✅ |
| SPA | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | Pressure, Temperature | ✅ |
| HUGHES | [Hughes, 1985](https://pvpmc.sandia.gov/app/uploads/sites/243/2022/10/Engineering-Astronomy.pdf) | Pressure, Temperature | ✅ |
| ARCHER | Archer et al., 1980 | None | ✅ |
| BENNETT | [Bennett, 1982](https://doi.org/10.1017/S0373463300022037) | Pressure, Temperature | ✅ |
| MICHALSKY | [Michalsky, 1988](<https://doi.org/10.1016/0038-092X(88)90045-X>) | None | ✅ |
| SG2 | [Blanc & Wald, 2012](https://doi.org/10.1016/j.solener.2012.07.018) | Pressure, Temperature | ✅ |
| SPA | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | Pressure, Temperature | ✅ |

## Extensions

SolarPosition.jl provides optional extensions that are automatically loaded when you
import the corresponding packages:

| Extension | Trigger Package | Features |
| --------------- | --------------------------------------------------------------------- | ------------------------------------------------- |
| Makie | [`Makie.jl`](https://github.com/MakieOrg/Makie.jl) | Plotting recipes for solar position visualization |
| OhMyThreads | [`OhMyThreads.jl`](https://github.com/JuliaFolds2/OhMyThreads.jl) | Parallel computation of solar positions |
| ModelingToolkit | [`ModelingToolkit.jl`](https://github.com/SciML/ModelingToolkit.jl) | Symbolic solar position models for simulations |

## How to Cite

Expand Down
26 changes: 13 additions & 13 deletions docs/src/guides/new-algorithm.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,19 +290,19 @@ If any checks fail, fix the issues and run pre-commit again until all checks pas

Before submitting your algorithm for review, ensure you've completed the following:

| Task | Description |
| ---- | ----------- |
| Algorithm struct | Subtypes [`SolarAlgorithm`](@ref SolarPosition.Positioning.SolarAlgorithm) |
| Docstring | Includes `TYPEDEF`, `TYPEDFIELDS`, accuracy, and references |
| `_solar_position` | Function implemented with correct signature |
| Default refraction | Handling defined for [`DefaultRefraction`](@ref SolarPosition.Refraction.DefaultRefraction) |
| `result_type` | Function defined for [`DefaultRefraction`](@ref SolarPosition.Refraction.DefaultRefraction) |
| Export | Algorithm exported from both modules |
| Tests | Cover basic functionality, refraction, vectors, and edge cases |
| Test coverage | Ensure tests cover all new code paths |
| Pre-commit | Checks pass (recommended locally, required in CI) |
| Documentation | Add your algorithm to the list of available algorithms and update the tables in `positioning.md`, `README.md` and `refraction.md` if needed |
| Literature | References added to `refs.bib` and cited in docstrings |
| Task | Description |
| ------------------ | ------------------------------------------------------------------------------------------- |
| Algorithm struct | Subtypes [`SolarAlgorithm`](@ref SolarPosition.Positioning.SolarAlgorithm) |
| Docstring | Includes `TYPEDEF`, `TYPEDFIELDS`, accuracy, and references |
| `_solar_position` | Function implemented with correct signature |
| Default refraction | Handling defined for [`DefaultRefraction`](@ref SolarPosition.Refraction.DefaultRefraction) |
| `result_type` | Function defined for [`DefaultRefraction`](@ref SolarPosition.Refraction.DefaultRefraction) |
| Export | Algorithm exported from both modules |
| Tests | Cover basic functionality, refraction, vectors, and edge cases |
| Test coverage | Ensure tests cover all new code paths |
| Pre-commit | Checks pass (recommended locally, required in CI) |
| Documentation | Update algorithm lists in `positioning.md`, `README.md`, and `refraction.md` |
| Literature | References added to `refs.bib` and cited in docstrings |

## Additional Resources

Expand Down
12 changes: 6 additions & 6 deletions docs/src/guides/parallel.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,12 +186,12 @@ pos = StructVector{SolPos{Float64}}(undef, length(times))

On a system with 32 threads processing 527,041 timestamps (one year, minutely):

| Method | Time | Speedup | Allocations |
|--------|------|---------|-------------|
| Serial | 87.9 ms | 1.0× | 12.06 MiB |
| Parallel (DynamicScheduler) | 14.7 ms | **6.0×** | 66.59 MiB |
| In-place (DynamicScheduler) | 5.53 ms | **15.9×** | 20.47 KiB |
| In-place (StaticScheduler) | 5.84 ms | **15.0×** | 15.97 KiB |
| Method | Time | Speedup | Allocations |
| --------------------------- | ------- | ---------- | ----------- |
| Serial | 87.9 ms | 1.0× | 12.06 MiB |
| Parallel (DynamicScheduler) | 14.7 ms | **6.0×** | 66.59 MiB |
| In-place (DynamicScheduler) | 5.53 ms | **15.9×** | 20.47 KiB |
| In-place (StaticScheduler) | 5.84 ms | **15.0×** | 15.97 KiB |

!!! tip "Performance Tips"
For the best performance:
Expand Down
30 changes: 15 additions & 15 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,26 +62,26 @@ Here we provide an overview of the solar positioning algorithms currently implem
in SolarPosition.jl. Each algorithm is described with its reference paper, claimed
accuracy and implementation status.

| Algorithm | Reference | Accuracy | Default Refraction | Status |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------- | ------------------ | ------ |
| [`PSA`](@ref SolarPosition.Positioning.PSA) | [Blanco-Muriel et al.](https://www.sciencedirect.com/science/article/abs/pii/S0038092X00001560) | ±0.0083° | None | ✅ |
| [`NOAA`](@ref SolarPosition.Positioning.NOAA) | [Global Monitoring Laboratory](https://gml.noaa.gov/grad/solcalc/calcdetails.html) | ±0.0167° | [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | ✅ |
| [`Walraven`](@ref SolarPosition.Positioning.Walraven) | [Walraven, 1978](https://doi.org/10.1016/0038-092X(78)90155-X) | ±0.0100° | None | ✅ |
| [`USNO`](@ref SolarPosition.Positioning.USNO) | [U.S. Naval Observatory](https://aa.usno.navy.mil/faq/sun_approx) | ±0.0500° | None | ✅ |
| [`SPA`](@ref SolarPosition.Positioning.SPA) | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | ±0.0003° | Built-in | ✅ |
| Algorithm | Reference | Accuracy | Default Refraction | Status |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------ | ------ |
| [`PSA`](@ref SolarPosition.Positioning.PSA) | [Blanco-Muriel et al.](https://www.sciencedirect.com/science/article/abs/pii/S0038092X00001560) | ±0.0083° | None | ✅ |
| [`NOAA`](@ref SolarPosition.Positioning.NOAA) | [Global Monitoring Laboratory](https://gml.noaa.gov/grad/solcalc/calcdetails.html) | ±0.0167° | [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | ✅ |
| [`Walraven`](@ref SolarPosition.Positioning.Walraven) | [Walraven, 1978](https://doi.org/10.1016/0038-092X(78)90155-X) | ±0.0100° | None | ✅ |
| [`USNO`](@ref SolarPosition.Positioning.USNO) | [U.S. Naval Observatory](https://aa.usno.navy.mil/faq/sun_approx) | ±0.0500° | None | ✅ |
| [`SPA`](@ref SolarPosition.Positioning.SPA) | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | ±0.0003° | Built-in | ✅ |

## Refraction correction algorithms

Atmospheric refraction correction algorithms available in SolarPosition.jl.

| Algorithm | Reference | Atmospheric Parameters | Status |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ---------------------- | ------ |
| [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | [Hughes, 1985](https://pvpmc.sandia.gov/app/uploads/sites/243/2022/10/Engineering-Astronomy.pdf) | Pressure, Temperature | ✅ |
| [`ARCHER`](@ref SolarPosition.Refraction.ARCHER) | Archer et al., 1980 | None | ✅ |
| [`BENNETT`](@ref SolarPosition.Refraction.BENNETT) | [Bennett, 1982](https://doi.org/10.1017/S0373463300022037) | Pressure, Temperature | ✅ |
| [`MICHALSKY`](@ref SolarPosition.Refraction.MICHALSKY) | [Michalsky, 1988](https://doi.org/10.1016/0038-092X(88)90045-X) | None | ✅ |
| [`SG2`](@ref SolarPosition.Refraction.SG2) | [Blanc & Wald, 2012](https://doi.org/10.1016/j.solener.2012.07.018) | Pressure, Temperature | ✅ |
| [`SPARefraction`](@ref SolarPosition.Refraction.SPARefraction) | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | Pressure, Temperature | ✅ |
| Algorithm | Reference | Atmospheric Parameters | Status |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ---------------------- | ------ |
| [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | [Hughes, 1985](https://pvpmc.sandia.gov/app/uploads/sites/243/2022/10/Engineering-Astronomy.pdf) | Pressure, Temperature | ✅ |
| [`ARCHER`](@ref SolarPosition.Refraction.ARCHER) | Archer et al., 1980 | None | ✅ |
| [`BENNETT`](@ref SolarPosition.Refraction.BENNETT) | [Bennett, 1982](https://doi.org/10.1017/S0373463300022037) | Pressure, Temperature | ✅ |
| [`MICHALSKY`](@ref SolarPosition.Refraction.MICHALSKY) | [Michalsky, 1988](https://doi.org/10.1016/0038-092X(88)90045-X) | None | ✅ |
| [`SG2`](@ref SolarPosition.Refraction.SG2) | [Blanc & Wald, 2012](https://doi.org/10.1016/j.solener.2012.07.018) | Pressure, Temperature | ✅ |
| [`SPARefraction`](@ref SolarPosition.Refraction.SPARefraction) | [Reda & Andreas, 2004](https://doi.org/10.1016/j.solener.2003.12.003) | Pressure, Temperature | ✅ |

## How to Cite

Expand Down
14 changes: 7 additions & 7 deletions docs/src/positioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,13 @@ fig

The following solar position algorithms are currently implemented in SolarPosition.jl:

| Algorithm | Reference | Accuracy | Default Refraction | Status |
| ----------------------------------------------------- | --------------- | ------------- | ------------------ | ------ |
| [`PSA`](@ref SolarPosition.Positioning.PSA) | [BALL01](@cite) | ±0.0083° | None | ✅ |
| [`NOAA`](@ref SolarPosition.Positioning.NOAA) | [NOAA](@cite) | ±0.0167° | [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | ✅ |
| [`Walraven`](@ref SolarPosition.Positioning.Walraven) | [Wal78](@cite) | ±0.0100° | None | ✅ |
| [`USNO`](@ref SolarPosition.Positioning.USNO) | [USNO](@cite) | ±0.0500° | None | ✅ |
| [`SPA`](@ref SolarPosition.Positioning.SPA) | [RA04](@cite) | ±0.0003° | Built-in | ✅ |
| Algorithm | Reference | Accuracy | Default Refraction | Status |
| ----------------------------------------------------- | --------------- | -------- | ------------------------------------------------ | ------ |
| [`PSA`](@ref SolarPosition.Positioning.PSA) | [BALL01](@cite) | ±0.0083° | None | ✅ |
| [`NOAA`](@ref SolarPosition.Positioning.NOAA) | [NOAA](@cite) | ±0.0167° | [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | ✅ |
| [`Walraven`](@ref SolarPosition.Positioning.Walraven) | [Wal78](@cite) | ±0.0100° | None | ✅ |
| [`USNO`](@ref SolarPosition.Positioning.USNO) | [USNO](@cite) | ±0.0500° | None | ✅ |
| [`SPA`](@ref SolarPosition.Positioning.SPA) | [RA04](@cite) | ±0.0003° | Built-in | ✅ |

## [PSA](@id psa-algorithm)

Expand Down
16 changes: 8 additions & 8 deletions docs/src/refraction.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ true position, especially near the horizon. Image source: [Wikimedia Commons](@c
`SolarPosition.jl` includes several refraction correction algorithms. Below is a summary
of the available algorithms:

| Algorithm | Reference | Atmospheric Parameters | Status |
| ------------------------------------------------------ | -------------- | ---------------------- | ------ |
| [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | [Hug85](@cite) | Pressure, Temperature | ✅ |
| [`ARCHER`](@ref SolarPosition.Refraction.ARCHER) | [Arc80](@cite) | None | ✅ |
| [`BENNETT`](@ref SolarPosition.Refraction.BENNETT) | [Ben82](@cite) | Pressure, Temperature | ✅ |
| [`MICHALSKY`](@ref SolarPosition.Refraction.MICHALSKY) | [Mic88](@cite) | None | ✅ |
| [`SG2`](@ref SolarPosition.Refraction.SG2) | [BW12](@cite) | Pressure, Temperature | ✅ |
| [`SPARefraction`](@ref SolarPosition.Refraction.SPARefraction) | [RA04](@cite) | Pressure, Temperature | ✅ |
| Algorithm | Reference | Atmospheric Parameters | Status |
| -------------------------------------------------------------- | -------------- | ---------------------- | ------ |
| [`HUGHES`](@ref SolarPosition.Refraction.HUGHES) | [Hug85](@cite) | Pressure, Temperature | ✅ |
| [`ARCHER`](@ref SolarPosition.Refraction.ARCHER) | [Arc80](@cite) | None | ✅ |
| [`BENNETT`](@ref SolarPosition.Refraction.BENNETT) | [Ben82](@cite) | Pressure, Temperature | ✅ |
| [`MICHALSKY`](@ref SolarPosition.Refraction.MICHALSKY) | [Mic88](@cite) | None | ✅ |
| [`SG2`](@ref SolarPosition.Refraction.SG2) | [BW12](@cite) | Pressure, Temperature | ✅ |
| [`SPARefraction`](@ref SolarPosition.Refraction.SPARefraction) | [RA04](@cite) | Pressure, Temperature | ✅ |

To calculate refraction, we can use the [`refraction`](@ref SolarPosition.Refraction.refraction) function:

Expand Down
Loading