Welcome to SAInt Docs

1. What is SAInt?

The Scenario Analysis Interface for Energy Systems (SAInt) is a software platform designed to model integrated energy networks and markets. SAInt allows modeling energy markets, electricity networks, gas networks, coupled electric and gas networks, and thermal networks.

2. Components of SAInt Docs

A key component of SAInt is its continuously expanding documentation ecosystem. The user is guided in the learning process of energy systems model development with an in-depth description of SAInt functionalities and practical and concise how-to guides. Tutorials and learning more cases further support the user in realizing detailed studies and answering cutting-edge questions. SAInt documentation takes advantage of the more modern web publishing frameworks to create a dynamic and modern experience aimed to answer your modeling questions quickly and efficiently.

The documentation ecosystem of SAInt is built around four main components.

Component What’s Inside What You Get

Installation Guide

Description of how to request, install and manage SAInt

Instructions on registering, downloading and installing SAInt, activating and managing licenses, and troubleshooting common problems.

Technical Specifications

Description of SAInt and services

An overview of SAInt’s architecture, model and scenario structures, customer support and services, and software installation and management.

Reference

Description of the software components

Shows all the information there is to know about SAInt: capabilities, settings, dependencies, etc.

How-To Guides

Step-by-step instructions

Instructions on completing common tasks and solving common problems.

Tutorials

Learning by doing

Guides in the creation and execution of a project. Shows real examples of applications using the software.

Learn More

Discussions on particular topics

Explains and discusses particular topics. It broaden the knowledge and dives into the mathematical equations.

pySAInt Manual

Manual for the data management tool pySAInt

Describes how to use the core functionalities of pySAInt and how to perform Capacity Expansion Model (CEM) operations using pySAInt.

3. What’s New

We’re excited to introduce SAInt Release 3.9, packed with new features and expanded modelling capabilities! Take a moment to explore these exciting updates and see what’s new. A summary is provided in the table below. Please note that some changes may affect your existing models.

The latest major release of SAInt includes substantial additions to the production cost capabilities and reserve products, enabling full detail and precise security constrained unit commitment and economic dispatch modeling of interconnection systems for market clearing purposes. Power flow functionality has been greatly improved with a comprehensive switch shunt control implementation, and a host of new convergence tools and settings. Combined with broad improvements across the software including an improved plugin ecosystem and a new node explorer, Version 3.9 further defines SAInt as the definitive solution for integrated planning.

  1. Market Optimizations

    In alignment with real markets, commitment status (cycling or must-run) of generators is now directly specified, with dedicated ramp-rates for start-ups and separate cold, warm, and hot time-dependent start-up costs. Reserve service modeling has been greatly expanded to include up and down, spinning and regulation type participation, including minimum values that allow for optional commitment behavior into reserve product provisions. Additionally, a non-spinning reserve product now allows de-committed units with rapid turn on capabilities to be available for reserve provision as well for modeling fast-start generating units.

  2. Network Modeling A primary addition to the AC power flow domain is the expansion of switched shunt modeling capabilities, including multi-level discrete and continuous behaviors. Remote node control has also been added to shunt devices, as well as wind, solar, and battery generation assets. A highly customizable AC power flow warm start functionality has been added, allowing users to configure initial conditions with external data, internal SAInt solutions, or initial voltage angles from an automatic DC power flow execution. Fully decoupled iteration limits and solver switching tolerances for voltage control mode, shunt switching, transformer taps, light loading steps, and participation switching have also been added.

  3. Plugin Ecosystem The plugin ecosystem continues to grow, now boasting a seamless installation process that places dedicated plugin icons in the Tool bar for easy execution. The suite of plugin offerings now includes the innovative Representative Timestep Selector, a Resource Adequacy tool that supports probabilistic transmission outages, a complete update of the Contingency Analyzer, major additions to Dot Raw to SAInt, and a Translation Validator dedicated to comparisons of external data sets with SAInt models. Reporting design of all plugins has been unified, establishing consistency for easy cross domain analysis. Additionally, plugin security has improved with a signed security check of all encoord authored plugins.

  4. Integrated Planning Improvements Version 3.9 introduces a DC power flow module that can be used for screening contingencies to align monitored/contingency pairs in system balance production cost modeling or seeding flat start AC power flow scenarios with initial voltage angles. The Integrated Planner now has key API endpoints for automated process execution, and support for moving between these new DC power flow, and unbalanced AC power flow scenario types. Combined with a brand-new Node Explorer with navigation tracking and cross scenario type representation, the integrated planning capabilities of SAInt are more powerful than ever.

