The SolarPILOT Open Source Project repository contains the source code, tools, and instructions to build a desktop version of the National Renewable Energy Laboratory's SolarPILOT. SolarPILOT is a design, characterization, and optimization tool for concentrating solar power (CSP) tower plants. It is available through this repository as a standalone application with full functionality, and it is also included in several CSP tower models within NREL's System Advisor Model (SAM) in limited form. For more details about SolarPILOT's capabilities, see the SolarPILOT website at https://www.nrel.gov/csp/solarpilot.html. For details on integration with SAM, see the SAM website at sam.nrel.gov.
The desktop version of SolarPILOT for Windows or Linux builds from the following open source projects:
SolTrace is a general tool for Monte-Carlo ray tracing that allows optical characterization of a wide range of possible systems. The tool is used by SolarPILOT alongside the analytical Hermite polynomial expansion model to ensure model accuracy.
SSC is a set of "compute modules" that simulate different kinds of power systems and financial structures. It can be run directly using the SAM Software Development Kit. If you are looking for the algorithms underlying the models, they are located in this repository. For a list of SSC release versions that correspond with SolarPILOT GUI releases, see the release list and tags at Mike Wagner's personal GitHub page.
LK is a scripting language that is integrated into SAM and allows users to add functionality to the program.
wxWidgets is a cross-platform graphical user interface platform used for SAM's user interface, and for the development tools included with SSC (SDKtool) and LK (LKscript). The current version of SAM uses wxWidgets 3.1.1.
WEX is a set of extensions to wxWidgets for custom user-interface elements used by SAM, and by LKscript and DView, which are integrated into SAM.
Google Test is a C++ test framework that enables comprehensive unit-testing of software. Contributions to the project will eventually be required to have associated unit tests written in this framework.
This repository, SolarPILOT, provides the user interface to assign values to inputs of the computational modules, run the modules in the correct order, and display calculation results. It also includes tools for editing LK scripts, viewing field layout and receiver flux map data, and performing multi-dimensional system optimization.
For detailed build instructions see the wiki, with specific instructions for:
These are the general quick steps you need to follow to set up your computer for developing SolarPILOT:
Set up your development tools:
Download the wxWidgets 3.1.1 source code for your operating system.
Build wxWidgets.
In Windows, create the WXMSW3 environment variable on your computer to point to the wxWidgets installation folder, or Linux, create the dynamic link /usr/<USERNAME>/local/bin/wx-config-3
to point to /path/to/wxWidgets/bin/wx-config
.
As you did for wxWidgets, for each of the following projects, clone (download) the repository, build the project, and then (Windows only) create an environment variable pointing to the project folder. Build the projects in the following order, and assign the environment variable for each project before you build the next one:
Project | Repository URL | Windows Environment Variable |
---|---|---|
wxWidgets | https://www.wxwidgets.org/downloads | WXMSW3 |
LK | https://github.com/NREL/lk | LKDIR |
WEX | https://github.com/NREL/wex | WEXDIR |
Google Test | https://github.com/google/googletest | GTEST |
SSC | https://github.com/mjwagner2/ssc, -b solarpilot-develop | SSCDIR |
SolTrace | https://github.com/NREL/SolTrace | CORETRACEDIR |
SolarPILOT | https://github.com/NREL/SolarPILOT |
If you would like to report an issue with SolarPILOT or make a feature request, please let us know by adding a new issue on the issues page.
If you would like to submit code to fix an issue or add a feature, you can use GitHub to do so. Please see Contributing for instructions.
SolarPILOT's open source code is copyrighted by the Alliance for Sustainable Energy and licensed under a mixed MIT and GPLv3 license. It allows for-profit and not-for-profit organizations to develop and redistribute software based on SolarPILOT under terms of an MIT license and requires that research entities including national laboratories, colleges and universities, and non-profit organizations make the source code of any redistribution publicly available under terms of a GPLv3 license.
If you find SolarPILOT useful, we ask that you appropriately cite it in documentation of your work. We provide the open-source code and executable distributions for free, but find value in being acknowledged in work that advances scientific knowledge and engineering technology. For general use of SolarPILOT, the preferred citation is:
Wagner, M.J., Wendelin, T. (2018). "SolarPILOT: A power tower solar field layout and characterization tool", Solar Energy, Vol. 171, pp. 185-196, ISSN 0038-092X, https://doi.org/10.1016/j.solener.2018.06.063.
The work is also presented in the following publication:
Wagner, M.J., Braun, R.J., Newman, A.M. (2017). "Optimization of stored energy dispatch for concentrating solar power systems." Doctoral Thesis. Colorado School of Mines, Golden, Colorado. Chapter II, pp. 19-45. URL: https://dspace.library.colostate.edu/handle/11124/171000.
For work that builds substantially upon or is derived from the open source project, the preferred citation is:
Wagner, M.J. (2018). "SolarPILOT Open-Source Software Project: github.com/NREL/SolarPILOT." Accessed (dd/mm/yyyy). National Renewable Energy Laboratory, Golden, Colorado.