nrel-spa/.github/wiki/Home.md

1.8 KiB

nrel-spa

Pure JavaScript implementation of the NREL Solar Position Algorithm (SPA). Computes solar zenith angle, azimuth, sunrise, sunset, and solar noon for any location and date. Validated to produce identical output to the original NREL C reference implementation.

Overview

Package: nrel-spa on npm Repository: acamarata/nrel-spa on GitHub License: MIT (wrapper). NREL SPA C source: see LICENSE for third-party notice.

Pages

Quick Example

import { calcSpa } from 'nrel-spa';

const result = calcSpa(
  new Date('2025-06-21T00:00:00Z'),
  40.7128, // New York latitude
  -74.006, // New York longitude
  -4, // EDT (UTC-4)
);

console.log(result.sunrise); // "05:25:03"
console.log(result.solarNoon); // "12:57:56"
console.log(result.sunset); // "20:30:35"

Key Facts

  • Zero runtime dependencies
  • Synchronous: no async, no WASM, no loading delay
  • Dual CJS and ESM, full TypeScript definitions
  • Matches NREL C reference output within one second across all tested locations

API Reference . Architecture . Twilight Calculations . NREL SPA Algorithm . Implementation Comparison