Core

Solar utilities based on SOLPOS and SPECTRL2 from NREL RREDC Solar Resource Models and Tools

2013 SunPower Corp.

Libraries

Solar Utils depends on two libraries that must be compiled in the same folder as core.py. The library extension depends on the system platform. Windows uses dynamically linked libraries, .dll, Linux uses shared objects, .so and Mac OS X (aka Darwin) uses dynamic libraries, .dylib. Also both Linux and Darwin libraries have lib prefixed to the library name.

solposAM

A library compiled from NREL’s SOLPOS 2.0 that exports functions called by solposAM().

solar_utils.core.SOLPOSAMDLL

spectrl2

A library compiled from NREL’s SPECTRL2 V.2 that imports SOLPOSAMDLL and exports functions called by spectrl2().

solar_utils.core.SPECTRL2DLL

solposAM

solar_utils.core.solposAM(location, datetime, weather)[source]

Calculate solar position and air mass by calling functions exported by SOLPOSAMDLL.

Parameters:
  • location (float) – [latitude, longitude, UTC-timezone]
  • datetime (int) – [year, month, day, hour, minute, second]
  • weather (float) – [ambient-pressure (mB), ambient-temperature (C)]
Returns:

angles [degrees], airmass [atm]

Return type:

float

Raises:

SOLPOS_Error

Returns the solar zenith and azimuth angles in degrees, as well as the relative and absolute (or pressure corrected) air mass.

Examples:

>>> location = [35.56836, -119.2022, -8.0]
>>> datetime = [2013, 6, 5, 12, 31, 0]
>>> weather = [1015.62055, 40.0]
>>> (angles, airmass) = solposAM(location, datetime, weather)
>>> list(angles)
[15.074043273925781, 213.29042053222656]
>>> list(airmass)
[1.0352272987365723, 1.0379053354263306]

spectrl2

solar_utils.core.spectrl2(units, location, datetime, weather, orientation, atmospheric_conditions, albedo)[source]

Calculate solar spectrum by calling functions exported by SPECTRL2DLL.

Parameters:
  • units (int) – set units = 1 for W/m2/micron
  • location (float) – latitude, longitude and UTC-timezone
  • datetime (int) – year, month, day, hour, minute and second
  • weather (float) – ambient-pressure [mB] and ambient-temperature [C]
  • orientation (float) – tilt and aspect [degrees]
  • atmospheric_conditions (float) – alpha, assym, ozone, tau500 and watvap
  • albedo (float) – 6 wavelengths and 6 reflectivities
Returns:

spectral decomposition, x-coordinate

Return type:

float

Raises:

SPECTRL2_Error, SOLPOS_Error

Returns the diffuse, direct, extraterrestrial and global spectral components on the tilted surface in as a function of x-coordinate specified by units.

units output units
1 irradiance (W/sq m/micron) per wavelength (microns)
2 photon flux (10.0E+16 /sq cm/s/micron) per wavelength (microns)
3 photon flux density (10.0E+16 /sq cm/s/eV) per energy (eV)

See NREL SPECTRL2 Documentation for more detail.

See also

solposAM()

Examples:

>>> units = 1
>>> location = [33.65, -84.43, -5.0]
>>> datetime = [1999, 7, 22, 9, 45, 37]
>>> weather = [1006.0, 27.0]
>>> orientation = [33.65, 135.0]
>>> atmospheric_conditions = [1.14, 0.65, -1.0, 0.2, 1.36]
>>> albedo = [0.3, 0.7, 0.8, 1.3, 2.5, 4.0] + ([0.2] * 6)
>>> (specdif, specdir, specetr, specglo,
     specx) = spectrl2(units, location, datetime, weather, orientation,
                       atmospheric_conditions, albedo)

_int2bits

solar_utils.core._int2bits(err_code)[source]

Convert integer to bits.

Parameters:err_code – integer to convert
Returns:log(err_code, 2)

Used to decipher the return value error codes from SOLPOS and SPECTRL2.