Seasoned SAInt Users Please Note - InService is now an Event Property

The ON, OFF, and ONOFF events have been removed as of SAInt v3.9. Now, InService is a Default Event Value property called InServiceDef and it can be changed for different scenarios using an InService event. A key benefit of this improvement is allowing easy object service control with profiles. The boolean nature of the InService property remains, however, and users can use integer values of "0" for "False" and "1" for "True" which also supports using a Profile for such an Event.

See this forum post for more detailed information.

Release Notes for SAInt 3.9.11.3:

  • Market Modeling

    • Unit commitment

      • Added CommitStatus property and event for FGEN objects to specify commitment status (MustRun or Cycling) over scenarios.

      • Added time-dependent startup prices and ramp-up constraints for generators, categorized as Hot, Warm, and Cold based on time since last operation.

      • Added a new StartRampRate property for Fuel Generators (FGENs) to model their start-up ramp rate in MW/min.

    • Reserves

      • Added a new boolean property EnforceUnitCommitment to ASVC objects that when set to True will enforce decision variables for ASVCX contributions. This value defaults to False.

      • Added a MinVal property to ASVCX objects to enforce a minimum reserve contribution, along with a binary STATUS variable indicating if the ASVCX is contributing at or above this minimum. This supports the EnforceUnitCommitment property for ASVC.

      • Added "NonSpinning" ancillary service type allowing generators that are off but available to provide non-spinning reserves to represent fast-start generating units providing reserves.

      • Added "Regulation" ancillary service type along with corresponding RMIN and RMAX properties to generators to define a viable output range for regulation reserve contribution.

  • AC Power Flow Improvements

    • Warm Start

      • Improved SteadyACPF scenario performance with multiple warm start options that allow initializing simulations from known power flow solutions, including external sources, previous ACPF runs, or DCPF initial conditions.

      • Added new reference properties to electric nodes, externals, and transformers to support populating AC power flow results from external tools for comparison and warm-start simulations.

    • Equipment Coverage

      • Added RemoteNodeName and RemoteNode properties for WIND, PV, and ESTR objects for remote node voltage regulation when used with VMSET events.

      • Improved switched shunt modeling by adding discrete and continuous control modes, remote voltage control, block switching order enforcement, and control status events, enhancing flexibility and accuracy in shunt device simulations.

    • Enhanced Transparency

      • Added the ability to view and export the last computed iteration results when an ACPF simulation is paused, allowing users to warm start simulations from saved, intermediary results.

      • Added a WriteLES scenario parameter option allowing users to generate linear equation system files (*.les) for each iteration.

      • Extensively increased logging of simulations, including SlopeFactor, Q enlargement, Transformer Tap changes, Shunt Switches, and Light Loading value increases for each ACPF solver.

      • Decoupled iteration limits for control mode, Transformer Taps, and Shunt switching.

      • Added independent residual tolerances for all key solver iteration processes.

      • Added two new output properties showing active and reactive power loading percentages for various generator externals.

  • Plugins

    • Plugin installation is now simpler with a one-step install process and installed plugins appearing as icons in the Tools ribbon. Users can switch between multiple plugins without reinstalling them, run multiple plugins at the same time, and uninstall plugins directly from the Settings menu.

    • Added a security check to verify that plugin executables are signed by encoord before they run. If a plugin is unsigned, users receive a warning and can decide whether to proceed, improving transparency, trust, and safety.

  • Integrated Planner

    • Added support for UACPF and DCPF scenario types with the Integrated Planner, including both Steady and QuasiDynamic types for each.

    • Added new API endpoint to run the Integrated Planner with a preset .tran file.

  • Node Explorer

    • Added an independent Node Explorer window, improving performance and usability for large models.

    • Added Back, Forward, and Recent Locations buttons to the Node Explorer to help users navigate through complex networks.

  • InService Scenario Property

    • Improved the InService property by converting it to an event-driven property allowing users to programmatically change operational statuses between scenarios.

  • Other Additions

    • Introduced the Outage Transfer Distribution Factor (OTDF) with a new otdf function alongside existing isf and lodf functions, enabling users to analyze network impacts during outages more effectively.

    • Improved "Filter Scenario Events" to open custom event tables containing events related only to the selected objects, enhancing event editing and analysis.

    • Added API endpoints to create new networks from scratch with initial nodes and branches, enabling programmatic network building.

    • Improved the public API by removing redundant scenario-property methods and renaming cryptic property names to human-readable ones while preserving backward compatibility.

    • Reintroduced SteadyDCPF and QuasiDynamicDCPF scenario types with GUI and API support.

    • Added support for the InService property in the Branch Map Legend.

    • Added visually pleasing default icons for all SAInt file extensions including *.plugin and *.tran.

  • Minor Improvements and Bug Fixes

    • Simulation performance, solver behavior, and numerical accuracy

      • Improved simulation efficiency by compiling scenario event value expressions to reduce execution time increases caused by mathematical operations in event values.

      • Fixed an issue where the solver failed on isolated shunt objects.

      • Fixed an issue where increasing the phase shift (PHISET) on a transformer incorrectly impacted the convergence trajectory and per unit voltages, causing large voltage deviations.

      • Fixed an issue where TimeStepLookAhead was incorrectly used as the denominator in shadow price calculations.

      • Fixed an issue where enabling IncludeLosses caused the system balance solve to hang indefinitely.

      • Fixed incorrect residual reporting for ISO areas and Qlimit violation checks, providing users with accurate diagnostic information.

      • Fixed an issue where slope factor reduction was not applied in voltage setting equations when MaxControlIterations was zero.

      • Fixed an issue where PSHDW values for monitored branch objects were incorrectly reported as 0 instead of NaN or the expected congestion value when using USESYSTEMBALANCE.

      • Fixed an issue where EVAR objects on branches did not function correctly with USESYSTEMBALANCE.

      • Fixed an issue where branch penalties were incorrectly reported for unmonitored branches under USESYSTEMBALANCE.

      • Fixed an issue where zero impedance lines were not handled correctly in the system balance formulation.

      • Fixed an access violation error during DCUCOPF simulation by updating disposal logic.

      • Fixed an issue where the Time Horizon input was limited to 60 days when creating a new DCUCOPF scenario.

      • Fixed an issue where flow unserved (QNS) was incorrectly calculated for demands not in service.

      • Fixed an issue where the left-hand side (SUMLHS) of constraints involving binary variables always returned zero.

      • Fixed an issue where scenario solutions with end times not aligned to scenario end times failed to load.

      • Fixed handling of invalid regulation bands so that generators with empty or out-of-limit bands contribute zero to ASVC regulation.

      • Optimized the time insert operation to speed up simulation initialization.

      • Fixed an exception caused by a singular matrix during dynamic gas simulation runs.

      • Fixed the StartCostRate property for FGEN objects so it correctly reports startup costs at the first timestep.

      • Fixed numerical errors in the loss component of LMP to improve accuracy.

    • Scenario configuration, events, profiles, and Integrated Planner workflows

      • Improved the default chart start and end times when creating scenarios via the API to match those created via the GUI.

      • Fixed an exception caused by participation factor clean-up with the Integrated Planner running incorrectly by adding a null check.

      • Fixed inconsistent behavior where some profiles were not assigned to all events in the Integrated Planner.

      • Fixed an issue where importing multiple event files ended with all events in the scenario selected instead of only the newly imported ones.

      • Fixed an issue where the PSHDWE derived property was not saved or queryable in solved scenarios.

      • Updated default ChartStartTime to be one timestep after StartTime, preventing confusion from zero-value initial steps and aligning with most user scenarios.

      • Fixed the calculation of the PSHDWE derived property in the development environment to ensure it is saved and queryable in solved scenarios.

      • Fixed the calculation of emission properties for containers so that CO2, NOx, and SO2 rates are aggregated from FuelGenerators instead of Fuel objects.

      • Fixed an issue where importing exported profiles and events with duplicate events caused different results.

      • Fixed an issue where sorting the "Value" column in Scenario Events was alphabetical instead of numerical when empty or text cells were present.

      • Added State output property back to ASVCX objects to report their status in PCM optimal solutions, restoring visibility of ASVCX operational state.

      • Added QNS and TNS properties for container objects like networks, zones, and groups.

      • Fixed an issue where the "TimeModified" field in the Scenario Dialog did not refresh after saving changes.

      • Fixed an issue where the Parameter drop-down list was empty when multi-editing events of the same type.

      • Fixed an issue where ON events on FGENs were not mapped to MustRun events.

      • Fixed an issue with grouping by the "Parameter" column in the event table.

      • Fixed an issue where filtering rows by columns like Parameter and Profile was not working in the event table.

      • Fixed an issue where including events and associated profiles from another scenario did not work.

      • Fixed an issue where newly created scenarios were not shown in bold in the Project Explorer.

      • Fixed missing profile icons in the Model Explorer when opening scenarios with profiles.

      • Fixed an issue preventing activation of the "Count" option in the Event Table summary row for certain fields.

      • Renamed the Scenario property from IniState to InitialState for clarity and consistency.

      • Corrected ChartStartTime in scenarios created with Integrated Planner so it is one hour ahead of StartTime.

    • Import, export, compatibility, and API behavior

      • Fixed an issue where SAInt did not show warnings or errors when zone names differed between the EZN and ENO sheets during import.

      • Added support for POCO version 3.8 to load and save networks generated from version 3.8.16.6 and earlier.

      • Fixed an issue where exporting tables from groups, zones, or subs included all objects of the type instead of only those in the container, ensuring exports reflect the filtered selection accurately.

      • Improved the warning mechanism during import to reduce excessive log messages by summarizing default value usage, making logs clearer and less overwhelming.

      • Fixed an issue where pathplot did not support float values in the plot range declaration.

      • Updated API calls to use the new https://developer.nlr.gov/ domain to ensure uninterrupted access to NREL data providers and avoid service disruption.

      • Fixed an issue where importing profiles did not log errors for profiles declared without data or data without declaration.

      • Fixed an issue where importing an open Excel template caused SAInt to hang.

      • Fixed a Telerik license issue that caused "writeESOL()"" to export empty Excel files with exceptions.

      • Fixed a typo in the API example and aligned the property name from TimeLimit to SolverTimeLimit to match the GUI.

      • Improved the API so that "runESIMNoSol" no longer creates condition files, reducing file IO and preserving warm start files.

      • Fixed import behavior to allow negative line resistance (RRDEF) values without clipping to zero and added warnings in import logs when negative resistances are detected.

      • Updated validation to allow "NaN" as a valid value for RatedS and RatedV properties, enabling users to enter valid data without errors.

    • GUI stability, responsiveness, and table/filter usability

      • Fixed an issue where changing selected filter items in tables caused the GUI to freeze, improving stability when filtering data.

      • Fixed an issue where adding multiple objects opened an individual editor for each, causing slow performance.

      • Fixed an issue where re-configuring filters while objects were selected caused SAInt to freeze, enabling smoother multi-edit workflows.

      • Updated context menu text from "Scenario Event" to "Add Scenario Event" to reduce user confusion and clarify that a new event is being created.

      • Fixed a performance issue where deleting many branches took excessively long.

      • Fixed an issue where very long object names caused windows to become excessively large and hinder navigation.

      • Fixed an issue where the "Source CRS Selector" window took more than 10 seconds to open due to coordinate conversion library changes.

      • Added context menu options to open custom tables showing only monitored branches (MBR) or ASVCX objects related to a specific contingency or ASVC, improving data accessibility in large models.

      • Fixed an issue where filtering log entries by time using "EqualTo" or "GreaterThan" did not work and cleared the filter input.

      • Fixed an issue where hovering over the Map View window automatically brought it in front and moved chart windows to the background.

      • Added validation messages to inform users when numeric inputs are outside the valid range and reset to default.

      • Optimized node table lookup to prevent SAInt from freezing for minutes when opening node tables for specific zones, improving responsiveness.

    • Model Explorer, object management, contingencies, and hub system objects

      • Fixed an issue causing missing coupling object icons in the Model Explorer when loading a hub system.

      • Fixed an exception preventing creation of coupling objects in the Hub System and corrected Model Explorer display issues. Users can now create hub system coupling objects without errors and see all children correctly.

      • Fixed an exception thrown when deleting a branch that is a monitored branch (MBR) in a contingency (CTG).

      • Fixed an issue where deleting branches did not update or remove related CTG and MBR objects.

    • Logging, diagnostics, error messages, and user-facing text

      • Fixed an issue where the log window reported simulation completion well before the user was notified, preventing confusion and errors from premature actions during large PCM simulations.

      • Fixed missing exception window for combined simulations so users now receive proper exception messages when any contributing scenario fails.

      • Fixed exception messages to include network and scenario names when loading fails, providing clearer context for troubleshooting.

      • Improved the style and presentation of third party notices for better clarity and compliance.

      • Fixed some typos in error log messages.

      • Fixed an issue where MAP files were not printed during infeasible scenario runs, ensuring users receive complete diagnostic files (*.map, *.lp, *.ilp) for troubleshooting.

      • Removed irrelevant internal Gurobi license log messages during PCM scenario execution to provide users with cleaner, more informative logs and reduce confusion.

    • Plugins, report viewer, licensing, setup, and external dependencies

      • Changed the tool name from "HTML Viewer" to "Report Viewer" to better reflect its purpose and improve user understanding.

      • Fixed SAInt crash when plugin execution is denied access by handling the failure gracefully and providing helpful error information.

      • Removed dependency between Plugin Process and Report Files Viewer windows so users can minimize or close each independently, improving window control.

      • Added support for running multiple plugins simultaneously, allowing users to continue using SAInt while long-running plugins execute in parallel.

      • Updated setup to include the latest Codemeter 9.0 runtime installer, allowing users to upgrade seamlessly and benefit from new features and fixes.

  • Renamed Properties:

    Object Type Old Name New Name

    ASVC

    MinVal

    MinReq

    ASVC

    MinValPrice

    MinReqPrice

    ESCE

    TimeHRZ

    TimeHorizon

    ESCE

    dt

    TimeStep

    ESCE

    PrfStartTime

    GlobalProfileStartTime

    ESCE

    eps

    ResidualTolerance

    ESCE

    kmax

    MaxResidualIterations

    ESCE

    kmaxcnstr

    MaxControlIterations

    ESCE

    TimeLimit

    SolverTimeLimit

    ESCE

    RelMipGap

    RelativeMipGap

    ESCE

    AbsMipGap

    AbsoluteMipGap

    ESCE

    TimeLA

    TimeLookAhead

    ESCE

    dtLA

    TimeStepLookAhead

    ESCE

    dumpLP

    WriteLPFile

    ESCE

    AverageFlowPrf

    AverageFlowProfiles

    ESCE

    IniState

    InitialState

You can download SAInt 3.9 from the the community Forum download page here!

4. How to Search Titles and Text

To search titles and text in SAInt Docs, type the words in the top-right search box. The section titles containing any of those word are found at first, then the search is performed on the text. By default, the search only applies to the current component. Uncheck the box in this component, to enable searching on all the components. Use any of these five advanced searching techniques to customize your search:

(1) Any word will be reduced to its stem. For example, to search "objects" is the same as to search "object".

(2) To find sections whose titles contain "network", type:

title:network

(3) To perform a logical AND search, like "foo AND bar", prefix both words with +:

+foo +bar

This can also be combined with the second technique:

+title:network +gas

(4) Similarly, to exclude a word, prefix it with -:

+foo bar -baz

(5) The wildcard (*) is supported. For example, to search any word with an "oo"-ending:

*oo