Skip to content
System Advisor Model (SAM)
C++ Objective-C C HTML Python JavaScript Other
Branch: develop
Clone or download
Latest commit c6179bc Aug 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
Sandia Replace missing mac binaries for stochastic simulations Aug 30, 2017
api fix export_config error: create directory if missing Aug 12, 2019
build_linux update wxconfigure to use out-of-source build Jul 10, 2019
build_osx ignore dark mode for macOS Aug 13, 2019
doc PPA buy rate updates Dec 28, 2017
resource Clean-up SAM repository, move doc files to SAM-documentation, etc. Jul 19, 2017
samples update to recent ssc dll with cycle model improvements Aug 14, 2019
shadecalc Merge problems, forcing files to be the GitHub head Jun 21, 2017
src Merge pull request #221 from NREL/send-to-excel-with-equations Aug 14, 2019
.gitattributes Update defaults to have lf, ui has crlf Oct 3, 2018
.gitignore update .gitignore Aug 16, 2019
.travis.yml unix build output sam.bin in sam folder; travis use develop branches Jul 22, 2019
CMakeLists.txt CMakeLists add unix compiler Aug 14, 2019 Update Mar 6, 2019
LICENSE License in GitHub format Jul 1, 2019 Update Jul 1, 2019
test_results_win32.csv all windows defaults running x64 and win32 Oct 30, 2018
test_results_win64.csv Add missing grid pages and update test result and defaults Jul 22, 2019

System Advisor Model (SAM)

TravisCI FOSSA Status

The SAM Open Source Project repository contains the source code, tools, and instructions to build a desktop version of the National Renewable Energy Laboratory's System Advisor Model (SAM). SAM is a simulation program for electricity generation projects. It has models for different kinds of renewable energy systems and financial models for residential, commercial, and utility-scale projects. For more details about SAM's capabilities, see the SAM website at

For a short video describing the SAM repositories, see

The SAM release notes are in

The desktop version of SAM for Windows, Mac, or Linux builds from the following open source projects:

  • 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.

  • 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, SAM, provides the user interface to assign values to inputs of the SSC compute modules, run the modules in the correct order, and display simulation results. It also includes tools for editing LK scripts, viewing time series results, and generating shade data from a 3-dimensional representation of a photovoltaic array or solar hot water collector and nearby shading objects.

We also include two Sandia libraries, stepwise, and LHS, which are distributed as part of the Dakota platform, licensed under LGPL. These libraries may be found here.

Quick Steps for Building SAM

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 SAM:

  1. Set up your development tools:

  2. Download the wxWidgets 3.1.1 source code for your operating system from

  3. Build wxWidgets.

  4. In Windows, create the WXMSW3 environment variable on your computer to point to the wxWidgets installation folder, or in MacOS and Linux, create the dynamic link /usr/<USERNAME>/local/bin/wx-config-3 to point to /path/to/wxWidgets/bin/wx-config.

  5. 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:

ProjectRepository URLWindows Environment Variable
Google Test


If you would like to report an issue with SAM 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.


SAM's open source code is copyrighted by the Alliance for Sustainable Energy and licensed with BSD-3-Clause terms, found here.

SAM also includes two LGPL licensed libraries from Sandia National Laboratory. These Fortran libraries have been pre-compiled and included as binaries here. To swap in a new version of these libraries, you may compile them as binary/executables and copy them into the respective folder.

You can’t perform that action at this time.