# PlantPredict Performance API - Quick Start Guide Source: https://docs.plantpredict.com/api-docs/api_quick_start_guide Note: The PlantPredict Performance API requires an active PlantPredict license plus the Performance API extension. API access is granted on a company-wide basis and API credentials are unique to each user account. ## Step 1: Get your API credentials Once you’ve logged into PlantPredict, if you can see the gear icon at the bottom left corner of the page, you are an Admin user capable of generating your own API credentials (as well as other team member credentials) and should proceed to **Step 1a**. If you cannot see the gear icon, proceed to **Step 1b**. Picture8.png ## Step 1a: Generate API credentials yourself Click the gear icon to open your Company Account Management page. Search for the user’s name that you want to create API credentials for and click that name. Click the **Generate API Credentials** button in the upper right corner of page and click **Continue** at the Warning prompt. Picture2.png ## Step 1b: Request API credentials from your PlantPredict company admin You’ll need to request API credentials from your Company Admin. Ask them to follow **Step 1a** to generate credentials on your behalf. ## Step 2: Open an API client It is helpful to work with an API Client application to interact with the PlantPredict API. If you don’t already have a preferred API Client, we recommend Postman. Create a free Postman account here: [https://www.postman.com/](https://www.postman.com/). ## Step 3: Create a new Workspace within Postman We recommend creating a new Workspace to hold the PlantPredict API collection of requests. To do this, click on Workspaces in the upper left corner of page, click **Create Workspace**, select**Blank Workspace** , enter a name for your Workspace, select **Internal**, and click **Create**. Now you have a destination Workspace to import the PlantPredict API collection. Picture3.png ## Step 4: Access the PlantPredict API documentation Open the API documentation here: [https://documenter.getpostman.com/view/3855302/UVsHUoHa](https://documenter.getpostman.com/view/3855302/UVsHUoHa). This contains general information about the API, documentation on each request type and example requests and responses ## Step 5: Import the PlantPredict API Collection into Postman With the documentation open, click \*\*Run in Postman \*\*in the upper right corner of page. Select \*\*Postman for Web \*\*(unless you are using the desktop version of Postman). Select the Workspace you created in Step 5 and click **Import**. You now have the complete PlantPredict API collection of requests and documentation within your Postman Workspace. Picture4.png ## Step 6: Generate your access token Navigate to the Authorization page of the plantpredict-api collection and complete the following fields: * **Access Token URL:** [https://terabase-prd.auth.us-west-2.amazoncognito.com/oauth2/token](https://terabase-prd.auth.us-west-2.amazoncognito.com/oauth2/token) * **Client ID:** \ * **Client Secret:** \ * **Scope:** transactions/post transactions/get Picture5.png Scroll to the bottom of Authorization page, click **Get New Access Token**, then click **Proceed** and finally click **Use Token**. You should now have a valid API access token saved. ## Step 7: Enter the base URL for the API Collection Within your Postman Workspace, click on any of the requests within the plantpredict-api collection folders and enter the Base URL as: [https://api.plantpredict.terabase.energy](https://api.plantpredict.terabase.energy). This step automatically updates the Base URL throughout the entire collection. Picture6.png ## Step 8: Test your API connection: Navigate to the **System -> GET Version** request and click on it. Click the **Send** button and verify you receive a valid response (such as: *"version": "12.10.0.25646"*). Picture7.png You now have full access to send/receive data via the PlantPredict API using any of the GET, POST, PUT or DEL requests within the plantpredict-api collection! # Source: https://docs.plantpredict.com/api-docs/intro PlantPredict Performance API and Python SDK - automate utility-scale solar energy predictions, manage projects, predictions, power plants, weather, modules, and inverters via REST or Python.
PlantPredict

API & SDK

The engine powering PlantPredict's web interface is the **PlantPredict Performance API** (Application Programming Interface). All of the calculations, models and algorithms necessary to process data, manage the asset libraries, and run complex utility-scale energy predictions are done by PlantPredict's API – in other words, "*the backend*" of PlantPredict. Anyone with a PlantPredict account and access to their API credentials (through their company administrator) can access all of PlantPredict's functionality through the API directly. This enables powerful scripting and automation of high-time-resolution, complex, utility-scale energy predictions, which in turn can supercharge your business or analytical needs – a capability that is unparalleled in the industry. No UI interaction necessary! ## Where to start Browse every endpoint with request/response schemas, examples, and an interactive playground. Generated from our OpenAPI 3.1 specification. Get an access token and make your first request in minutes using Postman or any HTTP client. Install the `plantpredict` package and run your first prediction in pure Python. Import the published collection into your own Postman workspace for interactive exploration. ## Domain model at a glance * **Project** — a named site (lat/lon) that holds one or more Predictions. * **Prediction** — a simulation configuration (model choices, period, weather reference) nested under a Project. * **PowerPlant** — the physical plant design attached to a Prediction: Blocks → Arrays → Inverters → DC Fields. * **Weather / Module / Inverter** — company-wide libraries referenced by Predictions and PowerPlants. * **Shade Scene** — optional 3D shading model attached to a Prediction's DC Fields. Full descriptions of each entity, the typical workflow to run a prediction, and the authentication flow are documented in the [API Reference overview](/api-reference). ## Authentication OAuth 2.0 **Client Credentials** flow via AWS Cognito. | Setting | Value | | ------------------- | -------------------------------------------------------------------- | | Token URL | `https://terabase-prd.auth.us-west-2.amazoncognito.com/oauth2/token` | | Scopes | `transactions/post transactions/get` | | Credential delivery | HTTP Basic auth on the token request | | API base URL | `https://api.plantpredict.terabase.energy` | API credentials (Client ID + Secret) are generated per user by a company admin via the gear icon → user profile → **Generate API Credentials**. They are shown only once — store them in a secret manager. ## Machine-readable resources Every PlantPredict endpoint is described in a single OpenAPI 3.1 file. This is the canonical source for code generation, API mocking, AI assistants, and any tooling that needs structured knowledge of the API. | Resource | URL | | ----------------------------- | ------------------------------------------------------------------------------------------------ | | OpenAPI 3.1 spec (YAML) | [`/api-docs/api-reference/plantpredict-api.yaml`](/api-docs/api-reference/plantpredict-api.yaml) | | Endpoint reference (rendered) | [`/api-reference`](/api-reference) | | LLM-optimized site index | [`/llms.txt`](/llms.txt) | | LLM-optimized full content | [`/llms-full.txt`](/llms-full.txt) | ## For AI agents and LLM-powered tools This documentation site is built for both humans and machines: * **Pages are server-rendered**, so crawlers and LLM web tools see endpoint descriptions, parameters, and schemas in the HTML — no JavaScript execution required. * **OpenAPI spec** is published at the URL above. Point any agent, code generator, or [Model Context Protocol](https://modelcontextprotocol.io) client at it directly. * **`llms.txt` / `llms-full.txt`** index every page on this site in an LLM-friendly format (see [llmstxt.org](https://llmstxt.org)). * **Built-in MCP server**: this site exposes a Model Context Protocol endpoint that ChatGPT, Claude, Cursor, and other MCP-aware clients can connect to for context-aware Q\&A across the entire documentation. Use the "Ask AI" / context menu (top right of any page) to copy or open the page in your preferred AI tool. If you are an AI agent helping a developer integrate with PlantPredict, start with the [API Reference](/api-reference) for endpoint details and the [API Quick Start Guide](/api-docs/api_quick_start_guide) for the authentication flow. # Postman Collection Source: https://docs.plantpredict.com/api-docs/postman Use the PlantPredict API from your own Postman workspace, or import the OpenAPI spec into any API client. The complete, machine-readable API reference lives in the [API Reference](/api-reference) section of this site — that is the canonical source and the version indexed by search engines and AI tools. ## Use the API from Postman Import the published collection into your workspace and follow the [API Quick Start Guide](/api-docs/api_quick_start_guide) for authentication setup: * [Open the PlantPredict collection in Postman](https://documenter.getpostman.com/view/3855302/UVsHUoHa) ## Use any other API client If your tool of choice (Insomnia, Bruno, Hoppscotch, IntelliJ HTTP Client, etc.) supports OpenAPI, import the spec directly: * OpenAPI 3.1 spec: [`/api-docs/api-reference/plantpredict-api.yaml`](/api-docs/api-reference/plantpredict-api.yaml) ## Generate a client The same OpenAPI file can be fed into [openapi-generator](https://openapi-generator.tech/), [oapi-codegen](https://github.com/oapi-codegen/oapi-codegen), or any other code generator to produce a typed client in your language of choice. The official [Python SDK](/api-docs/python-sdk) is the recommended starting point for Python users. # Github SDK Repository Source: https://docs.plantpredict.com/api-docs/python-sdk # PlantPredict Python SDK - Quick Start Guide Source: https://docs.plantpredict.com/api-docs/sdk_quick_start_guide Note: The PlantPredict Performance API requires an active PlantPredict license plus the Performance API extension. API access is granted on a company-wide basis and API credentials are unique to each user account. The PlantPredict Python SDK is free and open source but requires an active PlantPredict license plus the Performance API extension to interact with PlantPredict through the API. ## Step 1: Get your API credentials Once you’ve logged into PlantPredict, if you can see the gear icon at the bottom left corner of the page, you are an Admin user capable of generating your own API credentials (as well as other team member credentials) and should proceed to **Step 1a**. If you cannot see the gear icon, proceed to **Step 1b**. Picture8.png ## Step 1a: Generate API credentials yourself Click the gear icon to open your Company Account Management page. Search for the user’s name that you want to create API credentials for and click that name. Click the **Generate API Credentials** button in the upper right corner of page and click **Continue** at the Warning prompt. Picture2.png ## Step 1b: Request API credentials from your PlantPredict company admin You’ll need to request API credentials from your Company Admin. Ask them to follow **Step 1a** to generate credentials on your behalf. ## Step 2: Install Python and set up an IDE If you do not already have a working python IDE (Integrated Development Environment) configured, we recommend setting one up as this can make developing, running and debugging your code easier and more efficient. You can choose to install a local IDE or use a web-based IDE. Installing a local IDE will require you to install python on your machine: [https://www.python.org/](https://www.python.org/). From there, you can either use the IDE that comes packaged within python (IDLE) or download an alternative IDE such as Visual Studio Code ([code.visualstudio.com](http://code.visualstudio.com)), Pycharm ([jetbrains.com/pycharm](https://www.jetbrains.com/pycharm/)) or many others. Alternatively, you can use a web-based IDE which allows you to develop, run and debug python code without having to install python locally. There are many web-based IDEs to choose from including Python Online ([pythononline.net](http://pythononline.net)), Github Codespaces ([github.com/codespaces](https://github.com/codespaces)), Replit ([replit.com](http://replit.com)) and many others.  ## Step 3: Set up a virtual environment (Optional) If you are planning to work on multiple software projects / applications and are working within a local IDE, we recommend setting up a virtual environment for each project. This helps to keep package and library dependencies isolated between your different projects. Feel free to skip this step if this is not important or if you’re using a web-based IDE (which typically manages environments and package dependency isolation for you in the background). ## Step 4: Install the PlantPredict Python SDK package Use the package installer that comes with your IDE to search for and install ‘plantpredict’ or use the ‘pip install’ command at the command line to do the same. See this guide for more help on installing packages within python: ([https://packaging.python.org/en/latest/tutorials/installing-packages/](https://packaging.python.org/en/latest/tutorials/installing-packages/)) download.png Picture10.png ## Step 5: Test your SDK connection Enter the code snippet from the screenshot below, replacing the Client ID and Client Secret strings with your personal Client ID and Client Secret. Press the Run button and verify the successful connection message displays in the output console. image.png ## Step 6: Review the Python SDK documentation and example scripts Now that you’ve successfully connected to the Performance API using the Python SDK, we recommend reviewing the documentation, source code and example scripts to better understand what’s included in the SDK and how it can be utilized. All Python SDK documentation is available in Github here: [https://github.com/plantpredict/python-sdk](https://github.com/plantpredict/python-sdk). # Get a specific ASHRAE station by name Source: https://docs.plantpredict.com/api-reference/ashrae/get-a-specific-ashrae-station-by-name /api-docs/api-reference/plantpredict-api.yaml get /ASHRAE/GetStation ### GET /ASHRAE/GetStation Returns the closest ASHRAE station matching the provided name and shortest distance from the specified coordinates. **Parameters:** - `StationName` (query, required): Name of the ASHRAE station to match. - `Latitude` (query, required): Latitude coordinate. - `Longitude` (query, required): Longitude coordinate. - `Version` (query, optional): ASHRAE version (AshraeVersionEnum). Default: Version_2021. # Get nearest ASHRAE station by coordinates Source: https://docs.plantpredict.com/api-reference/ashrae/get-nearest-ashrae-station-by-coordinates /api-docs/api-reference/plantpredict-api.yaml get /ASHRAE ### GET /ASHRAE Returns the closest ASHRAE station based on the specified coordinates. The station with the shortest distance from the latitude and longitude is returned. **Parameters:** - `Latitude` (query, required): Latitude coordinate. - `Longitude` (query, required): Longitude coordinate. - `Version` (query, optional): ASHRAE version (AshraeVersionEnum). Default: Version_2021. # Add a user to a company Source: https://docs.plantpredict.com/api-reference/company/add-a-user-to-a-company /api-docs/api-reference/plantpredict-api.yaml post /Company/{companyId}/User Adds an existing PlantPredict user (or invites a new one by email) to the given company. The caller must be an admin of the target company. Newly invited users receive an email with onboarding instructions. # Generate API credentials for a user Source: https://docs.plantpredict.com/api-reference/company/generate-api-credentials-for-a-user /api-docs/api-reference/plantpredict-api.yaml post /User/{userId}/Secret Generates a fresh API client ID and secret for the given user. The secret is returned **only in this response** and cannot be retrieved later — store it securely. Calling this endpoint a second time rotates the credentials; any previously issued pair is invalidated. # Get company default settings Source: https://docs.plantpredict.com/api-reference/company/get-company-default-settings /api-docs/api-reference/plantpredict-api.yaml get /Company/DefaultSettings Returns default settings for your company. # Update company default settings Source: https://docs.plantpredict.com/api-reference/company/update-company-default-settings /api-docs/api-reference/plantpredict-api.yaml put /Company/DefaultSettings Updates default settings for your company. Requires Admin role. Default Settings are prediction input values customized per company. # List all countries Source: https://docs.plantpredict.com/api-reference/country/list-all-countries /api-docs/api-reference/plantpredict-api.yaml get /Country ### Overview Retrieves the list of all supported countries. ### Response On success, the endpoint returns HTTP `200 OK` with a JSON array of country objects. Each object has the following fields: - `id` _(integer)_ Internal identifier for the country. - `name` _(string)_ Human-readable country name (e.g., `"Afghanistan"`, `"Åland Islands"`). - `numeric` _(integer)_ Numeric country code, typically aligned with ISO 3166-1 numeric codes (e.g., `4`, `248`). - `alpha` _(string)_ Alphabetic country code, typically aligned with ISO 3166-1 alpha-3 codes (e.g., `"AFG"`, `"ALA"`). # Get all definitions or filter by enum type Source: https://docs.plantpredict.com/api-reference/definitions/get-all-definitions-or-filter-by-enum-type /api-docs/api-reference/plantpredict-api.yaml get /Definitions ## Overview This request calls the PlantPredict API **Definitions** endpoint to retrieve the list of available model definitions. Ensure these variables are correctly set in the active environment before sending the request. ## Typical Use Cases - Retrieve available model definitions before **creating** a new project. - Look up model definitions prior to **updating** an existing project. - Inspect available model types and their identifiers for client-side validation or UI population. ## Successful Response (High-Level) A successful response returns an array of **definition objects**, each typically including: - A unique **ID** for the definition. - A human-readable **name**. - Additional **metadata** describing the model definition and how it can be used in projects. # Calculate cashflow results Source: https://docs.plantpredict.com/api-reference/financialmodel/calculate-cashflow-results /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/CalculateCashflowResults Returns yearly cashflow results based on prediction results and stored financial model input parameters. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get financial model parameters Source: https://docs.plantpredict.com/api-reference/financialmodel/get-financial-model-parameters /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/FinancialModelParameters Returns the persisted financial model inputs and calculations for a prediction. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Save financial model parameters Source: https://docs.plantpredict.com/api-reference/financialmodel/save-financial-model-parameters /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/FinancialModelParameters Takes input parameters and calculates new financial model inputs. Does not persist; returns calculated values. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `modelInputs` (body, required): FinancialModelParameters with input values to calculate. # Calculate kVA for an inverter at given conditions Source: https://docs.plantpredict.com/api-reference/inverters/calculate-kva-for-an-inverter-at-given-conditions /api-docs/api-reference/plantpredict-api.yaml post /Inverter/kVA Get the kVA rating of an Inverter by providing the entire Inverter entity, elevation, temperature, and cooling temp state. # Change status of one or more inverters Source: https://docs.plantpredict.com/api-reference/inverters/change-status-of-one-or-more-inverters /api-docs/api-reference/plantpredict-api.yaml post /Inverter/Status Change the status of one or more Inverters. # Create an inverter Source: https://docs.plantpredict.com/api-reference/inverters/create-an-inverter /api-docs/api-reference/plantpredict-api.yaml post /Inverter Creates a new inverter from the provided body. Response is the ID of the newley created inverter asset. # Delete an inverter Source: https://docs.plantpredict.com/api-reference/inverters/delete-an-inverter /api-docs/api-reference/plantpredict-api.yaml delete /Inverter/{inverterId} Deletes an existing Inverter, where the target inverter to delete is the ID provided in the URL. # Get an inverter by ID Source: https://docs.plantpredict.com/api-reference/inverters/get-an-inverter-by-id /api-docs/api-reference/plantpredict-api.yaml get /Inverter/{inverterId} Creates a .PPI file, which can be used to import the Inverter into PlantPredict for another user. # Get inverter overview list Source: https://docs.plantpredict.com/api-reference/inverters/get-inverter-overview-list /api-docs/api-reference/plantpredict-api.yaml get /Inverter/InverterOverview # Inverter Overview Returns a list of all available Inverters however with simplified data properties. ## Overview This endpoint provides a lightweight version of the full inverter list, returning essential inverter information without the complete technical specifications and detailed configuration data. It's optimized for scenarios where you need a quick overview of available inverters without the overhead of fetching complete inverter records. ## Response Fields The simplified response includes the following fields for each inverter: | Field | Type | Description | | --- | --- | --- | | `id` | integer | Unique identifier for the inverter | | `ownerId` | integer | ID of the user or organization that owns this inverter configuration | | `name` | string | Display name for the inverter | | `status` | integer | Current status of the inverter record (1=Draft, 2=In Review, 3=Active, 4=Archived) | | `lastModified` | string (ISO 8601) | Timestamp of the last modification to this inverter record | | `lastModifiedBy` | object | User who last modified the record | | `lastModifiedBy.firstName` | string | First name of the user who last modified the record | | `lastModifiedBy.lastName` | string | Last name of the user who last modified the record | | `model` | string | Manufacturer's model number/name for the inverter | | `manufacturer` | string | Name of the inverter manufacturer | | `powerRated` | number | Rated power output of the inverter in kW | | `outputVoltage` | number | Output voltage of the inverter in volts | | `minVoltage` | number | Minimum operating voltage in volts | | `maxMPPVoltage` | number | Maximum Power Point (MPP) voltage in volts | | `inverterType` | integer | Type classification of the inverter (1=String Inverter, 2=Central Inverter) | ## Excluded Fields Compared to the full inverter endpoint, this simplified overview **excludes**: - Detailed efficiency curves and performance data - Complete electrical specifications and ratings - Thermal characteristics and derating factors - Advanced configuration parameters - Certification and compliance documentation - Extended metadata and custom fields ## Use Cases ### When to Use This Endpoint - **Dashboard displays** - Populating dropdown lists or selection menus - **Quick searches** - Finding inverters by name or manufacturer without loading full details - **List views** - Displaying tables of available inverters with basic information - **Performance optimization** - Reducing payload size and response time for overview screens - **Mobile applications** - Minimizing data transfer for bandwidth-constrained environments ### When to Use the Full Endpoint - **Detailed analysis** - When you need complete technical specifications for engineering calculations - **Configuration management** - Setting up or modifying inverter parameters in a project - **Reporting** - Generating comprehensive reports that require all inverter data - **Data export** - Extracting complete inverter information for external systems # Get stored kVA for an inverter Source: https://docs.plantpredict.com/api-reference/inverters/get-stored-kva-for-an-inverter /api-docs/api-reference/plantpredict-api.yaml get /Inverter/{inverterId}/kVA Get the kVA rating of an Inverter by Id. # List all accessible inverters Source: https://docs.plantpredict.com/api-reference/inverters/list-all-accessible-inverters /api-docs/api-reference/plantpredict-api.yaml get /Inverter # Get All Inverters Returns a list of all available Inverters in the system. ## Overview This endpoint retrieves a comprehensive list of all inverter configurations stored in the database. Each inverter entry contains detailed technical specifications, power ratings, voltage limits, efficiency curves, and metadata about ownership and modification history. ## Response Fields ### Status & Identification - **id** - Unique identifier for the inverter record - **name** - Display name of the inverter (typically includes manufacturer, model, and specifications) - **status** - Current status of the inverter record: - `2` - Active/Published - `5` - Archived - `6` - Legacy/Deprecated - **description** - Optional notes or additional information about the inverter configuration ### Manufacturer & Model Information - **manufacturer** - Inverter manufacturer name (e.g., "ABB") - **model** - Specific model identifier (e.g., "PVS800-57-1000kW-C") - **inverterType** - Classification of inverter type: - `2` - Central inverter - Other values may represent string or micro inverters ### Power Specifications - **powerRated** - Rated AC power output in kilowatts (kW) - **apparentPower** - Apparent power capacity in kilovolt-amperes (kVA) - **minDCPowerThreshold** - Minimum DC power threshold in watts (W) for operation - **outputVoltage** - AC output voltage in volts (V) ### Voltage & Current Limits - **minVoltage** - Minimum DC input voltage in volts (V) - **maxMPPVoltage** - Maximum power point tracking voltage in volts (V) - **maxAbsoluteVoltage** - Maximum absolute DC voltage limit in volts (V) - **maxCurrent** - Maximum DC input current in amperes (A) ### Environmental & Physical Constraints - **maxElevation** - Maximum operating elevation in meters above sea level ### Curve Settings & Data Configuration - **usekVACurves** - Boolean flag indicating whether kVA derating curves are enabled - **usePQCurves** - Boolean flag indicating whether power quality curves are enabled - **dataSource** - Source identifier for the inverter data: - `2` - Standard/manufacturer data - Other values may indicate custom or imported data - **efficiencyCurves** - Array of efficiency curve data points (null if not configured) - **kVACurves** - Array of kVA derating curve data (null if not configured) - **pqCurves** - Array of power quality curve data (null if not configured) ### Ownership & Company Information - **companyId** - ID of the company that owns this inverter configuration - **company** - Company object (typically null in list responses) - **ownerId** - User ID of the inverter configuration owner - **owner** - Owner user object (typically null in list responses) ### Audit & Modification Tracking - **createdDate** - ISO 8601 timestamp when the inverter was created - **lastModified** - ISO 8601 timestamp of the most recent modification - **lastModifiedById** - User ID of the person who last modified the record - **lastModifiedBy** - Detailed user object containing: - **id** - User ID - **email** - User email address - **firstName** / **lastName** - User's name - **jobTitle** - User's job title - **companyId** - User's company affiliation - **status** - User account status (0 = system account, 1 = active) - **createdDateUtc** - When the user account was created - **lastLoginDateUTC** - Most recent login timestamp - **uuid** - Unique user identifier - **migrationAgreementAcceptance** - Agreement acceptance flag - **clientCredentialsCreatedOnUTC** - API credentials creation timestamp - **roles** / **logins** - Arrays of user roles and login records ## Usage Notes - The response returns an array of inverter objects - Inverters with `status: 3` are currently active and available for use - Archived or deprecated inverters (`status: 5` or `6`) may still appear in results for historical reference - Curve data (`efficiencyCurves`, `kVACurves`, `pqCurves`) is typically null in list responses and must be retrieved individually if needed - User and company objects in the response are often null in list views to reduce payload size - Multiple inverters may share the same model name but have different IDs and configurations - The `lastModifiedBy` object provides full audit trail information for tracking changes # Parse an OND file and return inverter data Source: https://docs.plantpredict.com/api-reference/inverters/parse-an-ond-file-and-return-inverter-data /api-docs/api-reference/plantpredict-api.yaml post /Inverter/ParseONDFile This endpoint is used to parse an OND file. The response will be a valid Inverter object. # Update an inverter Source: https://docs.plantpredict.com/api-reference/inverters/update-an-inverter /api-docs/api-reference/plantpredict-api.yaml put /Inverter/{inverterId} Updates an existing Inverter, where the target inverter to update is the ID provided in the URL. # Advanced generation of single-diode parameters Source: https://docs.plantpredict.com/api-reference/modules/advanced-generation-of-single-diode-parameters /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/GenerateSingleDiodeParametersAdvanced Same goal as `generateSingleDiodeDefault` but accepts a full `Module` payload — letting you override solver constraints (shunt resistance, recombination parameter, series resistance, etc.) and tune the fit before persisting. # Calculate effective irradiance response Source: https://docs.plantpredict.com/api-reference/modules/calculate-effective-irradiance-response /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/CalculateEffectiveIrradianceResponse Computes the module's predicted relative efficiency vs. irradiance at a fixed temperature. Returned as an array of (irradiance, relative-efficiency) points suitable for plotting against measured low-light curves. # Create a module Source: https://docs.plantpredict.com/api-reference/modules/create-a-module /api-docs/api-reference/plantpredict-api.yaml post /Module Creates a new module from the provided body contents. # Create a module from parsed PAN file data Source: https://docs.plantpredict.com/api-reference/modules/create-a-module-from-parsed-pan-file-data /api-docs/api-reference/plantpredict-api.yaml post /Module/CreatePANFileModule Creates a new module library entry from parsed PVsyst PAN file data. The raw `.pan` file must be parsed client-side; this endpoint accepts the structured JSON form rather than the file itself. Equivalent to a manual module entry but pre-populated with PVsyst's parameter set. # Delete a module Source: https://docs.plantpredict.com/api-reference/modules/delete-a-module /api-docs/api-reference/plantpredict-api.yaml delete /Module/{moduleId} Permanently removes a module from the company library. Fails if the module is referenced by any active prediction's PowerPlant; reassign or delete dependents first. # Delete a module note Source: https://docs.plantpredict.com/api-reference/modules/delete-a-module-note /api-docs/api-reference/plantpredict-api.yaml delete /Module/{moduleId}/Note/{noteId} Deletes a single note from a module's audit trail. Permanent; intended for cleaning up accidental entries rather than rewriting history. # Export a module Source: https://docs.plantpredict.com/api-reference/modules/export-a-module /api-docs/api-reference/plantpredict-api.yaml get /Module/{moduleId}/Export Returns a module library entry in a portable format suitable for re-import into another PlantPredict company or use in external modeling tools. # Generate IV curve for a module Source: https://docs.plantpredict.com/api-reference/modules/generate-iv-curve-for-a-module /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/GenerateIVCurve Generates a synthetic IV curve at the requested irradiance and temperature for a fully-parameterized module. The number of points is controlled via `numIVPoints` in the payload (default 100). Useful for visual QA of a single-diode parameter set. # Generate single-diode parameters from basic datasheet values Source: https://docs.plantpredict.com/api-reference/modules/generate-single-diode-parameters-from-basic-datasheet-values /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/GenerateSingleDiodeParametersDefault Derives a complete single-diode model from a minimal set of datasheet values (STC power, voltages, currents, temperature coefficients, cell technology). A good starting point when you don't have measured IV curves to work from. For finer control over the solver and curve-fitting, use `POST /Module/Generator/GenerateSingleDiodeParametersAdvanced` instead. # Get a module by ID Source: https://docs.plantpredict.com/api-reference/modules/get-a-module-by-id /api-docs/api-reference/plantpredict-api.yaml get /Module/{moduleId} Gets the specific module from the provided Id. # Get default IAM curve for a given ASHRAE IAM coefficient Source: https://docs.plantpredict.com/api-reference/modules/get-default-iam-curve-for-a-given-ashrae-iam-coefficient /api-docs/api-reference/plantpredict-api.yaml get /Module/DefaultIAM Returns the default incidence-angle modifier (IAM) curve for a given ASHRAE b₀ coefficient. Use this when defining a new module without measured IAM data; the curve is shared across all modules of the same construction type. # Get module overview list Source: https://docs.plantpredict.com/api-reference/modules/get-module-overview-list /api-docs/api-reference/plantpredict-api.yaml get /Module/ModuleOverview Gets all available modules and with only critical meta data for properties. # Get notes for a module Source: https://docs.plantpredict.com/api-reference/modules/get-notes-for-a-module /api-docs/api-reference/plantpredict-api.yaml get /Module/{moduleId}/Note Returns the audit-trail notes attached to a module — creation, edits, status changes, and freeform user comments — in reverse chronological order. # List all accessible modules Source: https://docs.plantpredict.com/api-reference/modules/list-all-accessible-modules /api-docs/api-reference/plantpredict-api.yaml get /Module Gets all available modules and their corresponding properties. # Optimize series resistance for effective irradiance response Source: https://docs.plantpredict.com/api-reference/modules/optimize-series-resistance-for-effective-irradiance-response /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/OptimizeSeriesResistance Iteratively refines a module's series resistance so the model's effective-irradiance response matches measured behaviour. Typically called after `generateSingleDiodeAdvanced` when the resulting low-irradiance performance diverges from expectations. # Parse a PAN file and return module data Source: https://docs.plantpredict.com/api-reference/modules/parse-a-pan-file-and-return-module-data /api-docs/api-reference/plantpredict-api.yaml post /Module/ImportPANFile This endpoint will convern a .PAN file and its contents into a JSON structure which is compatible with PlantPredict. The response can be used as the body in a POST request to create a new module. # Process IV curve data Source: https://docs.plantpredict.com/api-reference/modules/process-iv-curve-data /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/ProcessIVCurves Takes a list of measured IV curves (each a list of `{voltage, current}` pairs at a known irradiance/temperature) and extracts the key operating points — `Isc`, `Imp`, `Voc`, `Vmp`, `Pmax` — for each curve. Used as preprocessing before single-diode parameter derivation. # Process key IV points for module parameter derivation Source: https://docs.plantpredict.com/api-reference/modules/process-key-iv-points-for-module-parameter-derivation /api-docs/api-reference/plantpredict-api.yaml post /Module/Generator/ProcessKeyIVPoints Takes pre-extracted IV operating points across multiple irradiance/temperature conditions and computes derived parameters (temperature coefficients, fill factors, etc.) used as inputs to the single-diode solvers. Lighter-weight alternative to `processIVCurves` when you already have the key points. # Update a module Source: https://docs.plantpredict.com/api-reference/modules/update-a-module /api-docs/api-reference/plantpredict-api.yaml put /Module/{moduleId} Updates an existing module using the request body. **All fields are required**, even if they haven’t changed. The module will be overwritten with the values you provide, any fields left out may replace existing values with empty/default ones. # Create power plant Source: https://docs.plantpredict.com/api-reference/powerplant/create-power-plant /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/PowerPlant Creates a power plant for a prediction. May attach X-Message header with configuration warnings. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `powerPlant` (body, required): The PVPlant entity to create. # Get power plant Source: https://docs.plantpredict.com/api-reference/powerplant/get-power-plant /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/PowerPlant Retrieves the power plant configuration for a prediction. Returns full PVPlant entity. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Update power plant Source: https://docs.plantpredict.com/api-reference/powerplant/update-power-plant /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction/{predictionId}/PowerPlant Updates the power plant for a prediction. May attach X-Message header with warnings (e.g., energization date, 3D shading, post height). **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `powerPlant` (body, required): The updated PVPlant entity. # Cancel a running prediction Source: https://docs.plantpredict.com/api-reference/predictions/cancel-a-running-prediction /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/Cancel Cancels a running or queued prediction. Returns success message when cancellation completes. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID to cancel. # Change status of one or more predictions Source: https://docs.plantpredict.com/api-reference/predictions/change-status-of-one-or-more-predictions /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/Status Updates the status of one or more predictions for a project. May trigger report regeneration for completed predictions. **Parameters:** - `projectId` (path, required): The project ID. - `assets` (body, required): List of Asset objects with prediction IDs and new status values. # Create a prediction Source: https://docs.plantpredict.com/api-reference/predictions/create-a-prediction /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction Creates a new prediction under the given project. The prediction starts in `status: 0` (Draft) and must subsequently be associated with a `PowerPlant` via `POST .../PowerPlant` before it can be run. Most model parameters can be left at their defaults; see the `Prediction` schema for the complete list and their enum values. # Delete a prediction Source: https://docs.plantpredict.com/api-reference/predictions/delete-a-prediction /api-docs/api-reference/plantpredict-api.yaml delete /Project/{projectId}/Prediction/{predictionId} Deletes a prediction by project and prediction ID. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID to delete. # Export a prediction Source: https://docs.plantpredict.com/api-reference/predictions/export-a-prediction /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/Export Exports a prediction as JSON. Returns the full project/prediction data for the specified prediction. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID to export. # Export and compare multiple predictions Source: https://docs.plantpredict.com/api-reference/predictions/export-and-compare-multiple-predictions /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionIds}/ExportMulti Exports a comparison report file for a comma-separated list of prediction IDs. Returns an octet-stream file. **Parameters:** - `projectId` (path, required): The project ID. - `predictionIds` (path, required): Comma-separated list of prediction IDs. - `includeNightTimeLosses` (query, optional): Include nighttime losses in export. Default: false. - `includeDetails` (query, optional): Include detailed data. Default: true. # Get a prediction Source: https://docs.plantpredict.com/api-reference/predictions/get-a-prediction /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId} Retrieves a single prediction by project and prediction ID. Does not include the power plant; use the Power Plant endpoint for that. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get albedo data for a prediction Source: https://docs.plantpredict.com/api-reference/predictions/get-albedo-data-for-a-prediction /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/GetAlbedoData Retrieves monthly albedo data for the prediction from NSRDB/NASA. Used for bifacial calculations. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get prediction overview Source: https://docs.plantpredict.com/api-reference/predictions/get-prediction-overview /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/Overview Returns a summary overview of a prediction by project and prediction ID. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # List predictions for a project Source: https://docs.plantpredict.com/api-reference/predictions/list-predictions-for-a-project /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction Returns all predictions for a project. Predictions do not include power plant data; use the Power Plant operation for sub-entities. **Parameters:** - `projectId` (path, required): The project ID. # Run a prediction Source: https://docs.plantpredict.com/api-reference/predictions/run-a-prediction /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/Run Queues a prediction to run. Validates weather data and queue status before queuing. Export options can be customized. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID to run. - `expOptions` (body, optional): ExportOptions to customize export behavior. If omitted, stored options are used. # Update a prediction Source: https://docs.plantpredict.com/api-reference/predictions/update-a-prediction /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction Updates an existing prediction. May attach an X-Message header with a non-blocking warning about the updated entity. **Parameters:** - `projectId` (path, required): The project ID. - `prediction` (body, required): The updated prediction entity. # Update export options for a prediction's power plant Source: https://docs.plantpredict.com/api-reference/predictions/update-export-options-for-a-predictions-power-plant /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction/{predictionId}/PowerPlant/ExportOptions Sets which sub-systems are included when results for this prediction are exported (e.g. nodal-level vs. aggregate, AC system, ESS, custom array configurations). Has no effect on the simulation itself — only on what the export endpoints subsequently return. # Add a note to a project Source: https://docs.plantpredict.com/api-reference/projects/add-a-note-to-a-project /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Note Creates a new note for a project. Returns the created note ID. Note is automatically associated with the project and current user. **Parameters:** - `projectId` (path, required): The project ID. - `note` (body, required): The Note entity (EntityType and EntityID are set automatically). # Change status of one or more projects Source: https://docs.plantpredict.com/api-reference/projects/change-status-of-one-or-more-projects /api-docs/api-reference/plantpredict-api.yaml post /Project/Status Updates the status of a single or multiple projects. Requires a list of assets with IDs and target statuses. **Parameters:** - `assets` (body, required): List of Asset objects containing project IDs and new status values. # Create a project Source: https://docs.plantpredict.com/api-reference/projects/create-a-project /api-docs/api-reference/plantpredict-api.yaml post /Project Creates a new project. Returns the created project ID. May attach an X-Message header with a non-blocking warning about the new entity. **Parameters:** - `project` (body, required): The project entity to create. - `enableMeteonormDownload` (query, optional): Whether to enable Meteonorm weather data download. Default: false. # Delete a project Source: https://docs.plantpredict.com/api-reference/projects/delete-a-project /api-docs/api-reference/plantpredict-api.yaml delete /Project/{projectId} Deletes a project by ID. The user must have permission to delete the project. **Parameters:** - `id` (path, required): The unique identifier of the project to delete. # Delete a project note Source: https://docs.plantpredict.com/api-reference/projects/delete-a-project-note /api-docs/api-reference/plantpredict-api.yaml delete /Project/{projectId}/Note/{noteId} Deletes a note from a project by note ID. Returns true on success, false if delete fails. **Parameters:** - `projectId` (path, required): The project ID. - `noteId` (path, required): The note ID to delete. # Export a project Source: https://docs.plantpredict.com/api-reference/projects/export-a-project /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Export Exports a project as JSON. Returns the full project data for backup or import elsewhere. **Parameters:** - `projectId` (path, required): The unique identifier of the project to export. # Get a project by ID Source: https://docs.plantpredict.com/api-reference/projects/get-a-project-by-id /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId} Retrieves a single project by its ID. The user must have access to the project within their company context. **Parameters:** - `id` (path, required): The unique identifier of the project. # Get current user's projects Source: https://docs.plantpredict.com/api-reference/projects/get-current-users-projects /api-docs/api-reference/plantpredict-api.yaml get /Project/My Returns all projects owned by the current user. Optionally filter by status. **Parameters:** - `status` (query, optional): Filter by project status (ProjectStatusEnum). # Get current user's projects including their predictions Source: https://docs.plantpredict.com/api-reference/projects/get-current-users-projects-including-their-predictions /api-docs/api-reference/plantpredict-api.yaml get /ProjectsAndPredictions/My Returns all projects owned by the current user, including their associated predictions. No parameters required. # Get notes for a project Source: https://docs.plantpredict.com/api-reference/projects/get-notes-for-a-project /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Note Returns all notes for a project. Notes are attached at the project level. **Parameters:** - `projectId` (path, required): The project ID. # Get project overview Source: https://docs.plantpredict.com/api-reference/projects/get-project-overview /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Overview Returns a summary overview of a project by ID. For the full project entity, use the non-overview GET endpoint. **Parameters:** - `projectId` (path, required): The unique identifier of the project. # List projects filtered by status Source: https://docs.plantpredict.com/api-reference/projects/list-projects-filtered-by-status /api-docs/api-reference/plantpredict-api.yaml get /Project/ByStatus Returns a paginated list of projects filtered by status. Only projects the user has access to are included. **Parameters:** - `status` (query, optional): Filter by project status (ProjectStatusEnum). - `skip` (query, optional): Number of records to skip for pagination. - `top` (query, optional): Maximum number of records to return. # List projects (paginated) Source: https://docs.plantpredict.com/api-reference/projects/list-projects-paginated /api-docs/api-reference/plantpredict-api.yaml get /Project Returns a paginated list of projects for which the user has access. Supports optional pagination parameters. **Parameters:** - `skip` (query, optional): Number of records to skip for pagination. - `top` (query, optional): Maximum number of records to return. # Search projects by geographic radius Source: https://docs.plantpredict.com/api-reference/projects/search-projects-by-geographic-radius /api-docs/api-reference/plantpredict-api.yaml get /Project/Search Returns projects within a geographic radius of a latitude/longitude point. Only projects the user has access to are included. **Parameters:** - `latitude` (query, required): Center point latitude. - `longitude` (query, required): Center point longitude. - `searchRadius` (query, required): Search radius in miles. # Cancel report generation Source: https://docs.plantpredict.com/api-reference/reports/cancel-report-generation /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/CancelReportGeneration Cancels queued or running report generation for a prediction. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get plant block details report Source: https://docs.plantpredict.com/api-reference/reports/get-plant-block-details-report /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/Report/PlantBlockDetails Returns the PlantBlockDetails report for a prediction. Not available for batch predictions. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get URL for a generated report Source: https://docs.plantpredict.com/api-reference/reports/get-url-for-a-generated-report /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ReportURL/{reportType} Returns the download URL for a specific report type. Valid report values: PlantSummary, PlantSummary8760, BlockSummary8760, InputsAssumptions. Not available for batch predictions. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `report` (path, required): Report type name (PlantSummary, PlantSummary8760, BlockSummary8760, or InputsAssumptions). # Trigger report generation Source: https://docs.plantpredict.com/api-reference/reports/trigger-report-generation /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/GenerateReports Queues report generation for a completed prediction. Only works when prediction is complete and no report generation is already queued or running. Not available for batch predictions. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get average energy results Source: https://docs.plantpredict.com/api-reference/results/get-average-energy-results /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/AverageEnergy Returns average energy for a prediction that has completed with results. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get detailed energy results Source: https://docs.plantpredict.com/api-reference/results/get-detailed-energy-results /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ResultDetails Returns detailed results for a prediction. Includes granular simulation output data. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get nodal JSON results Source: https://docs.plantpredict.com/api-reference/results/get-nodal-json-results /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/NodalJson Returns time-series nodal data. Scope is determined by the combination of query parameters: - No params → System level - blockNumber → Block level - blockNumber + arrayNumber → Array level - blockNumber + arrayNumber + inverterName → Inverter level - blockNumber + arrayNumber + inverterName + dcFieldNumber → DC Field level Use `nodalParameters` to filter to specific output columns (comma-separated). # Get prediction result summary Source: https://docs.plantpredict.com/api-reference/results/get-prediction-result-summary /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ResultSummary Returns summary results for a prediction by project and prediction ID. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Convert PVC file to PVJ shade scene format Source: https://docs.plantpredict.com/api-reference/shadescene/convert-pvc-file-to-pvj-shade-scene-format /api-docs/api-reference/plantpredict-api.yaml post /ShadeScene/ConvertPVCtoPVJ The PlantPredict 3D Scene uses a JSON-based format to represent common shapefiles (e.g., PVC, SHD). This endpoint converts a standard PV Collada file into the compatible PVJ format. # Convert SHD file to PVJ shade scene format Source: https://docs.plantpredict.com/api-reference/shadescene/convert-shd-file-to-pvj-shade-scene-format /api-docs/api-reference/plantpredict-api.yaml post /ShadeScene/ConvertSHDtoPVJ The PlantPredict 3D Scene uses a JSON-based format to represent common shapefiles (e.g., PVC, SHD). This endpoint converts a standard SHD file into the compatible PVJ format. # Create/upload a shade scene from PVJ data Source: https://docs.plantpredict.com/api-reference/shadescene/createupload-a-shade-scene-from-pvj-data /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction/{predictionId}/ShadeScene/PVJData This request accepts the response of the /ShadeScene/ConvertPVCtoPVJ endpoint in its body, and creates the initial 3D Shade Scene with default settings. # Get 3D shade calculation results Source: https://docs.plantpredict.com/api-reference/shadescene/get-3d-shade-calculation-results /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ShadeScene/Results Returns all 3D scene related results. This includes: - Beam Irradiance losses - Shading Electrical Effect losses - Transposition losses/gains - Combined loss/gain calculations. # Get shade calculation processing status Source: https://docs.plantpredict.com/api-reference/shadescene/get-shade-calculation-processing-status /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ShadeScene/ProcessingStatus Returns status for shading calculations # Get shade scene properties for a DC field Source: https://docs.plantpredict.com/api-reference/shadescene/get-shade-scene-properties-for-a-dc-field /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/ShadeScene/Properties/{dcFieldNumber} Returns the specified shade scene and current property values. # Get TABT processing status Source: https://docs.plantpredict.com/api-reference/shadescene/get-tabt-processing-status /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/TABT/ProcessingStatus Returns the status for: - Transposition Factor Calculations (if necessary) - Terrain Aware Calculations - Overall Status (Transpositions + Terrain) Refer to /Definitions endpoint for status' and their meanings. # Queue shade calculations Source: https://docs.plantpredict.com/api-reference/shadescene/queue-shade-calculations /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/ShadeScene/Run Queue's Shading Calculations. Refer to /Definitions endpoint for status' and their meanings. # Queue TABT calculations Source: https://docs.plantpredict.com/api-reference/shadescene/queue-tabt-calculations /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/TABT/Run Queue's calculations for TABT (Terrain Aware Backtracking) # Update shade scene properties Source: https://docs.plantpredict.com/api-reference/shadescene/update-shade-scene-properties /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction/{predictionId}/ShadeScene This request accepts the response of the /ShadeScene/Properties endpoint in its body, and will update the stored configuration. _Note: All values should be provided, not just properties which are changing_ # Get API version Source: https://docs.plantpredict.com/api-reference/system/get-api-version /api-docs/api-reference/plantpredict-api.yaml get /System/Version Returns the deployed API version string. **Public endpoint** — no authentication required. Useful as a health check and for compatibility-gating in client code. # Get maintenance mode status Source: https://docs.plantpredict.com/api-reference/system/get-maintenance-mode-status /api-docs/api-reference/plantpredict-api.yaml get /System/MaintenanceMode Returns the current system maintenance mode status. # Create new time series Source: https://docs.plantpredict.com/api-reference/timeseries/create-new-time-series /api-docs/api-reference/plantpredict-api.yaml post /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData Adds time series data via JSON. Requires TimeSeriesDTO with Details array. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `timeSeriesData` (body, required): TimeSeriesDTO with Details array (non-empty). # Delete a time series Source: https://docs.plantpredict.com/api-reference/timeseries/delete-a-time-series /api-docs/api-reference/plantpredict-api.yaml delete /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData/{timeSeriesId} Deletes a time series data entry by ID. Note: Time series inputs with active assignments to a power plant cannot be deleted. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `timeSeriesId` (path, required): The time series entry ID to delete. # Download time series as CSV Source: https://docs.plantpredict.com/api-reference/timeseries/download-time-series-as-csv /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData/{timeSeriesId}/CSV Returns the specified time series data properties, including timestamp details except as a .csv binary stream. # Download time series CSV template Source: https://docs.plantpredict.com/api-reference/timeseries/download-time-series-csv-template /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData/Template Returns a CSV template for time series data upload. Use to understand the expected format. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Get time series details Source: https://docs.plantpredict.com/api-reference/timeseries/get-time-series-details /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData/{timeSeriesId}/Details Returns the specified time series data properties, including timestamp details. # List time series data sets Source: https://docs.plantpredict.com/api-reference/timeseries/list-time-series-data-sets /api-docs/api-reference/plantpredict-api.yaml get /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData Returns all time series data for a prediction. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. # Upload time series CSV Source: https://docs.plantpredict.com/api-reference/timeseries/upload-time-series-csv /api-docs/api-reference/plantpredict-api.yaml put /Project/{projectId}/Prediction/{predictionId}/TimeSeriesData Updates time series data via file upload. Replaces existing data with the uploaded file contents. **Parameters:** - `projectId` (path, required): The project ID. - `predictionId` (path, required): The prediction ID. - `file` (form, required): The CSV or data file to upload. # Create a weather file Source: https://docs.plantpredict.com/api-reference/weather/create-a-weather-file /api-docs/api-reference/plantpredict-api.yaml post /Weather Creates a new weather file in the company library from a payload of hourly meteorological records (irradiance, temperature, wind, etc.). For provider-sourced data, use `POST /Weather/Download/{providerId}` instead so metadata and downloads are handled automatically. # Download weather data from a provider Source: https://docs.plantpredict.com/api-reference/weather/download-weather-data-from-a-provider /api-docs/api-reference/plantpredict-api.yaml post /Weather/Download/{providerId} Fetches weather data from an external provider (SolarAnywhere, Meteonorm, NSRDB, etc.) for a given latitude/longitude and persists it as a new weather file in the company library. The `providerId` path parameter is the integer enum value for the provider; see `WeatherDataProvider` via `GET /Definitions` for the full catalog. # Export a weather file Source: https://docs.plantpredict.com/api-reference/weather/export-a-weather-file /api-docs/api-reference/plantpredict-api.yaml get /Weather/{weatherId}/Export Returns the weather file as a downloadable artifact in its native format. Useful for inspecting the data outside PlantPredict or sharing it with other modeling tools. # Finalize a system-generated weather file Source: https://docs.plantpredict.com/api-reference/weather/finalize-a-system-generated-weather-file /api-docs/api-reference/plantpredict-api.yaml post /Weather/FinalizeGeneratedWeather Promotes a system-generated weather file from a temporary/preview state to a permanent library entry. Called after the user reviews and accepts a generated dataset. # Finalize import of a parsed weather file Source: https://docs.plantpredict.com/api-reference/weather/finalize-import-of-a-parsed-weather-file /api-docs/api-reference/plantpredict-api.yaml post /Weather/FinalizeImport The Finalize Import endpoint will execute the same validations as the Quality Check endpoint however if no errors are found the weather file will successfully be imported into your PlantPredict Weather library. The response from the API will be the weather Id of the newly created asset. # Get a weather file Source: https://docs.plantpredict.com/api-reference/weather/get-a-weather-file /api-docs/api-reference/plantpredict-api.yaml get /Weather/{weatherId} Retrieves a single weather file's metadata (provider, location, time range, status). To fetch the actual hourly records, call `GET /Weather/{weatherId}/Detail`. # Get horizon elevation profile for a location Source: https://docs.plantpredict.com/api-reference/weather/get-horizon-elevation-profile-for-a-location /api-docs/api-reference/plantpredict-api.yaml get /Weather/GetHorizonScene Returns the horizon elevation profile (azimuth → elevation angle) for a given latitude/longitude. Used to construct shade scenes that account for terrain or distant obstructions surrounding a site. # Get weather hourly detail records Source: https://docs.plantpredict.com/api-reference/weather/get-weather-hourly-detail-records /api-docs/api-reference/plantpredict-api.yaml get /Weather/{weatherId}/Detail Returns the full hourly time-series records for a weather file — irradiance components, ambient temperature, wind speed, etc. The response can be large (8760+ rows for a full year); plan to stream or page on the client side. # Parse a raw weather file upload Source: https://docs.plantpredict.com/api-reference/weather/parse-a-raw-weather-file-upload /api-docs/api-reference/plantpredict-api.yaml post /Weather/Parse This endpoint accepts a .csv or .xlsx (note: .xlsx is only accepted in the PlantPredict exported format). If the parse request is successful, a response will be returned containing some of the meta-data for the weather file including the GUID (weatherFileKey) that will be used in the next steps to begin formatting the data. EndFragment # Run quality check on a parsed weather file Source: https://docs.plantpredict.com/api-reference/weather/run-quality-check-on-a-parsed-weather-file /api-docs/api-reference/plantpredict-api.yaml post /Weather/QualityCheck The Quality Check endpoint is used to confirm: 1. The specified column mappings are valid 2. The input values for the specified data type are within tolerance and do not exceed realistic values. 3. Your weather file is ready for import - If all validations pass, the API will return a message indicating there were no errors found and you are good to proceed to the final step. # Search weather files by location Source: https://docs.plantpredict.com/api-reference/weather/search-weather-files-by-location /api-docs/api-reference/plantpredict-api.yaml get /Weather/Search Finds weather files within a geographic radius of a given latitude/longitude. Use this to discover existing library entries near a project site before importing a new one. # Update weather file metadata Source: https://docs.plantpredict.com/api-reference/weather/update-weather-file-metadata /api-docs/api-reference/plantpredict-api.yaml put /Weather/{weatherId}/TitleUpdate Renames a weather file and/or updates lightweight metadata fields without touching the underlying hourly data. # Update weather hourly detail records Source: https://docs.plantpredict.com/api-reference/weather/update-weather-hourly-detail-records /api-docs/api-reference/plantpredict-api.yaml put /Weather/{weatherId}/Detail Used to update details for an existing weather file. **Note: This will completely overwrite the each timestamp with the provided values. If you omit data from the JSON it will not keep the previous values.** # Validate a weather download or import Source: https://docs.plantpredict.com/api-reference/weather/validate-a-weather-download-or-import /api-docs/api-reference/plantpredict-api.yaml post /Weather/Download/ValidateDownload Dry-run check that reports whether a weather download request is valid for the given provider, location, and parameters. Call this before `POST /Weather/Download/{providerId}` to surface configuration errors without consuming a provider download quota. # Array-Level Aggregation & AC Losses Source: https://docs.plantpredict.com/models/ac-losses/array_level_losses ## Summary Array-level calculations aggregate individual outputs, apply AC losses in sequence—auxiliary load deductions, losses, and AC collection system losses—then aggregate array outputs to the block level. Each array is calculated independently using repeater counts at both the inverter and array levels. ## Inputs | Name | Symbol | Units | Description | | --------------------------- | --------------- | ----- | ----------------------------------------------------------------------------------------------------- | | **Inverter AC Power** | $P_{AC,inv}$ | W | AC power output of each inverter (from [Inverter Efficiency](../inverter-models/inverter_efficiency)) | | **Inverter Rated AC Power** | $P_{AC,rated}$ | kVA | Inverter nameplate AC power rating | | **Inverter Repeater Count** | $n_{rep,inv}$ | — | Number of identical inverters represented | | **DAS Load** | $L_{DAS}$ | W | Data acquisition system power consumption | | **Cooling Load** | $L_{cool}$ | W | Inverter/equipment cooling power consumption | | **Tracker Motor Load** | $L_{track}$ | W | Tracker motor power consumption | | **MV Transformer Rating** | $P_{MV,rated}$ | kVA | Array-level MV transformer nameplate capacity | | **MV No-Load Loss** | $L_{NL,MV}$ | % | MV transformer no-load loss as a percentage of $P_{MV,rated}$ | | **MV Full-Load Loss** | $L_{FL,MV}$ | % | MV transformer full-load loss as a percentage of $P_{MV,rated}$ | | **AC Collection Loss** | $f_{coll}$ | % | AC collection system loss percentage at max power | | **Array Repeater Count** | $n_{rep,array}$ | — | Number of identical arrays represented in the block | *** ## Outputs | Name | Symbol | Units | Description | | --------------- | ----------- | ----- | ---------------------------------------------------------------- | | **Block Power** | $P_{block}$ | W | Aggregated AC power at block level, after all array-level losses | *** ## Detailed Description ### Inverter Aggregation Each array may contain multiple inverters (with repeater counts). Because all inverters in an array operate at the same AC voltage and frequency, they are connected in parallel upstream of the MV transformer and their powers add directly. The total array-level AC power is: $$ P_{AC,array} = \sum_{inverters} P_{AC,inv} \times n_{rep,inv} $$ This aggregated power is the input to AC degradation (see [Degradation Losses (AC Applied)](degradation_ac_applied)), which produces $P_{AC,deg}$, accounting for both standard degradation and losses. ### Auxiliary Loads Auxiliary loads are constant power deductions subtracted from the degraded AC power before transformer losses. The tracker motor load ($L_{track}$) is aggregated from per-DC-field "Tracker Actuator Load" inputs (specified in MWh/MWp/year), scaled by each field's DC capacity and repeater counts on DC fields and inverters; it is zero for fixed-tilt systems. $$ P_{aux} = P_{AC,deg} - L_{DAS} - L_{cool} - L_{track} $$ Before the , all auxiliary loads are zero (the system is not yet commissioned). After energization: * **DAS load** is applied regardless of whether the array is producing power. * **Cooling and tracker motor loads** are applied only when the total inverter output is positive ($P_{AC,array} > 0$); otherwise they are zero. * **** overrides all of the above: when triggered, all three auxiliary loads are set to zero (see [Inverter Operating Regions](../inverter-models/inverter_operating_regions) for trigger conditions). ### MV Transformer If an MV transformer is defined for the array, the [Transformer Loss Model](transformer_loss_model) is applied to $P_{aux}$: $$ P_{MV} = P_{aux} - L_{MV,trans} $$ where $L_{MV,trans}$ is computed from the quadratic loss equation using $P_{MV,rated}$, $L_{NL,MV}$, and $L_{FL,MV}$. When Nighttime Disconnect is enabled and triggered, the transformer no-load loss is set to zero, eliminating standby core losses. If no MV transformer is defined, there is no loss: $L_{MV,trans} = 0$ and $P_{MV} = P_{aux}$. ### AC Collection System AC collection losses represent resistive losses in the medium-voltage cabling between the MV transformer and the plant-level collection point. The input loss percentage $f_{coll}$ is converted to a fraction before use. **Versions 3–11 (Flat Percentage Model):** During daytime operation ($P_{MV} > 0$): $$ L_{coll} = P_{MV} \times f_{coll} $$ $$ P_{coll} = P_{MV} - L_{coll} = P_{MV} \times (1 - f_{coll}) $$ During nighttime operation ($P_{MV} \leq 0$), power flows in reverse—the grid supplies current through the collection system to keep transformers energized. The collection line losses compound: the grid must supply extra power to cover the losses, and that extra power itself incurs additional losses. The effective loss fraction becomes $(1 + f_{coll})^2 - 1 \approx 2 f_{coll}$ for small $f_{coll}$: $$ L_{coll} = |P_{MV}| \times \left[ (1 + f_{coll})^2 - 1 \right] \geq 0 $$ $$ P_{coll} = P_{MV} - L_{coll} = P_{MV} \times (1 + f_{coll})^2 \leq 0 $$ **Version 12+ (Quadratic Model):** Loss scales quadratically with power flow, reflecting the I²R characteristic of conductor losses: $$ L_{coll} = \left| \frac{P_{MV}^2}{P_{AC,rated,array}} \times f_{coll} \right| $$ where $P_{AC,rated,array}$ is the total inverter rated capacity for the array (scaled from kVA to VA): $$ P_{AC,rated,array} = \sum_{inverters} P_{AC,rated} \times n_{rep,inv} $$ The collection output is: $$ P_{coll} = P_{MV} - L_{coll} $$ ### Block Aggregation Array outputs are aggregated to the block level using repeater counts: $$ P_{block} = \sum_{arrays} P_{coll} \times n_{rep,array} $$ # Degradation Losses (AC Applied) Source: https://docs.plantpredict.com/models/ac-losses/degradation_ac_applied ## Summary Degradation Losses (AC Applied) model the time-dependent reduction in PV system output due to module aging and performance decline. PlantPredict offers five degradation models—None, Linear DC, Non-Linear DC, Linear AC, and Stepped AC—differing in where the loss is applied (DC power upstream of the vs. AC power downstream of the inverter) and how the rate evolves over time (constant, continuous, or annual steps). This page documents the two AC-applied models and the optional AC-applied model. For DC-applied degradation, see [Degradation Losses (DC Applied)](../inverter-models/degradation_dc_applied). ## Inputs | Name | Symbol | Units | Description | | --------------------------- | ---------------------- | -------- | ---------------------------------------------- | | **AC Power** | $P_{AC}$ | W | AC power from inverter efficiency model | | **Energization Date** | $t_0$ | datetime | Block energization date (system commissioning) | | **Linear Degradation Rate** | $r_{deg}$ | %/year | Annual degradation rate (linear or stepped) | | **LeTID Annual Rates** | $[l_0, l_1, ..., l_n]$ | %/year | Per-year LeTID rates starting at year 0 | *** ## Outputs | Name | Symbol | Units | Description | | --------------------- | ------------ | ----- | ----------------------------- | | **Degraded AC Power** | $P_{AC,deg}$ | W | AC power after degradation | | **Degradation Loss** | $L_{deg}$ | W | Power loss due to degradation | | **LeTID Loss** | $L_{LeTID}$ | W | Power loss due to LeTID | *** ## Detailed Description ### Application Point When Linear AC or Stepped AC degradation is selected, degradation is applied to AC power at the array level, after summing inverter outputs and before auxiliary loads and transformer losses. Because degradation is applied after inverter conversion, AC-applied models do not affect behavior—unlike DC-applied models, which reduce the power the inverter sees and can change the operating point as modules age (see [Degradation Losses (DC Applied)](../inverter-models/degradation_dc_applied)). Before the , the system is not yet commissioned, so all models set $P_{AC,deg} = 0$. ### No AC Degradation (None, Linear DC, Non-Linear DC) When None, Linear DC, or Non-Linear DC degradation is selected, no AC-level degradation is applied: $$ U_{deg} = 0 $$ $$ P_{AC,deg} = P_{AC} $$ ### Linear AC Degradation Linear AC degradation applies a constant annual rate $r_{deg}$ over the system lifetime. Degradation accumulates from the energization date $t_{onset} = t_0$ when First Year Degradation is enabled, or from $t_{onset} = t_0 + 1$ year when disabled. The degradation coefficient is: $$ U_{deg} = r_{deg} \cdot \Delta t $$ where $\Delta t = \max(t - t_{onset},\, 0)$ is the elapsed time expressed as a fractional number of years (using an 8760-hour year). The degraded power is: $$ P_{AC,deg} = (1 - U_{deg}) \times P_{AC} $$ $$ L_{deg} = P_{AC} - P_{AC,deg} = U_{deg} \times P_{AC} $$ ### Stepped AC Degradation Stepped AC degradation applies the same constant annual rate $r_{deg}$ but in discrete annual increments rather than continuously. Degradation onset follows the same First Year Degradation logic as Linear AC: $t_{onset} = t_0$ when First Year Degradation is enabled, or $t_{onset} = t_0 + 1$ year when disabled. The degradation coefficient is: $$ U_{deg} = r_{deg} \times \left\lceil \frac{\Delta h}{8760} \right\rceil $$ where $\Delta h$ is the number of hours since $t_{onset}$ ($\Delta h = (t - t_{onset}) \times 24$ if $t > t_{onset}$, $\Delta h = 0$ otherwise) and $\lceil \cdot \rceil$ denotes the ceiling function (round up to the nearest integer). Because of the ceiling, each degradation step takes effect at the start of the year—the first step applies immediately once $t > t_{onset}$. With First Year Degradation enabled, the system degrades from the moment of energization. Versions 3–4 used a floor function ($\lfloor \cdot \rfloor$) instead, which deferred each step to the end of the year. The degraded power is: $$ P_{AC,deg} = (1 - U_{deg}) \times P_{AC} $$ $$ L_{deg} = P_{AC} - P_{AC,deg} = U_{deg} \times P_{AC} $$ ### Light and Elevated Temperature Induced Degradation (LeTID) is an additional degradation mechanism that can be enabled independently of the primary degradation model. Unlike conventional degradation, LeTID is partially reversible—modules typically degrade over the first few years of operation, then partially recover (Repins et al., 2020). Per-year rates $l_i$ can therefore be negative in later years to capture this recovery. LeTID losses are reported separately from primary degradation. When Linear AC or Stepped AC degradation is selected, LeTID is applied at the AC level. The algorithm uses the same cumulative approach as Non-Linear DC degradation (see [DC degradation](../inverter-models/degradation_dc_applied)): $$ U_{LeTID} = \sum_{i=0}^{\lfloor \Delta t \rfloor - 1} l_i + \left( \Delta t - \lfloor \Delta t \rfloor + \frac{n_{leap}}{365} \right) \times l_{\lfloor \Delta t \rfloor} $$ where $\Delta t$ is the elapsed time in fractional years (with leap days excluded from the year length), $\lfloor \Delta t \rfloor$ is the number of complete years elapsed, and $n_{leap}$ is the count of February 29th occurrences between $t_0$ and $t$. The first term sums the rates of all complete years; the second term pro-rates the current year's rate. $$ L_{LeTID} = U_{LeTID} \times P_{AC} $$ When both primary degradation and LeTID are active, their losses are additive: $$ P_{AC,deg} = P_{AC} - L_{deg} - L_{LeTID} $$ *** ## References * Jordan, D. C., & Kurtz, S. R. (2013). *Photovoltaic degradation rates—an analytical review.* Progress in Photovoltaics: Research and Applications, 21(1), 12–29. DOI: [10.1002/pip.1182](https://doi.org/10.1002/pip.1182) * Repins, I., et al. (2020). *Light and elevated temperature induced degradation (LeTID) in a utility-scale photovoltaic system.* IEEE Journal of Photovoltaics, 10(4), 1084–1092. DOI: [10.1109/JPHOTOV.2020.2989168](https://doi.org/10.1109/JPHOTOV.2020.2989168) * Kersten, F., Engelhart, P., et al. (2015). *Degradation of multicrystalline silicon solar cells and modules after illumination at elevated temperature.* Solar Energy Materials and Solar Cells, 142, 83–86. DOI: [10.1016/j.solmat.2015.06.015](https://doi.org/10.1016/j.solmat.2015.06.015) # AC Losses Overview Source: https://docs.plantpredict.com/models/ac-losses/overview AC Losses models calculate power dissipation in the AC electrical infrastructure, from output to the . ## Models in This Section ### [Degradation Losses (AC Applied)](degradation_ac_applied) Time-dependent degradation when applied at the AC level: * **Linear AC**: Continuous linear degradation applied to inverter AC output * **Stepped AC**: Annual step-wise degradation applied to inverter AC output * **LeTID**: Light and Elevated Temperature Induced Degradation (optional) ### [Transformer Loss Model](transformer_loss_model) Shared quadratic loss model for step-up , used by both the transformer (array level) and transformers (plant level). The model accounts for constant no-load (core) losses and load-dependent (winding) losses that scale with the square of the loading fraction. ### [Array-Level Aggregation and AC Losses](array_level_losses) Inverter-to-array aggregation, array-level loss chain, and array-to-block aggregation: 1. Inverter aggregation (sum of inverter outputs × repeater counts) 2. Auxiliary loads (DAS, cooling, tracker motors) 3. MV transformer (uses the shared [Transformer Loss Model](transformer_loss_model)) 4. AC collection system (V12+: quadratic I²R model; V3–11: flat percentage) 5. Block aggregation (sum of array outputs × repeater counts) ### [Plant-Level Aggregation and AC Losses](plant_level_losses) Block-to-plant aggregation and plant-level loss chain to the grid: 1. Block-to-plant aggregation (sum of block outputs × repeater counts) 2. HV equipment — transformers (uses the shared [Transformer Loss Model](transformer_loss_model)) and transmission lines (I²R model), in user-defined order 3. Availability loss (percentage reduction for downtime and curtailment) 4. Grid limit (/ capacity constraint) ## Calculation Sequence **Array Level:** 1. Inverter aggregation 2. AC Degradation and LeTID losses (if enabled) 3. Auxiliary loads (DAS, cooling, tracker motors) 4. MV Transformer losses 5. AC Collection System losses 6. Block aggregation **Plant Level:** 1. Block-to-plant aggregation 2. HV Transformers and Transmission Lines losses (user-defined order) 3. Availability Loss 4. Grid Limit (LGIA) # Plant-Level Aggregation & AC Losses Source: https://docs.plantpredict.com/models/ac-losses/plant_level_losses ## Summary Plant-level calculations aggregate block outputs, apply equipment losses—HV and transmission lines in user-defined order—then apply and the grid limit () to produce the final power delivered to the . ## Inputs | Name | Symbol | Units | Description | | --------------------------------- | --------------- | --------- | ----------------------------------------------------------------------------------- | | **Block Power** | $P_{block}$ | W | AC power per block (from [Array-Level Aggregation & AC Losses](array_level_losses)) | | **Block Repeater Count** | $n_{rep,block}$ | — | Number of identical blocks represented in the plant | | **HV Transformer Rating** | $P_{HV,rated}$ | MVA | HV transformer nameplate capacity | | **HV No-Load Loss** | $L_{NL,HV}$ | % | HV transformer no-load loss as a percentage of $P_{HV,rated}$ | | **HV Full-Load Loss** | $L_{FL,HV}$ | % | HV transformer full-load loss as a percentage of $P_{HV,rated}$ | | **Transmission Line Length** | $\ell_t$ | km | Conductor length | | **Transmission Line Resistance** | $R_{line}$ | Ω/1000 ft | Conductor resistance per unit length | | **Inverter Design Derate** | $d_i$ | — | Ratio of real power to apparent power (kW/kVA) for inverter $i$ | | **Inverter Repeater Count** | $n_{rep,inv}$ | — | Number of identical inverters per array | | **Array Repeater Count** | $n_{rep,array}$ | — | Number of identical arrays per block | | **Transformer High-Side Voltage** | $V_{HS}$ | kV | Line-to-line voltage on transformer high side | | **Conductors per Phase** | $N_{cond}$ | — | Number of parallel conductors per phase | | **Availability Loss Factor** | $f_{avail}$ | % | Percentage reduction for system availability | | **Grid Limit (LGIA)** | $P_{POI}$ | MW | Maximum allowed power at point of interconnection | *** ## Outputs | Name | Symbol | Units | Description | | -------------- | ---------- | ----- | --------------------------- | | **Grid Power** | $P_{grid}$ | W | Power delivered to the grid | *** ## Detailed Description ### Block-to-Plant Aggregation Each plant may contain multiple blocks (with repeater counts). The total plant-level power before HV losses is the sum of all block outputs, weighted by their repeater counts: $$ P_{plant} = \sum_{blocks} P_{block} \times n_{rep,block} $$ ### HV Equipment HV equipment consists of one or more transformers and transmission lines connected in series. The user defines the ordinal (sequence) of each element. The prediction iterates through the elements in ordinal order, passing the output of each element as the input to the next. For example, a plant stepping up from 34.5 kV to 230 kV via an intermediate 115 kV bus might define: 1. HV Transformer (34.5 kV → 115 kV) — quadratic transformer losses on $P_{plant}$ 2. Transmission Line (at 115 kV) — I²R line losses at 115 kV current 3. HV Transformer (115 kV → 230 kV) — quadratic transformer losses on the remaining power 4. Transmission Line (at 230 kV) — I²R line losses at 230 kV current #### HV Transformer Each HV transformer applies the [Transformer Loss Model](transformer_loss_model). The calculation is identical to the transformer, using the HV transformer's specific rating and loss fractions. When is enabled and triggered (see [Inverter Operating Regions](../inverter-models/inverter_operating_regions) for trigger conditions), the HV transformer no-load loss is set to zero, eliminating standby core losses. Additionally, if any inverter in the plant triggers disconnect, the entire plant output after HV equipment is set to zero (see [Transformer Loss Model](transformer_loss_model#nighttime-disconnect) for details). #### Transmission Line Model Transmission line losses are calculated from the I²R dissipation in the three-phase conductors. The model uses the line-to-line voltage on the high side of the preceding transformer (or the maximum MV transformer voltage if no HV transformer precedes the line), converted from kV to V. **Resistance Calculation** The line length is first converted from km to m. The total line resistance in ohms is then: $$ R_{total} = \frac{\ell_t \times R_{line}}{304.8} $$ where $R_{line} / 304.8$ converts from Ω/1000 ft to Ω/m (since 1000 ft = 304.8 m). **Power Factor Calculation** The inverter Design Derate ($d_i$) represents the power factor of each inverter—the ratio of its real power output (kW) to its apparent power rating (kVA). The PlantPredict logic tracks real (active) power throughout, but transmission line current accounts for active and reactive power and is, thus, proportional to the apparent power $P_{in} / PF$ where $PF$ is the power factor. $PF$ is calculated as the repeater-weighted average of the individual inverter Design Derate values, computed once at the plant level (displayed as "Plant kVA Derate" in the UI): $$ PF = \frac{\displaystyle\sum_{blocks}\; n_{rep,block} \sum_{arrays}\; n_{rep,array} \sum_{inv}\; n_{rep,inv} \times d_i}{\displaystyle\sum_{blocks}\; n_{rep,block} \sum_{arrays}\; n_{rep,array} \sum_{inv}\; n_{rep,inv}} $$ **Resistive Loss Calculation** For a given input power $P_{in}$ entering the transmission line, the three-phase line current is: $$ I = \frac{P_{in}}{\sqrt{3}\, V_{HS}\, PF} $$ The total three-phase dissipation, accounting for parallel conductors, is: $$ L_{line} = \frac{3\, I^2\, R_{total}}{N_{cond}} $$ The output power is: $$ P_{out} = P_{in} - L_{line} $$ $P_{in}$ can be negative during nighttime operation when the grid supplies power to keep transformers energized; in that case $P_{out}$ is also negative (further from zero due to the line loss). ### Availability Loss After all HV equipment losses, a flat percentage availability deduction is applied to the output power from the last transformer or transmission line in the HV chain $P_{HV,out}$: $$ P_{avail} = P_{HV,out} \times \frac{100 - f_{avail}}{100} $$ This deduction represents estimated downtime due to maintenance and unplanned outages. It reduces power uniformly across all timesteps. ### Grid Limit (LGIA) The final step enforces the capacity constraint at the point of interconnection. If configured, any power exceeding the limit (converted from MW to W) is curtailed: $$ P_{grid} = \min(P_{avail},\, P_{POI}) $$ The LGIA limit can be specified as: * **Constant value**: a fixed MW cap applied to all timesteps. * **Time series**: a timestep-varying MW limit loaded from a time series input. * **Off**: no cap is applied ($P_{grid} = P_{avail}$). The loss due to is reported as: $$ L_{LGIA} = \max(0,\, P_{avail} - P_{POI}) $$ In practice, curtailment would reduce inverter setpoints and rebalance upstream losses (transformer loading, collection losses, etc.). The model applies the cap at the POI instead, which yields the same delivered energy while attributing the excess power entirely to curtailment loss rather than redistributing it across upstream loss categories. # Transformer Loss Model Source: https://docs.plantpredict.com/models/ac-losses/transformer_loss_model ## Summary The Transformer Loss Model calculates power dissipation in step-up using a quadratic loss equation derived from no-load and full-load loss specifications. This model is shared by both transformers (array level) and transformers (plant level). It accounts for constant no-load (core) losses and load-dependent (winding) losses that scale with the square of the loading fraction. ## Inputs | Name | Symbol | Units | Description | | ---------------------- | ----------- | ------------------- | ------------------------------------------------------------ | | **Power Input** | $P_{in}$ | W | AC power into the transformer | | **Transformer Rating** | $P_{rated}$ | kVA (MV) / MVA (HV) | Transformer nameplate capacity | | **No-Load Loss** | $L_{NL}$ | % | No-load loss as a percentage of $P_{rated}$ | | **Full-Load Loss** | $L_{FL}$ | % | Load-dependent (winding) loss as a percentage of $P_{rated}$ | *** ## Outputs | Name | Symbol | Units | Description | | -------------------- | ----------- | ----- | ----------------------------------- | | **Power Output** | $P_{out}$ | W | AC power after transformer losses | | **Transformer Loss** | $L_{trans}$ | W | Power dissipated in the transformer | *** ## Detailed Description ### Loss Components The input percentages are first converted from percentages to fractions ($\div 100$) and the transformer rating is converted to VA ($\times 1000$ for MV, $\times 10^6$ for HV). The absolute loss values are then: $$ L_{NL,abs} = L_{NL} \times P_{rated} $$ $$ L_{FL,abs} = (L_{NL} + L_{FL}) \times P_{rated} $$ No-load losses represent core magnetization losses that are present whenever the transformer is energized, regardless of loading. Load-dependent losses represent resistive (I²R) winding losses that increase with the square of the current. ### Quadratic Loss Equation The physical loss model states that total transformer loss is the sum of a constant no-load term and a winding term proportional to the square of the loading fraction: $$ L_{trans} = L_{NL,abs} + \frac{L_{FL}}{P_{rated}}\, P_{out}^2 $$ Since $P_{out} = P_{in} - L_{trans}$, the output power appears on both sides. Substituting: $$ L_{trans} = L_{NL,abs} + \frac{L_{FL}}{P_{rated}} \left( P_{in} - L_{trans} \right)^2 $$ Expanding and rearranging yields a quadratic equation in $L_{trans}$. Both roots are real and positive; the smaller root is the physically meaningful solution (the larger root exceeds $P_{in}$): $$ L_{trans} = \frac{1}{2\, L_{FL}} \left( P_{rated} + 2\, L_{FL}\, P_{in} - \sqrt{P_{rated}^2 + 4\, L_{FL}\, P_{rated}\, (P_{in} - L_{NL,abs})} \right) $$ The output power is: $$ P_{out} = P_{in} - L_{trans} $$ If $L_{FL} = 0$ the transformer is treated as lossless ($L_{trans} = 0$). ### Nighttime Disconnect When is enabled and any in an array triggers it (see [Inverter Operating Regions](../inverter-models/inverter_operating_regions) for disconnect triggers), the MV transformer no-load loss is set to zero, effectively disconnecting it from the grid and eliminating standby core losses. For HV transformers, disconnect cascades from the array level: if any inverter in the plant triggers disconnect, all HV transformer no-load losses are set to zero. Additionally, plant output after HV equipment is set to zero if any inverter in the plant triggers disconnect. ### Application Points This model is applied at two levels in the prediction: * **MV Transformer** (array level): applied after auxiliary load deductions, before AC collection losses. See [Array-Level Aggregation and AC Losses](array_level_losses). * **HV Transformer** (plant level): applied after block aggregation, in user-defined sequence with transmission lines. See [Plant-Level Aggregation and AC Losses](plant_level_losses). *** ## References * IEEE Std C57.12.00. *IEEE Standard for General Requirements for Liquid-Immersed Distribution, Power, and Regulating Transformers.* # 5-Parameter Model Source: https://docs.plantpredict.com/models/dc-performance/5_parameter_model ## Summary The 5-parameter single-diode model, following the De Soto et al. (2006) formulation, is an equivalent circuit that represents a PV module as a light-generated current source, a diode, a , and a . Given the scaled module parameters from [Parameter Translation](/models/dc-performance/parameter_translation), the model solves the circuit equation at the module level to determine the ($V_{mp}$, $I_{mp}$, $P_{mp}$) and ($V_{oc}$). All modules within a DC field are assumed to operate under identical conditions, so the equation is solved once per DC field and the results are scaled: voltage is multiplied by the number of modules in series, and current by the number of parallel strings. ## Inputs | Name | Symbol | Units | Description | | ----------------------------- | -------- | ----- | -------------------------------------------------------------------------------- | | **Photocurrent** | $I_{ph}$ | A | Light-generated current | | **Saturation Current** | $I_0$ | A | Diode reverse saturation current | | **Series Resistance** | $R_s$ | Ω | Series resistance (includes module internal resistance and DC wiring resistance) | | **Shunt Resistance** | $R_{sh}$ | Ω | Shunt resistance of module | | **Diode Ideality Factor** | $\gamma$ | — | Diode ideality factor | | **Number of Cells in Series** | $N_c$ | — | Cells in series within module | | **Cell Temperature** | $T_c$ | °C | Operating cell temperature | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------ | -------- | ----- | --------------------------------- | | **Max Power Voltage** | $V_{mp}$ | V | Voltage at maximum power point | | **Max Power Current** | $I_{mp}$ | A | Current at maximum power point | | **Max Power** | $P_{mp}$ | W | $V_{mp} \times I_{mp}$ | | **Open-Circuit Voltage** | $V_{oc}$ | V | Voltage at open-circuit ($I = 0$) | *** ## Detailed Description ### Circuit Equation De Soto's single-diode equivalent circuit models four physical mechanisms: $I_{ph}$ is the driven by absorbed irradiance, $I_0$ and $\gamma$ govern within the cells (exponential diode term), $R_{sh}$ accounts for leakage current paths through the cells, and $R_s$ captures ohmic losses due to series resistance within the module and DC wiring. All five parameters are scaled from reference to operating conditions by [Parameter Translation](/models/dc-performance/parameter_translation). The current–voltage relationship that defines the is: $$ I = I_{ph} - I_0 \left(\exp\!\left(\frac{q(V + IR_s)}{N_c k T_c \gamma}\right) - 1\right) - \frac{V + IR_s}{R_{sh}} $$ where $q = 1.602 \times 10^{-19}$ C is the elementary charge, $k = 1.381 \times 10^{-23}$ J/K is the Boltzmann constant, and $T_c$ is the cell temperature converted from °C to Kelvin. For convenience, PlantPredict defines the modified thermal voltage $V_{th} = N_c \gamma k T_c / q$. The circuit equation is implicit in both $I$ and $V$ because of the $IR_s$ coupling. PlantPredict uses different numerical strategies depending on which quantity needs to be calculated. ### Maximum Power Point PlantPredict introduces the internal voltage $V_{int} = V + IR_s$, which absorbs the voltage drop due to the series resistance. In this form, both $I$ and $V$ can be explicitly solved from $V_{int}$: $$ I(V_{int}) = I_{ph} - I_0 (e^{V_{int}/V_{th}} - 1) - \frac{V_{int}}{R_{sh}} $$ $$ V(V_{int}) = V_{int} - I(V_{int}) \, R_s $$ Power is therefore a single-variable function $P(V_{int}) = V(V_{int}) \times I(V_{int})$. PlantPredict finds the maximum by solving $dP/dV_{int} = 0$ using [Newton-Raphson iteration](https://en.wikipedia.org/wiki/Newton%27s_method) on the analytically derived first and second derivatives. Once the optimal internal voltage $V_{int,mp}$ has converged: $$ I_{mp} = I(V_{int,mp}) $$ $$ V_{mp} = V_{int,mp} - I_{mp} R_s $$ $$ P_{mp} = V_{mp} \times I_{mp} $$ ### $V$ Given $I$ Because the I-V relationship is implicit, solving the circuit equation for $V$ at a given current is transcendental—no closed-form elementary solution exists. However, the equation can be reformulated into the [Lambert W](https://en.wikipedia.org/wiki/Lambert_W_function) canonical form $e^{aX+b} = cX + d$, which is well-behaved and guarantees convergence. The resulting Lambert W expression is evaluated numerically via Newton-Raphson iteration. The open-circuit voltage $V_{oc}$ is obtained as the special case with $I = 0$. ### $I$ Given $V$ When the voltage is fixed—for instance, when set by the inverter at an operating point away from MPP (e.g., clipping)—the $IR_s$ term makes the equation implicit in $I$. PlantPredict uses the same Lambert W reformulation and Newton-Raphson evaluation to solve for $I$ at the imposed voltage. *** ## References * De Soto, W., Klein, S. A., & Beckman, W. A. (2006). *Improvement and validation of a model for photovoltaic array performance.* Solar Energy, 80(1), 78–88. DOI: [10.1016/j.solener.2005.06.010](https://doi.org/10.1016/j.solener.2005.06.010) # 7-Parameter Model Source: https://docs.plantpredict.com/models/dc-performance/7_parameter_model ## Summary The 7-parameter model extends the [5-parameter single-diode model](/models/dc-performance/5_parameter_model) with a voltage-dependent current term, following the equivalent circuit proposed by Merten et al. (1998). The additional term captures carrier recombination at low irradiance. This mechanism is most relevant for thin-film technologies but can improve accuracy for any module where shunt resistance alone underestimates low-light losses. The model adds two parameters— ($V_{bi}$) and recombination parameter ($d_i^2/\mu\tau$)—to the five standard single-diode parameters. All five base parameters are scaled by [Parameter Translation](/models/dc-performance/parameter_translation) in the same way as for the 5-parameter model; $V_{bi}$ and $d_i^2/\mu\tau$ are not scaled. ## Inputs | Name | Symbol | Units | Description | | ----------------------------- | --------------- | ----- | ---------------------------------------------------------------------------------------------------------------------- | | **Photocurrent** | $I_{ph}$ | A | Light-generated current | | **Saturation Current** | $I_0$ | A | Diode reverse saturation current | | **Series Resistance** | $R_s$ | Ω | Series resistance (includes module internal resistance and DC wiring resistance) | | **Shunt Resistance** | $R_{sh}$ | Ω | Shunt resistance of module | | **Diode Ideality Factor** | $\gamma$ | — | Diode ideality factor | | **Number of Cells in Series** | $N_c$ | — | Cells in series within module | | **Cell Temperature** | $T_c$ | °C | Operating cell temperature | | **Built-in Voltage** | $V_{bi}$ | V | Built-in voltage per cell | | **Recombination Parameter** | $d_i^2/\mu\tau$ | V | Lumped recombination parameter combining recombination layer thickness and effective carrier mobility-lifetime product | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------ | -------- | ----- | --------------------------------- | | **Max Power Voltage** | $V_{mp}$ | V | Voltage at maximum power point | | **Max Power Current** | $I_{mp}$ | A | Current at maximum power point | | **Max Power** | $P_{mp}$ | W | $V_{mp} \times I_{mp}$ | | **Open-Circuit Voltage** | $V_{oc}$ | V | Voltage at open-circuit ($I = 0$) | *** ## Detailed Description ### Circuit Equation The 7-parameter adds a recombination current to the [5-parameter circuit equation](/models/dc-performance/5_parameter_model#circuit-equation): $$ I = I_{ph} - I_0 \left(\exp\!\left(\frac{q(V + IR_s)}{N_c k T_c \gamma}\right) - 1\right) - \frac{V + IR_s}{R_{sh}} - \frac{(d_i^2/\mu\tau) \cdot I_{ph}}{N_c V_{bi} - (V + IR_s)} $$ where $q = 1.602 \times 10^{-19}$ C is the elementary charge and $k = 1.381 \times 10^{-23}$ J/K is the Boltzmann constant. As in the [5-parameter model](/models/dc-performance/5_parameter_model#circuit-equation), $V_{th} = N_c \gamma k T_c / q$ is the modified thermal voltage and $V_{int} = V + IR_s$ is the internal voltage: $$ I(V_{int}) = I_{ph} - I_0 (e^{V_{int}/V_{th}} - 1) - \frac{V_{int}}{R_{sh}} - \frac{(d_i^2/\mu\tau) \cdot I_{ph}}{N_c V_{bi} - V_{int}} $$ The last term represents a voltage-dependent current loss that increases as $V_{int}$ approaches $N_c V_{bi}$ and is proportional to . It was originally proposed by Merten et al. (1998) to model recombination in amorphous silicon p-i-n junctions, but is used more broadly as an empirical correction that improves low-irradiance accuracy beyond what shunt resistance alone provides. ### Maximum Power Point PlantPredict uses the same internal-voltage approach as the [5-parameter model](/models/dc-performance/5_parameter_model#maximum-power-point), expressing $I(V_{int})$ and $V(V_{int})$ as explicit functions and solving $dP/dV_{int} = 0$ via [Newton-Raphson iteration](https://en.wikipedia.org/wiki/Newton%27s_method). Once the optimal internal voltage $V_{int,mp}$ has converged: $$ I_{mp} = I(V_{int,mp}) $$ $$ V_{mp} = V_{int,mp} - I_{mp} R_s $$ $$ P_{mp} = V_{mp} \times I_{mp} $$ ### $V$ Given $I$ The recombination term's pole at $N_c V_{bi}$ prevents reformulation into the [Lambert W](https://en.wikipedia.org/wiki/Lambert_W_function) canonical form used by the 5-parameter model. PlantPredict instead solves for $V_{int}$ directly via Newton-Raphson iteration on the circuit equation and recovers the terminal voltage as $V = V_{int} - IR_s$. The $V_{oc}$ is obtained as the special case with $I = 0$. ### $I$ Given $V$ When the terminal voltage is fixed—for instance, when set by the inverter at an operating point away from MPP (e.g., clipping)—the Lambert W reformulation is again not applicable. PlantPredict solves for $V_{int}$ via Newton-Raphson with $I = (V_{int} - V)/R_s$ substituted into the circuit equation, then computes $I$ from the converged $V_{int}$. *** ## References * Merten, J., Asensi, J. M., Voz, C., Shah, A. V., Platz, R., & Andreu, J. (1998). *Improved equivalent circuit and analytical model for amorphous silicon solar cells and modules.* IEEE Transactions on Electron Devices, 45(2), 423–429. DOI: [10.1109/16.658676](https://doi.org/10.1109/16.658676) # DC System Losses Source: https://docs.plantpredict.com/models/dc-performance/dc_system_losses ## Summary DC System Losses account for non-ideal effects—module , , module quality variation, and DC health—by reducing the effective irradiance before the conversion. PlantPredict applies these losses as a combined coefficient that scales the effective POA irradiance. DC wiring losses are applied downstream in the model, accounted for as additional . Time-dependent degradation is applied downstream of the single-diode conversion and is documented separately in the [Degradation Losses (DC Applied)](../inverter-models/degradation_dc_applied) and [Degradation Losses (AC Applied)](../ac-losses/degradation_ac_applied) pages. ## Inputs | Name | Symbol | Units | Description | | ---------------------------------- | ------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | **Effective POA Irradiance** | $G_{POA,tot,eff}$ | W/m² | Combined front and rear POA irradiance from the [irradiance calculation](/models/poa-irradiance/overview) | | **Module Mismatch Coefficient** | $f_{MM}$ | % | Module-to-module mismatch loss percentage | | **Light-Induced Degradation** | $f_{LID}$ | % | Light-induced degradation loss | | **Module Quality Factor** | $f_{MQ}$ | % | Power deviation from nameplate due to module binning and manufacturing tolerances | | **DC Health Factor** | $f_{DCH}$ | % | User-defined DC system loss to account for factors such as connection degradation | | **Backside Mismatch** | $f_{MM,rear}$ | % | Rear-side irradiance mismatch loss | | **Average Rear Irradiance** | $G_{POA,rear}$ | W/m² | Average rear irradiance after structure shading, before bifaciality weighting (from [rear irradiance](/models/poa-irradiance/rear_irradiance)) | | **Effective Front POA Irradiance** | $G_{POA,front,eff}$ | W/m² | Front-side effective POA irradiance | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------- | ------------------ | ----- | ----------------------------------------------- | | **Scaled Effective Irradiance** | $G'_{POA,tot,eff}$ | W/m² | Effective POA irradiance after DC system losses | *** ## Detailed Description PlantPredict applies module mismatch, LID, module quality, and DC health losses as a single combined coefficient that uniformly scales the effective POA irradiance before the single-diode conversion. Each input percentage is converted to a fraction (divided by 100) before use: $$ G'_{POA,tot,eff} = G_{POA,tot,eff} \times C_{comb} $$ where $G_{POA,tot,eff}$ is the total effective POA irradiance from the [irradiance calculation](/models/poa-irradiance/overview), including all front-side components and bifaciality-weighted rear irradiance. The composition of $C_{comb}$ depends on the prediction version. ### Version 10 and Later The combined coefficient includes module mismatch, module quality, LID, and DC health: $$ C_{comb} = (1 - f_{MM}) \times (1 - f_{MQ}) \times (1 - f_{LID}) \times (1 - f_{DCH}) $$ For bifacial modules, backside mismatch $f_{MM,rear}$ is applied directly to the rear irradiance in the [rear irradiance](/models/poa-irradiance/rear_irradiance) calculation and is not part of the combined coefficient. When SunSolve-calibrated parameters are used, $f_{MM}$ should be supplied from the SunSolve simulation output—a single combined mismatch value accounting for non-uniform illumination on both the front and rear of the module. The separate backside mismatch term is set to zero in [rear irradiance](/models/poa-irradiance/rear_irradiance) to avoid double-counting. This is physically more accurate, since electrical mismatch arises from imbalanced photocurrents between series-connected cells regardless of which side of the module the light arrives from. ### Version 9 and Earlier In Version 9 and earlier, the combined coefficient also includes rear-side mismatch for bifacial modules. Because the combined coefficient is applied uniformly to all irradiance components, the backside mismatch fraction is approximated as an effective value weighted by the rear-to-front irradiance ratio: $$ f_{MM,rear,eff} = f_{MM,rear} \cdot \frac{G_{POA,rear}}{G_{POA,front,eff}} $$ where $G_{POA,rear}$ is the average rear irradiance after structure shading (see [Rear Irradiance](/models/poa-irradiance/rear_irradiance)) and $G_{POA,front,eff}$ is the front-side effective POA irradiance. The full combined coefficient becomes: $$ C_{comb} = (1 - f_{MM}) \times (1 - f_{MQ}) \times (1 - f_{LID}) \times (1 - f_{DCH}) \times (1 - f_{MM,rear,eff}) $$ Because the coefficient is applied uniformly to both front and rear irradiance, this approach slightly overestimates the backside mismatch loss compared to applying it directly to the rear irradiance. Version 10 eliminates this by moving backside mismatch upstream into the [rear irradiance](/models/poa-irradiance/rear_irradiance) calculation. For monofacial modules, $G_{POA,rear} = 0$ so $f_{MM,rear,eff} = 0$ and the combined coefficient reduces to the Version 10+ form. ### Loss Reporting For reporting (loss tree), each individual loss component is approximated as $L_i = P_{mp} \times f_i$, where $P_{mp}$ is the maximum power point power from the single-diode equation and $f_i$ is the corresponding loss fraction. # DC Wiring Resistance Source: https://docs.plantpredict.com/models/dc-performance/dc_wiring_resistance ## Summary DC wiring resistance represents the combined ohmic resistance of the cables connecting modules in series and parallel strings to the inverter. Rather than modeling wiring losses as a separate derating factor, PlantPredict converts a user-specified wiring loss percentage into an equivalent module-level that is added to each module's series resistance before the equation is solved. This approach captures the voltage- and current-dependent nature of resistive losses within the . ## Inputs | Name | Symbol | Units | Description | | ------------------------------- | ------------ | ----- | -------------------------------------------------- | | **DC Wiring Loss Percentage** | $L_{wire}$ | % | User-specified wiring loss at reference conditions | | **Module Maximum Power** | $P_{mp,ref}$ | W | Module maximum power at reference conditions | | **Number of Parallel Strings** | $N_p$ | — | Parallel strings in the DC field | | **Number of Modules in Series** | $N_s$ | — | Modules in series per string | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance (typically 1000 W/m²) | | **Reference Temperature** | $T_{ref}$ | °C | Reference cell temperature (typically 25 °C) | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------------- | --------------- | ----- | ----------------------------------------- | | **Field-Level Wiring Resistance** | $R_{DC,field}$ | Ω | DC-field-level effective resistance | | **Per-Module Wiring Resistance** | $R_{DC,module}$ | Ω | Module-level equivalent series resistance | *** ## Detailed Description The user specifies DC wiring losses as a percentage of power at reference conditions. PlantPredict converts this into a per-module equivalent resistance so that wiring losses are modeled as part of the single-diode circuit rather than as an external derating. This conversion is performed once during prediction initialization. ### Reference MPP Current To convert a loss percentage into a resistance, the current at under reference conditions is needed. PlantPredict obtains this by running a preliminary [5-parameter](/models/dc-performance/5_parameter_model) or [7-parameter](/models/dc-performance/7_parameter_model) single-diode equation solve at: * Reference irradiance ($G_{ref}$, typically 1000 W/m²) with the combined [DC system loss](/models/dc-performance/dc_system_losses) coefficient applied * Reference temperature ($T_{ref}$, typically 25 °C) * Zero wiring resistance * Zero back irradiance The resulting maximum power point current is denoted $I_{mp}^*$. Because both irradiance and temperature are at reference values, this represents the operating point at which the user-specified loss percentage applies. ### DC-Field-Level Effective Resistance The total DC-field-level resistance that would produce the specified wiring loss at the reference operating point is: $$ R_{DC,field} = \frac{L_{wire} \times P_{mp,ref} \times N_p \times N_s}{(I_{mp}^* \times N_p)^2} $$ where $L_{wire}$ is the wiring loss fraction (percentage / 100). This field-level resistance is used for ohmic loss reporting in the loss tree. ### Per-Module Equivalent Resistance The field-level resistance is distributed equally across all modules as a per-module series resistance: $$ R_{DC,module} = \frac{R_{DC,field} \times N_p}{N_s} = \frac{L_{wire} \times P_{mp,ref}}{I_{mp}^{*2}} $$ This resistance is added to the module series resistance $R_s$ during [parameter translation](/models/dc-performance/parameter_translation): $$ R_s \leftarrow R_s + R_{DC,module} $$ # Measured Surface Temperature Source: https://docs.plantpredict.com/models/dc-performance/measured_surface_temperature ## Summary When measured back-of-module surface temperature data is available as a time series, it can be used directly in place of a temperature model. This option overrides the selected temperature model (Heat Balance, Sandia, or NOCT-SAM) and derives cell temperature from the measured back-of-module surface temperature using the standard irradiance-proportional offset. ## Inputs | Name | Symbol | Units | Description | | ----------------------------------------- | ------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Measured Surface Temperature** | $T_{m,measured}$ | °C | Back-of-module surface temperature from time-series data | | **Effective Front POA Irradiance** | $G_{POA,front,eff}$ | W/m² | Front-side POA irradiance after optical corrections, before DC system losses (from [irradiance calculation](/models/poa-irradiance/overview)) | | **Cell-to-Module Temperature Difference** | $\Delta T_{c-m}$ | °C | Temperature difference between cell and module surface at reference irradiance | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance (typically 1000 W/m²) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------ | ----- | ----------------------------------------------------- | | **Cell Temperature** | $T_c$ | °C | Operating temperature of PV cells | | **Module Surface Temperature** | $T_m$ | °C | Back-of-module surface temperature (from time series) | *** ## Detailed Description The measured back-of-module surface temperature is used directly. For each time step: $$ T_m = T_{m,measured} $$ Cell temperature is derived by adding the standard irradiance-proportional offset: $$ T_c = T_m + \frac{G_{POA,front,eff}}{G_{ref}} \cdot \Delta T_{c-m} $$ where: * $T_m$ is the measured back-of-module surface temperature (from time-series data) * $G_{POA,front,eff}$ is the front-side after optical corrections, before DC losses, in W/m² (from [irradiance calculation](/models/poa-irradiance/overview)) * $G_{ref}$ is the reference irradiance in W/m² (from module definition, typically 1000 W/m²) * $\Delta T_{c-m}$ is the cell-to-module temperature difference at the reference irradiance, in °C (from DC field definition) This cell-temperature derivation uses the same formula as the [Sandia model](temperature_sandia). To use this model, the user must both upload surface temperature time series and assign these time series to their respective DC fields. # Photovoltaic Conversion Overview Source: https://docs.plantpredict.com/models/dc-performance/overview Photovoltaic conversion transforms the effective into DC electrical power at the output of each DC field. PlantPredict models this process in three stages: module temperature calculation, DC system loss application, and electrical power calculation using the equivalent-circuit model. ## Models in This Section ### Cell Temperature Models Cell temperature is a primary input to the electrical model—module power output decreases with increasing temperature. All temperature models use the front-side POA irradiance ($G_{POA,front,eff}$) before DC system losses. For monofacial modules this is identical to the effective POA irradiance, but for bifacial modules the contribution of rear irradiance to module heating is neglected. PlantPredict implements four temperature models: * **[Heat Balance](/models/dc-performance/temperature_heat_balance)** (default): physics-based energy balance model adapted from the Faiman model, with empirically determined conductive and convective heat transfer coefficients. Aligned with PVsyst. * **[Sandia](/models/dc-performance/temperature_sandia)**: empirical exponential model (King et al., 2004) with coefficients tabulated by module construction type. * **[NOCT-SAM](/models/dc-performance/temperature_noct_sam)**: physics-based model anchored to the module's experimentally measured Nominal Operating Cell Temperature (), with empirical scaling for irradiance and wind speed (Gilman et al., 2018). * **[Measured Surface Temperature](/models/dc-performance/measured_surface_temperature)**: uses measured back-of-module temperature from a time series, overriding any of the above models. ### [DC System Losses](/models/dc-performance/dc_system_losses) Non-ideal effects that reduce power from the theoretical maximum: module mismatch, light-induced degradation (), module quality variation, and DC health. These are applied upstream of the light-to-electrical-power conversion, as a combined reduction of the effective irradiance before the electrical model is solved. [DC wiring resistance](/models/dc-performance/dc_wiring_resistance) is modeled within the single-diode model, as additional . ### Single-Diode Models The electrical conversion uses a single-diode equivalent circuit model, available in two variants: the standard [five-parameter model](/models/dc-performance/5_parameter_model) and a [seven-parameter extension](/models/dc-performance/7_parameter_model) that adds a recombination current term for improved low-light accuracy. The conversion proceeds as follows: 1. **[Parameter Translation](/models/dc-performance/parameter_translation)**: the diode parameters (characterized at ) are scaled to operating irradiance and cell temperature. 2. **[Single Diode Solve](/models/dc-performance/5_parameter_model)**: the single-diode equation is solved with the translated parameters to find the . ## Calculation Sequence 1. **[Module Temperature](#cell-temperature-models)**: Calculate cell temperature from ambient conditions, wind speed, and front-side POA irradiance 2. **[DC System Losses](/models/dc-performance/dc_system_losses)**: Apply combined loss coefficient to effective irradiance 3. **[Parameter Translation](/models/dc-performance/parameter_translation)**: Scale diode parameters from STC to operating conditions (irradiance and cell temperature); add DC wiring resistance to module series resistance 4. **Single Diode Model**: Solve the [five-](/models/dc-performance/5_parameter_model) or [seven-parameter](/models/dc-performance/7_parameter_model) equivalent circuit for maximum power point voltage, current, and power DC-applied degradation (Linear DC, Non-Linear DC, LeTID) is applied after DC field aggregation at the inverter level. See [Degradation Losses (DC Applied)](/models/inverter-models/degradation_dc_applied) in the DC Aggregation and DC-AC Conversion section. # Parameter Translation Source: https://docs.plantpredict.com/models/dc-performance/parameter_translation ## Summary Parameter Translation scales the five standard parameters—, , , , and —from reference conditions (typically : 25 °C, 1000 W/m²) to actual operating conditions using physics-based scaling relationships. PlantPredict also scales for use in downstream calculations. All parameters are scaled before solving the single-diode circuit equation. The two additional parameters of the seven-parameter model ($d_i^2/\mu\tau$ and $V_{bi}$) are not scaled, so this procedure applies similarly to both model variants. ## Inputs | Name | Symbol | Units | Description | | ------------------------------------------- | ---------------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------- | | **Series Resistance** | $R_{s,ref}$ | Ω | Series resistance at reference conditions | | **Shunt Resistance** | $R_{sh,ref}$ | Ω | Shunt resistance at reference conditions | | **Diode Ideality Factor** | $\gamma_{ref}$ | — | Ideality factor at reference conditions | | **Saturation Current** | $I_{0,ref}$ | A | Saturation current at reference conditions | | **Short-Circuit Current** | $I_{sc,ref}$ | A | Short-circuit current at reference conditions | | **Reference Temperature** | $T_{ref}$ | °C | Reference temperature (typically 25 °C) | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance (typically 1000 W/m²) | | **Cell Temperature** | $T_c$ | °C | Operating cell temperature (from [temperature model](/models/dc-performance/overview#cell-temperature-models)) | | **Total Effective POA Irradiance** | $G'_{POA,tot,eff}$ | W/m² | Total effective POA irradiance after [DC system losses](/models/dc-performance/dc_system_losses) | | **Temp. Coeff. of Ideality Factor** | $\alpha_{\gamma}$ | 1/°C | Linear temperature coefficient of diode ideality factor | | **Ideality Factor Polynomial Coefficients** | $a_\gamma, b_\gamma, c_\gamma, d_\gamma$ | 1/°C, 1/°C², 1/°C³, 1/°C⁴ | Polynomial temperature coefficients for ideality factor | | **Temp. Coeff. of Short-Circuit Current** | $\alpha_{I_{sc}}$ | %/°C | Linear temperature coefficient of short-circuit current | | **DC Wiring Resistance** | $R_{DC,module}$ | Ω | Per-module [DC equivalent series resistance](/models/dc-performance/dc_wiring_resistance) | | **Dark Shunt Resistance** | $R_{sh,0}$ | Ω | Shunt resistance at zero irradiance | | **Shunt Resistance Exponent** | $R_{sh,exp}$ | — | Exponential dependency coefficient (default = 5.5) | | **Recombination Parameter** | $d_i^2/\mu\tau$ | V | Recombination parameter for 7-parameter single-diode model | | **Built-in Voltage** | $V_{bi}$ | V | Built-in junction voltage per cell for 7-parameter single-diode model | | **Bandgap Energy** | $E_g$ | eV | Semiconductor bandgap | | **Number of Cells in Series** | $N_c$ | — | Cells in series within module | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------- | -------- | ----- | ---------------------------- | | **Series Resistance** | $R_s$ | Ω | Scaled series resistance | | **Shunt Resistance** | $R_{sh}$ | Ω | Scaled shunt resistance | | **Diode Ideality Factor** | $\gamma$ | — | Scaled ideality factor | | **Saturation Current** | $I_0$ | A | Scaled saturation current | | **Short-Circuit Current** | $I_{sc}$ | A | Scaled short-circuit current | | **Photocurrent** | $I_{ph}$ | A | Scaled photocurrent | *** ## Detailed Description The general of a PV cell is described by: $$ I = I_{ph} - I_0 \left(\exp\!\left(\frac{q(V + IR_s)}{N_c k T_c \gamma}\right) - 1\right) - \frac{V + IR_s}{R_{sh}} - \frac{(d_i^2/\mu\tau) \cdot I_{ph}}{N_c V_{bi} - (V + IR_s)} $$ where $q = 1.602 \times 10^{-19}$ C is the elementary charge and $k = 1.381 \times 10^{-23}$ J/K is the Boltzmann constant. The first five parameters—photocurrent $I_{ph}$, saturation current $I_0$, ideality factor $\gamma$, series resistance $R_s$, and shunt resistance $R_{sh}$—define the [5-parameter model](/models/dc-performance/5_parameter_model). The last term, governed by the recombination parameter $d_i^2/\mu\tau$ and built-in junction voltage $V_{bi}$, is an optional extension used by the [7-parameter model](/models/dc-performance/7_parameter_model) to improve accuracy at low irradiance. For the 5-parameter model, $d_i^2/\mu\tau = 0$ and this term vanishes. Module datasheets characterize these parameters at reference conditions (typically 25 °C, 1000 W/m²). Since cell temperature and irradiance vary continuously during operation, each parameter must be scaled from reference to actual conditions before solving the circuit equation. Additionally, a per-module [DC equivalent series resistance](/models/dc-performance/dc_wiring_resistance) is added to account for wiring losses. The scaling relationships below are applied at every simulation time step. All temperatures are converted to Kelvin before use in the equations below. Throughout, $\Delta T = T_c - T_{ref}$ denotes the temperature difference from reference conditions. ### Series Resistance The per-module [DC wiring resistance](/models/dc-performance/dc_wiring_resistance) $R_{DC,module}$ is added to the reference value: $$ R_s = R_{s,ref} + R_{DC,module} $$ ### Shunt Resistance Shunt resistance increases at low irradiance due to reduced minority carrier concentration. The exponential model below, aligned with PVsyst (Mermoud & Lejeune, 2010), is an empirical fit that interpolates between a finite dark shunt resistance $R_{sh,0}$ at zero irradiance and the reference value at STC: $$ R_{sh} = R_{sh,ref} + (R_{sh,0} - R_{sh,ref}) \exp\left(-R_{sh,exp} \frac{G'_{POA,tot,eff}}{G_{ref}}\right) $$ where: * $R_{sh,ref}$ is the reference shunt resistance, typically defined at STC * $R_{sh,0}$ is the dark shunt resistance (at $G = 0$ W/m²) * $R_{sh,exp}$ is the exponential dependency coefficient (default 5.5) Note that PlantPredict uses $R_{sh,ref}$ directly rather than computing an intermediate base value $R_{sh,base}$. As a result, $R_{sh}$ evaluated at $G'_{POA,tot,eff} = G_{ref}$ does not exactly equal $R_{sh,ref}$—it includes a residual term $(R_{sh,0} - R_{sh,ref}) \cdot e^{-R_{sh,exp}}$. For the default $R_{sh,exp} = 5.5$, this residual is less than 0.5% of $(R_{sh,0} - R_{sh,ref})$. ### Diode Ideality Factor PlantPredict supports two models for the temperature dependence of the diode ideality factor. The linear model is the standard approach, aligned with PVsyst. The polynomial model provides additional flexibility for technologies where the ideality factor exhibits nonlinear temperature dependence, as observed by Sauer et al. (2015). **Linear model:** $$ \gamma = \gamma_{ref} (1 + \alpha_{\gamma} \Delta T) $$ The coefficient $\alpha_{\gamma}$ is typically derived during parameter extraction from the temperature coefficient of maximum power ($\beta_{P_{mp}}$) reported on the module datasheet. It is chosen so that the fully scaled single-diode model reproduces the correct temperature coefficient of power. **Polynomial model:** $$ \gamma = \gamma_{ref} (1 + a_{\gamma} \Delta T + b_{\gamma} \Delta T^2 + c_{\gamma} \Delta T^3 + d_{\gamma} \Delta T^4) $$ where $a_{\gamma}, b_{\gamma}, c_{\gamma}, d_{\gamma}$ are polynomial coefficients. In practice, these are derived by fitting the single-diode model to measured I-V curves at multiple temperatures, extracting $\gamma$ at each temperature, and then fitting a 4th-degree polynomial to $\gamma$ as a function of $\Delta T$. ### Saturation Current The saturation current $I_0$ represents the recombination current of charge carriers across the solar cell in the dark. Its temperature dependence follows from the intrinsic carrier concentration $n_i$, where $n_i^2 \propto T^3 \exp(-E_g / kT)$ and $E_g$ is the . The ideality factor $\gamma$ in the exponent accounts for non-ideal recombination: $$ I_0 = I_{0,ref} \frac{T_c^3}{T_{ref}^3} \exp\left(\frac{q E_g}{k \gamma} \left(\frac{1}{T_{ref}} - \frac{1}{T_c}\right)\right) $$ ### Short-Circuit Current Short-circuit current scales linearly with irradiance and is corrected for temperature using the coefficient $\alpha_{I_{sc}}$ (typically from the module datasheet, in %/°C; converted to 1/°C before use in the equation below): $$ I_{sc} = I_{sc,ref} \frac{G'_{POA,tot,eff}}{G_{ref}} (1 + \alpha_{I_{sc}} \Delta T) $$ ### Photocurrent The photocurrent $I_{ph}$ is obtained by evaluating the I-V equation at $V = 0$ and solving for $I_{ph}$ to ensure that $I(V=0) = I_{sc}$: $$ I_{ph} = \frac{I_{sc}\!\left(1 + \frac{R_s}{R_{sh}}\right) + I_0 \left(\exp\!\left(\frac{q \, I_{sc} R_s}{k \, T_c \, N_c \, \gamma}\right) - 1\right)}{1 - \frac{d_i^2/\mu\tau}{N_c V_{bi} - I_{sc} R_s}} $$ For the 5-parameter model, $d_i^2/\mu\tau = 0$ and the relationship simplifies to: $$ I_{ph} = I_{sc}\!\left(1 + \frac{R_s}{R_{sh}}\right) + I_0 \left(\exp\!\left(\frac{q \, I_{sc} R_s}{k \, T_c \, N_c \, \gamma}\right) - 1\right) $$ *** ## References * Mermoud, A., & Lejeune, T. (2010). *Performance assessment of a simulation model for PV modules of any available technology.* 25th European Photovoltaic Solar Energy Conference, Valencia, Spain. * Sauer, K. J., Roessler, T., & Hansen, C. W. (2015). *Modeling the irradiance and temperature dependence of photovoltaic modules in PVsyst.* IEEE Journal of Photovoltaics, 5(1), 152–158. DOI: [10.1109/JPHOTOV.2014.2364402](https://doi.org/10.1109/JPHOTOV.2014.2364402) * De Soto, W., Klein, S. A., & Beckman, W. A. (2006). *Improvement and validation of a model for photovoltaic array performance.* Solar Energy, 80(1), 78–88. DOI: [10.1016/j.solener.2005.06.010](https://doi.org/10.1016/j.solener.2005.06.010) # Heat Balance Model Source: https://docs.plantpredict.com/models/dc-performance/temperature_heat_balance ## Summary The Heat Balance model is an extended form of the Faiman (2008) model that calculates cell temperature from the energy balance between absorbed solar radiation and heat loss to the environment. It uses experimentally determined conductive and convective heat transfer coefficients to characterize thermal dissipation, and accounts for the fractions of irradiance converted to electricity (via module efficiency at ) and reflected off the surface of the module (via the absorption coefficient). ## Inputs | Name | Symbol | Units | Description | | ----------------------------------------- | ------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Effective Front POA Irradiance** | $G_{POA,front,eff}$ | W/m² | Front-side POA irradiance after optical corrections, before DC system losses (from [irradiance calculation](/models/poa-irradiance/overview)) | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature | | **Wind Speed** | $v_w$ | m/s | Wind velocity | | **Absorption Coefficient** | $\alpha_T$ | — | Fraction of incident irradiance absorbed by the module | | **Module STC Efficiency** | $\eta_{STC}$ | — | Module efficiency at standard test conditions | | **Conductive Heat Transfer Coefficient** | $u_c$ | W/m²·K | Conductive heat transfer coefficient | | **Convective Heat Transfer Coefficient** | $u_v$ | W/m²·K per m/s | Convective heat transfer coefficient | | **Cell-to-Module Temperature Difference** | $\Delta T_{c-m}$ | °C | Temperature difference between cell and module surface | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance (typically 1000 W/m²) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------ | ----- | ---------------------------------- | | **Cell Temperature** | $T_c$ | °C | Operating temperature of PV cells | | **Module Surface Temperature** | $T_m$ | °C | Back-of-module surface temperature | *** ## Detailed Description The Heat Balance model calculates cell temperature from heat generation and dissipation: $$ T_c = T_a + \frac{\alpha_T \cdot G_{POA,front,eff} \cdot (1 - \eta_{STC})}{u_c + u_v \cdot v_w} $$ where: * $T_a$ is the ambient air temperature in °C (from weather data) * $\alpha_T$ is the absorption coefficient (from module definition, fraction of irradiance not reflected or transmitted, typically 0.9) * $G_{POA,front,eff}$ is the front-side after optical corrections, before DC losses, in W/m² (from [irradiance calculation](/models/poa-irradiance/overview)) * $\eta_{STC}$ is the module efficiency at STC (from module definition) * $u_c$ is the conductive heat transfer coefficient in W/m²·K (from DC field definition) * $u_v$ is the convective heat transfer coefficient in W/m²·K per m/s (from DC field definition) * $v_w$ is the wind speed in m/s (from weather data) The thermal behavior is characterized by a thermal loss factor $u = u_c + u_v \cdot v_w$, split into a constant conductive component $u_c$ and a wind-proportional convective component $u_v$. These coefficients depend on many factors (e.g., mounting configuration, module technology, local climate) and are in practice experimentally determined. In alignment with PVsyst, $u_v$ default value is zero, effectively eliminating the convective contribution and reducing the model to a constant thermal loss factor. Users should input a non-zero value if they want wind velocity to affect cell temperature. ### Module Surface Temperature $$ T_m = T_c - \frac{G_{POA,front,eff}}{G_{ref}} \cdot \Delta T_{c-m} $$ where: * $G_{ref}$ is the reference irradiance in W/m² (from module definition, typically 1000 W/m²) * $\Delta T_{c-m}$ is the cell-to-module temperature difference at the reference irradiance, in °C (from DC field definition) *** ## References * Faiman, D. (2008). *Assessing the outdoor operating temperature of photovoltaic modules.* Progress in Photovoltaics: Research and Applications, 16(4), 307–315. DOI: [10.1002/pip.813](https://doi.org/10.1002/pip.813) # NOCT-SAM Model Source: https://docs.plantpredict.com/models/dc-performance/temperature_noct_sam ## Summary The NOCT-SAM model estimates cell temperature from a module's , typically determined according to , applying corrections for irradiance level, module-level optical losses, electrical conversion efficiency, and conductive and convective heat dissipation. This model is based on the System Advisor Model (SAM) implementation (Gilman et al., 2018). ## Inputs | Name | Symbol | Units | Description | | ----------------------------------------- | ------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Front POA Irradiance** | $G_{POA,front}$ | W/m² | Front POA irradiance after transposition, before optical adjustments (from [irradiance calculation](/models/poa-irradiance/overview)) | | **Effective Front POA Irradiance** | $G_{POA,front,eff}$ | W/m² | Front-side POA irradiance after optical adjustments, before DC system losses (from [irradiance calculation](/models/poa-irradiance/overview)) | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature | | **Wind Speed** | $v_w$ | m/s | Wind velocity | | **Module STC Efficiency** | $\eta_{STC}$ | — | Module efficiency at standard test conditions | | **Nominal Operating Cell Temp** | $NOCT$ | °C | Nominal operating cell temperature, as defined by IEC 61215 | | **Transmittance-Absorptance** | $\tau\alpha$ | — | Fraction of incident light absorbed by the PV cell at normal incidence | | **Cell-to-Module Temperature Difference** | $\Delta T_{c-m}$ | °C | Temperature difference between cell and module surface | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance for cell-to-module temperature difference (typically 1000 W/m²) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------ | ----- | ---------------------------------- | | **Cell Temperature** | $T_c$ | °C | Operating temperature of PV cells | | **Module Surface Temperature** | $T_m$ | °C | Back-of-module surface temperature | *** ## Detailed Description The NOCT-SAM model takes as its starting point the Nominal Operating Cell Temperature (NOCT), measured under the standardized conditions defined in IEC 61215, and adjusts it to estimate cell temperature under actual operating conditions. Unlike the Heat Balance and Sandia models, which use only the effective front-side POA irradiance ($G_{POA,front,eff}$), the NOCT-SAM model uses both the front-side POA irradiance ($G_{POA,front}$)—before module-level optical adjustments—and the effective front-side POA irradiance ($G_{POA,front,eff}$)—after module-level optical adjustments. This allows explicit separation between thermal and optical contributions. The model starts from the temperature difference $(NOCT - 20)$ between the nominal operating cell temperature and its reference ambient temperature (20 °C), then applies three scaling factors: ### Irradiance Scaling $$ \frac{G_{POA,front}}{800} $$ This factor scales the temperature rise by the ratio of actual to NOCT reference irradiance (800 W/m²). ### Absorptance and Efficiency Correction $$ 1 - \frac{\eta_{STC}}{\tau\alpha} \cdot \frac{G_{POA,front}}{G_{POA,front,eff}} $$ This factor reduces the temperature rise to account for the fraction of absorbed light converted to electricity rather than heat. The transmittance-absorptance product $\tau\alpha$ represents the fraction of incoming light absorbed by the solar cell at normal incidence—accounting for transmittance through the front layers (glass, encapsulant), absorptance in the solar cell, and internal reflections at layer interfaces—while the ratio $G_{POA,front,eff}/G_{POA,front}$ adjusts for time-dependent optical effects (, , ). ### Heat Dissipation $$ \frac{9.5}{5.7 + 3.8 \cdot 0.51 \cdot v_w} $$ This factor scales thermal losses relative to the NOCT reference wind conditions. The 0.51 factor accounts for the reduced air flow in PV power plants—compared to the open-rack configuration used for NOCT measurement—due to row-to-row shielding and other systemic effects. In PlantPredict, this parameter is hard-coded to 0.51, corresponding to ground-mount systems. ### Cell Temperature Equation $$ T_c = T_a + \frac{G_{POA,front}}{800} \cdot (NOCT - 20) \cdot \left(1 - \frac{\eta_{STC}}{\tau\alpha} \cdot \frac{G_{POA,front}}{G_{POA,front,eff}}\right) \cdot \frac{9.5}{5.7 + 1.938 \cdot v_w} $$ where: * $T_a$ is the ambient air temperature in °C (from weather data) * $NOCT$ is the nominal operating cell temperature in °C (from DC field definition) * $G_{POA,front}$ is the front-side before module-level optical adjustments in W/m² (from [irradiance calculation](/models/poa-irradiance/overview)) * $G_{POA,front,eff}$ is the front-side POA irradiance after module-level optical adjustments in W/m² (from [irradiance calculation](/models/poa-irradiance/overview)) * $\eta_{STC}$ is the module efficiency at (from module definition) * $\tau\alpha$ is the transmittance-absorptance product at normal incidence, without soiling or spectral correction (from DC field definition) * $\tau\alpha \cdot G_{POA,front,eff} / G_{POA,front}$ is the effective absorptance under actual operating conditions (including soiling, IAM, and spectral effects) * $v_w$ is the wind speed in m/s (from weather data) The constants 800 W/m² and 20 °C are the NOCT reference irradiance and ambient temperature conditions. The general NOCT-SAM model also includes a modification to the base NOCT for roof-mounted systems with reduced standoff distance. PlantPredict does not include this adjustment, as it only models utility-scale PV power plants where the module's NOCT value is used directly. ### Module Surface Temperature $$ T_m = T_c - \frac{G_{POA,front,eff}}{G_{ref}} \cdot \Delta T_{c-m} $$ where: * $G_{ref}$ is the reference irradiance in W/m² (from module definition, typically 1000 W/m²) * $\Delta T_{c-m}$ is the cell-to-module temperature difference at the reference irradiance, in °C (from DC field definition) *** ## References * Gilman, P., Dobos, A., DiOrio, N., Freeman, J., Janzou, S., & Ryberg, D. (2018). *SAM photovoltaic model technical reference update.* NREL/TP-6A20-67399, National Renewable Energy Laboratory, Golden, CO. DOI: [10.2172/1495693](https://doi.org/10.2172/1495693) # Sandia Model Source: https://docs.plantpredict.com/models/dc-performance/temperature_sandia ## Summary The Sandia model is an empirical temperature model developed at Sandia National Laboratories (King et al., 2004) based on outdoor measurements. Unlike the Heat Balance model, it calculates back-of-module surface temperature first using an empirical exponential relationship for thermal losses with conductive and convective contributions, then derives cell temperature from it. ## Inputs | Name | Symbol | Units | Description | | ----------------------------------------- | ------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------- | | **Effective Front POA Irradiance** | $G_{POA,front,eff}$ | W/m² | Front-side POA irradiance after optical corrections, before DC system losses (from [irradiance calculation](/models/poa-irradiance/overview)) | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature | | **Wind Speed** | $v_w$ | m/s | Wind velocity | | **Conductive Coefficient** | $a$ | — | Empirical conductive thermal loss coefficient | | **Convective Coefficient** | $b$ | s/m | Empirical convective thermal loss coefficient | | **Cell-to-Module Temperature Difference** | $\Delta T_{c-m}$ | °C | Temperature difference between cell and module surface | | **Reference Irradiance** | $G_{ref}$ | W/m² | Reference irradiance (typically 1000 W/m²) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------ | ----- | ---------------------------------- | | **Cell Temperature** | $T_c$ | °C | Operating temperature of PV cells | | **Module Surface Temperature** | $T_m$ | °C | Back-of-module surface temperature | *** ## Detailed Description The Sandia model calculates back-of-module surface temperature using an empirical exponential relationship for thermal losses with conductive and convective contributions: $$ T_m = G_{POA,front,eff} \cdot e^{a + b \cdot v_w} + T_a $$ where: * $T_a$ is the ambient air temperature in °C (from weather data) * $G_{POA,front,eff}$ is the front-side after optical corrections, in W/m² (from [irradiance calculation](/models/poa-irradiance/overview)) * $a$ is the empirical conductive coefficient (from DC field definition) * $b$ is the empirical convective coefficient in s/m (from DC field definition) * $v_w$ is the wind speed in m/s (from weather data) The exponential term $e^{a + b \cdot v_w}$ represents the thermal resistance between the module and the environment. Both $a$ and $b$ are negative, so higher wind speeds reduce the exponential and thus lower module temperature. These coefficients depend on mounting configuration and module construction and are empirically determined. ### Reference Coefficients The following reference coefficients were empirically derived by Sandia National Laboratories for open-rack mounting (King et al., 2004). These are guidelines only—users can set $a$, $b$, and $\Delta T_{c-m}$ freely in the DC field definition. | Module Type | $a$ | $b$ | $\Delta T_{c-m}$ (°C) | | ------------------ | ----- | ------- | --------------------- | | Glass/cell/glass | −3.47 | −0.0594 | 3 | | Glass/cell/polymer | −3.56 | −0.0750 | 3 | ### Cell Temperature Cell temperature is derived from surface temperature by adding an irradiance-proportional offset: $$ T_c = T_m + \frac{G_{POA,front,eff}}{G_{ref}} \cdot \Delta T_{c-m} $$ where: * $G_{ref}$ is the reference irradiance in W/m² (typically 1000 W/m²) * $\Delta T_{c-m}$ is the cell-to-module temperature difference at the reference irradiance, in °C (from DC field definition) *** ## References * King, D. L., Boyson, W. E., & Kratochvil, J. A. (2004). *Photovoltaic array performance model.* SAND2004-3535, Sandia National Laboratories. DOI: [10.2172/919131](https://doi.org/10.2172/919131) # Battery Model Source: https://docs.plantpredict.com/models/energy-storage/battery_model ## Summary The battery model tracks the internal state of the energy storage system and derives the stored energy and the DC power at the battery terminals (magnitude and direction) at each timestep. It combines the charge/discharge intent from the [Dispatch Algorithms](dispatch_algorithms), the power limits from the [Charge & Discharge Limits](charge_discharge_limits), calendar and per-cycle degradation, and the previous timestep's stored energy. Unlike the rest of the PlantPredict pipeline, this model is iterative—each timestep depends on the previous timestep's state. ## Inputs | Name | Symbol | Units | Description | | -------------------------------------- | ---------------- | -------- | ------------------------------------------------------------------------------------------------- | | **Charge Flag** | $F_c$ | boolean | True if battery should attempt to charge (from [Dispatch Algorithms](dispatch_algorithms)) | | **Discharge Flag** | $F_d$ | boolean | True if battery should attempt to discharge (from [Dispatch Algorithms](dispatch_algorithms)) | | **Available Charge Power** | $P_{charge}$ | W | Maximum charge power at battery DC (from [Charge & Discharge Limits](charge_discharge_limits)) | | **Available Discharge Power** | $P_{discharge}$ | W | Maximum discharge power at battery DC (from [Charge & Discharge Limits](charge_discharge_limits)) | | **Nameplate Energy Capacity** | $E_{nom}$ | MWh | Total manufacturer-rated energy capacity | | **Usable Capacity Factor** | $f_{usable}$ | — | Usable fraction of nameplate capacity (0 to 1) | | **Initial Usable Energy Capacity** | $E_{max,init}$ | MWh | Usable energy capacity at system start | | **Initial Round-Trip DC Efficiency** | $\eta_{RT,init}$ | % | DC round-trip efficiency at system start | | **Capacity Cycle Degradation Rate** | $d_{E,cycle}$ | %/cycle | Capacity loss per normalized discharge cycle | | **Capacity Calendar Degradation Rate** | $d_{E,year}$ | %/year | Capacity loss per year of operation | | **RTE Cycle Degradation Rate** | $d_{\eta,cycle}$ | %/cycle | Round-trip efficiency loss per normalized discharge cycle | | **RTE Calendar Degradation Rate** | $d_{\eta,year}$ | %/year | Round-trip efficiency loss per year of operation | | **Current Timestamp** | $t_n$ | datetime | Timestamp at timestep $n$ | | **Time Interval** | $\delta t$ | minutes | Time interval between consecutive timestamps | *** ## Outputs | Name | Symbol | Units | Description | | -------------------- | ------------- | ----- | ----------------------------------------------------------------------- | | **State of Charge** | $SOC$ | Wh | Energy stored in battery | | **Battery DC Power** | $P_{DC,batt}$ | W | DC power at battery terminals (positive = charge, negative = discharge) | | **DC RTE Loss** | $L_{\eta}$ | W | Round-trip efficiency loss | *** ## Detailed Description The model receives dispatch intent flags and power limits from upstream, then runs in sequence: 1. **Degradation** updates the battery's capacity and efficiency parameters. 2. ** update** adjusts stored energy based on the dispatch flags and available charge/discharge power. losses are consolidated into charging. 3. **DC power** is derived from the change in stored energy. In the equations below, all state variables use functional notation—e.g., $SOC(t_n)$ is the state of charge at timestep $n$, and $SOC(t_{n-1})$ is its value at the previous timestep. All energy and power values are in Wh and W, respectively. ### Initial Conditions The usable energy capacity $E_{max,init}$ is derived from the nameplate energy capacity $E_{nom}$ and a usable capacity factor $f_{usable}$ (0 to 1): $$ E_{max,init} = E_{nom} \times f_{usable} $$ The user specifies any two of the three values and the third is calculated automatically. $f_{usable}$ accounts for depth-of-discharge limits and reserve margins imposed by the battery manufacturer. At the first timestep ($n = 0$), the battery is initialized to full charge with its initial parameters. $E_{max,init}$ is converted from MWh to Wh and $\eta_{RT,init}$ from percentage to fraction before use. $$ SOC(t_0) = E_{max,init} $$ $$ \eta_{RT}(t_0) = \eta_{RT,init} $$ $$ P_{DC,batt}(t_0) = 0 $$ ### Degradation For all subsequent timesteps ($n \geq 1$), degradation is calculated before the SOC update so that the battery operates with its current degraded parameters. All degradation rates ($d_{E,cycle}$, $d_{E,year}$, $d_{\eta,cycle}$, $d_{\eta,year}$) are converted from percentages to fractions before use. Two quantities degrade over time: the usable energy capacity ($D_E$ terms) and the round-trip DC efficiency ($D_\eta$ terms). Each has a cycle component—accumulated from discharge activity—and a calendar component proportional to elapsed time. #### Cycle Degradation Cycle degradation is applied during discharge timesteps. When the previous timestep was not a discharge, the cumulative values carry forward unchanged. During discharge, the discharged energy is normalized by the previous maximum capacity. $$ P_{DC,batt}(t_{n-1}) \geq 0 \Rightarrow \begin{cases} D_{E,cycle}(t_n) = D_{E,cycle}(t_{n-1}) \\ D_{\eta,cycle}(t_n) = D_{\eta,cycle}(t_{n-1}) \end{cases} $$ $$ P_{DC,batt}(t_{n-1}) < 0 \Rightarrow \begin{cases} D_{E,cycle}(t_n) = D_{E,cycle}(t_{n-1}) + \dfrac{|P_{DC,batt}(t_{n-1})|}{E_{max}(t_{n-1})} \times d_{E,cycle} \\[8pt] D_{\eta,cycle}(t_n) = D_{\eta,cycle}(t_{n-1}) + \dfrac{|P_{DC,batt}(t_{n-1})|}{E_{max}(t_{n-1})} \times d_{\eta,cycle} \end{cases} $$ #### Calendar Degradation Calendar degradation is proportional to the elapsed time $\Delta t$ in fractional years: $$ \Delta t = \frac{n}{8760} \times \frac{\delta t}{60} $$ $$ D_{E,year}(t_n) = d_{E,year} \times \Delta t $$ $$ D_{\eta,year}(t_n) = d_{\eta,year} \times \Delta t $$ #### Combined Degradation Cycle and calendar degradation are summed and applied to the initial values to obtain the degraded parameters: $$ E_{max}(t_n) = E_{max,init} \times \left(1 - D_{E,cycle}(t_n) - D_{E,year}(t_n)\right) $$ $$ \eta_{RT}(t_n) = \eta_{RT,init} \times \left(1 - D_{\eta,cycle}(t_n) - D_{\eta,year}(t_n)\right) $$ ### State of Charge The SOC update uses the degraded $E_{max}(t_n)$ and $\eta_{RT}(t_n)$ from above. When both charge and discharge flags are set (possible with the Excess algorithm), the charge flag takes priority. Prior to Version 12, the equations below implicitly assumed $\delta t = 60$ minutes (hourly timesteps). Sub-hourly ESS simulations were not supported and would produce erroneous results. #### Charging When charging ($F_c = \text{TRUE}$), the available charge power is converted to energy (multiplied by $\delta t / 60$) and scaled by the round-trip efficiency before being added to the previous SOC, capped at the degraded maximum capacity: $$ SOC(t_n) = \min\!\left( SOC(t_{n-1}) + P_{charge} \times \frac{\delta t}{60} \times \eta_{RT}(t_n),\; E_{max}(t_n) \right) $$ In practice, round-trip losses occur across both charge and discharge. The model lumps the entire round-trip efficiency ($\eta_{RT}$) into the charge step—the full power enters the battery but only a fraction is stored—rather than splitting losses between the two directions. #### Discharging When discharging ($F_c = \text{FALSE}$ and $F_d = \text{TRUE}$), energy is drawn from the battery without round-trip losses. The SOC cannot drop below zero (empty battery): $$ SOC(t_n) = \max\!\left( SOC(t_{n-1}) - P_{discharge} \times \frac{\delta t}{60},\; 0 \right) $$ #### Idle When idle ($F_c = \text{FALSE}$ and $F_d = \text{FALSE}$), the SOC carries forward unchanged: $$ SOC(t_n) = SOC(t_{n-1}) $$ ### Battery DC Power DC power is derived from the change in SOC, converting the change in stored energy back to power. $P_{DC,batt}(t_n)$ is positive during charging, negative during discharging, and zero when idle. #### Charging When charging ($SOC(t_n) > SOC(t_{n-1})$), the round-trip efficiency is divided out to recover the DC power that entered the battery: $$ P_{DC,batt}(t_n) = \frac{SOC(t_n) - SOC(t_{n-1})}{\eta_{RT}(t_n) \times \delta t / 60} > 0 $$ #### Discharging When discharging ($SOC(t_n) < SOC(t_{n-1})$), the SOC change maps directly to DC power: $$ P_{DC,batt}(t_n) = \frac{SOC(t_n) - SOC(t_{n-1})}{\delta t / 60} < 0 $$ ### Loss Reporting Since the round-trip efficiency is applied entirely during charging, the associated loss is reported during charging timesteps ($P_{DC,batt}(t_n) > 0$): $$ L_{\eta}(t_n) = \bigl(1 - \eta_{RT}(t_n)\bigr) \times P_{DC,batt}(t_n) $$ *** # Charge & Discharge Limits Source: https://docs.plantpredict.com/models/energy-storage/charge_discharge_limits ## Summary Charge and discharge limits determine the maximum power that can flow into or out of the battery at each timestep. The [Dispatch Algorithms](dispatch_algorithms) set the *intent* to charge or discharge; the charge/discharge limits determine *how much* power is actually available for each operation. These limits account for the available PV power, ESS inverter capacity and losses, ESS losses, equipment losses, and the interconnect constraint. In both directions, the limit is set by the lesser of two competing factors: the energy target and the ESS hardware capacity (primarily the inverter). During charging, the energy target depends on the dispatch algorithm—ranging from PV power that would otherwise be curtailed to the full available PV output. During discharging, the energy target is the remaining headroom below the LGIA limit at the . For Custom Dispatch, the user directly controls both charge and discharge power levels as a fraction of inverter capacity, as detailed below. ## Inputs | Name | Symbol | Units | Description | | ------------------------------------- | ------------------ | ----- | ----------------------------------------------------------------------- | | **PV MV Transformer Output** | $P_{PV,MV}$ | W | PV power output from MV transformer, before HV losses | | **PV Power After Availability** | $P_{PV,avail}$ | W | PV output after availability losses, before LGIA curtailment | | **Grid Limit (LGIA)** | $P_{POI}$ | MW | Maximum allowed power at point of interconnection | | **HV Equipment Losses** | $L_{HV}$ | W | Total HV transformer and transmission line losses (from PV-only pass) | | **ESS MV Transformer Rating** | $P_{MV,rated,ESS}$ | MVA | ESS MV transformer nameplate capacity | | **ESS MV No-Load Loss** | $L_{NL,ESS}$ | % | ESS MV transformer no-load loss as a percentage of $P_{MV,rated,ESS}$ | | **ESS MV Full-Load Loss** | $L_{FL,ESS}$ | % | ESS MV transformer full-load loss as a percentage of $P_{MV,rated,ESS}$ | | **ESS Inverter Rated AC Power** | $P_{AC,rated,ESS}$ | MW | ESS inverter nameplate AC power rating | | **ESS Inverter Efficiency** | $\eta_{inv}$ | % | ESS inverter conversion efficiency | | **Custom Inverter Capacity Fraction** | $f_{cap}$ | — | Per-timestep inverter capacity fraction, 0 to 1 (Custom Dispatch only) | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------------- | --------------- | ----- | ------------------------------------- | | **Available Charge Power** | $P_{charge}$ | W | Maximum charge power at battery DC | | **Available Discharge Power** | $P_{discharge}$ | W | Maximum discharge power at battery DC | *** ## Detailed Description All charge and discharge limits are calculated at the battery DC terminals (Node 1). The calculations trace power from the measurement point (POI or MV bus) back through losses to determine how much DC power can actually reach or leave the battery. All inputs are converted to watts before use in equations ($P_{POI}$: MW → W, $P_{AC,rated,ESS}$: MW → W, $P_{MV,rated,ESS}$: MVA → VA). ### Charge Limits Each charge limit calculation follows the same four steps: determine a starting power, subtract ESS MV transformer losses, cap at inverter capacity, and apply inverter efficiency. The choice of dispatch algorithm affects the starting power (Step 1) and, for Custom Dispatch, the inverter capacity limit (Step 3). The result is clamped to zero if negative. #### Step 1: Charging Starting Power **LGIA Excess algorithm:** The LGIA Excess algorithm uses the PV excess above the interconnect limit, traced back from the POI to the MV bus by adding the portion of total HV losses attributable to $P_{excess}$: $$ P_{excess} = \max(P_{PV,avail} - P_{POI},\; 0) $$ $$ P_{c,start} = P_{excess} + L_{HV} \times \frac{P_{excess}}{P_{PV,MV}} $$ The proportional scaling of $L_{HV}$ assumes HV losses scale linearly with power. Because HV losses are quadratic in current, this slightly overestimates the charge limit. This approximation only affects the determination of the charge limit; the actual losses are correctly captured in the second-pass plant-level power flow. **Energy Available and Custom Dispatch algorithms:** Both algorithms use the full PV MV transformer output as starting power: $$ P_{c,start} = P_{PV,MV} $$ #### Step 2: ESS MV Transformer Loss The starting power passes through the ESS MV transformer: $$ P_{inv,AC} = P_{c,start} - L_{MV,ESS}(P_{c,start}) $$ where $L_{MV,ESS}$ is computed using the [Transformer Loss Model](/models/ac-losses/transformer_loss_model) with $P_{MV,rated,ESS}$, $L_{NL,ESS}$, and $L_{FL,ESS}$. #### Step 3: Inverter Capacity Limit For the LGIA Excess and Energy Available algorithms, the power available to the energy storage system after transformer losses is limited by the ESS inverter's rated AC capacity: $$ P_{inv,capped} = \min(P_{AC,rated,ESS},\; P_{inv,AC}) $$ For the Custom Dispatch algorithm, the user specifies the inverter operating point as a fraction $f_{cap}$ of rated capacity, capped by the PV-derived power from Steps 1–2: $$ P_{inv,capped} = \min(f_{cap} \times P_{AC,rated,ESS},\; P_{inv,AC}) $$ #### Step 4: Inverter Efficiency The inverter efficiency $\eta_{inv}$ is converted from percent to a fraction before use in equations. $$ P_{charge} = P_{inv,capped} \times \eta_{inv} $$ For the Energy Available algorithm, $P_{charge}$ is used by the [Dispatch Algorithms](dispatch_algorithms) to determine whether to set the charge flag (when above zero). ### Discharge Limit The discharge limit determines how much DC power the battery can deliver, traced from the POI back to the battery DC terminals. The calculation mirrors the charge pipeline in reverse. #### Step 1: Discharging Starting Power Two independent constraints determine the maximum discharge power at the POI: **LGIA headroom:** The battery can only discharge up to the remaining capacity below the LGIA limit after accounting for the PV output: $$ P_{d,LGIA} = \max(P_{POI} - P_{PV,avail},\; 0) $$ **Storage hardware limit:** The maximum power the storage system can deliver to the POI is the inverter capacity reduced by ESS MV transformer and HV equipment losses: $$ P_{d,hardware} = P_{AC,rated,ESS} - L_{MV,ESS} - L_{HV,ESS} $$ where $L_{MV,ESS}$ is the ESS MV transformer loss computed for $P_{AC,rated,ESS}$ using the [Transformer Loss Model](/models/ac-losses/transformer_loss_model), and $L_{HV,ESS}$ is the total HV equipment loss computed by running the post-MV-transformer power ($P_{AC,rated,ESS} - L_{MV,ESS}$) through the plant's [HV equipment chain](/models/ac-losses/plant_level_losses). Note that $L_{HV,ESS}$ is evaluated for the storage power alone, not the combined PV+storage flow. Because HV losses are quadratic in current, this underestimates the true incremental loss and therefore slightly overestimates the discharge limit. This approximation only affects the determination of the discharge limit; the actual losses are correctly captured in the second-pass plant-level power flow, which uses the combined output. **Combined constraint:** The discharge starting power is the lesser of the two limits: $$ P_{d,start} = \min(P_{d,LGIA},\; P_{d,hardware}) $$ #### Step 2: HV and ESS MV Equipment Losses The starting power is traced backward from the POI through HV equipment and ESS MV transformer to determine the power at the inverter AC terminals: $$ P_{inv,AC} = P_{d,start} + L_{HV,ESS} + L_{MV,ESS} $$ $L_{MV,ESS}$ is recalculated for the actual power at the transformer ($P_{d,start} + L_{HV,ESS}$). If the limiting constraint in Step 1 is the LGIA headroom, this power is lower than $P_{AC,rated,ESS}$ and the MV loss differs from the value used in Step 1. If the limit is set by the ESS hardware, the power is the same and the loss is unchanged. #### Step 3: Inverter Capacity Limit For the LGIA Excess and Energy Available algorithms, the hardware limit in Step 1 guarantees that $P_{inv,AC}$ never exceeds $P_{AC,rated,ESS}$, so $P_{inv,capped} = P_{inv,AC}$. For the Custom Dispatch algorithm, the user specifies the inverter operating point directly, bypassing Steps 1–2: $$ P_{inv,capped} = f_{cap} \times P_{AC,rated,ESS} $$ Because Custom Dispatch does not check LGIA headroom, the combined PV+ESS power at the POI can exceed the LGIA limit. Any excess is curtailed in the second-pass plant-level power flow. It is the user's responsibility to set the custom dispatch instructions to avoid exceeding the LGIA limit, as there are intentionally no safeguards for this dispatch algorithm. #### Step 4: Inverter Efficiency The inverter AC power is converted to battery DC power by dividing by inverter efficiency: $$ P_{discharge} = \frac{P_{inv,capped}}{\eta_{inv}} $$ *** # Dispatch Algorithms Source: https://docs.plantpredict.com/models/energy-storage/dispatch_algorithms ## Summary Dispatch Algorithms determine when the battery energy storage system should attempt to charge or discharge. PlantPredict implements three dispatch algorithms: * ** Excess**: charges from clipped PV energy * **Energy Available**: charges when PV energy is available * **Custom Dispatch**: user-defined time series The dispatch algorithm sets binary charge/discharge flags for each timestep, which control the battery calculation. These flags set the *intent* to charge or discharge; the [Charge & Discharge Limits](charge_discharge_limits) determine *how much* power is actually available for each operation. ## Inputs | Name | Symbol | Units | Description | | ------------------------------- | -------------- | ------- | --------------------------------------------------------------------------------------------- | | **PV Power After Availability** | $P_{PV,avail}$ | W | PV output after availability losses, before LGIA curtailment | | **Grid Limit (LGIA)** | $P_{POI}$ | MW | Maximum allowed power at point of interconnection | | **Available Charge Power** | $P_{charge}$ | W | Maximum charge power at battery DC (see [Charge & Discharge Limits](charge_discharge_limits)) | | **Dispatch Table** | $D_{m,h}$ | boolean | Discharge command for month $m$, hour $h$ (LGIA Excess / Energy Available) | | **Custom Time Series** | $C_t$ | — | Per-timestep charge/discharge command (Custom Dispatch) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------ | ------ | ------- | ------------------------------------------- | | **Charge Flag** | $F_c$ | boolean | True if battery should attempt to charge | | **Discharge Flag** | $F_d$ | boolean | True if battery should attempt to discharge | *** ## Detailed Description The dispatch algorithms set charge and discharge *intent* flags ($F_c$, $F_d$) for each timestep. Both flags default to FALSE. These flags do not guarantee that charging or discharging will occur—feasibility depends on the available charge/discharge power (already computed by [Charge & Discharge Limits](charge_discharge_limits)) and whether the battery has remaining capacity to accept or deliver energy—is the battery fully charged or discharged?—evaluated in the [Battery Model](battery_model). $P_{POI}$ is converted from MW to W before use in equations. ### Discharging #### LGIA Excess and Energy Available For these algorithms, the target discharge period is determined from a monthly dispatch table ($D_{m,h}$). For each month of the year, the table specifies which hours of the day are designated as discharge periods. The discharge flag is set when the current timestep falls within a target period: $$ \text{If } D_{m,h} = \text{TRUE} \implies F_d = \text{TRUE} $$ #### Custom Dispatch The discharge flag is set directly from the user-defined time series: $$ \text{If } C_t = \text{Discharge} \implies F_d = \text{TRUE} $$ ### Charging #### LGIA Excess The charge flag is set when PV output after availability losses exceeds the LGIA limit, including during target discharge periods. The excess energy is diverted to charge the battery, subject to ESS inverter capacity and available battery capacity. $$ \text{If } P_{PV,avail} > P_{POI} \implies F_c = \text{TRUE} $$ #### Energy Available The charge flag is set when there is available capacity to charge and the current timestep is not within a target discharge period. $P_{charge}$ is the maximum charge power available at the battery DC terminals, derived from the total PV output at the bus through the ESS MV transformer and inverter losses and limits (see [Charge & Discharge Limits](charge_discharge_limits) for the full calculation). $$ \text{If } P_{charge} > 0 \text{ and } D_{m,h} = \text{FALSE} \implies F_c = \text{TRUE} $$ #### Custom Dispatch The charge flag is set directly from the user-defined time series: $$ \text{If } C_t = \text{Charge} \implies F_c = \text{TRUE} $$ ### Charge/Discharge Priority When both charge and discharge flags are active in the same timestep—possible with the LGIA Excess algorithm during a target discharge period when PV exceeds the LGIA limit—charging takes priority. *** # Energy Storage Overview Source: https://docs.plantpredict.com/models/energy-storage/overview PlantPredict models AC-coupled battery energy storage systems (BESS) integrated with solar PV plants. The storage system connects at the bus through its own inverter and MV , sharing the plant's equipment and grid connection with the PV system. The ESS model determines when and how much the battery charges or discharges, tracks battery state over time, and combines the storage power flow with PV output to produce the final plant delivery at the . ## PV + ESS Prediction Flow The full PV pipeline (irradiance, photovoltaic conversion, DC–AC conversion, array-level and block-level aggregation) runs once per timestep. The ESS calculation then runs using the PV results, and only the [plant-level power flow](/models/ac-losses/plant_level_losses) (HV equipment, availability, limit) is re-run with the combined output: 1. **PV pipeline** — Runs once. Block power is aggregated, then the plant-level power flow applies HV transformer and transmission line losses, availability loss, and LGIA limit. This produces the PV transformer output and the PV-only output at the POI, both of which are retained as inputs to the ESS model. 2. **ESS calculation** — Using the PV MV transformer output and the PV-only output at the POI, the ESS model runs its full calculation sequence (constraints, dispatch, battery state, power flow) and produces a combined PV+ESS output at the MV level. 3. **Plant-level power flow re-run** — The combined output replaces the PV block sum at the MV level and the plant-level power flow runs again: HV transformer and transmission line losses, availability loss, and LGIA limit are re-applied to the combined output. This produces the final plant output at the POI. The rest of the PV pipeline is not re-run. ## Node Positions Single Line Diagram of AC-Coupled Energy Storage System The energy storage model tracks power flow at seven node positions. These nodes represent measurement points where power values are calculated: 1. **Battery DC terminals** — DC power at the battery level 2. **Storage inverter AC output** — AC power after DC-AC conversion 3. **Storage MV transformer output** — Power from storage-side MV transformer 4. **PV MV transformer output** — Power from PV-system-side MV transformer 5. **Combined PV+ESS at MV** — Combined power from PV and storage systems 6. **HV equipment output** — Power after HV transformers and transmission lines 7. **Point of interconnection (POI)** — Final grid delivery point, after availability and LGIA adjustments ## Models in This Section ### [Charge & Discharge Limits](charge_discharge_limits) Calculates the maximum power available for charging and discharging at each timestep. **Charge limits:** * PV excess above interconnect limit (LGIA Excess algorithm) * Available PV power after storage MV transformer losses (Energy Available algorithm) * Storage inverter capacity and efficiency **Discharge limits:** * LGIA headroom (remaining capacity below the interconnect limit) * Storage inverter capacity * MV transformer and HV equipment losses between battery and POI ### [Dispatch Algorithms](dispatch_algorithms) Determines when the battery charges and discharges by setting intent flags for each timestep. Three algorithms are available: * **LGIA Excess**: charges when PV output exceeds interconnect capacity * **Energy Available**: charges when PV energy is available and not in discharge period * **Custom Dispatch**: user-defined charge/discharge schedule ### [Battery Model](battery_model) Tracks the battery's internal state and derives the resulting power flows: * **Degradation**: capacity and decline from cycling and aging (additive) * **State of charge**: updates the energy stored in the battery, based on three independent factors—the dispatch flags (charge, discharge, or idle), the power limits (hardware and grid constraints), and the current (clamped between full and empty) * **DC and AC power**: derived from the actual SOC change—zero when idle, and potentially lower than the power limits if the battery is full or empty ### [Power Flow to Grid](power_flow) Transforms battery AC power into grid-deliverable output: 1. Storage MV transformer losses (charge, discharge, and no-load loss when idle) 2. Combined PV+ESS output at MV (PV output adjusted for battery charging or discharging) 3. Plant-level power flow re-run: HV equipment losses, availability loss, LGIA limit ## Calculation Sequence 1. Calculate available charge and discharge power ([Charge & Discharge Limits](charge_discharge_limits)) 2. Set charge/discharge intent flags from [Dispatch Algorithms](dispatch_algorithms) 3. Update degradation, then state of charge, then calculate DC and AC power ([Battery Model](battery_model)) 4. Apply storage MV transformer losses ([Power Flow to Grid](power_flow)) 5. Combine PV and storage at MV, adjusting PV output for battery charging/discharging ([Power Flow to Grid](power_flow)) 6. Re-run plant-level power flow with combined output (HV equipment, availability, LGIA limit) # Power Flow to Grid Source: https://docs.plantpredict.com/models/energy-storage/power_flow ## Summary Power Flow to Grid computes the combined PV+ESS net power delivered to the grid. Battery DC power is converted to AC through the storage and traced through the . During charging, PV output is reduced by the power diverted to storage; during discharging, battery power is added to PV output. The combined output at MV then triggers a re-run of the [plant-level power flow](/models/ac-losses/plant_level_losses)—the transformers losses, transmission lines losses, , and limit are re-calculated and applied; the rest of the PV pipeline is not re-run. ## Inputs | Name | Symbol | Units | Description | | ----------------------------- | ------------------ | ----- | ------------------------------------------------------------------------------------------------------------ | | **Battery DC Power** | $P_{DC,batt}$ | W | DC power at battery terminals, positive = charge, negative = discharge (from [Battery Model](battery_model)) | | **ESS Inverter Efficiency** | $\eta_{inv}$ | % | ESS inverter conversion efficiency | | **ESS MV Transformer Rating** | $P_{MV,rated,ESS}$ | MVA | ESS MV transformer nameplate capacity | | **ESS MV No-Load Loss** | $L_{NL,ESS}$ | % | ESS MV transformer no-load loss as a percentage of $P_{MV,rated,ESS}$ | | **ESS MV Full-Load Loss** | $L_{FL,ESS}$ | % | ESS MV transformer full-load loss as a percentage of $P_{MV,rated,ESS}$ | | **PV MV Transformer Output** | $P_{PV,MV}$ | W | PV power output from MV transformer, before HV losses | | **Grid Limit (LGIA)** | $P_{POI}$ | MW | Maximum allowed power at point of interconnection | | **Availability Factor** | $f_{avail}$ | % | Flat percentage deduction for estimated downtime | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------- | -------------- | ----- | --------------------------------------------------------------------------- | | **Combined PV+ESS Power** | $P_{combined}$ | W | Merged PV and ESS power at MV level before HV losses | | **Grid Power** | $P_{grid}$ | W | Final plant output at the POI after HV losses, availability, and LGIA limit | *** ## Detailed Description The power flow traces battery power from the DC terminals to the grid in four steps: 1. **ESS Inverter** — converts DC to AC (or AC to DC) with efficiency losses 2. **ESS MV Transformer** — applies transformer losses to the inverter AC power 3. **Combined PV+ESS Output** — merges PV and ESS power at the MV level (subtracting charge or adding discharge) 4. **Plant-Level Power Flow Re-Run** — applies HV losses, availability, and LGIA limit to the combined output ### Step 1: ESS Inverter The inverter converts between DC power at the battery terminals and AC power on the low-voltage side of the MV transformer. $\eta_{inv}$ is converted from percentage to fraction before use. When discharging ($P_{DC,batt} < 0$), the inverter converts DC to AC with efficiency losses: $$ P_{AC,d} = -P_{DC,batt} \times \eta_{inv} $$ When charging ($P_{DC,batt} > 0$), the inverter converts AC to DC, requiring more AC input than DC output: $$ P_{AC,c} = \frac{P_{DC,batt}}{\eta_{inv}} $$ The inverter efficiency loss is calculated for reporting during both charge and discharge: $$ L_{inv} = (1 - \eta_{inv}) \times |P_{DC,batt}| $$ ### Step 2: ESS MV Transformer The storage MV transformer uses the same quadratic loss model as PV transformers (see [Transformer Loss Model](/models/ac-losses/transformer_loss_model)), parameterized by $P_{MV,rated,ESS}$—converted from MVA to VA—$L_{NL,ESS}$, and $L_{FL,ESS}$. #### Discharge During discharge (power flows battery → grid), the transformer reduces the power delivered to the MV bus: $$ P_{MV,d} = P_{AC,d} - L_{MV}(P_{AC,d}) $$ #### Charge (or Idle) During charge or when the battery is idle (power flows PV → battery via the MV bus), the transformer increases the power drawn from the MV bus—the PV must supply the charge power plus the transformer loss: $$ P_{MV,c} = P_{AC,c} + L_{MV}(P_{AC,c}) $$ When the battery is idle, the transformer still draws power from the grid to maintain core magnetization. The charge power reduces to the no-load loss alone: $P_{MV,c} = L_{NL,ESS} \times P_{MV,rated,ESS}$. ### Step 3: Combined PV+ESS Output When charging or idle, PV output is reduced by the total power diverted to storage, $P_{MV,c}$ (which includes MV transformer loss overhead and collapses to the no-load loss when idle, per Step 2): $$ P_{combined} = P_{PV,MV} - P_{MV,c} $$ When discharging, battery power is added to the full PV output: $$ P_{combined} = P_{PV,MV} + P_{MV,d} $$ When PV is negative and the battery is discharging—possible at night due to auxiliary loads and transformer energization losses—only the battery discharge is delivered: $P_{combined} = P_{MV,d}$. ### Step 4: Plant-Level Power Flow Re-Run The combined output ($P_{combined}$) replaces the sum of PV block outputs, and the [plant-level power flow](/models/ac-losses/plant_level_losses) is re-run with the new PV + ESS combined power value to determine revised HV losses. The upstream portion of the PV pipeline (irradiance, DC performance, inverter, array-level losses) is not run again; those results are retained. The re-run applies the same three stages as the PV-only pass: 1. **HV equipment** — $P_{combined}$ enters the HV chain and passes through each transformer and transmission line in series; each element reduces the power by its losses and feeds the result to the next element. The final output $P_{HV,out}$ is the power upstream of the after all HV losses. 2. **Availability** — a flat percentage deduction for estimated downtime due to maintenance and unplanned outages: $$ P_{avail} = P_{HV,out} \times \frac{100 - f_{avail}}{100} $$ 3. **LGIA limit** — power exceeding the interconnect capacity ($P_{POI}$, converted from MW to W) is curtailed: $$ P_{grid} = \min(P_{avail},\, P_{POI}) $$ can occur when: * PV alone exceeds the LGIA limit and the battery does not charge—either because the dispatch intent is not to charge (e.g., discharge target period or non-charge custom instruction), or because hardware limits prevent it (inverter at capacity or battery full) * The battery discharges while PV is already near the limit, pushing the combined output above the cap (only possible with Custom Dispatch algorithm—other algorithms enforce LGIA headroom on discharge) * Slight inaccuracies in the simplified loss estimates used by the [charge and discharge limits](charge_discharge_limits) cause the combined output to marginally overshoot # Glossary Source: https://docs.plantpredict.com/models/general/glossary ## Terms | Term | Definition | | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Aberration** | The apparent displacement of a celestial object's position due to the finite speed of light combined with earth's orbital motion. The sun appears slightly displaced from its true geometric position, requiring a correction of approximately 20 arcseconds in longitude. | | **Absorption Coefficient** | A material property quantifying the rate at which light intensity decreases per unit path length due to absorption (units: m⁻¹). Appears in optical transmittance equations. | | **Aerosol Optical Depth** | A measure of atmospheric turbidity caused by suspended aerosol particles (dust, smoke, pollution). Higher values indicate hazier conditions with more scattering and absorption of sunlight. Aerosol optical depth affects the ratio of direct to diffuse irradiance and is used in clear-sky irradiance models. | | **Air Mass** | The ratio of the path length of sunlight through earth's atmosphere to the path length at zenith (sun directly overhead). Air mass equals 1 at zenith and increases with solar zenith angle, reaching \~38 at the horizon. Higher air mass means more atmospheric absorption and scattering. | | **Albedo** | Ground reflectance, expressed as a dimensionless ratio from 0 to 1, representing the fraction of incident solar radiation reflected by the surface. Fresh snow has high albedo (\~0.8–0.9), while dark soil has low albedo (\~0.1–0.2). Albedo affects the ground-reflected component of plane-of-array irradiance and is particularly important for bifacial module modeling. | | **Along-Axis Slope** | The terrain slope component parallel to the tracker row orientation (or parallel to fixed-tilt rows). Along-axis slope creates elevation differences between bays within the same row, affecting which neighboring bays can cast shadows on a receiver bay. Used in slope-aware shading calculations. See also: Cross-Axis Slope. | | **Angle of Incidence** | The angle between the sun's rays and the perpendicular (normal) to a surface. When the sun is directly facing a surface, the angle of incidence is 0° and maximum irradiance is received. As the angle increases, the irradiance on the surface decreases proportionally to cos(θ). For tracking systems, the goal is to minimize angle of incidence to maximize energy capture. | | **Anisotropic** | Varying with direction. In transposition models, anisotropic diffuse irradiance refers to sky diffuse that has directional components—such as circumsolar brightening near the sun and horizon brightening near the horizon—rather than being uniformly distributed across the sky dome. The Perez model is an example of an anisotropic transposition model. | | **Anisotropy Index** | A dimensionless ratio of direct normal irradiance (DNI) to extraterrestrial DNI, used in the Hay-Davies transposition model to quantify what fraction of diffuse irradiance exhibits directional (circumsolar) characteristics. Values range from 0 (overcast sky, purely isotropic diffuse) to approximately 1 (clear sky, high circumsolar fraction). | | **Anti-Reflective Coating (ARC)** | A thin optical layer applied to the front glass of PV modules to reduce reflection losses. The coating has an intermediate refractive index (typically n ≈ 1.22–1.30) between air (n = 1.0) and glass (n ≈ 1.52), which minimizes the refractive index mismatch at each interface. The Physical IAM model explicitly accounts for the ARC layer in its optical calculations. | | **Astronomical Unit (AU)** | The mean distance from earth to the sun, approximately 149.6 million kilometers (93 million miles). Used as a standard unit for measuring distances within the solar system. Earth's distance from the sun varies from \~0.983 AU at perihelion to \~1.017 AU at aphelion due to its elliptical orbit. | | **Atmospheric Attenuation** | The reduction in solar radiation intensity as it passes through earth's atmosphere, caused by absorption (by gases like ozone, water vapor, and CO₂) and scattering (by molecules and aerosols). Attenuation increases with air mass—at higher zenith angles, sunlight travels through more atmosphere and experiences greater losses. | | **Availability Loss** | Energy loss resulting from the plant or part of the plant being offline due to scheduled maintenance or unplanned outages. | | **Azimuth** | The horizontal angle measured clockwise from north (0° = North, 90° = East, 180° = South, 270° = West). For the sun (solar azimuth), this is the compass direction to the sun's position projected onto the horizon. For a surface (surface azimuth), this is the compass direction the surface faces—the horizontal projection of the outward normal vector. | | **Backtracking** | A tracker control strategy that rotates modules away from the optimal sun-tracking angle to prevent inter-row shading during low sun angles (morning and evening). When trackers would otherwise cast shadows on adjacent rows, backtracking reduces the rotation angle to eliminate shading, accepting a slightly higher angle of incidence in exchange for avoiding shading losses. Standard backtracking assumes uniform terrain; terrain-aware backtracking accounts for elevation differences between rows. | | **Bandgap Energy** | The minimum energy required to excite an electron from the valence band to the conduction band in a semiconductor. The bandgap determines which wavelengths of light a solar cell can absorb and convert to electricity. For crystalline silicon, the bandgap is approximately 1.12 eV, corresponding to a cutoff wavelength of \~1100 nm. Wider-bandgap materials (e.g., CdTe at 1.5 eV) absorb less of the solar spectrum but produce higher voltage per cell. | | **Bay** | A section of a single-axis tracker, typically corresponding to one torque tube segment, where all mounted modules share the same tilt angle and follow the same rotation angle. Modules within a bay receive uniform irradiance and have the same angle of incidence. A single tracker is comprised of multiple bays; in articulated trackers, these bays may have different tilts to follow terrain contours. | | **Beam Irradiance** | The direct component of solar radiation traveling in a straight line from the sun, as opposed to diffuse irradiance which has been scattered by the atmosphere. Beam irradiance is the dominant component under clear skies and is maximized when the module surface is perpendicular to the sun's rays. Also called direct irradiance. See also: DNI. | | **Bifacial** | A type of PV module that can absorb light from both its front and rear surfaces, generating additional energy from ground-reflected and rear-incident irradiance. Bifacial modules are characterized by their bifaciality factor, which quantifies the rear surface's relative efficiency compared to the front. See also: Bifaciality Factor. | | **Bifaciality Factor** | The ratio of a bifacial module's rear-side efficiency to its front-side efficiency, expressed as a dimensionless value typically ranging from 0.65 to 0.90. A bifaciality factor of 0.70 means the rear side converts light to electricity at 70% of the front side's efficiency. Used to weight rear-side irradiance when calculating effective POA irradiance for bifacial modules. | | **Built-in Voltage** | The contact potential ($V_{bi}$) that arises across a semiconductor junction at thermal equilibrium, equal to the difference in chemical potential between the two sides of the junction in isolation. $V_{bi}$ is an equilibrium property of the junction that characterizes the difference in carrier concentrations between the two sides of the junction. | | **Bypass Diode** | A diode connected in parallel with a group of solar cells within a PV module. When cells become shaded or damaged, the bypass diode provides an alternative current path, preventing the shaded cells from limiting the entire string's output and avoiding localized heating (hot spots). Typical crystalline silicon modules have 3 bypass diodes, each protecting approximately one-third of the module's cells. | | **CEC (California Energy Commission)** | A standards body that defines inverter test protocols and efficiency ratings for PV systems. The CEC test protocol measures inverter efficiency at six power levels (10%, 20%, 30%, 50%, 75%, and 100% of rated power) and three DC voltage levels. The CEC maintains a database of tested inverter performance parameters used in PV energy modeling. | | **Circumsolar** | Diffuse irradiance concentrated in a bright ring around the solar disk, caused by forward scattering of sunlight by atmospheric particles. Under clear skies, a significant fraction of diffuse irradiance comes from the circumsolar region. Transposition models like Hay-Davies and Perez treat circumsolar irradiance separately from isotropic diffuse because it behaves geometrically similar to direct beam irradiance. | | **Clearness Index** | The ratio of measured global horizontal irradiance (GHI) to extraterrestrial horizontal irradiance, quantifying atmospheric transmittance. Values range from 0 (complete overcast) to \~0.8 (very clear sky). Used in diffuse-direct decomposition models. | | **Clipping** | The condition where DC power available from the PV array exceeds the inverter's rated AC output capacity. The inverter moves its operating point away from the array's maximum power point to limit input power, curtailing output to its rated capacity. Clipping occurs most often around solar noon on clear days in systems with high DC-to-AC ratios. | | **Closure Equation** | The fundamental relationship between horizontal irradiance components: GHI = DNI × cos(θz) + DHI, where θz is the solar zenith angle. This equation states that global horizontal irradiance equals the horizontal projection of direct normal irradiance plus diffuse horizontal irradiance. Used for quality control validation and to calculate missing irradiance components. | | **Column Depth** | The total amount of an atmospheric constituent (such as ozone or water vapor) contained in a vertical column of atmosphere, expressed as the equivalent thickness the substance would have if compressed to standard conditions. For ozone, column depth is typically \~0.3 cm; for water vapor (called precipitable water), typical values range from 0.5 to 5 cm. Column depth is multiplied by air mass to obtain the slant column along the sun's path. | | **Cross-Axis Slope** | The terrain slope component perpendicular to the tracker row orientation (or perpendicular to fixed-tilt rows). Cross-axis slope affects row-to-row shading by changing the relative elevation between adjacent rows. Positive cross-axis slope means rows further from the front are higher. Used in slope-aware shading and terrain-aware backtracking calculations. See also: Along-Axis Slope. | | **Curtailment** | Deliberate reduction of power plant output to comply with grid constraints, interconnection agreements, or dispatch instructions. In energy modeling, curtailment loss is the difference between what the plant could produce and what is delivered to the grid. | | **Day Angle** | The angular position of earth in its orbit, measured in radians from the start of the year. Ranges from 0 to 2π over the course of a year and is used in calculating extraterrestrial irradiance and the equation of time. | | **Declination** | The angular distance of a celestial object north or south of the celestial equator, analogous to latitude on earth. Solar declination ranges from +23.45° (summer solstice) to −23.45° (winter solstice) and determines the sun's path across the sky at different times of year. | | **Decomposition** | The process of separating global horizontal irradiance (GHI) into its direct (DNI) and diffuse (DHI) components using empirical models. Common decomposition models include Erbs, Reindl, and DIRINT. These models use the clearness index and other parameters to estimate the fraction of irradiance that is direct vs. diffuse based on atmospheric conditions. | | **Dewpoint Temperature** | The temperature at which air becomes saturated with water vapor (relative humidity reaches 100%). At the dewpoint, the air can no longer hold all its moisture and condensation begins. Dewpoint is a direct measure of atmospheric moisture content—higher dewpoint indicates more water vapor in the air. | | **DHI (Diffuse Horizontal Irradiance)** | Solar radiation received on a horizontal surface from the sky dome after scattering by atmospheric constituents (molecules, aerosols, clouds), excluding the direct beam component from the sun's disk. DHI represents the "soft" light that arrives from all directions of the sky. Typical clear-sky values range from 50–150 W/m², increasing under partly cloudy conditions. | | **Diffuse Irradiance** | Solar radiation that has been scattered by atmospheric constituents (molecules, aerosols, clouds) and arrives at a surface from all directions of the sky dome rather than directly from the sun. Diffuse irradiance increases under cloudy or hazy conditions and provides the "soft" ambient light even when the sun is obscured. See also: DHI. | | **Diode Ideality Factor** | A dimensionless parameter (typically between 1 and 2) that characterizes how closely a PV cell follows the ideal diode equation. In the single-diode model, the ideality factor appears in the exponential term and affects the shape of the I-V curve, particularly the fill factor. | | **DNI (Direct Normal Irradiance)** | Solar radiation received on a surface held perpendicular (normal) to the sun's rays, representing only the direct beam component from the sun's disk. DNI is the highest-intensity component under clear skies (typically 800–1000 W/m²) and is the primary driver of energy production for tracking systems. DNI drops to zero under overcast conditions. | | **Ecliptic** | The plane of earth's orbit around the sun, or equivalently, the apparent annual path of the sun across the celestial sphere. The ecliptic is inclined at approximately 23.44° to the celestial equator (earth's equatorial plane projected onto the sky). This tilt causes the seasons. | | **Ecliptic Coordinates** | A celestial coordinate system based on the ecliptic plane as the fundamental reference. Positions are specified by ecliptic longitude (measured eastward from the vernal equinox along the ecliptic, 0°–360°) and ecliptic latitude (angular distance north or south of the ecliptic, ±90°). Used in planetary and solar position calculations. | | **Ecliptic Reference Frame** | A coordinate system with the ecliptic (earth's orbital plane) as its fundamental plane. The x-axis points toward the vernal equinox, and the z-axis is perpendicular to the ecliptic. Used for describing planetary positions and as an intermediate step in solar position calculations. See also: Ecliptic Coordinates. | | **Electrical Mismatch** | Power loss that occurs when series-connected solar cells or modules operate at different current levels due to partial shading, soiling, manufacturing variations, or temperature differences. Because cells in a string must carry the same current, the lowest-performing cell limits the entire string's output. At the module level, mismatch between modules in the same string similarly constrains overall power. Electrical mismatch losses can significantly exceed the geometric shading fraction, particularly for crystalline silicon modules. | | **Elevation (Solar)** | The angular height of the sun above the horizon, measured in degrees. Also called solar altitude. Ranges from 0° (horizon) to 90° (directly overhead). Related to zenith angle by: elevation = 90° − zenith. | | **Energization** | The date on which a PV system block is first connected to the grid and begins producing power. The energization date serves as the reference point for degradation and LeTID calculations; before this date, system output is zero. | | **Ephemeris Time** | A historical uniform time scale based on the motion of celestial bodies, independent of earth's variable rotation. Ephemeris Time was replaced by Terrestrial Time (TT) in 1984, though the two are continuous and equivalent for practical purposes. Used in astronomical calculations where precise orbital mechanics are needed. Differs from Universal Time by ΔT. | | **Equation of Time** | The difference between apparent solar time (based on the actual sun's position) and mean solar time (based on a hypothetical sun moving at constant rate). The equation of time varies from approximately −14 to +16 minutes throughout the year due to two effects: (1) earth's elliptical orbit causes varying orbital speed per Kepler's second law, and (2) earth's axial tilt causes the sun's east-west motion projected onto the celestial equator to vary seasonally. PlantPredict uses a second-order Fourier series approximation following Spencer (1971). | | **Equatorial Coordinates** | A celestial coordinate system based on earth's equatorial plane projected onto the celestial sphere. Positions are specified by right ascension (measured eastward from the vernal equinox along the celestial equator, 0h–24h or 0°–360°) and declination (angular distance north or south of the equator, ±90°). Used for specifying positions as seen from earth. | | **Equatorial Reference Frame** | A coordinate system with earth's equatorial plane as its fundamental plane. The x-axis points toward the vernal equinox, and the z-axis points toward the celestial north pole. Used for describing celestial positions as seen from earth and for calculating hour angles. See also: Equatorial Coordinates. | | **Equinox** | The moment when the sun crosses the celestial equator, making day and night approximately equal length worldwide. The vernal (spring) equinox occurs around March 20 when the sun moves northward; the autumnal equinox occurs around September 22 when it moves southward. The equinox points also serve as reference points for celestial coordinate systems. | | **Fractional Year Angle** | The angular position in the annual cycle, ranging from 0 to 2π radians over the course of a year. Computed as γ = (2π/365.24)(n − 1 + t/24), where n is the day of year and t is the hour of day. Used in Fourier series approximations for seasonal solar variations such as the equation of time and extraterrestrial irradiance. Also called the day angle. | | **GAST (Greenwich Apparent Sidereal Time)** | The hour angle of the true vernal equinox at the Greenwich meridian. GAST measures earth's rotational position relative to the stars, accounting for nutation. It is computed from Greenwich Mean Sidereal Time (GMST) plus the equation of the equinoxes (Δψ cos ε). Used to calculate the local hour angle of celestial objects. | | **GCR (Ground Coverage Ratio)** | The ratio of collector width (the dimension of the PV module array perpendicular to the tracker axis) to row pitch (the horizontal distance between adjacent tracker rotation axes). GCR is a dimensionless value typically ranging from 0.2 to 0.5 for single-axis trackers. Higher GCR values indicate denser arrays with more ground coverage but increased inter-row shading; lower values reduce shading but require more land area. GCR is a key parameter in backtracking calculations. | | **Geocentric** | Measured from earth's center, treating the planet as a point mass. Geocentric coordinates do not account for the observer's position on earth's surface, making them suitable for astronomical calculations where parallax effects are negligible. | | **GHI (Global Horizontal Irradiance)** | Total solar radiation received on a horizontal surface from the entire sky hemisphere, including direct beam, diffuse sky radiation, and ground-reflected radiation. GHI is the most commonly measured irradiance component and equals DNI × cos(θz) + DHI, where θz is the solar zenith angle. Typical peak values are 900–1100 W/m² at solar noon under clear skies. | | **Heliocentric** | Measured from the center of the sun. Heliocentric coordinates describe earth's position in its orbit around the sun, used as an intermediate step in calculating the sun's apparent position as seen from earth. | | **Horizon Brightening** | Enhanced diffuse irradiance near the horizon band, caused by atmospheric scattering at low elevation angles where the optical path through the atmosphere is longest. The Perez transposition model includes a horizon brightening component that can be positive (bright horizon band) or negative (dark horizon relative to zenith). Horizon brightening is most pronounced under partly cloudy conditions. | | **HV (High Voltage)** | The high-voltage portion of a power plant's electrical infrastructure, typically downstream of block-level aggregation. HV equipment includes step-up transformers and transmission lines that connect the plant to the utility grid at the point of interconnection. | | **IAM (Incidence Angle Modifier)** | A correction factor that accounts for optical losses when light strikes a module surface at non-perpendicular angles. As the angle of incidence increases, more light is reflected away rather than transmitted through the glass cover. IAM equals 1 at normal incidence and decreases toward 0 at grazing angles. | | **IEC 61215** | An international standard that defines design qualification and type approval requirements for crystalline silicon terrestrial PV modules. It specifies environmental and performance tests—including thermal cycling, damp heat, and mechanical load—that modules must pass to demonstrate long-term reliability. The standard also defines the procedure for measuring Nominal Operating Cell Temperature (NOCT) under standardized open-rack conditions (800 W/m² irradiance, 20 °C ambient, 1 m/s wind speed). | | **Inverter** | A power electronics device that converts direct current (DC) from PV modules into alternating current (AC) for grid injection. The inverter determines its operating point on the DC field's I-V curve and has a rated AC capacity that limits maximum power delivery. When DC input exceeds this capacity, the inverter clips. | | **Isotropic** | Uniform in all directions. In transposition models, isotropic diffuse irradiance refers to sky diffuse that is evenly distributed across the entire sky dome, without directional concentration. Simple transposition models assume all diffuse irradiance is isotropic, while advanced models like Hay-Davies and Perez separate isotropic from anisotropic (circumsolar, horizon) components. | | **I-V Curve** | The current-voltage characteristic of a PV cell or module, describing all possible operating points from short-circuit current ($I_{sc}$) to open-circuit voltage ($V_{oc}$). The shape of the modeled I-V curve is determined by the single-diode model parameters and shifts with irradiance and temperature. The maximum power point (MPP) is the point on the curve where the product of current and voltage is greatest. | | **Julian Calendar** | A calendar system introduced by Julius Caesar in 46 BC, using a 365.25-day year with leap years every 4 years. In astronomy, "Julian" refers to the Julian Day Number—a continuous count of days since January 1, 4713 BC—which provides a uniform time reference independent of calendar systems. Julian Day 2451545.0 corresponds to January 1, 2000, 12:00 TT (the J2000.0 epoch). | | **LeTID (Light and Elevated Temperature Induced Degradation)** | A degradation mechanism in silicon solar cells where carrier-induced defects form under illumination at elevated operating temperatures, reducing module efficiency over the first few years of operation. Unlike conventional degradation, LeTID is partially reversible, leading to some level of performance recovery. | | **LGIA (Large Generator Interconnection Agreement)** | A regulatory agreement defining the terms and conditions for connecting a large power generation facility to the transmission grid, including the maximum power export limit at the point of interconnection. The LGIA capacity sets the upper bound on deliverable plant output. | | **LID (Light-Induced Degradation)** | Initial power loss experienced by PV modules upon first exposure to light, primarily caused by boron-oxygen defect complexes in p-type crystalline silicon cells. LID typically results in a 1–3% reduction in module power during the first hours to days of operation. | | **Local Hour Angle** | The angular distance of a celestial object (typically the sun) from the observer's local meridian, measured westward in degrees or hours. An hour angle of 0° means the object is on the meridian (local noon for the sun); positive values indicate the object has passed the meridian (afternoon). Computed as H = GAST + observer's longitude − right ascension. | | **Local Solar Time** | A time scale based on the sun's actual position relative to the observer's meridian. Solar noon (12:00 local solar time) occurs when the sun crosses the local meridian. Local solar time differs from clock time due to the observer's position within their time zone and the equation of time (which accounts for earth's elliptical orbit and axial tilt). | | **Local Standard Time** | Clock time for a given time zone, defined as a fixed offset from Coordinated Universal Time (UTC). For example, US Eastern Standard Time is UTC−5. Local standard time differs from local solar time due to the observer's longitude within the time zone and the equation of time. To convert from local solar time to local standard time, apply the equation of time correction and adjust for the difference between the observer's longitude and the time zone's central meridian. | | **Maximum Power Point (MPP)** | The operating point on a PV module's current-voltage (I-V) curve where the product of voltage and current yields the highest power output. The MPP shifts with irradiance and temperature — higher irradiance increases current (and thus power), while higher temperature reduces voltage (and thus power). | | **Metastability** | A transient performance phenomenon observed in certain PV module technologies (notably CdTe and some HJT designs) where module efficiency varies reversibly depending on recent thermal and irradiance history. Metastable effects arise from changes in material defect states that shift the I-V curve. | | **MV (Medium Voltage)** | The medium-voltage portion of a power plant's electrical infrastructure, between the inverter output and the plant-level collection point. MV equipment includes step-up transformers and AC collection cabling that aggregate array outputs before delivery to the HV system. | | **Nighttime Disconnect** | An operational mode in which plant equipment is electrically disconnected from the grid during nighttime or other periods when the inverters are not producing power, eliminating standby losses such as transformer no-load losses and auxiliary loads. | | **NOCT (Nominal Operating Cell Temperature)** | The cell temperature of a PV module measured under standard open-rack conditions: 800 W/m² irradiance, 20 °C ambient temperature, and 1 m/s wind speed. NOCT provides a standardized thermal reference point for a specific module design and is used in temperature models to predict cell temperature under varying environmental conditions by scaling from this reference. | | **Normalized Path Length** | The ratio of the actual path length that sunlight travels through the atmosphere to the path length at zenith (sun directly overhead). This is equivalent to air mass. A normalized path length of 1 means the sun is overhead; values increase with zenith angle, reaching \~38 at the horizon. Used in transmittance calculations where the amount of absorbing or scattering material encountered is proportional to path length. | | **Nutation** | Short-period oscillations in earth's rotational axis caused by gravitational torques from the sun and moon. Nutation causes periodic variations of up to ±17 arcseconds in longitude and ±9 arcseconds in obliquity, with the primary period being 18.6 years. | | **Obliquity** | The angle between earth's rotational axis and the perpendicular to its orbital plane (the ecliptic), currently approximately 23.44°. Obliquity determines the severity of seasons and varies slowly over time due to gravitational perturbations. | | **Open-Circuit Voltage** | The voltage across a PV cell or module at open circuit, when no current flows ($I = 0$). Open-circuit voltage ($V_{oc}$) is determined by the balance between photocurrent and diode recombination current, and decreases with increasing temperature (typically −0.3 to −0.4 %/°C for crystalline silicon). It is one of the key nameplate parameters reported on module datasheets at STC. | | **Orbital Plane** | The flat, two-dimensional surface in which a celestial body travels around another. Earth's orbital plane around the sun defines the ecliptic. Other planets have orbital planes inclined at various angles to earth's, causing gravitational perturbations that affect earth's position. | | **Parallax** | The apparent displacement of a celestial object's position due to the observer's location on earth's surface rather than at earth's center. Solar parallax causes the sun's position to shift by up to \~8.8 arcseconds depending on the observer's latitude, longitude, and altitude. PlantPredict applies a parallax correction to convert geocentric coordinates to topocentric coordinates. | | **Photocurrent** | The current generated by light absorption in a PV cell, representing the rate at which photon-generated electron-hole pairs are collected. Photocurrent ($I_{ph}$) is slightly larger than the measured short-circuit current ($I_{sc}$) because a small fraction of the light-generated current is lost through the diode junction and shunt resistance even at $V = 0$. | | **Plane-of-Array Irradiance (POA)** | Solar irradiance incident on the tilted surface of a PV module, measured in W/m². POA irradiance is calculated by transposing horizontal irradiance components (GHI, DNI, DHI) to the module plane, accounting for surface tilt, azimuth, and solar position. Total POA irradiance consists of beam (direct), sky diffuse, and ground-reflected components. This is the irradiance that actually reaches the module surface and drives power generation. | | **POI (Point of Interconnection)** | The physical location where a power plant connects to the utility transmission grid. The POI is the metering and delivery point at which plant output is measured and contractual obligations (such as the LGIA limit) apply. All upstream losses are accounted for before reporting power at the POI. | | **Polygon Clipping** | A computational geometry technique for computing the intersection of two polygons. In shading calculations, polygon clipping determines the overlapping area between a projected shadow polygon and a receiver surface. The resulting intersection polygon represents the shaded portion of the receiver. Used in 3D shading engines and slope-aware linear shading algorithms. | | **Precipitable Water** | The total amount of water vapor contained in a vertical column of atmosphere, expressed as the equivalent depth of liquid water if condensed (typically 0.5–5 cm). Precipitable water affects atmospheric absorption of solar radiation, particularly in the infrared spectrum, and is used in clear-sky irradiance models and spectral calculations. | | **Radius Vector** | The distance from the center of the sun to the center of earth, measured in astronomical units (AU). Varies from \~0.983 AU (perihelion, early January) to \~1.017 AU (aphelion, early July) due to earth's elliptical orbit. | | **Rayleigh Scattering** | Elastic scattering of light by particles much smaller than the wavelength (such as air molecules N₂ and O₂). The molecule's electron cloud oscillates in response to the electromagnetic wave and re-radiates at the same frequency. Rayleigh scattering is symmetric—equal amounts scatter forward and backward—and is wavelength-dependent (∝ λ⁻⁴), scattering blue light more than red. This causes the blue color of the sky and contributes to diffuse irradiance in clear-sky models. | | **Recombination** | The process by which photo-generated electron-hole pairs recombine and are lost before being collected as electrical current. Recombination reduces both the current and voltage output of a solar cell. In the single-diode model, recombination is captured by the diode term; the 7-parameter extension adds a voltage-dependent recombination current term for improved accuracy at low irradiance. | | **Refraction** | The bending of light as it passes through earth's atmosphere, caused by the decrease in air density with altitude. Atmospheric refraction makes the sun appear higher than its true geometric position, with the effect increasing at lower elevations. At the horizon, refraction displaces the sun by approximately 0.57°. PlantPredict applies a refraction correction to the calculated zenith angle based on temperature and pressure. | | **Refractive Index** | A dimensionless ratio of the speed of light in vacuum to the speed of light in a material, determining how much light bends and reflects when passing between media. Air has n ≈ 1.0, anti-reflective coatings typically n ≈ 1.22–1.30, and solar glass n ≈ 1.52. The refractive index determines both the refraction angle and the Fresnel reflection at each interface. | | **Relative Humidity** | The ratio of the actual water vapor pressure in the air to the saturation vapor pressure at the same temperature, expressed as a percentage (0–100%). At 100% relative humidity, the air is saturated and cannot hold more water vapor without condensation. | | **Right Ascension** | The angular distance of a celestial object measured eastward along the celestial equator from the vernal equinox, analogous to longitude on earth. Typically expressed in hours, minutes, and seconds (0h to 24h) or degrees (0° to 360°). | | **Round-Trip DC Efficiency (RTE)** | The fraction of DC energy that can be recovered from a battery during discharge relative to the DC energy consumed during charge, accounting for internal losses within the battery. RTE is distinct from total AC round-trip efficiency because it excludes inverter conversion losses. RTE decreases over time due to cycle degradation and calendar aging. | | **Saturation Current** | The reverse-bias leakage current of the diode in the single-diode model, representing the recombination current of charge carriers within the solar cell. It is typically very small (on the order of $10^{-10}$ to $10^{-12}$ A for a single crystalline-silicon cell at STC) but governs the voltage characteristics of the I-V curve through the diode equation. | | **Saturation Vapor Pressure** | The maximum partial pressure of water vapor that air can hold at a given temperature, expressed in hPa or kPa. Saturation vapor pressure increases exponentially with temperature—warm air can hold substantially more moisture than cold air. The August-Roche-Magnus equation provides an empirical approximation for calculating saturation vapor pressure from temperature. The ratio of actual vapor pressure to saturation vapor pressure defines relative humidity. | | **Series Resistance** | The total ohmic resistance in the current path of a PV module, including cell metallization, solder bonds, cell interconnect ribbons, junction box connections, and DC wiring. Series resistance causes I²R power losses that increase with current. | | **Shading Factor** | A dimensionless value from 0 to 1 representing the fraction of irradiance that reaches the module surface after accounting for shadows. A shading factor of 1 means no shading (full irradiance); 0 means complete shading. PlantPredict calculates separate shading factors for beam, sky diffuse, and ground-reflected irradiance components. | | **Short-Circuit Current** | The maximum current a PV cell or module produces when its terminals are directly connected ($V = 0$). Short-circuit current scales approximately linearly with irradiance and has a small positive temperature coefficient (typically 0.03–0.06 %/K). At STC, it is one of the key nameplate parameters reported on module datasheets. In the single-diode model, $I_{sc}$ is slightly less than the photocurrent $I_{ph}$ because a small fraction of the light-generated current flows through the diode and shunt resistance even at zero voltage. | | **Shunt Resistance** | A parasitic resistance across the PV cell junction, representing leakage current paths caused by manufacturing defects, crystal grain boundaries, or edge effects. Ideal cells have infinite shunt resistance; real cells have finite values that allow a small current to bypass the junction, reducing output power — particularly at low irradiance when the photocurrent is small relative to the leakage current. | | **Sidereal Time** | Time measured relative to the fixed stars rather than the sun. A sidereal day is \~4 minutes shorter than a solar day because earth advances in its orbit. Local sidereal time is used to calculate the local hour angle of celestial objects. | | **Single-Diode Model** | An equivalent circuit that represents a PV cell as a light-generated current source in parallel with a diode and shunt resistance, all in series with a series resistance. The diode models solar cell's nonlinear voltage-current relationship. Common variants include the 5-parameter model (one diode) and a 7-parameter extension that adds a recombination current term for improved accuracy at low irradiance. | | **Sky Dome** | The hemispherical view of the sky from a point on the earth's surface, representing all possible directions from which diffuse irradiance can arrive. The sky dome is the source of diffuse irradiance, with brightness varying across its extent (brighter near the sun and horizon under clear skies). View factors quantify what fraction of the sky dome is visible from a tilted surface. | | **Slant Column** | The total amount of an atmospheric constituent (such as ozone or water vapor) along the actual slant path from the sun to the observer, as opposed to the vertical column. Calculated as the product of column depth and air mass (normalized path length): slant column = column depth × AM. For example, with ozone column depth of 0.3 cm and air mass of 2, the ozone slant column is 0.6 cm. | | **Soiling** | The accumulation of dust, dirt, pollen, bird droppings, and other debris on the surface of PV modules, reducing light transmission and energy production. Soiling losses vary by location, season, and weather patterns, and can range from 1–2% in rainy climates to 10–25% in dusty or arid regions without regular cleaning. PlantPredict applies a soiling factor (0–1) to all POA irradiance components. | | **Solid Angle** | A three-dimensional angle that measures the apparent size of an object as seen from a given point, expressed in steradians (sr). | | **Spectral Effects** | Changes in the solar spectrum as sunlight passes through the atmosphere, affecting PV module performance. At higher air mass (lower sun angles), the atmosphere absorbs more blue light and transmits relatively more red/infrared light. Different PV cell technologies respond differently to these spectral changes—modules with narrow spectral response (e.g., CdTe) are more affected than those with broad response (e.g., crystalline silicon). PlantPredict uses spectral shift models to account for these effects. | | **Spectral Mismatch** | The difference between the actual solar spectrum incident on a PV module and the reference spectrum (typically AM1.5G) used to rate module performance. Spectral mismatch causes modules to perform slightly better or worse than their rated efficiency depending on atmospheric conditions, air mass, precipitable water, and the module's spectral response. Different cell technologies (c-Si, CdTe, CIGS, etc.) have different spectral responses, making some more sensitive to spectral shifts than others. The spectral mismatch modifier adjusts the effective irradiance to account for this deviation from standard test conditions. See also: Spectral Effects. | | **State of Charge (SOC)** | The amount of energy currently stored in a battery, expressed in watt-hours or as a fraction of usable capacity. SOC is updated each timestep based on charge or discharge power flows (accounting for round-trip DC efficiency) and is bounded between zero (empty) and the degraded usable capacity (full). | | **STC (Standard Test Conditions)** | The reference conditions under which PV module performance is rated: 1000 W/m² irradiance, 25 °C cell temperature, and AM1.5G solar spectrum. Module nameplate power (Pmax), short-circuit current (Isc), and open-circuit voltage (Voc) are specified at STC. | | **Temperature Derating** | Reduction of an inverter's maximum AC power capacity based on ambient temperature and site elevation. At high temperatures or elevations, the inverter can deliver less power than its nameplate rating. The derated capacity sets the upper bound for clipping. | | **Terrestrial Time (TT)** | A uniform time scale based on celestial mechanics, independent of earth's variable rotation. TT replaced Ephemeris Time in 1984 and is used for astronomical ephemerides and orbital calculations. TT runs at a constant rate defined by atomic clocks, differing from Universal Time by ΔT (67 seconds in PlantPredict). In the SPA algorithm, TT is used to compute planetary positions while UT is used for earth rotation. | | **Topocentric** | Measured from a specific point on earth's surface, as opposed to geocentric (from earth's center). Topocentric coordinates account for the observer's actual position including latitude, longitude, and elevation. | | **Transformer** | An electrical device that connects two AC circuits at different voltages, used in PV plants to step up voltage from the inverter output to medium-voltage (MV) or high-voltage (HV) levels. Transformer losses comprise no-load (core) losses—present whenever the transformer is energized—and load-dependent (winding) losses that scale with the square of the loading fraction. | | **Transmittance** | The fraction of solar radiation that passes through the atmosphere to reach the earth's surface. In clear-sky models, transmittance decreases with air mass as sunlight travels through more atmosphere. The DISC model decomposes transmittance into clear-sky transmittance ($K_{nc}$, the theoretical maximum under clear conditions) minus a transmittance reduction ($\Delta K_n$, accounting for clouds, aerosols, and turbidity), yielding actual transmittance ($K_n$). DNI is then calculated as transmittance times extraterrestrial irradiance. | | **Transposition** | The process of converting horizontal irradiance components (GHI, DNI, DHI) to plane-of-array (POA) irradiance on a tilted surface. Transposition models calculate beam, sky diffuse, and ground-reflected irradiance contributions based on surface orientation, solar position, and view factors. Common transposition models include Hay-Davies and Perez. | | **Turbidity** | A measure of the cloudiness or haziness of the atmosphere caused by aerosols, water vapor, dust, and other suspended particles that scatter and absorb sunlight. Higher turbidity reduces direct normal irradiance and increases diffuse irradiance. In decomposition models, turbidity effects are captured indirectly through the clearness index and transmittance reduction factors. Unlike clouds, which cause rapid fluctuations in irradiance, turbidity typically produces steady attenuation—a distinction exploited by the DIRINT model's temporal stability parameter. | | **Universal Time (UT)** | A time standard based on earth's rotation, closely approximating mean solar time at the Prime Meridian. UT1 is determined by astronomical observations and varies slightly due to irregularities in earth's rotation. UTC (Coordinated Universal Time) is kept within 0.9 seconds of UT1 through leap seconds. | | **Vernal Equinox** | The point on the celestial sphere where the sun crosses the celestial equator moving from south to north, occurring around March 20. Also called the "First Point of Aries," it serves as the zero point for measuring right ascension and ecliptic longitude. The position of the vernal equinox slowly shifts due to precession (\~50 arcseconds/year) and oscillates due to nutation. | | **View Factor** | The geometric factor describing what fraction of radiation leaving one surface reaches another surface. In transposition models, view factors quantify how much of the sky dome and ground are visible from the tilted module surface. For a surface tilted at angle β, the view factor to the sky dome is (1 + cos β)/2, and the view factor to the ground is (1 − cos β)/2. A horizontal surface (β = 0°) sees the entire sky dome (view factor = 1) and no ground (view factor = 0); a vertical surface (β = 90°) sees half sky and half ground (view factor = 0.5 each). | | **VSOP87** | Variations Séculaires des Orbites Planétaires (Secular Variations of Planetary Orbits), a high-precision planetary theory developed by Bretagnon and Francou (1988). VSOP87 provides polynomial and periodic series for computing the heliocentric positions of planets. The NREL Solar Position Algorithm uses VSOP87 to calculate earth's heliocentric longitude, latitude, and radius vector. | | **Zenith Angle** | The angle between the local vertical (zenith) and the line of sight to the sun, measured in degrees. A zenith angle of 0° means the sun is directly overhead; 90° means it is at the horizon. Related to solar elevation by: zenith angle = 90° − elevation. | *** # Source: https://docs.plantpredict.com/models/general/intro
PlantPredict

Models & Algorithms

## Summary This section provides technical documentation of the physical and empirical models that form PlantPredict's prediction engine. Each page describes a specific model or algorithm used to simulate solar PV system performance, from solar resource assessment through grid-delivered power including optional battery energy storage. ## Purpose and Scope The Models & Algorithms section documents the calculation methods used in PlantPredict Version 12 to predict energy production from utility-scale solar photovoltaic systems. These models translate solar physics and electrical engineering principles into quantitative predictions of system performance under varying environmental and operational conditions. The prediction engine is organized into five main stages that correspond to the physical energy conversion process: ### Stage 1: Irradiance Calculation From solar resource characterization (sun position, horizontal irradiance components, and system geometry) to effective plane-of-array irradiance: * **Sun Position & Extraterrestrial Irradiance**: Solar position algorithm, sunrise/sunset times, extraterrestrial irradiance, and correction * **Horizontal Irradiance Data Processing**: Weather data quality control and, if needed, diffuse-direct * **System Geometry**: Fixed-tilt and single-axis tracker orientations, including tracking algorithm (true tracking, backtracking, terrain-aware backtracking, or user-defined tracking angles) * ** Models**: Converting horizontal irradiance components to plane-of-array irradiance, including 3D transposition * **Shading Models**: Horizon shading, sky diffuse shading, ground-reflected shading, direct beam shading (geometric, legacy 3D, or detailed 3D scene), and electrical shading effects * **Plane-of-Array Irradiance**: Soiling, incidence angle modifiers, spectral corrections, and bifacial irradiance gain ### Stage 2: Photovoltaic Conversion From plane-of-array irradiance to module-level DC electrical power: * **Cell Temperature**: Thermal models for cell temperature estimation (Heat Balance, Sandia, NOCT-SAM, or measured surface temperature) * **DC System Losses**: Mismatch, module quality, LID, and DC health losses applied to effective irradiance * **DC Performance Models**: Single diode model, recombination models, and temperature coefficients ### Stage 3: DC Aggregation and DC–AC Conversion From module-level DC power to inverter-level AC power: * **DC Field Aggregation**: Combining multiple DC fields at a common operating voltage * **Degradation (DC Applied)**: Time-dependent power reduction due to module aging, applied to aggregated DC power before inverter operating region determination * **Inverter Models**: Temperature derating, operating regions, and efficiency ### Stage 4: AC Collection and Interconnection From inverter-level AC power to grid-delivered energy: * **Degradation (AC Applied)**: Time-dependent degradation applied at the AC level (Linear AC, Stepped AC, LeTID) * **Transformer Loss Model**: Shared quadratic loss model for MV and HV step-up transformers * **Array-Level Aggregation and AC Losses**: Inverter aggregation, auxiliary loads, MV transformer, AC collection system, and block aggregation * **Plant-Level Aggregation and AC Losses**: Block-to-plant aggregation, HV transformers, transmission lines, availability, and LGIA limit ### Stage 5: Energy Storage Optional AC-coupled battery energy storage system integrated with PV. The full PV pipeline (Stages 1–4) runs once; the ESS calculation then uses the retained PV results, and only the plant-level power flow (HV equipment, availability, LGIA limit) is re-run with the combined PV+ESS output: * **Charge & Discharge Limits**: Maximum charge/discharge power from system topology and constraints * **Dispatch Algorithms**: LGIA excess, energy available, and custom dispatch modes * **Battery Model**: Degradation, state of charge, DC and AC power derivation * **Power Flow to Grid**: Storage MV transformer losses, PV adjustment, and combined output ## Documentation Structure Each model page follows a consistent structure: * **Title**: Clear, descriptive model name * **Summary**: Concise description of the model purpose and outputs * **Inputs**: Table listing all input parameters with symbols, units, and descriptions * **Outputs**: Table listing all output parameters with symbols, units, and descriptions * **Detailed Description**: Complete mathematical description of the model, including equations and algorithmic steps * **References**: Academic and technical references for the model Overview pages within each stage provide navigation and describe the relationships between models within that section. The [Prediction Model Flow](/models/general/prediction_flow) page provides a complete walkthrough of the calculation sequence. ## Version 12 Focus This documentation describes models as implemented in PlantPredict Version 12. Where Version 12 differs from previous versions, those differences are explicitly noted. New features in Version 12 include: * **Site-Level 3D Scene Shading**: Polygon clipping algorithm for fast, accurate shade calculations across entire site * **Terrain-Aware Backtracking (TABT)**: Optimization of tracker angles accounting for local terrain slopes * **3D Transposition**: Bay-to-bay (tracking systems) or rack-to-rack (fixed-tilt systems) irradiance variations in 3D scene calculations * **Enhanced Bifacial Modeling**: Improved rear-surface irradiance calculations with view factors * **Quadratic AC Collection Losses**: Load-dependent AC collection system losses * **Battery Energy Storage**: Dispatch algorithms, degradation modeling, and PV+storage integration ## Conventions All models in this documentation follow consistent conventions for units, angles, and coordinate systems. Key conventions include: * **Azimuth angles**: Measured clockwise from north (0° = North, 90° = East, 180° = South, 270° = West) * **Tilt angles**: Measured from horizontal (0° = horizontal, 90° = vertical) * **Zenith angles**: Measured from vertical (0° = overhead, 90° = horizon) * **Irradiance units**: W/m² unless otherwise specified * **Temperature**: Celsius unless otherwise specified * **Pressure**: hPa (hectopascals) unless otherwise specified # Prediction Model Flow Source: https://docs.plantpredict.com/models/general/prediction_flow ## Overview PlantPredict calculates solar PV system performance through a hierarchical sequence of models, progressing from solar resource characterization to grid-delivered power. The calculation is organized into five main stages that correspond to the physical energy conversion process: 1. **Irradiance Calculation** — From solar resource to effective plane-of-array irradiance 2. **Photovoltaic Conversion** — From effective irradiance to DC field-level DC electrical power, including DC system losses 3. **DC Aggregation and DC–AC Conversion** — From DC field power to inverter-level AC power, including DC field aggregation, DC-applied degradation, and inverter modeling 4. **AC Collection and Interconnection** — From inverter-level AC power to grid-delivered energy 5. **Energy Storage** — Battery charge/discharge and integration with PV (optional) The calculation loops through each timestep in the input weather data, applying models at the site, block, array, inverter, and DC field levels. ## Calculation Hierarchy PlantPredict organizes the power plant into a five-level hierarchy: * **Site**: Overall project (single) * **Block**: Group of arrays with shared characteristics (one or more) * **Array**: Group of inverters with shared electrical configuration (one or more per block) * **Inverter**: Individual inverter with connected DC fields (one or more per array) * **DC Field**: Strings of PV modules connected to an inverter (one or more per inverter) Calculations proceed from the lowest level (DC Field) upward, with results aggregated at each level. *** ## Stage 1: Irradiance Calculation This stage converts the solar resource data (horizontal irradiance components) into the effective irradiance on the surface of the module, accounting for geometry, atmospheric effects, shading, and optical losses. ### 1.1 Solar Position (Site Level) **Purpose**: Calculate apparent sun position and solar angles **Models**: * NREL Solar Position Algorithm (SPA) * Sunrise and sunset time determination * Air mass models (Bird-Hulstrom, Kasten-Sandia) * Extraterrestrial irradiance (Spencer equation) **Outputs**: Solar apparent zenith angle, solar azimuth angle, sunrise/sunset times, air mass, extraterrestrial DNI ### 1.2 Horizontal Irradiance Processing (Site Level) **Purpose**: Quality control and component separation of irradiance data **Models**: * Horizontal irradiance components pre-processing (validation, closure, and component selection) * GHI diffuse-direct decomposition (Erbs, Reindl, DIRINT) — standard path from GHI * POAI diffuse-direct decomposition (GTI-DIRINT) — alternative path from measured plane-of-array irradiance * Bird clear sky model (for spectral corrections) **Outputs**: Quality-controlled GHI, DNI, DHI; clear-sky irradiance components ### 1.3 Array Orientation (DC Field Level or below) **Purpose**: Determine module orientation for each DC field at each timestep **Models**: *Fixed-tilt arrays*: * Fixed surface azimuth and tilt angles *Single-axis tracking arrays*: * True tracking (no backtracking) * Shade-avoidance backtracking * Terrain-aware backtracking (TABT, angles defined at tracker level within a DC field) * Irradiance optimization (PlantPredict or Array Technologies API) * User-defined tracking angles (time-series override at DC field level or per-tracker in 3D scenes) * Wind stow **Outputs**: Surface azimuth angle, surface tilt angle, angle of incidence ### 1.4 Transposition to Plane-of-Array (DC Field Level) **Purpose**: Convert horizontal irradiance to tilted plane **Models**: * Hay-Davies transposition model * Perez transposition model (multiple coefficient sets) * 3D transposition (for 3D scenes with TABT or user-defined tracker angles) **Outputs**: Beam POA, sky diffuse POA, ground-reflected diffuse POA ### 1.5 Shading Losses (DC Field Level) **Purpose**: Calculate irradiance reduction from shading **Models** (applied in sequence): 1. Horizon shading (far-field obstructions) 2. Sky diffuse shading (sky-view factor from adjacent rows) 3. Ground-reflected shading (view factor to sunlit/shaded ground with IAM effects) 4. Direct beam shading: * Row-to-row shading on uniform terrain * DC-field-level 3D shading (legacy infinite-shed 3D model) * Site-level 3D scene shading (V12 polygon clipping) 5. Electrical effect of shading (none, linear, fractional, step-fractional) **Outputs**: Shaded beam POA, shaded sky diffuse POA, shaded ground-reflected diffuse POA, electrical shading fraction ### 1.6 POA Irradiance Adjustments (DC Field Level) **Purpose**: Apply optical, soiling, and spectral corrections **Models**: * Soiling (none, monthly override, weather-based) * Incidence angle modifier (ASHRAE, Sandia, physical, custom interpolation) * Spectral shift adjustment (Sandia, First Solar POR/QED, Spectral 2, Spectral 3.0) * Bifacial irradiance (front and rear surface with view factors) **Outputs**: Effective beam POA, effective diffuse POA, effective ground-reflected diffuse POA, rear surface irradiance *** ## Stage 2: Photovoltaic Conversion This stage converts effective irradiance into DC field-level DC electrical power, accounting for DC system losses, thermal effects, and module electrical characteristics. ### 2.1 Cell Temperature (DC Field Level) **Purpose**: Calculate cell temperature from ambient conditions **Models**: * Heat Balance model (extended Faiman) * Sandia model (empirical exponential) * NOCT-SAM model * Measured surface temperature (time-series override) **Outputs**: Cell temperature, module surface temperature ### 2.2 DC System Losses (DC Field Level) **Purpose**: Apply loss coefficients that reduce effective irradiance before power calculation **Models**: *Combined coefficient losses* (applied as multipliers to effective irradiance before single diode model): * Module Mismatch (module-to-module deviation within bin) * Module Quality (average deviation from nameplate) * Light-Induced Degradation (LID) * DC Health (user-defined DC system loss for factors such as soiling non-uniformity or connection degradation) *DC wiring losses* (applied as additional series resistance in single diode model): * DC Wiring Resistance (derived from user-specified percentage loss at STC) **Outputs**: Reduced effective irradiance, equivalent series resistance ### 2.3 DC Performance (DC Field Level) **Purpose**: Calculate electrical power from PV modules using reduced irradiance and increased series resistance **Models**: *Module electrical models*: * 5-parameter single-diode model * 7-parameter single-diode model with additional recombination * 7-parameter single-diode model with additional recombination and non-linear temperature coefficients *Operating conditions adjustments*: * Temperature and irradiance translation of single-diode model parameters (5 or 7) **Outputs**: $V_{mp}$, $I_{mp}$, $P_{mp}$, $V_{oc}$, $I_{sc}$ (per DC field) *** ## Stage 3: DC Aggregation and DC–AC Conversion This stage aggregates DC fields, applies DC-level degradation, and converts DC power to AC power through the inverter. ### 3.1 DC Field Aggregation (Inverter Level) **Purpose**: Aggregate power from multiple DC fields with potentially different I-V characteristics **Models**: * Weighted average voltage calculation * Current recalculation at common voltage * Current summation **Outputs**: Combined DC voltage, combined DC current, total DC power at inverter input ### 3.2 Degradation Losses – DC Applied (Inverter Level) **Purpose**: Apply time-dependent degradation to aggregated DC power before inverter operating region determination **Models** (when Linear DC or Non-Linear DC model selected): * Linear DC Degradation (constant annual rate) * Non-Linear DC Degradation (variable year-by-year rates) * LeTID (Light and Elevated Temperature Induced Degradation) **Outputs**: Degraded DC power (per inverter) ### 3.3 Inverter Temperature Derating (Inverter Level) **Purpose**: Calculate temperature- and elevation-adjusted inverter capacity **Models**: * kVA curve interpolation (elevation- and temperature-dependent) **Outputs**: Derated inverter power limit ### 3.4 Inverter Operating Regions (Inverter Level) **Purpose**: Determine inverter operating point based on DC input conditions **Models**: * Inverter operating region determination (12 regions based on voltage and derated power limits) * Clipping (region 10) or voltage adjustments (regions 5, 7, 9, 11), if needed **Outputs**: Operating region, adjusted DC power ### 3.5 Inverter Efficiency (Inverter Level) **Purpose**: Calculate AC power output from DC input **Models**: * Legacy efficiency model (bilinear interpolation with DC power, V3-10) * Sandia efficiency model (polynomial fitting with AC power, V11+) **Outputs**: AC power, inverter efficiency (per inverter) *** ## Stage 4: AC Collection and Interconnection This stage calculates losses in the AC electrical infrastructure from inverter output to the point of interconnection. ### 4.1 AC Degradation Losses (Array Level) **Purpose**: Apply time-dependent degradation to AC power **Models** (when Linear AC or Stepped AC model selected): * Linear AC Degradation (continuous linear degradation) * Stepped AC Degradation (annual step-wise degradation) * LeTID (when enabled and AC degradation model selected) **Outputs**: Degraded AC power (per array) ### 4.2 Transformer Loss Model (Array and Plant Level) **Purpose**: Calculate power dissipation in step-up transformers **Models**: * Quadratic loss equation from no-load and full-load loss specifications * Shared by MV transformers (array level) and HV transformers (plant level) **Outputs**: Power after transformer losses ### 4.3 Array-Level Aggregation and AC Losses (Array Level) **Purpose**: Calculate losses from inverter output to AC collection point **Models** (applied to each array in sequence): 1. Auxiliary loads (DAS, cooling, tracker motors) 2. MV transformer losses (shared transformer loss model) 3. AC collection resistive losses (V12+: quadratic I²R model; V3–11: flat percentage) **Outputs**: Block-level AC power (aggregated using repeater counts) ### 4.4 Plant-Level Aggregation and AC Losses (Plant Level) **Purpose**: Calculate losses from block-aggregated power to grid **Models** (applied after block aggregation): * HV equipment: transformers (shared transformer loss model) and transmission lines (I²R model), in user-defined ordinal sequence * Availability loss (percentage reduction) * Capacity constraint at point of interconnection (grid limit/LGIA) **Outputs**: Final AC power and energy delivered to grid *** ## Stage 5: Energy Storage This stage models an optional AC-coupled battery energy storage system integrated with PV. The full PV pipeline (Stages 1–4) runs once per timestep and the results are retained. The ESS calculation then uses the retained PV results (PV power at MV and at POI). After the ESS produces a combined PV+ESS output at the MV level, only the plant-level power flow (Stage 4.4: HV equipment, availability, LGIA limit) is re-run with the combined output — Stages 1–4.3 are not re-run. ### 5.1 Charge & Discharge Limits (Plant Level) **Purpose**: Calculate maximum charge/discharge power from system topology **Models**: * Excess charge capacity (LGIA algorithm): PV excess traced back through HV and storage MV transformer to battery DC * Available charge capacity (Energy Available algorithm): total PV MV output through storage MV transformer to battery DC * Custom dispatch power: user-specified inverter capacity fraction * Discharge capacity: lesser of LGIA headroom and storage hardware limit, translated to battery DC **Outputs**: Available charge power, available discharge power (at battery DC terminals) ### 5.2 Dispatch Algorithms (Plant Level) **Purpose**: Set charge/discharge intent flags for each timestep **Models**: * LGIA excess (charge from clipped PV, including during discharge periods) * Energy available (charge when PV is producing and not in discharge period) * Custom dispatch (user-defined time series) * Charge/discharge priority (charge takes priority when both flags are set) **Outputs**: Charge flag ($F_c$), discharge flag ($F_d$) ### 5.3 Battery Model (Plant Level) **Purpose**: Track battery state and derive power flows **Models**: * Cycle degradation (based on cumulative discharge) and calendar degradation (based on age), applied additively * State of charge update with round-trip DC efficiency during charging * DC power derivation from SOC change * AC power from inverter efficiency **Outputs**: State of charge, degraded capacity and RTE, battery DC and AC power, RTE and inverter losses ### 5.4 Power Flow to Grid (Plant Level) **Purpose**: Transform battery AC power into grid-deliverable output **Models**: * Storage MV transformer losses (charge, discharge, and idle no-load loss) * PV output adjustment for charging and LGIA limiting * Combined PV+ESS output at MV level * Plant-level power flow re-run: HV equipment, availability, LGIA limit (re-runs Stage 4.4 only; Stages 1–4.3 are not re-run) **Outputs**: Combined PV+Storage power at POI *** ## Aggregation Flow Results aggregate hierarchically: 1. **DC Field → Inverter**: Sum DC power from all DC fields connected to each inverter 2. **Inverter → Array**: Sum AC power from all inverters in array, apply AC degradation, auxiliary loads, MV transformer, and AC collection losses 3. **Array → Block**: Sum array outputs using repeater counts 4. **Block → Plant**: Sum block outputs, apply HV equipment losses (transformers and transmission lines) 5. **Plant → Site**: Apply availability loss and grid limit ## Parallel Execution The prediction engine uses parallel processing at multiple levels: * Parallel across blocks * Parallel across arrays within blocks * Parallel across inverters within arrays * Parallel across DC fields within inverters This enables efficient calculation for large systems with hundreds of thousands of modules. ## Conditional Logic Several models are conditionally applied: * **POAI Decomposition**: When Frontside POAI is enabled, standard GHI decomposition is skipped and GTI-DIRINT reverse-decomposes measured POAI into horizontal components * **3D Transposition**: Only when 3D scene is enabled * **Bifacial Calculations**: Only for bifacial modules * **Electrical Shading**: Only when Fractional or Step-Fractional shading models are selected * **DC Degradation**: Applied at inverter level after DC field aggregation, before inverter operating region determination (Linear DC, Non-Linear DC) * **AC Degradation**: Applied at array level after inverter output (Linear AC, Stepped AC) * **LeTID**: Applied at DC level when DC degradation model selected, or at AC level when AC degradation model selected * **DC Field Aggregation**: Applied when multiple DC fields with different I-V characteristics are connected to the same inverter * **Nighttime Disconnect**: Disconnects transformers and zeroes auxiliary loads when inverters enter shutdown or low-power regions (see [Inverter Operating Regions](/models/inverter-models/inverter_operating_regions)) * **Energy Storage**: Stage 5 only runs when an ESS is configured; triggers a re-run of the plant-level power flow (Stage 4.4 only) with the combined PV+ESS output ## Version-Specific Behavior Many models include version-specific logic (V3 through V12), with differences explicitly documented in the individual model pages. Version 12 introduced: * Site-level 3D scene shading (polygon clipping algorithm) * Quadratic AC collection losses * Enhanced bifacial mismatch handling * Improved DC field aggregation and clipping behavior * Updated spectral and IAM models # Variable Input-Output Table Source: https://docs.plantpredict.com/models/general/variable_input_output_table This table provides a comprehensive mapping of variables and parameters in the PlantPredict engine: external inputs, model parameters, key interface variables between models, and final outputs.
## External Inputs ### **Weather Data** | Variable | Symbol | Units | Destination(s) | | ----------------------------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | UTC Date-Time | — | datetime | • Solar Position
• Extraterrestrial Irradiance
• Sunrise/Sunset Model | | Global Horizontal Irradiance | $GHI$ | W/m² | • Irradiance Quality Check
• Decomposition
• Transposition
• Ground-Reflected Shading | | Direct Normal Irradiance | $DNI$ | W/m² | • Irradiance Quality Check
• Transposition
• Ground-Reflected Shading | | Diffuse Horizontal Irradiance | $DHI$ | W/m² | • Irradiance Quality Check
• Transposition
• Ground-Reflected Shading | | Ambient Air Temperature | $T_a$ | °C | • Solar Position (refraction)
• Module Temperature
• Inverter Derating
• Decomposition (Reindl)
• Spectral Models | | Wind Speed | $v_w$ | m/s | Module Temperature | | Atmospheric Pressure | $P$ | hPa | • Solar Position (refraction)
• Air Mass
• Decomposition (DIRINT)
• Bird Clear Sky | | Relative Humidity | $RH$ | % | • Decomposition (Reindl)
• Spectral Models | | Wind Gust Speed | $v_{gust}$ | m/s | Wind Stow | | Dewpoint Temperature | $T_d$ | °C | Spectral Models | | Plane-of-Array Irradiance | $G_{POA}$ | W/m² | POAI Decomposition (when Frontside POAI enabled) | ### **Site Configuration** | Variable | Symbol | Units | Destination(s) | | ------------------- | ------------------------- | ------- | ------------------------------------------------------------------------------------ | | Latitude | $\varphi$ | degrees | Solar Position | | Longitude | $\lambda$ | degrees | Solar Position | | Altitude | $h$ | m | • Solar Position ()
• Pressure calculation
• Inverter Derating | | Albedo | $\rho$ | — | • Transposition
• Bifacial Model
• Bird Clear Sky | | Standard UTC Offset | $\text{UTC}_{\text{off}}$ | hours | Sunrise/Sunset Model | | Horizon Profile | $(\gamma_i, e_i)$ | degrees | Horizon Shading | ### **Other Time Series Inputs (Optional)** | Input | Units | Used In | | | ------------------------------ | ---------------- | ----------------------- | ------------------------------- | | Monthly Albedo Factors | — | Transposition | | | Monthly Soiling Factors | % | Soiling Model | | | Module Temperature Time Series | $T_{m,measured}$ | °C | Override calculated temperature | | Tracking Angle Time Series | degrees | User-defined tracking | | | Vmpp Time-Series Adjustment | $\Delta V_{MPP}$ | % | Operating Region (V7+) | | Impp Time-Series Adjustment | $\Delta I_{MPP}$ | % | Operating Region (V7+) | | Inverter Derate Time Series | — | Power derating schedule | | | Inverter Set Point Time Series | W | Power limiting schedule | | | LGIA Limit Time Series | MW | POI power clipping | | *** ## Model Parameters ### **Module Parameters (Single Diode Model)** | Parameter | Symbol | Units | Used In | | --------------------------------------- | ---------------------------------------- | ------- | ----------------------------------------------------------------------------- | | Reference Short-Circuit Current | $I_{sc,ref}$ | A | Parameter Translation
→ Single Diode Model | | Reference Power | $P_{mp,ref}$ | W | Parameter Translation / DC Wiring Resistance | | Number of Cells in Series | $N_c$ | — | • Parameter Translation
• Single Diode Model | | Temperature Coefficient of Isc | $\alpha_{I_{sc}}$ | %/°C | Parameter Translation
→ Single Diode Model | | Diode Ideality Factor | $\gamma_{ref}$ | — | Parameter Translation | | Temp. Coeff. of Ideality Factor | $\alpha_{\gamma}$ | 1/°C | Parameter Translation | | Ideality Factor Polynomial Coefficients | $a_\gamma, b_\gamma, c_\gamma, d_\gamma$ | various | Parameter Translation | | Reference Series Resistance | $R_{s,ref}$ | Ω | Parameter Translation
→ Single Diode Model | | Reference Shunt Resistance | $R_{sh,ref}$ | Ω | Parameter Translation
→ Single Diode Model | | Reference Saturation Current | $I_{0,ref}$ | A | Parameter Translation
→ Single Diode Model | | Dark Shunt Resistance | $R_{sh,0}$ | Ω | Parameter Translation (irradiance)
→ Single Diode Model | | Shunt Resistance Exponent | $R_{sh,exp}$ | — | Parameter Translation (irradiance)
→ Single Diode Model | | Bandgap Energy | $E_g$ | eV | Parameter Translation (temperature)
→ Single Diode Model | | Recombination Parameter | $d_i^2/\mu\tau$ | V | Single Diode Model (7-parameter) | | Built-in Voltage | $V_{bi}$ | V | Single Diode Model (7-parameter) | | Reference Irradiance | $G_{ref}$ | W/m² | • Parameter Translation
• Temperature Models
• DC Wiring Resistance | | Reference Temperature | $T_{ref}$ | °C | • Parameter Translation
• DC Wiring Resistance | ### **Module Temperature Parameters** | Parameter | Symbol | Units | Model | | ------------------------------------- | ---------------- | -------------- | ----------------------- | | Conductive Heat Transfer Coefficient | $u_c$ | W/m²·K | Heat Balance | | Convective Heat Transfer Coefficient | $u_v$ | W/m²·K per m/s | Heat Balance | | Cell-to-Module Temperature Difference | $\Delta T_{c-m}$ | °C | All temperature models | | Absorption Coefficient | $\alpha_T$ | — | Heat Balance | | Module STC Efficiency | $\eta_{STC}$ | — | Heat Balance / NOCT-SAM | | Conductive Coefficient | $a$ | — | Sandia | | Convective Coefficient | $b$ | s/m | Sandia | | Transmittance-Absorptance | $\tau\alpha$ | — | NOCT-SAM | | NOCT | $NOCT$ | °C | NOCT-SAM | ### **Inverter Parameters** | Parameter | Symbol | Units | Used In | | ------------------------ | ------------------------ | ------- | ------------------------------------- | | Minimum MPP Voltage | $V_{MPP,min}$ | V | Operating Region | | Maximum MPP Voltage | $V_{MPP,max}$ | V | Operating Region | | Maximum Absolute Voltage | $V_{max}$ | V | Operating Region | | Minimum DC Power | $P_{min}$ | W | Operating Region | | AC Rated Power | $P_{AC,rated}$ | kVA | Power Limiting | | Efficiency Curves | $\eta_{V_j}(P_{AC,i})$ | kW, % | Efficiency Model | | Temperature-kVA Curves | $P_{AC,derate,h_k}(T_j)$ | °C, kVA | Temperature Derating | | AC Power Setpoint | $P_{AC,set}$ | kVA | Temperature Derating / Power Limiting | ### **DC Field & Loss Parameters** | Parameter | Symbol | Units | Used In | | ----------------------------- | ----------------- | -------- | ---------------------------------------------------- | | Module Mismatch Coefficient | $f_{MM}$ | % | DC Power Reduction | | Light-Induced Degradation | $f_{LID}$ | % | DC Power Reduction | | Module Quality Factor | $f_{MQ}$ | % | DC Power Reduction | | DC Health Factor | $f_{DCH}$ | % | DC Power Reduction | | DC Wiring Loss Percentage | $L_{wire}$ | % | DC Wiring Resistance | | DC Wiring Resistance | $R_{DC,module}$ | Ω | Added to Series Resistance | | Degradation Rate (Linear) | $r_{deg}$ | %/year | Annual Degradation | | Nonlinear Degradation Rates | $[r_0, r_1, ...]$ | %/year | Nonlinear Degradation | | LeTID Annual Rates | $[l_0, l_1, ...]$ | %/year | LeTID Degradation | | Bifaciality Factor | $\phi$ | — | Rear-Side Weighting | | Structure Shading Factor | $f_{str}$ | % | Rear-Side Losses | | Backside Mismatch Factor | $f_{MM,rear}$ | % | Rear-Side Losses | | Module Transmission Factor | $\tau$ | — | Rear Irradiance (bifacial) | | SunSolve Transmission Gain | $f_T$ | — | Rear Irradiance (bifacial, SunSolve-calibrated mode) | | Field-Level Wiring Resistance | $R_{DC,field}$ | Ω | Loss Reporting | | Energization Date | $t_0$ | datetime | DC Degradation Model | ### **Transformer Parameters** | Parameter | Symbol | Units | Used In | | ----------------------------- | -------------- | ----- | -------------------------------- | | MV Transformer No-Load Loss | $L_{NL,MV}$ | % | MV Transformer Model (quadratic) | | MV Transformer Full-Load Loss | $L_{FL,MV}$ | % | MV Transformer Model (quadratic) | | MV Transformer Rated Power | $P_{MV,rated}$ | kVA | Transformer Model (quadratic) | | HV Transformer No-Load Loss | $L_{NL,HV}$ | % | HV Transformer Model (quadratic) | | HV Transformer Full-Load Loss | $L_{FL,HV}$ | % | HV Transformer Model (quadratic) | | HV Transformer Rated Power | $P_{HV,rated}$ | MVA | HV Transformer Model (quadratic) | ### **AC System Parameters** | Parameter | Symbol | Units | Used In | | ----------------------------- | ----------- | --------- | -------------------------------------------------- | | AC Collection Loss | $f_{coll}$ | % | Array-Level Losses | | Transmission Line Resistance | $R_{line}$ | Ω/1000 ft | Transmission Loss | | Transmission Line Length | $\ell_t$ | km | Transmission Loss | | Transformer High-Side Voltage | $V_{HS}$ | kV | Transmission Loss | | Conductors per Phase | $N_{cond}$ | — | Transmission Loss | | Inverter Design Derate | $d$ | — | Power Factor / Transmission Loss | | Cooling Load | $L_{cool}$ | W | Auxiliary Load | | Tracker Motor Load | $L_{track}$ | W | Auxiliary Load | | DAS Load | $L_{DAS}$ | W | Auxiliary Load | | Availability Loss Factor | $f_{avail}$ | % | • Availability Loss
• Power Flow (ESS re-run) | | Grid Limit (LGIA) | $P_{POI}$ | MW | POI Power Clipping | ### **DC Field Geometry** | Parameter | Symbol | Units | Used In | | -------------------------- | -------------------------- | ------- | --------------------------------------------------------------------------------- | | Fixed Tilt Angle | $\beta_{fixed}$ | degrees | Surface Orientation | | Fixed Azimuth Angle | $\gamma_{fixed}$ | degrees | Surface Orientation | | Tracker Axis Azimuth | $\gamma_{axis}$ | degrees | Tracking Algorithm | | Tracker Axis Tilt | $\beta_{axis}$ | degrees | Tracking Algorithm | | Minimum Rotation Limit | $\alpha_{min}$ | degrees | Tracking Algorithm | | Maximum Rotation Limit | $\alpha_{max}$ | degrees | Tracking Algorithm | | Nighttime Stow Angle | $\alpha_{stow,night}$ | degrees | Tracking Algorithm | | Wind Stow Angle | $\alpha_{stow,wind}$ | degrees | Wind Stow | | Ground Slope | $\beta_g$ | degrees | • Backtracking
• Shading Models | | Ground Slope Azimuth | $\gamma_g$ | degrees | • Backtracking
• Shading Models | | Ground Coverage Ratio | $GCR$ | — | • Backtracking
• Shading Models
• Bifacial Model | | Post Height | $h_{post}$ | m | Bifacial Model | | Row-to-Row Pitch | $p$ | m | • Shading Models
• Backtracking
• Bifacial Model
• GCR calculation | | Collector Width | $\ell_m$ | m | • Shading Models
• Backtracking
• Bifacial Model
• GCR calculation | | Row Length | $L$ | m | Row-to-Row Beam Shading | | Bay Pile Heights | $(h_{S,i}, h_{N,i})$ | m | Terrain-Aware Backtracking | | East Neighbor Pile Heights | $(h'_{E,S,i}, h'_{E,N,i})$ | m | Terrain-Aware Backtracking | | West Neighbor Pile Heights | $(h'_{W,S,i}, h'_{W,N,i})$ | m | Terrain-Aware Backtracking | | Bay Length | $L_b$ | m | Row-to-Row Beam Shading | | Bay Spacing | $s_b$ | m | Row-to-Row Beam Shading | | Bays Per Row | $N_b$ | — | Row-to-Row Beam Shading | | Number of Rows | $N_{rows}$ | — | Row-to-Row Beam Shading | | Cross-Axis Slope | $\beta_c$ | degrees | Sky Diffuse Shading | | DC Field Repeater Count | $n_{rep,i}$ | — | DC Field Aggregation | | Inverter Repeater Count | $n_{rep,inv}$ | — | Array-Level Losses | | Array Repeater Count | $n_{rep,array}$ | — | • Array-Level Losses
• Plant-Level Losses | | Block Repeater Count | $n_{rep,block}$ | — | Plant-Level Losses | | Strings per Inverter | $N_{p,i}$ | — | • Current scaling (parallel)
• DC wiring resistance | | Modules per String | $N_{s,i}$ | — | • String voltage (Vmp, Voc)
• DC wiring resistance | ### **Tracking Control Parameters** | Parameter | Symbol | Units | Used In | | ------------------- | --------------- | --------- | ----------------------- | | Hesitation Factor | $f_h$ | — | Irradiance Optimization | | Rotation Speed | $\omega$ | degrees/s | Irradiance Optimization | | Wind Stow Threshold | $v_{threshold}$ | m/s | Wind Stow | | Time Interval | $\Delta t$ | seconds | Irradiance Optimization | | Time Interval | $\delta t$ | minutes | Battery Model | ### **Spectral Correction Parameters** | Parameter | Symbol | Units | Used In | | ------------------------- | ------------------ | ----- | -------------------------------------- | | Sandia Polynomial Factors | $[a_0, ..., a_4]$ | — | Spectral Correction (Sandia) | | Two-Variable Coefficients | $[b_0, ..., b_5]$ | — | Spectral Correction (Two-Variable) | | Monthly Spectral Loss | $L_{spectr,month}$ | % | Spectral Correction (Monthly Override) | ### **Electrical Shading Parameters** | Parameter | Symbol | Units | Used In | | -------------------------- | ------ | ----- | ------------------------------------------ | | Fractional Shading Percent | $f$ | % | Electrical Shading (Fractional) | | Number of Module Rows | $M$ | — | Electrical Shading (Fractional, pre-V12) | | Number of Bay Fractions | $N$ | — | Electrical Shading (Step-Fractional, V12+) | ### **IAM Parameters** | Parameter | Symbol | Units | Used In | | ------------------------------ | --------------------- | ---------- | --------------------------------------- | | ASHRAE IAM Parameter | $b_0$ | — | IAM (ASHRAE) / Ground-Reflected Shading | | Sandia IAM Polynomial Factors | $[b_0, ..., b_5]$ | degree⁻ⁱ | IAM (Sandia) | | Refractive Index | $n$ | — | IAM (Physical) | | ARC Refractive Index | $n_{ARC}$ | — | IAM (Physical) | | Absorption Coefficient (glass) | $\alpha_{abs}$ | m⁻¹ | IAM (Physical) | | Glass Thickness | $L_{glass}$ | m | IAM (Physical) | | IAM Factor Pairs | $\{(\theta_i, f_i)\}$ | degrees, — | IAM (Tabular) | ### **ESS Parameters (Optional)** | Parameter | Symbol | Units | Used In | | ---------------------------------- | ------------------ | ------- | ---------------------------------------------- | | Nameplate Energy Capacity | $E_{nom}$ | MWh | State-of-Charge Calculation | | Usable Capacity Factor | $f_{usable}$ | — | State-of-Charge Calculation | | Initial Round-Trip DC Efficiency | $\eta_{RT,init}$ | % | Round-Trip Efficiency | | Capacity Cycle Degradation Rate | $d_{E,cycle}$ | %/cycle | Battery Degradation | | Capacity Calendar Degradation Rate | $d_{E,year}$ | %/year | Battery Degradation | | RTE Cycle Degradation Rate | $d_{\eta,cycle}$ | %/cycle | Battery Degradation | | RTE Calendar Degradation Rate | $d_{\eta,year}$ | %/year | Battery Degradation | | ESS Inverter Efficiency | $\eta_{inv}$ | % | DC/AC Conversion Efficiency (Charge/Discharge) | | ESS Inverter Rated AC Power | $P_{AC,rated,ESS}$ | MW | Charge & Discharge Limits | | ESS MV Transformer No-Load Loss | $L_{NL,ESS}$ | % | ESS Transformer Model (quadratic) | | ESS MV Transformer Full-Load Loss | $L_{FL,ESS}$ | % | ESS Transformer Model (quadratic) | | ESS MV Transformer Rating | $P_{MV,rated,ESS}$ | MVA | ESS Transformer Model (quadratic) | | Custom Inverter Capacity Fraction | $f_{cap}$ | — | Charge & Discharge Limits (Custom Dispatch) | | Dispatch Table | $D_{m,h}$ | boolean | Dispatch Algorithms | | Custom Dispatch Time Series | $C_t$ | — | Dispatch Algorithms | *** ## Stage 1: Irradiance Variables ### **Solar Position, Extraterrestrial, and Clear-Sky Irradiance** | Variable | Symbol | Units | Origin | Destination(s) | | ----------------------------------------- | ------------- | -------- | --------------------------- | ----------------------------------------------------------------------------------------- | | Solar | $\theta_z$ | degrees | Solar Position Algorithm | • Air Mass
• Decomposition
• Transposition
• Shading
• Bird Clear Sky | | Solar Angle | $\gamma_s$ | degrees | Solar Position Algorithm | • Tracking
• Shading | | Sunrise Time | $t_{rise}$ | datetime | Sunrise/Sunset Model | • Operational hours
• Horizon Shading | | Sunset Time | $t_{set}$ | datetime | Sunrise/Sunset Model | • Operational hours
• Horizon Shading | | Extraterrestrial Direct Normal Irradiance | $DNI_{extra}$ | W/m² | Extraterrestrial Irradiance | • Transposition
• Decomposition
• Bird Clear Sky | | Clear-Sky Global Horizontal Irradiance | $GHI_{clear}$ | W/m² | Bird Clear Sky Model | Decomposition (DIRINT) | | Clear-Sky Direct Normal Irradiance | $DNI_{clear}$ | W/m² | Bird Clear Sky Model | Decomposition (DIRINT) | | Clear-Sky Diffuse Horizontal Irradiance | $DHI_{clear}$ | W/m² | Bird Clear Sky Model | Decomposition (DIRINT) | ### **Derived Irradiance Parameters** | Variable | Symbol | Units | Origin | Destination(s) | | --------------------------------- | ------------ | ----- | ------------------------------------ | ----------------------------------------------- | | Relative | $AM$ | — | Air Mass Model | Transposition (Perez) | | Pressure-Corrected | $AM'$ | — | Air Mass Model | • Decomposition (DIRINT)
• Spectral Models | | Precipitable Water | $W$ | cm | Weather file or calculated from RH/T | Spectral Models | | Spectral Correction Factor | $U_{spectr}$ | — | Spectral Model | POA Irradiance adjustment | ### **Tracker & Surface Orientation** | Variable | Symbol | Units | Origin | Destination(s) | | ----------------------- | ----------------- | ------- | ------------------------------- | ----------------------------------------------------------- | | Tracker Rotation Angle | $\alpha$ | degrees | True Tracking | • Backtracking
• Irradiance Optimization | | Backtracking Angle | $\alpha_B$ | degrees | Standard Backtracking | Terrain-Aware Backtracking | | Terrain-Corrected Angle | $\alpha_{TABT,i}$ | degrees | Terrain-Aware Backtracking | Surface Orientation | | Optimized Tracker Angle | $\alpha_{opt}$ | degrees | Irradiance Optimization | Wind Stow / Surface Orientation | | Commanded Tracker Angle | $\alpha_{final}$ | degrees | Wind Stow | Surface Orientation | | Module Tilt Angle | $\beta_m$ | degrees | • Configuration
• Tracking | • Transposition (view factors)
• AOI Calculation | | Module Azimuth Angle | $\gamma_m$ | degrees | • Configuration
• Tracking | AOI Calculation | | Angle of Incidence | $\theta_{AOI}$ | degrees | Geometry Calculation | • Transposition (beam)
• IAM
• Row-to-row shading | ### **Plane-of-Array Irradiance Components** | Variable | Symbol | Units | Origin | Destination(s) | | -------------------------------------- | ------------------- | ----- | ---------------------------- | ----------------------------------------------------------- | | Transposition Factor (Global) | $TF_{POA}$ | — | 3D Transposition | POA Irradiance adjustment | | Transposition Factor (Beam) | $TF_{beam}$ | — | 3D Transposition | POA Irradiance adjustment | | Transposition Factor (Sky Diffuse) | $TF_{sky}$ | — | 3D Transposition | POA Irradiance adjustment | | Transposition Factor (Ground) | $TF_{ground}$ | — | 3D Transposition | POA Irradiance adjustment | | Pre-Shading POA Irradiance (B/D/G) | — | W/m² | Transposition | Shading Models | | Shaded POA Irradiance (B/D/G) | — | W/m² | Shading Models | Soiling | | POA Irradiance After Soiling (B/D/G) | — | W/m² | Soiling Model | IAM | | POA Irradiance After IAM (B/D/G) | — | W/m² | IAM Model | Effective POA | | Front POA Irradiance | $G_{POA,front}$ | W/m² | Transposition (sum of B/D/G) | • NOCT-SAM Temperature Model
• Irradiance Optimization | | Effective Front POA Irradiance (B/D/G) | $G_{POA,front,eff}$ | W/m² | After All Adjustments | Effective POA Irradiance | | Back POA Irradiance (B/D/G) | — | W/m² | Bifacial Model | Effective POA Irradiance | | Effective POA Irradiance | $G_{POA,tot,eff}$ | W/m² | Front + Back × Bifaciality | Single Diode Model | ### **Loss/Adjustment Factors** | Variable | Symbol | Units | Origin | Applied To | | -------------------------- | ---------------- | ----- | ------------------------------ | ----------------------------- | | Horizon Shading Factor | $U_{horizon}$ | — | Horizon Shading | Beam POA Irradiance | | Beam Shading Factor | $U_{shd,B}$ | — | Near Shading Models | Beam POA Irradiance | | Sky Diffuse Shading Factor | $U_{shd,D}$ | — | Diffuse Shading (view factors) | Sky Diffuse POA Irradiance | | Ground Shading Factor | $U_{shd,G}$ | — | Ground-Reflected Shading | Ground POA Irradiance | | Electrical Shading Factor | $U_{shd,B,elec}$ | — | Electrical Shading | Beam POA Irradiance | | Soiling Factor | $U_{soil}$ | — | Soiling Model | All POA Irradiance Components | | Beam IAM Factor | $U_{IAM,B}$ | — | IAM Model | Beam POA Irradiance | | Sky Diffuse IAM Factor | $U_{IAM,D}$ | — | IAM Model | Sky Diffuse POA Irradiance | | Ground Diffuse IAM Factor | $U_{IAM,G}$ | — | IAM Model | Ground POA Irradiance | *** ## Stage 2: DC Performance Variables ### **Module Temperature** | Variable | Symbol | Units | Origin | Destination(s) | | -------------------------- | ------ | ----- | ----------------- | ------------------ | | Cell Temperature | $T_c$ | °C | Temperature Model | Single Diode Model | | Module Surface Temperature | $T_m$ | °C | Temperature Model | Output | ### **DC System Losses & Parameter Translation** | Variable | Symbol | Units | Origin | Destination(s) | | --------------------------- | ------------------ | ----- | --------------------- | --------------------- | | Scaled Effective Irradiance | $G'_{POA,tot,eff}$ | W/m² | DC System Losses | Parameter Translation | | Series Resistance | $R_s$ | Ω | Parameter Translation | Single Diode Model | | Shunt Resistance | $R_{sh}$ | Ω | Parameter Translation | Single Diode Model | | Diode Ideality Factor | $\gamma$ | — | Parameter Translation | Single Diode Model | | Saturation Current | $I_0$ | A | Parameter Translation | Single Diode Model | | Photocurrent | $I_{ph}$ | A | Parameter Translation | Single Diode Model | ### **DC Power Outputs** | Variable | Symbol | Units | Origin | Destination(s) | | --------------------- | -------- | ----- | ---------------------- | ------------------------------------- | | Open-Circuit Voltage | $V_{oc}$ | V | Single Diode Model | • Inverter Region Model
• Output | | Short-Circuit Current | $I_{sc}$ | A | Parameter Translation | Output | | MPP Voltage | $V_{mp}$ | V | Single Diode Model | Inverter Region Model | | MPP Current | $I_{mp}$ | A | Single Diode Model | Inverter Region Model | | MPP Power | $P_{mp}$ | W | $V_{mp} \times I_{mp}$ | Inverter Region Model | *** ## Stage 3: Inverter Variables | Variable | Symbol | Units | Origin | Destination(s) | | ------------------------------- | ---------------- | ----- | ------------------------- | ------------------------- | | DC Open-Circuit Voltage | $V_{DC,oc}$ | V | DC Field Aggregation | Inverter Region Model | | DC Voltage (after clipping) | $V_{DC}$ | V | Inverter Region Model | Inverter Efficiency Model | | DC Operating Power | $P_{DC}$ | W | Inverter Region Model | Inverter Efficiency Model | | Degraded DC Power | $P_{DC,deg}$ | W | DC Degradation Model | Inverter Region Model | | DC Degradation Loss | $L_{deg}$ | W | DC Degradation Model | Output | | DC LeTID Loss | $L_{LeTID}$ | W | DC Degradation Model | Output | | Temperature-Corrected Max Power | $P_{AC,derated}$ | W | Temperature Derating | Inverter Region Model | | Inverter Efficiency | $\eta$ | — | Inverter Efficiency Model | AC Power | | Inverter AC Power | $P_{AC,inv}$ | W | Inverter Efficiency Model | Inverter Aggregation | *** ## Stage 4: AC & Plant-Level Variables ### **Array Level** | Variable | Symbol | Units | Origin | Destination | | ------------------- | -------------- | ----- | ----------------------- | -------------------- | | Array AC Power | $P_{AC,array}$ | W | Inverter Aggregation | AC Degradation Model | | Degraded AC Power | $P_{AC,deg}$ | W | AC Degradation Model | Auxiliary Loads | | AC Degradation Loss | $L_{deg}$ | W | AC Degradation Model | Output | | LeTID Loss | $L_{LeTID}$ | W | LeTID Model | Output | | Auxiliary Loads | $P_{aux}$ | W | Cooling + Tracker + DAS | MV Transformer Model | | MV Transformer Loss | $L_{MV,trans}$ | W | MV Transformer Model | Output | | Block Power | $P_{block}$ | W | Array-Level Losses | Plant-Level Losses | ### **Energy Storage (Optional)** | Variable | Symbol | Units | Origin | Destination | | --------------------------- | --------------- | ------- | ---------------------------- | ------------------------------------------------------ | | PV MV Transformer Output | $P_{MV}$ | W | Array-Level Losses | • Charge & Discharge Limits
• Power Flow | | PV Power After Availability | $P_{avail}$ | W | Plant-Level Losses (PV-only) | • Charge & Discharge Limits
• Dispatch Algorithms | | HV Equipment Losses | $L_{HV}$ | W | Plant-Level Losses (PV-only) | Charge & Discharge Limits | | Charge Flag | $F_c$ | boolean | Dispatch Algorithms | Battery Model | | Discharge Flag | $F_d$ | boolean | Dispatch Algorithms | Battery Model | | Available Charge Power | $P_{charge}$ | W | Charge & Discharge Limits | Battery Model | | Available Discharge Power | $P_{discharge}$ | W | Charge & Discharge Limits | Battery Model | | State of Charge | $SOC$ | Wh | Battery Model | Battery Model (feedback) / Output | | Battery DC Power | $P_{DC,batt}$ | W | Battery Model | Power Flow | | DC RTE Loss | $L_{\eta}$ | W | Battery Model | Output | | Combined PV+ESS Power | $P_{combined}$ | W | Power Flow | HV Transformer Model (re-run) | ### **Plant Level** | Variable | Symbol | Units | Origin | Destination | | ------------------------ | ------------ | ----- | ------------------------------------- | ------------------ | | Plant Power | $P_{plant}$ | W | Block Aggregation (or $P_{combined}$) | HV Equipment | | HV Transformer Loss | $L_{HV}$ | W | HV Transformer Model | Transmission Model | | Transmission Line Loss | $L_{line}$ | W | Transmission Model | Availability | | Power After HV Equipment | $P_{HV,out}$ | W | HV Equipment Chain | Availability | | Power After Availability | $P_{avail}$ | W | Availability Model | LGIA Clipping | | Grid Limit Clipping | $L_{LGIA}$ | W | LGIA Clipping | Output | | Grid Power | $P_{grid}$ | W | LGIA Clipping | Output |
*** **Notes:** 1. **B/D/G**: Beam, Diffuse, and Ground components are tracked and exported separately. 2. **V12+**: Some variables (e.g., Bay Fractions for electrical shading) are only available in Version 12 and later. 3. **Aggregation**: Power variables aggregate hierarchically: DC Field → Inverter → Array → Block → Plant. 4. **Timestep Loop**: All time-series variables are calculated for each timestep, then aggregated to hourly/daily/monthly/annual summaries. # Bird Clear Sky Model Source: https://docs.plantpredict.com/models/horizontal-irradiance/bird_clear_sky_model ## Summary The Bird Clear Sky Model computes theoretical clear-sky irradiance components (, , ) using empirical functions for atmospheric constituents. Developed by Bird and Hulstrom (1981), PlantPredict uses this model primarily for spectral correction calculations, where the clear sky index (ratio of measured GHI to clear-sky GHI) is an input to the spectral shift model. Clear-sky irradiance values are also included in prediction outputs for reference. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | ------------- | ------- | ------------------------------------------------------------ | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Solar irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between zenith and sun position | | **Ground Albedo** | $\rho_g$ | — | Surface reflectance for sky-ground coupling (0–1) | | **Atmospheric Pressure** | $P$ | hPa | Local atmospheric pressure (for pressure-corrected air mass) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------------------- | ------------- | ----- | ------------------------------------------------------------------------------ | | **Clear-Sky Global Horizontal Irradiance** | $GHI_{clear}$ | W/m² | Clear-sky total irradiance on horizontal surface including sky-ground coupling | | **Clear-Sky Diffuse Horizontal Irradiance** | $DHI_{clear}$ | W/m² | Clear-sky diffuse irradiance from sky dome | | **Clear-Sky Direct Normal Irradiance** | $DNI_{clear}$ | W/m² | Clear-sky beam irradiance perpendicular to sun | *** ## Detailed Description The Bird model calculates how extraterrestrial irradiance ($DNI_{extra}$) is affected by two processes as it passes through the atmosphere under clear-sky conditions: * **Absorption**: Solar energy is absorbed by atmospheric gases (ozone, water vapor, mixed gases) and aerosols, converting radiation to heat—this energy is lost * **Scattering**: Solar radiation is redirected by air molecules () and aerosols, removing it from the direct beam—this energy becomes diffuse irradiance The model calculates a factor ($T$, ranging from 0 to 1) for each atmospheric constituent. Clear-sky DNI is the product of extraterrestrial irradiance and all transmittances. Clear-sky DHI is calculated from the scattered radiation. For aerosols, the model separates absorption ($T_{AA}$) from scattering ($T_{AS}$) because only scattered light contributes to DHI. ### Atmospheric Constituents The following table summarizes the atmospheric constituents considered and whether they contribute to absorption, scattering, or both: | Constituent | Symbol | Effect | | ----------------------- | ------------------------- | ------------------------- | | Air molecules | $T_R$ | Rayleigh Scattering | | Ozone | $T_{O_3}$ | Absorption | | Mixed gases (CO₂, etc.) | $T_g$ | Absorption | | Water vapor | $T_W$ | Absorption | | Aerosols | $T_A$, $T_{AA}$, $T_{AS}$ | Absorption and Scattering | ### Transmittance Equations The following transmittance equations are empirical fits from Bird & Hulstrom (1981). Most equations depend on , which represents the normalized path length through the atmosphere. The model calculates both relative air mass ($AM$) and pressure-corrected air mass ($AM'$) internally using the Bird-Hulstrom formula (see [Air Mass](../solar-geometry/air_mass) for details). **Air Molecules (Rayleigh Scattering):** Air molecules scatter solar radiation, removing radiation from the direct beam and contributing to diffuse irradiance. The transmittance depends on the pressure-corrected air mass: $$ T_R = \exp\left(-0.0903 \cdot AM'^{0.84} \cdot (1 + AM' - AM'^{1.01})\right) $$ The scattered fraction $(1 - T_R)$ contributes to DHI. **Ozone:** Ozone in the stratosphere absorbs UV radiation and some visible light. The transmittance depends on the ozone $x_O = U_O \times AM$, the product of and air mass. PlantPredict uses a fixed ozone column depth $U_O = 0.3$ cm: $$ T_{O_3} = 1 - 0.1611 \cdot x_O \cdot (1 + 139.48 \cdot x_O)^{-0.3035} - \frac{0.002715 \cdot x_O}{1 + 0.044 \cdot x_O + 0.0003 \cdot x_O^2} $$ **Mixed Gases:** Uniformly mixed gases (primarily CO₂ and O₂) contribute minor absorption across the solar spectrum. The transmittance depends on pressure-corrected air mass: $$ T_g = \exp(-0.0127 \cdot AM'^{0.26}) $$ **Water Vapor:** Water vapor absorbs strongly in the near-infrared. The transmittance depends on the water vapor $x_W = u_W \times AM$, the product of (water vapor column depth) and air mass. PlantPredict uses a fixed precipitable water $u_W = 1.5$ cm: $$ T_W = 1 - \frac{2.4959 \cdot x_W}{(1 + 79.034 \cdot x_W)^{0.6828} + 6.385 \cdot x_W} $$ **Aerosols:** Aerosols (dust, haze, pollution) both absorb and scatter solar radiation. The transmittance depends on broadband $\tau_A$, calculated from spectral values $t_{A}$ at 380 nm and 500 nm: $$ \tau_A = 0.2758 \cdot t_{A,380} + 0.35 \cdot t_{A,500} $$ PlantPredict uses fixed values $t_{A,380} = 0.1$ and $t_{A,500} = 0.15$, representing typical rural conditions. For DNI, both absorption and scattering remove radiation from the direct beam: $$ T_A = \exp\left(-\tau_A^{0.873} \cdot (1 + \tau_A - \tau_A^{0.7088}) \cdot AM^{0.9108}\right) $$ For DHI calculations, absorption and scattering must be separated because scattered light contributes to diffuse irradiance while absorbed light is lost. The aerosol absorption transmittance ($T_{AA}$) and aerosol scattering transmittance ($T_{AS}$) are: $$ T_{AA} = 1 - K_1 \cdot (1 - AM + AM^{1.06}) \cdot (1 - T_A) $$ $$ T_{AS} = \frac{T_A}{T_{AA}} $$ where $K_1 = 0.1$ is the aerosol absorptance fraction (10% of attenuated light is absorbed, 90% is scattered). ### Direct Normal Irradiance Clear-sky DNI is the product of extraterrestrial irradiance and all transmittances: $$ DNI_{clear} = DNI_{extra} \times 0.9662 \times T_R \times T_{O_3} \times T_g \times T_W \times T_A $$ The factor 0.9662 is an empirical calibration constant from Bird & Hulstrom (1981). ### Diffuse Horizontal Irradiance Clear-sky DHI is calculated from scattered radiation, with contributions from Rayleigh scattering by air molecules and forward scattering by aerosols: $$ \begin{aligned} DHI_{clear} &= DNI_{extra} \cos(\theta_z) \times 0.79 \times T_{O_3} \times T_g \times T_W \times T_{AA} \\ &\quad \times \frac{0.5(1 - T_R) + b_A(1 - T_{AS})}{1 - AM + AM^{1.02}} \end{aligned} $$ The numerator in the last term represents the two diffuse sources: * $0.5(1 - T_R)$: Half of Rayleigh-scattered light (the other half scatters upward) * $b_A(1 - T_{AS})$: Forward-scattered aerosol light, where $b_A = 0.84$ is the forward scatter ratio (84% of light scattered by aerosols continues downward) The factor 0.79 is an empirical calibration constant. ### Global Horizontal Irradiance GHI combines direct and diffuse components, accounting for multiple reflections between the ground and sky: $$ GHI_{clear} = \frac{DNI_{clear} \cos(\theta_z) + DHI_{clear}}{1 - \rho_g \rho_s} $$ where the sky albedo $\rho_s = 0.0685 + (1 - b_A)(1 - T_{AS})$ represents the fraction of upwelling radiation reflected back down by the atmosphere. This differs from the standard ($GHI = DNI \cos(\theta_z) + DHI$) because the Bird model calculates DHI from atmospheric scattering alone, requiring explicit treatment of ground-sky multiple reflections. ### High Zenith Angle Handling The is limited to 87.9° to stay within the valid range of the air mass model. If $\theta_z \geq 87.9°$: * $DNI_{clear} = 0$ * $DHI_{clear} = 0.001$ W/m² * $GHI_{clear} = 0$ *** ## References * Bird, R. E., & Hulstrom, R. L. (1981). *A simplified clear sky model for direct and diffuse insolation on horizontal surfaces.* SERI/TR-642-761, Solar Energy Research Institute. DOI: [10.2172/6510849](https://doi.org/10.2172/6510849) * Gueymard, C. A. (2003). *Direct solar transmittance and irradiance predictions with broadband models. Part I: Detailed theoretical performance assessment.* Solar Energy, 74(5), 355–379. DOI: [10.1016/S0038-092X(03)00195-6](https://doi.org/10.1016/S0038-092X\(03\)00195-6) # GHI Diffuse-Direct Decomposition Source: https://docs.plantpredict.com/models/horizontal-irradiance/ghi_diffuse_direct_decomposition ## Summary Diffuse-Direct models separate global horizontal irradiance () into its direct normal irradiance () and diffuse horizontal irradiance () components. PlantPredict implements three decomposition models: Erbs, Reindl, and DIRINT. These models use empirically derived relationships based on the and atmospheric parameters to estimate the diffuse fraction of GHI under varying sky conditions. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | ------------- | ------- | ----------------------------------------------------------------------------- | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface from weather data | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Solar irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature (Reindl model only) | | **Relative Humidity** | $RH$ | % | Relative humidity (Reindl model only) | | **Atmospheric Pressure** | $P$ | hPa | Local atmospheric pressure, used for air mass calculation (DIRINT model only) | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------------- | ------ | ----- | --------------------------------------------------------- | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Solar radiation from the sky dome (excluding direct beam) | | **Direct Normal Irradiance** | $DNI$ | W/m² | Direct beam component perpendicular to sun's rays | *** ## Detailed Description All models begin by computing the clearness index, representing the fraction of extraterrestrial irradiance reaching the ground: $$ K_t = \frac{GHI}{DNI_{extra} \cos(\theta_z)} $$ where $\theta_z$ is the solar . $K_t$ is set to 0 if $\theta_z \geq 87.9°$. The clearness index characterizes sky conditions from overcast ($K_t < 0.3$) to clear ($K_t > 0.7$). ### Erbs Model The Erbs model uses only clearness index to compute diffuse fraction $f_d$ using a piecewise polynomial function: | $K_t$ value | Diffuse Fraction Equation | | --------------------- | ----------------------------------------------------------------------- | | $K_t \leq 0.22$ | $f_d = 1.0 - 0.09 K_t$ | | $0.22 < K_t \leq 0.8$ | $f_d = 0.9511 - 0.1604 K_t + 4.388 K_t^2 - 16.638 K_t^3 + 12.336 K_t^4$ | | $K_t > 0.8$ | $f_d = 0.165$ | Once $f_d$ is determined, the DHI is calculated, then the DNI is obtained from the : $$ DHI = f_d \times GHI $$ $$ DNI = \frac{GHI - DHI}{\cos(\theta_z)} $$ ### Reindl Model The Reindl model extends the clearness index approach by incorporating solar zenith angle, air temperature, and relative humidity, accounting for sun position and atmospheric effects on scattering. **When relative humidity is provided in the weather file** (converted from % to a fraction from 0 to 1): | $K_t$ Value | Diffuse Fraction Equation | | --------------------- | ------------------------------------------------------------------------- | | $0 \leq K_t \leq 0.3$ | $f_d = 1 - 0.232 K_t + 0.0239 \cos(\theta_z) - 0.000682 T_a + 0.0195 RH$ | | $0.3 < K_t \leq 0.83$ | $f_d = 1.329 - 1.716 K_t + 0.267 \cos(\theta_z) - 0.00357 T_a + 0.106 RH$ | | $K_t > 0.83$ | $f_d = 0.426 K_t - 0.256 \cos(\theta_z) + 0.00349 T_a + 0.0734 RH$ | **When relative humidity is not provided in the weather file:** | $K_t$ Value | Diffuse Fraction Equation | | --------------------- | ------------------------------------------------ | | $0 \leq K_t \leq 0.3$ | $f_d = 1.02 - 0.254 K_t + 0.0123 \cos(\theta_z)$ | | $0.3 < K_t \leq 0.83$ | $f_d = 1.4 - 1.749 K_t + 0.177 \cos(\theta_z)$ | | $K_t > 0.83$ | $f_d = 0.486 K_t - 0.182 \cos(\theta_z)$ | **Physical limits:** The empirical correlations can produce non-physical values at edge cases. The following bounds from Reindl et al. (1990) are applied to clamp results: | $K_t$ Value | Limits | Reason | | --------------------- | ------------------------- | ------------------------------------------- | | $K_t \leq 0.3$ | $f_d \leq 1.0$ | Diffuse fraction cannot exceed 100% | | $0.3 < K_t \leq 0.83$ | $0.1 \leq f_d \leq 0.971$ | Prevents regression overshoot | | $K_t > 0.83$ | $f_d \geq 0.1$ | Minimum diffuse from atmospheric scattering | PlantPredict uses 0.83 as the upper clearness index threshold (modified from 0.78 in the original published model), based on a regression against measured irradiance data from the Cimarron Solar Facility in New Mexico. These "Reindl adjusted" variants are documented in Lave et al. (2014). Once $f_d$ is determined, the DHI is calculated, then the DNI is obtained from the : $$ DHI = f_d \times GHI $$ $$ DNI = \frac{GHI - DHI}{\cos(\theta_z)} $$ ### DIRINT Model The DIRINT (Direct Insolation Radiation INTegration) model is an enhancement of the DISC model. It first computes an initial DNI estimate using DISC, then applies a correction factor based on temporal stability and atmospheric conditions. This allows DIRINT to distinguish between steady hazy conditions and variable cloudy conditions that have similar instantaneous clearness indices. DIRINT uses pressure-corrected $AM'$ as an input, calculated internally using the Bird-Hulstrom formula (see [Air Mass](../solar-geometry/air_mass) for details). **Step 1: DISC Initial Estimate** The DISC (Direct Insolation Simulation Code) model computes an initial DNI estimate using direct normal factors: * $K_{nc}$ = **Clear-sky transmittance**: theoretical maximum under clear conditions, decreasing with air mass * $\Delta K_n$ = **Transmittance reduction**: correction for clouds, aerosols, and (derived from $K_t$) * $K_n$ = **Actual transmittance**: net transmittance after atmospheric effects The clear-sky transmittance is a polynomial function of air mass: $$ K_{nc} = 0.866 - 0.122 AM' + 0.0121 AM'^2 - 0.000653 AM'^3 + 0.000014 AM'^4 $$ The transmittance reduction uses coefficients $A$, $B$, $C$ that depend on $K_t$: $$ \Delta K_n = A + B e^{C \times AM'} $$ where each coefficient $X \in \{A, B, C\}$ is computed as: $$ X = c_0 + c_1 K_t + c_2 K_t^2 + c_3 K_t^3 $$
**For $K_t > 0.6$:** | Coefficient X | $c_0$ | $c_1$ | $c_2$ | $c_3$ | | ------------- | ------ | ------ | ------ | ----- | | $A$ | −5.743 | 21.77 | −27.49 | 11.56 | | $B$ | 41.4 | −118.5 | 66.05 | 31.9 | | $C$ | −47.01 | 184.2 | −222 | 73.81 | **For $K_t \leq 0.6$:** | Coefficient X | $c_0$ | $c_1$ | $c_2$ | $c_3$ | | ------------- | ----- | ----- | ------ | ------ | | $A$ | 0.512 | −1.56 | 2.286 | −2.222 | | $B$ | 0.37 | 0.962 | 0 | 0 | | $C$ | −0.28 | 0.932 | −2.048 | 0 |
The actual transmittance and DNI are then: $$ K_n = K_{nc} - \Delta K_n $$ $$ DNI_{DISC} = K_n \times DNI_{extra} $$ $DNI_{DISC} = 0$ if any of the following conditions are met: * $GHI < 1$ W/m² * $DNI_{DISC} < 0$ * $\theta_z > 87°$ (Version 09 and earlier) or $\theta_z > 90°$ (Version 10 and later) **Step 2: DIRINT Correction Coefficient Lookup** DIRINT improves upon DISC by using four parameters to look up a correction coefficient $C_{DIRINT}$: modified clearness index ($K'_t$), temporal stability ($\Delta K'_t$), zenith angle ($\theta_z$), and precipitable water ($W$, not used by PlantPredict). The modified clearness index normalizes for air mass effects, isolating the influence of clouds and excess atmospheric turbidity: $$ K'_t = \frac{K_t}{1.031 \exp\left(-\frac{1.4}{0.9 + 9.4/AM'}\right) + 0.1} $$ with constraint $K'_t \leq 0.82$. Temporal stability captures cloud transients by comparing clearness across adjacent timestamps: $$ \Delta K'_t = 0.5 \left( |K'_t - K'_{t,next}| + |K'_t - K'_{t,prev}| \right) $$ A four-dimensional lookup table retrieves the DIRINT correction coefficient $C_{DIRINT}$ based on binned values of these four parameters. PlantPredict does not use precipitable water as an input for the model and defaults to the "precipitable water unavailable" bin. **Step 3: Final DNI and DHI Calculation** The final DNI is the DISC estimate scaled by the DIRINT correction coefficient: $$ DNI = DNI_{DISC} \times C_{DIRINT} $$ DHI is then derived using the : $$ DHI = GHI - DNI \cos(\theta_z) $$ ### Physical Constraints All decomposition models apply the following physical constraints: * If $GHI \leq 0$, then $DHI = 0$ and $DNI = 0$ * $DHI \leq GHI$ * $DNI \geq 0$ * If $\theta_z \geq 90°$, then $DNI = 0$ *** ## References * Erbs, D. G., Klein, S. A., & Duffie, J. A. (1982). *Estimation of the diffuse radiation fraction for hourly, daily and monthly-average global radiation.* Solar Energy, 28(4), 293–302. DOI: [10.1016/0038-092X(82)90302-4](https://doi.org/10.1016/0038-092X\(82\)90302-4) * Reindl, D. T., Beckman, W. A., & Duffie, J. A. (1990). *Diffuse fraction correlations.* Solar Energy, 45(1), 1–7. DOI: [10.1016/0038-092X(90)90060-P](https://doi.org/10.1016/0038-092X\(90\)90060-P) * Perez, R., Ineichen, P., Maxwell, E., Seals, R., & Zelenka, A. (1992). *Dynamic global-to-direct irradiance conversion models.* ASHRAE Transactions, 98(1), 354–369. * Maxwell, E. L. (1987). *A quasi-physical model for converting hourly global horizontal to direct normal insolation.* Technical Report SERI/TR-215-3087, Solar Energy Research Institute. DOI: [10.2172/5987868](https://doi.org/10.2172/5987868) * Lave, M., Hayes, W., Pohl, A., & Hansen, C. W. (2014). *Evaluation of global horizontal irradiance to plane-of-array irradiance models at locations across the United States.* IEEE 40th Photovoltaic Specialist Conference (PVSC). DOI: [10.1109/PVSC.2014.6925216](https://doi.org/10.1109/PVSC.2014.6925216) # Horizontal Irradiance Components Pre-Processing Source: https://docs.plantpredict.com/models/horizontal-irradiance/horizontal_irradiance_components ## Summary Irradiance at a given site is typically reported as three complementary components: Global Horizontal Irradiance (), Direct Normal Irradiance (), and Diffuse Horizontal Irradiance (). PlantPredict validates these components and pre-processes them before passing them to models. When the **Frontside POAI** toggle is enabled, this pre-processing is bypassed—measured is reverse-decomposed into horizontal components via the [POAI Diffuse-Direct Decomposition](/models/horizontal-irradiance/poai_diffuse_direct_decomposition) model instead. ## Inputs | Name | Symbol | Units | Description | | --------------------------------- | ---------- | ------- | ------------------------------------------------------------- | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface from weather data | | **Direct Normal Irradiance** | $DNI$ | W/m² | Beam irradiance perpendicular to sun's rays from weather data | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse irradiance on horizontal surface from weather data | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | *** ## Outputs | Name | Symbol | Units | Description | | ----------------- | ------ | ----- | ------------------------------------------------------- | | **Processed GHI** | $GHI$ | W/m² | Global horizontal irradiance (validated or calculated) | | **Processed DNI** | $DNI$ | W/m² | Direct normal irradiance (validated or calculated) | | **Processed DHI** | $DHI$ | W/m² | Diffuse horizontal irradiance (validated or calculated) | *** ## Detailed Description Irradiance components are: * **Global Horizontal Irradiance (GHI)**: Total solar radiation on a horizontal surface from the entire sky hemisphere, including direct beam, diffuse sky radiation, and reflected radiation. * **Direct Normal Irradiance (DNI)**: Solar radiation on a surface perpendicular to the sun's rays, representing only the direct beam component. * **Diffuse Horizontal Irradiance (DHI)**: Solar radiation from the sky dome after scattering by atmospheric constituents, excluding the direct beam. The three components are related by the : $$ GHI = DNI \cos(\theta_z) + DHI $$ where $\theta_z$ is the solar . When Frontside POAI is **off** (standard path), PlantPredict processes irradiance data in the following order: 1. **Validate GHI**: Negative GHI values are set to zero 2. **Resolve DHI**: * If model selected (Erbs, Reindl, or DIRINT) → calculate DHI from GHI (overwrites any existing DHI) * If no decomposition model → use DHI from weather data (prediction will fail if missing) 3. **Resolve DNI**: * If DNI is missing or the "Weather File DNI" option is set to OFF, calculate DNI from closure: DNI = (GHI − DHI) / cos(θz). If GHI ≤ DHI or θz > 87.9°, DNI = 0. * Else use DNI from weather data 4. **Pass to transposition**: Validated components feed into models When Frontside POAI is **on**, all of the above steps are skipped. The [POAI Diffuse-Direct Decomposition](/models/horizontal-irradiance/poai_diffuse_direct_decomposition) (GTI-DIRINT) algorithm derives GHI, DNI, and DHI from the measured POAI, and these derived values are passed to transposition. *** ## References * Duffie, J. A., & Beckman, W. A. (2013). *Solar Engineering of Thermal Processes* (4th ed.). John Wiley & Sons. DOI: [10.1002/9781118671603](https://doi.org/10.1002/9781118671603) * Iqbal, M. (1983). *An Introduction to Solar Radiation.* Academic Press. * Maxwell, E., Wilcox, S., & Rymes, M. (1993). *User's Manual for SERI QC Software: Assessing the Quality of Solar Radiation Data.* NREL/TP-463-5608. DOI: [10.2172/10125711](https://doi.org/10.2172/10125711) # Horizontal Irradiance Processing Overview Source: https://docs.plantpredict.com/models/horizontal-irradiance/overview Horizontal Irradiance Processing models prepare input irradiance data (measured or modeled) for use in energy production calculations. These models handle component separation, clear-sky estimation, and—when is the input—reverse decomposition to derive horizontal components. ## Models in This Section ### [Horizontal Irradiance Components Pre-Processing](horizontal_irradiance_components) Validates input irradiance data using the (GHI = DHI + DNI × cos θz) and applies quality control checks to ensure physical consistency. ### [GHI Diffuse-Direct ](ghi_diffuse_direct_decomposition) Estimates DHI from GHI, then calculates DNI using the . This is the standard decomposition path, applied when DHI or DNI measurements are unavailable or when the user chooses to override measured values. Three model options: * **Erbs**: Simplest model; uses only GHI and extraterrestrial irradiance via a correlation * **Reindl**: Adds air temperature and optionally relative humidity for improved accuracy under varying atmospheric conditions * **DIRINT**: Uses adjacent timesteps to detect rapid irradiance changes (e.g., cloud transients), providing better accuracy for variable sky conditions ### [POAI Diffuse-Direct ](poai_diffuse_direct_decomposition) Reverse-decomposes measured (POAI) into GHI, DNI, and DHI using the GTI-DIRINT algorithm. This path is activated by the **Frontside POAI** toggle in [Simulation Settings](/user-guide/ui/simulation-settings) and bypasses the standard GHI decomposition. The derived horizontal components feed into the normal transposition pipeline for each DC field. ### [Bird Clear Sky Model](bird_clear_sky_model) Calculates theoretical clear-sky irradiance components using atmospheric transmittance factors. Used for spectral correction calculations. ## Processing Workflow PlantPredict supports two entry points for irradiance data, selected via the Frontside POAI toggle: 1. **GHI-based (standard path)** — GHI is validated, then DHI and DNI are resolved based on user settings (see [Horizontal Irradiance Components](/models/horizontal-irradiance/horizontal_irradiance_components) for the full processing sequence): * **DHI**: calculated from GHI when a decomposition model is selected, or read from the weather file when decomposition is set to None * **DNI**: read from the weather file when the Weather File DNI toggle is on, or derived from the closure equation otherwise 2. **POAI-based (alternative path)** — Measured POAI is reverse-decomposed into GHI, DNI, and DHI using GTI-DIRINT, bypassing standard GHI processing. Both paths produce validated horizontal components (GHI, DNI, DHI) that feed into the transposition models for each DC field (Hay-Davies or Perez). In either case, the Bird clear-sky model runs independently to provide reference irradiance for spectral corrections. # POAI Diffuse-Direct Decomposition Source: https://docs.plantpredict.com/models/horizontal-irradiance/poai_diffuse_direct_decomposition ## Summary When (POAI) is provided in the weather file, PlantPredict can reverse-decompose it into horizontal irradiance components (, , ) using the GTI-DIRINT algorithm. This is activated by the **Frontside POAI** toggle in [Simulation Settings](/user-guide/ui/simulation-settings). When enabled, the standard [GHI decomposition models](/models/horizontal-irradiance/ghi_diffuse_direct_decomposition) (Erbs, Reindl, DIRINT) are bypassed—the horizontal components derived from the GTI-DIRINT algorithm feed into the normal pipeline for each DC field. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | --------------------- | ------- | ------------------------------------------------------------------------------------------------------- | | **Plane-of-Array Irradiance** | $G_{POA}$ | W/m² | Measured total irradiance on tilted module surface from weather file | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Solar irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Horizontal angle of sun, clockwise from North | | **Atmospheric Pressure** | $P$ | hPa | Local atmospheric pressure | | **Albedo** | $\rho$ | — | Average ground reflectance (0–1) | | **Module Tilt Angle** | $\beta_m$ | degrees | Angle of module surface from horizontal (fixed-tilt only, 0° = horizontal, 90° = vertical) | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Direction the module faces, clockwise from North (fixed-tilt only, 0° = N, 90° = E, 180° = S, 270° = W) | | **Tracker Axis Azimuth** | $\gamma_{axis}$ | degrees | Azimuth orientation of tracker rotation axis from North (tracking only) | | **Tracker Axis Tilt** | $\beta_{axis}$ | degrees | Tilt of tracker rotation axis from horizontal (tracking only) | | **Minimum Rotation Limit** | $\alpha_{min}$ | degrees | Mechanical limit for negative rotation (tracking only) | | **Maximum Rotation Limit** | $\alpha_{max}$ | degrees | Mechanical limit for positive rotation (tracking only) | | **Nighttime Stow Angle** | $\alpha_{stow,night}$ | degrees | Rotation angle when sun is below horizon (tracking only) | | **Ground Coverage Ratio** | $GCR$ | — | Ratio of collector width to row pitch (backtracking only) | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------------- | ------ | ----- | ------------------------------------------ | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface | | **Direct Normal Irradiance** | $DNI$ | W/m² | Beam component perpendicular to sun's rays | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse component on horizontal surface | *** ## Detailed Description PlantPredict POAI Diffuse-Direct Decomposition model is based on the GTI-DIRINT algorithm described by Marion (2015), which derives horizontal irradiance components from measured POAI. The algorithm iteratively applies a tilted variation of the DISC-DIRINT decomposition model and checks its results by transposing back to the tilted plane, adjusting the estimated clearness index $K_{t,est}$ until the modeled POAI matches the measurement. Because POAI is typically measured by a sensor at a specific location in the power plant, its mounting configuration (tilt, azimuth, GCR, etc.) may not match any particular DC field—for example, DC fields can have different GCR or tracker settings. The algorithm therefore uses the mounting and tracking parameters defined at the weather-file level, which describe the sensor's own configuration, rather than any DC field's parameters. The derived GHI, DNI, and DHI are then re-transposed downstream for each DC field using that field's actual parameters and the standard transposition models. ### Algorithm Rationale The DISC-DIRINT decomposition model was calibrated on horizontal irradiance data. Its central input is the clearness index: $$ K_t = \frac{GHI}{DNI_{extra} \cdot \cos\theta_z} $$ which characterizes atmospheric transmittance through empirical relationships. Substituting the global tilted irradiance (GTI) for GHI and the angle of incidence (AOI) $\theta_{AOI}$ for $\theta_z$ produces an estimated "tilted" clearness index $K_{t,est}$ that does not map cleanly to these relationships. A tilted surface sees a reduced fraction of the sky dome, receives ground-reflected irradiance that has no horizontal equivalent, and the beam projects through $\cos\theta_{AOI}$ rather than $\cos\theta_z$. The mismatch grows with tilt angle. The iterative procedure compensates for this mismatch. For a given timestep, the other inputs to the DISC-DIRINT model—pressure-corrected , extraterrestrial irradiance, and zenith angle—are independent of the surface orientation. $K_{t,est}$ is the input that carries the orientation error. The iteration therefore aims to incrementally correct $K_{t,est}$, starting with an initial guess: $$ K_{t,est} = \frac{GTI_0}{DNI_{extra} \cdot \cos\theta_{AOI}} $$ where $GTI_0 = G_{POA}$. The algorithm runs the DISC-DIRINT decomposition with this $K_{t,est}$ to estimate DNI and DHI, transposes those components back to the tilted plane using the Perez model, and compares the modeled POAI with the measurement. At each subsequent step $i$, a new proxy $GTI_i$ is computed from $GTI_{i-1}$ and the residual between the input POAI and the re-transposed value from the previous iteration, yielding an updated $K_{t,est}$. $GTI_i$ has no physical meaning of its own—it is simply the value fed into the $K_{t,est}$ equation to drive convergence. The loop converges when the modeled POAI reproduces the measurement to within 1 W/m². At each iteration, a relaxation factor $C$ scales the adjustment to $GTI_i$, controlling how aggressively $K_{t,est}$ is corrected. $C$ decreases with iteration count because DISC and DIRINT select coefficients from discrete lookup-table bins rather than continuous functions. A full-step correction ($C = 1$) works well when far from the solution, but near convergence it can overshoot and oscillate across bin boundaries. Progressively damping the step size maximizes the chance of stable convergence. ### Mounting Angle Calculation Before decomposition, the algorithm computes the (AOI) $\theta_{AOI}$ and surface tilt $\beta_m$ for each timestep using the weather file's mounting configuration. For fixed-tilt systems, $\beta_m$ and $\gamma_m$ are used as-is and $\theta_{AOI}$ is calculated from the tilt and azimuth combined with the solar position $\theta_z$, $\gamma_s$ (see [Incidence Angle](/models/tracking/incidence_angle)). For single-axis trackers, the tracking angle is calculated from the axis geometry ($\gamma_{axis}$, $\beta_{axis}$), rotation limits ($\alpha_{min}$, $\alpha_{max}$), stow angle ($\alpha_{stow,night}$), and optionally the ground coverage ratio ($GCR$) for backtracking, using [true tracking](/models/tracking/true_tracking) or [backtracking](/models/tracking/backtracking/standard_backtracking) (selected during weather file import), assuming horizontal ground. The resulting tilt and azimuth are used to compute $\theta_{AOI}$. ### Timestep Classification The algorithm handles two cases separately based on the angle of incidence $\theta_{AOI}$: * **$\theta_{AOI} < 90°$**: The beam component can reach the front surface. The standard iterative procedure mentioned above solves for DNI and DHI. * **$\theta_{AOI} ≥ 90°$**: The sun is behind the modules and the beam cannot reach the front surface directly (rare occurrence). A simplified non-iterative procedure is used. Timesteps where $G_{POA} \leq 0$ are zeroed out: $GHI = DNI = DHI = 0$. ### Case 1: AOI \< 90° (Iterative) In the standard case where the sun is facing the front of the module, the algorithm follows the iterative approach described above. If convergence—defined as obtaining a residual between $G_{POA}$ and the re-transposed value \< 1 W/m²—is not achieved within 30 iterations, the result with the smallest residual is used. Starting with $GTI_0 = G_{POA}$, the algorithm performs the following steps at each iteration $i$: **Step 1: Compute tilted clearness index** A tilted equivalent of the standard clearness index is calculated, replacing $GHI$ with $GTI_i$ and the zenith angle $\theta_z$ with the angle of incidence $\theta_{AOI}$. A floor of 0.065 on the cosine of the AOI (corresponding to $\theta_{AOI} \approx 86.3°$) prevents division by near-zero values at grazing incidence: $$ K_{t,est} = \frac{GTI_i}{DNI_{extra} \cdot \max\!\left(0.065,\, \cos\theta_{AOI}\right)} $$ **Step 2: Estimate DNI using DISC + DIRINT algorithm** The DISC model computes an initial DNI estimate from $K_{t,est}$ using atmospheric transmittance factors. The DIRINT correction coefficient $C_{DIRINT}$ is then looked up from a four-dimensional table using the modified $K'_t$, temporal stability $\Delta K'_t$, and solar . As with the standard [GHI decomposition](/models/horizontal-irradiance/ghi_diffuse_direct_decomposition#dirint-model), precipitable water is not used. The temporal stability $\Delta K'_t$ is calculated from the original $K_{t,est}$ values (derived from $G_{POA}$) of the previous and following timesteps, not from the iteratively updated $GTI_i$: $$ DNI = DNI_{DISC} \times C_{DIRINT} $$ **Step 3: Derive GHI and DHI** GHI is recovered from the $K_{t,est}$ definition (the floor carries over from Step 1): $$ GHI = K_{t,est} \cdot DNI_{extra} \cdot \max(0.065,\, \cos\theta_z) $$ DHI is then obtained from the closure equation: $$ DHI = GHI - DNI \cdot \max(0.065,\, \cos\theta_z) $$ In Marion's original paper, the DHI calculation leaves the DNI projection unfloored (no clamping of $\cos\theta_z$). The difference only affects timesteps where $\theta_z > 86.3°$ and is negligible in practice. **Step 4: Transpose back to the tilted plane and compare** The derived horizontal components are transposed to the tilted plane using the [Perez model](/models/transposition/perez), producing $G_{beam}$, $G_{sky}$, and $G_{ground}$: $$ G_{POA,model} = G_{beam} + G_{sky} + G_{ground} $$ **Step 5: Update and converge** The residual $G_{POA,model} - G_{POA}$ is computed. Convergence is considered achieved when $|G_{POA,model} - G_{POA}| \leq 1$ W/m², in which case the algorithm stops and the DNI, GHI, and DHI values are returned. Otherwise, the intermediate proxy variable $GTI_{i+1}$ is updated with a damped [fixed-point iteration](https://en.wikipedia.org/wiki/Fixed-point_iteration), clamped at zero: $$ GTI_{i+1} = \max\!\left(0,\, GTI_i - C \cdot (G_{POA,model} - G_{POA})\right) $$ where $C$ is a relaxation factor that decreases with iteration count to improve stability: | Iteration Range | Relaxation Factor $C$ | | --------------- | --------------------- | | 1–2 | 1.0 | | 3–9 | 0.5 | | 10–19 | 0.25 | | 20–30 | 0.125 | If convergence is not reached within 30 iterations, the result with the smallest residual is used. ### Case 2: AOI ≥ 90° (Non-Iterative) In the rare case when the beam cannot reach the front surface—that is, when the sun is behind the modules—the measured POAI consists entirely of diffuse irradiance (sky and ground-reflected). The algorithm then uses a simplified non-iterative approach: **Step 1: Estimate DNI from a single-pass DISC + DIRINT** $K_{t,est}$ is calculated once from $G_{POA}$ using the same tilted clearness index formula as Case 1, without iterative correction. DNI is then estimated using the DISC + DIRINT procedure. Temporal stability $\Delta K'_t$ is computed from the neighboring timesteps' original $G_{POA}$-derived $K'_t$ values, as in Case 1. **Step 2: Derive DHI from an isotropic diffuse model** Since the beam does not reach the front surface, $G_{POA}$ consists entirely of sky diffuse and ground-reflected irradiance. Assuming an sky model: $$ G_{POA} = DHI \cdot \frac{1 + \cos\beta_m}{2} + GHI \cdot \rho \cdot \frac{1 - \cos\beta_m}{2} $$ where GHI follows the closure equation: $GHI = DHI + DNI \cdot \cos\theta_z$. Substituting and solving for DHI: $$ DHI = \frac{2 \cdot G_{POA} - DNI \cdot \cos\theta_z \cdot \rho \cdot (1 - \cos\beta_m)}{1 + \cos\beta_m + \rho \cdot (1 - \cos\beta_m)} $$ DHI is floored at zero. GHI is then computed from the . ### Downstream Processing The derived GHI, DNI, and DHI are written back to the weather data and processed through the standard transposition pipeline. Each DC field may have different mounting parameters than the weather file, so the horizontal components are re-transposed per DC field using the selected transposition model (Hay-Davies or Perez). *** ## References * Marion, B. (2015). *A model for deriving the direct normal and diffuse horizontal irradiance from the global tilted irradiance.* Solar Energy, 122, 1037–1046. DOI: [10.1016/j.solener.2015.10.017](https://doi.org/10.1016/j.solener.2015.10.017) * Perez, R., Ineichen, P., Maxwell, E., Seals, R., & Zelenka, A. (1992). *Dynamic global-to-direct irradiance conversion models.* ASHRAE Transactions, 98(1), 354–369. * Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). *Modeling daylight availability and irradiance components from direct and global irradiance.* Solar Energy, 44(5), 271–289. DOI: [10.1016/0038-092X(90)90055-H](https://doi.org/10.1016/0038-092X\(90\)90055-H) # DC Field Aggregation Source: https://docs.plantpredict.com/models/inverter-models/dc_field_aggregation ## Summary When multiple DC fields with non-uniform characteristics are connected in parallel to a common input, PlantPredict calculates the combined DC output using a weighted voltage averaging approach. Each DC field may have different I-V characteristics due to variations in module type, irradiance, temperature, shading, among other factors. Since parallel-connected DC fields share a common operating voltage, the algorithm assesses this shared voltage, recalculates the current contribution from each DC field at that voltage, and sums the currents to obtain total inverter input current and power. ## Inputs | Name | Symbol | Units | Description | | ------------------------------------------- | ----------- | ----- | --------------------------------------------------------------------------------------------------------------------- | | **DC Field $i$ Max Power Voltage** | $V_{mp,i}$ | V | Voltage at maximum power point for DC field $i$ (from [single-diode model](/models/dc-performance/5_parameter_model)) | | **DC Field $i$ Open-Circuit Voltage** | $V_{oc,i}$ | V | Open circuit voltage for DC field $i$ (from [single-diode model](/models/dc-performance/5_parameter_model)) | | **DC Field $i$ Number of Parallel Strings** | $N_{p,i}$ | — | Number of series strings wired in parallel in DC field $i$ | | **DC Field $i$ Modules in Series** | $N_{s,i}$ | — | Number of modules wired in series in DC field $i$ | | **DC Field $i$ Repeater Count** | $n_{rep,i}$ | — | Number of identical DC field instances | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------- | ----------- | ----- | ------------------------------------------------------- | | **DC Operating Voltage** | $V_{DC}$ | V | Shared operating voltage at inverter input | | **DC Open-Circuit Voltage** | $V_{DC,oc}$ | V | Weighted-average open-circuit voltage at inverter input | | **DC Operating Power** | $P_{DC}$ | W | DC power at inverter input | *** ## Detailed Description ### Step 1: Weighted Average Voltage Calculation The voltage ($V_{mp,i}$) for each DC field is calculated independently based on its specific operating conditions. When multiple DC fields are connected in parallel to a common inverter input, a weighted average determines the shared operating voltage: $$ V_{DC} = \frac{\sum_{i} N_{p,i} \cdot n_{rep,i} \cdot V_{mp,i}}{\sum_{i} N_{p,i} \cdot n_{rep,i}} $$ The weighting factor ($N_{p,i} \cdot n_{rep,i}$) reflects the relative current contribution capacity of each DC field. The aggregated open circuit voltage is calculated using the same weighting approach: $$ V_{DC,oc} = \frac{\sum_{i} N_{p,i} \cdot n_{rep,i} \cdot V_{oc,i}}{\sum_{i} N_{p,i} \cdot n_{rep,i}} $$ ### Step 2: Voltage Reassignment The common operating voltage is assigned to each DC field $i$ connected to the inverter: $$ V_i = V_{DC} $$ This ensures all parallel-connected DC fields operate at the same voltage, as required by Kirchhoff's voltage law for parallel circuits. ### Step 3: Current Recalculation At the common operating voltage, the current from each DC field is recalculated using its I-V curve. The module-level voltage is determined by dividing the common voltage by the number of modules in series: $$ V_{mod,i} = \frac{V_{DC}}{N_{s,i}} $$ The module-level current ($I_{mod,i}$) is solved from the at $V_{mod,i}$ using Newton-Raphson iteration. See [Single Diode Model](/models/dc-performance/5_parameter_model) for the diode equation formulation. The DC field current is then: $$ I_i = I_{mod,i} \cdot N_{p,i} $$ ### Step 4: Current Summation and Power Calculation The total inverter input current is the sum of currents from all parallel DC fields, accounting for repeaters, and the DC power delivered to the inverter follows directly: $$ I_{DC} = \sum_{i} I_i \cdot n_{rep,i} $$ $$ P_{DC} = V_{DC} \cdot I_{DC} $$ # Degradation Losses (DC Applied) Source: https://docs.plantpredict.com/models/inverter-models/degradation_dc_applied ## Summary Degradation Losses (DC Applied) model the time-dependent reduction in PV system output due to module aging and performance decline. PlantPredict offers five degradation models—None, Linear DC, Non-Linear DC, Linear AC, and Stepped AC—differing in where the loss is applied (DC power upstream of the vs. AC power downstream of the inverter) and how the rate evolves over time (constant, per-year schedule, or annual steps). This page documents the two DC-applied models and the optional DC-applied model. For AC-applied degradation, see [Degradation Losses (AC Applied)](../ac-losses/degradation_ac_applied). ## Inputs | Name | Symbol | Units | Description | | -------------------------------- | ---------------------- | -------- | ------------------------------------------------------ | | **DC Operating Power** | $P_{DC}$ | W | DC power from DC field aggregation, before degradation | | **Energization Date** | $t_0$ | datetime | Block energization date (system commissioning) | | **Linear Degradation Rate** | $r_{deg}$ | %/year | Annual degradation rate | | **Non-Linear Degradation Rates** | $[r_0, r_1, ..., r_n]$ | %/year | Per-year degradation rates starting at year 0 | | **LeTID Annual Rates** | $[l_0, l_1, ..., l_n]$ | %/year | Per-year LeTID rates starting at year 0 | | **Current Timestamp** | $t$ | datetime | Simulation timestamp for the current timestep | *** ## Outputs | Name | Symbol | Units | Description | | --------------------- | ------------ | ----- | ------------------------------------------------------------ | | **Degraded DC Power** | $P_{DC,deg}$ | W | DC power after degradation, passed to operating-region logic | | **Degradation Loss** | $L_{deg}$ | W | Power loss due to degradation | | **LeTID Loss** | $L_{LeTID}$ | W | Power loss due to LeTID | *** ## Detailed Description ### Application Point When Linear DC or Non-Linear DC degradation is selected, degradation is applied to the aggregated DC power after DC field aggregation and before the inverter determines its operating region. Because the inverter sees the already-degraded DC power, DC-applied degradation can affect the behavior: a system that clips in early years may stop clipping as modules degrade. AC-applied degradation models, by contrast, are applied after inverter conversion and do not affect clipping behavior. Before the , the system is not yet commissioned, so all models set $P_{DC,deg} = 0$. ### No DC Degradation (None, Linear AC, Stepped AC) When None, Linear AC, or Stepped AC degradation is selected, no DC-level degradation is applied: $$ U_{deg} = 0 $$ $$ P_{DC,deg} = P_{DC} $$ ### Linear DC Degradation Linear degradation applies a constant annual rate $r_{deg}$ over the system lifetime. Degradation accumulates from the energization date $t_{onset} = t_0$ when First Year Degradation is enabled, or from $t_{onset} = t_0 + 1$ year when disabled. The degradation coefficient is: $$ U_{deg} = r_{deg} \cdot \Delta t $$ where $\Delta t = \max(t - t_{onset},\, 0)$ is the elapsed time expressed as a fractional number of years (using an 8760-hour year). The degraded power is: $$ P_{DC,deg} = (1 - U_{deg}) \times P_{DC} $$ $$ L_{deg} = P_{DC} - P_{DC,deg} = U_{deg} \times P_{DC} $$ ### Non-Linear DC Degradation Non-linear degradation specifies a separate rate $r_i$ for each year $i$ of operation, always starting from the energization date (no delayed onset option). Elapsed time $\Delta t$ is normalized to a 365-day year by subtracting leap days from the total elapsed time. The cumulative degradation sums all complete years plus a pro-rated portion of the current year: $$ U_{deg} = \sum_{i=0}^{\lfloor \Delta t \rfloor - 1} r_i + \left( \Delta t - \lfloor \Delta t \rfloor + \frac{n_{leap}}{365} \right) \times r_{\lfloor \Delta t \rfloor} $$ where $\Delta t$ is in fractional years (as defined above), $\lfloor \Delta t \rfloor$ is the number of complete years elapsed, $n_{leap}$ is the count of February 29th occurrences between $t_0$ and $t$, and $\Delta t - \lfloor \Delta t \rfloor$ is the fractional part of the current year. The first term sums the rates of all complete years; the second term pro-rates the current year's rate. **Example:** $t_0$ = January 1, 2027 00:00 and $t$ = March 15, 2033 00:00. There are 2265 elapsed days, with $n_{leap} = 2$ (February 29 in 2028 and 2032). Then $\Delta t = (2265 - 2)/365 = 6.2$, so $\lfloor \Delta t \rfloor = 6$ and the pro-rated fraction is $0.2 + 2/365 \approx 0.205$. The cumulative degradation is $U_{deg} = r_0 + r_1 + r_2 + r_3 + r_4 + r_5 + 0.205 \times r_6$. $$ P_{DC,deg} = (1 - U_{deg}) \times P_{DC} $$ $$ L_{deg} = P_{DC} - P_{DC,deg} = U_{deg} \times P_{DC} $$ ### Light and Elevated Temperature Induced Degradation (LeTID) LeTID is an additional degradation mechanism that can be enabled independently of the primary degradation model. Unlike conventional degradation, LeTID is partially reversible—modules typically degrade over the first few years of operation, then partially recover (Repins et al., 2020). Per-year rates $l_i$ can therefore be negative in later years to capture this recovery. LeTID losses are reported separately from primary degradation and are applied at the same level (DC for Linear DC/Non-Linear DC, AC for Linear AC/Stepped AC). The algorithm uses the same cumulative approach as Non-Linear DC degradation: $$ U_{LeTID} = \sum_{i=0}^{\lfloor \Delta t \rfloor - 1} l_i + \left( \Delta t - \lfloor \Delta t \rfloor + \frac{n_{leap}}{365} \right) \times l_{\lfloor \Delta t \rfloor} $$ where $\Delta t$, $\lfloor \Delta t \rfloor$, and $n_{leap}$ follow the same definitions as for Non-Linear DC degradation. $$ L_{LeTID} = U_{LeTID} \times P_{DC} $$ When both primary degradation and LeTID are active, their losses are additive: $$ P_{DC,deg} = P_{DC} - L_{deg} - L_{LeTID} $$ *** ## References * Jordan, D. C., & Kurtz, S. R. (2013). *Photovoltaic degradation rates—an analytical review.* Progress in Photovoltaics: Research and Applications, 21(1), 12–29. DOI: [10.1002/pip.1182](https://doi.org/10.1002/pip.1182) * Repins, I., et al. (2020). *Light and elevated temperature induced degradation (LeTID) in a utility-scale photovoltaic system.* IEEE Journal of Photovoltaics, 10(4), 1084–1092. DOI: [10.1109/JPHOTOV.2020.2989168](https://doi.org/10.1109/JPHOTOV.2020.2989168) * Kersten, F., Engelhart, P., et al. (2015). *Degradation of multicrystalline silicon solar cells and modules after illumination at elevated temperature.* Solar Energy Materials and Solar Cells, 142, 83–86. DOI: [10.1016/j.solmat.2015.06.015](https://doi.org/10.1016/j.solmat.2015.06.015) # Inverter Efficiency Models Source: https://docs.plantpredict.com/models/inverter-models/inverter_efficiency ## Summary Inverter Efficiency Models calculate the DC-to-AC conversion efficiency and AC output power of the using manufacturer-supplied efficiency curves at multiple voltage and power levels. PlantPredict implements two efficiency models: * **Bilinear Interpolation Model** (Versions 3–10): interpolates efficiency from the curve data at the operating voltage and power. * **Sandia Polynomial Model** (Version 11+): fits quadratic polynomials to the efficiency curves and computes efficiency analytically. Falls back to the bilinear model if fewer than three efficiency curves are available. ## Inputs | Name | Symbol | Units | Description | | ------------------------ | ---------------------- | ----- | ------------------------------------------------------------------------- | | **DC Operating Voltage** | $V_{DC}$ | V | DC operating voltage from [operating regions](inverter_operating_regions) | | **DC Operating Power** | $P_{DC}$ | W | DC operating power from [operating regions](inverter_operating_regions) | | **Efficiency Curves** | $\eta_{V_j}(P_{AC,i})$ | kW, % | Efficiency as a function of AC power at DC voltages $V_j$ | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------- | ------------ | ----- | ------------------------------ | | **Inverter Efficiency** | $\eta$ | — | DC-to-AC conversion efficiency | | **Inverter AC Power** | $P_{AC,inv}$ | W | AC power output | *** ## Detailed Description ### Efficiency Curve Structure Inverter Efficiency Curves The efficiency curves $\eta_{V_j}(P_{AC,i})$ provide efficiency as a function of AC power at typically three DC voltage levels: * Minimum voltage ($V_{min}$) * Nominal voltage ($V_{nom}$) * Maximum voltage ($V_{max}$) During pre-processing, power is scaled from kW to W and efficiency from % to a unitless fraction. If the operating voltage falls outside the range of the efficiency curves, it is clamped to the nearest boundary: * $V_{DC} \leftarrow V_{min}$ if $V_{DC} < V_{min}$ * $V_{DC} \leftarrow V_{max}$ if $V_{DC} > V_{max}$ ### Bilinear Interpolation Model (Versions 3–10) This model interpolates efficiency directly from the efficiency curve data using bilinear interpolation across voltage and power. If only one voltage curve is available, the interpolation reduces to linear interpolation in power. For each voltage curve, a $(P_{AC,inv} = 0,\, \eta = 0)$ point is added if not already present, ensuring the power range starts at zero. #### Determination of bounds Find the two voltage curves $V_1 \leq V_{DC} \leq V_2$ that bracket the operating voltage. For each bounding voltage curve, determine the power data points to use for bracketing: * **V3–6**: use the curve's AC power values $P_{AC,i}$ directly. * **V7 and later**: convert the curve's AC power values to DC power ($P_{DC,i} = P_{AC,i} / \eta_{V_j}(P_{AC,i})$) and use the resulting DC power values. From the resulting power values, find the two adjacent points $P_1$ and $P_2$ that bracket $P_{DC}$. If $P_{DC}$ exceeds the curve's maximum power, $P_1$ and $P_2$ are set to the two highest data points. #### Bilinear interpolation The four corner efficiencies are $\eta_{11} = \eta_{V_1}(P_1)$, $\eta_{12} = \eta_{V_1}(P_2)$, $\eta_{21} = \eta_{V_2}(P_1)$, $\eta_{22} = \eta_{V_2}(P_2)$. From these, we define the interpolation weights in voltage ($\alpha$) and power ($\beta$): $$ \alpha = \frac{V_{DC}-V_1}{V_2-V_1} $$ $$ \beta = \frac{P_{DC}-P_1}{P_2-P_1} $$ The efficiency is then: $$ \eta = (1-\alpha)(1-\beta)\,\eta_{11} + (1-\alpha)\beta\,\eta_{12} + \alpha(1-\beta)\,\eta_{21} + \alpha\beta\,\eta_{22} $$ When $P_{DC}$ exceeds the curve's power range ($P_{DC} > P_2 > P_1$), $P_1$ and $P_2$ are set to the two highest data points but $P_{DC}$ itself is used as-is, so the formula extrapolates in the power dimension ($\beta > 1$). ### Sandia Polynomial Model (Version 11+) The Sandia model (King et al., 2007) is particularly suited for inverters with efficiency curves—or equivalent—available. These curves provide efficiency as a function of AC power at three or more DC voltage levels, with measurements at 10%, 20%, 30%, 50%, 75%, and 100% of rated power spanning the full operating range. Based on efficiency curves at three characteristic voltages—minimum $V_{min}$, nominal $V_{nom}$, and maximum $V_{max}$—the model fits a continuous analytical surface rather than interpolating from discrete curve points. The final equation takes the form: $$ P_{AC,inv} = \left[\frac{P_{AC,ref}}{P_{DC,char} - P_{DC,0}} - C(P_{DC,char} - P_{DC,0})\right] (P_{DC} - P_{DC,0}) $$ $$ \quad + C (P_{DC} - P_{DC,0})^2 $$ where: * $P_{AC,ref}$ is the **reference AC power**, derived as the highest AC power data point on the lowest voltage curve. For standard CEC curves this matches the inverter's rated AC power. * $P_{DC,char}$ is the **characteristic DC power** at which AC output equals $P_{AC,ref}$. * $P_{DC,0}$ is the **self-consumption power**: the DC power consumed at zero AC output, representing no-load losses. Below this threshold, the inverter consumes more than it produces. * $C$ is the **curvature coefficient**, capturing non-linear deviation from a simple linear DC-to-AC gain. The equation is designed so that $P_{AC,inv} = P_{AC,ref}$ at $P_{DC} = P_{DC,char}$ and $P_{AC,inv} = 0$ at $P_{DC} = P_{DC,0}$. The non-linear behavior between these anchors is captured as a quadratic dependence on $P_{DC}$ through $C$. $P_{DC,char}$, $P_{DC,0}$, and $C$ are each modeled as linear functions of voltage, fitted from the three efficiency curves. #### Curve selection The model selection and voltage assignment depend on the number of available efficiency curves: * **1 curve**: defaults to the bilinear interpolation model, which in practice reduces to linear interpolation in power. * **2 curves**: defaults to bilinear interpolation. * **3 curves** (standard CEC configuration): $V_{min}$, $V_{nom}$, and $V_{max}$ are unambiguously assigned as the lowest, middle, and highest curve voltages. * **4+ curves**: $V_{min}$ and $V_{max}$ are the lowest and highest curve voltages. $V_{nom}$ is the first curve (in storage order) that is neither $V_{min}$ nor $V_{max}$; additional curves are ignored. #### Parameter extraction The reference AC power $P_{AC,ref}$ is extracted as the highest AC power data point on the $V_{min}$ curve. This single value is used as the rated operating point for all three curves. For each of the three voltage curves ($V_k \in \{V_{min},\, V_{nom},\, V_{max}\}$), the algorithm converts the efficiency data from AC to DC power ($P_{DC,i} = P_{AC,i} / \eta_{V_k}(P_{AC,i})$) and performs a least-squares degree-2 polynomial fit of AC power as a function of DC power, yielding one equation per voltage: $$ P_{AC,V_k} = c_{0,k} + c_{1,k}\, P_{DC} + c_{2,k}\, P_{DC}^2 $$ From each fitted polynomial, extract the characteristic DC power $P_{DC,char,k}$ such that $P_{AC,V_k}(P_{DC,char,k}) = P_{AC,ref}$, and the self-consumption power $P_{DC,0,k}$ such that $P_{AC,V_k}(P_{DC,0,k}) = 0$, by solving the quadratic: $$ P_{DC,char,k} = \frac{-c_{1,k} + \sqrt{c_{1,k}^2 - 4\, c_{2,k}\, (c_{0,k} - P_{AC,ref})}}{2\, c_{2,k}} $$ $$ P_{DC,0,k} = \frac{-c_{1,k} + \sqrt{c_{1,k}^2 - 4\, c_{2,k}\, c_{0,k}}}{2\, c_{2,k}} $$ This yields three values of each parameter ($P_{DC,char,k}$, $P_{DC,0,k}$, $c_{2,k}$)—one per voltage level. Each is then linearly fit (least-squares) as a function of voltage, producing the voltage-dependent parameters at the operating voltage $V_{DC}$: $$ P_{DC,char} = a_{char} + b_{char} \, V_{DC} $$ $$ P_{DC,0} = a_0 + b_0 \, V_{DC} $$ $$ C = a_C + b_C \, V_{DC} $$ where $a$ and $b$ are the intercept and slope of each linear fit. #### AC power and efficiency The estimated AC output power is: $$ P_{AC,inv} = \left[\frac{P_{AC,ref}}{P_{DC,char} - P_{DC,0}} - C(P_{DC,char} - P_{DC,0})\right] (P_{DC} - P_{DC,0}) $$ $$ \quad + C (P_{DC} - P_{DC,0})^2 $$ The term $(P_{DC} - P_{DC,0})$ represents the useful DC power after subtracting self-consumption. The bracketed factor is the linear gain—calibrated so that $P_{AC,inv} = P_{AC,ref}$ when $P_{DC} = P_{DC,char}$. The quadratic term $C(P_{DC} - P_{DC,0})^2$ captures efficiency variation with load. The efficiency is: $$ \eta = \frac{P_{AC,inv}}{P_{DC}} $$ If $P_{DC} = 0$, then $\eta = 0$. In Version 12 and later, $\eta$ is constrained to be non-negative. Because the model involves two successive fitting steps—a quadratic fit per voltage curve followed by a linear fit across voltages—the resulting efficiency will slightly differ from the reported efficiency at the original curve data points. However, this double-fitting procedure produces a physically realistic surface that is continuously differentiable across the full voltage–power domain, whereas the bilinear interpolation model yields a faceted surface with non-smooth transitions at segment boundaries. *** ## References * King, D. L., Gonzalez, S., Galbraith, G. M., & Boyson, W. E. (2007). *Performance model for grid-connected photovoltaic inverters.* SAND2007-5036, Sandia National Laboratories. DOI: [10.2172/920449](https://doi.org/10.2172/920449) * California Energy Commission. *Inverter test protocol.* CEC-CSI, Version 2.2. # Inverter Operating Regions Source: https://docs.plantpredict.com/models/inverter-models/inverter_operating_regions ## Summary Inverter Operating Regions classify the operational state of the based on DC voltage and power relative to inverter specifications, and adjust the operating voltage and power accordingly. PlantPredict divides the voltage-power plane into 12 regions using three voltage thresholds ($V_{MPP,min}$, $V_{MPP,max}$, $V_{max}$) and two power thresholds ($P_{min}$, $P_{max}$). Region 6 represents normal MPPT operation. Other regions trigger specific control actions: voltage adjustment (regions 5, 7, 9, 11), (region 10), or shutdown (regions 1-4, 8, 12). ## Inputs | Name | Symbol | Units | Description | | ----------------------------------- | ---------------- | ----- | ----------------------------------------------------------------------------------- | | **DC Operating Voltage** | $V_{DC}$ | V | DC operating voltage from [DC field aggregation](dc_field_aggregation) | | **DC Operating Power** | $P_{DC}$ | W | DC operating power from [DC field aggregation](dc_field_aggregation) | | **Degraded DC Power** | $P_{DC,deg}$ | W | DC operating power after [degradation](degradation_dc_applied) | | **DC Degradation Loss** | $L_{deg}$ | W | DC power loss due to [degradation](degradation_dc_applied) | | **Minimum MPP Voltage** | $V_{MPP,min}$ | V | Inverter lower MPP tracking voltage limit | | **Maximum MPP Voltage** | $V_{MPP,max}$ | V | Inverter upper MPP tracking voltage limit | | **Maximum Absolute Voltage** | $V_{max}$ | V | Inverter absolute voltage limit | | **Minimum DC Power** | $P_{min}$ | W | Inverter low-power cutoff threshold | | **Temperature-Corrected Max Power** | $P_{AC,derated}$ | W | Inverter AC power limit after [temperature derating](inverter_temperature_derating) | | **MPP Voltage Adjustment** | $\Delta V_{MPP}$ | % | User-defined time-series adjustment factor for voltage | | **MPP Current Adjustment** | $\Delta I_{MPP}$ | % | User-defined time-series adjustment factor for current | | **DC Open-Circuit Voltage** | $V_{DC,oc}$ | V | Aggregated open-circuit voltage from [DC field aggregation](dc_field_aggregation) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------ | -------- | ----- | --------------------------------------------------------------- | | **DC Operating Voltage** | $V_{DC}$ | V | DC operating voltage after region-based adjustment (reassigned) | | **DC Operating Power** | $P_{DC}$ | W | DC operating power after region-based adjustment (reassigned) | *** ## Detailed Description This model receives $V_{DC}$ and $P_{DC,deg}$ from upstream ([DC field aggregation](dc_field_aggregation) and [degradation](degradation_dc_applied)). When the operating region requires an adjustment (voltage shift, clipping, or shutdown), $V_{DC}$ and $P_{DC}$ are reassigned in place using the $\leftarrow$ notation. In normal MPPT operation (region 6), $V_{DC}$ is unchanged and $P_{DC} \leftarrow P_{DC,deg}$. ### Voltage and Power Thresholds The three voltage thresholds ($V_{MPP,min}$, $V_{MPP,max}$, $V_{max}$) and the low-power threshold ($P_{min}$) are taken directly from the inverter specifications. The upper power threshold $P_{max}$ is the DC equivalent of the derated AC power limit, where $\eta$ is the [inverter DC-to-AC conversion efficiency](inverter_efficiency) evaluated at the operating voltage $V_{DC}$ and the derated AC power $P_{AC,derated}$: $$ P_{max} = \frac{P_{AC,derated}}{\eta(V_{DC},\, P_{AC,derated})} $$ This is a preliminary evaluation of the efficiency model at a known operating point; the [Inverter Efficiency](inverter_efficiency) model runs again after operating-region adjustments to produce the final $\eta$ and $P_{AC,inv}$. ### Threshold Adjustment via Time Series When user-defined $V_{MPP}$ and $I_{MPP}$ time-series adjustments are provided, the voltage and power thresholds are reassigned at each timestep to account for expected deviations from nameplate conditions: $$ V_{MPP,min} \leftarrow \frac{V_{MPP,min}}{1 + \Delta V_{MPP}} $$ $$ V_{MPP,max} \leftarrow \frac{V_{MPP,max}}{1 + \Delta V_{MPP}} $$ $$ V_{max} \leftarrow \frac{V_{max}}{1 + \Delta V_{MPP}} $$ $$ P_{min} \leftarrow \frac{P_{min}}{(1 + \Delta I_{MPP})(1 + \Delta V_{MPP})} $$ $$ P_{max} \leftarrow \frac{P_{max}}{(1 + \Delta I_{MPP})(1 + \Delta V_{MPP})} $$ If no time-series adjustments are defined, $\Delta V_{MPP} = 0$ and $\Delta I_{MPP} = 0$, and the thresholds remain at their base values. ### Region Definitions Inverter Operating Window Given the operating point $(V, P) = (V_{DC}, P_{DC,deg})$, the operating region is determined by the following rules: **Region 1:** $P \leq P_{min}$ and $V \leq V_{MPP,min}$ (Under-voltage, under-power) **Region 2:** $P \leq P_{min}$ and $V_{MPP,min} \leq V \leq V_{MPP,max}$ (Under-power, normal voltage) **Region 3:** $P \leq P_{min}$ and $V_{MPP,max} \leq V \leq V_{max}$ (Under-power, over-voltage) **Region 4:** $P \leq P_{min}$ and $V \geq V_{max}$ (Under-power, severe over-voltage) **Region 5:** $P_{min} \leq P \leq P_{max}$ and $V \leq V_{MPP,min}$ (Under-voltage) **Region 6:** $P_{min} \leq P \leq P_{max}$ and $V_{MPP,min} \leq V \leq V_{MPP,max}$ (**Normal MPPT operation**) **Region 7:** $P_{min} \leq P \leq P_{max}$ and $V_{MPP,max} \leq V \leq V_{max}$ (Over-voltage) **Region 8:** $P_{min} \leq P \leq P_{max}$ and $V \geq V_{max}$ (Severe over-voltage) **Region 9:** $P \geq P_{max}$ and $V \leq V_{MPP,min}$ (Clipping, under-voltage) **Region 10:** $P \geq P_{max}$ and $V_{MPP,min} \leq V \leq V_{MPP,max}$ (Clipping, normal voltage) **Region 11:** $P \geq P_{max}$ and $V_{MPP,max} \leq V \leq V_{max}$ (Clipping, over-voltage) **Region 12:** $P \geq P_{max}$ and $V \geq V_{max}$ (Clipping, severe over-voltage) All boundaries use inclusive comparisons ($\leq$, $\geq$), so a point lying exactly on a threshold can satisfy multiple region conditions simultaneously. See [Boundary Overlap and Tie-Breaking](#boundary-overlap-and-tie-breaking) for how ambiguities are resolved. ### Boundary Overlap and Tie-Breaking Because region boundaries are inclusive, an operating point that falls exactly on a threshold can match two or four regions at once. PlantPredict resolves these overlaps as follows: 1. **Single match** — use that region. 2. **Two matches** (edge of the grid, on one threshold): * If region 6 is among the matches, assign region 6. * If both regions are below 7, the higher-number region is selected (favoring the active-power region over shutdown, if applicable). * If the pair is (9, 10): assign region 10 (clipping). * Otherwise, the lower-number region is selected. 3. **Four matches** (corner of the grid, where two thresholds intersect): * If region 6 is among the matches, assign region 6. * Otherwise, use the lowest-number match. The net effect is that boundary points are resolved in favor of normal MPPT operation when possible, and otherwise in favor of the less disruptive control action. ### Control Actions by Region **Regions 1, 2, 3:** Set voltage to $V_{DC,oc}$ (shutdown) **Regions 4, 8, 12:** Set voltage to 0 (safety shutdown) **Regions 5, 9:** Increase voltage to $V_{MPP,min}$ (or $V_{DC,oc}$ if $V_{oc} < V_{MPP,min}$), recalculate region **Region 6: Normal operation (MPPT tracking)** **Regions 7, 11:** Decrease voltage to $V_{MPP,max}$, recalculate region **Region 10:** Clipping algorithm—Find voltage where $P = P_{max}$ For voltage adjustment regions (5, 7, 9, 11) and clipping (region 10), the inverter is set to a new operating voltage. The power at that voltage is recalculated from the associated with each connected DC field, and the region is re-evaluated at the new operating point. Shutdown regions (1–4, 8, 12) set the voltage directly without recalculation. In region 6 (normal MPPT), no adjustment is made: $V_{DC}$ is unchanged and $P_{DC} \leftarrow P_{DC,deg}$. The initial and final operating region integers are both reported in the inverter nodal data. When nighttime disconnect is enabled, the operating region is also used to determine whether the array's transformers should be disconnected from the grid. Disconnect is triggered when any inverter in the array enters a shutdown region (regions 1–4), region 5 with zero power, or region 6 with GHI \< 5 W/m². See [Transformer Loss Model](../ac-losses/transformer_loss_model) for downstream effects. ### Clipping Algorithm (Region 10) When the operating point falls in Region 10 (over-power), the inverter cannot operate at the because doing so would exceed its AC power capacity. The algorithm must find a new voltage $V_{clip}$ on the P-V curve where the DC power is within the inverter's limits, as close to $P_{max}$ as possible. Starting from $V_{DC,oc}$, the algorithm sweeps downward along the P-V curve, recalculating total DC power from all connected DC fields at each candidate voltage using their respective single-diode models. The selected $V_{clip}$ is the voltage at or below $V_{MPP,max}$ with power closest to $P_{max}$. In V6 and earlier, $V_{clip}$ is accepted as is. In V7 and later, $P_{max}$ is recalculated at the clipped operating point (since $\eta$ depends on both voltage and power) and the region is re-evaluated: * **Region 6**: the clipped point is within normal MPPT limits—clipping is successful. * **Region 10, but within 0.1% of the recalculated $P_{max}$**: the operating point is accepted and the region is reassigned to region 6—clipping is successful. * **Otherwise**: no valid clipping point can be found, the inverter shuts down (Region 1, $V_{DC,oc}$ shutdown). ### Loss Tree Reporting The loss tree reports an "Off-MPP Power Loss" at the inverter level. This loss captures the combined effect of all inverter-level DC power adjustments after degradation—including clipping, voltage adjustment, and shutdown: $$ L_{off-MPP} = P_{DC,deg} - P_{DC} $$ In normal MPPT operation (region 6), $P_{DC} \leftarrow P_{DC,deg}$ and the off-MPP loss is zero. The loss becomes nonzero when the inverter operating region forces the system away from the aggregated maximum power point—most commonly during clipping (region 10), where excess DC power is curtailed to the inverter's rated capacity. Note that $L_{deg}$ is not recalculated at the adjusted operating point. During clipping, the output power matches $P_{max}$ regardless, so the total power is correct—but since degradation loss is proportional to power and the clipped power is lower, $L_{deg}$ is slightly overestimated and $L_{off-MPP}$ is slightly underestimated by the same amount. During voltage adjustment (regions 5, 7, 9, 11), the pre-degradation power decreases but $L_{deg}$ remains unchanged, leading to a slight overestimation of losses and underestimation of output power. # Inverter Temperature Derating Source: https://docs.plantpredict.com/models/inverter-models/inverter_temperature_derating ## Summary The maximum AC power $P_{AC,derated}$ sets the upper bound for the operating region logic, determining the threshold. The AC power setpoint $P_{AC,set}$ is defined in the inverter configuration from the nameplate rating and the design derate factor. Alternatively, the setpoint or the derate factor can be set per timestep using a user-uploaded time series. When manufacturer derate curves are provided, the setpoint may be further reduced depending on ambient temperature and site elevation. ## Inputs | Name | Symbol | Units | Description | | --------------------------- | ------------------------ | ------- | ------------------------------------------------------- | | **Rated AC Power** | $P_{AC,rated}$ | kVA | Inverter nameplate AC power rating | | **Design Derate** | $d$ | — | Fractional multiplier on rated power (0 to 1) | | **AC Power Setpoint** | $P_{AC,set}$ | kVA | Effective AC power limit | | **Altitude** | $h$ | m | Elevation above sea level | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature | | **Inverter Derate Curves** | $P_{AC,derate,h_k}(T_j)$ | °C, kVA | Temperature-power data points at rated elevations $h_k$ | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------------------- | ---------------- | ----- | ------------------------- | | **Temperature-Corrected Max Power** | $P_{AC,derated}$ | W | Derated AC power capacity | *** ## Detailed Description ### Setpoint Determination The AC power setpoint is the baseline upper bound on inverter output. It is derived from the inverter nameplate rating and the user-configured design derate: $$ P_{AC,set} = d \times P_{AC,rated} $$ A design derate of $d = 1.0$ uses the full nameplate; lower values curtail the inverter (e.g., $d = 0.95$ limits output to 95% of rated capacity). The user can set either the design derate $d$ or the absolute setpoint $P_{AC,set}$; the other value is adjusted automatically to satisfy the equation above. Both values can also be overridden on a per-timestep basis by uploading a time series. A setpoint time series provides $P_{AC,set}$ directly in kVA, while a derate time series provides $d$ as a ratio (0 to 1). If both are configured, the setpoint time series takes priority. ### Curve Selection by Elevation Example Inverter Temperature / Elevation Derate Curve Inverter manufacturers may provide multiple derate curves at different elevation ratings $h_1 < h_2 < \cdots < h_K$. If these curves are available, PlantPredict selects the curve whose elevation is the smallest value still strictly above the site altitude: $$ h^* = \min \{ h_k : h_k > h \} $$ If the site altitude exceeds all available curve elevations ($h > h_K$), the highest curve is used: $$ h^* = h_K $$ ### Temperature Interpolation Once the curve $P_{AC,derate,h^*}$ is selected, the ambient temperature $T_a$ is linearly interpolated against its data points to obtain $P_{AC,derate,h^*}(T_a)$. If $T_a$ falls outside the curve's temperature range, the inverter is derated to zero ($P_{AC,derated} = 0$). ### Final Output The final AC power limit is the lesser of the setpoint and the temperature-derated capacity: $$ P_{AC,derated} = \min\bigl(P_{AC,set},\, P_{AC,derate,h^*}(T_a)\bigr) $$ The prediction engine converts $P_{AC,derated}$ from kVA to W ($\times\,1000$) before passing it to the [inverter operating region](/models/inverter-models/inverter_operating_regions) logic. When derate curves are not enabled, the temperature derating step is skipped and $P_{AC,derated} = P_{AC,set}$. # DC Aggregation and DC-AC Conversion Overview Source: https://docs.plantpredict.com/models/inverter-models/overview This stage covers the aggregation of multiple DC fields to a common operating point, DC-applied degradation, and the conversion of DC power into AC power at the terminals. It accounts for inverter operating constraints, temperature derating, and conversion efficiency losses. ## Models in This Section ### [DC Field Aggregation](dc_field_aggregation) Calculates the combined DC input when multiple DC fields with different characteristics connect in parallel to a common inverter. Uses weighted voltage averaging to determine the shared operating voltage, then recalculates each field's current contribution at that voltage. The resulting power may be less than the sum of individual maximum powers due to mismatch between fields. ### [Degradation Losses (DC Applied)](degradation_dc_applied) Applies time-dependent degradation to the aggregated DC power before inverter operating region determination. Supports constant-rate (Linear DC), variable per-year (Non-Linear DC), and supplemental mechanisms. Because degradation is applied before the inverter determines its operating point, it directly affects behavior. ### [Inverter Temperature Derating](inverter_temperature_derating) Reduces inverter AC capacity based on ambient temperature and site elevation using manufacturer kVA curves. The derated capacity establishes the maximum AC power output for subsequent calculations. ### [Inverter Operating Regions](inverter_operating_regions) Classifies inverter state into 12 regions based on DC voltage and power relative to specifications. Determines whether the inverter performs tracking, clipping, voltage adjustment, or shutdown. ### [Inverter Efficiency](inverter_efficiency) Calculates conversion efficiency from manufacturer-supplied curves: * **Legacy Model (V3-10)**: Bilinear interpolation with DC power input * **Sandia Model (V11+)**: Polynomial curve fitting with AC power output ## Calculation Sequence 1. **DC Field Aggregation**: Combine DC power from multiple fields at common operating voltage 2. **Degradation (DC Applied)**: Apply time-dependent degradation to aggregated DC power 3. **Temperature Derating**: Determine temperature-corrected maximum AC power capacity 4. **Operating Region**: Classify inverter state based on DC voltage, power, and temperature-corrected AC power capacity 5. **MPPT/Clipping/Voltage Adjustment/Shutdown**: Track maximum power point, limit output to rated capacity, adjust voltage to MPPT window, or shut down 6. **Efficiency**: Calculate DC-to-AC conversion efficiency from curves 7. **AC Output**: Apply efficiency to determine final AC power # Incidence Angle Modifier (IAM) Source: https://docs.plantpredict.com/models/poa-irradiance/iam ## Summary The Incidence Angle Modifier (IAM) quantifies optical losses when sunlight strikes a module at non-normal angles. PlantPredict implements five IAM models: None, ASHRAE, Sandia, Physical, and Custom Interpolation. IAM is applied separately to beam, sky diffuse, and ground-reflected irradiance components after losses and before corrections. ## Inputs | Name | Symbol | Units | Description | | ----------------------------- | ---------------------- | -------------------- | --------------------------------------------------------------------- | | **Angle of Incidence** | $\theta_{AOI}$ | degrees | Angle between sun and module normal | | **Module Tilt Angle** | $\beta_m$ | degrees | Tilt angle of module from horizontal | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Azimuth angle of module surface normal, measured clockwise from North | | **ASHRAE IAM Parameter** | $b_0$ | — | Empirical coefficient for ASHRAE model | | **Sandia Polynomial Factors** | $[b_0, b_1, ..., b_5]$ | degree⁻ⁱ (i = 0...5) | Polynomial coefficients for Sandia model | | **Refractive Index** | $n$ | — | Glass refractive index (Physical model, default: 1.526) | | **ARC Refractive Index** | $n_{ARC}$ | — | Anti-reflective coating refractive index (Physical model, optional) | | **Absorption Coefficient** | $\alpha_{abs}$ | m⁻¹ | Glass absorption coefficient (Physical model, default: 4.0) | | **Glass Thickness** | $L_{glass}$ | m | Glass thickness (Physical model, default: 0.002) | | **IAM Factor Pairs** | $\{(\theta_i, f_i)\}$ | degrees, — | User-defined table (Custom Interpolation model) | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------------- | ----------- | ----- | ------------------------------------------------ | | **Beam IAM Factor** | $U_{IAM,B}$ | — | IAM factor for beam irradiance (0-1) | | **Sky Diffuse IAM Factor** | $U_{IAM,D}$ | — | IAM factor for sky diffuse irradiance (0-1) | | **Ground Diffuse IAM Factor** | $U_{IAM,G}$ | — | IAM factor for ground-reflected irradiance (0-1) | *** ## Detailed Description The user selects a single IAM model (None, ASHRAE, Sandia, Physical, or Custom Interpolation), which is applied directly to beam irradiance. Sky diffuse and ground diffuse IAM require integrating IAM over a hemisphere of incidence angles. Depending on the selected model and software version, the hemisphere integration uses either the selected beam IAM curve or defaults to integrating using the ASHRAE model: | Selected Model | Beam IAM | Sky Diffuse IAM | Ground Diffuse IAM | | -------------- | ----------------- | --------------------------------------- | --------------------------------------- | | None | 1 | 1 | 1 | | ASHRAE | ASHRAE | Hemisphere averaging (ASHRAE model) | 1 | | Sandia | Sandia polynomial | Hemisphere integration (ASHRAE model) | 1 | | Physical | Physical | Hemisphere integration (Physical model) | Hemisphere integration (Physical model) | | Custom (V08-) | Cubic spline | Hemisphere integration (ASHRAE model) | 1 | | Custom (V09+) | Cubic spline | Hemisphere integration (Custom curve) | Hemisphere integration (Custom curve) | ### Beam IAM Models Beam IAM ($U_{IAM,B}$) is calculated based on the using one of five models. #### None No angle-dependent losses: $$ U_{IAM,B} = 1 $$ #### ASHRAE The ASHRAE model, originally derived by Souka and Safwat (1966) and later adopted by ASHRAE, uses a single empirical parameter $b_0$: $$ U_{IAM,B} = 1 - b_0 \left( \frac{1}{\cos(\theta_{AOI})} - 1 \right) $$ where $\theta_{AOI}$ is the angle of incidence. For $\theta_{AOI} > 87°$, $U_{IAM,B} = 0$. #### Sandia The Sandia model, developed by King et al. at Sandia National Laboratories, uses a 5th-order polynomial: $$ U_{IAM,B} = \begin{cases} 1, & \theta_{AOI} < 34° \\ \sum_{i=0}^{5} b_i \theta_{AOI}^i, & \theta_{AOI} \geq 34° \end{cases} $$ where $\theta_{AOI}$ is in degrees and $[b_0, b_1, b_2, b_3, b_4, b_5]$ are polynomial factors empirically determined from experimental data. #### Physical The Physical model (Version 11+), developed by De Soto et al. based on optical equations from Duffie and Beckman, calculates IAM from first-principles optics: $$ U_{IAM,B} = \frac{1-R(\theta_{AOI})}{1-R(0)} \cdot e^{-\alpha_{abs} L_{glass} \left(\frac{1}{\cos(\theta_{glass})} - 1\right)} $$ where $R(\theta_{AOI})$ is the total Fresnel reflectance across interfaces, $\theta_{glass}$ is the refraction angle in glass, $\alpha_{abs}$ is the glass , and $L_{glass}$ is the glass thickness. **Refraction angles ([Snell's law](https://en.wikipedia.org/wiki/Snell%27s_law)):** $$ \theta_{glass} = \arcsin\left(\frac{\sin(\theta_{AOI})}{n}\right), \quad \theta_{ARC} = \arcsin\left(\frac{\sin(\theta_{AOI})}{n_{ARC}}\right) $$ **Total Fresnel reflectance:** With (air → ARC → glass), accounting for multiple internal reflections: $$ R(\theta_{AOI}) = 1 - \frac{(1-\rho_{air\text{-}ARC})(1-\rho_{ARC\text{-}glass})}{1 - \rho_{air\text{-}ARC}\rho_{ARC\text{-}glass}} $$ where $\rho_{air\text{-}ARC}$ is the air-ARC reflectance (at angles $\theta_{AOI}$ and $\theta_{ARC}$) and $\rho_{ARC\text{-}glass}$ is the ARC-glass reflectance (at angles $\theta_{ARC}$ and $\theta_{glass}$). **Interface reflectance ([Fresnel equations](https://en.wikipedia.org/wiki/Fresnel_equations), averaged over polarizations):** $$ \rho_{air\text{-}ARC} = \frac{1}{2}\left[\left(\frac{\cos(\theta_{AOI}) - n_{ARC}\cos(\theta_{ARC})}{\cos(\theta_{AOI}) + n_{ARC}\cos(\theta_{ARC})}\right)^2 + \left(\frac{\cos(\theta_{ARC}) - n_{ARC}\cos(\theta_{AOI})}{\cos(\theta_{ARC}) + n_{ARC}\cos(\theta_{AOI})}\right)^2\right] $$ $$ \rho_{ARC\text{-}glass} = \frac{1}{2}\left[\left(\frac{n_{ARC}\cos(\theta_{ARC}) - n\cos(\theta_{glass})}{n_{ARC}\cos(\theta_{ARC}) + n\cos(\theta_{glass})}\right)^2 + \left(\frac{n_{ARC}\cos(\theta_{glass}) - n\cos(\theta_{ARC})}{n_{ARC}\cos(\theta_{glass}) + n\cos(\theta_{ARC})}\right)^2\right] $$ **Special case (no anti-reflective coating):** Without anti-reflective coating, there is a single air-glass interface: $$ R(\theta_{AOI}) = \rho_{air\text{-}glass}(\theta_{AOI}) $$ $$ \rho_{air\text{-}glass} = \frac{1}{2}\left[\left(\frac{\cos(\theta_{AOI}) - n\cos(\theta_{glass})}{\cos(\theta_{AOI}) + n\cos(\theta_{glass})}\right)^2 + \left(\frac{\cos(\theta_{glass}) - n\cos(\theta_{AOI})}{\cos(\theta_{glass}) + n\cos(\theta_{AOI})}\right)^2\right] $$ #### Custom Interpolation Users provide a table of IAM factor pairs $\{(\theta_i, f_i)\}$ measured or calculated at discrete incidence angles. These values typically come from module flash test reports or third-party optical modeling software. For angles between the tabulated values, PlantPredict uses [cubic spline interpolation](https://en.wikipedia.org/wiki/Spline_interpolation). A cubic spline fits smooth polynomial curves between data points, ensuring continuity in both the function and its first derivative—avoiding the sharp corners that linear interpolation would produce. $U_{IAM,B}$ is capped at 1 to prevent non-physical values from spline oscillation. For $\theta_{AOI} \geq 90°$, $U_{IAM,B} = 0$. *** ### Sky Diffuse IAM Sky diffuse IAM ($U_{IAM,D}$) accounts for IAM effects on diffuse irradiance arriving from the sky hemisphere. The calculation assumes an sky; radiance distributions (, ) are handled by the model. For the None model, $U_{IAM,D} = 1$ since $U_{IAM,B} = 1$ at all angles. When ASHRAE is selected, a hemisphere average (arithmetic mean) is used. For Sandia and Custom (V08-), a projection-weighted hemisphere integration is computed analytically using the ASHRAE model. For Physical and Custom (V09+), this projection-weighted hemisphere integration is evaluated numerically with the actual IAM curve. #### Hemisphere Averaging (ASHRAE) When ASHRAE is selected as the IAM model, the sky diffuse IAM is approximated by averaging beam IAM values across the visible sky hemisphere (arithmetic mean with 1° × 1° steps): $$ U_{IAM,D} = \frac{1}{N_{front}} \sum_{\gamma} \sum_{\phi} \left(1 - b_0\left(\frac{1}{\cos\theta_i(\phi, \gamma)} - 1\right)\right) \quad \text{for } \theta_i < 90° $$ where $\phi$ is the polar angle (from zenith) and $\gamma$ is the azimuth angle defining the direction of a 1° × 1° element of the sky hemisphere. $N_{front}$ is the count of sky directions where $\theta_i(\phi, \gamma) < 90°$ (in front of the module plane). This is an unweighted average over discrete sky directions. The incidence angle $\theta_i(\phi, \gamma)$ for each sky direction on a tilted surface is: $$ \cos\theta_i(\phi, \gamma) = \sin(\phi)\sin(\beta_m)\cos(\gamma - \gamma_m) + \cos(\phi)\cos(\beta_m) $$ where $\beta_m$ is the module tilt and $\gamma_m$ is the module azimuth. #### Hemisphere Integration (Sandia, Physical, Custom) For Sandia, Physical, and Custom IAM models, the sky diffuse IAM is calculated by integrating beam IAM over the sky hemisphere, weighted by the projection onto the tilted surface: $$ U_{IAM,D} = \frac{\int_{\text{sky}} U_{IAM,B}(\theta_i) \cos(\theta_i) \, d\Omega}{\int_{\text{sky}} \cos(\theta_i) \, d\Omega} $$ The incidence angle $\theta_i$ for a sky element at polar angle $\phi$ and azimuth $\gamma$ on a surface tilted at $\beta_m$ with azimuth $\gamma_m$ is: $$ \cos(\theta_i) = \sin(\phi)\sin(\beta_m)\cos(\gamma - \gamma_m) + \cos(\phi)\cos(\beta_m) $$ The integration is limited to the portion of the sky **visible from the module front surface** — directions where $\cos(\theta_i) > 0$. Sky directions behind the module plane (where $\cos(\theta_i) \leq 0$) are excluded from both numerator and denominator. **Implementation by model:** **Sandia and Custom (V08-):** Use the ASHRAE model for diffuse IAM, which allows a closed-form analytical solution: $$ U_{IAM,D} = 1 - b_0 \cdot \frac{3 - \cos\beta_m - \frac{4\beta_m}{\pi}}{1 + \cos\beta_m} $$ **Physical and Custom (V09+):** For arbitrary IAM curves, the integral is evaluated numerically as described by Marion: the IAM is interpolated at discrete angles and integrated over the hemisphere. *** ### Ground Diffuse IAM Ground-reflected irradiance IAM is handled differently from beam and sky diffuse because IAM effects on ground-reflected irradiance are already incorporated in the [ground shading model](/models/shading/ground_reflected_shading). The ground shading algorithm calculates s from the ground to the tilted module surface, and applies the ASHRAE IAM model during this integration. This accounts for angle-dependent losses as light reflects from the ground and strikes the module at various angles. For most IAM models, $U_{IAM,G} = 1$ to avoid double-counting. For Physical and Custom (V09+) models, $U_{IAM,G}$ is calculated via hemisphere integration over the ground-facing hemisphere. The integration uses the same projection-weighted approach as sky diffuse IAM, but integrates over the subtended by the ground as seen from the module surface: $$ U_{IAM,G} = \frac{\int_{\text{ground}} U_{IAM,B}(\theta_i) \cos(\theta_i) \, d\Omega}{\int_{\text{ground}} \cos(\theta_i) \, d\Omega} $$ where the integration domain covers directions below the module's horizon (i.e., the hemisphere facing the ground). This may result in some double-counting with the ground shading model's built-in IAM treatment. *** ### Application to Irradiance IAM factors are applied to irradiance components after soiling: $$ G_{beam,IAM} = G_{beam,soiled} \times U_{IAM,B} $$ $$ G_{sky,IAM} = G_{sky,soiled} \times U_{IAM,D} $$ $$ G_{ground,IAM} = G_{ground,soiled} \times U_{IAM,G} $$ *** ## References * Souka, A. F., & Safwat, H. H. (1966). Determination of the optimum orientations for the double exposure flat-plate collector and its reflections. *Solar Energy*, 10(4), 170–174. DOI: [10.1016/0038-092X(66)90004-1](https://doi.org/10.1016/0038-092X\(66\)90004-1) * ASHRAE Standard 93-77. (1977). *Methods of Testing to Determine the Thermal Performance of Solar Collectors.* American Society of Heating, Refrigerating and Air-Conditioning Engineers. * King, D. L., Boyson, W. E., & Kratochvil, J. A. (2004). *Photovoltaic array performance model.* SAND2004-3535, Sandia National Laboratories. DOI: [10.2172/919131](https://doi.org/10.2172/919131) * Duffie, J. A., & Beckman, W. A. (2013). *Solar Engineering of Thermal Processes* (4th ed., Chapter 5). John Wiley & Sons. DOI: [10.1002/9781118671603](https://doi.org/10.1002/9781118671603) * De Soto, W. (2004). *Improvement and Validation of a Model for Photovoltaic Array Performance.* Master's thesis, University of Wisconsin-Madison. * Marion, B. (2017). *Numerical method for angle-of-incidence correction factors for diffuse radiation incident photovoltaic modules.* Solar Energy, 147, 344–348. DOI: [10.1016/j.solener.2017.03.027](https://doi.org/10.1016/j.solener.2017.03.027) # Plane-of-Array Irradiance Overview Source: https://docs.plantpredict.com/models/poa-irradiance/overview irradiance is the total irradiance incident on the tilted module surface. It is calculated by combining transposed irradiance components (beam, sky diffuse, ground-reflected) with shading factors, losses, incidence angle modifiers, and spectral corrections. For modules, rear-side irradiance is calculated separately and combined with front-side irradiance. ## Models in This Section ### [Soiling](soiling) Accounts for dust, dirt, and other debris accumulation on the module surface that reduces light transmission. PlantPredict supports monthly soiling values and integration with PVRADAR soiling data. ### [Incidence Angle Modifier (IAM)](iam) Optical losses that increase as light strikes the module surface at oblique angles. Separate factors are applied to beam, sky diffuse, and ground-reflected components. PlantPredict supports ASHRAE, physical, and Sandia IAM models. ### [Spectral Correction](spectral_correction) Adjusts for between the actual solar spectrum and the reference spectrum used for module characterization. Different module technologies (c-Si, CdTe, CIGS, etc.) have different spectral responses, making some more sensitive to spectral shifts than others. The correction accounts for atmospheric conditions (, aerosols, ) that shift the solar spectrum throughout the day and year. ### [Rear Irradiance](rear_irradiance) Calculates rear-side irradiance for bifacial modules based on ground-reflected light, sky diffuse, and direct beam and circumsolar (when the sun is behind the module) reaching the rear surface. The effective POA irradiance combines front and rear contributions weighted by the module's . ## Calculation Sequence POA irradiance is calculated through a series of transformations: 1. **[Transposition](/models/transposition/overview)**: Convert horizontal irradiance (, , ) to tilted plane components using Hay-Davies or Perez model 2. **[Horizon Shading](/models/shading/horizon_shading)**: Apply far-field shading to beam component 3. **[Geometric Shading](/models/shading/overview)**: Apply near-field shading factors to [beam](/models/shading/3d_shading_site_level), [sky diffuse](/models/shading/sky_diffuse_shading), and [ground-reflected](/models/shading/ground_reflected_shading) components 4. **[Soiling](/models/poa-irradiance/soiling)**: Apply soiling factor to all components 5. **[Incidence Angle Modifier](/models/poa-irradiance/iam)**: Apply angle-dependent optical losses 6. **[Spectral Correction](/models/poa-irradiance/spectral_correction)**: Apply spectral mismatch adjustment 7. **[Rear Irradiance](/models/poa-irradiance/rear_irradiance)** (if applicable): Calculate rear-side irradiance and combine with front-side ## Front POA Irradiance Components The **front-side POA irradiance** $G_{POA,front}$ is the sum of transposed beam, sky diffuse, and ground-reflected components before any module-level optical corrections (shading, soiling, IAM, spectral): $$ G_{POA,front} = G_{beam} + G_{sky} + G_{ground} $$ The **front-side effective POA irradiance** $G_{POA,front,eff}$ is the total after all optical corrections: $$ G_{POA,front,eff} = G_{beam,eff} + G_{sky,eff} + G_{ground,eff} $$ **Beam component:** $$ G_{beam,eff} = G_{beam} \times U_{horizon} \times U_{shd,B,elec} \times U_{soil} \times U_{IAM,B} \times U_{spectr} $$ **Sky diffuse component:** $$ G_{sky,eff} = G_{sky} \times U_{shd,D} \times U_{soil} \times U_{IAM,D} \times U_{spectr} $$ **Ground-reflected component:** $$ G_{ground,eff} = G_{ground} \times U_{shd,G} \times U_{soil} \times U_{IAM,G} \times U_{spectr} $$ where: * $G_{beam}, G_{sky}, G_{ground}$ are transposed irradiance components * $U_{horizon}$ is the horizon shading factor (beam only) * $U_{shd,B,elec}, U_{shd,D}, U_{shd,G}$ are shading factors (beam includes [electrical shading effect](/models/shading/electrical_shading_effect)) * $U_{soil}$ is the soiling factor * $U_{IAM,B}, U_{IAM,D}, U_{IAM,G}$ are incidence angle modifier factors * $U_{spectr}$ is the spectral correction factor ## Effective POA Irradiance For bifacial modules, the effective POA irradiance combines front and rear contributions: $$ G_{POA,tot,eff} = G_{POA,front,eff} + G_{POA,rear,eff} $$ where $G_{POA,rear,eff}$ includes bifaciality weighting, structure shading, and mismatch losses (see [Rear Irradiance](/models/poa-irradiance/rear_irradiance)). For monofacial modules: $G_{POA,tot,eff} = G_{POA,front,eff}$ # Rear Irradiance Source: https://docs.plantpredict.com/models/poa-irradiance/rear_irradiance ## Summary PlantPredict calculates rear-side irradiance for PV modules using a 2D model based on Marion et al. (2017). The model assumes infinite row length, an infinite number of identical rows, and flat terrain. It discretizes the ground between rows into 100 intervals and calculates sky view factors and ground shading for each interval. Module irradiance is then computed at six evenly spaced positions across the module height by integrating contributions from sky diffuse, , ground-reflected, module-reflected, and direct beam + components over a 180° field of view. Rear-side irradiance is combined with front-side irradiance weighted by the to calculate effective . In prediction logic Version 10 and later, an optional SunSolve-calibrated mode accepts structure shading, transmission gain, and mismatch factors derived from SunSolve ray-tracing simulations. Light-transmission effects that the view-factor model imperfectly captures—from gaps between modules in a bay, gaps between bays, and transmission through semi-transparent module components—are computed in SunSolve and combined into a single transmission gain $f_T$ applied to rear irradiance. Front and rear mismatch are likewise combined in SunSolve into a single mismatch factor applied to total DC power in [DC system losses](/models/dc-performance/dc_system_losses). ## Inputs | Name | Symbol | Units | Description | | ------------------------------ | ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Module Tilt Angle** | $\beta_m$ | degrees | Tilt angle of module from horizontal | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Azimuth angle of module surface normal, measured clockwise from North | | **Post Height** | $h_{post}$ | m | Height of the module center above ground level (hub height for trackers) | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between rows | | **Collector Width** | $\ell_m$ | m | Width of collector perpendicular to axis | | **Albedo** | $\rho$ | — | Ground reflectance (0–1) | | **Module Transmission Factor** | $\tau$ | % | Fraction of direct irradiance transmitted through the module to the shaded ground below (0% = opaque, 100% = fully transparent, set to 0% in SunSolve-calibrated mode) | | **DNI** | $DNI$ | W/m² | Direct normal irradiance | | **DHI** | $DHI$ | W/m² | Diffuse horizontal irradiance | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth, measured clockwise from North | | **Structure Shading** | $f_{str}$ | % | Rear-side structure shading loss | | **Backside Mismatch** | $f_{MM,rear}$ | % | Rear-side irradiance mismatch loss (not applied in SunSolve-calibrated mode) | | **SunSolve Transmission Gain** | $f_T$ | % | Transmission gain (SunSolve-calibrated mode only) | | **Bifaciality Factor** | $\phi$ | % | Ratio of rear-to-front efficiency | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------------------ | ----- | --------------------------------------------------------------------------------------------------------- | | **Rear-Side POA Contribution** | $G_{POA,rear,eff}$ | W/m² | Rear irradiance contribution to effective POA (after bifaciality, structure shading, and mismatch losses) | *** ## Detailed Description ### Geometry and Coordinate System The model uses a 2D cross-section with origin $(x, y) = (0, 0)$ at ground level below the front edge of the reference row, positive $x$ toward the rear and positive $y$ upward. The front edge of the row behind the reference row is at $x = p$; the front edge of the row in front of the reference row is at $x = -p$. All ground calculations are performed over the interval $[0, p]$; positions outside this interval are mapped back using periodicity. Three derived geometric quantities (all in meters) define the module profile: * $\ell_v = \ell_m \sin(\beta_m)$ — vertical projection of the collector width * $\ell_h = \ell_m \cos(\beta_m)$ — horizontal projection of the collector width * $c = h_{post} - \ell_v / 2 = h_{post} - \ell_m \sin(\beta_m) / 2$ — ground clearance at the lower edge For single-axis trackers, $\beta_m$ varies at each timestep, so $\ell_v$, $\ell_h$, and $c$ are recalculated accordingly. ### Sky View Factors The ground between $x = 0$ and $x = p$ is divided into 100 intervals of width $\Delta = p / 100$ (m). For each interval $i$, the sky view factor is calculated at the midpoint $x = (i + 0.5) \cdot \Delta$ by determining what fraction of the hemisphere above is visible sky versus obstructed by adjacent rows. All rows are treated as interior rows (rows on both sides). Six elevation angles are computed from each ground point to the edges of the three nearest rows. Each row has two edges visible from below: the **top-rear** edge (at height $\ell_v + c$) and the **bottom-front** edge (at height $c$). The angles sweep from the far side (positive x) to the near side (negative x): $$ \alpha_1 = \max\left[\arctan\frac{\ell_v+c}{2p + \ell_h - x}, \arctan\frac{c}{2p - x}\right] $$ $$ \alpha_2 = \min\left[\arctan\frac{\ell_v+c}{p + \ell_h - x}, \arctan\frac{c}{p - x}\right] $$ $$ \alpha_3 = \max\left[\arctan\frac{\ell_v+c}{p + \ell_h - x}, \arctan\frac{c}{p - x}\right] $$ $$ \alpha_4 = \arctan\frac{\ell_v+c}{\ell_h - x} $$ $$ \alpha_5 = \arctan\frac{c}{-x} $$ $$ \alpha_6 = \arctan\frac{\ell_v+c}{\ell_h - p - x} $$ where: * $\alpha_1$ = effective upper boundary of the row two pitches behind (whichever edge projects higher) * $\alpha_2$ = effective lower boundary of the adjacent row behind (whichever edge projects lower) * $\alpha_3$ = effective upper boundary of the adjacent row behind * $\alpha_4$ = top-rear edge of the reference row * $\alpha_5$ = bottom-front edge of the reference row * $\alpha_6$ = top-rear edge of the row in front All angles are adjusted to the range $[0, \pi]$ when negative. The $\max$/$\min$ operations on $\alpha_1$–$\alpha_3$ select the effective obstruction boundary, which may be a row's top-rear or bottom-front edge depending on the ground point's position. The six angles form three consecutive pairs, each defining the potential sky gap between two adjacent rows: * $(\alpha_1, \alpha_2)$: gap between the second row behind and the adjacent row behind * $(\alpha_3, \alpha_4)$: gap between the adjacent row behind and the reference row * $(\alpha_5, \alpha_6)$: gap between the reference row and the row in front Within each pair, the odd-indexed angle marks the near edge of one row and the even-indexed angle marks the far edge of the next. If the gap is negative (the two rows overlap as seen from the ground point), the corresponding view factor is clamped to 0. Only the three nearest gaps are considered — gaps beyond the second row behind and beyond the row in front are neglected, as they subtend smaller solid angles and project onto the ground at increasingly oblique angles, making minor irradiance contributions. The total sky view factor $F_{sky}[i]$ for ground interval $i$ is the fraction of the sky hemisphere visible from that point, computed as the sum of the three gap view factors: $$ F_{sky}[i] = F_1 + F_2 + F_3 $$ $$ F_1 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_1 - \cos\alpha_2)\right] $$ $$ F_2 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_3 - \cos\alpha_4)\right] $$ $$ F_3 = \max\left[0,\; \tfrac{1}{2}(\cos\alpha_5 - \cos\alpha_6)\right] $$ ### Ground Shading The 3D sun position is projected onto the 2D cross-sectional plane as an effective $\theta_{z,eff}$: $$ \tan(\theta_{z,eff}) = \tan(\theta_z) \cos(\gamma_m - \gamma_s) $$ The horizontal shadow cast by a point at position $(x_0, y_0)$ falls on the ground at $x_0 + y_0 \tan(\theta_{z,eff})$. The shaded region is bounded by the shadow of the module's bottom-front edge at $(0, c)$ and top-rear edge at $(\ell_h, \ell_v + c)$: $$ x_{bot} = c \tan(\theta_{z,eff}) $$ $$ x_{top} = \ell_h + (\ell_v + c) \tan(\theta_{z,eff}) $$ Shadow positions falling outside $[0, p]$ wrap around using periodicity. Each of the 100 ground intervals is flagged as shaded ($S[i] = 1$) or sunlit ($S[i] = 0$) based on whether its midpoint falls within the shadow region. If the total shadow width $|x_{top} - x_{bot}| = |\ell_h + \ell_v \tan(\theta_{z,eff})|$ exceeds the row pitch $p$, the ground is completely shaded and $S[i] = 1$ for all $i$. ### Ground Irradiance The bifacial model always uses the Perez model internally—regardless of which transposition model is selected for the front-side calculation—because it requires the individual diffuse components. The Perez decomposition provides: * $G_{isotropic}$: sky diffuse * $G_{beam}$, $G_{circumsolar}$: beam and circumsolar irradiance on the horizontal surface * $G_{horizon}$: horizon brightening The isotropic and horizon components characterize the atmospheric radiance distribution and are independent of surface orientation. They are re-integrated per-degree with the model's own view factors and correction in the sections below. Beam and circumsolar are applied as direct projections onto the relevant surface. Ground irradiance at each interval combines these components with the sky view factor and shading: $$ G_{gnd}[i] = G_{isotropic} \cdot F_{sky}[i] + (G_{beam} + G_{circumsolar}) \cdot (1 - S[i] + \tau \cdot S[i]) $$ where $\tau$ is the module transmission factor representing light passing through the semi-transparent module, specified as a percentage and converted to a fraction (divided by 100) before use. When sunlit ($S[i] = 0$), the ground receives the full beam and circumsolar irradiance; when shaded ($S[i] = 1$), only the fraction $\tau$ transmitted through the module reaches the ground. In SunSolve-calibrated mode, $\tau$ is forced to zero to avoid double-counting, since through-module transmission is already accounted for in the SunSolve-derived transmission gain $f_T$. ### Rear Surface Irradiance The rear surface is sampled at 6 evenly spaced positions across the module height, at coordinates: $$ x_j = \ell_h \cdot \frac{j + 0.5}{6}, \qquad y_j = c + \ell_v \cdot \frac{j + 0.5}{6} $$ From each position $j = 0, 1, \ldots, 5$, irradiance is integrated over a 180° field of view (looking outward from the rear surface) using 1-degree increments. The adjacent row behind has its bottom-front edge at $(p, c)$ and its top-rear edge at $(p + \ell_h, \ell_v + c)$. The elevation angles from the position $j$ to these edges, rounded to the nearest integer degree, define the boundaries of three angular regions: $$ \theta_{sky,j} = \text{round}\!\left(\beta_m - \arctan\frac{(\ell_v + c) - y_j}{(p + \ell_h) - x_j}\right) $$ $$ \theta_{gnd,j} = \text{round}\!\left(\beta_m + \arctan\frac{y_j - c}{p - x_j}\right) $$ The field of view is divided into **sky** (0° to $\theta_{sky,j}$), **module behind** ($\theta_{sky,j}$ to $\theta_{gnd,j}$), and **ground** ($\theta_{gnd,j}$ to 180°). Five irradiance components are computed: #### Isotropic sky diffuse For each degree $k$ in the sky region: $$ G_{sky,j} = G_{isotropic} \sum_{k=0}^{\theta_{sky,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] $$ where $U_{IAM,B}[k]$ is the [Physical IAM model](/models/poa-irradiance/iam#physical) evaluated at each 1-degree increment, with no anti-reflective coating and no glass absorption ($\alpha = 0$), using $n = 1.526$ as the of glass. #### Horizon brightening In the Perez model, horizon brightening is concentrated in a 6° band above the horizon. From the rear surface, this band may be partially or fully blocked by the adjacent row. The number of visible horizon degrees at position $j$ is: $$ n_{hor,j} = \max\!\left(0,\; \text{round}\!\left(6 - \arctan\frac{(\ell_v + c) - y_j}{(p + \ell_h) - x_j}\right)\right) $$ where the arctan term is the obstruction angle (in degrees) of the adjacent row above the local horizon. When this obstruction exceeds 6°, no horizon is visible and $n_{hor,j} = 0$. The Perez model provides $G_{horizon}$ as a total irradiance integrated over the horizon band. To apply per-degree IAM correction, the model assumes uniform radiance within the band: dividing $G_{horizon}$ by the band's view factor $\frac{1}{2}(\cos(84°) - \cos(90°))$ yields the radiance, which is then re-integrated degree by degree with $U_{IAM,B}[k]$ weighting over the $n_{hor,j}$ visible degrees nearest the horizon: $$ G_{hor,j} = \frac{G_{horizon}}{\frac{1}{2}(\cos(84°) - \cos(90°))} \sum_{k=\theta_{sky,j}-n_{hor,j}}^{\theta_{sky,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] $$ #### Ground-reflected Each 1° angular band in the ground field-of-view region ($\theta_{gnd,j}$ to 180°) projects onto a range of ground from position $x_{gnd}(k+1)$ to $x_{gnd}(k)$, where: $$ x_{gnd}(k) = x_j + \frac{y_j}{\tan(k - \beta_m)} $$ The ground irradiance for that band is the area-weighted average over the projected range: $$ \overline{G}_{gnd}(k) = \frac{1}{x_{gnd}(k) - x_{gnd}(k+1)} \int_{x_{gnd}(k+1)}^{x_{gnd}(k)} G_{gnd}(x) \, dx $$ where $G_{gnd}(x)$ is the piecewise-constant ground irradiance from the 100-element array, extended periodically beyond $[0, p]$. The total ground-reflected irradiance at position $j$, accounting for the ground albedo $\rho$, is then: $$ G_{gnd,j} = \rho \sum_{k=\theta_{gnd,j}}^{179} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] \cdot \overline{G}_{gnd}(k) $$ #### Reflected irradiance from front module surface In the Physical IAM model, the Fresnel reflectance at incidence angle $\theta$ is related to the IAM transmittance by: $$ R(\theta) = 1 - U_{IAM,B}(\theta) \cdot (1 - R_0) $$ where $$ R_0 = \left(\frac{n - 1}{n + 1}\right)^2 $$ is the Fresnel reflectance at normal incidence, with $n$ the refractive index of the cover material ($n = 1.526$ for glass, $n = 1.300$ for AR glass). First, reflected is computed at 6 evenly spaced positions on the front surface of the row behind. At each front position, sky, horizon, and ground-reflected irradiance are integrated using the same view factor approach as above, but weighted by the Fresnel reflectance $R(\theta)$ instead of $U_{IAM,B}$. Beam, circumsolar, and secondary back-surface reflections are not included. Then, from each rear position $j$, the module field-of-view region ($\theta_{sky,j}$ to $\theta_{gnd,j}$) is integrated degree by degree. Each 1° angular band projects onto a range along the front module slope, and $\overline{G}_{refl,front}(k)$ is the length-weighted average of the 6 front-surface reflected values within that projected range — identical in structure to $\overline{G}_{gnd}(k)$, but over 6 positions on the sloped module surface instead of 100 on the ground. The reflected irradiance at position $j$ is then: $$ G_{refl,j} = \sum_{k=\theta_{sky,j}}^{\theta_{gnd,j}-1} \frac{1}{2}(\cos(k) - \cos(k+1)) \cdot U_{IAM,B}[k] \cdot \overline{G}_{refl,front}(k) $$ #### Direct beam and circumsolar The Perez model is called with the rear-facing orientation (tilt $180° - \beta_m$, $\gamma_m - 180°$) to project beam and circumsolar onto the rear surface, yielding $G_{beam,rear}$ and $G_{circumsolar,rear}$. The on the rear surface is: $$ \cos(\theta_{inc,rear}) = -\sin(\theta_z)\sin(\beta_m)\cos(\gamma_s - \gamma_m) - \cos(\theta_z)\cos(\beta_m) $$ If the sun is visible from the rear surface ($\theta_{inc,rear} < 90°$): $$ G_{beam,j} = (G_{beam,rear} + G_{circumsolar,rear}) \cdot U_{IAM,B}(\theta_{inc,rear}) $$ Otherwise ($\theta_{inc,rear} \geq 90°$) $G_{beam,j} = 0$. Inter-row shading of the rear surface by the row behind is neglected; the direct component is uniform across all 6 positions. ### Structure Shading and Mismatch The five components are summed to give the total rear irradiance at each sampled position: $$ G_{rear,j} = G_{sky,j} + G_{hor,j} + G_{refl,j} + G_{gnd,j} + G_{beam,j} $$ The average rear irradiance is the mean of the 6 values: $$ \overline{G}_{rear} = \frac{1}{6}\sum_{j=0}^{5} G_{rear,j} $$ Structure shading and mismatch losses are then applied to the average. The input values $f_{str}$, $f_T$, and $f_{MM,rear}$ are specified as percentages and converted to fractions (divided by 100) before use in the equations below. **Version 9 and earlier:** only structure shading is applied at this stage: $G_{POA,rear} = \overline{G}_{rear} \cdot (1 - f_{str})$. Backside mismatch is applied separately downstream as a weighted factor in the [DC system losses](/models/dc-performance/dc_system_losses) combined coefficient. **Version 10 and later:** both structure shading and backside mismatch are applied here: $G_{POA,rear} = \overline{G}_{rear} \cdot (1 - f_{str}) \cdot (1 - f_{MM,rear})$. Backside mismatch is no longer included in the DC system losses combined coefficient. **Version 10 and later, SunSolve-calibrated mode:** structure shading and transmission gain calculated in SunSolve are applied: $G_{POA,rear} = \overline{G}_{rear} \cdot (1 + f_T) \cdot (1 - f_{str})$. The module transmission factor $\tau$ is forced to zero in this mode to avoid double-counting, since through-module transmission is already accounted for in SunSolve simulations and captured in $f_T$. No rear mismatch is applied here; it is instead folded into the SunSolve-calculated combined front + rear mismatch loss in [DC system losses](/models/dc-performance/dc_system_losses). ### Effective POA Irradiance The contribution of rear irradiance to effective POA is: $$ G_{POA,rear,eff} = \phi \cdot G_{POA,rear} $$ where $\phi$ is the bifaciality factor (ratio of rear-to-front efficiency), specified as a percentage and converted to a fraction (divided by 100) before use. ### User-Specified Backside POAI If the user provides rear-side irradiance directly (bypassing the model above), the measured or externally computed value $G_{rear,user}$ replaces the calculated $\overline{G}_{rear}$. The same structure shading and mismatch treatment applies: **Version 9 and earlier:** $G_{POA,rear} = G_{rear,user} \cdot (1 - f_{str})$ (backside mismatch applied downstream in [DC system losses](/models/dc-performance/dc_system_losses)) **Version 10 and later:** $G_{POA,rear} = G_{rear,user} \cdot (1 - f_{str}) \cdot (1 - f_{MM,rear})$ **Version 10 and later, SunSolve-calibrated mode:** $G_{POA,rear} = G_{rear,user} \cdot (1 + f_T) \cdot (1 - f_{str})$. No rear mismatch is applied here; it is instead folded into the SunSolve-calculated combined front + rear mismatch loss in [DC system losses](/models/dc-performance/dc_system_losses). The bifaciality factor is then applied as above: $G_{POA,rear,eff} = \phi \cdot G_{POA,rear}$. *** ## References * Marion, B., MacAlpine, S., Deline, C., Asgharzadeh, A., Toor, F., Riley, D., Stein, J., & Hansen, C. (2017). *A practical irradiance model for bifacial PV modules.* 2017 IEEE 44th Photovoltaic Specialist Conference (PVSC), 1537–1542. DOI: [10.1109/PVSC.2017.8366263](https://doi.org/10.1109/PVSC.2017.8366263) * Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). *Modeling daylight availability and irradiance components from direct and global irradiance.* Solar Energy, 44(5), 271–289. DOI: [10.1016/0038-092X(90)90055-H](https://doi.org/10.1016/0038-092X\(90\)90055-H) * Duffie, J. A., & Beckman, W. A. (2013). *Solar Engineering of Thermal Processes* (4th ed.). Wiley. DOI: [10.1002/9781118671603](https://doi.org/10.1002/9781118671603) * Deline, C., Ayala Pelaez, S., MacAlpine, S., & Olalla, C. (2020). *Bifacial PV system mismatch loss estimation and parameterization.* Progress in Photovoltaics, 28(7), 691–703. DOI: [10.1002/pip.3259](https://doi.org/10.1002/pip.3259) * PV Lighthouse (2024). *Step-by-step guide to determine PVSyst bifacial inputs with SunSolve™* (Version 6.0, Apr-2024, Info0030). Available at: [https://www.pvlighthouse.com.au/sunsolve](https://www.pvlighthouse.com.au/sunsolve) # Soiling Source: https://docs.plantpredict.com/models/poa-irradiance/soiling ## Summary The soiling model accounts for irradiance losses due to dust, dirt, pollen, and other particulate matter accumulated on module surfaces. PlantPredict implements three soiling approaches: None (no soiling loss), Monthly (user-specified monthly loss values), and Weather (time-series loss values from weather data). The soiling factor is applied uniformly to all components after shading losses and before corrections. ## Inputs | Name | Symbol | Units | Description | | ---------------- | ---------- | ----- | ------------------------------------------------ | | **Soiling Loss** | $S_{loss}$ | % | Soiling loss percentage for the current timestep | *** ## Outputs | Name | Symbol | Units | Description | | ------------------ | ---------- | ----- | ---------------------------------------- | | **Soiling Factor** | $U_{soil}$ | — | Fraction of irradiance transmitted (0-1) | *** ## Detailed Description The soiling factor is calculated from the soiling loss percentage: $$ U_{soil} = 1 - \frac{S_{loss}}{100} $$ The source of $S_{loss}$ depends on the selected model: * **None**: $S_{loss} = 0$ (modules assumed perfectly clean, $U_{soil} = 1$) * **Monthly**: $S_{loss}$ is retrieved from user-specified monthly values (12 values, one per month) * **Weather**: $S_{loss}$ is read from the weather file for each timestep (e.g., from PVRADAR soiling data) ### Application to Irradiance The soiling factor is applied uniformly to all plane-of-array irradiance components (beam, sky diffuse, and ground-reflected irradiance): $$ G_{beam,soiled} = G_{beam,shaded} \times U_{soil} $$ $$ G_{sky,soiled} = G_{sky,shaded} \times U_{soil} $$ $$ G_{ground,soiled} = G_{ground,shaded} \times U_{soil} $$ Soiling is applied after near-field shading and horizon shading, and before incidence angle modifier (IAM) corrections. # Spectral Correction Source: https://docs.plantpredict.com/models/poa-irradiance/spectral_correction ## Summary Spectral Correction accounts for —the difference between the module's spectral response and the actual incident solar spectrum. PV modules are rated under a reference spectrum (AM1.5G), but the real spectrum varies with atmospheric conditions (e.g., air mass, ). Different module technologies (e.g., crystalline silicon, CdTe) have different spectral responses, causing them to over- or under-perform relative to their rating depending on the incident spectrum. PlantPredict implements four spectral correction approaches: No Spectral Shift, Monthly Override, Single-Variable Models (technology-specific), and Two-Variable Model. The spectral correction factor $U_{spectr}$ is a multiplier applied to effective irradiance after corrections. ## Inputs | Name | Symbol | Units | Description | | ------------------------------- | ------------------ | ----- | ------------------------------------------------------------------------------- | | **Pressure-Corrected Air Mass** | $AM'$ | — | Air mass corrected for atmospheric pressure | | **Precipitable Water** | $W$ | cm | Column depth of precipitable water vapor | | **Relative Humidity** | $RH$ | % | Surface relative humidity | | **Ambient Air Temperature** | $T_a$ | °C | Ambient air temperature | | **Dewpoint Temperature** | $T_d$ | °C | Dewpoint temperature | | **Monthly Spectral Loss** | $L_{spectr,month}$ | % | User-specified spectral loss percentage for each month (Monthly Override model) | | **Sandia Polynomial Factors** | $[a_0, ..., a_4]$ | — | Polynomial coefficients for Sandia spectral model | | **Two-Variable Coefficients** | $[b_0, ..., b_5]$ | — | Coefficients for two-variable spectral model | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ------------ | ----- | ---------------------------------------------------- | | **Spectral Correction Factor** | $U_{spectr}$ | — | Multiplier applied to effective irradiance after IAM | *** ## Detailed Description ### Available Models PlantPredict offers four Spectral Correction options: 1. **No Spectral Shift**: No spectral correction ($U_{spectr} = 1$) 2. **Monthly Override**: User-specified monthly values 3. **Single-Variable Models**: Technology-specific models using one atmospheric parameter: * **Sandia**: Uses air mass; for crystalline silicon modules * **First Solar Series 4 & Earlier**: Uses precipitable water; for First Solar Series ≤ 4 modules * **First Solar Series 4-2 & Later**: Uses precipitable water; for First Solar Series ≥ 4-2 modules 4. **Two-Variable Model** (Lee & Panchula): Uses both air mass and precipitable water with module-specific coefficients ### No Spectral Shift No spectral correction: $$ U_{spectr} = 1 $$ ### Monthly Override The user specifies a spectral loss percentage for each month. The percentage is converted to a correction factor: $$ U_{spectr} = 1 - \frac{L_{spectr,month}}{100} $$ where $L_{spectr,month}$ is the user-entered spectral loss (%) for the current month. A positive value represents a loss (e.g., 2% → $U_{spectr} = 0.98$); a negative value represents a spectral gain (e.g., −1% → $U_{spectr} = 1.01$). ### Single-Variable Models These models rely on atmospheric parameters, including precipitable water. If precipitable water cannot be determined (precipitable water, , and all missing from the weather file), all single-variable models default to $U_{spectr} = 1$—including the Sandia model. #### Sandia Polynomial Model Typically used for crystalline silicon (c-Si) modules, but applicable to any technology with user-defined polynomial coefficients: $$ U_{spectr} = a_0 + a_1 \cdot AM' + a_2 \cdot (AM')^2 + a_3 \cdot (AM')^3 + a_4 \cdot (AM')^4 $$ where $[a_0, a_1, a_2, a_3, a_4]$ are user-defined Sandia polynomial factors and $AM'$ is the pressure-corrected air mass. #### First Solar Models Recommended for First Solar CdTe modules: $$ U_{spectr} = c_0 + c_1 \cdot e^{c_2 (W + c_3)^{c_4}} $$ where $W$ is the precipitable water (cm) and coefficients depend on module series: | Coefficient | Series 4 & Earlier | Series 4-2 & Later | | ----------- | ------------------ | ------------------ | | $c_0$ | 0.6318 | 1.266 | | $c_1$ | 0.1341 | −0.0913 | | $c_2$ | 0.9757 | 1.1987 | | $c_3$ | 0.05 | 0.5 | | $c_4$ | 0.0788 | −0.21 | ### Two-Variable Model Six-parameter model from Lee and Panchula, accounting for pressure-corrected air mass $AM'$ and precipitable water $W$: $$ U_{spectr} = b_0 + b_1 AM' + b_2 W + b_3 \sqrt{AM'} + b_4 \sqrt{W} + b_5 \frac{AM'}{\sqrt{W}} $$ $b_0$ through $b_5$ are user-defined coefficients specific to the module technology. To ensure numerical stability, precipitable water is clamped to a minimum of 0.1 cm and air mass is clamped to a maximum of 10. If precipitable water cannot be determined (precipitable water, relative humidity, and dewpoint all missing from the weather file), the model defaults to $U_{spectr} = 1$. ### Precipitable Water Calculation If precipitable water is not directly available in the weather file, it is calculated from relative humidity or dewpoint. #### From Relative Humidity Using the Gueymard (1994) model, which uses absolute temperature $T_K = T_a + 273.15$ (Kelvin) throughout. First, the **apparent water vapor scale height** $H_v$ (km) is calculated. This represents the height of an equivalent column if all atmospheric water vapor were compressed to surface-level density. $$ H_v = 0.4976 + 1.5265 \frac{T_K}{273.15} + e^{13.6897 \frac{T_K}{273.15} - 14.9188 (\frac{T_K}{273.15})^3} $$ Next, the **surface water vapor density** $\rho_v$ (g/m³) is calculated from relative humidity $RH$ (%) and temperature: $$ \rho_v = \frac{216.7 \cdot RH}{100 \cdot T_K} \cdot e^{22.33 - \frac{4914}{T_K} - 10.922 (\frac{100}{T_K})^2 - 0.39015 \frac{T_K}{100}} $$ Finally, precipitable water $W$ (cm) is the product of scale height and vapor density, where the factor 0.1 converts from (km × g/m³) to cm of liquid water (with water density = 1000 kg/m³): $$ W = 0.1 \cdot H_v \cdot \rho_v $$ #### From Dewpoint When only dewpoint temperature $T_d$ is available, relative humidity is calculated using the August-Roche-Magnus approximation for $e_s$ (hPa). The saturation vapor pressure is the maximum water vapor pressure that air can hold at a given temperature—at the dewpoint, the air is saturated ($RH = 100\%$). The ratio of saturation vapor pressures at dewpoint and ambient temperature gives relative humidity: $$ RH = 100 \cdot \frac{e_s(T_d)}{e_s(T_a)} $$ where the saturation vapor pressure follows the August-Roche-Magnus equation: $$ e_s(T) = c_0 \cdot e^{\frac{c_1 \cdot T}{c_2 + T}} $$ with $T$ in °C and coefficients depending on PlantPredict version:
| Software Version | $c_0$ | $c_1$ | $c_2$ | | ---------------- | ------ | ------ | ------ | | ≤ 10 | 6.11 | 17.1 | 234.2 | | ≥ 11 | 6.1094 | 17.625 | 243.04 | Version 11+ uses the improved coefficients from Alduchov and Eskridge (1996), which provide less than 0.4% error over the range -40°C to 50°C.
Then calculate $W$ from $RH$ using the Gueymard method above. ### Application to Irradiance Spectral correction factor applied after IAM: $$ G_{beam,spectral} = G_{beam,IAM} \times U_{spectr} $$ $$ G_{sky,spectral} = G_{sky,IAM} \times U_{spectr} $$ $$ G_{ground,spectral} = G_{ground,IAM} \times U_{spectr} $$ *** ## References * King, D. L., Boyson, W. E., & Kratochvil, J. A. (2004). *Photovoltaic array performance model.* SAND2004-3535, Sandia National Laboratories. DOI: [10.2172/919131](https://doi.org/10.2172/919131) * Lee, M., & Panchula, A. (2016). *Spectral correction for photovoltaic module performance based on air mass and precipitable water.* 2016 IEEE 43rd Photovoltaic Specialists Conference (PVSC), 1351-1356. DOI: [10.1109/PVSC.2016.7749836](https://doi.org/10.1109/PVSC.2016.7749836) * Gueymard, C. (1994). *Analysis of monthly average atmospheric precipitable water and turbidity in Canada and Northern United States.* Solar Energy, 53(1), 57-71. DOI: [10.1016/0038-092X(94)90175-9](https://doi.org/10.1016/0038-092X\(94\)90175-9) * Alduchov, O. A., & Eskridge, R. E. (1996). *Improved Magnus form approximation of saturation vapor pressure.* Journal of Applied Meteorology, 35(4), 601-609. DOI: [10.1175/1520-0450(1996)035%3C0601:IMFAOS%3E2.0.CO;2](https://doi.org/10.1175/1520-0450\(1996\)035%3C0601:IMFAOS%3E2.0.CO;2) # 3D Shading - DC Field Level (Legacy) Source: https://docs.plantpredict.com/models/shading/3d_shading_dc_field ## Summary The DC Field 3D Shading algorithm is a legacy (version 11 and below) pixel-counting approach that calculates shading within individual DC fields. The algorithm constructs 3D shadow volumes from each occluding object, then renders the DC field from the sun's perspective and counts which pixels are shadowed versus illuminated to determine the shaded fraction. This rendering-based technique can handle complex geometries including external objects. The algorithm is limited to single DC field geometries and is deprecated in favor of the newer site-level shade engine but remains available for legacy predictions. This is a discrete-space approach with an inherent trade-off between computational speed and precision; the rendering resolution is set automatically by the software. ## Inputs | Name | Symbol | Units | Description | | -------------------------- | ---------- | ------- | ---------------------------------------------------------------------------------------- | | **DC Field Geometry** | — | various | Module positions (m), dimensions (m), tilt angles (degrees), row spacing (m), bay layout | | **External Objects** | — | m | Dimensions and positions of external objects (optional) | | **Tracker Rotation Angle** | $\alpha$ | degrees | Rotation angle for each timestep (tracker systems only) | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth, measured clockwise from North | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------- | ----------- | ----- | ----------------------------------------------- | | **Beam Shading Factor** | $U_{shd,B}$ | — | Fraction of beam irradiance reaching bays (0-1) | *** ## Detailed Description The algorithm uses a pixel-counting approach implemented through the [**Depth Pass Stencil Buffer Shadow Volume**](https://en.wikipedia.org/wiki/Shadow_volume) (DPSBSV) rendering technique. The key concept is to view the DC field from the sun's perspective and count which pixels are shadowed versus illuminated. ### Algorithm Overview The algorithm operates in 3 main steps: 1. **Construct shadow volumes** - Project 3D shadows from each bay and external object 2. **Render scene and mark shadows** - Draw bays from sun's viewpoint, overlay shadow volumes, and mark shadowed pixels 3. **Count pixels and calculate shading factor** - Count shaded vs. unshaded bay pixels and compute the ratio ### Step 1: Shadow Volume Construction For each occluder (bay or external object), the algorithm creates a 3D shadow volume by projecting the occluder's vertices away from the sun to form an elongated 3D shape. This volume represents the region of space where sunlight is blocked by the occluder. The projections extend far enough to encompass all potential receiver bays in the DC field. ### Step 2: Render Scene and Mark Shadows The algorithm uses the solar position ($\theta_z$, $\gamma_s$) and, for tracker systems, the tracker rotation angle $\alpha$ to set up a virtual view from the sun's location looking toward the DC field, then renders the 3D scene: 1. **Draw bays:** Render all receiver bays to identify which pixels represent bay surfaces 2. **Draw shadow volumes:** Overlay the 3D shadow projections onto the scene 3. **Mark each pixel:** Tag each bay pixel as either "shadowed" (inside any shadow volume) or "illuminated" (direct view to sun) Overlapping shadows from multiple occluders are handled automatically - a pixel is shadowed if it's inside any shadow volume. ### Step 3: Count Pixels and Calculate Shading Factor The algorithm counts pixels across all bays in the DC field. The beam is computed as: $$ U_{shd,B} = \frac{N_{pixels,unshaded}}{N_{pixels,total}} $$ where $N_{pixels,unshaded}$ is the count of illuminated bay pixels and $N_{pixels,total}$ is the total bay pixels. This provides an area-weighted average across all bays in the DC field. # 3D Shading - Site Level (Version 12+) Source: https://docs.plantpredict.com/models/shading/3d_shading_site_level ## Summary The Site-Level 3D Shading engine, introduced in Version 12, uses a approach to calculate beam shading at the individual level across the entire site. The algorithm transforms the scene to view it from the sun's perspective, identifies which bays and objects could cast shade onto each target bay, then computes exact shade polygon intersections. It supports complex terrain, non-uniform row spacing, arbitrary array geometries, and external obstructions with significantly improved computational performance compared to the legacy DC field-level approach. This is a continuous-space approach with no dependence on rendering resolution. ## Inputs | Name | Symbol | Units | Description | | ---------------------------- | ---------- | ------- | -------------------------------------------------------------------- | | **Bay Vertices** | — | m | 3D coordinates of each bay's 4 corners (parallelograms) | | **External Object Vertices** | — | m | 3D vertices of obstruction polygons (triangles or parallelograms) | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth, measured clockwise from North | | **Tracker Rotation Angle** | $\alpha_i$ | degrees | Rotation angle about tracker axis for bay $i$ (tracker systems only) | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------- | ----------- | ----- | ------------------------------------------------------------ | | **Beam Shading Factor** | $U_{shd,B}$ | — | Site-average fraction of beam irradiance reaching bays (0-1) | *** ## Detailed Description The algorithm operates in four main steps: 1. **Scene Preparation** — Rotate bays to tracker angles, then transform scene to sun-aligned coordinates 2. **Broad-Phase Collision** — Identify which bays and objects can cast shade onto each target bay 3. **Narrow-Phase Collision** — Compute exact shade polygon intersections for each candidate pair 4. **Shading Factor Calculation** — Calculate per-bay shaded fractions and aggregate to site average ### Step 1: Scene Preparation The algorithm transforms the 3D scene into a coordinate system aligned with the sun's view: 1. **Bay rotation:** For tracker systems, rotate each bay around its tracker axis by angle $\alpha_i$ 2. **Scene rotation:** Rotate the entire scene (bays and external objects) so that sun rays become parallel to the Z-axis, effectively viewing the scene from the sun's perspective After transformation, shade can be computed by projecting polygons onto the X-Y plane—polygons with higher Z values (closer to the sun) cast shade on polygons with lower Z values. ### Step 2: Broad-Phase Collision For each target bay, the algorithm identifies candidate occluders—other bays and external objects that could potentially cast shade onto it. A candidate must: 1. **Overlap in X-Y:** It overlaps the target bay when viewed from the sun 2. **Be in front:** It is closer to the sun than the target bay This filtering eliminates most bay pairs from consideration, significantly reducing computational cost for large sites. ### Step 3: Narrow-Phase Collision For each target bay with one or more candidates, the algorithm computes the exact shade geometry using polygon clipping: 1. **Merge candidate polygons:** Combine all candidate occluder polygons into a single shade polygon 2. **Intersect with target:** Compute the intersection of the merged shade polygon with the target bay polygon 3. **Calculate shaded area:** Measure the area of the intersection polygon ### Step 4: Shading Factor Calculation The shaded fraction for each bay is: $$ f_{shaded,i} = \frac{A_{shade,i}}{A_{bay,i}} $$ If the sun is behind a bay, the bay receives no direct beam irradiance and $f_{shaded,i} = 1$. The beam for each bay is: $$ U_{shd,B,i} = 1 - f_{shaded,i} $$ The site-average shading factor is computed as an area-weighted average across all bays: $$ \bar{U}_{shd,B} = \frac{\sum_i A_{bay,i} \cdot U_{shd,B,i}}{\sum_i A_{bay,i}} $$ # Electrical Effect of Shading Source: https://docs.plantpredict.com/models/shading/electrical_shading_effect ## Summary When modules in a string are partially shaded, electrical losses can occur beyond the geometric beam shading. Shaded cells produce less current than unshaded cells, and because cells within a string operate in series, the lowest-current cell limits the entire string's output. The magnitude of these losses depends on module technology and internal circuitry (cell configuration, series vs parallel connections, configuration): crystalline silicon (c-Si) modules are more sensitive to partial shading than thin-film technologies like CdTe. PlantPredict provides four electrical shading models that determine the effective applied to : None, Linear, Fractional, and Step-Fractional. None, Linear, and Fractional are available with all shading algorithms and software versions. Step-Fractional is only available in V12+ with the 3D Site Level shading algorithm. ## Inputs | Name | Symbol | Units | Description | | ------------------------------ | ----------- | ----- | ------------------------------------------------------------------------------------- | | **Beam Shading Factor** | $U_{shd,B}$ | — | Beam shading factor (0-1), from selected shading algorithm | | **Fractional Shading Percent** | $f$ | % | User-specified loss percentage for Fractional model | | **Number of Module Rows** | $M$ | — | Number of module rows per bay (modules high); used in Fractional model (pre-V12 only) | | **Number of Bay Fractions** | $N$ | — | Number of partitions per bay for Step-Fractional model (V12+ only) | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------------- | ---------------- | ----- | ----------------------------------------------------------- | | **Electrical Shading Factor** | $U_{shd,B,elec}$ | — | Electrical shading factor (0-1), applied to beam irradiance | *** ## Detailed Description ### Electrical Shading Models The electrical shading models are applied after beam shading is calculated. Model availability depends on the shading algorithm: * **None**: Nullifies the effect of shading entirely. Available in all shading algorithms. * **Linear**: Total shading losses equal beam shading losses; no additional electrical effect. Available in all shading algorithms. * **Fractional**: When any shading occurs, applies a minimum loss of $f$% to the bottom row of modules within the (or all modules if there is only one row), plus additional losses from beam shading. Available in all shading algorithms. * **Step-Fractional**: Losses increase in discrete steps based on number of bay partitions. Available only with the 3D Site Level shading algorithm (V12+). In V12+ with the 3D Site Level shading algorithm, the electrical shading factor $U_{shd,B,elec,i}$ is calculated per bay $i$ from the per-bay beam shading factor $U_{shd,B,i}$, then aggregated as an area-weighted average across the site for each time step: $$ U_{shd,B,elec} = \frac{\sum_{i=1}^{N_{bays}} A_{bay,i} \cdot U_{shd,B,elec,i}}{\sum_{i=1}^{N_{bays}} A_{bay,i}} $$ where $A_{bay,i}$ is the area of bay $i$ and $N_{bays}$ is the total number of bays in the DC field. ### None The effect of shading is nullified entirely. No shading losses are applied. $$ U_{shd,B,elec} = 1 $$ Behavior is identical across all shading algorithms. ### Linear The electrical shading factor equals the beam shading factor. No additional is applied beyond the geometric shading. $$ U_{shd,B,elec} = U_{shd,B} $$ Behavior is identical across all shading algorithms. This model is recommended for CdTe modules, which exhibit a linear response to shading with minimal additional electrical losses. ### Fractional Electrical mismatch can increase shading losses beyond the geometric beam shading. The fractional shading percent $f$ is converted from % to a fraction (divided by 100) before use in the equations below. $$ U_{shd,B,elec} = E \cdot f + U_{shd,B} \cdot (1 - f) $$ where $E$ is the unshaded module row factor (fraction of module rows within the bay that remain fully illuminated). When $U_{shd,B} \geq 0.99$, no additional electrical effect is applied: $U_{shd,B,elec} = U_{shd,B}$. The value of $E$ depends on the shading algorithm and system configuration: **Site-Level 3D (V12+):** $E = 0$ always. The formula simplifies to: $$ U_{shd,B,elec} = U_{shd,B} \cdot (1 - f) $$ This means that when any shading occurs, a minimum loss of $f$ is applied, with additional losses from beam shading. **Row-to-Row and Legacy 3D (pre-V12):** $E$ depends on $M$, the number of module rows within the bay (the number of "modules high" of the mounting configuration): $$ E = \frac{M - \lceil M \cdot (1 - U_{shd,B}) \rceil}{M} $$ where $\lceil \cdot \rceil$ is the ceiling function. This represents the fraction of module rows that remain unshaded. * For $M = 1$ (typical single-axis trackers): $E = 0$ when any shade is present, same behavior as V12+. * For $M > 1$ (multi-row fixed-tilt systems): $E$ is a step function. Losses increase in steps as shade crosses each module row boundary. **Example ($M = 2$, $f = 50\%$):** * $U_{shd,B} = 0.7$: $E = (2 - \lceil 0.6 \rceil) / 2 = 0.5$, so $U_{shd,B,elec} = 0.5 \times 0.5 + 0.7 \times 0.5 = 0.60$ * $U_{shd,B} = 0.4$: $E = (2 - \lceil 1.2 \rceil) / 2 = 0$, so $U_{shd,B,elec} = 0 \times 0.5 + 0.4 \times 0.5 = 0.20$ **Relationship to other models:** When $f = 0\%$, the Fractional model reduces to the Linear model ($U_{shd,B,elec} = U_{shd,B}$). When $f = 100\%$, the Fractional model becomes equivalent to the Step-Fractional model with $N = M$ partitions ($U_{shd,B,elec} = E$). For $f$ between 0 and 100%, the model offers a continuous transition between these two behaviors. However, the Fractional model is not recommended for systems requiring sub-module partitions (half-cell c-Si modules or c-Si modules mounted in landscape); use the Step-Fractional model instead. ### Step-Fractional Available only in Site-Level 3D (V12+). The bay is divided into $N$ partitions. When shading affects any portion of a partition, the entire partition is considered lost. This creates quantized (stepped) losses that are always greater than or equal to the beam shading losses. The underlying assumption is that shade progresses uniformly across the bay, parallel to the bottom edge of the bay, with equal-sized partitions. When $U_{shd,B} < 0.995$: $$ U_{shd,B,elec} = 1 - \frac{\lceil N \cdot (1 - U_{shd,B}) \rceil}{N} $$ where $\lceil \cdot \rceil$ is the ceiling function. This model is recommended for c-Si modules, which exhibit stepped losses under partial shading due to bypass diode activation and, in half-cell modules, parallel-connected module sections. **Example ($N = 3$, c-Si module mounted one-high in landscape with 3 bypass diodes):** * $U_{shd,B} = 0.80$: $U_{shd,B,elec} = 1 - \lceil 0.6 \rceil / 3 = 1 - 1/3 = 0.67$ * $U_{shd,B} = 0.50$: $U_{shd,B,elec} = 1 - \lceil 1.5 \rceil / 3 = 1 - 2/3 = 0.33$ **Sensitivity to $N$:** * $N = 1$: Entire bay lost if any shading occurs * $N = 2$: Half-bay partitions * $N = 4$: Quarter-bay partitions * As $N \to \infty$: Approaches Linear model ($U_{shd,B,elec} = U_{shd,B}$) **Choosing $N$ for c-Si modules:** Let $M$ be the number of module rows per bay (modules high). For typical c-Si modules with 3 bypass diodes: * **Portrait, full-cell modules**: $N = M$ * **Portrait, half-cell modules**: $N = 2 \times M$ (half-cell modules have two parallel halves per module) * **Landscape**: $N = 3 \times M$ (one partition per bypass diode per module row) # Ground-Reflected Shading Source: https://docs.plantpredict.com/models/shading/ground_reflected_shading ## Summary Ground-reflected shading accounts for the reduction in ground-reflected irradiance reaching a module due to neighboring array rows blocking portions of the ground plane. Unlike sky diffuse shading, this calculation includes effects, since ground reflection arrives at oblique angles. This model uses a 2D representation of the PV array, analyzing geometry in the plane perpendicular to the row axis. ## Inputs | Name | Symbol | Units | Description | | --------------------------------- | ---------- | ------- | --------------------------------------------------------------------- | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between tracker rotation axes | | **Collector Width** | $\ell_m$ | m | Tracker bay width perpendicular to rotation axis | | **Module Tilt Angle** | $\beta_m$ | degrees | Tilt angle of module from horizontal | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Azimuth angle of module surface normal, measured clockwise from North | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth, measured clockwise from North | | **Albedo** | $\rho$ | — | Ground reflectance (0–1) | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface | | **Direct Normal Irradiance** | $DNI$ | W/m² | Beam irradiance perpendicular to sun's rays | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse irradiance on horizontal surface | | **IAM Parameter** | $b_0$ | — | ASHRAE IAM coefficient | *** ## Outputs | Name | Symbol | Units | Description | | ---------------------------------- | ------------ | ----- | ------------------------------------------------------------------------------------ | | **Ground Diffuse Shading Factor** | $U_{shd,Gd}$ | — | Shading factor for ground-reflected irradiance from diffuse-illuminated ground (0-1) | | **Ground Direct Shading Factor** | $U_{shd,Gb}$ | — | Shading factor for ground-reflected irradiance from sunlit ground (0-1) | | **Combined Ground Shading Factor** | $U_{shd,G}$ | — | Combined shading factor for all ground-reflected irradiance (0-1) | *** ## Detailed Description Ground-reflected irradiance reaching the front of the module depends on which portions of the ground between rows are visible from the module surface and whether those portions are sunlit or shaded. The model separates this into two components: * **Sunlit ground**: Receives direct and * **Shaded ground**: Receives only diffuse irradiance The model uses numerical integration across the row spacing to calculate what fraction of each ground type is visible from the module. ### Step 1: Define Integration Geometry The algorithm integrates over the ground strip between rows, from $x_1$ to $x_2$. Using a coordinate system centered at the module's rotation axis: * **$x_1 = -p$**: Adjacent row's rotation axis (integration start) * **$x_2 = -k / \tan(\beta_m)$**: Limit of module's downward field of view, where the assumed module center height is $k = \frac{\ell_m}{2} \sin(45°) + 1$ m (1 meter ground clearance, 45° max tilt) Using $x_1 = -p$ is a simplification—the exact geometric view angle would extend beyond the adjacent row. This conservative approximation slightly underestimates ground-reflected irradiance. ### Step 2: Calculate Shadow Boundary The shadow boundary $s$ marks where direct beam irradiance begins on the ground. Beyond $s$, the ground is sunlit; before $s$, the ground is shaded by the adjacent row. **Project the sun into the cross-axis plane:** The shadow calculation is performed in 2D, looking along the row axis (tracker or fixed-tilt). The sun's position in 3D (zenith $\theta_z$, azimuth $\gamma_s$) must be projected onto this cross-axis plane. The angle between the sun's and the row axis is $(\gamma_s - \gamma_m)$. The effective solar in the cross-axis plane is: $$ \tan(\theta_{z,eff}) = \tan(\theta_z) \cdot |\cos(\gamma_s - \gamma_m)| $$ The shadow cast by a vertical object of height $h$ extends horizontally in the cross-axis direction by: $$ L_{shadow} = h \cdot \tan(\theta_{z,eff}) = h \cdot \tan(\theta_z) \cdot |\cos(\gamma_s - \gamma_m)| $$ **Locate the shadow-casting edge:** The top edge of the adjacent front row casts the shadow boundary. This edge is located at: * Horizontal position: $x_{adj,top} = -p + \frac{\ell_m}{2} \cos(\beta_m)$ * Height above ground: $h_{top} = k + \frac{\ell_m}{2} \sin(\beta_m)$ **Shadow boundary position:** The shadow boundary is located at the shadow-casting edge plus the projected shadow length: $$ s = x_{adj,top} + L_{shadow} = \left( -p + \frac{\ell_m}{2} \cos(\beta_m) \right) + \left( k + \frac{\ell_m}{2} \sin(\beta_m) \right) \tan(\theta_z) |\cos(\gamma_s - \gamma_m)| $$ Rearranging: $$ s = \left( k + \frac{\ell_m}{2} \sin(\beta_m) \right) \tan(\theta_z) |\cos(\gamma_s - \gamma_m)| - p + \frac{\ell_m}{2} \cos(\beta_m) $$ The shadow boundary is clamped to the integration limits: if $s < x_1$, all visible ground is sunlit; if $s > x_2$, all visible ground is shaded. ### Step 3: Calculate Sky View Factor The sky view factor at ground position $x$ is the angular extent of sky visible from that point, bounded by the current row (above) and the adjacent row (in front): $$ f_{sky}(x) = \sigma_{adj,top}(x) - \sigma_{top}(x) $$ The angle to the top edge of the current row is: $$ \sigma_{top}(x) = \text{atan}\left( \frac{h_{top}}{x_{top} - x} \right) $$ The angle to the top edge of the adjacent row is: $$ \sigma_{adj,top}(x) = \text{atan}\left( \frac{h_{top}}{x_{adj,top} - x} \right) $$ where $x_{top} = \frac{\ell_m}{2} \cos(\beta_m)$ is the horizontal position of the current row's top edge and $x_{adj,top} = -p + \frac{\ell_m}{2} \cos(\beta_m) = x_{top} - p$ is the horizontal position of the adjacent row's top edge. ### Step 4: Calculate IAM Factor The incidence angle for light traveling from ground position $x$ to the module center, measured from the module surface normal, is: $$ \theta_{inc}(x) = \frac{\pi}{2} + \text{atan}\left( \frac{k}{|x|} \right) - \beta_m $$ The ASHRAE IAM factor is then: $$ f_{IAM}(x) = 1 - b_0 \left( \frac{1}{\cos(\theta_{inc})} - 1 \right) $$ with $f_{IAM} = 0$ when $\theta_{inc} > 87°$. ### Step 5: Integrate Shading Factors The algorithm divides the ground between rows into 100 segments and integrates to calculate: **Ground diffuse shading factor** — Accounts for sky view factor and IAM effects on diffuse-illuminated ground, integrated over the entire ground strip: $$ U_{shd,Gd} = \frac{1}{|x_2 - x_1|} \int_{x_1}^{x_2} f_{sky}(x) \cdot f_{IAM}(x) \, dx $$ **Ground direct shading factor** — Accounts for IAM effects on sunlit ground, integrated from the shadow boundary $s$ to the field-of-view limit: $$ U_{shd,Gb} = \frac{1}{|x_2 - x_1|} \int_{s}^{x_2} f_{IAM}(x) \, dx $$ Diffuse irradiance originates from the entire sky hemisphere (extended source), so $f_{sky}(x)$ is needed to determine what portion of the sky each ground position can see. Direct beam irradiance comes from a single direction (point source), so we only need to determine if ground is sunlit (starting integration at $s$) and apply the IAM correction. ### Step 6: Combine Ground Shading Factors The two ground shading factors are applied separately to the diffuse () and direct () components of horizontal irradiance before transposition: $$ G_{H,eff} = U_{shd,Gd} \cdot \text{DHI} + U_{shd,Gb} \cdot \text{DNI} \cdot \cos(\theta_z) $$ This effective horizontal irradiance is then transposed to the tilted plane using the standard ground-reflected formula with $\rho$: $$ G_{gnd,POA} = \rho \cdot G_{H,eff} \cdot \frac{1 - \cos(\beta_m)}{2} $$ A **combined ground shading factor** $U_{shd,G}$ is back-calculated for reporting: $$ U_{shd,G} = \frac{G_{gnd,POA}}{G_{gnd,POA,unshaded}} $$ where $G_{gnd,POA,unshaded} = \rho \cdot \text{GHI} \cdot \frac{1 - \cos(\beta_m)}{2}$ is the ground-reflected irradiance without shading effects. Here is the total horizontal irradiance and refers to plane-of-array irradiance on the tilted module surface. Substituting the definitions of $G_{gnd,POA}$ and $G_{H,eff}$: $$ U_{shd,G} = \frac{U_{shd,Gd} \cdot \text{DHI} + U_{shd,Gb} \cdot \text{DNI} \cdot \cos(\theta_z)}{\text{GHI}} $$ This combined factor is what users see in output reports and represents the net effect of both shaded and sunlit ground contributions. # Horizon Shading Source: https://docs.plantpredict.com/models/shading/horizon_shading ## Summary Horizon shading accounts for losses when the sun is blocked by distant terrain features, tree lines, buildings, or other obstructions far beyond the solar array field. Users define a horizon profile as a series of - pairs describing the apparent horizon line around the site. At each timestep, the algorithm compares the solar position to the interpolated horizon elevation at that azimuth and determines whether the sun is visible. When sunrise or sunset occurs within a timestep, the shading factor is prorated based on the duration of terrain blockage. Diffuse horizon shading (sky-view reduction from far-field obstructions) is currently not implemented in PlantPredict. ## Inputs | Name | Symbol | Units | Description | | ----------------------- | ------------------- | -------- | ------------------------------------------------ | | **Horizon Profile** | $(\gamma_i, e_i)$ | degrees | List of azimuth-elevation pairs defining horizon | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth measured clockwise from north | | **Sunrise/Sunset Time** | $t_{rise}, t_{set}$ | datetime | Times when sun crosses geometric horizon (0°) | *** ## Outputs | Name | Symbol | Units | Description | | -------------------------- | ------------- | ----- | ------------------------------------------ | | **Horizon Shading Factor** | $U_{horizon}$ | — | Unshaded fraction of beam irradiance (0-1) | *** ## Detailed Description ### Horizon Profile Definition The horizon profile is a user-defined list of obstruction elevations at specified azimuths around the site: $$ \text{Horizon} = \{(\gamma_1, e_1), (\gamma_2, e_2), \ldots, (\gamma_n, e_n)\} $$ where: * $\gamma_i$ is the azimuth direction (0° to 360° measured clockwise from north) * $e_i$ is the elevation angle of the obstruction at that azimuth (degrees above horizon) Points should cover the full 360° azimuth range and be ordered by increasing azimuth. ### Horizon Elevation Interpolation The horizon elevation at the current solar azimuth $\gamma_s$ is determined by linear interpolation between the two nearest profile points: $$ e_{horizon}(\gamma_s) = e_i + \frac{(\gamma_s - \gamma_i)}{(\gamma_{i+1} - \gamma_i)} (e_{i+1} - e_i) $$ where $(\gamma_i, e_i)$ and $(\gamma_{i+1}, e_{i+1})$ are the profile points immediately before and after the solar azimuth. ### Sun Visibility Determination The shading factor depends on whether the sun is above or below the horizon obstruction at the current azimuth. The solar elevation is $e_s = 90° - \theta_z$: $$ U_{horizon} = \begin{cases} 1 & \text{if } e_s \geq e_{horizon}(\gamma_s) \\ 0 & \text{if } e_s < e_{horizon}(\gamma_s) \text{ for entire timestep} \\ \text{prorated} & \text{if sun crosses horizon within timestep} \end{cases} $$ ### Prorated Shading Calculation When sunrise $t_{rise}$ or sunset $t_{set}$ occurs within a timestep, the shading factor is prorated based on obstruction duration. The algorithm interpolates solar position from adjacent timesteps in 1-minute increments to find when the sun clears the horizon obstruction. The shading factor is then: $$ U_{horizon} = 1 - \frac{\Delta t_{blocked}}{\Delta t_{interval}} $$ where: * $\Delta t_{blocked}$ is the time between sunrise/sunset and when the sun clears the horizon obstruction * $\Delta t_{interval}$ is the portion of the timestep when the sun is above the geometric (0°) horizon **Example:** For a 60-minute timestep with sunrise at minute 20, the sun is above the geometric horizon for 40 minutes ($\Delta t_{interval} = 40$). If a mountain blocks the sun until minute 35, then $\Delta t_{blocked} = 15$ minutes and $U_{horizon} = 1 - 15/40 = 0.625$. The horizon shading factor $U_{horizon}$ is applied only to the beam irradiance component. Diffuse and ground-reflected components are not modified by this algorithm. # Shading Models Overview Source: https://docs.plantpredict.com/models/shading/overview Shading models calculate irradiance reduction from geometric obstructions between the (sun included) and the PV modules. This section covers: * **Horizon Shading** — far-field obstructions (terrain, buildings) * **Sky Diffuse Shading** — reduction of sky diffuse irradiance from nearby rows * **Ground-Reflected Shading** — reduction of ground-reflected irradiance with IAM effects * **Direct Beam Shading** — near-field row-to-row and structural shading * **Electrical Effect of Shading** — conversion of geometric shade to electrical loss ## Models in This Section ### [Horizon Shading](horizon_shading) Far-field shading from terrain features and distant obstructions. Applied to the beam component before near-field geometric shading. ### [Sky Diffuse Shading](sky_diffuse_shading) Sky view factor reduction from adjacent rows blocking part of the sky hemisphere. This calculation is purely geometric—IAM effects on sky diffuse irradiance are handled separately in the IAM model. ### [Ground-Reflected Shading](ground_reflected_shading) Ground view factor reduction accounting for both sunlit and shaded ground between rows. Unlike sky diffuse shading, this calculation includes IAM effects using the ASHRAE model, since ground reflection arrives at oblique angles. ### Direct Beam Shading Near-field shading from row-to-row and structural obstructions: * **[Row-to-Row Beam Shading - DC Field Level](row_to_row_beam_shading)**: Analytical model for standard row-to-row shading on flat or uniformly sloped terrain * **[3D Shading - DC Field Level (Legacy)](3d_shading_dc_field)**: Shadow volume projection for complex DC field geometry, limited to single DC field scope * **[3D Shading - Site Level (Version 12+)](3d_shading_site_level)**: Polygon clipping algorithm for full site-level 3D shading (automatically enabled with 3D scene) ### [Electrical Effect of Shading](electrical_shading_effect) Converts geometric shade fraction to electrical power loss: * **None**: No shade loss applied * **Linear**: Shade loss equals geometric shade fraction (no additional electrical effect) * **Fractional**: A user-defined fraction of the module (e.g., 20%, 50%, 100%) is lost when any shade is present; geometric shade applies to the remaining portion * **Step-Fractional (Version 12+)**: Total loss increases in discrete steps as shade crosses partition thresholds (e.g., 0%, 50%, 100% for 2 partitions) # Row-to-Row Beam Shading - DC Field Level Source: https://docs.plantpredict.com/models/shading/row_to_row_beam_shading ## Summary This model calculates row-to-row shading using geometric algorithms for arrays on uniform terrain. PlantPredict implements two variants: a simple trigonometric model for flat terrain, and a slope-aware vector-based model that handles uniform slopes and accounts for bay-to-bay shading within rows. Both methods provide fast calculations suitable for regular array layouts. ## Inputs | Name | Symbol | Units | Description | | ------------------------ | -------------- | ------- | --------------------------------------------------------------------- | | **Collector Width** | $\ell_m$ | m | Tracker bay width perpendicular to rotation axis | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between tracker rotation axes | | **Row Length** | $L$ | m | Length of array row parallel to axis | | **Number of Rows** | $N_{rows}$ | — | Total rows in array block | | **Bay Length** | $L_b$ | m | Length of individual bay within row | | **Bay Spacing** | $s_b$ | m | Gap between adjacent bays along row | | **Bays Per Row** | $N_b$ | — | Number of bays in each row | | **Row Tilt Angle** | $\beta_m$ | degrees | Tilt angle of module from horizontal | | **Row Azimuth Angle** | $\gamma_m$ | degrees | Azimuth angle of module surface normal, measured clockwise from North | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth, measured clockwise from North | | **Ground Slope** | $\beta_g$ | degrees | Terrain slope angle | | **Ground Slope Azimuth** | $\gamma_g$ | degrees | Downhill direction of slope, measured clockwise from North | | **Angle of Incidence** | $\theta_{AOI}$ | degrees | Angle between sun vector and module surface normal | *** ## Outputs | Name | Symbol | Units | Description | | ----------------------- | ----------- | ----- | -------------------------------------------------- | | **Beam Shading Factor** | $U_{shd,B}$ | — | Fraction of beam irradiance reaching modules (0-1) | *** ## Detailed Description ### Algorithm Selection **Version 11+:** * **Tracker systems**: Always uses slope-aware model (even on flat terrain) * **Fixed tilt**: Row-to-row trigonometric model if flat terrain (both slopes = 0) and "Infinite Length Rows" algorithm selected; slope-aware otherwise **Version 8-10:** * Row-to-row trigonometric model if: flat terrain (both slopes = 0) and "Infinite Length Rows" algorithm selected * Slope-aware otherwise (sloped terrain or "Infinite Length Rows" not selected) **Version 7 and earlier:** * Row-to-row trigonometric model if flat terrain (both slopes = 0) * Slope-aware if sloped terrain ( or ≠ 0) ### Row-to-Row Trigonometric Model The algorithm calculates the relative height and length of shadows cast by the directly adjacent row to determine the shaded fraction on interior rows, then adjusts for edge effects in finite arrays. This model operates at the row level, treating each row as continuous (omitting spacing between ), and only considers shadows from the row immediately in front. It does not account for diagonal, second-row, or along-axis bay-to-bay shading. #### Shaded Fractions **Shaded height fraction** (relative height of shadow from adjacent row, 0-1): $$ h_s = 1 - \frac{p}{\ell_m[\cos(\beta_m) + \sin(\beta_m) \cos(\gamma_s - \gamma_m) \tan(\theta_z)]} $$ **Shaded length fraction** (relative length of shadow from adjacent row, 0-1): $$ l_s = 1 - \frac{p\sin(\beta_m) |\sin(\gamma_s - \gamma_m)| \tan(\theta_z)}{L[\cos(\beta_m) + \sin(\beta_m) \cos(\gamma_s - \gamma_m) \tan(\theta_z)]} $$ If $h_s$ or $l_s$ fall outside \[0,1], they are set to 0. For "Infinite Length Rows" mode, $l_s$ is set to 1. #### Beam Shading Factor $$ U_{shd,B} = 1 - h_s \times l_s \times \frac{N_{rows} - 1}{N_{rows}} $$ The factor $(N_{rows} - 1) / N_{rows}$ accounts for the first row being unshaded. If the $\theta_{AOI}$ is $\geq 90°$ (sun behind modules), shading is not applied. *** ### Slope-Aware Linear Shading This algorithm uses a vector-based approach with that projects shadows from multiple neighboring bays onto each receiver module. The terrain slope ($\beta_g$, $\gamma_g$) is decomposed into cross-axis (perpendicular to rows) and along-axis (parallel to rows) components to determine bay elevations and shadow geometry. Each row consists of $N_b$ bays of length $L_b$ separated by gaps of $s_b$. Special cases handle array edges where fewer neighbor candidates exist. #### Step 1: Shading Candidates Identification For each receiver bay, the algorithm considers shadows from up to 6 neighboring bays. The sun's azimuth position relative to the row orientation determines which side's diagonal bays to evaluate, while the along-axis slope determines the elevation differences that affect whether those bays can actually cast shadows: 1. **Adjacent bay along row** (same row, 1 position along-axis) 2. **Row directly in front** (1 row cross-axis, centered) 3. **Diagonal bay** (1 row cross-axis, 1 position along-axis) 4. **Diagonal bay** (2 rows cross-axis, 1 position along-axis) 5. **Diagonal bay** (1 row cross-axis, 2 positions along-axis) 6. **Diagonal bay** (1 row cross-axis, 3 positions along-axis) #### Step 2: Shadow Projection via Polygon Clipping For each shadow source: 1. Project the shading candidate bay's vertices along the sun's direction onto the receiver plane 2. Compute the intersection polygon between the projected shadow and receiver bay boundaries 3. Calculate the intersection polygon area This 3D vector geometry accounts for module tilt, tracker rotation, and terrain slopes. #### Step 3: Shadow Overlap Calculation Multiple shadows can overlap on a single receiver. The total shaded area uses the [inclusion-exclusion principle](https://en.wikipedia.org/wiki/Inclusion%E2%80%93exclusion_principle) to avoid double-counting: $$ A_{shade} = \sum_i A_i - \sum_{i. Unlike beam shading, which depends on sun position, sky diffuse shading losses are determined primarily by array geometry (, tilt angle). For fixed-tilt systems, these losses remain relatively constant throughout the day; for tracking systems, they vary with tracker rotation angle. This model uses a 2D representation of the PV array, analyzing geometry in the plane perpendicular to the row axis. ## Inputs | Name | Symbol | Units | Description | | --------------------- | --------- | ------- | ------------------------------------------------- | | **Module Tilt Angle** | $\beta_m$ | degrees | Tilt angle of module from horizontal | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between tracker rotation axes | | **Collector Width** | $\ell_m$ | m | Tracker bay width perpendicular to rotation axis | | **Cross-Axis Slope** | $\beta_c$ | degrees | Ground slope perpendicular to tracker axis | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ----------- | ----- | -------------------------------------------------------- | | **Sky Diffuse Shading Factor** | $U_{shd,D}$ | — | Fraction of sky diffuse irradiance reaching module (0-1) | *** ## Detailed Description A tilted module in an array can only "see" part of the sky hemisphere—the rest is blocked by the adjacent row in front. The sky diffuse shading factor quantifies this reduction by comparing the visible sky area to what an isolated module would see. This calculation is purely geometric—IAM effects on sky diffuse irradiance are handled separately in the IAM model. ### Step 1: Calculate Blocking Angle The blocking angle $\psi$ represents the elevation angle from the observation point (center of the module) to the top of the adjacent row in front. For arrays on sloped terrain with cross-axis slope $\beta_c$: $$ \psi = \text{atan}\left( \frac{\ell_m \sin(\beta_m) + 2p \tan(\beta_c)}{2p - \ell_m \cos(\beta_m)} \right) $$ For flat terrain ($\beta_c = 0$), this reduces to: $$ \psi = \text{atan}\left( \frac{\ell_m \sin(\beta_m)}{2p - \ell_m \cos(\beta_m)} \right) $$ The blocking angle is clamped to non-negative values: $\psi = \max(\psi, 0)$. The cross-axis slope modifies the effective blocking: * **Uphill slope** ($\beta_c > 0$, front row higher): increases $\psi$, more blocking * **Downhill slope** ($\beta_c < 0$, front row lower): decreases $\psi$, less blocking Backward diffuse shading (from the row behind when $-\beta_c > \beta_m$ on downhill slopes) is not currently implemented. ### Step 2: Calculate Sky View Factor The sky view factor with blocking is: $$ F_{sky} = \frac{1 + \cos(\beta_m + \psi)}{2} $$ This is the standard isotropic sky view factor formula, where $F_{sky} = 1$ for a horizontal surface with no blocking ($\beta_m = \psi = 0$). ### Step 3: Calculate Shading Factor The shading factor is the ratio of actual sky view to the baseline (infinite spacing, where $\psi = 0$): $$ U_{shd,D} = \frac{F_{sky}}{F_{sky,\infty}} = \frac{1 + \cos(\beta_m + \psi)}{1 + \cos(\beta_m)} $$ where $F_{sky,\infty} = \frac{1 + \cos(\beta_m)}{2}$ is the baseline sky view factor for the tilted module with no row-to-row blocking. Note that $U_{shd,D}$ represents the **fraction of sky diffuse irradiance that reaches the module**, not the shading loss. A value of 1.0 means no shading (all diffuse reaches the module), while 0.95 indicates a 5% diffuse shading loss. # Air Mass Model Source: https://docs.plantpredict.com/models/solar-geometry/air_mass ## Summary The Model calculates the relative optical path length of sunlight through earth's atmosphere based on the solar , accounting for atmospheric and curvature effects. PlantPredict implements two empirical air mass models: Bird-Hulstrom and Kasten-Sandia. Air mass is used downstream in models (Perez), models (DIRINT), and calculations. ## Inputs | Name | Symbol | Units | Description | | ------------------------ | ---------- | ------- | --------------------------------------------------------- | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between the zenith and the line of sight to the sun | | **Atmospheric Pressure** | $P$ | hPa | Local atmospheric pressure | | **Altitude** | $h$ | m | Elevation above sea level | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------- | ------ | ----- | ------------------------------------------------------------------------------------- | | **Relative Air Mass** | $AM$ | — | Optical path length relative to zenith; used in Perez transposition | | **Pressure-Corrected Air Mass** | $AM'$ | — | Air mass adjusted for local pressure; used in DIRINT decomposition and spectral shift | *** ## Detailed Description The **Air Mass Model** quantifies how much longer the path through the atmosphere is compared to the vertical path at zenith. At zenith ($\theta_z = 0°$), air mass equals 1.0. As the sun approaches the horizon, the path length increases. PlantPredict provides two empirical models that account for atmospheric curvature and refraction: 1. **Bird-Hulstrom**: Based on Bird & Hulstrom (1981) 2. **Kasten-Sandia**: Based on Kasten & Young (1989) Both models use the same general formula but with different empirical coefficients derived from atmospheric observations: $$ AM = \frac{1}{\cos(\theta_z) + a (b - \theta_z)^{-c}} $$ | Model | $a$ | $b$ | $c$ | | ------------- | ------- | -------- | ------ | | Bird-Hulstrom | 0.15 | 93.885 | 1.253 | | Kasten-Sandia | 0.50572 | 96.07995 | 1.6364 | For zenith angles at or above 89°, air mass is set to zero: $$ AM = 0 \quad \text{for } \theta_z \geq 89° $$ At these grazing angles the empirical formula becomes unreliable; however, incident solar radiation is also negligible, so the cutoff minimally affects energy calculations. Typical air mass values: * At sea level, zenith: $AM = 1.0$ * At sea level, $\theta_z = 60°$: $AM \approx 2.0$ * At sea level, $\theta_z = 80°$: $AM \approx 5.7$ * At sea level, $\theta_z = 85°$: $AM \approx 11-12$ ### Pressure Correction For spectral calculations, PlantPredict uses the **pressure-corrected air mass** $AM'$. This accounts for the fact that atmospheric scattering and absorption scale with air density—at lower pressures (e.g., higher elevations), there are fewer molecules to scatter and absorb radiation, reducing these effects: $$ AM' = AM \times \frac{P}{P_0} $$ where: * $AM$ is the relative air mass from above * $P$ is the local atmospheric pressure (hPa) * $P_0 = 1013.25$ hPa is standard sea level pressure ### Pressure from Altitude If pressure is not directly provided in the weather file, PlantPredict estimates it from elevation using the barometric formula: $$ P = 1013.25 \times \left(1 - h \times 2.25577 \times 10^{-5}\right)^{5.25588} $$ where $h$ is elevation in meters above sea level. This formula is based on the standard atmosphere model, which assumes a temperature decrease rate of 6.5°C per kilometer of altitude. *** ## References * Kasten, F., & Young, A. T. (1989). *Revised optical air mass tables and approximation formula.* Applied Optics, 28(22), 4735–4738. DOI: [10.1364/AO.28.004735](https://doi.org/10.1364/AO.28.004735) * Bird, R. E., & Hulstrom, R. L. (1981). *A simplified clear sky model for direct and diffuse insolation on horizontal surfaces.* Solar Energy Research Institute Report SERI/TR-642-761. DOI: [10.2172/6510849](https://doi.org/10.2172/6510849) # Extraterrestrial Irradiance Source: https://docs.plantpredict.com/models/solar-geometry/extraterrestrial_irradiance ## Summary The Extraterrestrial Irradiance model calculates the solar irradiance incident at the top of earth's atmosphere on a surface perpendicular to the sun's rays. PlantPredict uses a second-order Fourier series expansion based on earth's orbital mechanics to compute the extraterrestrial as a function of day of year. This value is essential for calculations, models, and corrections throughout the prediction engine. ## Inputs | Name | Symbol | Units | Description | | ----------------- | ------ | -------- | -------------------------- | | **UTC Date-Time** | — | datetime | Universal Coordinated Time | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------------------------- | ------------- | ----- | ----------------------------------------------------------------- | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Solar irradiance at top of atmosphere perpendicular to sun's rays | *** ## Detailed Description The extraterrestrial irradiance varies throughout the year due to earth's elliptical orbit around the sun. The earth-sun distance changes by approximately ±1.7% from its mean value, causing the solar irradiance to vary by approximately ±3.4% (since irradiance varies as the inverse square of distance). ### Calculation Method PlantPredict implements a Fourier series approximation of the extraterrestrial irradiance based on Spencer's equation. ### Step 1: Calculate Day Angle Compute the fractional day $n_f$ (days) from the UTC date-time: $$ n_f = \text{UTCDate} - \text{January 1 of current year} $$ where $n_f = 0$ for January 1 at 00:00 UTC and $n_f = 365$ (or $366$ for leap years) for December 31 at 24:00 UTC. The value includes the fractional time of day. The day angle $\zeta$ (in radians) represents the fractional progress through the year: $$ \zeta = \frac{2\pi \, n_f}{365.25} $$ The constant 365.25 accounts for the average year length including leap years. ### Step 2: Calculate Extraterrestrial Irradiance The extraterrestrial direct normal irradiance is computed using a second-order Fourier series expansion: $$ \begin{aligned} DNI_{extra} = G_0 \times \Big(&1.00011 + 0.034221 \cos(\zeta) + 0.00128 \sin(\zeta) \\ &+ 0.000719 \cos(2\zeta) + 0.000077 \sin(2\zeta) \Big) \end{aligned} $$ where: * $G_0 = 1367$ W/m² is the solar constant (mean extraterrestrial irradiance at 1 astronomical unit = 149,597,870.7 km), per the World Meteorological Organization (WMO) standard * $\zeta$ is the day angle in radians * The Fourier coefficients are derived from the Spencer (1971) equation as presented in Duffie & Beckman, *Solar Engineering of Thermal Processes* ### Physical Interpretation The terms in the Fourier series represent: 1. **Constant term (1.00011)**: Slight adjustment to solar constant 2. **Annual variation** $(\cos(\zeta), \sin(\zeta))$: Primary effect of earth's elliptical orbit 3. **Semi-annual variation** $(\cos(2\zeta), \sin(2\zeta))$: Higher-order orbital effects The dominant variation is the annual term with amplitude ±3.4%, corresponding to earth's perihelion (closest approach, \~January 3) and aphelion (farthest point, \~July 4). ### Typical Values Throughout the Year | Date | Approximate Day | $DNI_{extra}$ (W/m²) | % Deviation | | ---------------------- | --------------- | -------------------- | ----------- | | January 3 (perihelion) | 3 | \~1412 | +3.3% | | April 3 | 93 | \~1362 | -0.4% | | July 4 (aphelion) | 185 | \~1322 | -3.3% | | October 4 | 277 | \~1368 | +0.1% | ### Downstream Models The extraterrestrial irradiance $DNI_{extra}$ is used by: * **Clearness Index** — atmospheric transmittance calculation * **Transposition Models** (Perez, Hay-Davies) — anisotropy index * ** Models** (DISC, DIRINT) — DNI/DHI estimation from GHI * **Spectral Models** — atmospheric optical depth ## References * Spencer, J. W. (1971). Fourier series representation of the position of the sun. *Search*, 2(5), 172–176. * Iqbal, M. (1983). *An Introduction to Solar Radiation*. Academic Press. ISBN: 0-12-373750-8. * Duffie, J. A., & Beckman, W. A. (2013). *Solar Engineering of Thermal Processes* (4th ed.). John Wiley & Sons. ISBN: 978-0-470-87366-3. DOI: [10.1002/9781118671603](https://doi.org/10.1002/9781118671603) # Sun Position & Extra-terrestrial Irradiance Overview Source: https://docs.plantpredict.com/models/solar-geometry/overview This section covers the fundamental astronomical calculations required for solar energy prediction. These models calculate the solar irradiance at the top of the atmosphere and the sun's apparent position from the point of view of the observer, forming the foundation for all subsequent irradiance and energy production models. ## Models in This Section ### [Extraterrestrial Irradiance](extraterrestrial_irradiance) Calculates the solar irradiance at the top of the atmosphere using the Spencer equation for earth-sun distance correction. This represents the maximum possible solar energy available before atmospheric attenuation. ### [Solar Position Algorithm](solar_position_algorithm) Calculates the sun's apparent position ( and angles) using the NREL Solar Position Algorithm (SPA). Includes corrections for , , and atmospheric . ### [Sunrise and Sunset Determination](sunrise_sunset) Determines daily sunrise and sunset times for the site location. Used for timestamp adjustment, handles the edge cases of polar regions where the sun may not rise or set for multiple days. ### [Air Mass](air_mass) Calculates the relative path length of solar radiation through the atmosphere ( or AM). Two model options: Bird-Hulstrom and Kasten-Sandia. Both include pressure correction for site elevation. ## Calculation Sequence 1. **Extraterrestrial Irradiance** → Top-of-atmosphere DNI 2. **Solar Position** → Apparent sun zenith and azimuth angles 3. **Sunrise/Sunset** → Day boundaries for timestamp adjustment 4. **Air Mass** → Atmospheric path length (depends on zenith angle) These outputs feed into models, tracking algorithms, diffuse-direct , and spectral corrections. # Solar Position Algorithm Source: https://docs.plantpredict.com/models/solar-geometry/solar_position_algorithm ## Summary PlantPredict implements the **NREL Solar Position Algorithm (SPA)**, a high-accuracy algorithm for computing the sun's apparent position in the sky. The algorithm achieves uncertainties of ±0.0003° for the period −2000 to 6000, making it suitable for precision solar tracking and energy modeling. The implementation follows the NREL Technical Report TP-560-34302 (Reda & Andreas, 2004) with minor simplifications noted below. Due to the complexity of the algorithm, only its outline is described here for the sake of concision. A full description can be found in the NREL technical report mentioned above. ## Inputs | Name | Symbol | Units | Description | | --------------------------- | --------- | -------- | ------------------------------------------------ | | **UTC Date–Time** | — | datetime | Coordinated Universal Time | | **Latitude** | $\varphi$ | degrees | Observer latitude (+north, −south) | | **Longitude** | $\lambda$ | degrees | Observer longitude (+east, −west) | | **Altitude** | $h$ | m | Observer elevation above sea level | | **Ambient Air Temperature** | $T_a$ | °C | Ambient temperature (for refraction correction) | | **Pressure** | $P$ | hPa | Atmospheric pressure (for refraction correction) | ## Outputs | Name | Symbol | Units | Description | | -------------------------------- | ---------- | ------- | ---------------------------------------------------- | | **Apparent Solar Zenith Angle** | $\theta_z$ | degrees | Angle from vertical to sun, corrected for refraction | | **Apparent Solar Azimuth Angle** | $\gamma_s$ | degrees | Horizontal angle from North (clockwise) | *** ## Detailed Description The SPA proceeds through these major steps: ### 1. Time Calculations Convert the input UTC datetime to Day (JD) and Julian Ephemeris Day (JDE) for planetary calculations. SPA intentionally uses two time scales: * (TT), also referred to as (ET), a uniform time scale independent of variations in earth rotation speed, used for orbital mechanics. In this time scale, a day is always exactly 24 hours. * (UT, approximated here by UTC), a time scale synchronized to the earth's variable rotation speed. In this time scale, a day is not always exactly 24 hours. TT and, thus, JDE are used for the relative positions of the sun and earth independent of the rotation of earth. UT and, thus, JD are used to calculate the position of the sun in the sky from the point of view of an observer located on the (rotating) surface of the earth. The offset between these two timescales is ΔT = TT − UT and slowly varies over time (\<1 second per year). **PlantPredict uses a fixed ΔT of 67 seconds** (corresponding to \~2013–2014). This approximation introduces negligible error for typical PV modeling horizons (\<30 seconds difference over a 30-year period). ### 2. Earth's Heliocentric Position Calculate earth's position relative to the sun using the ** theory**—a set of polynomial and periodic series that model planetary orbits. This yields: * **Heliocentric longitude** $L$ — earth's angular position in its orbital plane * **Heliocentric latitude** $B$ — earth's position above/below the * **Radius vector** $R$ — earth-sun distance in ### 3. Geocentric Sun Position Invert the earth position to get the sun position (as seen from earth's center). This is a simple coordinate transformation: add 180° to longitude ($\lambda_{\text{ecl}} = L + 180°$) and negate latitude ($\beta_{\text{ecl}} = -B$). ### 4. Nutation and Obliquity is the periodic wobble of earth's rotational axis due to gravitational torques from the sun and moon. The algorithm computes: * **Nutation in longitude** $\Delta\psi$ — change in direction of the tilt of the rotational axis, affects the sun's apparent east-west position * **Nutation in obliquity** $\Delta\epsilon$ — change in magnitude of the tilt of the rotational axis, affects the tilt of earth's equator relative to the ecliptic The **true ** $\epsilon$ (tilt of earth's axis, \~23.4°) is then computed by adding nutation in obliquity to the mean obliquity: $\epsilon = \epsilon_0 + \Delta\epsilon$. The nutation in longitude is used to correct the sun apparent coordinates, as detailed below. ### 5. Aberration ($\Delta\tau$) is the apparent shift in celestial positions caused by earth's orbital velocity (\~30 km/s) combined with the finite speed of light—it takes approximately 8 minutes for light from the sun to reach earth. Light arriving from the sun appears slightly displaced in the direction of earth's motion. In other words, in the earth reference frame, once light from the sun reaches the earth surface, the sun has already moved from where that light was cast. The correction is small (\~20 arcseconds) but significant for high-precision applications. ### 6. Apparent Sun Coordinates The **apparent sun longitude** is computed by adding in longitude ($\Delta\psi$) and ($\Delta\tau$) to the geocentric longitude: $\lambda'_{\text{ecl}} = \lambda_{\text{ecl}} + \Delta\psi + \Delta\tau$. The nutation correction accounts for the shift of the —the zero point for measuring celestial longitude. Because the equinox is defined as the intersection of the ecliptic and equator, and nutation wobbles the equator, the equinox shifts along the ecliptic. Adding $\Delta\psi$ ensures we measure the sun's position relative to the "true equinox" (actual position) rather than the "mean equinox" (averaged position). The sun latitude does not need correction ($\beta'_{\text{ecl}} = \beta_{\text{ecl}}$). The apparent ecliptic coordinates (longitude $\lambda'_{\text{ecl}}$, latitude $\beta'_{\text{ecl}}$) are then converted to **** using the true $\epsilon$. This transformation rotates from the (based on earth's ) to the (based on earth's equator). Both nutation components affect the final result: $\Delta\psi$ is incorporated in the apparent longitude, while $\Delta\epsilon$ enters through the true obliquity. The resulting equatorial coordinates are: * **** $\alpha$ — celestial "longitude" measured along the equator * **** $\delta$ — celestial "latitude" above/below the equator ### 7. Local Hour Angle Calculate the **** $H$, which measures how far the sun has traveled past the observer's meridian. It is obtained from the ** (GAST)** corrected for the observer's longitude $\lambda$ and sun's right ascension $\alpha$: $H = \text{GAST} + \lambda - \alpha$. GAST measures earth's rotational position relative to the stars (specifically, the true vernal equinox), not the sun. A sidereal day (\~23h 56m 4s)—one full 360° rotation relative to the stars—is shorter than a solar day (24h) because earth's orbital motion causes the sun to drift \~1° westward each day, requiring an extra \~4 minutes of rotation to bring the sun back to the same position. GAST is computed from UTC, corrected for the nutation-induced shift of the true equinox (zero reference). ### 8. Topocentric Correction (Parallax) Convert from (earth-center) to (observer location) coordinates. accounts for the observer being on earth's surface rather than at its center—a shift of up to \~9 arcseconds depending on the sun's position and observer location. The correction adjusts the equatorial coordinates: * **Hour angle**: $H' = H - \Delta H$ (topocentric hour angle) * **Declination**: $\delta' = \delta + \Delta\delta$ (topocentric declination) These corrections depend on: * Observer's latitude $\varphi$ and altitude $h$ (determines distance from earth's center) * Local hour angle $H$ (sun's position relative to observer's meridian) * earth-sun distance $R$ (closer sun = larger parallax) ### 9. Zenith and Azimuth Angles Calculate the **zenith angle** $\theta_z$ and **azimuth angle** $\gamma_s$ in topocentric coordinates by transforming from topocentric equatorial coordinates ($\delta'$, $H'$) to the local horizon frame using the observer's latitude $\varphi$. Then apply the atmospheric **** correction to the zenith angle—the atmosphere bends light, making the sun appear higher than it geometrically is (lower zenith angle). Finally, convert azimuth to PlantPredict's convention, measuring azimuth **clockwise from North**: 0° = North, 90° = East, 180° = South, 270° = West *** ### Implementation Notes PlantPredict's implementation follows the NREL SPA algorithm. Key implementation details: | Aspect | Implementation | | ---------------- | ----------------------------------------------------- | | VSOP87 tables | Full tables from NREL TP-560-34302 (Tables A4.2–A4.3) | | Nutation terms | 63-term series from NREL TP-560-34302 (Table A4.1) | | ΔT value | Fixed at 67 seconds | | Refraction model | Bennett formula with pressure/temperature adjustment | | Valid date range | −2000 to 6000 (accuracy ±0.0003°) | *** ## References * Reda, I., & Andreas, A. (2004). *Solar Position Algorithm for Solar Radiation Applications.* NREL Technical Report NREL/TP-560-34302. DOI: [10.2172/15003974](https://doi.org/10.2172/15003974) * Meeus, J. (1998). *Astronomical Algorithms* (2nd ed.). Willmann-Bell, Inc. * Bretagnon, P., & Francou, G. (1988). *Planetary theories in rectangular and spherical variables. VSOP 87 solutions.* Astronomy and Astrophysics, 202, 309–315. * Bennett, G. G. (1982). *The Calculation of Astronomical Refraction in Marine Navigation.* Journal of Navigation, 35(2), 255–259. DOI: [10.1017/S0373463300022037](https://doi.org/10.1017/S0373463300022037) # Sunrise and Sunset Determination Source: https://docs.plantpredict.com/models/solar-geometry/sunrise_sunset ## Summary The Sunrise and Sunset Determination algorithm computes the times of sunrise and sunset for a given geographic location and date using a simplified solar geometry approach. PlantPredict uses an approximation method based on NOAA solar calculations that includes atmospheric , solar disk size, and altitude-dependent corrections. These sunrise and sunset times are used downstream to adjust weather timestamps near sunrise/sunset for more accurate solar position calculations, and for horizon shading computations. ## Inputs | Name | Symbol | Units | Description | | ----------------------- | ------------------------- | ------- | ----------------------------------------------------------------- | | **Date** | — | date | Calendar date for which sunrise/sunset is calculated | | **Latitude** | $\varphi$ | degrees | Observer's geographic latitude (positive north, negative south) | | **Longitude** | $\lambda$ | degrees | Observer's geographic longitude (positive east, negative west) | | **Altitude** | $h$ | m | Observer's elevation above mean sea level | | **Standard UTC Offset** | $\text{UTC}_{\text{off}}$ | hours | Time zone offset from UTC (e.g., -5 for US Eastern Standard Time) | *** ## Outputs | Name | Symbol | Units | Description | | ---------------- | ---------- | -------- | ---------------------------------- | | **Sunrise Time** | $t_{rise}$ | datetime | Local standard datetime of sunrise | | **Sunset Time** | $t_{set}$ | datetime | Local standard datetime of sunset | *** ## Detailed Description PlantPredict implements a simplified sunrise/sunset algorithm that uses an approximate solar formula and includes corrections for atmospheric refraction, solar disk size, and observer altitude. ### Step 1: Approximate Solar Declination The solar declination is computed using a simplified sinusoidal approximation: $$ \delta = 23.44^\circ \times \sin\left(\frac{2\pi (284 + n)}{365.25}\right) $$ where $n$ is the day of year extracted from the input date (1 = January 1, 365/366 = December 31). This formula, based on the NOAA Solar Calculator, approximates the sun's declination throughout the year, with maximum positive declination (23.44°) occurring near the summer solstice (around day 172) and maximum negative declination (−23.44°) near the winter solstice (around day 355). ### Step 2: Horizon Angle with Corrections The at which sunrise/sunset occurs is computed to account for: 1. **Atmospheric ** (\~34 arcminutes = 0.567°) 2. **Solar disk radius** (\~16 arcminutes = 0.267°) 3. **Altitude-dependent correction** (geometric horizon depression) The combined horizon correction zenith angle is: $$ \theta_{horizon} = 90.833^\circ + 0.0347 \sqrt{\max(h, 0)} $$ where $0.0347 \sqrt{h}$ accounts for the geometric horizon depression due to earth's curvature—at higher elevations, the horizon appears lower because earth curves away beneath the observer; if $h < 0$ it is set to zero. ### Step 3: Hour Angle at Sunrise/Sunset The $H_0$ at which the sun crosses the corrected horizon is computed using the spherical trigonometry relationship: $$ \cos(H_0) = \frac{\cos(\theta_{horizon}) - \sin(\varphi) \sin(\delta)}{\cos(\varphi) \cos(\delta)} $$ If the argument of arccos is outside the range \[-1, 1], then: * $\cos(H_0) < -1$: the sun never sets (polar day) * $\cos(H_0) > 1$: the sun never rises (polar night) The polar cases are handled in Step 6. Otherwise: $$ H_0 = \arccos\left(\frac{\cos(\theta_{horizon})}{\cos(\delta) \cos(\varphi)} - \tan(\delta) \tan(\varphi)\right) $$ ### Step 4: Solar Time of Sunrise and Sunset Convert the hour angle to . The hour angle is in radians, so convert to hours: $$ t_{rise,solar} = 12 - \frac{H_0 \times 180^\circ}{\pi \times (360^\circ / 24\text{hr})} = 12 \left(1 - \frac{H_0}{\pi}\right) $$ $$ t_{set,solar} = 12 + \frac{H_0 \times 180^\circ}{\pi \times (360^\circ / 24\text{hr})} = 12 \left(1 + \frac{H_0}{\pi}\right) $$ ### Step 5: Convert Local Solar Time to Local Standard Time This step converts to and involves two corrections: **1. Equation of Time Correction** This first correction is to account for the fact that the sun does not move at a constant rate across the sky. Consequently, the interval between consecutive solar noons is not exactly 24 hours and varies slightly from day to day (by up to ±30 seconds). These differences accumulate throughout the year. The **** (EoT) corrects for this variation, which arises from two effects: * **earth's elliptical orbit**: earth moves faster near perihelion (January) and slower near aphelion (July), per Kepler's second law * **earth's axial tilt**: The sun moves along the ecliptic (tilted 23.44°), but time is measured based on the sun's east-west motion projected onto the celestial equator. This projection causes the apparent rate to vary: slower at the equinoxes, faster at the solstices. These effects combine to produce a correction ranging from approximately **−14 to +16 minutes** depending on the time of year. PlantPredict uses a second-order Fourier series approximation of the equation of time, following Spencer (1971). First, compute the $\gamma$ (in radians) from the day of year $n$ and the solar time to be corrected $t_{solar}$: $$ \gamma = \frac{2\pi}{365.24} \left(n - 1 + \frac{t_{solar}}{24}\right) $$ The equation of time correction (in minutes) is: $$ \begin{aligned} \text{EoT} &= 229.18 \times \Big( 0.000075 + 0.001868 \cos(\gamma) - 0.032077 \sin(\gamma) \\ &\quad - 0.014615 \cos(2\gamma) - 0.040849 \sin(2\gamma) \Big) \end{aligned} $$ **2. Time Offset from UTC and Longitude Correction** An additional correction is required to account for the longitude and the offset from UTC. The combined time offset (in minutes) from local solar time to local standard time is: $$ \text{TimeOffset} = \text{EoT} + 4\lambda - 60 \times \text{UTC}_{\text{off}} $$ where: * $\text{EoT}$ is the equation of time correction from above (in minutes) * $4\lambda$ converts longitude to minutes ($60 \times 24 / 360 = 4$ minutes per degree, with positive east) * $60 \times \text{UTC}_{\text{off}}$ converts the UTC offset from hours to minutes The local solar times are then converted to local standard times, in hours: $$ t_{rise} = t_{rise,solar} - \frac{\text{TimeOffset}}{60} $$ $$ t_{set} = t_{set,solar} - \frac{\text{TimeOffset}}{60} $$ UTC equivalents can be recovered by subtracting the UTC offset: $$ t_{rise,UTC} = t_{rise} - \text{UTC}_{\text{off}} $$ $$ t_{set,UTC} = t_{set} - \text{UTC}_{\text{off}} $$ ### Step 6: Handle Polar Conditions If the cosine term in Step 3 returned a value outside the range \[-1, 1] (sun never crosses the horizon), the code sets: $$ t_{rise} = 0.0, \quad t_{set} = 24.0 $$ This simplification does not distinguish between polar day and polar night—both result in a full 24-hour "day." However, the calculated sunrise and sunset times are only used to adjust timestamps for intervals that straddle sunrise or sunset, and for horizon shading calculations. In polar conditions, no intervals straddle the 0:00/24:00 boundaries, so the sunrise/sunset-specific adjustments simply don't apply. *** ## References * NOAA Solar Calculator. *NOAA earth System Research Laboratory, Global Monitoring Division*. [https://gml.noaa.gov/grad/solcalc/](https://gml.noaa.gov/grad/solcalc/) * Duffie, J. A., & Beckman, W. A. (2013). *Solar Engineering of Thermal Processes* (4th ed.). John Wiley & Sons. DOI: [10.1002/9781118671603](https://doi.org/10.1002/9781118671603) * Spencer, J. W. (1971). *Fourier series representation of the position of the sun.* Search, 2(5), 172. # Standard Backtracking Source: https://docs.plantpredict.com/models/tracking/backtracking/standard_backtracking ## Summary Standard Backtracking adjusts single-axis tracker angles to prevent row-to-row shading during low-sun-angle periods (early morning and late afternoon). PlantPredict implements a slope-aware backtracking algorithm based on Anderson & Mikofski (2020), which handles uniformly-sloped terrain. The classical Lorenzo et al. (2011) approach is a special case when the terrain is horizontal. ## Inputs | Name | Symbol | Units | Description | | ------------------------ | --------------- | ------- | -------------------------------------------------------------------- | | **True-Tracking Angle** | $\alpha$ | degrees | Rotation angle from [True Tracking](/models/tracking/true_tracking) | | **Collector Width** | $\ell_m$ | m | Tracker bay width perpendicular to rotation axis | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between tracker rotation axes | | **Ground Slope** | $\beta_g$ | degrees | Terrain slope angle (0° for horizontal) | | **Ground Slope Azimuth** | $\gamma_g$ | degrees | Direction the slope faces (downhill direction, clockwise from north) | | **Tracker Axis Azimuth** | $\gamma_{axis}$ | degrees | Tracker axis orientation (clockwise from north) | *** ## Outputs | Name | Symbol | Units | Description | | ---------------------- | ---------- | ------- | --------------------------------------------------------- | | **Backtracking Angle** | $\alpha_B$ | degrees | Adjusted tracker rotation angle with backtracking applied | *** ## Detailed Description The algorithm first decomposes the ground slope into two components relative to the tracker orientation: the axis tilt (along the rotation axis) and the cross-axis slope (perpendicular to the axis). The cross-axis slope determines the elevation difference between adjacent rows, which drives the backtracking geometry. The algorithm then checks whether inter-row shading would occur at the true-tracking angle, and if so, calculates the corrected rotation angle that eliminates shading. ### Axis Tilt The axis tilt ($\beta_a$) is the component of ground slope **along** the tracker rotation axis. When a tracker is installed on sloped terrain, the rotation axis itself may be tilted relative to horizontal. First, calculate the azimuth difference between the tracker axis and the slope direction: $$ \Delta\gamma = \gamma_{axis} - \gamma_g $$ The axis tilt is: $$ \beta_a = \arctan(\tan\beta_g \cos\Delta\gamma) $$ When the tracker axis is aligned with the slope direction ($\Delta\gamma = 0°$), the axis tilt equals the ground slope. When the tracker axis is perpendicular to the slope direction ($\Delta\gamma = 90°$), the axis tilt is zero. ### Cross-Axis Slope The cross-axis slope ($\beta_c$) is the component of ground slope **perpendicular** to the tracker rotation axis. This is a key parameter for backtracking because it determines the elevation difference between adjacent tracker rows. The cross-axis slope is: $$ \beta_c = -\arcsin(\sin\Delta\gamma \sin\beta_g) $$ The sign of $\beta_c$ indicates which adjacent row is higher: for a N-S oriented tracker, $\beta_c > 0$ means the east row is higher, while $\beta_c < 0$ means the west row is higher. For flat terrain ($\beta_g = 0°$), $\beta_c = 0°$. When the direction of the slope is parallel to the tracker axis ($\Delta\gamma = 0°$), $\beta_c = 0°$ because all rows are at the same elevation. When the direction of the slope is perpendicular to the tracker axis ($\Delta\gamma = 90°$), $|\beta_c| = \beta_g$. ### Backtracking Correction The ground coverage ratio (GCR) is the other key parameter for backtracking as it characterizes the array density: $$ GCR = \frac{\ell_m}{p} $$ **Shading condition** Inter-row shading occurs when the projected width of a tilted tracker row exceeds the "available" spacing between rows. Accounting for the cross-axis slope, shading occurs when: $$ |\cos(\alpha - \beta_c)| < GCR \cdot \cos\beta_c $$ **Corrected angle** When shading would occur, the tracker rotates away from the true-tracking position to eliminate the shade. The corrected angle that just eliminates shading is: $$ \alpha_B = \alpha - \text{sign}(\alpha) \cdot \arccos\left(\frac{|\cos(\alpha - \beta_c)|}{GCR \cdot \cos\beta_c}\right) $$ When the shading condition is not met, no correction is needed and the tracker follows the sun: $\alpha_B = \alpha$. ### Special Case: Flat Terrain (Lorenzo) For horizontal terrain ($\beta_g = 0°$), both axis tilt and cross-axis slope are zero ($\beta_a = \beta_c = 0°$). The backtracking condition becomes $|\alpha| > \arccos(GCR)$ and the backtracking equation simplifies to: $$ \alpha_B = \alpha - \text{sign}(\alpha) \cdot \arccos\left(\frac{|\cos\alpha|}{GCR}\right) $$ This is the classical formula from Lorenzo et al. (2011). *** ## References * Anderson, K. & Mikofski, M. (2020). *Slope-Aware Backtracking for Single-Axis Trackers.* NREL Technical Report NREL/TP-5K00-76626. DOI: [10.2172/1660126](https://doi.org/10.2172/1660126) * Lorenzo, E., Narvarte, L., & Muñoz, J. (2011). *Tracking and back-tracking.* Progress in Photovoltaics, 19(6), 747-753. DOI: [10.1002/pip.1085](https://doi.org/10.1002/pip.1085) # Terrain-Aware Backtracking Source: https://docs.plantpredict.com/models/tracking/backtracking/terrain_aware_backtracking ## Summary Terrain-aware is an algorithm introduced in PlantPredict Version 12 that calculates backtracking angles on a per-tracker basis, accounting for the actual elevation differences between neighboring , derived from the pile height input data. This algorithm is an adaptation of the method presented by Anderson and Jensen (2024), which generalizes backtracking to rolling terrain where each row may have different elevation relationships with its neighbors. Unlike standard backtracking, which assumes uniform cross-axis slope across an entire DC field, terrain-aware backtracking uses the local cross-axis slope angles derived from elevation data for each bay. For computational efficiency, the algorithm assumes neighboring bays remain at their standard backtracking angles rather than iteratively updating based on neighbors' corrected angles as in Anderson and Jensen (2024). Each tracker then adopts the most backtracked angle among its bays, minimizing shading. The algorithm assumes N–S oriented trackers. The terrain-aware backtracking algorithm is not compatible with the irradiance optimization and wind stow algorithms. ## Inputs | Name | Symbol | Units | Description | | -------------------------------------------------------------------------------------- | -------------------------- | ------- | ------------------------------------------------------------------------ | | **[Standard Backtracking](/models/tracking/backtracking/standard_backtracking) Angle** | $\alpha_B$ | degrees | Tracker rotation angle from standard backtracking (positive to the west) | | **Ground Coverage Ratio** | $GCR$ | — | Ratio of collector width to row pitch | | **Row-to-Row Pitch** | $p$ | m | Horizontal distance between tracker rotation axes | | **Solar Zenith Angle** | $\theta_z$ | degrees | Solar zenith angle | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Solar azimuth, measured clockwise from north | | **Bay Pile Heights** | $h_{S,i}$, $h_{N,i}$ | m | South and north pile heights for bay $i$ | | **East Neighbor Pile Heights** | $h'_{E,S,i}$, $h'_{E,N,i}$ | m | South and north pile heights of bay $i$'s east neighbor | | **West Neighbor Pile Heights** | $h'_{W,S,i}$, $h'_{W,N,i}$ | m | South and north pile heights of bay $i$'s west neighbor | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------- | ----------------- | ------- | ----------------------------------------------------- | | **Terrain-Corrected Angle** | $\alpha_{TABT,i}$ | degrees | Backtracking angle for bay $i$ accounting for terrain | *** ## Detailed Description ### Sun Projected Angle The sun projected angle $\gamma_p$ represents the sun's position projected onto the E–W vertical plane perpendicular to the tracker axis. For a N–S oriented tracker: $$ \gamma_p = \text{atan2}(-\cos e_s \sin\gamma_s, \, \sin e_s) $$ where $e_s = 90° - \theta_z$ is the solar elevation. $\gamma_p > 0$ indicates the sun is to the west, and $\gamma_p < 0$ indicates the sun is to the east. The full derivation can be found in Anderson and Jensen (2024). ### Local Cross-Axis Slope Angle The local cross-axis slope angles $\beta_{E,i}$ and $\beta_{W,i}$ are derived from the pile height data for each bay and its adjacent neighbors. For bay $i$ with south and north pile heights $h_{S,i}$ and $h_{N,i}$, the height differences to the east and west neighbors are calculated using average pile heights: $$ \Delta h_{E,i} = \frac{h'_{E,S,i} + h'_{E,N,i}}{2} - \frac{h_{S,i} + h_{N,i}}{2} $$ $$ \Delta h_{W,i} = \frac{h'_{W,S,i} + h'_{W,N,i}}{2} - \frac{h_{S,i} + h_{N,i}}{2} $$ The local cross-axis slope angles are then: $$ \beta_{E,i} = \max\left(0, \arctan\left(\frac{\Delta h_{E,i}}{p}\right)\right) $$ $$ \beta_{W,i} = \min\left(0, \arctan\left(\frac{\Delta h_{W,i}}{p}\right)\right) $$ where $p$ is the row-to-row pitch. The sign convention is: $\beta_{E,i} \geq 0$ (positive when east neighbor is higher) and $\beta_{W,i} \leq 0$ (negative when west neighbor is higher). Using the average pile heights represents a deliberate trade-off. A worst-case approach—using the maximum height difference between any pair of piles—would eliminate shading entirely but causes excessive backtracking, resulting in significant transposition losses. Conversely, the average approach may leave small amounts of residual shading in some configurations, but empirical testing has shown it provides the best balance between shade mitigation and energy capture. ### Neighbor Selection At each timestep, the algorithm selects the relevant local cross-axis slope based on the sun's position. When the sun is in the eastern sky ($\gamma_p \leq 0$), the slope to the east neighbor applies. When the sun is in the western sky ($\gamma_p > 0$), the slope to the west neighbor applies. $$ \beta_{neighbor,i} = \begin{cases} \beta_{E,i} & \text{if } \gamma_p \leq 0 \\ \beta_{W,i} & \text{if } \gamma_p > 0 \end{cases} $$ ### Shade Fraction Calculation The shaded fraction $f_{shade,i}$ quantifies how much of bay $i$'s collector surface is shaded by the adjacent row. Following Anderson and Jensen (2024), the shade fraction is calculated as: $$ f_{shade,i} = 1 - \frac{\cos(\gamma_p - \beta_{neighbor,i})}{GCR \cdot |\cos(\alpha_B - \gamma_p)| \cdot \cos\beta_{neighbor,i}} $$ This simplified form results from two assumptions: (1) neighboring rows remain at the standard backtracking angle $\alpha_B$, and (2) the distance between the rotation axis and the front of the PV module is negligible compared to the collector width. If $f_{shade,i} \leq 0$, no shading occurs and the bay does not require extra backtracking. ### Backtracking Correction When shading is detected ($f_{shade,i} > 0$), the algorithm calculates a corrected angle that eliminates shading. Using the generalized shade fraction from Anderson and Jensen (2024)—where the subject row and neighbor may have different rotation angles—and setting $f_{shade,i} = 0$ gives: $$ \alpha_{TABT,i} = \gamma_p - \text{sign}(\gamma_p) \cdot \arccos\left(\frac{2\cos(\gamma_p - \beta_{neighbor,i})}{GCR \cdot \cos\beta_{neighbor,i}} - \cos(\alpha_B - \gamma_p)\right) $$ The tracker adopts the most backtracked angle among all its bays to minimize shading on all the bays: $$ \alpha_{tracker} = \begin{cases} \displaystyle\min_i(\alpha_{TABT,i}) & \text{if } \gamma_p > 0 \text{ (sun in west)} \\[1em] \displaystyle\max_i(\alpha_{TABT,i}) & \text{if } \gamma_p < 0 \text{ (sun in east)} \end{cases} $$ If the argument of $\arccos$ has magnitude greater than 1 for any bay, no valid solution exists for the bay in question (shade cannot be avoided by rotating the bay) and the tracker moves to stow position ($\alpha_{tracker} = 0°$) to maximize diffuse irradiance. Similarly, if the computed angle would require the tracker to face away from the sun ($|\alpha_{TABT,i} - \gamma_p| > 90°$), the tracker stows instead. The calculated tracker angle is then reassigned to every bay on the tracker: $$ \alpha_{TABT,i} \leftarrow \alpha_{tracker} $$ All bays share the same rotation angle while retaining their individual terrain-derived surface tilt and azimuth for downstream calculations (transposition and shade engines). *** ## References * Anderson, K. S., & Jensen, A. R. (2024). *Shaded fraction and backtracking in single-axis trackers on rolling terrain.* Journal of Renewable and Sustainable Energy, 16, 023504. DOI: [10.1063/5.0202220](https://doi.org/10.1063/5.0202220) # Fixed-Tilt Arrays Source: https://docs.plantpredict.com/models/tracking/fixed_tilt_arrays ## Summary Fixed-tilt arrays maintain a constant orientation throughout the year. PlantPredict assigns the user-defined tilt ($\beta_m$) and azimuth ($\gamma_m$) angles directly—no calculations or optimizations are performed. These constant values are used for all timesteps in the prediction. ## Inputs / Outputs | Name | Symbol | Units | Description | | ------------------------ | ---------- | ------- | -------------------------------------------------------------------------------------- | | **Module Tilt Angle** | $\beta_m$ | degrees | Angle of module surface from horizontal (0° = horizontal, 90° = vertical) | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Direction the module faces, clockwise from North (0° = N, 90° = E, 180° = S, 270° = W) | If $\beta_m = 0°$, a small offset of $0.001°$ is applied so that the module surface has a definable azimuth (at exactly 0° the surface is horizontal and its azimuth is undefined). The , which determines how much direct beam irradiance reaches the module surface, is calculated separately (see [Incidence Angle](./incidence_angle)). # Incidence Angle Calculation Source: https://docs.plantpredict.com/models/tracking/incidence_angle ## Summary The angle of incidence is the angle between incoming solar rays and the normal (perpendicular) to the module surface. Accurate calculation of the angle of incidence is essential for determining direct beam irradiance on the plane of array and applying incidence angle modifiers. ## Inputs | Name | Symbol | Units | Description | | ------------------------- | ---------- | ------- | -------------------------------------------------------------- | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Solar azimuth, measured clockwise from north | | **Surface Tilt Angle** | $\beta_m$ | degrees | Angle of module surface from horizontal | | **Surface Azimuth Angle** | $\gamma_m$ | degrees | Azimuth angle of surface normal, measured clockwise from North | *** ## Outputs | Name | Symbol | Units | Description | | ---------------------- | -------------- | ------- | ------------------------------------------- | | **Angle of Incidence** | $\theta_{AOI}$ | degrees | Angle between sun's rays and surface normal | *** ## Detailed Description ### Vector Formulation The angle of incidence is calculated using the dot product of the solar position vector and the surface normal vector. **Solar position unit vector**: $$ \vec{s} = \begin{bmatrix} \sin(\theta_z) \sin(\gamma_s) \\ \cos(\theta_z) \\ \sin(\theta_z) \cos(\gamma_s) \end{bmatrix} $$ **Surface normal unit vector**: $$ \vec{n} = \begin{bmatrix} \sin(\beta_m) \sin(\gamma_m) \\ \cos(\beta_m) \\ \sin(\beta_m) \cos(\gamma_m) \end{bmatrix} $$ **Angle of incidence**: $$ \cos(\theta_{AOI}) = \vec{s} \cdot \vec{n} $$ $$ \theta_{AOI} = \arccos\left( \sin(\beta_m) \sin(\theta_z) \cos(\gamma_s - \gamma_m) + \cos(\beta_m) \cos(\theta_z) \right) $$ *** ## References * Iqbal, M. (1983). *An Introduction to Solar Radiation.* Academic Press, p. 23. # Irradiance Optimization Source: https://docs.plantpredict.com/models/tracking/irradiance_optimization ## Summary Irradiance optimization is a tracker angle calculation method that maximizes total rather than simply minimizing . It operates after the base tracking angle is determined (true tracking or backtracking) and overrides that angle when an alternative would provide higher total POA irradiance. PlantPredict implements two modes: a built-in optimization algorithm (Version 11+) and integration with the ArrayTechnologies API. The built-in algorithm evaluates candidate angles while accounting for tracker movement penalties and hesitation factors. If wind stow is also enabled, wind stow takes priority and overrides the irradiance-optimized angle when wind thresholds are exceeded. ## Inputs | Name | Symbol | Units | Description | | -------------------------- | ----------------------- | --------- | --------------------------------------------------------------------- | | **Tracker Rotation Angle** | $\alpha$ | degrees | Tracker angle from tracking algorithm (true tracking or backtracking) | | **Front POA Irradiance** | $G_{POA,front}(\alpha)$ | W/m² | Front-side plane-of-array irradiance as a function of tracker angle | | **Hesitation Factor** | $f_h$ | — | 0 to 1 factor representing control system inertia | | **Rotation Speed** | $\omega$ | degrees/s | Tracker angular rotation speed | | **Time Interval** | $\Delta t$ | seconds | Weather data time step | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------- | -------------- | ------- | --------------------------------------------- | | **Optimized Tracker Angle** | $\alpha_{opt}$ | degrees | Final tracker angle maximizing POA irradiance | *** ## Detailed Description ### PlantPredict Built-In Optimization PlantPredict's built-in irradiance optimization algorithm evaluates multiple candidate tracker angles to identify the angle that maximizes total POA irradiance. The algorithm operates only when GHI is non-zero. For each integer degree $\alpha_j$ between 0° and $\alpha$ (from 0° to $\alpha$ when $\alpha > 0$, from $\alpha$ to 0° when $\alpha < 0$), the algorithm computes $G_{POA,front}(\alpha_j)$ using the configured [ model](/models/transposition/overview) (Hay-Davies or Perez) and selects the angle that maximizes it: $$ \alpha_{ideal} = \underset{\alpha_j \in [0, \alpha]}{\arg\max} \, G_{POA,front}(\alpha_j) $$ Optimization is applied only if the ideal angle provides higher POA irradiance than the baseline tracking angle ($G_{POA,front}(\alpha_{ideal}) > G_{POA,front}(\alpha)$). If not, the original angle is retained: $\alpha_{opt} = \alpha$. Historically, irradiance optimization algorithms have over-predicted field gains because they idealize tracker mechanics. Real trackers do not move instantaneously, consume energy when moving, and face asymmetric risk—the penalty for being at the wrong angle during clear conditions far exceeds the gain from optimization in diffuse conditions. To address this, PlantPredict introduces two correction factors. **Movement Penalty** ($\mu$): Represents the fraction of the timestep the tracker spends rotating from its current position to the ideal position. During transit, the tracker is at intermediate angles rather than the optimal angle. Instead of integrating over all transit angles, the algorithm approximates this using the midpoint between start and end positions. $$ \mu = \frac{|\alpha_{ideal} - \alpha|}{\omega \cdot \Delta t} $$ In PlantPredict Version 12, the "Rotation Speed" input is actually used as a rotation **pace** in **seconds/degree** (the reciprocal of a speed). Enter the pace value (e.g. 0.5 s/° for a 2°/s tracker) regardless of the unit shown in the UI. This issue has been fixed in Version 13; the Version 12 and below UI label and unit will be corrected in a future release. **Hesitation Factor** ($f_h$): An empirical term representing control system reluctance to adopt the idealized angle. This accounts for sensor uncertainty, unknown future weather conditions, energy consumed during movement, and the asymmetric risk of incorrect positioning. The adjusted hesitation factor is constrained so combined penalties do not exceed 1: $$ f_{h,adj} = \begin{cases} f_h, & \text{if } \mu + f_h \leq 1 \\ 1 - \mu, & \text{if } \mu + f_h > 1 \end{cases} $$ **Corrected Angle Calculation**: When optimization is applied, the optimized angle is a weighted average of three contributions: $$ \alpha_{opt} = (1 - \mu - f_{h,adj}) \cdot \alpha_{ideal} + \mu \cdot \frac{\alpha_{ideal} + \alpha}{2} + f_{h,adj} \cdot \alpha $$ * **Ideal contribution**: Time at the optimal angle, weighted by $(1 - \mu - f_{h,adj})$ * **Traversal contribution**: Time spent rotating, approximated at the midpoint angle, weighted by $\mu$ * **Hesitation contribution**: Bias toward the original tracking angle due to control system conservatism, equal to the original angle weighted by $f_{h,adj}$ When both factors are zero, the algorithm uses pure idealized optimization. When tuned appropriately, the factors produce more realistic estimates matching field observations. ### ArrayTechnologies External Optimization When configured to use ArrayTechnologies mode, PlantPredict sends site parameters, tracker configuration, and weather data to the ArrayTechnologies API. The service performs proprietary optimization calculations and returns time-series of optimized tracker angles. PlantPredict applies the returned angles directly, bypassing internal tracking and optimization calculations. The ArrayTechnologies algorithms are proprietary and not documented here. *** ## References * Kelly, N. A., & Gibson, T. L. (2011). Increasing the solar photovoltaic energy capture on sunny and cloudy days. *Solar Energy*, 85(1), 111–125. DOI: [10.1016/j.solener.2010.10.015](https://doi.org/10.1016/j.solener.2010.10.015) * Marion, W., & Dobos, A. (2013). Rotation Angle for the Optimum Tracking of One-Axis Trackers. *NREL Technical Report* NREL/TP-6A20-58891. DOI: [10.2172/1089596](https://doi.org/10.2172/1089596) * Passow, K., Fusaro, D., Moseley, J., Shah, S., & Lee, K. (2022). Strategies to Optimize and Validate Tracking Performance of Single-Axis Trackers on Diffuse Sites. *2022 IEEE 49th Photovoltaic Specialists Conference (PVSC)*. DOI: [10.1109/PVSC48317.2022.9938667](https://doi.org/10.1109/PVSC48317.2022.9938667) * Rodríguez-Gallegos, C. D., Gandhi, O., Panda, S. K., & Reindl, T. (2020). On the PV Tracker Performance: Tracking the sun Versus Tracking the Best Orientation. *IEEE Journal of Photovoltaics*, 10(5), 1474–1480. DOI: [10.1109/JPHOTOV.2020.3006994](https://doi.org/10.1109/JPHOTOV.2020.3006994) # Tracker & Array Orientation Overview Source: https://docs.plantpredict.com/models/tracking/overview Tracker & Array Orientation models determine the angular position of PV modules for each timestep. PlantPredict supports fixed-tilt arrays and horizontal single-axis trackers with multiple tracking modes and override options. ## Models in This Section ### [Fixed-Tilt Arrays](fixed_tilt_arrays) Static orientation with user-defined tilt and angles. ### [True Tracking (Single-Axis)](true_tracking) Base tracking algorithm that rotates modules to minimize . Within the tracking plane (perpendicular to the rotation axis), modules face the sun directly. ### Backtracking Models Shade avoidance algorithms that reduce rotation angle to prevent row-to-row shading: * **[Standard Backtracking](backtracking/standard_backtracking)**: Standard geometric backtracking for flat terrain. Modules rotate back just enough to avoid row-to-row shading, assuming a uniform plant with a single angle applied to the entire DC field. * **[Terrain-Aware Backtracking (TABT)](backtracking/terrain_aware_backtracking)**: Advanced backtracking accounting for terrain slopes between rows, designed to avoid row-to-row shading (Version 12). Each tracker can have its own rotation angle based on local terrain geometry. ### [User-Defined Tracking Angles](user_defined_tracking_angles) Custom rotation angles supplied via time-series data, bypassing the normal tracking algorithm entirely. Angles can be defined at the DC field level using time-series data (one angle per timestep for the entire field) or, with a 3D scene, on a per-tracker basis using a Time Series Schedule. ### [Irradiance Optimization](irradiance_optimization) Optimizes tracker angle to maximize : * **PlantPredict**: Built-in optimization algorithm * **Array Technologies API**: External optimization via ATI DiffuseStow API ### [Wind Stow](wind_stow) Protective stow position during high wind conditions: * **PlantPredict**: Threshold-based stow using wind gust speed * **Array Technologies API**: External stow calculation via ATI Wind Stow API ### [Incidence Angle](incidence_angle) Calculates angle between sun vector and module normal for fixed-tilt and tracking systems. ## Tracker Angle Hierarchy For single-axis trackers, the final rotation angle is determined by priority: **Wind Stow** > **Irradiance Optimization** > **Backtracking** > **True Tracking** Higher priority models override lower priority results when active. Note: Terrain-Aware Backtracking operates independently and should not be combined with Irradiance Optimization or Wind Stow. User-Defined Tracking Angles bypass the hierarchy entirely—the supplied angle is used directly. # True Tracking Source: https://docs.plantpredict.com/models/tracking/true_tracking ## Summary True Tracking calculates the rotation angle for uniform-slope single-axis trackers that minimizes by following the sun's daily path. This is the base tracking algorithm—backtracking and other modes modify this result when active. ## Inputs | Name | Symbol | Units | Description | | -------------------------- | --------------------- | ------- | ------------------------------------------------------- | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Horizontal angle of sun, clockwise from North | | **Tracker Axis Azimuth** | $\gamma_{axis}$ | degrees | Azimuth orientation of tracker rotation axis from North | | **Tracker Axis Tilt** | $\beta_{axis}$ | degrees | Tilt of tracker rotation axis from horizontal | | **Minimum Rotation Limit** | $\alpha_{min}$ | degrees | Mechanical limit for negative rotation | | **Maximum Rotation Limit** | $\alpha_{max}$ | degrees | Mechanical limit for positive rotation | | **Nighttime Stow Angle** | $\alpha_{stow,night}$ | degrees | Rotation angle when sun is below horizon | *** ## Outputs | Name | Symbol | Units | Description | | -------------------------- | ---------- | ------- | ------------------------------------------------------------------ | | **Tracker Rotation Angle** | $\alpha$ | degrees | Rotation angle about tracker axis (positive or negative) | | **Module Tilt Angle** | $\beta_m$ | degrees | Resulting tilt of module surface from horizontal (always positive) | | **Module Azimuth Angle** | $\gamma_m$ | degrees | Resulting azimuth of module surface normal (0°–360°) | *** ## Detailed Description The algorithm transforms solar position from geographic coordinates to the tracker reference frame, then calculates the rotation angle that aligns the module normal with the sun in the tracking plane (perpendicular to the rotation axis). ### Determination of Tracker Rotation Angle The rotation angle that minimizes is (see Marion & Dobos, 2013 for full derivation): $$ \alpha = \arctan\left(\frac{\sin(\theta_z) \sin(\gamma_s - \gamma_{axis})}{\cos(\beta_{axis}) \cos(\theta_z) + \sin(\beta_{axis}) \sin(\theta_z) \cos(\gamma_s - \gamma_{axis})}\right) $$ For horizontal trackers ($\beta_{axis} = 0$), this simplifies to: $$ \alpha = \arctan\left(\tan(\theta_z) \sin(\gamma_s - \gamma_{axis})\right) $$ The rotation is then constrained by mechanical limits: $$ \alpha \leftarrow \max(\alpha_{min}, \min(\alpha, \alpha_{max})) $$ If $\alpha = 0°$, a small offset of $0.001°$ is applied so that the module surface has a definable azimuth (at exactly 0° the surface is horizontal and its azimuth is undefined). If the sun is below the horizon ($\theta_z > 90°$), the tracker moves to the stow position: $\alpha = \alpha_{stow,night}$. ### Module Orientation from Tracker Angle The module tilt and azimuth are derived from the tracker rotation angle and axis geometry. **Module Tilt:** $$ \beta_m = \arccos\left(\cos(\alpha) \cos(\beta_{axis})\right) $$ For horizontal trackers ($\beta_{axis} = 0$), this simplifies to $\beta_m = |\alpha|$. **Module Azimuth:** The module azimuth is calculated from the horizontal components of the surface normal vector: $$ n_E = \sin(\alpha)\cos(\gamma_{axis}) - \cos(\alpha)\sin(\beta_{axis})\sin(\gamma_{axis}) $$ $$ n_N = -\sin(\alpha)\sin(\gamma_{axis}) - \cos(\alpha)\sin(\beta_{axis})\cos(\gamma_{axis}) $$ $$ \gamma_m = \arctan2(n_E, n_N) $$ For horizontal trackers ($\beta_{axis} = 0$), this simplifies to $\gamma_m = (\gamma_{axis} \pm 90°) \mod 360°$ depending on the sign of $\alpha$. *** ## References * Marion, B., & Dobos, A. (2013). *Rotation Angle for the Optimum Tracking of One-Axis Trackers.* NREL/TP-6A20-58891. DOI: [10.2172/1089596](https://doi.org/10.2172/1089596) # User-Defined Tracking Angles Source: https://docs.plantpredict.com/models/tracking/user_defined_tracking_angles ## Summary User-Defined Tracking Angles allow the user to override the calculated tracker rotation angle with custom values supplied via time-series data. This mode bypasses the normal tracking algorithm (true tracking, backtracking, irradiance optimization, and wind stow) and uses the provided angles directly. Angles can be defined at the DC field level using time-series data, or—when a 3D scene is present—on a per-tracker basis using a Time Series Schedule. ## Inputs | Name | Symbol | Units | Description | | --------------------------------- | --------------- | ------- | ----------------------------------------------------------------------------- | | **Tracking Angle Time Series** | $\alpha_{ts}$ | degrees | User-supplied rotation angle for each timestep | | **Per-Tracker Angle Time Series** | $\alpha_{ts,i}$ | degrees | User-supplied rotation angle for tracker $i$ at each timestep (3D scene only) | *** ## Outputs | Name | Symbol | Units | Description | | ------------------------------ | ---------- | ------- | -------------------------------------------------------------- | | **Tracker Rotation Angle** | $\alpha$ | degrees | Applied rotation angle about the tracker axis (DC field level) | | **Per-Tracker Rotation Angle** | $\alpha_i$ | degrees | Applied rotation angle for tracker $i$ (3D scene only) | *** ## Detailed Description ### DC Field Level When the DC field's tracking method is set to **Time Series**, the tracker rotation angle for each timestep is read directly from the uploaded time-series data: $\alpha = \alpha_{ts}$. Each DC field can be assigned its own time-series data set; within a given DC field a single angle is applied uniformly at each timestep. The time-series data is uploaded on the [Time Series Data](/user-guide/ui/time-series-data) page and assigned to the target DC field. Each entry specifies the tracker rotation angle in degrees for the corresponding timestep. In this mode, mechanical rotation limits (minimum and maximum tracking limit angles) are **not** enforced—the user-supplied angle is used as-is. If the user-supplied angle is exactly 0°, a small offset of 0.001° is applied so that the module surface has a definable azimuth (at exactly 0° the surface is horizontal and its azimuth is undefined). For any timestep where time-series data is unavailable (e.g., the series is shorter than the weather file or not assigned), the algorithm falls back to a standard tracking algorithm: true tracking if the DC field uses CdTe modules, standard backtracking for any other module type. ### 3D Scene (Per-Tracker) When a 3D scene is present, the **Time Series Schedule** option in the Tracker Rotation Model dropdown enables per-tracker user-defined angles. Rather than applying a single angle to the entire DC field, each individual tracker $i$ receives its own rotation angle at each timestep: $\alpha_i = \alpha_{ts,i}$. The time-series data is uploaded on the [3D Scene Overview](/user-guide/ui/3d-scene-overview) page. The 3D engine receives per-tracker angles as fixed-point integers (degrees × 100, so 20.45° is stored as 2045). The angles are used directly by the 3D shading engine with no zero-angle offset and no mechanical limit clamping. *** # Wind Stow Source: https://docs.plantpredict.com/models/tracking/wind_stow ## Summary Wind Stow is a protective mechanism that commands single-axis trackers to a specified angle when wind conditions exceed safe operating limits. PlantPredict supports two wind stow implementations: PlantPredict Wind Stow (threshold-based comparison using wind gust speed) and Array Technologies Wind Stow (external API-based calculation using proprietary algorithms). Wind stow has the highest priority in the tracker angle determination hierarchy, overriding both base tracking and irradiance optimization. ## Inputs | Name | Symbol | Units | Description | | ------------------------- | -------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------- | | **Wind Gust Speed** | $v_{gust}$ | m/s | Wind gust speed from weather data | | **Wind Stow Threshold** | $v_{threshold}$ | m/s | Threshold for stow activation | | **Stow Dwell Time** | $t_{dwell}$ | min | (PlantPredict mode only) Minimum time $v_{gust}$ must stay at or below $v_{threshold}$ after a stow before normal tracking resumes | | **Current Tracker Angle** | $\alpha$ | degrees | Tracker rotation angle before wind stow check | | **Wind Stow Angle** | $\alpha_{stow,wind}$ | degrees | Stow position | *** ## Outputs | Name | Symbol | Units | Description | | --------------------------- | ---------------- | ------- | -------------------------------------------------- | | **Commanded Tracker Angle** | $\alpha_{final}$ | degrees | Final tracker rotation angle after wind stow logic | *** ## Detailed Description ### Override Hierarchy Wind stow has the highest priority in PlantPredict's tracker angle determination. When wind stow is activated, it overrides both the base tracking angle and any irradiance optimization adjustments. The terrain-aware backtracking algorithm is not compatible with the irradiance optimization and wind stow algorithms; it operates as a standalone tracking mode. ### PlantPredict Wind Stow PlantPredict's built-in wind stow activates when wind gust speed exceeds the configured threshold: $$ v_{gust} > v_{threshold} $$ When triggered, the tracker moves to the stow angle while preserving its east/west orientation: $$ \alpha_{final} = \text{sign}(\alpha) \times \alpha_{stow,wind} $$ This mode requires `WindGust` data in the weather file; wind gust values are not synthesized from mean wind speed. **Stow dwell (reset delay)** After a stow event, the tracker **remains** at the wind stow angle until $v_{gust}$ has been at or below $v_{threshold}$ for a **continuous** period of $t_{dwell}$ (minutes). Elapsed time is accumulated using the weather file timestep; if a gust again exceeds the threshold before the dwell completes, the timer resets. This models operator delay to avoid rapid stow/tracking cycling. A **Stow Dwell Time** of zero minutes reproduces the prior behavior of resuming in the same timestep in which the gust is below the threshold. The input appears on the DC Field **Table** tab when **Wind Stow Model** is **PlantPredict** (not for Array Technologies mode). The default for new DC Fields is 30 minutes; a null value is treated as 0 for existing projects. See also [Table](/user-guide/ui/power-plant-builder-dc-field-table). ### Array Technologies Wind Stow When configured to use Array Technologies mode, PlantPredict sends tracker configuration and weather data to the Array Technologies API. The service performs proprietary wind stow calculations and returns time-series of stow angles. PlantPredict applies the returned angles directly, overriding internal tracking calculations. The Array Technologies algorithms are proprietary and not documented here. *** # 3D Transposition Source: https://docs.plantpredict.com/models/transposition/3d_transposition ## Summary 3D transposition calculates on a -by-bay basis within a 3D scene, accounting for variations in tracker rotation angle and tracker axis tilt. This transposition method is automatically invoked when 3D site-level scene modeling is enabled. It uses the pvlib implementation of the Perez transposition model to compute POA irradiance for each tracker bay at each timestamp, incorporating the terrain-corrected bay orientation when terrain-aware backtracking is enabled. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | ----------------- | ------- | --------------------------------------------------------------------------------------------------- | | **Tracker Axis Azimuth** | $\gamma_{axis}$ | degrees | Azimuth of tracker axis measured clockwise from north | | **Standard Backtracking Angle** | $\alpha_B$ | degrees | Tracker rotation angle from baseline tracking algorithm (true tracking or backtracking, no terrain) | | **Terrain-Corrected Angle** | $\alpha_{TABT,i}$ | degrees | East-west rotation angle of bay $i$ | | **Tracker Axis Tilt** | $\beta_{axis,i}$ | degrees | North-south tilt of tracker axis for bay $i$ | | **Bay Length** | $L_{b,i}$ | m | Length of bay $i$ (used for weighted averaging) | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface | | **Direct Normal Irradiance** | $DNI$ | W/m² | Direct beam irradiance perpendicular to sun | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse irradiance on horizontal surface | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Direct normal irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Solar Azimuth Angle** | $\gamma_s$ | degrees | Sun azimuth angle measured clockwise from north | | **Albedo** | $\rho$ | — | Ground reflectance (0-1) | *** ## Outputs | Name | Symbol | Units | Description | | -------------------------------------- | ------------- | ----- | ------------------------------------------------------- | | **Transposition Factor (Global)** | $TF_{POA}$ | — | Ratio of 3D to baseline POA global irradiance | | **Transposition Factor (Beam)** | $TF_{beam}$ | — | Ratio of 3D to baseline POA beam irradiance | | **Transposition Factor (Sky Diffuse)** | $TF_{sky}$ | — | Ratio of 3D to baseline POA sky diffuse irradiance | | **Transposition Factor (Ground)** | $TF_{ground}$ | — | Ratio of 3D to baseline POA ground-reflected irradiance | *** ## Detailed Description ### Bay Orientation For each bay $i$, bay tilt $\beta_i$ and azimuth $\gamma_i$ are computed from the terrain-corrected angle $\alpha_{TABT,i}$ and tracker axis tilt $\beta_{axis,i}$, using pvlib's implementation: $$ \beta_i = \arccos(\cos\alpha_{TABT,i} \cdot \cos\beta_{axis,i}) $$ $$ \gamma_i = \gamma_{axis} + \arcsin\left(\frac{\sin\alpha_{TABT,i}}{\sin\beta_i}\right) $$ ### Baseline POA Baseline POA irradiance components ($G_{beam,baseline}$, $G_{sky,baseline}$, $G_{ground,baseline}$) are calculated assuming flat terrain ($\beta_{axis} = 0$) using the standard backtracking angle $\alpha_B$ and pvlib's implementation of the Perez model with the All Sites Composite 1990 coefficient set. The Perez model uses the horizontal irradiance components ($GHI$, $DNI$, $DHI$), extraterrestrial irradiance ($DNI_{extra}$), solar geometry ($\theta_z$, $\gamma_s$), and albedo ($\rho$) as inputs. ### 3D POA POA irradiance components ($G_{beam,i}$, $G_{sky,i}$, $G_{ground,i}$) are calculated for each bay $i$ using the terrain-corrected angle $\alpha_{TABT,i}$ and tracker axis tilt $\beta_{axis,i}$, with the same Perez model inputs. ### Transposition Factors For each irradiance component, the transposition factor is computed for each bay: $$ TF_{beam,i} = \frac{G_{beam,i}}{G_{beam,baseline}} $$ $$ TF_{sky,i} = \frac{G_{sky,i}}{G_{sky,baseline}} $$ $$ TF_{ground,i} = \frac{G_{ground,i}}{G_{ground,baseline}} $$ $$ TF_{POA,i} = \frac{G_{beam,i} + G_{sky,i} + G_{ground,i}}{G_{beam,baseline} + G_{sky,baseline} + G_{ground,baseline}} $$ ### Field Average The transposition factors are averaged across all bays, weighted by bay length $L_{b,i}$: $$ TF_{beam} = \frac{\sum_i L_{b,i} \cdot G_{beam,i}}{\sum_i L_{b,i} \cdot G_{beam,baseline}} $$ $$ TF_{sky} = \frac{\sum_i L_{b,i} \cdot G_{sky,i}}{\sum_i L_{b,i} \cdot G_{sky,baseline}} $$ $$ TF_{ground} = \frac{\sum_i L_{b,i} \cdot G_{ground,i}}{\sum_i L_{b,i} \cdot G_{ground,baseline}} $$ $$ TF_{POA} = \frac{\sum_i L_{b,i} \cdot (G_{beam,i} + G_{sky,i} + G_{ground,i})}{\sum_i L_{b,i} \cdot (G_{beam,baseline} + G_{sky,baseline} + G_{ground,baseline})} $$ A value less than 1 indicates a reduction in that irradiance component due to terrain effects; a value greater than 1 indicates an increase. The calculated field-averaged transposition factors are applied as site-level modifiers to the POA irradiance components computed by the standard transposition model. This allows the main prediction engine to account for terrain effects without requiring bay-level calculations throughout the full simulation. *** ## References * Marion, W. F., & Dobos, A. P. (2013). *Rotation Angle for the Optimum Tracking of One-Axis Trackers.* NREL Technical Report NREL/TP-6A20-58891. DOI: [10.2172/1089596](https://doi.org/10.2172/1089596) * Perez, R., Seals, R., Ineichen, P., Stewart, R., & Menicucci, D. (1987). *A new simplified version of the Perez diffuse irradiance model for tilted surfaces.* Solar Energy, 39(3), 221–231. DOI: [10.1016/S0038-092X(87)80031-2](https://doi.org/10.1016/S0038-092X\(87\)80031-2) * Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). *Modeling daylight availability and irradiance components from direct and global irradiance.* Solar Energy, 44(5), 271–289. DOI: [10.1016/0038-092X(90)90055-H](https://doi.org/10.1016/0038-092X\(90\)90055-H) * Holmgren, W. F., Hansen, C. W., & Mikofski, M. A. (2018). *pvlib python: A python package for modeling solar energy systems.* Journal of Open Source Software, 3(29), 884. DOI: [10.21105/joss.00884](https://doi.org/10.21105/joss.00884) * pvlib python. *Irradiance module source code.* [https://pvlib-python.readthedocs.io/en/latest/\_modules/pvlib/irradiance.html](https://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/irradiance.html) # Hay-Davies Model Source: https://docs.plantpredict.com/models/transposition/hay_davies ## Summary The Hay-Davies transposition model separates sky diffuse irradiance into two components: a component concentrated around the solar disk and an background component distributed uniformly across the sky dome. The model uses an based on atmospheric transmittance to weight the circumsolar fraction, derived from the ratio of to extraterrestrial DNI. Unlike the Perez model, Hay-Davies does not include a horizon brightening component. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | -------------- | ------- | --------------------------------------------- | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface | | **Direct Normal Irradiance** | $DNI$ | W/m² | Direct beam irradiance perpendicular to sun | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse irradiance on horizontal surface | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Direct normal irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Angle of Incidence** | $\theta_{AOI}$ | degrees | Angle between sun and surface normal | | **Surface Tilt Angle** | $\beta_m$ | degrees | Tilt angle of surface from horizontal | | **Albedo** | $\rho$ | — | Ground reflectance (0–1) | *** ## Outputs | Name | Symbol | Units | Description | | ---------------------- | ------------ | ----- | --------------------------------------------- | | **POA Beam** | $G_{beam}$ | W/m² | Direct beam irradiance on tilted surface | | **POA Sky Diffuse** | $G_{sky}$ | W/m² | Sky diffuse irradiance on tilted surface | | **POA Ground Diffuse** | $G_{ground}$ | W/m² | Ground-reflected irradiance on tilted surface | *** ## Detailed Description ### Anisotropy Index The Hay-Davies model uses an anisotropy index $A_i$ to quantify the fraction of diffuse irradiance exhibiting directional characteristics. The anisotropy index represents the ratio of beam transmittance through the atmosphere: $$ A_i = \frac{DNI}{DNI_{extra}} $$ At high zenith angles where air mass calculations become unreliable ($\theta_z \geq 87.9°$), the anisotropy index is set to zero ($A_i = 0$). The anisotropy index ranges from 0 (overcast conditions with fully isotropic diffuse) to 1 (clear sky with high circumsolar fraction), though in practice $A_i$ rarely exceeds \~0.8 due to atmospheric scattering even under clear skies. ### Circumsolar Component The circumsolar component represents diffuse irradiance concentrated around the solar disk. This formulation assumes circumsolar diffuse follows the same geometric projection as beam irradiance: $$ G_{circumsolar} = DHI \cdot A_i \cdot \frac{\cos(\theta_{AOI})}{\cos(\theta_z)} $$ The ratio $\cos(\theta_{AOI})/\cos(\theta_z)$ is the projection ratio that converts horizontal circumsolar irradiance to the tilted plane. When the sun is behind the module ($\cos(\theta_{AOI}) < 0$), the circumsolar component is set to zero. To avoid numerical instabilities near the horizon, a minimum threshold is applied: $\cos(\theta_z) \geq 0.01745$ (corresponding to $\theta_z \leq 89°$). ### Isotropic Component The isotropic component represents uniform diffuse irradiance distributed across the sky dome: $$ G_{isotropic} = DHI \cdot (1 - A_i) \cdot \frac{1 + \cos(\beta_m)}{2} $$ The term $(1 + \cos(\beta_m))/2$ is the from the tilted surface to the sky dome. ### Circumsolar Allocation The circumsolar component can be allocated to beam or diffuse sky POA irradiance based on user selection (default: Diffuse): **Circumsolar Allocation to Direct Beam:** $$ G_{sky} = G_{isotropic} $$ $$ G_{beam} = DNI \cdot \cos(\theta_{AOI}) + G_{circumsolar} $$ **Circumsolar Allocation to Sky Diffuse:** $$ G_{sky} = G_{isotropic} + G_{circumsolar} $$ $$ G_{beam} = DNI \cdot \cos(\theta_{AOI}) $$ Circumsolar irradiance originates from near the solar disk and is blocked by obstructions the same way direct beam is. Allocating it to beam ensures that row-to-row shading calculations apply appropriate losses to circumsolar. Allocating to diffuse treats circumsolar as unaffected by direct shading, which may be appropriate for unshaded systems or when shading is negligible. ### Ground-Reflected Component The ground-reflected component accounts for irradiance reflected from the ground onto the tilted surface: $$ G_{ground} = \frac{1}{2} \cdot \rho \cdot GHI \cdot (1 - \cos(\beta_m)) $$ The term $(1 - \cos(\beta_m))/2$ is the view factor from the tilted surface to the ground. ### Quality Control Physical constraints are enforced by clamping values: * If $G_{isotropic} < 0$ → $G_{isotropic} = 0$ * If $G_{circumsolar} < 0$ → $G_{circumsolar} = 0$ * If $G_{beam} < 0$ → $G_{beam} = 0$ * If $G_{sky} > 800$ W/m² → $G_{sky} = 800$ W/m² *** ## References * Hay, J. E., & Davies, J. A. (1980). *Calculation of the solar radiation incident on an inclined surface.* Proceedings of First Canadian Solar Radiation Data Workshop, Toronto, p. 59. # Transposition Models Overview Source: https://docs.plantpredict.com/models/transposition/overview Transposition models convert irradiance components (, , ) to plane-of-array () irradiance on the tilted module surface. The transposed irradiance consists of three components: beam, sky diffuse, and ground-reflected. ## Models in This Section ### [Hay-Davies Model](hay_davies) - hybrid model that splits diffuse irradiance into two components: an isotropic background uniformly distributed across the sky dome, and a component concentrated near the sun. The model uses an —the ratio of to extraterrestrial DNI—to weight the circumsolar fraction based on atmospheric clarity. ### [Perez Model](perez) Advanced anisotropic model that decomposes sky diffuse into three components: isotropic background, circumsolar brightening near the solar disk, and near the horizon. Sky clearness and brightness indices determine which empirical coefficient set is applied. Multiple coefficient sets available: * PlantPredict (default) * All Sites Composite 1988 and 1990 * Sandia Composite 1988 * Location-specific sets (USA, France, Phoenix, Elmonte, Osage, Albuquerque, Cape Canaveral, Albany) ### [3D Transposition](3d_transposition) -specific transposition for 3D scenes. Calculates individual bay orientations accounting for terrain slopes and eventual terrain-aware backtracking and applies the Perez model for each unique orientation. 3D transposition is automatically applied when the 3D scene is enabled. # Perez Model Source: https://docs.plantpredict.com/models/transposition/perez ## Summary The Perez transposition model estimates sky diffuse irradiance on a tilted surface by decomposing into three components: background, brightening near the solar disk, and near the horizon band. It uses empirical coefficients derived from extensive sky radiance measurements. Sky clearness and brightness indices determine which coefficient set is applied. PlantPredict supports multiple Perez coefficient sets derived from different locations and time periods. ## Inputs | Name | Symbol | Units | Description | | --------------------------------------------- | -------------- | ------- | ----------------------------------------------------- | | **Global Horizontal Irradiance** | $GHI$ | W/m² | Total irradiance on horizontal surface | | **Direct Normal Irradiance** | $DNI$ | W/m² | Direct beam irradiance perpendicular to sun | | **Diffuse Horizontal Irradiance** | $DHI$ | W/m² | Diffuse irradiance on horizontal surface | | **Extraterrestrial Direct Normal Irradiance** | $DNI_{extra}$ | W/m² | Direct normal irradiance at top of atmosphere | | **Solar Zenith Angle** | $\theta_z$ | degrees | Angle between sun and local vertical | | **Angle of Incidence** | $\theta_{AOI}$ | degrees | Angle between sun and surface normal | | **Surface Tilt Angle** | $\beta_m$ | degrees | Tilt angle of surface from horizontal | | **Albedo** | $\rho$ | — | Ground reflectance (0–1) | | **Air Mass** | $AM$ | — | Air mass (see [Air Mass](../solar-geometry/air_mass)) | *** ## Outputs | Name | Symbol | Units | Description | | ---------------------- | ------------ | ----- | --------------------------------------------- | | **POA Beam** | $G_{beam}$ | W/m² | Direct beam irradiance on tilted surface | | **POA Sky Diffuse** | $G_{sky}$ | W/m² | Sky diffuse irradiance on tilted surface | | **POA Ground Diffuse** | $G_{ground}$ | W/m² | Ground-reflected irradiance on tilted surface | *** ## Detailed Description ### Sky Clearness and Brightness Indices The Perez model uses two atmospheric parameters to characterize sky conditions: **Sky Clearness Index ($\varepsilon$):** Represents the clarity of the atmosphere, accounting for the ratio of total to diffuse horizontal irradiance and solar zenith angle: $$ \varepsilon = \frac{\frac{DHI + DNI}{DHI} + \kappa \theta_z^3}{1 + \kappa \theta_z^3} $$ where $\kappa = 5.535 \times 10^{-6}$ is an empirical constant that corrects the clearness index for zenith angle dependence. **Sky Brightness Index ($\Delta$):** Represents the amount of diffuse irradiance relative to extraterrestrial irradiance, normalized by : $$ \Delta = \frac{DHI \cdot AM}{DNI_{extra}} $$ where $AM$ is the (non pressure-corrected) air mass calculated using the configured air mass model. ### Perez Coefficient Lookup The clearness index $\varepsilon$ is binned into 8 categories corresponding to sky conditions from overcast to clear. Each bin has associated empirical coefficients used to compute brightness coefficients $F_1$ and $F_2$: | Bin | $\varepsilon$ Range | Sky Condition | | --- | ------------------- | ------------- | | 1 | \[1.000, 1.065) | Overcast | | 2 | \[1.065, 1.230) | Overcast | | 3 | \[1.230, 1.500) | Partly Cloudy | | 4 | \[1.500, 1.950) | Partly Cloudy | | 5 | \[1.950, 2.800) | Partly Cloudy | | 6 | \[2.800, 4.500) | Clear | | 7 | \[4.500, 6.200) | Clear | | 8 | \[6.200, ∞) | Clear | For each bin, coefficients $f_{11}, f_{12}, f_{13}, f_{21}, f_{22}, f_{23}$—from which the Brightness Coefficients $F_1$ and $F_2$ are computed—are defined. PlantPredict supports multiple coefficient sets, each tailored to specific climatic conditions and derived from empirical measurements: **Composite Coefficient Sets:** * **PlantPredict:** Default coefficient set, matches the All Sites Composite 1990 set to the third digit * **All Sites Composite 1990:** Comprehensive set derived from data across multiple locations using 1990 methodology. * **All Sites Composite 1988:** Earlier composite set based on 1988 methodology from various sites. * **Sandia Composite 1988:** Developed using data from Sandia National Laboratories. * **USA Composite 1988:** Based on data collected from various U.S. locations. **Location-Specific Coefficient Sets (1988):** * **France 1988:** Derived from data collected in France. * **Phoenix 1988:** Derived from data collected in Phoenix, Arizona. * **El Monte 1988:** Derived from data collected in El Monte, California. * **Osage 1988:** Derived from data collected in Osage, Iowa. * **Albuquerque 1988:** Derived from data collected in Albuquerque, New Mexico. * **Cape Canaveral 1988:** Derived from data collected in Cape Canaveral, Florida. * **Albany 1988:** Derived from data collected in Albany, New York. The selection of coefficient set can influence model accuracy depending on site-specific climatic conditions. Composite sets provide general applicability, while location-specific sets may offer improved accuracy for sites with similar climate characteristics. The complete coefficient values for all sets can be found in the [pvlib documentation](https://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/irradiance.html). ### Brightness Coefficients The brightness coefficients $F_1$ and $F_2$ are computed using the binned coefficients: $$ F_1 = f_{11} + f_{12} \Delta + f_{13} \cdot \frac{\pi}{180} \theta_z $$ $$ F_2 = f_{21} + f_{22} \Delta + f_{23} \cdot \frac{\pi}{180} \theta_z $$ A quality control constraint is applied: $F_1 \geq 0$. Physically, $F_1$ quantifies circumsolar brightening (which cannot be negative), while $F_2$ quantifies horizon brightening or darkening (can be negative under clear sky conditions). ### Diffuse Irradiance Components DHI is then decomposed into three components (isotropic sky, circumsolar, and horizon) using $F_1$ and $F_2$. **Isotropic Component:** Uniform diffuse irradiance from the sky dome, reduced by the circumsolar fraction $F_1$: $$ G_{isotropic} = DHI \cdot (1 - F_1) \cdot \frac{1 + \cos(\beta_m)}{2} $$ The term $(1 + \cos(\beta_m))/2$ is the from the tilted surface to the sky dome. **Circumsolar Component:** Directional diffuse irradiance concentrated near the solar disk: $$ G_{circumsolar} = DHI \cdot F_1 \cdot \frac{\cos(\theta_{AOI})}{\cos(\theta_z)} $$ The ratio $\cos(\theta_{AOI})/\cos(\theta_z)$ is the projection ratio that converts horizontal circumsolar irradiance to the tilted plane, identical to the Hay-Davies model. When the sun is behind the module ($\cos(\theta_{AOI}) < 0$), the circumsolar component is set to zero. To avoid numerical instabilities near the horizon, a minimum threshold is applied: $\cos(\theta_z) \geq 0.0872$ (corresponding to $\theta_z \leq 85°$). **Horizon Component:** Diffuse irradiance from the horizon band: $$ G_{horizon} = DHI \cdot F_2 \cdot \sin(\beta_m) $$ The horizon component can be negative when $F_2 < 0$, which can occur under clear sky conditions when the horizon band is darker than the average sky dome (horizon darkening effect). ### Circumsolar Allocation The circumsolar component can be allocated to beam or diffuse POA irradiance (default: Diffuse), similar to the [Hay-Davies model](hay_davies): **Direct Allocation:** $$ G_{sky} = G_{isotropic} + G_{horizon} $$ $$ G_{beam} = DNI \cdot \cos(\theta_{AOI}) + G_{circumsolar} $$ **Diffuse Allocation:** $$ G_{sky} = G_{isotropic} + G_{circumsolar} + G_{horizon} $$ $$ G_{beam} = DNI \cdot \cos(\theta_{AOI}) $$ Circumsolar irradiance originates from near the solar disk and is blocked by obstructions the same way direct beam is. Allocating it to beam ensures that row-to-row shading calculations apply appropriate losses to circumsolar. Allocating to diffuse treats circumsolar as unaffected by direct shading, which may be appropriate for unshaded systems or when shading is negligible. ### Ground-Reflected Component The ground-reflected component accounts for irradiance reflected from the ground onto the tilted surface: $$ G_{ground} = \rho \cdot GHI \cdot \frac{1 - \cos(\beta_m)}{2} $$ The term $(1 - \cos(\beta_m))/2$ is the view factor from the tilted surface to the ground. ### Quality Control Physical constraints are enforced by clamping values: * If $F_1 < 0$ → $F_1 = 0$ * If $G_{isotropic} < 0$ → $G_{isotropic} = 0$ * If $G_{circumsolar} < 0$ → $G_{circumsolar} = 0$ * If $G_{sky} > 800$ W/m² → $G_{sky} = 800$ W/m² The horizon component $G_{horizon}$ is not clamped and may be negative. *** ## References * Perez, R., Seals, R., Ineichen, P., Stewart, R., & Menicucci, D. (1987). *A new simplified version of the Perez diffuse irradiance model for tilted surfaces.* Solar Energy, 39(3), 221–231. DOI: [10.1016/S0038-092X(87)80031-2](https://doi.org/10.1016/S0038-092X\(87\)80031-2) * Perez, R., Ineichen, P., Seals, R., Michalsky, J., & Stewart, R. (1990). *Modeling daylight availability and irradiance components from direct and global irradiance.* Solar Energy, 44(5), 271–289. DOI: [10.1016/0038-092X(90)90055-H](https://doi.org/10.1016/0038-092X\(90\)90055-H) * pvlib python. *Irradiance module source code.* [https://pvlib-python.readthedocs.io/en/latest/\_modules/pvlib/irradiance.html](https://pvlib-python.readthedocs.io/en/latest/_modules/pvlib/irradiance.html) # Current Version Source: https://docs.plantpredict.com/release-notes/Current-Version # **RELEASE 12.26.0** **May 11, 2026** # **PlantPredict** ### **Degradation Model: First-Year Degradation for Single-Year Predictions** The **Model Choices** screen now exposes **First-Year Degradation** controls when **Number of Years** is set to 1. You can enable first-year degradation, choose a **Degradation Model** and **Rate**, and toggle **LeTID** for a single-year run. The show/hide logic for the surrounding inputs was also tightened up so the first-year rate field only appears when first-year degradation is on, and the annual degradation rate is correctly disabled and zeroed out when not applicable. Updated Model Choices degradation UI showing First-Year Degradation controls available for single-year predictions ### **Weather Data Improvements** **Improved graph labels**—Weather data graphs now display readable timestamps on the time axis, fixing sub-hourly intervals that previously rendered as decimals. Series legends also show the variable name (e.g., **GHI**) instead of generic identifiers. Weather data graph showing readable timestamps on the time axis and descriptive variable names in the series legend **Interval auto-detection**—On weather file import (and for existing weather files), PlantPredict now detects the data interval directly from the file's timestamps. Files with sub-hourly data (e.g., 5-minute) are recognized automatically rather than defaulting to a 60-minute interval, so users no longer need to manually correct the interval on the **Timestamp** tab. **Project-level exports include weather data**—Project exports now bundle non-global weather files, including their full time-series and details. Shared projects, including those exchanged between companies, no longer require recipients to manually re-select weather files on import. ### **SunSolve in Loss Factors Results** When **SunSolve Bifacial Parameters Import** is enabled on a prediction, the **Loss Factors** results page now displays a dedicated **SunSolve Transmission Gain** line item in place of the previous bifacial mismatch (now folded into the combined **Module Mismatch** line item). See [Rear (bifacial) plane-of-array irradiance](/models/poa-irradiance/rear_irradiance) for how these inputs feed the model. Loss Factors results page showing the new SunSolve Transmission Gain line item when SunSolve Bifacial Parameters Import is enabled ## **Improvements and Bug Fixes** * **Irradiance optimization tilt = 0 (V13 beta)**—Fixed an issue where irradiance optimization could yield a tilt angle of exactly 0°, which triggered division-by-zero errors and produced NaN values in nodal outputs. Tilt angles calculated by the irradiance optimization logic are now floored to 0.001°, consistent with PlantPredict's existing convention for handling near-zero tilt angles. (V13 beta prediction logic.) * **NSRDB albedo**—The **Get Albedo from NSRDB** button works again; the same fix also restores correct albedo behavior in the **NSRDB Weather Download** workflow. * **Faster report generation**—Reports now generate in parallel rather than sequentially, so all reports become available sooner. * **3D engine capacity (V13 beta)**—Optimized internal data handling in the 3D engines now supports shade scenes with more bays and objects, and 3D transposition runs with larger bay × timestamp combinations. (V13 beta prediction logic.) *** # **Pro Tools** ### **Terrain Pro: 3D Surface Views** **3D Elevation View**—Terrain Pro now offers a 3D surface view, accessible from the basemap layer panel in the right-side map controls. By default, Terrain Pro continues to load in 2D, and users can toggle to 3D as needed. Elevation data is sourced from **ESRI at 1-meter resolution** and serves as the base layer for generating **Earthwork**, **Original Surface**, and **Finished Surface** outputs. Terrain Pro 3D elevation view showing a heat-mapped original surface over satellite imagery, with the basemap layer panel open on the right side of the map **Slope Map**—The 3D surface view also provides a slope map for both the **Original Surface** and the **Finished Surface**, enabling visual inspection of terrain steepness before and after grading.
Terrain Pro 3D slope map for the Original Surface, color-coded by slope steepness Terrain Pro 3D slope map for the Finished Surface, color-coded by slope steepness
This functionality is currently supported for new Terrain Pro analyses created from **Design Pro** and **DXF** inputs. DXF files derived from satellite data, as well as **CSV** and **XLSX** workflows, remain unchanged and will continue to operate in 2D. # RELEASE 03.00.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.00.0 May 31, 2016 * Initial Release # RELEASE 03.01.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.01.0 June 14, 2016 * General formatting styling updates to improve usability * Persistent error messages now update once the error is fixed * Area in application: Degradation Rate, Model Choices * Error messages added when change status rule is violated * Error message banners now wrap text to fit entire message * Some error messages previously appeared behind the map and now are surfaced * Area in application: Create New Project * All notification messages are set to fade out and clear after 3 seconds * Area in application: Saving and cloning notifications * When weather file is selected in Environmental Conditions, summary dropdown defaults open * Data Provider filter on weather map now functions properly * New weather icon used on map view to improve visibility * Enabled “branch out” feature when pins are overlapping to improve visibility * Weather map satellite toggle now functions properly * Prediction Builder summary now displays spectral as ON or OFF * The module efficiency field is now auto calculated based on module wattage and module area * Default Module Orientation drop down added to module files * DC field orientation uses this parameter now as the default setting * Filter defaulted to Global and Active for Module and Inverter lists within the Power Plant Builder * Planned Module Count calculation fixed inside the DC Field of Power Plant Builder * Plant Output Limit in System is now defaulted OFF * The Block Capacity summary on the Block tab refreshes without having to Save and Close the Power Plant Builder * Bug that displayed an incorrect DC:AC ratio on DC Field is now fixed * Toggle added to disable first year degradation in Model Choices * Product Releases tab added to the Resource Center to display release notes * Contact Us feature located in the Welcome Back Menu and in the Resource Center added * Plant Design Temperature station name and distance from project added to Environmental Conditions, as well as an override to adjust to customer values * Bug preventing a clone of a running prediction is now resolved * Cancel button located in the Weather, Inverter, and Module files, sends you back to the previous screen. Allows users to return to a prediction from viewing a component * Minor rounding errors and spelling issues corrected on output reports * The PlantPredict Template file updated: conditional formatting of required fields and allow import of multi-year weather data * Default display of weather graphs changed to hourly view over daily range * Clear Sky Model in weather charts now works when weather file is missing pressure * Revised modules and inverter selection method in the power plant to improve user experience # RELEASE 03.02.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.02.0 June 28, 2016 * Power Plant Builder tab drop-downs now show complete list of Blocks, Arrays, Inverters, and DC Fields instead of only 10 * Environmental Conditions screen page scrolling bug fixed * Corrected Environmental Conditions spectral override error message to trigger on Save event * Environmental Conditions weather list bug fixed and now allows collapse of summary view * Change Status screen formatting updated when called from inside component or prediction * Advanced Model Choices format spacing between toggle features * Create New Project bug fixed and now allows saving when Locality, State/Province, and Region fields are missing from API * Save Progress within the power plant builder bug fixed and now correctly saves every time * When loading animation present, the notification message display time is extended * Exporting a multi-year weather file now exports all years * Compare weather chart screen now set to default on hourly view for graphs * LID loss field saves correctly when edited in the DC Field * Edit Block number picker no longer flashes when opening Power Plant for the first time * When a user cancels Override Plant Design Temperatures, the inverter kVA will recalculate based on the new temperature * Module field Short Circuit Current at STC value saves when changed * DC:AC ratio is now an input option when creating a power plant * Inputs and Assumptions document finalized * Notification message for each upcoming release with link to the Release Notes section of Resource Center * Design update to the login and logout screen * End User License Agreement added for new users * Inverter efficiency and derate curves design update to improve the ability to view each curve # RELEASE 03.03.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.03.0 July 12, 2016 * Predictions will now run when a weather file does not contain DNI and/or DHI. * Minimum AC Power Threshold unit label corrected to W instead of kW * Onscreen prediction results view label adjusted. “LGIA Limit” label change to “Plant Limit” in order to promote consistent messaging through the application. * Tracker rotational limit default updated in DC Field to 60/60 instead of 45/45 * Module list view updated to group based on manufacturer and secondarily sort by module wattage * Bug fixed where azimuth warning message in DC Field was incorrectly triggering * Weather list in Environmental Conditions updated to sort by distance in ascending order * Error message added when a new user is added but already has an existing account * “Email address is already in use” * GCR and Row Spacing are now co-dependent variables making it easier to compare between different technologies. Mounting Structure layout in the DC Field improved * Obscure bug preventing saving in the Power Plant Builder fixed related to DC Fields using seasonal tilt * Time Frame in Model Choices now defaults correctly to weather file start and end date regardless of your computer/browsers UTC time setting * Validation check added to confirm Time Frame in Model Choices is within the start and end date of the weather file * “Timeframe must be inside the bounds of the weather file start and end date” * New modal added to force user to move a prediction to a read-only status when exporting reports. This logic is added to confirm there is a matching soft copy of all reports generated * Compare Prediction screen can now be exported into user friendly excel file * New page header design implemented throughout the application to improve user experience # RELEASE 03.03.1 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.03.1 July 13, 2016 * Fixed bug preventing users from accessing the prediction compare # RELEASE 03.03.2 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.03.2 July 15, 2016 * Fixed a bug preventing Module Orientation and Tracking Method drop downs in the DC Field from opening # RELEASE 03.04.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.04.0 July 25, 2016 * LID loss default updated for Poly c-Si modules to 1.5% from 2.0% * Uncertainty Analysis plot in Simulation Settings corrected to display P-Values on the correct side of the chart * Weather chart table view default updated to Monthly instead of Hourly * Corrected bug requiring the time frame start date to be within the first year for multi-year weather files * Filters changed to be persistent and maintain the filter selection during the user session * Filters updated to allow multiple filter choices at once for better usability * Time frame selection from the calendar drop-down in Simulation Settings is now restricted to the date range of the weather file to prevent user error * Average DC Array Size calculation corrected; previously reported DC Field average size * Fixed an issue preventing the ability to compare weather files from the weather map view * IE bug affecting prediction progress bar functionality fixed, located in the prediction queue * Weighted average GCR percentage now displays as part of the On-Screen Results and downloadable reports: Plant Summary, Block Summary, Prediction Comparison, and Reports * Fixed bug that was preventing a prediction from running if the Mounting Structure was first defined as Fixed Tilt then changed to Seasonal Tilt * Metric to Imperial toggle added to left hand navigation menu for simple onscreen unit conversions # RELEASE 03.05.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.05.0 August 09, 2016 * Updated Prediction list by removing the Notes section to allow for the prediction list to use the entire screen * Updated all modules to include 2-Param Pwat and AM spectral coefficients (Model to be released next sprint) * Spectral selection logic changed to use dropdown in Model Choices. Three choices: None, 1-Param Pwat or Sandia, or Monthly Override * Added NSRDB PSM and NSRDB SUNY as downloadable API weather options. This service is available in the Americas and India. View data coverage [MAP](https://maps.nrel.gov/nsrdb-viewer/#/?aL=UdPEX9%255Bv%255D%3Dt%268VWYIh%255Bv%255D%3Dt%268VWYIh%255Bd%255D%3D1\&bL=groad\&cE=0\&lR=0\&mC=31.653381399664%2C-3.1640625\&zL=2) * The Change Status modal for exporting prediction results in Draft status now displays the correct Prediction name. Components draft list updated to exclude duplicates * Prediction results downloadable file name now defaults to prediction name * In the on-screen compare decomposition model selection now displays # RELEASE 03.06.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.06.0 August 23, 2016 * Prediction nodal data is now accessible without being required to change status of the prediction to a read-only state * Due to user feedback, Run Bulk Actions has been removed. The compare and change status buttons have been restored for ease of use * Records in the prediction list view within a project now include prediction preview information (MWac, MWdc, DC:AC, Mounting Type, GCR %) * When creating a new project, the map view will zoom in on the location and display nearby projects for your reference * YouTube tutorial videos placed on the Help tabs throughout the application and in the Resource Center User Manual * A .OND and .PAN file converter tool is now available in the Resource Center allowing users to quickly convert to PlantPredict files * A PlantPredict warning message countdown displays when a new version is about to be released to inform users to save their work before they are kicked out * Project list is now sorted by date created in descending order * Internet Explorer v10 is no longer supported by PlantPredict and will be prompted with an Unsupported Browser message when visited * The Save and Close button in the Power Plant builder no longer clears results if no changes have been made * Import/Export and cloning of projects or predictions is now enabled. Previously this feature was disabled and under construction # RELEASE 03.07.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.07.0 September 20, 2016 * Ability to repeat the inverter and the associated DC Field added to the Inverter tab of the power plant builder * Data Source collection field added to inverter * Latest version of spectral model added as an option to Model Choices. The model uses 2 parameters: precipitable water and air mass * Adjusted login process to allow association of personal Gmail accounts with company login or authentication # RELEASE 03.07.1 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.07.1 September 20, 2016 * Bug fix preventing dates from being saved under Model Choices while using Internet Explorer # RELEASE 03.08.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.08.0 October 04, 2016 * Degradation model now allows you to run multiple years by repeating a TMY single year file and apply degradation. This feature only works with single year weather files and only allows 50 years maximum. The on-screen summary and output reports allow for viewing results per year. * Update design of the metric and imperial unit toggle to make more clear which unit is selected * Weather File DNI toggle has been set to default OFF in the Advanced Model Choices section of prediction builder * Updated version of OND and PAN Converter tool included in the Resource Center * Bug fix of the GCR not updating when switching from Fixed Tilt to Horizontal Tracker in the Power Plant builder DC Field section # RELEASE 03.09.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.09.0 October 18, 2016 * “Remove Completed” button added to the prediction queue. Allows users to quickly clear the queue of completed processes. * Tree view in Power Plant Builder enhanced to display additional information * Weather map search changed to only search geographic locations and latitude/longitude * Under Manage Accounts, a company can now overwrite PlantPredict default values for all fields * Updated labels in the inverter section of the Power Plant builder: * “Power Factor” to “Design Derate” * “kVA” to “Temperature Adjusted kVA” # RELEASE 03.10.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.10.0 November 10, 2016 * Export and import functionality of projects, predictions, and associated components now work between companies * Array Transformer in the power plant builder can now be turned on or off to remove the MV transformer loss from the output * Weather selection process in Environmental Condition screen updated to improve user flow and functionality * On-Screen plant summary results visually improved * A cumulative tab for multi-year predictions is now included in the plant summary on-screen results and export of the Plant Summary 8760 report * An informational error message now displays when a prediction is attempted to run without diffuse irradiance present in the weather file * Availability loss input field added to the System section of prediction builder * Maximum allowable row spacing extended to 50m, 164ft * Format improvement of the Inputs and Assumptions document * In the weather file table view, all variables can be selected at once for comparison # RELEASE 03.11.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.11.0 November 29, 2016 * Allow opening and viewing of Weather, Inverter and Module files within a prediction that is in a read-only state * Improved formatting in Firefox browser * Inverter files can be created by uploading an OND file * Weather compare feature added to the Environmental Conditions section of prediction builder # RELEASE 03.12.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.12.0 December 20, 2016 * Retired select weather files in California mislabeled as NREL-provided and reimported as White Box Technologies provided * Bug fix enabling inverter files to be saved when an efficiency or derate curve is removed * Bug fix enabling projects to be created in time zones +13 and +14 # RELEASE 03.13.0 Source: https://docs.plantpredict.com/release-notes/Version-03/RELEASE-03.13.0 January 24, 2017 * Bug fix allowing users to use Google or Microsoft for log in process. * Tree view automatically reorders assets when they are renumbered. * Bug fix resulting in correct MWac size in the power plant builder array tab display. * The monthly spectral value included in the output reports now displays 0 for months that are not in the weather file. * Global components now owned by “System Account”. * Bug fix which directly bypasses the Plant Output Limit (LGIA) calculation when setting is turned “OFF”. * Black and Veatch Technical Review available in Resource Center # RELEASE 04.00.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.00.0 February 22, 2017 * Improved weather import process, featuring more streamlined flow and data quality checks * Several new user interface improvements – better toast and warning messages and tab headers, to name a few * Array based shading feature which allows for improved prediction accuracy when running predictions with small DC fields (for example string inverters nested in a large DC Field) * Code versioning system allowing user to revert to older Version 3 of the backend code * Bug fix allowing projects to have half an hour and other subhourly time zones * Inverter files now feature DC and AC Power columns in their efficiency table * Select inverters in the Global library were retired and reimported with corrected efficiency tables * OND file converter now correctly maps DC power exported by PVsyst to DC power in PlantPredict efficiency tables * Shading algorithm now correctly uses East-West array dimension when calculating shading on fixed tilt systems (no change for tracker systems) * NSRDB PSM and NSRDB SUNY data now downloads using correct “middle of interval” timestamp denotation # RELEASE 04.01.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.01.0 March 09, 2017 * Improved display when importing weather data and added a toggle for data sets containing leap days. * Fixed bug that was preventing the clone of DC Field in the Power Plant Builder. * Weather vendor partnerships established to provide sample data to customers through their API services with some accessibility limits. * Degradation will now start from the Power Plant Energization Date, if defined, independent of the weather dates. * Reduced loading time for Prediction list within a Project. * Added nighttime loss output capability to the API. # RELEASE 04.02.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.02.0 March 22, 2017 * Company Admins can now enter weather API login credentials in the Manage Accounts section of the website. * Improved the usability of the prediction queue by relocating it to the left navigation bar and displaying additional prediction information. * Fixed bug that was affecting the use of the Quick Edit feature for changing row spacing when Array Based Shading feature in the power plant builder was turned on. * Called out degradation losses explicitly in the Loss Tree, including fixing a bug which previously caused degradation losses to be incorrectly included as part of the Inverter Limitation Loss when Linear DC Degradation was used. # RELEASE 04.02.1 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.02.1 April 2017 Fixed an issue preventing reports from rendering when a transformer or transmission line is used in the Power Plant section # RELEASE 04.03.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.03.0 April 04, 2017 * Official Product launch of the API. Documentation crafted for API integration efforts along with an initial beta prediction limit for companies connected directly through the API of 100 predictions per day. * Improved time shift check in weather import process. Clear sky model employed now uses Google  API time zone used for projects rather than weather file time zone. # RELEASE 04.04.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.04.0 April 18, 2017 * [SolarGIS weather file template](http://solargis.com/assets//sample/tmy/Solargis-TMY60-SOLARGIS-PlataformaSolardeAlmeria-Spain-v2-P50.csv) updated for auto-recognition in weather import process. * Improved nodal data output format and included new column for inverter limitation loss in the inverter nodal data output. * Fixed bug that was preventing the addition of inverters in the Power Plant builder when array transformer was turned off. * Fixed bug that prevented diffuse decomposition models other than Erbs to be used when the weather file lacked diffuse irradiance. * Quick Edit bug fix allowing the “Update All” functionality to work properly for Row Spacing input. * Bug fix ensuring that all predictions appear in the prediction list when using the Compare feature. # RELEASE 04.05.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.05.0 May 02, 2017 * SolarGIS now available as a weather vendor – demo licenses available for all users with option to purchase and store API keys for extended use in PlantPredict. * More options available in the Quick Edit feature that can be selected from the Display Fields drop down menu. * Soiling loss can now be imported as part of a weather file and used in simulations in place of static monthly values. * Enhancements to the prediction engine to reduce prediction run times. * Users can now remove inverter efficiency data points. # RELEASE 04.06.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.06.0 May 17, 2017 * Resolved issue preventing users from downloading NSRDB weather data * Synthetic monthly generator added as a weather import method to allow users to create * Feature added in Power Plant Builder on the Inverter tab allowing users to exclude cooling design temperature from the kVA rating calculation * Added capability to delete a prediction on the prediction list view * Added ‘Back’ functionality in the Weather Import process * In the Power Plant Builder tree view, the Inverter/DC Field Repeat Count has been added to the hover over window on the inverter object * Enhanced the prediction result summary screen * (12×24) chart tab has been added to the prediction results # RELEASE 04.07.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.07.0 May 31, 2017 * Ordered ran predictions newest on top in the Prediction Que. * ICF and DNV validation reports posted in Resource Library. * Changed location and format of Need Help pull up menu’s. * The Plant Output limit value is no longer rounded in output reports. * Enabled deep linking feature to allow for link of prediction or project to be sent to other users to open directly without needing to navigate from the project dashboard. * New Charts tab added to the Results screen to visually display results by day, month, or year. *  Energization dates field to still display the date selected when turned OFF. * Fixed bug that was preventing Array Based Toggle to be set to ON. # RELEASE 04.08.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.08.0 June 14, 2017 * New simple layout feature to allow for user to draw site boundary on map and define power plant parameters within defined boundary. * Environmental Conditions weather selection updated to show map and weather list side by side. * Prediction comparison output report improvements. * Weather file export file to include wind sensor height field. * Deleted project from project list view removes from list without needing to refresh # RELEASE 04.09.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.09.0 June 28, 2017 * New Non-Linear DC Degradation option for user to input custom degradation yearly profile from within the module or simulation settings of a prediction. * Add New Weather from within a prediction now defaults the latitude and longitude from the project location. * Enhanced Power Plant Map builder feature to support input of tilt angle or rotational limits, unit conversion preference, download .KMZ option, and limit of the DC fill display based on user input of Target MWdc. * Inverter selection list sorted alphabetically within the Power Plant builder. * User now has option to re run prediction from within Charts Results tab to display the charts for Draft status predictions. * Improved filter drop down options for Weather, Inverter, and Module libraries # RELEASE 04.10.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.10.0 July 14, 2017 * New 3D scene added to the DC Field of Power Plant Builder to visualize DC Field set up and orientation. * New slope functionality added to the DC Field to allow modeling of sloped terrains. * Improved Power Plant map builder feature to work with Firefox browser. * Enhanced Power Plant map builder to include Site Capacity of DC that fits within drawn boundary. # RELEASE 04.11.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.11.0 August 23, 2017 * POAI can be imported as part of a weather file and used as the basis of energy predictions via the GTI-DIRINT model. * Clean Power Research temporarily down for maintenance. New downloads are not available at this time. * Secondary y-axis available on Results Chart. * Internet Explorer long running script bugs resolved. * Typing delay incorporated into Create New Project screen on latitude and longitude inputs. * Resolved bug which caused to multiple errors when an Inverter was chosen before the Module in the Map Builder. * Custom Excel files can now be imported using the Weather Import Process. # RELEASE 04.12.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.12.0 September 06, 2017 * Resolved bug in which changing the prediction name was not always reflected in the Prediction Log * Weather file map distance calculation corrected. * Setback can now be zero in power plant map builder. * Application no longer freezes when “Modules High” value is deleted in DC Field. * Map builder view zoomed further out by default to more closely match utility-scale system sizes. * Columns added to nodal data export via prediction results. * Higher precision now allowed for DC:AC ratio. * Module to cell temperature difference unit conversion bug fixed. # RELEASE 04.13.0 Source: https://docs.plantpredict.com/release-notes/Version-04/RELEASE-04.13.0 September 20, 2017 * Fixed bug that caused prediction start and end date to shift back one day and prediction to fail. * Fixed bug that caused selection for degradation type to falsely toggle back to “None”. * Plant Annual Energy chart in prediction results now labels the linear fit trend with its degradation rate. * Fixed incorrect units for temperature difference values. * Fixed incorrectly displayed error messages. # RELEASE 05.00.0 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.00.0 November 01, 2017 * Batch predictions now available – users are now able to compare up to 350 predictions at once with predefined iterations of up to 2 variables. * Module technology specific loss factor defaults now pulled from module files rather than from “Default Settings” in account management. * Module Cell Technology types now include PERC and BSF options. * Module files now include Construction Type (i.e. glass-glass and glass-backsheet). * Fixed bug that caused mapping flood calculations to yield slightly lower DC. * Changed “Resistivity” text label to “Resistance”. No associated change to functionality. * Fixed bug causing the first year of degradation to occur a year late in multi-year degradation predictions where “Stepped AC” was selected. * Changed prediction comparison in the UI and excel reports from having positive values as loss and negative as gain to having positive values as gain and negative as loss. * Increased maximum transformer rating to 20,000 kVA. * Fixed bug that caused calculated pressure data to be included in imported weather files when POAI was included in the raw data but pressure was not. * Fixed bug that caused automatic logout of an administrator when another account is disabled * Improved inverter logic when operating around the MPP floor of the inverter. Lower inverter limitation losses will be seen in some predictions, especially when the DC system was operating near the lower MPPT range of the inverter. * Cloned predictions now have the suffix “ – CLONE”. * Fixed bug that incorrectly indexed timestamps on Clean Power Research weather files. * Weather files in the weather library are now sorted in descending order. * Implemented new NASA weather library, which provides free weather data for individuals worldwide. * Fixed logic for non-hourly weather files. Specifically, tracker limitation losses were previously too high in sub-hourly files, and total energy reported, POAI and other related metrics were incorrect in previous versions of the software when sub-hourly weather data was used. *Note* Non-hourly weather files imported before V5.0.0 were not updated, so please re-import non-hourly weather files for accurate data. * Fixed bug causing a blank prediction uncertainty analysis. * Fixed bug causing “I Agree” button on the Terms and Conditions page to only display a “-“. * Fixed bug causing the “Manage Accounts” header to be misaligned. * Fixed bug not allowing user to change the name of a previously-run prediction. # RELEASE 05.01.0 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.01.0 November 14, 2017 * Fixed bug that caused imported weather files with the PlantPredict Excel Template to replace NULL values with 12. Note that text values (ie NULL and NaN) are currently not supported as part of any weather import. * Fixed bug that caused the Inputs and Assumptions PDF to display the DC Wiring Loss value in the DC Health field. * Fixed bug that caused a batch prediction to use previous input parameters when trying to rerun a batch prediction with new parameters. * Fixed bug that limited batch predictions to a single inverter. * Fixed bug that preventing running batch predictions when a base prediction was used. * Fixed bug that caused the user to be dropped into an empty screen when a batch prediction was cloned from output screen. * Fixed bug that produced incorrect weather files under certain circumstances with the synthetic weather generator. * Fixed bug causing “Bid” statuses on predictions to be labeled incorrectly. * Added a “Sort By’ function for the list of predictions on the batch results page. * Fixed bug preventing the creation of projects in regions without country codes (i.e. West Bank). * Fixed bug defaulting CdTe modules to “Backtracking” instead of “True tracking”. * Weather file character name can now be greater than 50 characters. * Fixed bug causing an incorrect timeshift of 30 minutes for non-hourly weather files. * Fixed bug that incorrectly assumed all weather files that were imported in Excel format were in PlantPredict template format. * Fixed bug causing the Model Choices button on a standard prediction to incorrectly appear already visited and completed in some circumstances. * Fixed bug preventing the saving of fields in an older module file. * Degradation settings for a prediction will now update when a module with a new degradation setting is chosen. # RELEASE 05.02.0 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.02.0 November 28, 2017 * Fixed bug causing the Google Logo in the Map Builder to be hidden. * Expanded the lower limit of the LID loss factor input parameter from 0 to -10 in DC field (allowing for LID gains, like in the case of light soaking gains). * Fixed a bug causing the “Spectral Shift” parameters in a module to be set incorrectly when creating a new module. * “Cell Technology” is now a required field when creating a module. * Fixed bug causing the displayed slope of the linear trendline for degradation to be off by a factor of 100. * Fixed bug causing the “Maximum Desired MWdc” to be incorrectly set to 0 when using a base prediction for a Batch simulation. * Improved error message when weather files that have non-numeric values in data fields are uploaded. * The graphical heat map now represents the results of a Batch prediction. * Moved the “miles distance from” in weather files in a Batch to below the title of the weather file. * “Weather File POA” now defaults to “On” when a weather file with POAI is imported from within a prediction. # RELEASE 05.03.0 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.03.0 December 13, 2017 * Fixed bug causing Batch predictions to not correctly modify DC capacity when DC:AC ratio was iterated. * Fixed bug causing Batch predictions to not include correct shading losses. * Clean Power Research weather files are again available for user download. * Weather files lacking locality uploaded from the user from within a prediction will now pull locality information from the Project. * Fixed bug causing too many significant figures in the tilt angle to be displayed on a prediction summary screen. * Fixed bug causing row spacing to not calculate if GCR is chosen before the module file. # RELEASE 05.04.0 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.04.0 January 26, 2018 * Changed the navigation bar of PlantPredict to make it more readable and also include a “Recent Predictions” section * Fixed bug causing the graphical results of Batch predictions to appear incorrect * Fixed bug that kept child predictions of Batch predictions from changing their status when the parent prediction’s status was changed * Fixed bug causing Batch predictions to use the same input parameters on a rerun of the prediction * Extended the boundaries for the Recombination Parameter and the Diode Ideality Factor in the module file * Fixed bug preventing Batch predictions from showing graphical results when only iterating a single variable * Expanded the API functionality of nodal data – users can now access nodal data via the API on the block, array, inverter, and DC field level * Incorporated an error message and back-end check for situations in which a user – 1) tries to use a non-0 recombination parameter with a non-thin film technology, and 2) tries to use the 1-Diode recombination simulation model with a 0 Recombination Parameter or a 0 Built-in Voltage * Built-in Voltage and Bandgap Voltage and now populate when “Cell Technology” is selected * Fixed bug that prevented a scroll bar from appearing when confirming Ashrae stations when cloning a project * The map builder will now automatically refresh upon entering * Changed the “Save and Close” button to just “Close” in situations in which the prediction was not altered # RELEASE 05.04.1 Source: https://docs.plantpredict.com/release-notes/Version-05/RELEASE-05.04.1 February 12, 2018 * Fixed bug preventing weather vendor API access * Fixed bug preventing the linking of PlantPredict account with Google or Microsoft authentication account # RELEASE 06.00.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.00.0 March 09, 2018 * Fixed bug causing sun icon on loading screen to not work properly * Fixed bug with Map Builder causing energy predictions to be incorrect\* * Cloud service operating system upgraded   \*On February 22, 2018, an issue was identified with the PlantPredict Map Builder that caused shading losses to be understated and predicted energy to be overstated. The issue was rectified with Release 6.0.0 on 3/9/2018. The issue is confined to Map Builder predictions created and run prior to Release 6.0.0. Because shading losses are generally higher for horizontal trackers, especially when true-tracking, such predictions will be most significantly affected. Users with affected predictions can remedy their predictions in a couple ways. First, rerunning Map Builder predictions using version logic 6.0.0 will resolve the issue. Alternatively, users can convert Map Builder predictions into a Block Builder predictions while maintaining version logic 5 or earlier. Either method is equally valid and will successfully resolve the issue. Upon rerunning, users should expect to see an increase in shading losses and decrease in energy. # RELEASE 06.01.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.01.0 May 11, 2018 * Upgraded the front-end framework of PlantPredict from AngularJS to Vue.js, providing users with a fresh, snappy application experience and upgrading the future application potential. New Application URL: [PlantPredict](http://ui.plantpredict.com/) . New API Application URL: [api.plantpredict.com](http://api.plantpredict.com) * API calls must remove the “/api” from the URL – that is no longer supported. * Previous call: [https://app.plantpredict.com/api/Project…](https://app.plantpredict.com/api/Project…) * New call: [https://api.plantpredict.com/Project…](https://api.plantpredict.com/Project…) * DNS name splitting the UI from the API.  Previously both were under [app.plantpredict.com](http://app.plantpredict.com), now the UI is [PlantPredict](http://ui.plantpredict.com/) and the API is [api.plantpredict.com](http://api.plantpredict.com). * ASHRAE stations now include additional station Locality information * Added new 3Tier/Vaisala weather file format for automatic detection during weather import. # RELEASE 06.01.1 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.01.1 May 21, 2018 * Fixed bug that disallowed account linking feature used during the login process * Predictions within a project will now be ordered in descending order based on the most recent updated date. * Fixed bug causing on-screen results for multi-year predictions to display the wrong year of results * Fixed bug causing transmission line values to not live-update * Fixed bug preventing the upload of weather files with POAI * Fixed bug preventing single year prediction results from showing up # RELEASE 06.01.2 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.01.2 May 24, 2018 * Updated Terms of Use to support GDPR compliance * Fixed bug causing rotational limit as well as various unit labels in Quick Edit to not appear correctly * Restored the power plant icon as well as many other unit labels to the View Full Results screen * “Search Available Vendors” will now be autoclicked when entering “Add New Weather” screen from within a prediction * Enabled truncation of various input values when displayed within a prediction. * Fixed bug preventing negative temperature values from being put in the inverter derate curve * Fixed bug preventing inverter setpoint and design derate to not be linked in Quick Edit. * Fixed bug allowing user to create a new prediction with no name * Fixed bug causing power plant elements to be missing upon the first entry to a cloned prediction * Fixed bug causing certain defaults to not be set when importing a module from PVsyst * Fixed bug on weather import causing start and end date to be wrong * Fixed bug causing all variables to be selected during the weather file import * Fixed bug causing the “Recheck Timeshift” button to not work within weather import process * Fixed bug causing the collector bandwidth within the DC field to not update when “modules high” was updated * Fixed bug preventing the successful conversion from a map to a block builder # RELEASE 06.01.3 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.01.3 June 12, 2018 * Fixed bug causing sluggish, slow performance * Fixed bug causing the Plant Output Limit to be incorrectly turned off in certain situations * Fixed bug causing the Block Builder to be empty when Map Builder is converted to a Block Builder * Fixed bug causing predictions to be hidden when P Values are added to a prediction # RELEASE 06.02.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.02.0 June 26, 2018 * PlantPredict now has energy storage capacity, or PVS. The scope of this feature is limited to AC-coupled storage systems. This means that the storage is connected to the PV system at the MV level, after the MV transformers and associated cabling. The storage system consists of batteries, inverters and MV transformers and cabling. The PVS models and algorithms can be found in the Models and Algorithms section of the PlantPredict website. * Fixed issue with exported 8760 reports causing “MW” to appear instead of “MWh” # RELEASE 06.03.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.03.0 July 10, 2018 Prediction will now give user indication that it’s running on the main prediction screen. * Fixed bug preventing data from being shown in prediction summary cards * Fixed bug causing Draft-Shared predictions to be un-runable * Fixed bug causing the “Delete” button to not work from within the Energy Storage section of a prediction * “Cell Technology” and “Module Construction” fields within the module file are now required fields * Fixed bug causing POAI information to be required in a weather file when no POAI information is present * Copying and pasting a prediction URL into a new tab or window will now take the user to the desired prediction rather than to the Project landing page * User will now be taken back to the Power Plant Builder from module or inverter file when originally navigated to that asset from the Power Plant Builder * Release of custom dispatch/charge capabilities for energy storage modeling * Fixed bug causing the construction date to always be set to Dec 20 2011 * When POAI used, decomposition and transposition are now automatically set to DIRINT and Perez and no error messages are thrown * Adding new weather from within a prediction now automatically selects that weather when user navigates back to prediction * Fixed bug causing non-decimal format latitude and longitude to be displayed incorrectly * User now has the ability to navigate day-by-day in the Charts sections by using arrow keys * Fixed bug causing azimuth and slope azimuth to be incorrectly displayed on DC field visualizer (results were unaffected) * Fixed bug causing default Transmission Line resistance values to be incorrectly populated * Improved various error messages during the weather import process * Fixed bug causing the numbering of new portions of the Power Plant Builder to be capped at 10 # RELEASE 06.04.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.04.0 July 26, 2018 * NSRDB weather database upgraded from 2.0 to 3.0 * Fixed bug causing incorrect weather file export when weather file contains \<8760 entries * Implementation of UX Rings * Prediction name will now pre-populate when user wants to edit the name of a prediction * Fixed bug causing application to crash when certain values in the DC field were set to 0 * Fixed bug causing an unintelligible error message when exporting a minute level weather file * The weather file upload process will now check for invalid entries in the GHI and POAI columns # RELEASE 06.05.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.05.0 August 07, 2018 * 2D view factor model for simulating bifacial systems is now available for use in PlantPredict *\*There is a general shortage of utility-scale field validation of bifacial prediction models in industry and this model is no different. Unlike the core monofacial PlantPredict models, this new bifacial performance model has not been validated and benchmarked at scale against measured data.* * Fixed bug with GCR/Row spacing calculation * Fixed bug with adding a transmission line * Fixed bug causing seasonal tilt to not save * Fixed bug preventing the overriding of module construction type when cell technology type is chosen * Fixed bug causing the currentUser attribute to be lost upon refresh * Expanded the functionality of the weather file import process to find invalid entries in uploaded files * Implemented a Multi-Year Summary sheet in the exported 8760 of a multi-year prediction * Fixed bug causing PV Energy and Storage energy totals to not display in exported 8760 * Fixed bug causing predictions with different P-values to not display correctly # RELEASE 06.06.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.06.0 August 21, 2018 * Fixed bug causing prediction to error out when prediction was run with “Energization Date” on * Fixed various upload errors with weather file uploads * Fixed header issues in nodal data * Enhanced the Swagger API documentation # RELEASE 06.07.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.07.0 September 09, 2018 * Fixed bug preventing user from uploading an excel file into the weather database that contained more than a single sheet * The PlantPredict Module File Generator is now live! Using the Module File Generator, users can now generate a fully functional PlantPredict module file – also known as a .ppm file, which is analogous to a .PAN file. Release 1 includes the ability to generate a .ppm file by simply entering in datasheet parameters, with the optional feature of tuning the 1-diode parameters to a specified EIR curve. See the User Guide section and the Models and Algorithms section of the PlantPredict website for more information # RELEASE 06.08.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.08.0 September 18, 2018 * Improved performance of export of large weather files * The Module File Generator now has two new input features – 1) Enter Key IV Points, and 2) Enter Full IV Curves. See the user manual for information on how to use these two new features # RELEASE 06.09.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.09.0 October 02, 2018 * Fixed bug causing weather file values in tables and charts to occasionally appear incorrect * Fixed instances of incorrect units being used * The prediction queue is now listed in descending order from the time the prediction was run * Changed text and hyperlinks in the “Weather Vendor” section * Fixed bug causing latitude and longitude to be incorrect in a prediction’s results * Adjusted the logic for weather file data selector to allow any and all data to be selected in table view * Fixed bug causing calculated and clear sky POAI in weather files to not show up * Fixed various false positive banner warnings * Fixed bug with copy/paste function in Module File Generator’s “Enter Full IV Curves” * Fixed bug which created extra clones whenever user entered and altered the “Model Choices” of a cloned prediction * Fixed bug which caused module gap and collector bandwidth not to update upon user alteration * Fixed bug causing “Module Orientation” to display the “Modules High” value * Fixed bug causing an incorrect error message when “Seasonal Tilt” was toggled on and off * Structure shading will now set a default value as specified in the company “Default Settings” * Fixed bug preventing projects from being imported across companies * Fixed bug causing incorrect ashrae temperature values * Users can once against import inverters via a .ppi file * Fixed bug causing an unresponsive save button in the inverter file * “Post Height” will now only be visible when bifacial modules are used * The unit of area in map builder has been changed to hectares # RELEASE 06.10.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.10.0 October 16, 2018 New Features * The weather upload process will now include data quality checks in the form of a popup message on the “Quality Check” step * Cell technology options when “bifacial” is chosen while creating a module will now be limited to actual bifacial technologies * “Clear Sky” irradiance will now default to on in various charts throughout the application * Improved error messaging regarding the “Upload Full IV Curves” of the Module File Generator Bug Fixes * Fixed bug blank login screen on IE11 * Fixed bug causing the “X” on the module and inverter file screens to function improperly * Fixed bug causing trend line to disappear in multi-year prediction summaries * Fixed various issues with metric to imperial rounding * Fixed bug required ESS data in power plant when no ESS data was present * Fixed bug causing the IV curve in the Module File Generator to appear incorrect at various times * Fixed bug causing too many transformers to appear in the “Compare Predictions” feature * Fixed copy/paste bug in inverter files * Fixed bug causing storage parameters to appear incorrect in exported the I\&A document # RELEASE 06.11.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.11.0 November 10, 2018 New Features * PlantPredict now uses a brand new login authentication method. You will use your email in combination with a password to login – no more social logins! An email from PlantPredict support was sent on November 10th. Inside that email is an activation link that will allow you to create your new password and login to PlantPredict. Should you have any issues, please contact support\@plantpredict for assistance # RELEASE 06.12.0 Source: https://docs.plantpredict.com/release-notes/Version-06/RELEASE-06.12.0 November 29, 2018 New Features * Improved error messages in various situations throughout the application * Removed the “My Projects” filter as a default when logging in * A project’s name can now be edited * A users email will now be saved in the login form Bug Fixes * Fixed bug causing users to have to re-accept the EULA mid-session * Fixed various bugs with uploading weather files * Fixed bug causing calculated performance temperature coefficient to not update * Fixed bug preventing a project from being created in South Sudan * Fixed bug causing the Generate Weather workflow to error out * Fixed bug causing only one prediction to show while comparing predictions * Fixed bug causing Batch predictions to not hold their parameters after certain runs * Fixed bug causing the transmission line value to not save once changed * Fixed bug causing the GCR calculation to be delayed by one keystroke * Fixed bug with storage predictions in Firefox * Fixed various bugs only showing in Internet Explorer * Fixed various labeling and typos through the application # RELEASE 07.00.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.00.0 December 14, 2018 New Features * Verson 7 Logic is now live in PlantPredict. The new logic provides improvements in: * Inverter operation * Sub-hourly weather files * PVS reporting * Leap-year processing Bug Fixes * Fixed bug causing user # RELEASE 07.01.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.01.0 January 23, 2019 New Features * Draft-status predictions can now be exported. They will have a draft watermark and a \_draft filename to avoid confusion * Albedo and Post Height will now be included in the exported 8760, when applicable * Improved error messaging throughout the application Bug Fixes * Fixed bug causing new users accounts to not move from “Pending” to “Active” * Fixed bug causing old PlantPredict weather file formats to not be recognized * Fixed bug causing large weather files to take too long during the upload process * Fixed various labeling issues throughout the application * Fixed bug causing bifacial modules from being run in a a map or batch prediction # RELEASE 07.02.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.02.0 February 05, 2019 Bug Fixes * Fixed bug causing the welcome email to not appear for certain users * Fixed bug causing predictions to fail above a certain elevations * Fixed bug causing DHI to report incorrectly in the 8760 report when its value is 0 * Fixed bug causing PDF summary to incorrectly appear on 2 pages # RELEASE 07.03.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.03.0 February 27, 2019 New Features * Electrical Shading is now available in PlantPredict! Accurate shading profiles for all module types will now be applied automatically, and the user will also have the ability to apply custom shading profiles if desired. * Shading profiles for predictions can now be defined a) on the prediction level in model choices, and b) in the module itself * Shading profiles for module file is defaulted based on module technology and were chosen based on industry standards * The company default for shading has been changed away from “Linear” to be “Module Defined” * See the User Guide and the Models and Algorithms page for more information * Improved the draft-export workflow Bug Fixes * Fixed bug while generating API credentials for certain users * Fixed bug causing the first keystroke to be ignored when filling out row spacing to GCR calculation (GCR to row spacing was unaffected) # RELEASE 07.04.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.04.0 March 05, 2019 New Features * Large performance improvements were implemented to asset libraries. After an initial load, modules, inverters, and weather files should load much faster, both in the aforementioned asset libraries and in the power plant builder where assets are used * Improved the accuracy of the EIR calculations in the Module File Generator * PlantPredict will now inform the user if they use the improper module orientation with select modules * Users now have the ability to cancel a running prediction * Read-only predictions are now more “read-only” Bug Fixes * Fixed issue with the aggregation of data in subhourly weather files # RELEASE 07.05.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.05.0 March 19, 2019 New Features * Continued performance enhancements throughout the application – users should notice a general increased application speed * Users will now have a “Quick View” option on read-only predictions * PlantPredict will now ensure a weather file is exactly one year long if the user wants to replicate the prediction * Albedo and module name will now be included in comparison reports * Improved validation for custom shading tables Bug Fixes * Fixed bug preventing prediction energy charts to be displayed * Fixed bug causing the inability to delete predictions in certain situations * Fixed bug causing corrupt exports of draft multi-year predictions # RELEASE 07.06.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.06.0 April 2, 2019 New Features * Nodal data can now be specified in a prediction before the prediction run, and the user can choose which sections of nodal data to include. For more information, see the user manual [HERE](https://plantpredict.com/user_manual/prediction-results/#improved-nodal-data-experience) * Users can now download multiple reports at once * Monthly energy and GHI sums are now included in PDF and 8760 Plant Summary reports * The POAI summary will no longer be shown in weather files when POAI is not included in the weather file * Continued performance improvements Bug Fixes * Fixed bug causing simulation date to be incorrect after edit from user * Fixed bug causing the custom shading table in the module file to be transposed after saving in certain situations # RELEASE 07.07.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.07.0 April 18, 2019 New Features * Read-only weather files are now truly read-only Bug Fixes * Fixed bug causing instances of infinite loading in the application * Fixed bug causing the linear degradation option to not appear right in certain instances * Fixed bug causing a newly created prediction to not appear until a refresh * Fixed a bug with power plant labeling within the builder * Fixed bug causing map builder to save inappropriately at various times * Fixed various labeling and units errors throughout the application # RELEASE 07.08.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.08.0 April 30, 2019 New Features * Continued efforts to increase performance and speed Bug Fixes * Corrected PDF export issue for certain legacy predictions # RELEASE 07.09.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.09.0 May 14, 2019 New Features * Introduced new Expanded Time Series functionality! For more information on what it does and how it works, see the user manual located [here](https://plantpredict.com/user_manual/predictions/#expanded-time-series-functionality) Bug Fixes * Fixed various issues with electrical shading custom import * Corrected hyperlink redirect while not logged into PlantPredict * Fixed issue with user being unable to save new modules * Improved filtering performance across application # RELEASE 07.10.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.10.0 May 30, 2019 New Features * Introduced PQ Curve functionality for inverters * Added “Additional Night Losses” in the array section of the Plant Builder to more accurately account for losses Bug Fixes * Resolved issue with readability of the User Manual on Mobile * Prediction status change no longer affects asset status * Issue with 0 values in “Quick Edit” resolved # RELEASE 07.11.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.11.0 June 11, 2019 New Features * Plant Summary is now available when creating and editing predictions * Added ability to toggle MWh vs. average MW to 12×24 view in prediction results * Albedo data added to prediction results Bug Fixes * Corrected weather file import calculations and averages * Resolved truncation error when exporting a weather file * Improvements to “Quick Edit” inputs in Plant Builder * Searches and filters are now retained while navigating through the application * Ability to navigate back to prediction from new weather file import resolved * Fixed issue with DC field width information not populating # RELEASE 07.12.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.12.0 July 2, 2019 Bug Fixes * Resolved issues with company shading defaults displaying incorrectly * Optimized quick edit in order to improve functionality and usability, particularly for large sites * Remedied loop issue when using “Return to Prediction” during the “Add New Weather” process # RELEASE 07.13.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.13.0 July 9, 2019 New Features * Added improved metrics for monitoring PlantPredict performance # RELEASE 07.14.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.14.0 July 25, 2019 New Features * Re-imagined map builder functionality to provide an improved experience with new features including: * A redesigned interface that creates a more fluid building experience * Improved boundary drawing capabilities * Ability to input desired maximum power in DC or AC * Addition of Map Layers including parcel data, wetlands, flood hazards and constraints * Constraints can be modeled as linear or area constraints Bug Fixes * Introduced new logic for adding data to an inverter using time series * Predictions are now removed from the Project overview screen when deleted * Revamped quick edit validation to correct issue with unused fields causing errors in predictions # RELEASE 07.15.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.15.0 August 8, 2019 New Features * Notes can now be added to a prediction on the prediction overview screen * Modified page responses to increase performance * Boundary measurements added to Build on the Map functionality Bug Fixes * Resolved issue encountered when downloading SolarGIS weather files * Yearly sums reordered chronologically on result export * Wind sensor height is now included in module import after saving the module * Metric and imperial unit conversion now functions when using Build on the Map for predictions * Restored “Choose Specific Prediction” functionality in batch predictions * Fixed issues with projects, predictions, modules, inverters and weather files not appearing until browser refresh * Restored batch prediction exports * GCR now updates when row spacing is changed while using Build on the Map feature * Advanced options toggle restored in Model Choices # RELEASE 07.16.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.16.0 August 20, 2019 New Features * Added ability to specify cell design type for module files * Option to hold AC, DC or the AC:DC ratio constant added to “Build on the Map” functionality * Improved module import experience by prompting for Cell technology, Diode Saturation Current, Gamma Temp Coefficient and Diode Quality Factor at import. Bug Fixes * Improved batch performance by correcting issue with processing using standard prediction engine * Fixed issue with LGIA limit time series API call occurring before page load * Time series selections now appear in power plant * “Upload You Own Weather File” now lists accepted formats * Remedied issue regarding bi-facial inputs being required when monofacial selected for a module import * Recombination parameter now displays correct default when importing module * Imperial/Metric toggle now works with row spacing in quick edit * Fixed DC field width population issue being tied to AC:DC ratio # RELEASE 07.17.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.17.0 September 5, 2019 New Features * Added the ability to toggle between metric/imperial units of measurement to the improved “Build on the Map” functionality * Added ability to upload elevation data as .dem files and overlay a survey layer onto the map in “Build on the Map” Bug Fixes * Fixed issue which would not allow batch predictions to be deleted * Resolved issue regarding “0 weather files to review” in project import process # RELEASE 07.18.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.18.0 September 19, 2019 New Features * Added ability to toggle leap year information in multi-year degradation found in the “Model Choices” section of the Simulation Settings for a prediction # RELEASE 07.19.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.19.0 October 1, 2019 New Features * Continuous improvement and preparation for future PlantPredict features # RELEASE 07.20.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.20.0 October 15, 2019 New Features * Clean Power Research API call updated: * North America region updated to v3.3 * South America newly added in v3.3 * Indian Ocean region added to v3.2 # RELEASE 07.21.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.21.0 October 29, 2019 Bug Fixes * Fixed issues with Clean Power Research weather API update causing issues with weather file downloads * Continued development toward improved performance and new features # RELEASE 07.22.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.22.0 November 18, 2019 New Features * Expanded “Module Quality” loss limits to -200 to 99 Bug Fixes * Fixed issue with “Modules Wide” field in the “Build on the Map” functionality where the field reverts to default value on update # RELEASE 07.23.0 Source: https://docs.plantpredict.com/release-notes/Version-07/RELEASE-07.23.0 December 03, 2019 * Deprecated 3-diode shading model * Updated library to facilitate bulk SQL operations and increase performance # RELEASE 08.00.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.00.0 January 29, 2020 * New and improved 3D Shading Capabilities! * Objects can now be added to a prediction to model near shading on a DC Field * Stepped-Slope Predictions improved to provide more accurate results * Electrical Shading algorithm improved for more accurate predictions * Revamped DC Field UI for optimized Object Shading Experience * Refer to the user manual [HERE](https://plantpredict.com/user_manual/predictions/power-plant-builder/object-shading/) for more information on 3D object shading! All 3D shading calculations were created using OpenGL. Open Graphics Library (OpenGL) is an application programming interface (API) for rendering 2D and 3D vector graphics. # RELEASE 08 01 0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.01.0 February 04, 2020 Bug Fixes * Corrected “Tables per Row” issue with fractional effect electrical shading calculations * Set default fraction effect percentage to 100 * Remedied issues that did not allow Fraction Effect electrical Shading with 2D shading predictions * Added transmission line loss percentage to plant exports # RELEASE 08.02.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.02.0 February 28, 2020 Changes * Upon log-in only “My Projects” are shown, to help with initial load time Bug Fixes * Corrected an error causing Table Length to be calculated differently on the front and back end * Resolved an issue with Expanded Time Series usage for Tracking Angles * Fixed an issue with Objects not being properly transposed when placing them near the DC Field * Solved an issue that was temporarily preventing the cloning of predictions * Alleviated an issue in which Backtracking was not being properly applied # RELEASE 08.03.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.03.0 April 09, 2020 Changes * Administrators are now able to move users from one company to another Bug Fixes * Resolved Post Height Errors that were occurring in the Map Builder * Fixed a bug on the Project Import that was causing a “Weather Not Found” error. * When Read-Only predictions are cancelled, the Results Summary from a prior prediction run is no longer deleted # RELEASE 08.03.3 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.03.3 April 21, 2020 Changes * When a prediction is waiting for a handler (Pending), the user will see their Queue position in order to better understand how long they will need to wait. Bug Fixes * None this release   # RELEASE 08.04.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.04.0 April 30, 2020 Changes * Allow time series to be carried through multi-year predictions * Allow time series cloned predictions to carry data over Bug Fixes * Addressed issues related to last release requiring back-out of some features. * Addressed issues related to API certificate validation failures * ‘Modules Wide’ was not appropriately saving in the Map Builder * Fractional shading was not working for v6 and prior predictions * PVsyst import of bifacial module – Units fix * Typo in the Time Series Download template – ‘Degress’ changed to ‘Degrees’ * Not able to run predictions for Antarctica * MapBuilder KMZ EXPORT resulted in too many DC Tables # RELEASE 08.06.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.06.0 June 25, 2020 Today we are doing a soft launch of our new [PlantPredict Premium](https://plantpredict.com/plantpredict-premium/) Paid subscription product.  All existing users will be grandfathered into a PlantPredict Premium Subscription that will expire on 8/1/2020.  So, you get a chance to experience PlantPredict Premium for a month for free.  Click here for more details:  [https://plantpredict.com/plantpredict-premium/](https://plantpredict.com/plantpredict-premium/) Release 08 06 0 Image1 In addition to PlantPredict Premium, we are also releasing our [3D Site View and topographical analysis](https://plantpredict.com/3d-site-view/) feature into our MapBuilder tool.  This will allow you to review and interact with your MapBuilder layout in 3 dimensions.  This is incredibly helpful for identifying topology problems with your project site and planning for them accordingly.  Click here for more details:  [https://plantpredict.com/3d-site-view/](https://plantpredict.com/3d-site-view/) Release 08 06 0 Image2 Here is a full list of Bugs and Features we are deploying with release 8.6.0 Bug Fixes: * Update display of “Calculate DC Capacity” on MapBuilder to always available when criteria is met * Fix backend parameter output for ROWSPACING when modulesHigh changed * Links clicked when not signed in do not redirect once authenticated * Reference irradiance cannot be set below 400 * Fix typo in “Submit registration” button * Company Admins can now see users within their company   Administration: * Provide Free Trial PlantPredict User access to experience all the [Premium Features of PlantPredict](https://plantpredict.com/plantpredict-premium/) * Provided a ‘Current Subscription Details’ page so a subscriber can understand their current access and upgrade if desired. * Improved support for non-monthly PlantPredict subscriptions * Management of subscription expiration date, subscription will be automatically downgraded to a Free account upon expiration   UI and API: * Slim down of data downloads required at startup of application.  Certain data collections were quite large and impeded performance and impacted user experience. * Added backend DC current and voltage correction supporting CuRe modeling * For multi-year simulations, the time series is now carried through for the remaining years of simulation. * Added validation checking Timeseries data. Timeseries should be length of weather file or weather file + year repeater * Restrict ‘Free User’ access for Object Shading until they upgrade as [‘Premium User’](https://plantpredict.com/plantpredict-premium/)   MapBuilder: * Restrict ‘Free User’ access for Upload or Download DEM data until they upgrade as [‘Premium User’](https://plantpredict.com/plantpredict-premium/) * Restrict ‘Free User’ access for Parcel Layer until they upgrade as [‘Premium User’](https://plantpredict.com/plantpredict-premium/) * SAVE of MAP data will now save all layer data to the server and retrieve the data upon re-entering the design. * 3D Site View has been added as a capability to MapBuilder. This option is restricted from ‘Free User’ access until they upgrade as [‘Premium User’](https://plantpredict.com/plantpredict-premium/) * With [‘Premium User’](https://plantpredict.com/plantpredict-premium/) access, all layers supported by 3D Site View output are available (Slope Analysis, Slope Banding, Post Height Analysis, Survey) * Added support for Google Elevation Points supporting 3D Site View.  This option is restricted from ‘Free User’ access until they upgrade as [‘Premium User’](https://plantpredict.com/plantpredict-premium/) # RELEASE 08.07.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.07.0 July 30, 2020 Today we launched our Downloadable Layout Document, the PLP-1000, to our Map Builder tool.  This will allow PlantPredict Premium users to generate an engineering grade document that they can share with their project stakeholders and colleagues. Release 08 07 0 Image1 We also greatly enhanced our layout capabilities with the introduction of our Advanced Layout DC Design functionality, which now allows you to select arrays so that you can delete, duplicate or move the DC field around on your map.  Fill in tight areas of your boundary, or remove the arrays from the portion of the boundary that will not have solar.  Find these functions on the toolbar in the Map Builder. Release 08 07 0 Image2 Following up on our 3D Site View release last month, we also implemented a Cut/Fill Capability into the Map Builder Tool.  Flatten a portion of your site and find out how much dirt will need to be moved to do so. Release 08 07 0 Image3 Along with these major enhancements, we also fixed several bugs and implemented some other minor enhancements: Bug Fixes * Cloning a Map Builder Prediction does not clone the Boundary, constraints or DC flood * .PPP files don’t import properly * Better handle accounts that are downgraded from Professional to Premium * Fix missing static files for NonProd and UAT * Batch iterations do not work via the UI (DC/AC ratio in combination with GCR iteration) * Time Series Downloads do not include details past 8760 * When MapBuilder page is refreshed, many values return as ‘undefined’ * Uploaded .TIF Data was not used in the 3D Site View as expected UI and API: * Improve Time Series Upload Error Messages * Refactor Time Series to work faster with Multi-Year Predictions * Addition of new interface supping Cut/Fill Analysis outputs and calculations * Implement new Report Generation plan that has better performance MapBuilder: * MAX SITE CAPACITY to update without need for invisible DC features * Reduce filtering of elevation points so they are closer together to better see the change in elevation when the survey layer is turned on * Introduction of several Premium user features:\ – Ability to download a PLP-1000 Layout diagram (PDF) from within the MapBuilder tool\ – Ability to do Cut/Fill Analysis using DEM, TIF, or Google elevation data\ – Single or multiple component selections\ – Cloning of selected DC tables, arrays, PCS\ – Delete selected DC components from the layout\ – Drag/Move/Snap DC components to desired locations\ – UNDO/REDO capabilities * Enhanced layer selection available to Premium users:\ – Parcels, Survey (Elevations), Earthwork (Cut/Fill), Slope Constraints, Slope Banding, Post Analysis # RELEASE 08.09.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.09.0 September 24, 2020 BUGS * Setback value in Constraints UI is not displaying in correct UoM for MapBuilder * Degradation issue for certain inverter operating regions * Typo on module import (Gamme Temperature Coefficient changed to ‘Gamma’) * PlantPredict Map Builder – Discrepancy in Buildable area leads to incorrect DC * Compare results excel download – missing electrical shading loss in loss factors section * 8760 Export not displaying Transmission Line losses * Fix UI Validation for Design Derate (The UI validation for Inverter Design Derate shows as “powerFactor”) * Update NSRDB API download request to use HTTPS * Cut Fill is not updating 3D Site View * Constraints imported from PlantDesign cannot have attributes edited in PlantPredict Administrative * Company Admin Improvements * Increase logging capabilities via a database change to increase ability to troubleshoot issues UI/API/Layout * Weather import can now handle larger files.  Storage container for weather files has been refactored * Added new value to DC field nodal data (GTeff\_with\_elec) * Align error messages from API re: PowerFactor with frontend “Design Derate” field labels\ When an error is thrown by the API for the fields labeled “Design Derate” in the UI, the API says there is an issue with ‘Power Factor’ (because that is the field name in the API).\ Resolved this difference by changing the field name from PowerFactor to DesignDerate in the API. * .Net SDK now supports non-expiring token * Added labels describing the DC specifications on subarrays when zoomed in * Ability to import KMZ Data and append it to my design (i.e. Constraints) so that it is easy to add constraints from KMZ data # RELEASE 08.10.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.10.0 October 29, 2020 BUGS * Parallel Strings is NOT updating properly when the Module Rating is updated on the DC Field * When changing Design Derate of the Inverter either long delay on updating respective values or no effect * Custom Discharge profile cannot be uploaded * Predictions have to be re-run after looking into Simulation Settings section regardless if changes were made or not * Shade Simulation for Trackers is not recognizing negative tracker angles * Adding Notes Disable View Results on executed prediction * Download Nodal Data option not visible on results report immediately * Map Builder ‘Estimated Area’ needs to report area required for desired AC/DC * The charts tab under Prediction results does not indicate when it is still loading / processing data * Remove item from “Recent Predictions” when Deleted * Predictions can be orphaned during Azure Scale-Down Events * Update assets when an import occurs * When trying to delete a project ,Delete button is disabled on Project Screen, Tooltip is also incorrect as it refers to modules * Unable to rename Projects in the project dashboard screen * Batch Prediction errors should not go to bottom of prediction log * My Weather, Inverter, and Module filter not properly working in Search Filter Administrative * Remove Admin Requirement for Stripe Checkout * Ability to complete a PlantPredict user registration and access without depending on an email making it through my spam filter UI/API/Layout * Added “Additional Night Losses” to the Inputs and Assumptions Report * Added both “Additional Night Losses” and the “Shelter Cooling Loss” as categories that are accessible in the “Quick Edit” for PowerPlant * Added ability to add multi-junction modules * Enhanced reporting performance changing queue pulling to push * Added ability to specify North-South and East-West Road Widths and have the MapBuilder build arrays using that roadway spacing * Refactor inverter logic to work with IMPP and VMPP adjustments # RELEASE 08.11.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.11.0 December 03, 2020 UI/API/Layout * Announcing the Launch of our Indicative Bill of Material within the Map Builder for PlantPredict Premium Subscribers!!!! * Click the “Bill of Materials” link to launch the Bill of Materials Screen and even download an Excel report with your BOM quantities. Release 08 11 0 Image1 * In the DC Field on BlockBuilder Predictions, we have made the Module Rating field Read Only.  We were seeing scaling issues in our Energy Predictions when users would over-ride the module wattage using this field.  So, this value is now for information purposes only. Release 08 11 0 Image2 BUGS * In Map Builder, there is no longer a restriction that forces your table size to be divisible by module string length. # RELEASE 08.12.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.12.0 January 28, 2021 * Introducing the Custom Array Builder! * Take Control of your Layout and design your arrays to your specification.  You can even “explode” your array into tables so that you can move tables around and fit them into the hard to reach corners of your site boundary. Release 08 12 0 Image1 * PAN File Import! * Here is a HUGE convenience improvement.  You can now import .PAN files directly into PlantPredict.  Please review the values on the imported Module File against the Module Data Sheet just to make sure and let us know if you notice any discrepancies. * Create DC As. * Now you can choose if you want to visualize your power plant using subarrays or fixed tilt/tracker tables.  Just specify your preference using the Create DC As field on the Map Builder parameters panel. Release 08 12 0 Image2 * Loss Factors on Map Builder * Adjust the most common loss factors from within the Map Builder user interface.  This used to be a capability that was only available in Block Builder. * Wild card searches * PlantPredict users can now search Module or Inverter libraries using Regex pattern matching.  Using a .\* (period and then asterix) serves as a wildcard character in your search string. * We also further optimized our automatic layout algorithm to better handle constraints * And we implemented versioning on the Clean Power Research weather file download for those customers who have a CPR API Subscription.   BUG FIXES * Time Series Data assignment was wrong when cloning.  Time Series Data was not getting assigned to the second array and the first one had the data from the second array. # RELEASE 08.13.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.13.0 February 25, 2021 * [**Meteonorm**](https://meteonorm.com/en/) weather data is now available to ALL PlantPredict Premium Subscribers * An agreement has been reached between Meteonorm and PlantPredict, which grants access to all PlantPredict Premium subscribers the ability to use the One-Click-Download of hourly Meteonorm TMY weather data for use in your PlantPredict Predictions. * Access to this data is Free and included in your PlantPredict Premium Subscription…for no additional charge. * Meteonorm has full global coverage so this is a benefit for our PlantPredict Premium subscribers around the world. * You can also now use Meteonorm data in Multi-Year simulations. Release 08 13 0 Image1 * OND File Import! * Here is a HUGE convenience improvement.  In addition to .PAN files, you can now import .OND files directly into PlantPredict.  Please review the values on the imported Inverter File against the Inverter Data Sheet just to make sure and let us know if you notice any discrepancies.   * When doing Multi-Year Prediction and using the Non-Linear DC Degradation, you are now able to use negative values.  This is important for modeling LeTID.  We plan to increase our LeTID support in future releases, but this makes it possible to model LeTID using the functionality that currently exists within the Non-Linear DC Degradation capability.   BUG FIXES * Allow negative values for Module Quality loss factor in the MapBuilder.  Negative values are allowed in the Block Builder, but were not allowed in the MapBuilder, but this has been fixed. * Prediction UI was locking and not reporting when the prediction is complete.  If you ever notice this, please just refresh your screen. # RELEASE 08.14.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.14.0 March 21, 2021 * Financial Modeling is NOW available in PlantPredict for PlantPredict Premium Subscribers only. * Today we released our Version 1 Financial Model, which is a simple model that establishes a foundation that we can build upon to create a more sophisticated model over time. * After running a Prediction, you will notice a new button next to the View Results button and this is where you will want to go to do your Financial Modeling * Quickly calculate Levelized Cost of Electricity (LCOE), Internal Rate of Return (IRR) and Net Present Value (NPV) using your energy prediction results and input parameters that you can control. * 25 different Input Parameters allow you to adjust important variables such as BOS Cost, Module Cost, Investment Tax Credit, PPA Pricing, O\&M Costs, Federal, State and Local Taxes just to name a few. * Results are displayed as Key Performance Indicators, as well as, a cash flow graph that shows you the annual cash flows, along with the cumulative cash flows associated with your project. Release 08 14 0 Image1 * Company Administrators can define default Financial Model Input Parameters for their company * If you don’t like the general defaults that we have established, your company administrator can go into your Company Settings and update the Financial Analysis default settings.   BUG FIXES * Meteonorm hot fix to ensure all meteonorm weather files are available to PlantPredict Premium subscribers, even those that were downloaded prior to last month’s release. * Removed the restriction so that now all module cell technologies can be modeled as bifacial modules. # RELEASE 08.15.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.15.0 April 29, 2021 * **Model LeTID on your Multi-Year Predictions** * Light and elevated Temperature Induced Degradation (LeTID) is an important degradation mechanism that appears in certain solar modules. * As more research emerges, solar modeling software needs to be able to simulate LeTID degradation to ensure that all risks are known and understood. * Within the Prediction Simulation Settings, PlantPredict users now have the ability to turn on LeTID when running a multi-year prediction and then define the LeTID rates on an annual basis. * [More information can be found in our Models and Algorithms section of our website](https://plantpredict.com/algorithm/dc-array-behavior/degradation-and-plant-construction-schedule/light-and-elevated-temperature-induced-degradation-letid/) Release 08 15 0 Image1 BUG FIXES * Plant Predict: Arrays, Inverters and DC fields with numbers >1 inaccessible. * Fix block navigation issue. * Plant Predict: Default values for backside mismatch and structure shading for bifacial modules are missing. * Saving a map prediction with a bifacial module should apply the module backside mismatch to the corresponding DCField. * Error Message does not disappear after saving with correct info. # RELEASE 08.16.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.16.0 June 03, 2021 * Custom Array Builder Improvements * The Custom Array Builder is a powerful tool that allows you to build your power plant arrays exactly how you want them.  It is accessible only from within Map Builder Predictions and can be opened by clicking the bottom icon in the tool bar on the right hand side of the map. Release 08 16 0 Image1 * Here is a listing of some of the enhancements you can expect when building a custom array: * E/W and N/S Roads * Define the Tables and Rows for each sub-array (as defined by the roads in your array). * Custom Table Sizes either based on the Modules High and Wide or on the Table Dimensions * Define spacing between your tables Release 08 16 0 Image2 * AC Design Section in Map Builder Predictions * You can now set a Design Derate for your inverters directly from the Map Builder Screen and then see what the kVA Rating and Setpoint KW is for your inverters Release 08 16 0 Image3 BUG FIXES * Map Builder Ghost boundaries sometimes appeared when you opened your map builder screen.  This has been fixed. * Missing the Country code for AX. * Constraint Names, Setback and Color could not be updated when coming back into a Map Builder.  This has been fixed. * PlantPredict now supports table sizes larger than 100 modules wide. * Inverter Quantity within BOM now matches up better with MWac values. # RELEASE 08.17.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.17.0 July 01, 2021 * You can now Calculate DC Capacity using Custom Arrays that are designed by You! * This is the latest evolution in our Map Builder capability expansion, and puts you in control of the Arrays that you use when Calculating DC Capacity for your site.  Now, all the power of the Custom Array Builder with the speed of our automated layout process. Release 08 17 0 Image1 * You can also choose to exclude partial arrays if you want to see how much DC Capacity you can fit on your boundaries using only complete arrays. * Visualize Low Light Response for your Module Files * A special Chart tab has been added to the Module Library Module interface.  Click on this tab to see both a table and chart that shows Low Light Response (a.k.a Effective Irradiance Response) for the module you are using. Release 08 17 0 Image2 BUG FIXES * FEMA flood plain API had stopped working and it is now working again. * Map Builder data converted to Block Builder DC Fields were not reporting appropriate module orientation when Landscape selected. * User Limits for Premium Subscribers should account for disabled accounts. * In Map Builder, moving a previously exploded and assembled subarray would leave behind its tables. * Array Builder EXPLODE/ASSEMBLE of racked arrays would produce jagged subarray outlines. * Array Builder racked exploded tables offset incorrectly, not matching the subarray outline. * Array Builder would produce different size subarray based on positive or negative racking angle. * Array Builder racking an array having four subarrays would result in incorrect result in subarrays of unequal rows. # RELEASE 08.18.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.18.0 July 15, 2021 Automatically import Horizon Scenes from Meteonorm for your prediction with the click of a button * PlantPredict Premium customers are now able to take advantage of a partnership PlantPredict has with Meteonorm that will allow you to automatically import a Horizon Scene for your location anywhere in the world!  This Horizon Scene is used to accurately assess the Far Shading Losses for your prediction. Release 08 18 0 Image1 PlantPredict Premium Enterprise Customers now get 2 Free IT Admin users to help with license and company adminstration * By popular demand, a new user role has been created that will allow an administrative user to access PlantPredict for company administration purposes only. * All Enterprise Subscribers will get 2 FREE IT Admin users for their account that they can give out to the individuals who are expected to administer the company account. * IT Admin users do not have the ability to create Projects or Prediction, so they will be restricted to Company Administration only BUG FIXES * MapBuilder: ArrayBuilder custom arrays having 1 subarray fail on ArrayBuilders ‘Calculate DC Capactity’. * MapBuilder: ArrayBuilder not working for =\< 15 acres. * MapBuilder: Fix DCFields so fractional arrayCount is not possible. * Design derate in Map Builder is only adjustable in one direction. * Multi-Year comparison 8760 specific yield labels now properly reflect they are cumulative values and not averages. # RELEASE 08.19.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.19.0 July 29, 2021 We made some improvements to our reports in order to catch them up with some of the functionality we have released over the past few months * Financial Model Metrics now appear on the Prediction Comparison Report.  We are starting with LCOE, IRR% and NPV, so that you can run several scenarios and easily compare which is the best based upon these metrics.  This also works with our Batch Prediction capability, so you can run up to 350 predictions with a single click of a button and then use the comparison report to identify the prediction with the lowest LCOE or highest IRR% and NPV. Release 08 19 0 Image1 * LeTID Losses now appear on all reports!  We launched LeTID loss calculations a couple months ago, but until this release you did not have them included on your downloadable reports. The following reports have been updated to include LeTID: * Prediction Comparison Report * Plant Summary PDF * Plant Summary 8760 * Inputs & Assumptions * Block Summary 8760 BUG FIXES * MapBuilder – Racked arrays result in overlapping array shapes when populating DC Capacity from the Array Builder. * IT Admins can now generate API credentials. * Fix ‘Import Weather’ UI Layout. * MapBuilder – FEMA Flood Plain layers updated to be more visible. # RELEASE 08.20.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.20.0 August 12, 2021 Implemented a User Profile screen, which lays the foundation for future user centric capabilities and features * Click on the small user silhouette that is next to your name in the lower right hand corner of the screen Release 08 20 0 Image1 * You will be taken to a User Profile Screen that currently only displays your basic Name, Email, Title and Organization information BUG FIXES * Upon pressing “Update DC Capacity” in Map Builder, the DC would disappear immediately after calculation. # RELEASE 08.21.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.21.0 August 26, 2021 It was recently announced that Terabase is acquiring PlantPredict, if you have not seen the press release, you can read it on our Press and Events page:  [Press & Events | PlantPredict](https://plantpredict.com/press-and-events/) As part of this process, you will need to Consent to transfer your account and data to Terabase.  Please do so by clicking here:  [PlantPredict](https://ui.plantpredict.com/agreement) All Users have until September 30th to Provide their consent.  If you have not consented, your account and data will be backed up on First Solar servers, and deleted from PlantPredict. Development/Maintenance: * Clean Power Research (CPR 3.5v) weather file availability regions have been revised to display their global weather offerings. BUG FIXES * MapBuilder: Upon closing the Array Builder, selection events fail. This could be witnessed during selection processes of DC and events that would enable/disable certain buttons. * MapBuilder: Upon changing certain parameters on the UI, the DC Capacity continuously disappears. # RELEASE 08.22.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.22.0 September 09, 2021 ## **Solcast TMY weather data now available in PlantPredict!** PlantPredict is pleased to announce that we have added a new weather data provider – Solcast.  Solcast’s global coverage TMY dataset is now accessible within PlantPredict Premium as a 1-click download.  PlantPredict Premium customers can access up to 2 free TMY P50 downloads a month.  For additional access, monthly no lock-in contracts are available in the Solcast API Toolkit, with pricing details [on the Solcast Website](https://solcast.com/pricing/#historical) Release 08 22 0 Image1 We are also making available Clean Power Research’s latest weather data (v3.5) and we have fixed a bug that was causing an error when attempting to download NASA-SSE weather data. In addition to the weather file related improvements we are also making some enhancements in the Map Builder prediction capabilities.  When importing a Constraint .KMZ file, you can specify the Set Back, Color and auto-labeling of the constraints in the file that you are uploading.  You will also be able to automatically create slope constraints on your design by doing the Slope Constraint analysis in the 3D Site View, then clicking on a slope constraint on your map view and selecting the “Create All Constraints” button. ### **Constraint Import** Release 08 22 0 Image2 ### **Slope Constraints** Release 08 22 0 Image3 BUG FIXES * Fix weather library raw data tab – First row is shown on top of header row. * CPR (Clean Power Research) Version dropdown is appearing in the incorrect spot. * In PlantPredict Batch predictions, HV Transformers and Transmission Lines were not used. * In MapBuilder it was possible to multi-select Parcel and Wetland and create constraint of both. * In MapBuilder, Create ALL Constraints for wetlands was colorizing all constrains after the color of the selected wetland. * Fixed banner to always be floating so it does not display off screen on scrollable pages. # RELEASE 08.23.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.23.0 September 23, 2021 ### **Quality Check is now available when doing a one-click weather download** We have been focusing on improving our Weather Import features for PlantPredict Premium subscribers.  Last release we introduced Solcast as a new weather data provider.  This release we incorporated the Quality Check feature when using the 1-click weather import.  Certain places around the world have time zones that don’t always align with our weather providers.  You now have a chance to review the weather data and apply a time shift to ensure that the weather data you are importing aligns with the solar time zone at the location you are modeling.  This quality check has been a part of the weather file upload for a long time, so we just implemented it in the 1-click weather download process, since it is proven to work very well. After the weather data has downloaded, you are taken to a Quality Check screen to review and shift data if needed. Release 08 23 0 Image1 We also added Map Data to the .PPP Project and Predict Export and Import process.  This makes .PPP Files more complete. BUG FIXES * Fixed header row styling when importing weather. Previously, the header was shown incorrectly and over the top of data. * Within MapBuilder, saving the prediction would fail if a constraint was selected that had no label. # RELEASE 08.24.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.24.0 September 30, 2021 Release 08 24 0 Image1 ## Today begins a new beginning for PlantPredict as we transition to Terabase Energy    As part of the transition, we have been seeking consent from all PlantPredict users to transfer your data to Terabase Energy.  If you provided that consent, then your account and data will remain unaffected throughout this transition.  If you declined consent, or did not provide any response at all, your user account and private data will be removed from the system.  First Solar is maintaining a backup of the non-consenting users and PlantPredict support can work with First Solar to get exported versions of your Projects, Predictions, Weather Files, Module Files and Inverter Files if you did not consent and still want your data. Any questions or inquiries, send an email to [support@plantpredict.com](mailto:support@plantpredict.com) #### **There is a new Terms of Use** All Users logging in after the transition to Terabase has happened will be prompted with the new Terabase/PlantPredict Terms of Use.  You must accept these Terms of Use to continue using PlantPredict.  A full .PDF Version of the Terms of Use is available at all times from within the Resources page in PlantPredict. Release 08 24 0 Image2 We are very excited about this transition and look forward to serving you better from within our new Terabase home.  Terabase offers a large suite of digital products and services, which we plan to integrate with and create more value than ever before for our customers and subscribers. BUG FIXES * .KMZ Constraint files when uploaded did not have the right constraint included.  This has been fixed. # RELEASE 08.25.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.25.0 October 21, 2021 ### **5000 Solcast Weather files are now available as Global Weather Files for ALL PlantPredict Users to utilize** Release 08 25 0 Image1 As part of Release 8.25.0, Solcast has provided 5000 free weather files from around the world that are now available to ALL PlantPredict Users (Even the Free PlantPredict Basic Users).  PlantPredict Users will get 10 free uses of these weather files, so the access is not unlimited, but this is in addition to the 2 free weather file downloads each PlantPredict Premium user gets per month.  So, this is 10 extra free weather files in addition to the 24 free weather files that PlantPredict Premium users get annually for free. In addition to this, we have continued to work on our transition to Terabase Energy.  This transition will take some time and has our development team very busy as we work on an integration strategy. BUG FIXES * Fixed a bug where prediction run requests were not being reflected properly in the user interface. * Fixed a bug with the .PAN file import, where the Nameplate wattage and the Rp\_EXP were not being pulled correctly from the .PAN file. * The Meteonorm Horizon Scene was not working for our PlantPredict Free Trial users, this has been fixed.  If you are interested in giving PlantPredict Premium a try, contact [support@plantpredict.com](mailto:support@plantpredict.com) and request a Free Trial! # RELEASE 08.26.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.26.0 November 04, 2021 ### **PlantPredict Premium Users can now automatically import monthly Albedo values for their specific project location (from NSRDB) with the click of a button!** Release 08 26 0 Image1 These location specific Albedo Values help you get more accurate results when modeling Bifacial modules, which can help you better understand the value of your solar assets.  The Monthly Parameters table is located inside the Environmental Conditions screen inside your Prediction.  Simply click on the Import NSRDB Albedo button and PlantPredict will pull in the monthly Albedo values from the NSRDB API. We also introduced a new Sort By function inside our Module and Inverter Library screens.  This will make finding the Module or Inverter File, that you are looking for, easier. Release 08 26 0 Image2 BUG FIXES * None this release # RELEASE 08.27.0 Source: https://docs.plantpredict.com/release-notes/Version-08/RELEASE-08.27.0 November 18, 2021 With this release we carried forward the Sort By logic (that we implemented in the Libraries last release) into the Inverter and Module selection screens within the prediction.  This makes it easier to find the exact Inverter or Module file that you are looking for Release 08 27 0 Image1 We also changed the source of elevation points in our 3D Site View to use ESRI ArcGIS data instead of Google Earth.  We hope that you will find that the data provided by ESRI is faster to render and follows the terrain better than what Google Earth was providing. Release 08 27 0 Image2 BUG FIXES * Performance Improvement for Super Admins – Caching Company Values * Multi-Year predictions used to throw an error when using Locked Weather Files.  We fixed this. * Fixed a small typo in the DC Field loss section in the Map Builder screen.  Light Induced Deg. is spelled correctly now. # RELEASE 09.00.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.00.0 December 16, 2021 As we finish out 2021, we will be starting 2022 with a major version release of PlantPredict.  PlantPredict Version 9 is our first major release in over a year, so we are very excited to be making this upgrade, which also coincides with our transition to Terabase Energy.  Below is a summary of the changes that are being released as part of Version 9.0.0.  Please be aware that all new predictions will be run using V9 logic.  You can still run predictions using V8 logic, by setting the Version to 8 in the Prediction Screen prior to running the prediction.  This will allow you to compare the differences between results of V8 prediction logic compared to V9. Release 09 00 0 Image1 Diffuse IAM A new calculation method for the calculation of the Diffuse IAM losses has been implemented. The model has been proposed and validated by Marion from NREL and been extended for the use of the tabular IAM values that are part of the module file. More background can be found in our algorithm section under [Diffuse IAM Losses](https://plantpredict.com/algorithm/optical-losses/#diffuse-iam-losses). Release 09 00 0 Image2 Expect IAM losses to be slightly reduced when running a prediction using V9 logic as compared to V8 (up to 0.6% for fixed tilt in areas of a high diffuse fraction) as the former logic was using the ASHRAE parametrization for the diffuse IAM losses. .PPP Prediction File import into an existing Project An Import Predictions button has been added to the Project screen that allows you to upload a .PPP file and have the predictions contained within that .PPP file added directly to the project that is open.  Historically, when uploading a .PPP file, PlantPredict would create a new project, resulting is potentially duplicated project folders.  That behavior still exists if you upload a .PPP file from the Project Library Screen, if needed. Release 09 00 0 Image3 Weather File names are now editable Users can now update the name of the weather files that they create and own.  The name will still default based upon the provider and Lat/Lon; however, if you want to provide a special name to a weather file that you own, you are able to easily over-ride the default name. Degradation Rate on muti-year predictions will default from the degradation rate as defined on the Module File The module defined degradation rate will be the default value when setting up a multi-year prediction.  The user is still able to over-ride this default if they so choose.  We also allow company administrators to change the default behavior, in the Company Defaults section, if they want to continue using a company wide fixed default degradation rate. Most CleanPowerResearch Weather Files will no longer be available as Global Weather files Due to a change in licensing terms, PlantPredict will no longer make certain CPR weather files available  as Global weather files to all users.  We are currently working with CPR to enhance our integration benefits for our PlantPredict Premium Subscribers who also have a SolarAnywhere subscription.  More to come on that in future release notes.  There will still be around 30 CPR weather files that are already considered SolarAnywhere Public weather files, which will still remain as Global Weather Files in PlantPredict. BUG FIXES * Fixed holes in the mesh of the 3D Site view where elevation points were missing. # RELEASE 09.01.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.01.0 January 13, 2021 # **PlantPredict Premium Subscribers can now download their MapBuilder Layouts as a CAD compatible file (Drawing Exchange Format -DXF File)** Opening your MapBuilder Layout in AutoCAD is as easy as a few button clicks now!  We have updated the Download Data feature in the MapBuilder screen, so that it now opens a modal window where you can choose to download your Layout as a .KMZ or .DXF file.  The .KMZ functionality still works as before; however, when you choose the .DXF format (and desired Output Coordinate System), you will get a .DXF file that can be opened in AutoCAD, Civil 3D or other .DXF compatible applications. Release 09 01 0 Image1 ## **PlantPredict Premium Business and Enterprise Company Admins ONLY – New Company Level Defaults are available** For our PlantPredict Premium Business and Enterprise customers, standardizing predictions across your company will now be easier than ever!  Company Admins are now able to establish a default: Inverter, Module, Desired DC:AC Ratio, Design Derate, Mounting Type, Setback, N-S and E-W Road Widths, GCR and Azimuth.  Once the Company Defaults are established, all new predictions (both MapBuilder and BlockBuilder) will start with these default values.  This will save your Engineers time on every prediction they create and also enforce design standards at your company. Release 09 01 0 Image2 1 ## **Mark your Favorite Predictions as “Favorites” for easy Navigation** There is now the ability to indicate up to 5 Favorite Predictions to make them easily accessible from the left navigation pane of PlantPredict.  Click the star near the top of the Prediction to Mark it as your Favorite and then it will be listed under your Favorites on the left hand side BUG FIXES * Copy and Paste did not work on the Spectral Loss column in the Environmental Conditions Screen.  Now it does. * Recent Predictions listing did not work properly for those with multiple accounts on the same computer. * Companies with a CPR API key were not able to use it, now they are. # RELEASE 09.02.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.02.0 January 27, 2021 Release 9.2.0 is a relatively minor release for PlantPredict.  The team has some big ticket items we are working on and are not ready to be released yet, so look forward to these features that are in development:  Terabase Dev Platform integration and Slope Aware Predictions. For this release we did some cleanup on the Company Administration screen.  We removed the buttons that were needed for the Consent process that we used when we were transitioning to Terabase.  We also worked on our payment processing functionality to address some issues that PlantPredict Premium subscribers had encountered when renewing their subscriptions, so the payment process will work a little smoother as a result of this release. Thank you for your continued use of PlantPredict and if you have any trouble or suggestions for improvements, we are happy to hear from you at [support@plantpredict.com](mailto:support@plantpredict.com)! BUG FIXES * None # RELEASE 09.03.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.03.0 February 09, 2022 **Slope Aware Map Builder Predictions** Our first version of Slope Aware capabilities is being rolled out as part of this release for PlantPredict Premium Subscribers ONLY.  When working with a Map Builder Prediction, you can turn ON the Advanced Slope Aware mode and PlantPredict will determine the prevailing grade of your arrays and utilize that to adjust your shading losses accordingly. Release 09 03 0 Image1 **Update Inverters and/or Modules when Cloning a Project** When cloning a Project, the wizard will now stop and ask you to review the Inverters and Modules that are used within the Predictions associated with the Project.  You are then given the option to change the Inverters and/or the Modules which will automatically update the DC Field records associated with all the Predictions in the Project.  This will make it easier and quicker than ever to understand how a wholesale change of either Inverter or Module will effect all the predictions in a Project. Release 09 03 0 Image2 **Anderson Optimization KMZ can be imported directly into a Mapbuilder Prediction** PlantPredict Premium users who are also Anderson Optimization subscribers can take Boundary and Exclusion KMZ files from Anderson Optimization and import them directly into PlantPredict.  This will streamline the integration between these two industry leading cloud based software. Release 09 03 0 Image3 BUG FIXES * Updated many of the references to First Solar and replaced them with PlantPredict by Terabase. # RELEASE 09.04.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.04.0 February 24, 2022 **Multi-Variate Charting** On the Prediction Results Screen, you are now able to view Chart Data for two Variables at the same time on the same chart.  This increases your analytical ability when reviewing your Prediction Results.  Place a checkmark in 2 of the available Variables to Display and those variables will appear in the chart window.  This works for all time increments Release 09 04 0 Image1 BUG FIXES * Cleaned up several labels where the Unit was not defined or the Unit was technically not correct * When Cloning a Project that has Map Builder Predictions, the Boundary and Constraints on the Maps properly get cloned * When switching from Simple to Advanced Slope Aware mode, the Layout does not clear anymore * The “How Likely are you to recommend?” slider no longer appears…this survey has been discontinued. * Modules High and Modules wide were not defaulting correctly on Map Builder predictions, but this has now been fixed. * New MapBuilder Predictions were not using the Company Level Default values on the first DC Flood.  This has been fixed. # RELEASE 09.05.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.05.0 March 03, 2022 **Prediction Comparison Charting** When doing a Prediction Comparison, you can now compare multiple predictions using the chart interface.  Simply initiate the Prediction Comparison, and then you will see a tab that is labeled Charts and when you go to this tab you can compare the key performance indicators of those predictions. Release 09 05 0 Image1 **Inverter Limitation Loss Charting** We are planning to add Loss Factors to our charts (for PlantPredict Premium Subscribers ONLY)and we are starting with Inverter Limitation Loss as our first Loss factor.  So, you can see when your inverters are working sub optimally and also visualize the clipping that is occurring in your power plant. Release 09 05 0 Image2 **Other Minor Enhancements** * Downloaded Weather Files automatically appear as the Selected Weather File when imitating the weather file download from inside a prediction.  This is a minor change that will save you time each time you want to download a new weather file for your prediction. * Latitude and Longitude Values now appear as decimal values on the Project Screen.  We have received feedback that the minute level format for Lat/Lon was not helpful, so we changed to Decimal format only when displaying Lat/Lon. * You can now initiate a Prediction Clone from within the Prediction Screen.  You used to need to navigate to the Project Screen and then clone the Prediction that you wanted to clone.  That was a couple extra mouse clicks, so we added a Clone link to the top of the Prediction to make this process a little easier. * You can now create a Constraint Shape from a Parcel with a click of a mouse button.  Historically, you could only create a Site Boundary, but now the option exists to also create a constraint.  This is handy if you are evaluating multiple parcels in an area and you want an easy way to turn on/off certain parcels. * Terrain Slope constraint analysis now supports support values up to 30%.  We used to limit this to 20%, but we received feedback that users would like to evaluate slopes even greater than 20%. BUG FIXES * Users without Company Level Default Road Widths were not able to create Block Builder Predictions because of an error.  We have resolved this. * Project/Prediction File imports (.PPP Files) that included Non-Global modules or inverters were failing.  This has also been resolved. # RELEASE 09.06.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.06.0 March 24, 2022 **Transmission Lines, Substations and Pipelines Now Available to PlantPredict Premium users as Map Layers in Map Builder Predictions** PlantPredict Premium users now have more Map Overlays available in the Map Builder Prediction Screen.  Transmission Lines, Substations, Oil Pipelines and Natural Gas Pipelines are now available as Map Overlays.  When creating a Map Builder Prediction, simply click on the Map Overlays screen and click the check box next to one of these new Map Overlays to see the data for your location.  There is also a legend so that you know what the colors mean for these objects. Release 09 06 0 Image1 In addition to being able to see these new Map Overlays, you can also click on them to get more information about them and even automatically create constraints on your site. Release 09 06 0 Image2 **More Loss Factors Available in Charting** Last Sprint we added Inverter Limitation Loss.  This Sprint we have expanded upon that and added Near Shading Loss, Module Irradiance Loss, Module Temperature Loss, Inverter Efficiency Loss and Spectral Loss to the Charting Feature in the Prediction Results screen.  These Loss Factors are also only for PlantPredict Premium Users.  If you are not currently a PlantPredict Premium Subscriber, and are interested in trying out these Premium features, reach out to [support@plantpredict.com](mailto:support@plantpredict.com) and request a Free Trial License Today! Release 09 06 0 Image3 BUG FIXES * Fixed some bugs related to .PAN File import when importing a CdTe Module .PAN File. # RELEASE 09.07.0 Source: https://docs.plantpredict.com/release-notes/Version-09/RELEASE-09.07.0 April 07, 2022 **A fresh Meteonorm weather file is now automatically downloaded for your Project Location when you create a Project in PlantPredict or the Terabase Dev Platform** In order to ensure that there is always at least one weather file available for your Predictions, we are automatically downloading a new Meteonorm weather file in the background when you create a new project in PlantPredict.  Some of our Meteonorm weather files are a little dated, so this will also ensure that you have the latest Meteonorm data ready and available to use for your predictions. Release 09 07 0 Image1 **Updated Integration with Clean Power Research’s SolarAnywhere TGY Unlimited API** Clean Power Research has updated their API integration to a single API Key, which simplifies setup.  Furthermore, Clean Power Research now offers their SolarAnywhere TGY Unlimited subscribers the ability to automatically generate an API key, and then use that API key in PlantPredict.  When an API key is setup for CPR, you can use the 1-Click Weather Download feature to automatically download up to 200 weather files per year for your company.  This capability is only available PlantPredict Premium subscribers, and you must be a Company Admin in order to update your CPR API Key.  If you would like more information on how to Subscribe to PlantPredict Premium, or how to setup your SolarAnywhere API Key, please contact [support@plantpredict](mailto:support@plantpredict.com) and we will gladly help you! Release 09 07 0 Image2 PlantPredict Premium Administrators can insert a SolarAnywhere API Key into the Company Default Setting Screen BUG FIXES * None this Release. # RELEASE 10.00.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.00.0 April 21, 2022 With Version 10 we are making your Bifacial Predictions more accurate and making the results easier to understand by adjusting how the Backside Mismatch is affecting Module Irradiance Loss.  In version 9 the Backside Mismatch of a Bifacial module would have an impact on the Module Irradiance Loss.  This was not aligned with how other software such as PVSyst or SolarFarmer works and so it was a source of confusion for our users who were comparing PlantPredict Results with these software.  We also noticed that the impact on Module Irradiance loss was overstated on predictions with very high Backside Mismatch losses (i.e. greater than 20%). Furthermore, we are replacing Backside Effective Irradiance in our Loss Factors with Backside Irradiance and Structure Shading Loss.  In Version 9, Backside Irradiance and Structure Shading Loss were bundled together into Backside Effective Irradiance, and we felt that this was not transparent enough.  So, now you can see the Backside Irradiance Gain along with Structure Shading Loss to understand the impact that the structure shading is having on the energy results of your prediction.  More details can be found in our Models and Algorithms section of our website:  [https://plantpredict.com/algorithm/irradiance-radiation/#679-2](https://plantpredict.com/algorithm/irradiance-radiation/#679-2) Release 10 00 0 Image1 **Updates to our GTI DIRINT Model** With Version 10 we are also making an adjustment to our GTI DIRINT decomposition model to better handle diffuse light at sunrise and at sunset.  For predictions that were using subhourly weather data with Plane of Array Irradiance, we were noticing a spike in production around sunrise and also at sunset.  The changes we made to the GTI DIRINT model will smooth these effects out.  More information can be found in the Models and Algorithms section of our website here:  [https://plantpredict.com/algorithm/irradiance-radiation/#disc-model](https://plantpredict.com/algorithm/irradiance-radiation/#disc-model) **3D Shading Model processing time improvement** Lastly, with Version 10 we are making a change to our 3D Shading algorithm model that will speed up the processing of predictions that use the 3D Shading engine.  We are basically reducing the resolution that the model is using, which has a significant impact on the processing time of the engine, and is not having a significant impact on prediction results.  You may notice a change to your shading loss when running a prediction with 3D shading in version 10 compared to version 9.  You will also notice that the predictions take about 75% less time to run in version 10 over version 9. # RELEASE 10.01.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.01.0 May 03, 2022 **New Password Policy has been implemented** With today’s release, we have increased the data security protection of all PlantPredict users by strengthening our password requirements.  All users will need to reset their password as part of this change, so an email is being mailed out to all PlantPredict users with a temporary password that will allow the user to reset their password. If you have any trouble logging in please contact PlantPredict support at [support@plantpredict.com](mailto:support@plantpredict.com). **Post Height has been added as a Batch Prediction Variable to Iterate on** We are going to be expanding the Batch Prediction capabilities of PlantPredict over the next few sprints.  One of the first changes is that we have added post height as a new parameter that can be iterated on.  This allows users to quickly identify the optimal post height for their project Release 10 01 0 Image1 **Specific Yield added to Batch Results Chart and Sort By Parameter** Users can now choose if they want to see their Batch Prediction results charted by Specific Yield or Plant Net Energy.  Sometimes, users want to prioritize Specific Yield, and that was difficult to do when the only parameter to chart on was Plant Net Energy. **Measurements appear when drawing Constraints in the Map Builder tool** When drawing Constraints (Both Area and Linear), the measurements will appear as you draw.  This will allow you to make sure your constraints align with the dimensions of the object that you are trying to model as a constraint. Release 10 01 0 Image2 BUG FIXES * Nighttime Inverter Losses has been removed from the Block Builder Array screen as it was not actually impacting Yield. * Backside Irradiance was appearing as negative in the Loss Tree in some situations. # RELEASE 10.02.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.02.0 May 20, 2022 **Batch Prediction Improvements!** We are rolling out a new user interface for our Batch Predictions today, which allows the Batch Prediction functionality to work better and look nicer for our PlantPredict Premium customers. Release 10 02 0 Image1 Model Choices in Batch * Utilize the Uncertainty Analysis to do a P90, P99, P50 or even a P10 analysis for your batch predictions * Specify your models (decomposition, transposition, module temperature, etc…) that will be applied to your batch prediction putting you more in control of the results * Now you can run multi-year predictions in batch mode.  This makes it easier to see how energy results are impacted by long term degradation when you vary any of our batch variables with your prediction. Release 10 02 0 Image2 1 **Analyze North and South Slope separately in 3D Site View** PlantPredict Premium subscribers can now analyze both North facing and South facing slope separately Release 10 02 0 Image3 **New KMZ Layer Upload mode** There is now a KML/KMZ backdrop mode in the Upload KMZ pop-up window.  This allows a PlantPredict Premium user to be able to upload a KMZ file and create an overlay with the objects in the KMZ.  Clicking on the objects allows the user to define if the object is a site boundary or a site constraint. BUG FIXES * One-click weather download was not working properly with the CPR API key.  It is now working just fine. * Fixed Tilt batch predictions were not computing correctly. * When popup displays on Mapbuilder, a ‘selection dead zone’ occurs on TOP and RIGHT of popup. * When setbacks for both Site Boundary and Constraints are ‘0’, building DC islands is compromised. # RELEASE 10.03.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.03.0 April 04, 2023 **Short Sprint = Minor Release** We had a very short sprint this release cycle and only released some back end improvements and a minor bug fix.  Our development team is working on a major release that is planned for the end of this month, which will include Slope Aware Backtracking!  This is a major step forward in PlantPredict’s ability to model terrain and the shading impacts of the terrain.  Stay Tuned! BUG FIXES * Added a new Project Type for the String Sizing Calculator tool that is currently under development * Addressed loophole issue regarding PlantPredict Premium Licensing and API Access * Fixed an issue with the Slope Constraints logic where we would get inverse constraint creation when a site was completely surrounded by high slope areas. # RELEASE 10.04.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.04.0 July 07, 2022 **Slope Aware Backtracking** Release 10 04 0 Image1 Release 10 04 0 Image2 For the past several years, in the DC Field section of a Block Builder prediction, we have indicated that modeling your DC Field with trackers that follow the ground slope would be “Coming Soon”…. Soon has finally arrived! When modeling a DC Field on a sloped terrain, the transposition model will now recognize the North-South Slope (Trackers) and East-West Slope (Fixed Tilt) and adjust the POAI accordingly.  Furthermore, the backtracking algorithm has been updated to recognize the ground slope and adjust accordingly to avoid direct beam shading in the early morning and late evenings when the sun is low on the horizon.  As a result, you can now utilize PlantPredict to understand the impact that ground slope has on the production of your PV Power Plant. For our PlantPredict Premium subscribers, we have also updated our Advanced Plant Layout functionality within the Map Builder Slope Design tab so that you can specify if you want to use the traditional Flat Table Orientation or the new Sloped Table Orientation (with Slope aware Backtracking).  You can also specify if you want to use the 2D (fast and accurate) or the 3D (a little slower and slightly more accurate) shading algorithm. Release 10 04 0 Image3 **Ashrae Station Database has been updated** Release 10 04 0 Image4 We have also purchased and rolled out an updated data set of Ashrae weather station data.  When PlantPredict pulls the nearest Ashrae station, you will be pulling from a 2021 data set. **SolarGIS API Integration has been updated** For Plant Predict Premium customers who are also Solargis API Customers, you can now take advantage of a new and improved site-specific (high spatial resolution) Solargis API, which serves TMY60 (Typical Meteorological Year at 60-minute intervals) or TMY15 (15-minute intervals) using our 1 click weather file download feature. Release 10 04 0 Image5 Solargis TMY files are calculated using long-term historical time series data (from 1994/1999/2007 to the end of 2021, depending on the regions). The data is also site-specific at upto 250m resolution levels. The TMY data is generated using the latest Solargis model each time the API request is placed (not pre-calculated). BUG FIXES * User Management screen would throw errors when trying to add new users – most (if not all) of the known issues here have been fixed. * We broke out 3D and 2D predictions into their own queues so that 2D predictions would not be log jammed if a long running 3D prediction was blocking the queue. * Maximum slope has been updated to support up to 30 degrees of slope (up from 10 degrees). # RELEASE 10.05.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.05.0 July 21, 2022 **Batch Prediction Improvements** We returned our attention to our Batch Prediction functionality with this latest release.  Our PlantPredict Premium subscribers will notice that we have added a **Secondary Sort** to go along with the Primary Sort that was already there.  This is especially useful if you want to organize your results by DC/AC Ratio and GCR%.  Furthermore, the order in which your results are sorted will also be used in the Results Export, so you can simplify your analysis by sorting your results and then exporting them. Release 10 05 0 Image1 We have also added the ability to export only the prediction summaries for your Batch Prediction result export.  This drastically reduces the size of the file that you are exporting and speeds up the processing of the report generation.  Very large batch predictions would sometimes time out because the results took too long to generate.  Exporting the Summaries should resolve that issue, and in most cases our users are mostly interested in only the summary data. Release 10 05 0 Image2 **DC Field Short Circuit Current now available in Nodal Data Results** A relatively minor (but very handy) enhancement is that we have added Short Circuit Current to our Nodal Data results.  Nodal Data is a very powerful way to see the details behind the energy prediction results, and now with the Short Circuit Current at each time series interval, you have a little more visibility into your prediction results. **Turn on or turn off Constraint Labels in Map Builder** A very common request (especially for those users importing an Anderson Optimization KMZ file) is to hide the constraint labels on the Map builder screen.  Those labels can be helpful, but they can also make your design appear cluttered.  So, we have added an option in the Map Overlays section to turn on or turn off Constraint Labels. Release 10 05 0 Image3 BUG FIXES * SolarGIS PvPlanner one-click weather download was throwing an error at the end of the download.  We have fixed this. * SolarGIS default download dataset was not working and this has been fixed. # RELEASE 10.06.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.06.0 August 04, 2022 **Meet David and Thang at the PVPMC 2022 Conference** Over the last sprint we have been preparing for the PVPMC conference which is scheduled for August 23rd and 24th in Salt Lake City, Utah.  If you are planning on attending, please seek us out.  The Product Director of PlantPredict (David Spieldenner) and VP of Development Technologies for Terabase Energy (Thang Le) will be there.  If you are not currently a PlantPredict Premium subscriber, we will be handing out Promo Code card that will get you a 30 Day Free Trial. Release 10 06 0 Image1 BUG FIXES * When Creating a Module File in PlantPredict an error would occur if you were on the IAM tab of the Module regarding the Sandia Coefficients.  This has been fixed * SolarGIS made a change to the TGY API, which was causing the 1-click weather download to error out.  We have corrected this. # RELEASE 10.07.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.07.0 August 18, 2022 **Roadways are now available in MapBuilder** We have added a Roadways (Census) layer to our MapBuilder Map Overlays menu.  Now users can turn on this layer and have the software automatically draw constraints around the roadway easement with the click of a button. Release 10 07 0 Image1 We also made the “Handles” a little easier to see when you want to modify a site boundary. Release 10 07 0 Image2 Some other improvements were made to the MapBuilder interface: * The snapping feature has been added to the site boundary, so drawing a site boundary is easier now * When Calculating DC Capacity on a site with multiple site boundaries, the system will consider each site boundary as an island and maximize the DC accordingly * We also refactored our wetland layer to comply with the changes made by the US Fish and Wildlife API Promotion Codes On the Subscription Page, we added a “Promotion Code” functionality, which can be used to give out Free Trials of PlantPredict Premium.  We plan to try this out at the PVPMC conference coming up next week when we will be giving out Promo Code Cards to Performance Engineers who want to give PlantPredict Premium a try.  Hope to see you there! BUG FIXES * Loss factor tree – adjusted the chart so that small values (i.e. 1%) look different than 0% * Updated Error Codes for when Predictions Fail to make it easier to troubleshoot the reason why a prediction failed. # RELEASE 10.08.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.08.0 September 01, 2022 **Quality of Life Improvements!** Every once in awhile, we have a sprint dedicated to improvements that we call “Quality of Life Improvements”.  These are simple changes that make the user interface work more smoothly and make certain tasks easier in the application.  Here are some of the ways we are making life better for our PlantPredict Users. * Library Filters and Sorting stay consistent across the application during a session – When you go into the Weather, Inverter or Module Library and define a filter (i.e. My Weather) or a Sorting (i.e. Rated power highest to lowest), these selections will stay for the duration of your session.  They will even appear for you as you are in a prediction and selecting your weather, inverter or module.  This will reduce the number of clicks when creating multiple predictions and should make the application just work a little better Release 10 08 0 Image1 * Multi-Selection Prediction Deleting – Sometimes it is nice to keep your projects clean, and one way to do that is to delete the predictions that you no longer need within your project.  Traditionally, you could do this by deleting them one-by-one.  Now, you will be able to select multiple and delete all of them with the single click of a button. Release 10 08 0 Image2 * Added a Close (“X”) on the Prediction Results screen – When viewing the prediction results, it was not obvious how to return to the actual prediction.  You had to either use the bread crumb trail at the top of the screen, the browser back button, or go all the way back the the Project Library and navigate into your Project and Prediction.  We thought an intuitive Close button (Labeled with a simple “X”) would be helpful. * Constraint Setbacks when using Metric UoM are now defaulted to 15.24 Meters instead of 50.  50 Meter setbacks were a little extreme for a default value, so we reduced the default to 15.24, which equals 50 feet when converted to Imperial Measurement. BUG FIXES * We fixed the SolarGIS Timeout Error, which was not happening properly. # RELEASE 10.09.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.09.0 September 15, 2022 **Near Shading Loss Comparison** As we continue to work on modeling the impacts terrain has on a prediction, one of the loss factors we want to pay special attention to is Near Shading Loss.  For our PlantPredict Premium subscribers, we have added the ability to see Near Shading Loss comparison between predictions in our Prediction Comparison Charting screen.  This will make understanding the impact of Near Shading Loss on your project easier than ever. Release 10 09 0 Image1 **Company Admin – Available Licenses** For all our Company Admins out there (Only Available with PlantPredict Premium Business or Enterprise Subscriptions), we appreciate the work you to do administer your company’s users and default values.  We have updated the Company Admin Screen so that you can easily see how many Active Users you have and how many Available Licenses you have remaining. Release 10 09 0 Image2 BUG FIXES * We fixed the auto formatting of Solar Anywhere TMY3 file formats, so the import process should go smoother now when importing TMY3 files. * In certain situations, when you opened the Project Library it would appear like all your projects were gone.  A quick refresh would bring them back.  We think that we fixed the issue that was causing your projects from disappearing in the first place. * We changed our 3D shading scene processor so that the server is turned off by default.  When you run a 3D shading scene prediction it might take a little longer because the server will need to be started up. * Company Level Defaults were being reset when you added a Weather Vendor API Key.  We fixed this so that it does not happen anymore. # RELEASE 10.10.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.10.0 September 29, 2022 **Sub-hourly weather files are now available for download from NSRDB** Sub-hourly modeling is a very important capability within PlantPredict, and we want our PlantPredict Premium users to be able to do sub-hourly modeling even if they don’t have a SolarAnywhere or SolarGIS subscription.  So, we have updated our NSRDB API integration in order to allow our PlantPredict Premium users to download sub-hourly weather files from the NSRDB.  Simply add a new weather file for your location and click the download button for the NSRDB file format.  This will present you with a choice to download the Standard TMY (60 minute) files or to choose from a Customized Format that includes sub-hourly data Release 10 10 0 Image1 Specify your download options Release 10 10 0 Image2 Download your sub-hourly data Release 10 10 0 Image3 **Search Libraries by Object ID** As a minor usability enhancement, you can now search for Modules, Inverters, Weather Files, etc… using the Object ID that you want to use.  If you know the ID, just enter it into the search box to quickly get to the Object you want. Release 10 10 0 Image4 BUG FIXES * Result Details endpoint should return results down to the granularity of the weather file interval – This has been fixed. # RELEASE 10.11.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.11.0 October 13, 2022 **More Weather Download improvements** Clean Power Research Version 3.6 weather files are now available for download using the 1-Click Weather Download feature in PlantPredict (You must have a SolarAnywhere API key and PlantPredict Premium to use this feature).  We also updated our 1-Click Weather Download so that PlantPredict Premium users can download Clean Power Research Version 3.5 weather files in Canada. Release 10 11 0 Image1 We also fixed some issues with our new NSRDB 1-Click Weather Download functionality that was part of the last release. * The Time-Shift on the Quality Check page was not being properly applied when importing a Custom NSRDB weather file * Custom NSRDB files will now be imported as Draft-Private weather files, so that you can update the name and use them within your company only.  We do not want these custom weather files listed as part of our Global Database. **Block Builder Usability Improvements** Cloning When Cloning a Block, Array or Inverter you will now be placed into the newly cloned object after the operation completes.  Previously, you would remain in the object that you had cloned, which did not seem very intuitive.  This would require you to navigate out of the current object and into the newly cloned object to make any changes, which is extra clicks that seemed unnecessary. Deleting When deleting a Block, Array, Inverter or DC Field you will be taken to the object directly above the object that was deleted.  Previously, you would be taken to the first object, which also did not seem intuitive.  The only exception to this is when deleting the first object, you will then be taken to the object that is now the first object. **SMA Global Inverter Files for the Sunny Central UP Family have been released in PlantPredict’s Inverter Library** In collaboration with SMA, we have released the latest SMA Inverter files with OEM review and certification.  These inverter files contain 4 efficiency curves which will lead to more accurate predictions that other what can be achieved in other industry standard yield simulation software. Release 10 11 0 Image2 BUG FIXES * Backside Irradiance and Backside Mismatch were not displayed correctly on the Plant Summary 8760 report – This now has been fixed. * Fixed the new String Size Project Status so that it is usable now. * Fixed a bug with the DXF file download functionality in Map Builder so that it is now possible to download very large layouts as DXF files. # RELEASE 10.13.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.13.0 November 10, 2022 **Slope Grade and Direction is now displayed on Array Details** PlantPredict Premium subscribers can now easily see the slope grade and direction of all your Arrays by turning on the Advanced Plant Layout within the Slope Design tab of a Map Builder Prediction.  You must zoom into the arrays so that the Array Details are visible.  Please note that this is the prevailing grade of the array as determined by looking at the elevation of the 4 corners of the array. Release 10 13 0 Image1 **Ability to Hide or Display Constraint Labels on your PLP-1000** We have added a check box control to the PLP-1000 Layers menu to give our PlantPredict Premium users control over whether or not they want to have constraint layers appear on their PLP-1000 PDF downloadable report. Release 10 13 0 Image2 Here is a listing of some of the other improvements and enhancements * Global Module File Cleanup – We have removed some obsolete module files as we continue to maintain our listing of Global Modules and Inverters * Nodal Data File Changes – Within the DC Field Nodal Data Files, we have added 2 additional columns of data:  Cell Temperature at Open Circuit (°C) and Open Circuit DC Voltage at Open Circuit Cell Temperature (V) and we have renamed 2 similar columns for clarity:  Cell Temperature at MPP (°C) – Column AY and Open Circuit DC Voltage at MPP Cell Temperature (V) – Column BA Formula for Cell Temperature at Open Circuit Release 10 13 0 Image3 Formula for Open Circuit Voltage at Open Circuit Cell Temperature BUG FIXES Release 10 13 0 Image4 * The Prediction Summary 8760 Downloadable report was missing the Plant Net Aux Losses for P75, P90 and P99 results.  This has been fixed * When Uploading .KMZ files into Map Builder Predictions, the KMZ Files with xsi:schema Location were failing to parse.  We have also fixed this bug. # RELEASE 10.14.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.14.0 December 01, 2022 **Single Sign On (SSO) and better integration between PlantPredict and the Terabase Development Platform** As we prepare for the official launch of [PlantPredict Pro](https://plantpredict.com/pricing/) coming up on January 1st, we had to implement single sign on so that navigation between PlantPredict and the Terabase Development Platform (a.k.a. Dev Platform) is smooth (no secondary login).  Beginning today, there will be a link in the navigation pane of PlantPredict that will allow PlantPredict users to smoothly launch the Dev Platform with the click of a button.  The Dev Platform will open without the need for a second login. Release 10 14 0 Image1 **Dev Platform is Free for everyone in December** For the entire month of December the Terabase Development Platform (Dev Platform) will be FREE to all PlantPredict users.  Go ahead and click on the link and check it out.  If you need some instructions on how to setup a project, contact [support@plantpredict.com](mailto:support@plantpredict.com) and we will arrange a demo to help you.  Beginning on January 1st, 2023 only PlantPredict Pro and Enterprise subscribers will be able to use the Dev Platform for detailed design and optimization of their power plants.  So, use the month of December to decide if this product is right for you! We are also offering Early Bird Pricing through the month of December, so you can get 25% off the List Price which goes into effect on January 1st, 2023.  Click here to see details about the pricing of PlantPredict Pro and Enterprise:  [Pricing | PlantPredict](https://plantpredict.com/pricing/) **Inverter Description has been added** Inside a Block Builder Prediction, we have added an Inverter Description field so that users can now place a description/name of the inverter into their power plant design.  This is especially useful for our O\&M customers and users who are using PlantPredict for their Digital Twin model and they want to call out the specific inverter in their as-built model Release 10 14 0 Image2 BUG FIXES * Updated the Subscription Tiers backend logic so that when subscribing for a Business Package, the proper subscription gets applied * Import Project was failing to parse the KMZ files having xsi:schemsLocation attribution in the document tag…this has been fixed * The Tooltips on the DC Field and Array objects of Block Builder did not properly correspond to the field…we have updated this. # RELEASE 10.15.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.15.0 December 15, 2023 **PlantPredict Pro Launch is on track!** The December Sprints are focusing on minor improvements as we prepare for the official launch of PlantPredict Pro and the upcoming release of Voltage Pro.  If you have not watched the webinar we hosted recently that introduces PlantPredict Pro, please do so here:  [Webinar: Introducing PlantPredict Pro - New features & pricing coming in 2023 (December 13, 2022)](https://youtu.be/6mmusQZRmpA) Release 10 15 0 Image1 **Dev Platform is Free for everyone in December** For the entire month of December the Terabase Development Platform (Dev Platform) will be FREE to all PlantPredict users.  Go ahead and click on the link and check it out.  If you need some instructions on how to setup a project, contact [support@plantpredict.com](mailto:support@plantpredict.com) and we will arrange a demo to help you.  Beginning on January 1st, 2023 only PlantPredict Pro and Enterprise subscribers will be able to use the Dev Platform for detailed design and optimization of their power plants.  So, use the month of December to decide if this product is right for you! We are also offering Early Bird Pricing through the month of December, so you can get 25% off the List Price which goes into effect on January 1st, 2023.  Click here to see details about the pricing of PlantPredict Pro and Enterprise:  [Pricing | PlantPredict](https://plantpredict.com/pricing/) BUG FIXES * Solar GIS TMY 60 and TMY 15 weather files have incorrect unit of Pwat – This has been fixed * In the Dev Platform, there was a scroll bar showing up in navigation bar when no pinned project are available * Also in the Dev Platform when using the compare tool, the wrong number of tables was appearing in the table.  This has been fixed. * When sharing projects in the Dev Platform, the View/Edit option was unavailable after the last release, we have brought that important feature back. # RELEASE 10.16.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.16.0 January 12, 2023 **Company Admins – Default Prediction Status** PlantPredict Business/Pro/Enterprise subscribers get a Company Admin who has the ability to set company level default values.  This can be a huge time saver, and can drive standardization across your PlantPredict Company.  We added a new company level default this sprint, where you can set your default Prediction Status.  Historically, Predictions were always created with a Draft-Private status, which means you would need to change the status to Draft-Shared to share your prediction with colleagues in the company.  Now, you can change that if you desire to have all predictions created in a Draft-Shared status. Release 10 16 0 Image1 **Extreme Annual Mean Minimum Dry Bulb Temp** As we prepare for the Voltage Pro launch that is coming soon, we realized that the Extreme Annual Mean Minimum Dry Bulb temp for a location is an important parameter for String Sizing when using Advanced String Sizing methods.  We acquired this data as part of our Ashrae data set, and now display that data in the Environmental Conditions screen. Release 10 16 0 Image2 **Other minor Admin changes** * User Status is now a Drop Down box instead of a toggle switch, which will make it easier to manage Pending and Disabled users within your company (For Company Admins ONLY). * Ability to DELETE Pending Users for Company Admins.  This is handy if your company has a user that never fully registered and has left the company, you can simply delete their account now. BUG FIXES * When an Invalid configuration is setup on the Array, the Prediction acts like it saves, but it really does not save. We did a pretty comprehensive overhaul to the validation logic in the Block Builder User Interface to make sure that we handle invalid configurations better and in a more intuitive manner. # RELEASE 10.16.1 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.16.1 January 19, 2023 Release 10 16 1 Image1 For this release, we are making updates ONLY to the Development Platform.  These changes will only impact PlantPredict Pro and Enterprise subscribers **String Harness Logic Update** When designing a layout with Thin Film modules, we needed the cabling and BOQ logic to consider the use of String Harnesses.  This will impact the number of combiner boxes required on the site, and will also have a significant impact on the home run cable requirements of the site.  Both of these factors will make the EPC Cost estimate (when using Thin Film modules) more representative of market pricing.  Furthermore, we updated the clustering logic that groups racks with combiner boxes and ultimately with Inverters.  You will now get a more accurate measurement of cables (above ground and underground in trenches) that are connecting harnesses to combiner boxes. Release 10 16 1 Image2 **Ability to Show or Hide Site Plan Object labels** When creating a Site Plan with a lot of objects, it is sometimes nice to be able to hide the labels associated with those objects.  We have added a checkbox that allows the user to control if those labels are visible or not. Release 10 16 1 Image3 **Other minor changes** * We updated the wording of our Layout Options and Compare Tool to simplify what is displayed (i.e. Total no. of strings > Strings) BUG FIXES * Users with Shared Projects were NOT able to see the Site Plans – This has been resolved. * “Boundary can’t overlay other boundary” error when parcels share a boundary – This has been resolved with the 2 boundaries being merged into a single boundary. * After receiving a “Boundary can’t overlay other boundary” error, if a user cancels the action then the selection of row is not enabled – This has been resolved. # RELEASE 10.17.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.17.0 February 09, 2023 **Voltage Pro 1.0 is released to the public today!** After several months of development, and over a year of working with representatives across the industry, the first version of Voltage Pro is being released today for PlantPredict Pro and Enterprise Subscribers ONLY.  Voltage Pro utilizes an intuitive user interface and integration with PlantPredict to simplify and standardize the string sizing application that all designers and engineers must do when designing a utility scale solar power plant.  If you are interested in learning more about Voltage Pro, we will be holding a webinar on March 9th to demonstrate the power of Voltage Pro. [Click here to register for the Voltage Pro Webinar](https://register.gotowebinar.com/register/5615500981217041244?source=release-notes) We have also published a User Guide for Voltage Pro, which can be accessed here:  [Voltage Pro User Guide](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/104c2af7-c15e-4f49-83d7-7de1b48b6662/article/1257898201) You can also request a Free Trial subscription to PlantPredict Pro by contacting us via [support@plantpredict.com](mailto:support@plantpredict.com) Release 10 17 0 Image1 **Refactored the SolarGIS 1-Click Weather File Download** For our users that have a SolarGIS API key, which grants them access to the SolarGIS TMY60 and TMY15 weather data files via PlantPredict, we refactored the download process and made the process run as a background process.  Since this download takes several minutes, we were experiencing timeouts with the former process.  Now that the process is running in the background, we do not have a timeout threshold to worry about. Release 10 17 0 Image2 **Other minor changes** * We updated Inverter Description field size to 25,000 characters (up from 250) because we had customers who needed more room for their inverter descriptions. * Added the ability to upload Backside POA as part of a weather file.  This sets the stage for using Backside POA when running a prediction to improve the modeling of bifacial models in situations where you have measured backside POA for the system you are trying to model (Coming Soon). * Updated the Default Sort for both the Inverter and Module library’s to be alphabetical (A-Z) based on the Inverter and Module name. BUG FIXES * When converting wetland into exclusion areas in the Dev Platform, and error would appear saying “Complex Polygons not supported” – We believe we have fixed this. * Tracker Quantity was 0 in the Dev Platform EPC Cost Estimate when using the 1P Multi-String Tracker – This has been fixed. * Fixed the 30 minute Time Shift issue that has existed for a long time when downloading NSRDB weather files. # RELEASE 10.18.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.18.0 February 23, 2023 **Backside POAI can now be uploaded and used when running a Prediction** If you are a PlantPredict Subscriber, you can upload a weather file containing Backside POAI and have that data utilized within your prediction.  For many of our customers who are checking the expected energy of a power plant vs the actual energy produced, eliminating the error of converting GHI to POAI using Albedo values will be helpful. Release 10 18 0 Image1 **Import Horizon Scene Data from PVGIS** In addition to being able to import a Meteonorm Horizon Scene with a click of a button, our PlantPredict Subscribers can now also import a PVGIS Horizon Scene.  This gives you options and also greater coverage around the globe. Release 10 18 0 Image2 **KMZ File Upload improvements in the Dev Platform** We have simplified the uploading of Boundaries and Constraints/Exclusions within the Dev Platform Site Plan Editor.  If you have a KMZ containing only Boundaries, or a KMZ containing only Exclusions, you can have the boundaries or exclusions drawn automatically with the click of a button. Release 10 18 0 Image3 **Other minor changes** * We improved the speed of Projects Loading when opening the Dev Platform, and we have added a “My Projects” tab so that by default only the projects that a user has created will be loaded initially.  Users can still see all projects for their Company by clicking the Company projects tab. * Added the Simulation Date and Time, along with the Site Plan used to the Simulation Inputs information in the Dev Platform. * Added Effective Global POAI and Cell Temperature at Open Circuit in the Nodal Data output for Voltage Pro * Extended the Array MWdc and MWac to 3 decimal places in PlantPredict Block Builder interface so users have kW precision. * Put an icon in PlantPredict to denote the different prediction types to make it easier to find the prediction you are looking for within a project. BUG FIXES * In the Prediction Results screen, Albedo was appearing as a negative number, when it should be a positive number * In MapBuilder, when the MWAc is locked and a user updates the MWDC the DC:AC Ratio was not updating…this has been fixed * Rated PWR unit of measure on the Inverter was wrong in the MapBuilder interface.  It showed “W” when it should be “kW”.  Fixed. * Resolved an issue causing Simulation Failures in the Dev Platform related to road placement. # RELEASE 10.19.0 Source: https://docs.plantpredict.com/release-notes/Version-10/RELEASE-10.19.0 March 10, 2023 **PlantPredict Map Builder Improvements** We made several improvements to the PlantPredict Map Builder tool as part of this release. 1. Added the ability to specify the number of inverters included in an array.  This is especially important when using String Inverters 2. Updated the “Create DC As” logic, to include pink PCS stations when creating DC as Tables, and also refined the logic so that the results are the same if creating DC as Tables or Arrays 3. We also added Railways as a Map Overlay Layer, so now you can understand your site’s proximity to Railways and exclude them as a constraint if they run through your site. The ability to define the number of Inverters Per Array is on the AC Design Tab.  Notice the alignment of the below site when created with Array Shapes and Table Shapes. Release 10 19 0 Image1 View Railways on your map Release 10 19 0 Image2 **DXF Export includes additional Layers** We have added some additional layers to be included in the DXF File export from within the PlantPredict Map Builder tool.  You can now include Earthwork, Slope Constraints, Slope Bands and Post Height Analysis results to your DXF file, so that you can bring those layers into AutoCAD.  Simply ensure that those layers are turned on when exporting your layout to .DXF. Release 10 19 0 Image3 BUG FIXES * Fixed a bug where the Fixed Tilt validation logic would error out even though you were designing with a Horizontal Tracker.  The error would only occur if you removed the Fixed Tilt angle before switching your DC Field to Horizontal Tracker. # RELEASE 11.00.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.00.0 March 23, 2023 **Version 11 Beta** We are releasing a new Prediction Logic Version (Version 11 Beta), which is being released in “Beta mode”.  This means that the default prediction logic will remain as Version 10; however, you can switch your prediction to Version 11 by selecting the Version 11 Beta option in the Prediction Logic drop down before running your prediction.  Please be aware, we will be deploying more prediction changing enhancements to the Version 11 logic over the next several sprints, so the Version 11 results will not be locked down until we remove the Beta tag.  Release 11 00 0 Image1 **Version 11 Includes** * Bifacial Model Improvement – We adjusted the tilt angle algorithm for the backside irradiance calculation to make a better fit to expected results * Fixed a bug in the Module Irradiance Loss calculation – We discovered that changes to the “DC Wiring at STC” loss factor input was impacting the Module Irradiance Loss, which does not make sense.  We found the bug in the loss factor calculation and corrected it. * Replaced our Inverter Efficiency Model with the Sandia Inverter Efficiency Model – Our legacy Inverter Efficiency Model curve was too steep, and was resulting in more efficiency loss than there should have been.  Here are two links to our Knowledge Base with more details:  [Sandia Inverter Efficiency Model](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/c36a0aae-0975-4773-b870-32230f10f356/article/1276215311) vs [Legacy Inverter Efficiency Model](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/c36a0aae-0975-4773-b870-32230f10f356/article/1276674276) **Simulation Settings page reorganization AND Circumsolar Treatment has been added** We reorganized the simulation settings page so that there is more logical groupings of the input parameters on the page.  We also added a NEW input parameter that allows our users to specify the way they want Circumsolar to be treated in the Transposition Model.  Learn more by checking out our Knowledge Base:  [Separate Treatment of Circumsolar](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/c36a0aae-0975-4773-b870-32230f10f356/article/1270382602) Release 11 00 0 Image2 **Calculating the Max 3hr Rolling Average DC Short Circuit Current** For every prediction run going forward, we are automatically calculating the Maximum 3 hour rolling average DC Short Circuit Current for all the strings in the prediction, and then displaying this value in the Prediction Results screen and on the Prediction Results Summary reports. This calculation is in accordance with NEC 690.8(A)(1)(a)(2) Release 11 00 0 Image3 BUG FIXES * Direct Import of NSRDB Albedo button on the Environmental Conditions page works again * In Mapbuilder when deleting a polygon and then “undo” would return the polygon twice – this has been fixed * Inverter repeater was resetting to 1 when using a central inverter with the “Calculate DC Capacity” * Dev Platform – Fixed the “Complex Polygons not supported” Error # RELEASE 11.01.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.01.0 April 06, 2023 **All PlantPredict Projects are available in Voltage Pro** For our Pro and Enterprise Subscribers who use Voltage Pro, you can now run Voltage Pro calculations using projects that were already created in PlantPredict.  This is a small but very helpful improvement in the process.  When you open Voltage Pro, the Project List will be filtered to show Active and Voltage Pro Projects.  If you want to run Voltage Pro for a PlantPredict Project that has already been created, clear the Voltage Pro filter and you will see all your PlantPredict Projects. Release 11 01 0 Image1 **Information Icons** In an effort to provide better documentation, we are beginning to add information icons on certain fields that link to our Knowledge Base.  Check out the information icon on the Circumsolar Treatment field in the Simulation Settings page for the first example. Release 11 01 0 Image2 **Map Builder Snapping tool Improvements** We noticed that the snapping tool in the Mapbuilder could use some improvements, so we focused some attention on improving that minor (but very important) feature. Release 11 01 0 Image3 # **Bug Fixes** * Inverters Per Array was automatically updating behind the scenes – we fixed this so that it stops happening.  If you set the Inverter Per Arrays, it will stay what you set it to be now. * Fixed some oddities in the shading scene editor within the DC Field * Albedo was displayed as negative and did not have enough decimal place precision, we have improved that within the Predict Results Screen. # RELEASE 11.02.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.02.0 April 20, 2023 **Improved Wetland Layer** We rolled out a new Wetland API connection that is much faster to load. Release 11 02 0 Image1 **Information Icons** We are continuing to roll out Information Icons.  The latest is an information icon that will help you understand what the difference is between KMZ Data and DEM Data in the Map Builder Upload Data screen. Release 11 02 0 Image2 **3 Hour Rolling Average DC String Short Circuit Current (Amps) has been added to the DC Field Nodal Data** We recently rolled out the display of the Maximum String Short Circuit Current on our Prediction Results Summary Page.  To go along with that, we are now displaying the 3hr Rolling Avg DC String Short Circuit Current within our DC Field Nodal Data download file.  This way you can see the details on a Time Series basis behind this calculation. Release 11 02 0 Image3 BUG FIXES * SolarGIS weather files were erroring out on upload.  This has been fixed * Tracker Angle Time Series selection would be visible in the Block Builder DC Field even if the mounting type was Fixed tilt.  We fixed that. * In the Prediction Comparison results, when the tracking method was set to “True Tracking” the screen was displaying “True Mounting”, which we have fixed. * In the Power Plant System Screen, when adding a Transmission Line, the Resistance field was not responding to the “Imperial/Metric” toggle switch.  It does now. # RELEASE 11.03.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.03.0 May 04, 2023 Our Version 11 Beta enhancements continue to be rolled out! This release includes some very major improvements to our Tracker algorithm. If you want to take advantage of these enhancements, or if you just want to test and compare the results vs Version 10, you must update the Prediction Logic Version that your prediction is using. You can do this on the Prediction Screen by changing the “Prediction Logic” to Version 11 Beta as shown below: Release 11 03 0 Image1 Switching to Version 11 Beta is what will enable the below capabilities. **Irradiance Optimization (Diffuse Stow)** Release 11 03 0 Image2 * This is ONLY available with Block Builder Predictions using Version 11 Beta Prediction Logic * Irradiance optimization is now available. The irradiance optimization function will rotate trackers to a plane which increases the amount of energy it receives on the front side relative to the angles calculated by a default true-tracking or backtracking algorithm. * The rotation speed and hesitation factor parameters can be used to reduce the ideality of the model in order to better model actual tracker performance. * Further documentation can be found here: [PlantPredict Irradiance Optimization](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1260060675?src=1790609417) **Updated Tracking Angles Calculations** * In previous versions of PlantPredict, tracker rotation was computed in a left handed coordinate system. This has been updated to a right handed coordinate system, in line with PVLIB. * A bug in the calculation of tracker surface angles has been fixed * A bug in the calculation of tracker rotation angles when a custom timeseries of tracker angles was uploaded has been fixed. **Updated Perez Model** * The Perez transposition model in v11 has been updated in order to take non-pressure corrected airmass into account instead of pressure corrected airmass. This change makes PlantPredict’s Perez model implementation closer to the implementation from PVLIB. In addition to the Version 11 features discussed above, we have also rolled out some very cool additional features that work on all versions of PlantPredict **Floodplain Layer is now selectable and can be automatically converted to a constraint** Similar to how wetlands, transmission lines, roads and pipelines work, PlantPredict paid subscribers can now turn on the FEMA Floodplain data layer in Map builder and with a simple click of a button have the Floodplains that effect your site boundary automatically drawn as a constraint. Release 11 03 0 Image3 **Nominal Operating Cell Temperature (NOCT) Model is now available** We rolled out a new Module Temperature model Release 11 03 0 Image4 Learn more by reading our post about the [NOCT model](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1306755077) in our Models and Algorithms section of our documentation. **Bang Wong Color Palette is now available for users who struggle with color blindness** There are an estimated **300 million** people in the world with color vision deficiency. 1 in 12 men are color blind (8%). 1 in 200 women are color blind (0.5%). To help with this, we have added an Accessibility section to our User Settings page, and give users the option to use either the Bang Wong Palette or the Default Color Palette. You can get to the User Settings by clicking the small silhouette icon near your name in the lower left corner of the screen. Here is the Accessibility Options tab: Release 11 03 0 Image5 This will change the color pallet used in certain charts around the application Bang Wong: Release 11 03 0 Image6 Default: Release 11 03 0 Image7 # RELEASE 11.04.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.04.0 **New Terrain Map using USGS Topographical Map layer** This release includes a new Terrain Map Layer for our MapBuilder tool. We have replaced the legacy Google Terrain Map with the USGS Topo Map. The Topo map provides better detail regarding the terrain of a site. Release 11 04 0 Image1 **Updated Resources Page and new API Change Log is being rolled out** We have added new buttons for our API and SDK documentation, so that it is easier to get to this helpful documentation. If you have never visited our Resources page, you can get there by clicking the Resources link on the left hand navigation Bar: Release 11 04 0 Image2 This will open the Resources Page, where you can find a link to our Release Notes, User Manual, Models and Algorithms documentation, API Documentation, Python SDK Documentation and Codebase. You can also find downloadable 3rd Party reviews and quick links to our Terms of Use and Legal Notices Page. Release 11 04 0 Image3 Clicking on the Postman API Documentation, you can get to our API Changelog, which will contain important changes that are being rolled our to our API on a Release-by-Release basis. Some changes could be breaking changes to our customer’s API integrations, so we wanted to have an easy place of reference to find these changes. Here is a direct link to the Changelog: [plantpredict-api](https://documenter.getpostman.com/view/3855302/UVsHUoHa#3-changelog) Release 11 04 0 Image4 **Irradiance Optimization Default Values** We have enhanced the Irradiance Optimization feature that we rolled out in [Version 11.3.0](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1311473665), and applied default values as recommended by our[Irradiance Optimization](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1260060675) documentation. Release 11 04 0 Image5 We have also added these fields to our Company Level Defaults. If you have a Business, Pro or Enterprise Subscription, you can have a Company Admin who can set Company level default values Release 11 04 0 Image6 **MWDC and MWAC display order has been made more consistent through the application** We had some inconsistency within our application regarding the order which the MWDC and MWAC were being displayed. We have standardized on MWDC on the left and MWAC on the right. Release 11 04 0 Image7 **Added a Unique Prediction ID to the Nodal Data Files and changed some column names and order to be more consistent with the User Interface** When comparing Nodal Data results between 2 predictions, Excel would not let you open 2 files that have the same name. This resulted in an extra step of saving one file locally and renaming it before opening the second file. We have resolved this and added the PredictionID to the file names. Release 11 04 0 Image8 Within the Array Nodal file, we updated the following columns: * Rename “Total AC Power Loss” to “AC Collection Loss” * Move AC Collection Loss in line with UI representation (AC Collections, Data Acquisition, Cooling) * Rename Auxiliary Loss to Data Acquisition Loss * Move Cooling to the end to match the UI. Release 11 04 0 Image9 **We added the Thermal Models to the Quick Edit Section of a Prediction** When working with a Block Builder prediction, there is a “Quick Edit” screen that facilitates updating values across your DC Fields in a very easy manner. You can access the Quick Edit screen from the Blocks and arrays section of a Prediction as shown below: Release 11 04 0 Image10 Once inside the Quick Edit screen, you click on the Display Fields drop down: Release 11 04 0 Image11 And select the Thermal Model option: Release 11 04 0 Image12 Release 11 04 0 Image13 **Bug Fixes** In addition to the above mentioned features and improvements, we also resolved the following Bugs: * Sandia Inverter Efficiency Model can’t handle when an inverter only has 1 efficiency curve. This has been fixed. * Predictions in the Southern Hemisphere now default to Azimuth = 0. * Predictions that were failing would appear to be stuck in a running state. We have fixed this so that a failure will report the failure to the user. * The “Generate API Credentials” link was not appearing on the Company Admin / User Profile page unless the admin refreshed the page. This has been fixed. * Post Height Validation has been converted to a warning instead of an error, so that sub-optimal post heights will no longer stop a prediction from running. * There was a limitation on weather file records of 525,600 records. We have removed this limitation. # RELEASE 11.04.01 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.04.01 May 24, 2023 This hotfix is intended to fix a bug that was introduced into the Near Shading Loss calculation with Version 11.4.0. The bug we fixed was only impacting predictions running the Version 11 Beta Prediction Logic. The bug was resulting in \~2% less Near Shading Loss that what actually is to be expected. Now that the bug has been fixed, the Near Shading Loss is more in line with Version 10 predictions and accurately reflects the Near Shading Loss that can be expected based upon our 2D Shading calculations. The below table shows a comparison of 3 predictions. The prediction on the right is using the Version 11 Beta Prediction logic with V11.4.0. The Prediction in the middle is using V10 Prediction Logic and and the Prediction on the left is using Version 11 Beta with V11.4.1. As you can see the Near Shading Loss is much more aligned with V10 and more inline with what should be expected. Release 11 04 01 Image1   # RELEASE 11.05.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.05.0 June 01, 2023 This is another one of those sprints where we focused on “behind-the-scenes” code and functionality which is not directly observable by our users. We are working towards some larger deliverables that will be fully released in the upcoming sprints. Below are some of the changes which you might notice. ## **Company Level Defaults - System Detail Settings** If you have ever wanted to have company specific default settings for your High Voltage Transformer or for your Transmission Lines, your Company Administrator can now set that up. Release 11 05 0 Image1 Inside the Company Level Defaults screen within the Company Admin area, you will see a System Details tab where you can set these up for your company. Release 11 05 0 Image2 ## **Deleting a Project with no Predictions** We have improved the error message that appears when you try to delete a project that appears to not have any predictions based on user feedback. Typically, if you see a project within your company and it looks like there are no predictions inside, there are probably “Draft-Private” predictions that are owned by other users within your company. If you try to delete that project, the system would give a vague error message letting you know that the Project can’t be deleted. We have improved the error message and even tell you who the owners are of the Draft-Private predictions inside the Project. Release 11 05 0 Image3 ## **Infinite Length Rows instead of Infinite Rows** We received some feedback that the name of the Infinite Rows shading algorithm was confusing and implied that there were infinite numbers of rows, when in reality this model is assuming Infinitely long rows. To reduce the confusion we made a simple name change in the drop down selection box. Release 11 05 0 Image4 ## **Design Derate in the Prediction Results screen** The Design Derate value has not been flowing into the Prediction Results screen. We have fixed that. Before: Release 11 05 0 Image5 Now: Release 11 05 0 Image6 ## **SDK was throwing an error when creating a PowerPlant inside a prediction without Simulation Settings** We recently made some changes that made it so that Simulation Settings were needed before you created a PowerPlant when building out a prediction via the SDK/API. This change caused a lot of trouble for our SDK/API users who had scripts setup with the PowerPlant being created before the Simulation Settings (which is how we order the flow via the User Interface). We have implemented a fix for this as part of this release. # RELEASE 11.06.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.06.0 June 22nd, 2023 **Introducing Design Pro** Terabase recently made the decision to rename the **Terabase Development Platform** to be **Design Pro**. The name change aligns this product with our other PlantPredict Pro Tools, and we thought it better reflects the intention of the product. This is now reflected in our left hand navigation bar. Release 11 06 0 Image1 **New Satellite Map View in PlantPredict Map Builder** We recently replaced our Terrain View with the [USGS Topographical map](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1324122360), and today we replaced the Google Satellite map view with a different data provider’s map view. This change will save Terabase some money, and it will address some technical issues that certain users were recently having related to the Google Map API we were using. We expect this to be an improvement for our users, but if you run into any problems, please contact us at [support@terabase.energy](mailto:support@terabase.energy) so that we are aware. **Circumsolar Treatment is now available as a Company Level Default** We recently rolled out the ability for our users to control whether[Circumsolar irradiance](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1293779096) is handled as part of the Direct or Diffuse irradiance, and now if you are a Business, Pro or Enterprise subscriber, you can have your Company Admin define your company level default handling of Circumsolar irradiance. Go to the Company Admin screen and select the Edit Defaults button. Go to the Simulation Defaults tab and you will find the Circumsolar Treatment default. Release 11 06 0 Image2 **Terawatt Solar has arrived!** We have PlantPredict customers that are modeling power plants that are multi-terawatt in scale. We had a few fields in PlantPredict that had validation logic which prevented users from modeling power plants greater than 2 Terawatts. We have increased the validation limitation to 100 Terawatts (100,000,000 MWac) for Power Plant Output Limit and Energy Storage System Nameplate Capacity. Release 11 06 0 Image3 Release 11 06 0 Image4 **Block Builder now supports more than 99 Blocks** We have also increased the number of blocks that PlantPredict supports from 99 to 199. There were Design Pro scenarios that were failing because they had more than 99 individual parcels (which get modeled as individual blocks). This is rare, but it has happened. So, we have increased the number of blocks that PlantPredict can support to resolve this error. **Electrical Loss % has been renamed to Shading Electrical Effect %** To more accurately represent the Energy Loss Factor resulting for Shading, we renamed the Electrical Loss % loss factor to be Shading Electrical Effect %. This has been updated in the Results Summary page and all the downloadable reports. Release 11 06 0 Image5 BUG FIXES Project Library Voltage Pro Filter was showing All Voltage Pro Projects even though I was filtering to see only My Voltage Pro Projects - This has been fixed When Predict Status Company Level Default is set to Draft-Shared, cloning a prediction should result in a Draft-Shared Prediction - This now works as expected. # RELEASE 11.07.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.07.0 July 13th, 2023 **Version 11 is Official!** With today’s release, we are making Version 11 the default prediction version and removing the Beta tag from the Version 11 prediction logic. We have been running Version 11 as a Beta for the past several months and kept Version 10 as the default prediction logic so that we could collect user feedback and work out any bugs that we might have in the Version 11 prediction logic. We feel that Version 11 is stable and so we are making Version 11 the default. You can see details about the Version 11 enhancements by reading through the prior 11.X.X release notes. Here is a listing of the highlights: * Irradiance Optimization (Diffuse Stow) * Replaced the Inverter Efficiency Model with Sandia Inverter Efficiency Model * Circumsolar Treatment drop down in Simulation Settings * Improved Tracker Angle Calculations * Updated Perez Transposition model * Fixed a bug in the Module Irradiance Loss **Nighttime Disconnect** PlantPredict Users can now enable Nighttime Disconnect from within the System Details screen of a prediction. Night-time disconnect is a feature incorporated into some photovoltaic (PV) systems in order to reduce the amount of grid energy consumed by the system during hours where there is insufficient or no sunlight to generate electricity. Release 11 07 0 Image1 You can read more about how PlantPredict operates when Nighttime Disconnect is enabled with the following knowledge base article that is published on our Support Center: [Night-Time Disconnect](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1353973761) **DC Field Locks within a Block Builder Prediction** Within the DC Field screens of a Block Builder prediction, there are certain fields that get updated when a new module file is selected. We update these fields because the module attributes are likely to have an impact on these fields. Below is a listing of the fields we are referring to: * Post Height * Modules High * Strings Wide * Module Azimuth With this release, we have added small lock icons that a user can select to lock the value in a field and prevent the default logic from applying. As an example, if a user wants to use 1.6 meters as their post height, and they don’t want that to change regardless of the module they are using, they can lock the Post Height field to accomplish this. You can also Lock All or Unlock all with a single click of a button. Release 11 07 0 Image2 Please note that this only applies to Block Builder Predictions **Design Pro Company Level Defaults** Our PlantPredict Pro and Enterprise customers can now take advantage of Company Level defaults from within the Design Pro application. We have been working on this feature for several sprints in order to have a comprehensive approach to this new feature. Company Administrators can set the Company Level Defaults from within the Company Administration portal. Once these company level defaults are set, all Design Pro users within your company will have these settings applied. Release 11 07 0 Image3 **Results Generated On is now displayed on Prediction Results** PlantPredict now displays the Date and Time that a Prediction Run completed on the Prediction Results screen. This is a simple enhancement that is really handy. Release 11 07 0 Image4 **PLP-1000 Improvements** We spent some time over this past sprint making some minor improvements to the PLP-1000 Layout report that can be generated from within the Map Builder screen of PlantPredict. Setbacks were not appearing when a user clicked to include the setbacks. This has been fixed. Long Customer Names, Project Names or Design Names would cause the PP-1000 to become a 2-page report that did not look good. We have fixed these fields so that they can support much longer text and will never cause the report to go to 2-pages. Release 11 07 0 Image5 # RELEASE 11.08.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.08.0 July 27th, 2023 **Perez Coefficients are now selectable** A new drop down field has been added to the Simulation Settings page of the prediction, where a user can select the set of Perez Coefficients that they want their Perez Transposition model to use. Historically, PlantPredict has used a set of coefficients that is similar to the “All Sites Composite”. Here is a link to a knowledgebase article that describes the PlantPredict Coefficients: [Perez Algorithm (Diffuse Sky)](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1289978349) The list of coefficients that are available in PlantPredict are the same as what is available in pvlib. To learn more about these coefficients, here is a link to the pvlib documentation: [pvlib.irradiance.perez](https://pvlib-python.readthedocs.io/en/stable/reference/generated/pvlib.irradiance.perez.html) Release 11 08 0 Image1 1 Selecting the coefficient set that is closest to the location of your project will produce the most accurate results. **Circumsolar Treatment on PlantPredict Reports** Since adding the ability to select Circumsolar Treatment on a prediction, we needed to update our reports and results screens to show the selected Circumsolar Treatment. Release 11 08 0 Image2 We have added the selected Circumsolar Treatment on the following pages and reports: * Results Summary Overview * Prediction Comparison Screen * Plant Summary PDF * Plant Summary 8760 XLSX * Prediction Comparison Report XLSX * Inputs and Assumptions (model choices) **Added Fixed Tilt to the Design Pro Racking System Defaults** Over the past few months, we have been adding Company Level Defaults for the Design Pro application. We are still tweaking this capability and adding things that we have missed. With this release we are adding in “Fixed Tilt” as a possible default Racking System for those customers who mostly use Fixed Tilt racking systems. Release 11 08 0 Image3 BUG FIX * The Delete icon on the Weather Files in the Weather Library was displaying incorrectly (see below) Release 11 08 0 Image4 Release 11 08 0 Image5   # RELEASE 11.08.01 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.08.01 August 1st, 2023 **Improved Weather File POAI import** There was a bug that was preventing the ability to import POAI data using a weather file. We have fixed this bug, and improved the user interface by eliminating the pop-out window and imbedded the POAI parameters into the variables section. Release 11 08 01 Image1 **Post Height Oddities** After Release 11.8.0, the Post Height field within Map Builder would update to the Default Post Height any time you tried Updating the DC Capacity, or changing any of the other parameters in the Power Plant Parameters screen. This made it impossible to over-ride the default post height when using the Map Builder tool. This has been fixed, and now the Default Post Height is only calculated when you make a change that requires a new default post height to be calculated. Release 11 08 01 Image2 Within Block Builder the Post Height default was not calculating at all, and the field was left blank. We have fixed this so that now you have a Default Post Height Release 11 08 01 Image3 **Design Pro Company Presets Defaults updated** We updated the Default company Presets within the Design Pro 1P Multi-String section as follows: * Motor table gap = 2m * Gap between tables = .5 m * Height above ground = 2m * Gap between trackers = 2m **Fixed Scenario where Model Choices would not save properly** Following release 11.8.0 we had several users report that they could not save the Simulation Settings on predictions that were created prior to version 11.8.0. We identified the issue and have resolved it. # RELEASE 11.09.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.09.0 August 17th, 2023 **Albedo values in your weather file can be used in your prediction** You can now import weather files with Albedo included into your PlantPredict Weather Library. Weather data providers have started including Albedo in their TMY/TGY and Timeseries weather files. Having this data as a time series (hourly or sub-hourly) will make the prediction more accurate than using a monthly averages. This is also helpful for our users that are using PlantPredict to model an operating asset with measured data. During the weather file upload process, when you get the the Format Data page, you will now see an option under the Variables section for Albedo. In the below screenshot, you will see that it is mapped to column 9 of my file. Release 11 09 0 Image1 On the Environmental Conditions page of your prediction, you can specify if you want the prediction to use the weather file provided albedo values or the monthly average values with the toggle switch highlighted below. Release 11 09 0 Image2 **Download your PlantPredict MapBuilder Layouts as a SHP File** Due to customer demand, we have added support for downloading your PlantPredict MapBuilder Layouts as a .SHP file. This is just one more way that PlantPredict is compatible with industry standard tools. Now our PlantPredict Subscribers can take their MapBuilder Layouts and import them into GIS tools such as ArcGIS or QGIS. Simply click the Download Data link in the MapBuilder screen and select SHP (ESRI Shape File), then click the Export button. Release 11 09 0 Image3 This will download a .ZIP file that will contain all the .shp, .dbf and .prj files that are needed to open this layout in your GIS toolset. We are including all available layers in the download package, so you will get your layout, boundaries, constraints and any topographical analysis layers that have been generated. **Duplicate Constraints with the click of a button** If you are designing a rooftop system or a utility scale system around wind turbines, you might want to create a constraint shape and then copy and paste it over and over again. We have implemented this capability into the PlantPredict Mapbuilder tool. Draw the constraint shape that you want to copy, and then click the “Duplicate” icon in the right hand tool tray. This will copy and paste a duplicate version of the selected constraint. In the middle of the constraint will be a small circle that you can click and drag to move the new constraint into the needed location. Release 11 09 0 Image4 **Bug Fixes** We used this past sprint to address several bugs that have been reported by our user community. Here is a listing with a short description of each Fixed an issue with Module Azimuth not saving correctly for Map predictions In a recent release, we broke the Module Azimuth field in our MapBuilder tool. When you would adjust the Azimuth, Updating the DC Capacity would reset the Azimuth back to 180. This has been fixed. Fixed Power Plant Output Limit toggle behavior Within the System Details of a Prediction, you can establish a Plant Output Limit. Users had reported that they would turn ON the Plant Output Limit and leave the System Details, then notice when they went back into the System Details page the Plant Output Limit would be turned OFF. We fixed is so that the Plant Output Limit toggle switch is saving correctly now. Release 11 09 0 Image5 POAI tracker inputs are now required before moving to the Quality Check stage during the weather import. This is a minor improvement on the functionality we implemented in Release [11.8.1](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1372356624). PlantPredict was doing the certain validations on the Quality Check page, which would require users to go back to the prior page to fix. We moved those validation checks to the button click that moves users to the Quality check page to make this work better. We also improved the Quality Check page when uploading POAI data, so that the chart defaults to showing POAI instead of GHI. Seasonal Tilt Validation will no longer trigger if seasonal tilt is turned off Users had reported that they were getting errors related to Seasonal Tilt validation despite the fact that they were not using Seasonal Tilt as their Tracker Logic. We fixed this and made the error message more user friendly if there are any true Seasonal Tilt validation errors. Modules created using the Module File Generator now have the correct Heat Absorption Coefficient applied When creating a new module using the “From Datasheet” option, the “Heat Absorption Coefficient Alpha T” was being set to 0. We have updated this to make it 0.9. # RELEASE 11.10.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.10.0 August 31st, 2023 **Weather File Updates - NSRDB 20 Year Time Series** PlantPredict subscribers now have the ability to download 20 years worth of NSRDM PSM timeseries data (where the data is available) with a single click of a button. This will generate a 20 year weather file that can be used to simulate 20 years worth of energy production. Release 11 10 0 Image1 Most importantly, this weather file can be used within Voltage Pro to do a string sizing simulation. The industry recommends using 20 year time series data when doing a simulation based string sizing analysis, and so adding this capability will streamline the process and make Voltage Pro even better. Release 11 10 0 Image2 **SolarAnywhere (CPR) V3.7 weather files are now available** Our friends a Clean Power Research recently released version [3.7 of their SolarAnywhere weather data](https://www.solaranywhere.com/2023/solaranywhere-2023-updates-advance-modeling-accuracy-for-bifacial-terrain-shading-wildfire-risk-assessment/). We have made access to this version available for anyone who has a TGY Unlimited Subscription with SolarAnywhere and has uploaded an API Key into their Company Default settings page. Release 11 10 0 Image3 **SolarAnywhere High Resolution Horizon Scene** For PlantPredict subscribers who have a TGY Unlimited subscription and API Key setup in PlantPredict, you can easily import the SolarAnywhere High Resolution Horizon Scene for that site with a single click of a button within PlantPredict. Having this High Resolution Horizon Scene will ensure that your far shading losses are accurately reflected in your Yield results. Release 11 10 0 Image4 **Quick Edit Screen improvements** The Quick Edit feature on PlantPredict Block Builder predictions is a very powerful and handy tool. We have been expanding the fields that are available within the Quick Edit screen recently and the latest addition is the DC Field Post Height and Cell to Module Difference. Now you can quickly and easily update the post height and/or the Cell to Module Difference for all your DC Fields without having to go into the PV Blocks and Arrays screen. Release 11 10 0 Image5 **Minor enhancements and Bug Fixes** We also fixed several bugs in the software with this release. Below is a short description of these bug fixes and minor enhancements. \*\*Lock Buttons on the DC Field - \*\*With [Release 11.7.0](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1363279934) we added the ability to lock certain fields to make sure that they don’t change when changing the Module. This stopped working with a subsequent release, and so we had to refactor the functionality and it is working again as expected. **Module Power Tolerances were not saving when adding a new module** - This has been fixed \*\*Clicking the Delete button on your keyboard will delete objects in Map Builder \*\*- Users that are used to working in AutoCAD have requested that we enable the Delete key on your keyboard as an option when you want to delete something in the MapBuilder Screen. We have added support for this. **Seasonal Tilt was throwing errors** - If you went in and updated the Mounting type to Seasonal Tilt and added a seasonal tilt value in one of the months. Then changed the Mounting type to a different selection, the DC field would not save and would throw an error. We have fixed this. # RELEASE 11.10.1 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.10.1 September 15, 2023 This hot fix is intended to fix two recent bugs experienced by PlantPredict users. 1. Some countries in the Kingdom of the Netherlands were not being geolocated correctly, which was stopping the creation of new projects with associated latitudes and longitudes. These countries were Curacao, Bonaire and Sint Maarten. 2. The export of prediction results for a select group of predictions was timing out. We have increased the efficiency of our prediction retreival engine and this no longer occurs. # RELEASE 11.11.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.11.0 September 21, 2023 **IAM Model Updates - Physical IAM Model** PlantPredict subscribers can now utilize the Physical IAM model published in pvlib. To use the Physical IAM model, a user must make the proper selection in the Simulation Settings → Model Choices section of their prediction. Release 11 11 0 Image1 The physical IAM model resembles the Fresnel model implemented in PVSyst in that they have similar input parameters, but users should not expect the exact same results. Documentation here: [Physical IAM Losses](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1337556995?src=-272576871) **Column Name Row in Weather File Import** We added a new parameter called “Column Name Row”, which allows a user to specify the row in the weather file being implemented that contains the Column Names. The Format Data screen will now hide all the rows above the Column Name Row, which makes mapping the columns much easier. Release 11 11 0 Image2 **Block Builder Quick Edit - Diffuse Stow/Irradiance Optimization options** We have added the Irradiance Optimization parameters to the Quick Edit page, which is only available for Block Builder Predictions. Now you can quickly and easily modify the Irradiance Optimization settings for all your DC Fields. Release 11 11 0 Image3 **Custom Array Builder can build arrays with DC as Tables** If the “Create DC as” field is set to Tables, when you create a custom table using the Custom Array Editor in a Map Builder prediction, the DC will be created with table shapes instead of array shapes. Release 11 11 0 Image4 **KMZ Backdrops are now displayable on PLP-1000** If you have imported a KMZ as a backdrop, and you want those shapes to appear in your PLP-1000, that is now possible. Release 11 11 0 Image5 **SDK Updates** The SDK now supports JSON only requests on top of existing functionality. This should make the SDK easier and more intuitive to use, especially for software developers not coming from a Python background. The SDK now support the upload of PAN and OND files * Added new support in the SDK to allow parsing and uploading of both .PAN and .OND files. For example usage, check out our ReadTheDocs section on these changes here: [Example Usage — plantpredict-python 1.0.20 documentation](https://plantpredict-python.readthedocs.io/en/master/example_usage.html#upload-a-module-pan-file) * Updated the \_enumerations \_class to include the \*\*new \*\*Physical IAM model choice. To keep up to date on our SDK releases, check out our GitHub Release page: [Releases · plantpredict/python-sdk](https://github.com/plantpredict/python-sdk/releases)   **Minor enhancements and Bug Fixes** * Fixed a bug where prediction statistics were not showing up in an expandable UI element. This expansion was redundant and has been removed. * The asset type of “StringSizing” is displayed for at least 2 different assets incorrectly. Ashrae stations during project/prediction import and new module forms. **Import Project → Import From .PPP → Ashrae Station** Release 11 11 0 Image6 **Add Module → Create Blank Template** Release 11 11 0 Image7 * Updated our Contact Us link to utilize our new Support Contact us screen. * Project Import now filters for \*.ppp files, making this process a little easier * Fixed an issue with the .SHP File export. Boundaries with holes in them, were causing strange results. # RELEASE 11.12.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.12.0 October 5th, 2023 # **Terrain Pro is Live!!!!** We're excited to announce that our earthwork assessment tool **Terrain Pro is now LIVE for all PlantPredict Pro & Enterprise customers.** The technology behind Terrain Pro has been under development for more than a year, and we are very happy to share this with our PlantPredict Pro and Enterprise Subscribers! It is now easier than ever to do Earthwork Assessments for your early stage PV Projects. This is especially true if you are considering the use of Terrain Following Trackers. Terrain Pro is accessed from within the Design Pro Application. Every Scenario created within Design Pro will have a Terrain Pro run automatically executed. Click on the Terrain Pro icon to dig deeper and evaluate multiple configurations to really understand earthwork cut/fill quantities for your project site. Release 11 12 0 Image1 If you would like to learn more about Terrain Pro, join us for a webinar on October 19th. [Register here](https://go.terabase.energy/e/995702/terrain-pro-launch-webinar/2pmm7/251898732?h=GzSiRoEX0C491Y03kW7NY1pZR48gS4-IFNYE5WPMzZE) Release 11 12 0 Image2 # **Other enhancements that are part of this release…** **Select and See MWdc has been enabled in PlantPredict Map Builder** Select a group of arrays or tables and see how much MWdc is included in the selection. Release 11 12 0 Image3 **Buildable Area is now included as Site Boundary Meta-data in the MapBuilder KMZ export** When you download a KMZ file from within the PlantPredict MapBuilder tool, we have started adding Meta-data to the site boundary. If you have a site that has many site boundaries, this Meta-data can be very helpful. We currently include the MWdc and the Buildable Area. Release 11 12 0 Image4 **Default Statuses are now available on Weather, Inverter and Module Files** For Company Administrators of PlantPredict Business, Pro and Enterprise subscribers. Several releases back, we enabled the ability to define if you want the default status of your prediction to be Draft-Shared or Draft-Private. This was a very popular enhancement, so we expanded this to also include Weather, Inverter and Module Files. Company Admins can go into the Company Defaults section of the application and specify the company preference in the Miscellaneous tab. Release 11 12 0 Image5 **Create DC As Company Level Default** Company Administrators can also now specify a Default for the “Create DC As” field in the MapBuilder Tool. Previously, this was defaulted to “Arrays” for all users, but now our Paid Subscribers with Company Admins can control what is the default selection for this field. Release 11 12 0 Image6 **Lock has been added to Layout Number of Rows field in the PlantPredict Block Builder tool** We have been adding “Locks” that will keep certain values within the Block Builder tool when you change Module selections in your DC Field. One field that we missed with our initial implementation of the Locks, was the Layout Number of Rows. So, we have added a Lock on that field as part of this release. Release 11 12 0 Image7 **Ability to turn on/off the Base 99.6 Cooling for Transformer derating from within MapBuilder** This function has always been available in the Block Builder tool, so we have added this to the MapBuilder as well. Release 11 12 0 Image8 **Information Icon has been added to the Loss Factor tree in Prediction Results** We wanted to make accessing the Loss Factor documentation easier for our users, so we added an Info Icon in the Prediction Results screen. Release 11 12 0 Image9 **Updates to the PlantPredict SDK** For our PlantPredict Enterprise customers who utilize the PlantPredict SDK to script automation using our API, we have made some really nice updates. * The `/NodalJson` endpoint now supports a new optional parameter of `nodalParameters`. You can now specify which outputs specifically you are requesting and the API will only returned those properties, omitting any properties that were not requested. For more details visit our API Change Log at [plantpredict-api](https://documenter.getpostman.com/view/3855302/UVsHUoHa#3-changelog) * The SDK now supports negation of the result summary losses. E.g. `prediction.get_results_summary(negate_losses=True)` will return negative and positive loss values that match what is seen in the PlantPredict UI.   **Minor Bug Fixes and Enhancements** * There was a bug in the Nighttime Disconnect function, which has been corrected. The Loss Factor for Nighttime Disconnect will more accurately reflect the impact of Nighttime Disconnect * When creating small rooftop arrays in MapBuilder using String Inverters, the Inverters Per Array was not updating correctly. This has been Fixed. # RELEASE 11.13.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.13.0 October 20th, 2023 Our last release was huge release with the launch of Terrain Pro and a long list of features. Read more about that release here [RELEASE 11.12.0](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1411285036). This release is not as big as the team is working on a few items that are behind the scenes and will be released in the next few months. Here are the changes we made and what you can expect in the application. **Cloning a Project to a new location and getting a Meteonorm weather file for that location just got easier** Some users use our Clone Project functionality to move a series of BlockBuilder predictions to a new location and then run those predictions to see the results at the new location. If there is not a Meteonorm weather file at that location, the process to add a new weather file would take them out of the Clone Project process and would disrupt the flow. We made this easier by providing a Download New Meteonorm link: Release 11 13 0 Image1 **Custom Label when uploading a Constraint KMZ in MapBuilder** When uploading a KMZ file as Constraints, you can now add a custom label that will appear on ALL constraint shapes that are part of that KMZ file. Release 11 13 0 Image2 **Minor issues and Bug Fixes** * In the last release, we added the ability to define Default Weather File statuses. This caused Meteonorm weather files to be imported as Draft-Private or Draft-Shared, which made them difficult to find for some users. We fixed this. * The Array Area on the PLP-1000 was actually showing the Buildable Area. We have fixed this * When SDK Users create a New Prediction, their Company Level Defaults will now be applied to the new prediction. # RELEASE 11.14.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.14.0 November 2nd, 2023 **Constraint Points are now available in PlantPredict MapBuilder** We have received this request from several of our customers who are developing projects where Solar is co-located with Wind. You can now drop a Constraint Point on your map and then have a circular constraint generated based upon the setback value that you provide. The Constraint Point icon is located on the right-hand toolbar and looks like this: Release 11 14 0 Image1 1 Just drop this onto your Map and adjust your setback. Release 11 14 0 Image2 Constraint points also get imported from KMZ files as well, so if you have a KMZ with wind turbine locations that you would like to upload onto your map, the software will recognize these points and place them. Release 11 14 0 Image3 These constraint points will also be exported when you Download your map data in any of the formats: KMZ, DXF or SHP.   **Minor Bug Fixes and Enhancements** * Users can upload a .KMZ backdrop to the Map Builder prediction. The system allows users to save this backdrop, eliminating the need for repeated uploads. * Meteonorm weather files are now being downloaded with an “Active” Status instead of “Global”, and the owner will be the user who initiated the download. * We restricted the ability to generate API credentials to a specific group of users who meet the following criteria: 1. The requester must have administrative privileges. 2. Both the requester and the user must belong to the same company, unless the requester is a super admin. 3. Both the requester and the user must have an 'Active' status. 4. Both the requester and the user must possess an active subscription for one of the following license types: Free Trial, Strategic, Education, or Enterprise. * We've enhanced support for importing large weather files. We now can import weather files containing 30 years worth of data with a 15-minute interval. The maximum size for weather file imports has been increased to 128MB. * If a weather file import contains more than 8,760 timestamp records (equivalent to one year of data at 60-minute intervals), the user will only see the first quarter of the data on the quality check screen. This adjustment was made to prevent errors in the API due to the size of the data. # RELEASE 11.15.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.15.0 November 21st, 2023 **NEW Scenario Analysis User Interface has been added to Design Pro** PlantPredict Pro subscribers who use Design Pro will notice a major change in our Simulation workflow that will make understanding the DC and AC Capacity of your project site easier and streamline your optimization process. In Design Pro, each distinct layout is referred to as a scenario. Scenarios are part of a simulation, which can run between 1 and 50 scenarios simultaneously. After the simulation has completed running, each scenario will have unique results including; layout, yield, earthwork assessment, EPC cost, and simple LCOE. The Scenario Analysis page below serves as the epicenter for creating and adding scenarios to a simulation. It includes design inputs, the GCR/Capacity visualization, and the scenario tray Release 11 15 0 Image1 The scenario analysis workflow is simple and powerful. As design inputs are entered the GCR/Capacity visualization in the scenario analysis updates dynamically. When satisfied with the inputs, add the scenario to the simulation. You can learn more about this exciting enhancement by reading about it in our Design Pro User Manual: [CREATING LAYOUTS WITH SCENARIO ANALYSIS](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/058fa7a7-e6a7-4b23-8c73-84ae563d6cd7/article/1441038639)   **Design Pro AC Clustering Logic has been improved** When clustering the tables into AC Block, we are not running any algorithm to determine the number of tables or strings per AC Block. For every table we know its MWdc rating, we will cluster tables together until: **SUM(MWdc\_table1, MWdctable2,…,MWdctablei) /MWac\_inverter >=DC/AC Ratio.** At this point we will move to the next available table and start the clustering process all over again. The AC clustering will happen with the same snake logic we already know. Staring from the quadrant where the substation is. This logic should apply to every buildable area.   **ProjectID and PredictionID have been added to the Nodal Data Files** We have added some additional meta-data at the top of Nodal Data Files. This information is also included in the API results for both the .CSV and .JSON nodal outputs Release 11 15 0 Image2 **Minor Bug Fixes and Enhancements** * Module tilt angle textbox can be edited typing after clicking the arrows up or down. * Road units in comparison should be m^2 not acres. * BoQ Naming Conventions - MV transformer unit is M2, should beach Each # RELEASE 11.15.2 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.15.2 November 30, 2023 ## **Design Pro** ### **Power Plant Output Limit** It is now possible to set a power plant output limit to be applied at the point of interconnection within Design Pro. This can be set and toggled on/off from within the Losses page. This curtails any production at the point of interconnection which exceeds the Power Plant Output Limit. Release 11 15 2 Image1 ### **Minor Updates and Bug Fixes** * GCR/Capacity Graph Improvements * Fixed several BoQ and Compare Tool inconsistencies * Fixed missing data from scenario comparison download * Fixed perimeter fence units (to m) for Thin Film simulations * KML window improvements ## **Voltage Pro** ### **Control of Racking Type, Azimuth and Tilt Angle** It is now possible to set the racking type to single-axis tracker or fixed-tilt, specify the racking azimuth and specify the module tilt angle (for fixed-tilt only). These selections also show up in the output report. ### **Treatment of Direct Shading** Voltage Pro now ignores the effect of direct shading (for fixed and tracking) and continues to implement a true-tracking algorithm (for single-axis trackers). This ensures conservative “edge-of-array” conditions are the basis for open circuit voltage calculations. The treatment of direct shading has been added the output report. ### **Minor Updates and Bug Fixes** * Added NEC 2017 and 2023 to output report compliance table * Added a warning when user selects a single year weather dataset * Updated report logo and VP version number to 2.0 # RELEASE 11.16.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.16.0 December 14, 2023 ## **New Features!** ### **Voltage Pro** * Albedo data is now incorporated into the simulated open circuit voltages. When albedo is present in the weather data, Voltage Pro will use this albedo data within the simulation by default. If albedo data is not present in the weather file, Voltage Pro will default to a 0.2 albedo value. ## **Minor Improvements and Bug Fixes** ### **PlantPredict** * Fixed an issue preventing non-yearly weather files with albedo data from being imported. * Improved Swagger UI performance. * Fixed ReadTheDocs resource link. * Map builder DXF exports now include the source for each unique constraint. * Predictions using modules with invalid IAM factors can no longer be queued. A error message provided the module model and assigned DCField will now appear alerting the user of the incompatible IAM configuration. This should reduce support related questions. ### **Design Pro** * Fixed an issue where cloned simulations were not editable. * Corrected an inconsistency between Design Pro and PlantPredict in the querying of module and inverter data. Design Pro is now aligned with PlantPredict in using the module and inverter IDs. * Corrected the Fuse quantities within BoQ output * Fixed Cost and Financial model failures caused by cost modifiers being unavailable for certain lat/long locations. * Corrected the Module Cells per String Value in the BoQ summary report with two new parameters taken directly from module definition: "Number of cells in series" and "Number of parallel strings per cell". * Enhanced the algorithm for DC placement and internal road layout, ensuring optimal utilization of available area in irregularly shaped sites. * Corrected discrepancies between the BoQ report and comparison tables to display only the quantities of used racks, thereby providing a more accurate representation of actual rack usage. * Corrected discrepancies between the BoQ report and comparison tables for cable trenches and one-way cable lengths. * Corrected several areas of the interface and reports where "Tracker" incorrectly displayed for Fixed Tilt Systems * Corrected several unit of measure discrepancies in the BoQ report * We have temporarily disabled the “Depth to Bedrock” and “Tribal Land” map layers due to changes in ArcGIS data layers as we review resolution on ArcGIS side. # RELEASE 11.17.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.17.0 January 11, 2024 # **PlantPredict** ### **New Features!** * **Easily Run Multiple Predictions** - A new button has been added to the project screen labeled "Run Multiple Predictions."  This button allows users to run up to 10 predictions at a time, directly from the Predictions page without having open each prediction. Release 11 17 0 Image1 ### **Minor Improvements and Bug Fixes:** * Informational text has been added to the weather import screen letting users know the quality control view of their data has been truncated where more than 1 years worth of data is being uploaded.  The truncation only occurs for the quality control check, the full time series is always saved for the purposes of the prediction run. # **Design Pro** ### **New Features!** * **New GCR-Capacity Boundary Details Table** - The GCR-Capacity page in Design Pro (DP) has been updated, with the addition of a boundary details table and a resized GCR-Capacity chart. This new table provides detailed insights on how the user's design input choices impact the scenario output at each boundary level. It displays, for every boundary, the available DC capacity at each Ground Covering Ratio (GCR), the DC used, the AC capacity, the quantity of inverters, and the DC/AC ratio corresponding to the user's design inputs. Furthermore, the chart has been resized to allow users to visualize the site plan on the map more effectively, and it can be expanded if necessary. Release 11 17 0 Image2a * **Beta Release of Electrically Connected Boundaries** - This new feature enables users to specify at the site plan level whether boundaries or parcels may be electrically connected, thus permitting the division of AC blocks among them. This feature can be used to more fully utilize available area for DC capacity, especially the smaller boundary areas which may not be able to fit a full AC block. The feature can be activated in the Site Plan section of Design Pro (DP). By default, new and existing site plans will continue to be electrically disconnected unless enabled by the user. Currently, the application assumes a maximum LV feeder loss of 3% to discern whether the distance between two adjacent boundaries may be electrically connected. The application identifies the optimal route or routes for distributing AC blocks across these boundaries or parcels. Finally, the Boundary table in the GCR-Capacity section is modified to display these optimal paths, along with the boundaries and their respective order of connection within each path. ***Please note this feature is currently in Beta release testing.*** Release 11 17 0 Image3 Release 11 17 0 Image4a * **Streamlined Project Sharing for Technical Support** - We’ve streamlined the process to share and un-share a project with Terabase for the purposes of technical support. Simply toggle the switch as indicated below and the Terabase technical support team will have access to your project. Once your issue has been resolved, toggle this switch off and remove access from Terabase. Please note that this new feature only provides access to the project. It is highly recommended to send an email to [support@terabase.energy](mailto:support@terabase.energy) to describe the issues you are having and reference the project requiring support. Release 11 17 0 Image5 1 ### **Minor Improvements and Bug Fixes:** * Terabase logos have been updated across all interfaces and reports. * Improvements to “Cancel Simulation” feature where multiple simulations are running in parallel. # RELEASE 11.18.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.18.0 Janurary 25, 2024 # **PlantPredict** ## **New Features** * We are preparing for the launch of PlantPredict 3D alpha in February. Please contact us if you would like to opt in to the closed alpha! ## **Bug Fixes** * When using POAI data, PlantPredict now only allows the treatment of circumsolar as diffuse. * Fixed a bug where some module and inverter files could not be imported. * Fixed a bug where multi-year data was being truncated. # RELEASE 11.19.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.19.0 February 08, 2024 # **PlantPredict** ## **New Features!** * PlantPredict now remembers “latitude” and “longitude” inputs from the “Add New Weather Data Screen” in the “Create your Own Weather File” screen. Release 11 19 0 Image1 ## **Bug Fixes:** * The block summary report was missing the 8760 section, this section is now being populated. ## **Improved API Documentation:** * Updated and improved the Postman documentation for Prediction related endpoints included Time Series requests. !\[Release 11 19 0 Image2]\(/images/release-11-19-0-image2.png # **Design Pro** ## **New Features!** * **Layout Improvements** - Improved AC clustering logic has been implemented for our “Electrically Connect all Boundaries” feature which is currently available as a Beta release. Additionally, the AC clustering “path” is now represented on the scenario analysis page when the “Electrically Connect all Boundaries” feature is enabled: Release 11 19 0 Image3 * **KML Export Enhancements** - The AC Station ID associated with each combiner box can now be viewed within the KML export: Release 11 19 0 Image4 ## **Bug Fixes:** * Fixed an EPC cost calculation error in which pile material costs were incorrectly calculated * Fixed an issue where simulations were failing when earthwork calculations were failing. Now, if an earthwork calculation fails, default grading costs are used in the cost estimate. * Fixed irregular behavior with the array render icon and PDF layout icon when transitioning forward and back in the simulation settings pages. * Fixed an issue causing the scenario analysis graph to be blank in certain cases. * Fixed multiple issues causing EPC cost model to fail, resulting in failed simulations. * Fixed an issue causing weather data to continue to load indefinitely. * Fixed an issue where AC stations were being placed outside site boundaries for electrically connected layouts * Fixed an issue where layouts would fail due to overlapping boundaries. # **Terrain Pro** ## **New Features!** * Added a “Reset Project Location” button to refocus the map interface to the project location: Release 11 19 0 Image5 * Updated CSV download file to specify angle units (degrees or percent) and updated file naming convention (`___)` ## **Bug Fixes:** * Improved the calculation loader feedback to the user. Previously, it was unclear if a simulation was in progress but now this feedback is improved to help the user understand that a simulation is in progress. * Corrected an error with the array area calculation. # RELEASE 11.20.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.20.0 March 06, 2024 # **PlantPredict** *** ## **New Features!** * **Map Builder Improvements** * Map Builder interface and PLP-1000 layout export can now support custom text labels and arrows which can be accessed from toolbar on right side of screen: Release 11 20 0 Image1 * Parameters which control bifacial losses including “Structure Shading” and “Backside Mismatch” have been added to the Losses Parameters within the Map Builder Power Plant Parameters Interface. This is now aligned with the Block Builder bifacial parameters: Release 11 20 0 Image2 1 * **UI Improvements for Environmental Controls** * Controls which pertain to the spectral model have been moved from the Model Choices page to the Weather page (under Environmental Controls). This should improve the usability of the application and make it more clear which spectral models are being applied. * **Resource Center Improvements** * Updated the Resource Center page to include links to PlantPredict Video Tutorial library on Vimeo * Added a [My First Project](https://player.vimeo.com/video/910100611?h=19aa265f34) tutorial video for new PlantPredict users when users log in for first time and haven’t yet created a project. Release 11 20 0 Image3 ## **Bug Fixes** * **Company Defaults Improvements** * Transformer parameter fields have been renamed in order to make it clear whether the field refers to the main power transformer or the medium voltage transformer.   * **Miscellaneous** * Fixed an issue where exporting a project (.PPP file) would cause the application to error. * Weather files are once again sorted by proximity by default rather than upload date * Fixed an issue where the “Sort By” filter was appearing, even if the user clicked on something other than the filter drop down. * Fixed a broken link to the PlantPredict user guide * Fixed a broken link to Terabase’s vimeo page # RELEASE 11.21.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.21.0 March 07, 2024 # **PlantPredict** ## **New Features!** * **Transect Environmental Assessment Integration within Map Builder** - Users on all paid license tiers (Individual, Business, Pro and Enterprise) can now get a free, tailored, environmental assessment directly from Transect (an industry-leading provider of global, environmental permit data) for their project site with one click from within PlantPredict Map Builder. The assessment considers the land within the user-defined site boundary areas and is reported inclusive and exclusive of user-defined constraints. Four categories of environmental risk levels and cumulative areas are reported including: 1. Protected Species 2. Waters (Streams and Flood Planes) 3. Protected Public Areas 4. Environmental Compliance (Publicly Owned Areas) Release 11 21 0 Image1 * **Minor Improvements** * Added a new tooltip to the weather upload timestamp settings for easier help in navigation of the weather upload process * OND files with one, two, or more than four efficiency curves now have more descriptive error message. ## **Bug Fixes** * Slope azimuth in the DC Field now saves without reverting back to 180 degrees. * Average post height in the prediction comparison report now responds correctly to the metric vs. imperial conversions. * Companies with a business tier subscription or above can now have up to 2 IT administrators without counting against their subscription’s maximum number of users. * Companies with a business tier subscription or above can no longer set draft private modules or inverters as their company default. * Moved custom module temperature upload UI element to the thermal models section of the DC field. # **Design Pro** ## **New Features!** * **1P Multi-String Improvements** - It is now possible for the user to specify the number of strings per rack for both full and partial racks for the 1P Multi-String tracker type. Additionally, we’ve increased the maximum string length supported by the 1P Multi-String tracker up to 36 modules per string and have increased the maximum tracker length to 120 modules. Release 11 21 0 Image2 * **1P Multi-String Info Graphic** - We’ve added a new info graphic to better define the tracker input parameters. Release 11 21 0 Image3 1 * **Scenario Analysis Cancel/Back Functionality** - It is now possible to break out of the Layout Scenario Analysis and go back to the previous screen without having to wait for the analysis to complete. Release 11 21 0 Image4 ## **Bug Fixes** * Fixed an issue where the scenario analysis graph loaded with no feasible layout solution (AC and DC Capacities = 0). * Fixed several issues related to Company Default Settings in PlantPredict not carrying over correctly to Design Pro. * Fixed an exclusion zone rendering issue when exclusion zones overlap. * Fixed an issue where the default setting for Min Pile Reveal was not calculating correctly based on racking parameters. * Improved rendering of the Scenario Analysis Table (previously some values were cutting off) * Fixed an issue with the “Gap Between Racks” input parameter missing from GFT rack type and aligned the naming of this parameter across the platform. * Improved the Scenario Comparison Table to align terminology and added Pitch and Aisle Spacing * Fixed several issues leading to failed scenarios due to unique combinations of boundaries and technology selections. * Fixed several UI-related issues leading to challenges entering data or navigating within the map interface. # **Terrain Pro** ## **Bug Fixes** * Fixed an issue where the earthwork cut/fill heatmap legend and color scale was incorrectly rendered. The heatmap legend and color scale range will now be fixed at \<2ft to >2ft (\<0.6m to >0.6m). A dynamic heatmap range will be re-introduced in the near future. # RELEASE 11.22.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.22.0 March 21, 2024 # **PlantPredict** ## **New Features!** * Within Map Builder, boundary and constraint names are now retained on KMZ upload (if present within the KMZ file) and are likewise included within the export KMZ file from Map Builder. * Added company level defaults for DesignPro users which lets companies choose their default pile type and piles per table. * Prediction export file extensions have been changed from .PPP to .PPD to distinguish them from project file exports. ## **Bug Fixes** * Customers trialing SolarGIS weather files are now no longer locked out of projects once they reach the 10 file limit. * Solcast precipitable water is now correctly converted from kg/m^2 to cm. * When importing PPP files the “keep all” button was not working correctly. This has been fixed. * When exporting PPP files the export pop-up now includes correct information about which data points are included and which are excluded. # **Design Pro** ## **New Features!** * Increased the maximum number of piles limitation for 1P multi-string and generic trackers ## **Bug Fixes** * Improved the efficiency/speed of weather file retrieval. * Corrected an issue that resulted in a delay in enabling the “Create a New Simulation” button * Corrected a mislabeling of Combiner Boxes in the BoQ * Corrected an edge case where the scenario analysis graph would not load * Improved the rendering of the Scenario Compare window * Corrected an issue where the number of modules per string value was missing from the Quick Configuration Page * Corrected an issue where certain Thin Film scenario resulting downloads were missing the BoQ Excel file. # **Terrain Pro** ## **Bug Fixes** * Disabled the rack viewer pop-up window button until after the earthwork heatmap has fully rendered. This had previously caused issues in the UI and are now corrected. # RELEASE 11.22.1 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.22.1 March 29, 2024 * **PlantPredict** ## **Bug Fixes** * We have fixed a bug that did not allow SolarGIS subscribers to run predictions that included a SolarGIS weather file. * We have fixed a bug that did not allow users to import the new PPD (prediction file) file extension. # RELEASE 11.23.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.23.0 April 03, 2024 # **PlantPredict** ## **New Features and Improvements!** * Improved Project and Prediction download messaging to inform the user what data is and is not included in the download. When time series data is present in the prediction, a link is provided in the message box to streamline download of that data separately. Release 11 23 0 Image1 * Improved warning messages to better describe missing weather data associated with certain spectral model user selections. * In the Plant Summary 8760 download, The section heading for “First Year Results” has been updated to “Results Summary” to better reflect the contents of that section. * Removed PVPlanner from available SolarGIS formats. ## **Bug Fixes** * Fixed several issues preventing successful PPD file import. * Fixed several locations (Advanced DC Field Editor and Batch Prediction) where the azimuth field input was not being retained when progress was saved. # **Design Pro** ## **New Features!** * Implemented a progress loader for the Scenario Analysis page while the plot and table are loading Release 11 23 0 Image2 * Added Torque-Tube Axis Slope (Tracker) / Beam Slope (Fixed-Tilt) and Reveal Window to Design Pro company-level defaults within PlantPredict Admin page. * Changed default embedment depth to 2m and default pile type to W6x9. ## **Bug Fixes** * Vmax voltage on the rack selection page has been corrected so that it now calculates dynamically with user selected string size and based on simple, linear “Method 1” approach. It previously was calculated and fixed at the default string size. Note this is not a Voltage Pro simulated string size. * Fixed an issue where Perimeter Road Area was being reported as “0” when this data was not available due to it being a historical project prior to the implementation of this calculation. It is now reported as “-” when not available. * Rendering of boundary visualizations have been fixed. Previously, these would sometimes not show up on the simulation page after tab switching. # **Terrain Pro** ## **New Features!** * A new earthwork heatmap view has been added. Users now have the option to view the earthwork heatmap with two different scales: * “Fixed Scale” = +/- 2ft. * “Dynamic Scale” = +/- Maximum Cut or Fill Depth ## **Bug Fixes** * Corrected an issue where disturbed area values were being incorrectly reported for metric (SI) units. # RELEASE 11.24.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.24.0 April 18, 2024 # **PlantPredict** ## **New Features and Improvements!** * Nodal Data is now available for all Voltage Pro simulations, including simulations run prior to this release. This was previously disabled since a “lighter” set of nodal data was needed by Voltage Pro. It can now be accessed the same way as any prediction nodal data is accessed: * New Voltage Pro prediction runs will automatically generate nodal data. * Existing Voltage Pro predictions will display a new option to re-run the prediction in order to generate the nodal data. * Within the Module File, the “Tolerance” fields have been relabeled as “Power Tolerance” and relocated to the STC Characteristics Section to avoid confusion. * The Lock All / Unlock All buttons on the DC Field form will now affect all lockable fields between the Table, Field, & Losses tabs. ## **Bug Fixes** * Fixed an issue where the Download button for certain weather providers was not working. * Fixed the Spectral Shift Factor result in Nodal data. Note that this fix does not affect energy yield since the Spectral Shift Factors were being properly applied in the simulation prior to this fix. Previously only 0’s were reported for the Spectral Shift Factors in the Nodal Data. # **Design Pro** ## **New Features!** * Implemented improvements for the handling and notifications of Draft-Private assets (modules, inverters and weather data) when simulations are being cloned or edited. New pop-up windows will inform users that Draft-Private assets are in use and provide direct link to those assets in PlantPredict for promotion. * Asset Status (Draft-Private, Active, Global, etc.) is now provided in the module and inverter selection drop-down menus. ## **Bug Fixes** * Fixed an issue on the Main Product Selection Page where the Custom Configuration data for module, inverter and racking was not updated/aligned with user selections. * Fixed the Pile Reveal Height Calculation for 1P Multi-String. Previously, it was defaulting to the Generic Tracker configuration to determine pile reveal height. # **Terrain Pro** ## **New Features!** * Array area is now reported in the lower left corner of the user interface.   # **Voltage Pro** ## **New Features!** * Nodal Data is now available for all Voltage Pro simulations within PlantPredict (see PlantPredict Release Notes above for more information). # RELEASE 11.25.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.25.0 May 02, 2024 # **PlantPredict** ## **New Features and Improvements!** **Import Process Enhancements:** You can now import predictions with assets of any status. If an import lacks necessary weather details, an error message will guide you to the import wizard on the project screen where a new weather file can be selected. **PVPlanner Reinstatement:** Responding to your feedback, we've temporarily reinstated the PVPlanner functionality, an essential tool for managing SolarGIS weather file downloads. This update ensures you can continue to utilize SolarGIS data effectively in your PV project planning. We previously removed this feature following vendor deprecation, but have brought it back to accommodate your current needs. For further details on this change and what to expect in the future, please check out the [SolarGIS guide on transitioning to the Prospect app](https://solargis.com/docs/product-guides/pvplanner/transitioning-to-prospect-app). **Educational Tooltips:** New informational icons have been added across various pages to guide you through the platform's features. On the Environmental Conditions page, icons next to spectral behavior, horizon scene, soiling, and air mass, and on the Block Builder page next to transformer and inverter sections, will direct you to detailed help pages for better understanding. **Error Handling Improvements:** We've implemented more detailed and instructive error messages in the weather download functionality to help you navigate issues more effectively. ## **Bug Fixes** **Improved Handling of Constraint Setbacks:** In Map Builder, we’ve corrected two issues associated with constraint setback. First, the DC Flood now respects linear and point constraints where no setbacks have been applied. Prior to this release, linear and point constraints without setbacks were not respected in the DC Flood. Now, Linear and Point Constraints will be avoided, even if no setback is applied. Second, we fixed an error where point constraint setback distances were being applied incorrectly. **Stability Fixes in Map Builder:** A previously encountered bug preventing the saving of the Backside Mismatch in Map Builder has been resolved. Additionally, we've added functionality to lock this field in both the Map Builder and Block Builder predictions for more robust data integrity. **Project Import Error Fix:** The bug that caused errors during the selection of a new ASHRAE station in the project import process has been addressed, ensuring a smoother project setup. **Fixed Tilt Compatibility in Physical IAM**: We've addressed the issue where Physical IAM (Incident Angle Modifier) was not functioning correctly with fixed tilt systems. This fix ensures that the IAM calculations now properly integrate with all fixed tilt configurations, enhancing the accuracy of performance predictions for these setups. * Time series inputs can now be unassigned and deleted. * Corrected an issue within the DC Field 3D Visualization/Editor. # **Design Pro** ## **New Features and Improvements!** **Scenario Comparison Improvements:** We’ve greatly improved and re-formatted the scenario data that can be compared between multiple scenarios after a simulation has run. In the past, it’s been difficult to recall the user selections and inputs that have led to a set of simulation outputs. This has especially been true of the system targets set in the Scenario Analysis page (Target GCR, Capacity, DC/AC, etc.). Now these selections are retained after the simulation has run and can be compared against other scenarios within the same simulation or across multiple simulations. Release 11 25 0 Image1 ## **Bug Fixes** * Fixed an issue where switching tabs between Site Plan/Team/Technical support and returning to the Simulation page led to the disappearance of the site boundary. * Fixed an issue where the result table, render icon, and array layout pdf icon were sometimes not visible. * Fixed an icon rendering issue where the equipment backgrounds were misaligned on the Equipment Quick Configuration page. * Fixed an issue causing the full tracker and partial tracker number of string options to be loaded with “Not Available” text on the 1P multistring tracker configuration page. # RELEASE 11.26.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.26.0 May 16, 2024 # **PlantPredict** ## **New Features and Improvements!** **UX Speed Enhancements:** Several improvements have been made to reduce the transition time between pages within the user interface. The weather data search now happens in the background upon project selection and has been reduced to a 50 mile radius (from 75 miles). Additionally, predictions results should be retrieved much faster, especially for large result outputs. **Access to Company Defaults:** Non-administrative roles of customers with Business, Pro and Enterprise Tier licenses may now view their company defaults as read-only. **PLP-1000 Improvements:** The PLP-1000 formatting has been updated to replace the red text with black text. Release 11 26 0 Image1 **Transformer Units of Measure:** Units of Measure have been added to the Transformer inputs within the Block Builder Interface. ## **Bug Fixes** **Tracker Angle of 0 Deg Fix:** Previously, when the tracker angle was intentionally fixed at exactly 0 degrees by the user or if time series data for tracker rotation angles included time steps in which he tracker angle was exactly 0 degrees, results were erroneous. This only occurred when set by the user. This has been fixed and results are valid for time steps where the user has set the rotation to exactly 0 degrees. **Plant Net/Gross Energy Label Corrections:** The Plant Net Energy label in the Energy Results and Block Results page has been relabeled as Plant Gross Energy. This value does not include certain auxiliary and nighttime losses and was incorrectly labelled as Net Energy. # RELEASE 11.27.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.27.0 May 30, 2024 # **PlantPredict** ## **New Features and Improvements!** **Azimuth Input Helpful Improvements:** When configuring rack azimuth for imported weather file POAI data, the user interface now provides warnings when the azimuth is being pointed in polar direction instead of the equatorial direction. **DC Field Rack Length Improvements:** The maximum modules in a table in the dc field has been increased from 100 to 200. ## **Bug Fixes** **Error Message Fixes:** On changing a module to a different module in the DC field, a warning was being shown even if all change-able fields were locked.  This warning has been removed if the DC field is locked. **PDF Summary Fix:** The PDF summary was showing a fixed tilt angle for tracker systems.  This has been removed. **Weather Data Import Page Updates:** We have updated outdated text which describes the NSRDB and Meteonorm weather file imports. **Disabled Download File Fixes:** PLP-1000 and BOM downloads were disabled in mapbuilder predictions if the prediction status was set to non-draft status.  We have made these downloads available. **Prediction Status Updates:** The default prediction status for new PlantPredict users has been updated to Draft Shared instead of Draft Private. Company-Level Default Fix: The company default for Spectral corrections is now being applied.   # **Design Pro** ## **Bug Fixes** **GCR / Capacity Scenario Logic Fixes:** The logic behind the user inputs for Min DC/AC Ratio and Target DC/AC Ratio fields within the GCR / Capacity Selection Page has been corrected. Similarly, the error message that previously displayed when the Min DC/AC Ratio was less than the Target DC/AC Ratio has been corrected and now displays when the Target DC/AC Ratio is less than the Min DC/AC Ratio. # RELEASE 11.28.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.28.0 June 20, 2024 # **PlantPredict** ## New Features and Improvements! **Report File Names Improvement:** File names will not include the corresponding project name for better identification. **Energy Storage Configuration Validation:** In the event an energy storage system is configured without the subsequent powerplant output limitation, a warning will appear. DCField Shading Algorithm Company Default: Added the shading algorithm to available Company defaults. ## **Bug Fixes** **Fixed Tilt Company Default:** Corrected a problem where the specified mounting angle was not properly applied. Map Builder Side Panel Display: Fixed a styling issue that would sometimes result in the Map Builder side panel from displaying incorrectly. 1**2x24 Copy to Clipboard:** The Copy to Clipboard feature for the 12x24 results has been corrected to valid comma separated values and should import much cleaner into worksheet applications. Release 11 28 0 Image1 PowerPlant Quick Edit: Fixed an issue where decimal precision exceeded normal limits and also the rotational limits inputs have been updated to allow the same inputs as the DCField form. # **Design Pro** ## **New Features / Improvements** **Improved Reporting of Simulation Inputs:** We’ve continued to enhance the number of user inputs which can be retrieved after the simulation has run through the Scenario Compare Feature. This is useful when wanting to compare the difference between two different simulations or scenarios. When comparing at least two scenarios, difference will be highlighted. This list now includes all of the racking inputs. **Retaining Previous Inputs in Scenario Builder:** When you add a new scenario to the simulation queue within the scenario analysis page, the user inputs are retained in the input fields such that they don’t need to be re-entered for the next scenario to be added to the queue. This can greatly speed up the process of creating scenarios and adding them to the queue. ## **Voltage Pro** ## **New Features / Improvements** **Calculation Page Loading Speed:** We’ve greatly improved the loading speed of the calculation page when a new calculation is created. This used to take as much a several minutes but has been reduced to several seconds. # RELEASE 11.29.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.29.0 June 27, 2024 # **PlantPredict** ## **New Features and Improvements!** **PVC File Export from Map Builder:** It is now possible to export a PVC (PV Collada) formatted file from Map Builder! The PVC format is an extension of the Collada standard format with additional information unique to solar PV systems. The PVC format is a standard exchange format which defines the 3D geometry of a PV system and can be read by other industry applications including PVsyst. It is primarily used for 3D shade modeling. Note that it is also possible to upload your own 3D terrain data (via DEM file format) to serve as the underlying surface for the placement of the PV racks within the Map Builder layout. If no user provided terrain data is uploaded, PlantPredict will default to publicly available terrain data. Release 11 29 0 Image1 **Map Builder Backtracking Selection**: In Map Builder, it is now possible to specify the backtracking method, the same as how it can be done in Block Builder. **Company Defaults Improvements**: We’ve removed the company defaults for Tracking Algorithm and Module Orientation. These will now default to the values set within the module file (but can still be overwritten in the Prediction). This reduces confusion as to the source of truth for defaults for these parameters. ## **Bug Fixes** **Error Message Fixes:** Changing a Prediction from Draft-Private will no longer return an erroneous error message if the weather file status was also updated. **DC Field Modules High/Modules Wide Calculation Bug:** Fixed a bug in the DC Field page where the Number of Modules High and Number of Modules Wide were calculated incorrectly. # **Design Pro** ## **New Features and Improvements!** **Improvements to the 1P Multi-String UI:** The User Interface for the 1P Multi-String racking definition has been updated to group the inputs more intuitively. An additional parameter has been added: “TT-Extension” (Torque-Tube-Extension) and additional informational graphics have been added to explain the inputs in more detail. Release 11 29 0 Image2 **Compare Window Improvements:** We continue to make improvements to the Scenario Comparison feature. Several new fields have been added and several labels have been renamed. **Grading Analysis of Unused Racks:** Prior to this release, Design Pro layouts sent to Terrain Pro for grading analysis included “Unused Racks” (identified as gray color in layout). This is no longer the case and unused racks are no considered in the Terrain Pro grading analysis. # **Voltage Pro** ## **Bug Fixes** **Module / Inverter Filtering Bug:** Fixed a bug where modules and inverters would fail to filter if the user opened a cloned calculation from the parent page. **Calculation Failures due to Private Assets:** Where Draft-Private assets were selected for weather, module or inverters within a Voltage Pro calculation, these could result in failed calculations. New protections have been implemented to prevent calculations from being submitted with Draft-Private assets. **Duplicate Weather ID Bug:** Fixed a bug where duplicate weather IDs were displayed in the weather file selection dropdown menu. # RELEASE 11.30.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.30.0 July 12, 2024 # **PlantPredict** ## **New Features and Improvements!** * Company level defaults now how updated defaults for the DesignPro application. ## **Bug Fixes** * Cloned batch predictions no longer carry over results from the original prediction. * Batch predictions now properly load post height data. * Batch predictions no longer show the pending status when they have completed running. *** # **Design Pro** ## **New Features and Improvements!** * In shared projects, invited users can now edit the names of the simulations they created. * New default simulation settings for rack parameters. ## **Bug Fixes** * Fixed incorrect rack placement in the kml deliverable output. *** # **Voltage Pro** ## **Bug Fixes** * The logout popup message now works even after a browser page refresh. * Reduced the time to upload PV module data. * The Linear Method and "Run Analysis" button are now available after cloning a completed calculation. *** # **Terrain Pro** ## **Bug Fixes** * The array area for racks with landscape module orientation is now correctly calculated. # RELEASE 11.31.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.31.0 July 25, 2024 # **PlantPredict** ## **New Features and Improvements!** * **Post Height Default** - The racking post height may now be set as a fixed value within the Company Defaults. If set, this fixed value will override the automatic post height calculation from PlantPredict. * **Weather File Upload Enhancements -** We’ve made two helpful improvements to the weather file upload process: * Column mapping of weather data parameters is now automated for most column headers. PlantPredict now recognizes most column headers and automatically maps these correctly during the upload process. The ability to manually make adjustments for any unrecognized columns is still possible. * Intelligent default values are now populated within the POAI input fields where POAI data is present within the weather file. ## **Bug Fixes** * Diffuse Stow is now Labeled as Irradiance Optimization in the Quick Edit input selection. * Corrected several issues leading to sporadic behavior on the weather file selection screen. *** # **Design Pro** ## **New Features and Improvements!** * **PVC File Export** - It is now possible to download a PVC file describing the 3D geometry of the racking system for 1P multi-string trackers. This file is included in the Zip folder download from the scenario results. The PVC file can be imported into PVsyst for 3D shade analysis (or into PlantPredict 3D when it is released soon). ## **Bug Fixes** * Fixed an issue where KML files that have been downloaded from a Design Pro Scenario lead to errors when re-uploading into another Design Pro project. *** # **Voltage Pro** ## **New Features and Improvements!** * **Default Weather File Selection** - When creating a new project and calculation in Voltage Pro, the initial weather file loaded into the application by default has been improved to incorporate weather file status, creation date and distance from project site. # RELEASE 11.32.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.32.0 August 12, 2024 # **PlantPredict** ## **New Features and Improvements!** * **PVRADAR** - Users can now import [PVRADAR](https://pvradar.com/partners/monthly-soiling) monthly soiling values into the Environmental Conditions page for projects in the Continental US: Release 11 32 0 Image1 ## **Bug Fixes** * Corrected Night Time Losses unit of measure in Block Results page (from: MWh/MWp/year, to: MWh/year). * Fixed bug when some DC field saves would not complete due to validation on Fixed Tilt systems with no tilt angle specified. * Fixed bug with weather files not showing up when trying to add new weather. * Fixed “Sequence contains no elements” error that was showing up when attempting to import custom weather files. * Fixed bug with overlapping boundaries/constraints in MapBuilder yielding trackers being placed on top of each other. *** # **Design Pro** ## **New Features and Improvements!** * **Search by ID** - Implemented the ability to search for modules and inverters by ID * **PVC File Export** - It is now possible to download a PVC file describing the 3D geometry of the racking system for generic trackers and ground fixed tilt systems. This file is included in the Zip folder download from the scenario results. The PVC file can be imported into PVsyst for 3D shade analysis (or into PlantPredict 3D when it is released soon). ## **Bug Fixes** * Layouts with First Solar modules now use a harness wiring system, yielding more realistic string cable lengths * Fixed bug with string inverter drop down menu * Fixed bug with simulation progress bar for completed simulation after cancelling and deleting multiple simulations *** # **Terrain Pro** ## **New Features and Improvements!** * **PVC File Export** - PVC files can now be exported from Terrain Pro for projects run after the 11.32.0 Release: Release 11 32 0 Image2 # RELEASE 11.33.0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.33.0 August 29th, 2024 # **PlantPredict** ## **New Features and Improvements!** * Improved prediction processing time specifically for those with high year-repeaters. * Added import compatibility for SolarAnywhere v3.8. * Updated knowledge base articles for PlantPredict model and algorithms to allow for in-page navigation. ## **Bug Fixes** * Fixed an issue where predictions would not show as cancelled. * Corrected an issue where a single polygon could be added to a KMZ file. *** # **Design Pro & Terrain Pro** ## **New Features and Improvements!** **Enhanced PVC file generation for 1P multi-string trackers:** This update improves the generation of PVC files used by both Design Pro and Terrain Pro applications for 1P multi-string trackers. The geometric calculation of bay coordinates' elevation has been refined to provide more accurate elevation data. This enhancement ensures greater accuracy in the 3D representation of solar designs, optimizing shading analysis in Plant Predict 3D. Release 11 33 0 Image1 # RELEASE 11.34 0 Source: https://docs.plantpredict.com/release-notes/Version-11/RELEASE-11.34.0 September 5th, 2024 # **PlantPredict** ## **Bug Fixes** ### **Effective Irradiance Bug** We’ve corrected an effective irradiance bug that was introduced in version 11.33.0 which was released August 29th. It is recommended to re-run any predictions that have been run between August 29th and September 5th. A banner instructing users to re-run will display on any such predictions as well. # **Terrain Pro** ## **New feature and improvements** ### **New GIS server** A new dedicated GIS server has been implemented to store layers generated from Terrain Pro's calculation outputs and to retrieve them without overloading the browser's memory capacity. This new approach enables Terrain Pro to visualize any heat map layer, pile layer, or the newly available contour layer without limitations on the size of the array extension. Release 11 34 0 Image1a The layers generated by Terrain Pro, whether from a Design Pro scenario or configurations completed directly in Terrain Pro, will be hosted on the Terabase GIS server for a four-hour period. After this period, if the Terrain Pro configuration is accessed again, the layers will be regenerated on the server. ### **New heat map style** The style of heat maps in Terrain Pro is transitioning from a triangular representation of the areas of cut and fill between piles to a more detailed gradient representation. This new approach provides a more accurate depiction of cut and fill areas with higher pixel resolution. Release 11 34 0 Image2 Release 11 34 0 Image3 The new style is applied to all heat map layers available in Terrain Pro: * Earthwork heat map with fixed legend * Earthwork heat map with dynamic legend * Cut and fill map * Original surface heat map * Finished surface heat map The heat map used in the Terrain Pro earthwork report also benefits from the new style. ### **Contour layers for existing and finished surfaces** Contour layers for both existing and finished surfaces are now available in Terrain Pro. These layers represent the elevation lines of the terrain at specific intervals, showing the shape and slope of the landscape. Contour layers are typically used to visualize and analyze terrain features, such as slopes, ridges, and valleys, which are essential for planning and optimizing solar array layouts. Release 11 34 0 Image4a ### **Pile layers** The top of the pile and pile reveal data are now also stored on the new GIS server, providing a quick and reliable way to access this information. When either of these layers is activated, the rack projection layer is automatically enabled to help better identify the pile positions within each rack. This enhancement improves visualization and understanding of the spatial relationship between piles and racks, making it easier to assess alignment and placement during design and planning. Release 11 34 0 Image5 # RELEASE 12.00.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.00.0 September 9th, 2024 # **PlantPredict** ## **Version 12 (Beta) is Officially Launched!** ## **New Features and Improvements!** * **3D Shading is now Live! **Users can now analyze 3D shading scenes at the site level. 3D racking geometry can be defined via a PV Collada (.PVC) file upload into PlantPredict. It is possible to step through timesteps to view the shading on any rack or bay. It is also possible to view a heatmap of shading losses at the rack/bay level. Finally, the 3D shading model can be swapped in and out of the energy prediction. For more information, please see this article: [**User Manual - 3D Shade Scene Site**](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1560936459)**.** Release 12 00 0 Image1 Release 12 00 0 Image2 Release 12 00 0 Image3 * **ATI Irradiance Optimization** - It is now possible run predictions using Array Technologies (ATI) proprietary tracker control algorithm for irradiance optimization. Information about the system and weather data is passed to ATI through an API integration. (Note that weather data must be 5 min interval). Within seconds, ATI returns tracker rotation angles for that system and weather conditions. For more information, please see this article: [**User Manual - Array Technologies Irradiance Optimization**](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1738080278) * **SolarAnywhere v3.8** - It is now possible to import SolarAnywhere v3.8 weather data. * **Improved Knowledge Base Navigation** - We’ve updated our knowledge base articles for PlantPredict model and algorithms to allow for in-page navigation. ## **Bug Fixes** * Fixed an issue where predictions would not show as cancelled. * Corrected an issue where a single polygon could be added to a KMZ file. ## **Performance Model Improvements (from Version 11) Impacting Prediction Results** * Certain irradiance losses were calculated incorrectly if trackers were manually set to 0 degrees in version 11 and below. This has been fixed. * Tracker actuator loads can no longer be applied to fixed tilt systems. The user input field has been removed for fixed tilt systems. * Irradiance optimization angles now obey backtracking limitations. ## **Report Deviations (from Version 11)** * The reports page has been updated to resolve a discrepancy between the Plant Net Energy and Plant Gross Energy. From Version 12, the results pages now display Plant Net Energy (Plant Gross Energy - Nighttime Losses). This also affects the calculation of the following parameters: * Specific Yield * Performance Ratio * AC Capacity Factor ## **Nodal Data Deviations (from Version 11)** * “DC Imp (A)” has been renamed to “DC Current (A)” ## **API Changes (from Version 11)** * The nodal data CSV encoding has been changed from UTF-16-le to UTF-8 # RELEASE 12.01.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.01.0 September 26th, 2024 # **PlantPredict** ## **Bug Fixes** * Users will be prompted to re-run the shade calculations if they decide to change the weather file since the weather file affects the shading calculations. # RELEASE 12.02.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.02.0 October 17th, 2024 # **PlantPredict** ## **Bug Fixes** * Fixed an issue where predictions with nighttime disconnect would fail when used with certain weather files. * Fixed an error which occured when attempting to download weather fields from Solcast. * Improved error handling and messaging when attempting to use weather inputs which contain negative GHI values. # **Terrain Pro** ## **New feature and improvements** ### **Terrain Pro/Mercator Algorithm Update: Algorithm A.3.1 (6.3)** *Algorithm 6.3* is an evolution of *Algorithm 5.3*, and it introduces the following enhancements: 1. **Independent Max TT-Axis Slope Values:** * Users can now enter independent values for the maximum TT-axis slope to the *north* and \_south \_when the algorithm selected is the 6.3. 2. **Average Rack Slope Adjustment:** * After the rack profile with the *maximum pile reveal* and *non-zero maximum slope change* is calculated, the algorithm: * Checks the average slope of the rack. * Adjusts the rack to ensure the average slope falls within the range `[max TT-slope North, max TT-slope South]` ### **Predefined rack configuration parameters** In Terrain Pro's configuration page, a new banner has been added above the input parameters allowing the users to chose preselect input parameters for their configurations. Release 12 02 0 Image1 The details of the available input parameters are: Release 12 02 0 Image2 ## **Terrain Pro with import DXF feature** *** Introducing the Terrain Pro app's latest feature: the ability to import DXF files. This functionality provides seamless integration of your DXF drawings into Terrain Pro, but there are a few important guidelines to follow for optimal results. 1. **Unit Compatibility** Terrain Pro currently supports drawings with units in either meters or feet. The app will automatically convert units between millimeters and meters, and between inches and feet. For now, please ensure your DXF files use meters or feet as their units. In future releases, we plan to expand unit conversion capabilities, including support for additional unit systems and scale factors. 2. **Topographic Data** For this release, topographic data must be represented as polylines with actual elevation data. Only "lwpolylines" (lightweight polylines) containing elevation information will be accepted. Once imported, the app will identify the layers that contain these polylines, allowing you to select which ones to use for generating the TIN (Triangular Irregular Network) surface. Terrain Pro will automatically skip layers with irrelevant elevation data, such as overhead lines or underground pipelines. 3. **Rack Representation with CAD Blocks** Terrain Pro recognizes racks as CAD blocks and their associated piles as nested blocks within these racks. The insertion points of these nested blocks represent the location of the piles. The app will automatically scan for nested blocks named "pile," "post," "column," or "pier," but you can manually select blocks if different naming conventions are used. 4. **Coordinate Systems (Optional)** While not mandatory, defining a coordinate system for your drawing (such as UTM or a local coordinate system) will allow Terrain Pro to accurately position your project. The app uses EPSG codes to identify coordinate systems, ensuring precise placement of heat maps, contour lines, and rack profiles. If no coordinate system is provided, the calculations will still be accurate, though your project may be displayed in an incorrect location. **Next Steps** After the initial validation, you'll be able to select elevation data and nested blocks for rack and pile coordinates. Once your selections are made, Terrain Pro will process your file, leading you to the configuration page. Here, you can fine-tune layout configurations and access rack profiles and earthwork quantities, all presented in a clean, user-friendly interface *** ## **Design Pro Updates** \_Algorithm A.3.1 (6.3) \_is now the default for earthwork analysis in Design Pro. Each new scenario will utilize this latest version of the algorithm. *** ## **Mercator Updates** * *Algorithm A.3.1 (6.3)* is also the default in Mercator. * Users can specify independent *max TT-axis slopes* for the *North* and **\_South \_**directions. * The allowed range for max TT slopes is: `[0, 45]`. *** ## **GeoServer Enhancements** * **Data Storage Update**: All **GeoTiffs** and **shapefiles** used as base data layers are now stored in an server **repository** instead of directly in GeoServer. Only their links are saved on the GeoServer. * This reduces the load on GeoServer and improves stability. * The data and links remain available for **7 hours, 59 minutes, and 59 seconds**, with a cleaning process every **4 hours**. * **Layer Generation Optimization**: To minimize waiting time when creating the nine layers required for every Terrain Pro configuration: * As soon as the **heat map with a fixed style** is ready, it becomes immediately available, and the app is responsive again. * Other layers continue to load in the background, indicated by a **spinning wheel** on the top bar of Terrain Pro. * When a layer name changes from **faded to solid**, it indicates that the layer is fully processed and ready to render. Release 12 02 0 Image3 * **Rack Projection Layer**: Note that the **rack projection** is generated as the **last layer**, which might not be immediately available. * The **Layer Projection Button** will remain disabled until this layer is ready. # RELEASE 12.03.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.03.0 November 7th, 2024 # **PlantPredict** ## **New Features & Updates!** * **Fracsun Soiling Loss Integration** - It is now possible to import monthly soiling losses from Fracsun CLEO for any project location in the continental US! This can be accessed from the Environmental Conditions / Weather page within a Prediction. Read more about [CLEO AI - PV Soiling Loss Modeling Tool](https://www.fracsun.com/cleo) Release 12 03 0 Image1 * **AC Collection Loss Enhancements** - PlantPredict now applies a more realistic ohmic (I^2 x R) calculation method to the AC Collection Loss, similar to the DC Wiring Loss. The user entered AC Collection Loss percentage is applied at maximum Array Power (Maximum Inverter Power x Number of Inverters), similar to how the DC Wiring Loss percentage is applied at STC power level. At power levels other than maximum Array Power, the percental loss will vary with the square of the current through the collection circuit. This is change is described in detail here: [AC Collection System](https://terabase.atlassian.net/wiki/x/G4ACTQ) *Note - This change will only applied to predictions run on Version 12 and later.* * **PPD Import Improvements** - When using the “Import Predictions” button (from within an existing project), if the selected .PPD file has assets (weather, module, inverter) which the importing user already has access to, we will no longer create a new assets. Assets will only be created if the importing user cannot otherwise access them in the system. This helps to avoid duplicated assets where PPD files are being shared within the same company. * **MapBuilder Multi-Parcel Selection Improvements** - When selecting multiple parcels in MapBuilder (holding down the Shift key), parcel information for the last parcel selected is displayed. This improvement has been recommended by several customers. Previously, this information was suppressed when multiple parcels where selected. * **MapBuilder Boundary Setback Improvements** - MapBuilder boundary setback distance limitations of 50m have been removed, allowing for larger setback to be applied. * **Prediction Information Panel Improvements** - Additional data has been added to the Prediction card to display Last Modified User and Date: Release 12 03 0 Image2 * **3D Shade Scene Usability Improvements** - PlantPredict now displays a warning message and disables the “Queue 3D Calculations” button when PVC files containing more than 30,000 shading objects are uploaded. ## **Bug Fixes** * LeTID and Degradation losses were sometimes reported as non-zero (i.e., 0.01%) on the losses tree, even if set to 0%. This has been corrected. *Note - This change will only applied to predictions run on Version 12 and later.* * Previously, monthly soiling losses would be reverted to default values when importing NSRDB albedo values. And similarly, monthly albedo values would be reverted to default values when importing PVRADAR monthly soiling losses. This has been corrected. # **Design Pro** ## **New Features & Updates!** ### **Expanded Configurations for 1P Multi-String Tracker:** * Configurations have been expanded from the previous limit of 120 modules to now support up to 144 modules per tracker. * The new configurations include various module distributions per table, accommodating higher module counts for more flexible design options. **New Configurations Added**: Release 12 03 0 Image3 ## **Bug Fix** ### **Module Orientation for Generic Tracker** The image representing the module orientation for the generic tracker has been updated to reflect the correct positioning. Release 12 03 0 Image4 *** # **Terrain Pro** ## **New Features & Updates!** ### **Terrain Pro DXF extension** Terrain Pro DXF extension is now live and ready for use. With this new extension, users can seamlessly import DXF files for advanced terrain analysis, providing greater flexibility and accuracy in earthwork calculations. **How to Access:** To start using the DXF extension, navigate to the Terabase Apps, select **Terrain Pro**, and follow the prompts to begin your DXF file import. Release 12 03 0 Image5a ### **New elevation Data Selection** Users can now select elevation data for their Terrain Pro analysis from either the polylines with elevation data embedded in their uploaded DXF file or the available satellite data for the project location. * **Data Selection Flow**\ If the imported DXF file includes both polylines with elevation and EPSG code, both tabs will be selectable. By default, the user will start on the **Contour Line** tab with relevant layers already selected. Release 12 03 0 Image6 * **Contour Line and Satellite Data Tabs**\ Depending on the data available in the DXF file, users can create an analysis based on the following table:. Release 12 03 0 Image7 * **Satellite Data Access**\ To utilize satellite data, users must provide the EPSG code for the project to accurately convert the coordinate system in the DXF file to match the satellite elevation data’s coordinates. Without an EPSG code, satellite data will not be accessible. * **Updated Validation Process**\ Elevation data in the `lwpolyline` and EPSG code fields are now optional but require at least one for analysis creation. Release 12 03 0 Image8 If both are missing, users will proceed to the data selection popup, where they must provide the EPSG code to proceed. The EPSG code is now editable directly within the data selection popup. Release 12 03 0 Image9 Release 12 03 0 Image10 * **Satellite Data Tab**\ Displays the latitude and longitude of the site, determined from the first polyline with elevation and EPSG code. Users can edit and search for updated satellite data if the auto-retrieved coordinates seem incorrect. **Why Use the First Polyline’s First Point?** This method offers a quick way to determine coordinates without the processing burden of calculating averages or examining nested block insertion points. Although it’s rare for polylines with elevation in a CAD file to be outside the array area, users have the option to override the retrieved coordinates for accuracy. * **Satellite Data Details** Satellite data entries list the dataset name, pixel size (in meters or feet based on DXF units), and data source. The list is sorted by resolution, from highest to lowest.\ For more details about the satellite data available in Terrain Pro, please refer to the appendix of the Terrain Pro User guide [Terrain Pro user guide | Appendix](https://terabase.atlassian.net/wiki/spaces/PPKB/pages/1339293704/Terrain+Pro+User+Manual?parentProduct=JSM-Portal\&parentProductContentContainerId=10011\&initialAllowedFeatures=disable-login-flow.disable-share\&locale=en-US#Appendix) When a satellite dataset is selected, any previous selection from the Contour Line tab will be automatically deselected, as combining both sources for pile coordinate extraction isn’t supported. ### **Process Variations Based on Data Source** * **Contour Line Selection**: \ The application performs a weeding and supplementing process for polyline points, generates a TIN surface, and extracts ground coordinates for piles. * **Satellite Elevation Data Selection**:\ The application directly extracts rack pile ground coordinates from the satellite dataset without generating a TIN surface. ### **Reveal Window Precision Update** For configurations using the Imperial unit system, the reveal window input has been updated to accept up to two decimal digits, allowing for greater precision in input values. # RELEASE 12.04.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.04.0 December 5th, 2024 # **PlantPredict** ## **New Features & Updates!** * **Direct Access to Terrain Pro** - A new Terrain Pro link has been added to the PlantPredict Navigation Column (for Pro and Enterprise tier users): Release 12 04 0 Image1 1 * **Improved PPP and PPD Import Process** - Mapping modules and inverters within PPP and PPD files to existing module and inverter assets is now easier. During the module and inverter import process, when clicking the “Review Options” button, PlantPredict will automatically search for modules or inverters which match the naming of the module or inverter within the PPP or PPD file. * **Support of Timeseries Data within SDK** - We’ve updated the PlantPredict SDK to support the handling of Timeseries data within predictions. ## **Bug Fixes** * Fixed an issue with the 3D shade scene in Version 12 where the site layout/geometry and shade simulation results would be lost when navigating away from and back to the shade scene page. * Improved Timeseries data compatibility screening during the upload process. Warnings were previously displayed unnecessarily. The upload process is now more flexible and only requires the same number of time steps as present in the weather file. * Fixed a plotting issue within the weather data page so that the data plotted matches the raw data for each timestep. Previously, some conversions were applied to sub-hourly irradiance data to display in kWh/m^2. We know display in W/m^2 so that the plotted data matches the raw data set. * Changed the headings on the 8760 Export files to better represent the data being provided and avoid confusion. Specifically, the Units have been changed from “MWh at POI” to “MW at POI” since sub-hour data timesteps are not divided by the number of timesteps per hour: Release 12 04 0 Image2 1 * Improved batch prediction progress notifications. When running batch predictions, the status would oscillate between “In Progress” and “Pending”. This has been improved. * In the Module File Definition, the Dark Shunt Resistance field validation has been increased from 100,000 Ohms to 1,000,000 Ohms to align with the API validation. # **Design Pro** ## **Bug Fix** ### **Max TT Axis Slope Value Customization Now Supported in Design Pro** **Feature Update:**\ The maximum TT axis slope value can now be customized in Design Pro and accurately passed through to Terrain Pro for analysis. Previously, this value defaulted to 8.5 degrees due to a hardcoded setting, regardless of user input. With this update, users have full control over the max TT axis slope value, which will apply to both `max_tt_axis_slope_north` and `max_tt_axis_slope_south` in Terrain Pro as specified. **Key Fixes:** * Removed the hardcoded max TT axis slope default of 8.5 degrees. * Enabled Design Pro to accept user-defined max TT axis slope values. * Ensured that Terrain Pro reflects the user-entered value in both the north and south axis slope configurations. **Impact:**\ This improvement provides more flexibility in design and analysis, allowing for accurate slope configuration based on specific project requirements. Users can now ensure that their custom max TT axis slope values are respected throughout the entire workflow. ### **Site Boundary Character Encoding Issue Fixed in Design Pro Simulation** **Bug Fix:** \ Resolved a critical issue where simulations would fail when processing site boundaries with certain naming patterns. Previously, character encoding limitations in the database could cause simulation failures when processing layouts with specific boundary names during electrical connectivity calculations. **Key Fixes:** * Updated database character encoding to UTF-8 * Enhanced boundary name processing during KML imports * Improved data validation for site boundary details **Impact:** \ Users can now successfully run simulations with any boundary naming convention, ensuring reliable processing of all site layouts regardless of the boundary names used. # **Terrain Pro** ## **New Features & Updates!** ### **Updated input parameters values for preset rack configurations** All the ***Minimum Pile Reveal*** and the ***Reveal windows*** parameters have been updated as indicated in the table below: Release 12 04 0 Image3 JPG # RELEASE 12.05.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.05.0 December 19th, 2024 # **PlantPredict** ## **New Features & Updates!** * **Improved Weather File Quality Check Process** - All weather data in PlantPredict which is saved as Draft-Private or Draft-Shared may now be brought through the Quality Check process to visually compare against Clear Sky Model data and apply any time shifts as needed. This can be helpful if imported weather data included an undesired time shift relative to the timestamps: Release 12 05 0 Image1 Release 12 05 0 Image1 1 **MapBuilder KMZ Constraints Export** - When exporting KMZ files from MapBuilder, a new multi-geometry polygon layer has been included which encompasses all constraints + setbacks. The layer name is “DC Constraints Setbacks”. Release 12 05 0 Image2 ## **Bug Fixes** * The X-Axis values of the P-Level plot on the Prediction Results Page has been corrected. * The User Sign Out button behavior has been corrected to allow Sign Out with one click (as opposed to two). * Failed Weather Downloads from Vendor APIs can now be deleted. * Improved handling of SolarGIS weather data downloads when SolarGIS API is non-responsive or access denied. A “Download Error” is now displayed: Release 12 05 0 Image3 * Changing the Prediction Status during report download no longer causes an error: Release 12 05 0 Image4 * Improved handling of PPD file uploads from predictions with 3D Shade Scenes defined. # **Terrain Pro** ## **New Features & Updates!** ### **Improved Terrain Pro Homepage** The terrain Pro home page has been updated to * Enhanced user experience across different screen sizes and resolutions. * Optimized pagination for more efficient loading of user data. * Added navigation options to browse through desired number of pages. * Streamlined filters to show user analysis as the default option. * Improved responsiveness for better viewing on various devices. Release 12 05 0 Image5 ### **Delete analysis option** A delete analysis option ahs been introduced to the Terrain Pro homepage, allowing users to permanently delete unwanted analyses from their list. This feature complement the existing archiving feature, giving users more control over their data. Please note that the deletion process is irreversible. ### **Excel file (PVCase BOM) import** Terrain Pro now supports importing Excel files in XLSX format, in addition to DXF files. Users can import PVCase BOM output, which includes comprehensive rack information, pile coordinates, and ground elevation data, creating a streamlines data import process, enhancing the compatibility with PVCase. Release 12 05 0 Image6 Release 12 05 0 Image7 Release 12 05 0 Image8 ### **EPSG Code Validation** During both DXF and XLSX import processes, Terrain Pro now validates the EPSG code entered or edited by the user. The application verifies if the entered code is valid and displays its description to the user. Please note that there is currently no check to verify if the code entered by the user is consistent with the imported data. Release 12 05 0 Image9 ### **Automatic Generation of Original Surface and Rack Projection Layers** When importing data from DXF or XLSX files, Terrain Pro now automatically creates the Original Surface and Rack Projection layers during the initial data processing. These layers are available in the Terrain Pro Configuration page, even before running any configurations. By default, the application will display the Rack Projection layer when opening the Configuration page, provided no configurations have been run previously. Release 12 05 0 Image10 ## **Bug Fixes** * Resolved an issue with the Reset Project Location feature in Terrain Pro, ensuring it functions as expected. # RELEASE 12.06.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.06.0 January 16th, 2025 # **PlantPredict** ## **New Features & Updates!** * **3D Shade Scene Validation** - The 3D Shade Scene now displays a comparison between the total PV module surface area (as defined in the Prediction DC Fields) and the calculated surface area of the PV collector shade objects defined in the PVC file upload. This is a helpful sanity check to ensure the system design specified in the DC Fields oof the prediction are aligned with the system design in the shading scene. The delta between calculated areas does not prevent the prediction from running under any circumstances. However, the text color will change as follows: * White Text (Delta \<= 10%) * Orange Text (10% \< Delta \<= 25%) * Red Text (Delta > 25%) Release 12 06 0 Image1 * **New Solcast Weather Integrations** - New 15 min interval (PT15M) weather data accessible from Solcast. (Note - Solcast subscription and API key required to access through PlantPredict). Release 12 06 0 Image2 * **UI Decimal Precision Improvements** - Within the UI, a maximum of three decimal places of precision are now displayed by default for all user-entered fields. When a field is clicked and becomes active, a higher precision value is displayed if user-entered or calculated. In all cases, the higher precision value is what is used within the prediction. The lower precision value is for display purposes only in the UI: Release 12 06 0 Image3 * **Project and Prediction Import Improvements** - Project or Prediction imports will now force review of inverters or modules missing any necessary data to create them. ## **Bug Fixes** * Within the 3D Shading Scene, the Beam Shading Average Percent value now displays immediately upon completion of the shading simulation. Previously, this would display 0.00% initially and eventually would update within the UI to the correct value * At extremely low inverter power levels, the inverter model would sometimes result in negative output current \< -1mA. This is now set to 0A in the Nodal data export * API parameters `blockGrossEnergy` and `plantGrossEnergy` are now calculated correctly for sub-hourly predictions. # **Terrain Pro** ## **Bug Fixes** **Rack navigation using the arrow controller** Resolved an issue where the navigation button in the tracker profile occasionally moved to the incorrect rack on the map. The navigation now functions properly. **PVC file generation** Updated the PVC file generation process to correctly account for the hemisphere where the array is located. **Rack profile viewer not working with negative elevations** Enhanced the rack profile viewer to handle cases where the elevation is less than zero. The hatch representing the existing and proposed grade now always starts from the x-axis and extends to the lines representing the gradings. Release 12 06 0 Image4 Release 12 06 0 Image5 ## **Fixed Features** #### **GFT Rack Representation in PVC File** The Ground Fixed Tilt (GFT) racks are now correctly represented in the PVC file with the appropriate tilt angle as provided in Design Pro. Release 12 06 0 Image6 *** # **Design Pro** ## **Bug Fixes** #### **Unit Typos in the Design Pro BOM** Corrected unit typos in the Design Pro Excel BOM. The unit is now consistently displayed as m² instead of m2. #### **Incorrect Number of Inverters in the GCR-Capacity Chart** Fixed an issue where the GCR-Capacity chart displayed an incorrect number of estimated inverters. The chart now shows the accurate count. # RELEASE 12.07.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.07.0 February 6th, 2025 # **PlantPredict** ## **New Features & Updates!** * **Improved Progress Loading Notifications**- We’ve greatly improved the reliability and responsiveness of our queue position and progress loading bar notifications for prediction runs, weather file downloads and 3D shade scene calculations. * **Improved Weather File Page Responsiveness** - The retrieval of weather file records from user’s weather database has been streamlined to improve speed and responsiveness. Improvements have been made in how the weather database is queried and the weather page now defaults to being filtered by “My Weather” when opened to reduce the total number of records and display the data which is typically most relevant to the user. * **Disabled Meteonorm Automated Downloads** - By default, we’ve disable automated Meteonorm TMY file downloads upon new Project creation. Previously, the creation of a new Project would automatically trigger the download of a Meteonorm weather file for the project latitude and longitude. This resulted in many duplicate and unused weather files. ## **BUG Fixes** * Fixed several issues related to NSRDB PSM weather download errors * Fixed an issue where cancelling a prediction when running with a legacy DC Field 3D scene leads to a prediction error. * Fixed an issue where the SolarGIS API key for TMY and PVPlanner were not being retained upon save. These are now both retained. * Fixed an bug related to PVC file upload errors. * Fixed the units label (kWh/m^2) on the Block Results chart. *** # **Terrain Pro** ## **New features & updates!** **CSV file import feature** - We are excited to announce a new feature in Terrain Pro that enables users to import and process CSV files, similar to the existing functionality for DXF and Excel files. This enhancement provides greater flexibility and aligns Terrain Pro with Mercator, Terabase's internal tool. Release 12 07 0 Image1 1 Key highlights of the CSV import feature: * Two-step validation process to ensure data integrity * Support for files with 5 or more columns * Automatic mapping configuration based on saved user preferences * Intuitive preview and mapping modification options * Seamless data import into Terrain Pro after validation and mapping Release 12 07 0 Image2 Please refer to the updated documentation for detailed instructions on importing CSV files into Terrain Pro. **Heatmap and contour line improvements** - We have addressed an issue where noise appeared in heatmaps and contour lines at the edges of irregularly shaped site layouts in Terrain Pro. This was caused by incorrect surface assumptions when connecting pile-level data at the perimeter. The algorithm for handling edge data has been enhanced, resulting in the following improvements: * Smooth and accurate heatmaps and contour lines at site layout perimeters * Elimination of visual artifacts and noise * More precise representations of terrain at the edges Release 12 07 0 Image3 Release 12 07 0 Image4 This fix is immediately available in the latest version of Terrain Pro **DXF data processing optimization** - We have implemented an improvement in how Terrain Pro retrieves block information from DXF files. Instead of relying on the block info section, which could be corrupted in certain cases, the application now extracts block information directly from the model space of the CAD file. Benefits of this optimization include: * Increased flexibility when reading DXF files * Improved compatibility with files generated by various tools * More robust handling of purged or non-standard DXF files This enhancement is automatically applied when importing DXF files into Terrain Pro. Users can expect a smoother and more reliable experience when working with DXF data. \*\*Elevation surface layer toggle removal \*\*- the Elevation Surface Layer toggles have been removed from the toolbar. Users can toggle these layers directly in the middle of the screen, eliminating redundancy and potential confusion. ## **Bug fixes** **Report template update** - The Terrain Pro report template has been updated to refer to the application as "Design Pro" instead of "Development Platform". *** # **Design Pro** ## **New features & updates!** **Enhanced scenario comparison** -The scenario report comparison has been updated to add into the “User inputs” section for the PV module: * Module ID * Module name for the inverter: * Inverter ID These enhancements leverage the data from the PlantPredict libraries used by Design Pro, providing users with more comprehensive insights when comparing scenarios. The same updates are also reflected in the comparison file in Excel format. Release 12 07 0 Image5 **Spectral shift factor** - A new feature has been introduced in the losses menu, allowing users to select from three different models to calculate the spectral shift loss factor: * None * Param Pwat or Sandia * Param Pwat and AM This addition enables users to choose the most appropriate model for their specific project requirements. Release 12 07 0 Image6 ## **Bug fixes** **GRC-Capacity Page Inverters Calculation** - An issue has been resolved where the inverter quantity cell was not updating correctly when the AC capacity was provided by the user on the GRC-Capacity page. The bug has been fixed, and the inverter quantity now updates accurately based on the user-provided AC capacity. Release 12 07 0 Image7 **KML File Reading Improvement** - We have implemented a new logic to handle KML/KMZ files where the geometries representing boundaries are designed as single lines instead of multi-geometry. Design Pro can now successfully read these files and represent the geometries on the map. Please note that if the geometries are not "closed," Design Pro will always consider them as roads or linear exclusions. *** # **Voltage Pro** ## **Bug fixes** **Existing String Calculations Accessibility** - A bug affecting a limited number of users, where previously run string configurations were no longer accessible, has been resolved. Users can now access their existing string calculations without any issues. # RELEASE 12.08.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.08.0 March 20th, 2025 # **PlantPredict** ## **New Features & Updates!** **CSV Export for Terrain Pro** - It is now possible to export a Terrain Pro formatted CSV file from Mapbuilder for any array layout. The CSV file will contain rack location data and estimated pile locations within each rack. It will also contain elevation data for each pile location. This CSV file can be imported into Terrain Pro to begin earthwork and pile analysis simulations: Release 12 08 0 Image1 1 ## **BUG Fixes** * Fixed an issue where PVC files generated from MapBuilder using Fixed-Tilt racking had rack geometries in which the tilt angle was different from user specified tilt angle for the prediction. * Fixed a MapBuilder KMZ import issue where PlantPredict generated KMZ files with constraint setbacks leads to failed import process. *** # **Terrain Pro** ## **New features & updates!** **PVC Export for Terrain Pro**: Terrain Pro now supports exporting detailed PVC files from imported DXF designs. For racks with zero slope change between the bays, racks are exported as single-plane structures using the outer boundary from DXF files directly. For arrays with slope change withing the bays, racks are exported using standard parameters for table gap and motor gap. These PVC files can be directly utilized in subsequent design stages and simulations in PlantPredict. *** # **Design Pro** ## **Bug fixes** * **EPC Cost Service Bug Fixes-** We’ve performed a major overhaul of the EPC cost service to fix numerous bugs including: * User input for “Other Fixed Costs” was not being properly passed to the cost estimate service. This has been fixed. * User input for “Interconnection Cost” was not being properly passed to the cost estimate service. This has been fixed. * Sum of cost line items within EPC Cost Estimate Excel download did not match Total EPC Cost (\$/Wdc) from scenario results. This has been fixed. * EPC Cost Estimate Excel download erroneously included duplicate entries for “Communication and Monitoring Install. This has been fixed. * Cost for Inverter Skid Support piles were missing from the Pile Material Cost line item. This has been fixed. * Racking Installation Cost line item has been updated to account for Small Tools and Supplies cost * Contingency Cost line item was previously \$0 and accounted for within Contractor Overhead, Profit and Insurance line item. This has been removed from the Contractor Overhead, Profit and Insurance line item and now accounted for in the Contingency Cost line item. * Fixed a bug in which DC and AC trenching costs were reversed under certain conditions * The Quantity of Meteorological Stations is now calculated based on IEC standard using MWdc and reported on BOQ Excel export. Previously this always defaulted to 2 stations. * Construction End Date within UI EPC Cost pop-up window is now updated when the Construction Start Date is edited. Previously, this was only updated when the “MWdc Installed per day” was edited. * Fixed a bug where costs for cloned simulations were not being passed correctly to the cost estimate service. # RELEASE 12.09.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.09.0 April 3rd, 2025 # **PlantPredict** ## **New Features & Updates!** \*\*SolarAnywhere Updates: \*\*PlantPredict access to SolarAnywhere weather data has been updated, including: * Version 3.8 data is now accessible and may now be downloaded through PlantPredict * Version 3.2 and 3.3 have been deprecated and are removed as download options * “Clean Power Research” has been replaced by “SolarAnywhere” * Coverage Area map, description and link to SolarAnywhere source has been updated ## **BUG Fixes** * Fixed the surface area comparison check calculation within the 3D shading scene. This calculation compares the module surface area from the 3D scene against the module surface area from the DC Fields. Previously, this was miscalculated for racks defined in the DC Field with more than one module up (high). * Corrected UI behavior associated with upload of a new PVC file within the 3D shading scene. Previously, if a PVC file was uploaded and then a 2nd PVC file was uploaded, the new PVC file would not be rendered until the browser window was refreshed. * Corrected the rendering of PVC files in the southern hemisphere. * Corrected the 180 degree rotation feature. This option now rotates the geometry of the scene by 180 degrees and re-orients the rotational axis for tracking systems but does not affect the sun position of the scene. # **Voltage Pro** ## **New Features & Updates!** \*\*Enhanced Pagination Layout: \*\*Improved the landing page with a new pagination layout, filtering, and searching capabilities, consistent with the styling used in Terrain Pro. \*\*Improved Performance: \*\*Enhanced project list responsiveness with faster loading times and smoother navigation, especially when handling large project sets. # **Terrain Pro** ## **New Features & Updates!** * \*\*EPSG Service Integration: \*\*Introduced a new EPSG validation and lookup service, providing quick and accurate identification of EPSG codes based on user inputs or geographic coordinates. This update enhances accuracy and streamlines workflows for Terrain Pro users. * \*\*Enhanced DXF Import: \*\*Improved the DXF Extractor to calculate and store relative coordinates for piles and bays directly from CAD files. This data integrates seamlessly with existing PVC file generation processes, enabling precise and efficient project designs. ## **BUG Fixes** * \*\*DXF Import: \*\*Blocks starting with "\*U" (typically temporary or copied blocks created by CAD) are now filtered out from the pile and rack block lists in the DXF import popup. * \*\*EPSG Recognition Issue: \*\*Resolved an issue where the continue button was disabled if the EPSG code wasn't recognized by the previous EPSG service. With the new EPSG service integration, users can now proceed without interruption. # **Design Pro** ## **BUG Fixes** * \*\*EPC Cost User Inputs: \*\*Fixed an issue where modified, saved, and cloned EPC cost user inputs were not being correctly passed to the Cost Service. * \*\*Weather and Soiling Station Calculation: \*\*Updated logic for calculating the quantity of weather and soiling stations to comply with IEC 61724 standards, ensuring accurate counts for all system sizes, including those under 50MWdc. # RELEASE 12.10.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.10.0 April 24th, 2025 # **PlantPredict** ## **New Features & Updates!** **Wind Stow**: Two wind stow models are now available. These models allow you to incorporate the effect of stowing due to high wind speeds on the energy prediction and yield. To facilitate these models, PlantPredict weather files now support the inclusion of wind gust speed data. Both models use wind gust speed data from the weather file as well as several new user inputs in the PV Blocks & Arrays →DC Field → Table specification page to determine whether the trackers should be in a wind stow position or not. Wind gust speed data is typically provided as the maximum 3s gust speed at a 10m elevation by solar weather data providers. The two wind stow models are: * **PlantPredict**: Requires wind gust speed weather data using any timestep interval. * **Array Technologies:** Requires wind gust speed and wind direction weather data, time intervals \<= 5min and valid Array Technologies API key. Data is passed to Array Technologies API to determine stow angles using Array Technologies proprietary algorithms. See [Wind Stow Model Documentation](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/2251948078) for more information. Release 12 10 0 Image1 **NSRDB Upgrade:** We’ve upgraded to NSRDB version 4 for all NSRDB weather data downloads from the PlantPredict weather page. ## **BUG Fixes** * Fixed a bug affecting data entry on the module file Saturation Current at STC field within the 1-diode parameters. This field is no longer rounded, greater decimal precision is afforded and editing this field no longer generates an error. * Corrected the SolarAnywhere coverage map. * Corrected a typo “Grid Intertie Voltage” on the Compare Predictions page. # **Pro Tools** ## **New Features** * **PVC JSON Data Storage**: Implemented storage and retrieval system for PVC file generation requests, enabling better data persistence and management ## **Improvements to existing features** * **Voltage Pro UI Refactor**: Completed UI modernization for the Voltage Pro tool, improving usability and visual consistency * **Pile Configurator Production Release**: Finalized and deployed the Pile Configurator tool to the production environment ## **Bug fixes** * **Weather File Selection Fix**: Resolved an issue in Voltage Pro where weather file selection functionality was broken # RELEASE 12.11.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.11.0 May 15, 2025 # **Pro Tools** # **Terrain Pro** ## **New features** * Project concept added to Terrain Pro. Now when creating a Terrain Pro analysis is possible to create a project or attach the imported CAD data to an existing PlantPredict project. * Inverter data extraction from DXF. # **Design Pro** ## **New features** * Inverter data passed from Design Pro to Terrain Pro ## **Bug fixes** * Inverter nominal power correctly updates when the power factor is changed. * Inverter nominal power value correctly shown in the Array layout PDF. * Partial racks incorrectly placed where a full rack was expected to fit, creating holes in the layout.   # **PlantPredict** ## **Weather Vendor Updates:** * Wind Gust data is now available for the following vendors and data models: * SolarAnywhere (v3.8 & v4.0) * Solcast PT60M & PT15M * Added support to provide GHI and DNI weighting for Solcast download requests Release 12 11 0 Image1 * Fixed an issue where SolarGIS uploads would error due to an unexpected summarization type. * SolarAnywhere v4.0 data model is now available. # RELEASE 12.12.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.12.0 June 5th, 2025 # **PlantPredict** ## **Improvements** * **Voc Derivation Improvement (Version 12 only)**\ Previously, there were edge cases for certain modules in which the single diode model derivation of Voc would not converge under specific weather conditions. We have kept this Voc derivation process exactly the same. However, if the existing model does not converge, a new process is initiated which searches for a valid Voc with smaller voltage steps and increases the likelihood of finding a valid Voc. This update is applicable to V12 only. ## **Bug Fixes** * Version 12 DC Field Nodal Data has been corrected to resolve an issue where the column data was not matching the column headers after column 'AI'. * Corrected an issue in MapBuilder where the target DC/AC ratio from the UI was not being used correctly for partial array blocks when the Custom Array Editor is enabled. Going forward, the DC/AC ratio in the Custom Array Editor will be used for all full arrays and the target DC/AC ratio in the UI will be used for all partial arrays when the Custom Array Editor is enabled. * Disabled decimal rounding within the BESS Cycling Degradation input field. * Corrected data mapping for weather files retrieved from Solcast API. This was incorrectly implemented in release 12.11.0 when new features were added. # **Pro Tools** # **Terrain Pro** ## **New features** * **Integrated Pile Configurator Access**\ Users can now open the **Pile Configurator directly from Terrain Pro**. Project data is automatically passed to the configurator, and any edits made to pile properties are saved in real time. When users return to the configurator, their work is preserved—no more restarting from scratch. * **Add CAD Data to Company Projects**\ Users can now **upload and associate CAD files** (e.g., DXF,PVCase BOM or csv extracted from CAD) within their company projects, enhancing collaboration and project documentation. ## **Bug fixes** * **TT Axis Max Slope in Summary Reports**\ The **maximum TT axis slope** value is now correctly populated in both the on-screen Summary Report and the downloadable Excel file. # **Design Pro** ## **New features** * **BESS Input Field Added**\ A new **Battery Energy Storage System (BESS)** set of inputs is now available, supporting energy simulations with BESS. The same BESS inputs from PlantPredict are mirrored in Design Pro. * **Layout Cloning Enhancement**\ When **cloning an existing simulation**, the **layout data is now carried over** to the new simulation—eliminating the need to re-run the GCR-Capacity process. # RELEASE 12.13.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.13.0 June 26th, 2025 # **PlantPredict** ## **Improvements** * **Sub-Hourly Energy Storage Modeling**\ We’ve improved PlantPredict’s energy storage model by now supporting sub-hourly modeling of the charging and discharging of battery energy storage systems. The energy storage model uses the same weather file time interval as the PV energy model and when this is sub-hourly, the energy storage system now accurately tracks state of charge (SOC) at a sub-hourly interval. * **Clone to Block-Builder (from Map Builder)**\ We’ve added a new option from the Map Builder interface within the prediction to “Clone to Block Builder”. This clones the prediction and converts it to a Block Builder prediction in one step and avoids the accidental erasure of the Map Builder prediction and associated GIS data. Release 12 13 0 Image1 * **Reduced .PPD File Size**\ We’ve changed the prediction export process to greatly reduce the .PPD file size (which can become quite cumbersome for predictions with sub-hourly or multi-year weather data). Previously, the weather data was included in the .PPD file export. Now, weather data is saved in a separate file storage area on the cloud and the .PPD includes a weather file key to map to the weather data. * **Improved Batch Prediction UX**\ The progress bar now appears sooner to indicate actual state of processing faster ## **Bug Fixes** * Fixed a bug on the Results Page for multi-year predictions. Previously, the 12x24 matrix of results did not include data for Year 1, including the case when a single year of data spanned two calendar years. * Fixed an issue on the Plant Summary 8760 Excel download file where the soiling loss decimal precision was rounded to the nearest whole number within the Environmental Conditions section. These values are no longer rounded. # **Pro Tools** # **Design Pro** ## **Improvements** * **Buildable area added to the layout report in pdf** The buildable area has been added to the layout report in the PDF downloadable from the application. Release 12 13 0 Image2 * **GCR-Capacity Performance Boost**\ The **GCR-Capacity analysis tool** has been significantly optimized, delivering results **up to 6× faster** than before. # RELEASE 12.14.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.14.0 July 24th, 2025 # **PlantPredict** ## **Bug Fixes** * Fixed an issue where SolarAnywhere version 3.4 through 3.7 were leading to download errors. This was related to the lack of wind gust data in these versions. This has now been resolved. Note that Wind gust data is available for SolarAnywhere version 3.8 and above. * Elevation and Time Zone have been disabled as inputs during weather file upload. This was previously leading to confusion as the modification of these fields had no impact on the weather file upload. Both fields are automatically detected and set based on latitude and longitude. The fields have been disabled to avoid confusion as they are not inputs. * Fixed an issue where the changing of a weather file after a 3D scene had been modified resulted in erroneous tracker angles in some cases (i.e. when the timestamps of the new weather file were different than the previous weather file). Now, changing the weather file correctly updates the tracker rotations in the 3D shade scene. * Fixed an issue where hourly weather files with timestamps on the half hour (i.e. 00:30, 01:30, etc.) would cause an error in rendering of the 3D shade scene. # **Pro Tools** # **Design Pro** ## **Improvements** * **DXF File Export of Array Layout**\ An array layout in DXF format is now included in the results download Zip package. This can be opened in AutoCAD and includes boundaries, roads, setbacks, inverters, combiners, racks and piles. Additionally, for systems designed using 1P multi-string racks, the drawing categorizes each rack based on wind exposure as follows: * **EXT** (Exterior): Racks with insufficient east-west coverage * **EPNS** (Edge Protection North-South): Interior racks with limited north-south neighbors * **EPN** (Edge Protection North): Interior racks with limited northern neighbors only * **EPS** (Edge Protection South): Interior racks with limited southern neighbors only * **INT** (Interior): Fully protected racks with complete surrounding coverage Release 12 14 0 Image1 1 # RELEASE 12.15.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.15.0 August 14, 2025 # **PlantPredict** ## **New Features and Improvements!** * **3D Shade Calculation Speed Enhancement:** We’ve completely revamped our 3D shade engine to to reduce calculation time without sacrificing accuracy! The new calculation engine provides a giant leap forward in shade calculation time for PlantPredict and the large-scale solar industry. Our internal benchmarking is showing speed improvement on the order of 50x faster than version 12.14.0 for a 100MW terrain-following tracker system on complex terrain using full precision, detailed mode (e.g., no sun binning). Similarly, we are clocking dramatically reduced processing times compared to the industry-leading desktop performance model for systems over just a few MW. Release 12 15 0 Image1 * **3D Shade Object Rendering:** The 3D shade scene now supports the rendering and inclusion of non-PV objects within the shade calculations. These need to be supplied within the PVC file upload. When present, they will be rendered in the scene and will be included in the shade calculations. Release 12 15 0 Image2 * **Smooth and Responsive 3D Scene Pan and Zoom:** We’ve greatly improved the rendering of 3D scenes and shadow casting to reduce stress on your browser memory. Panning and Zooming within the scene is now much more responsive to user control making for a better user experience when inspecting shadow casting and heatmaps. * \*\*New Map Builder CSV Array Area Export: \*\*It is now possible to export a CSV file containing a breakdown of system information for each array area. For each boundary area, this includes the total land area, buildable area, MWdc, module quantity and rack quantity. Release 12 15 0 Image3 * \*\*PLP-1000 Background View Toggle: \*\*It is now possible to toggle between satellite view and terrain view for the PLP-1000 array layout export. ## **Bug Fixes** * Fixed an issue where the Run Log page could become unresponsive when many predictions are being run simultaneously (via API for example). # **Pro Tools** # **Terrain Pro** ## **Bug Fixes** * Fixed an issue where Terrain Pro would not recognize a mapping schema for CSV imports. # **Voltage Pro** ## **Bug Fixes** * Fixed an issue where Voltage Pro would improperly configure the prediction in PlantPredict when a weather file was chosen without DHI. Now, if a weather file is chosen without DHI from within Voltage Pro, the prediction correctly handles this situation by using the DIRINT decomposition model. # RELEASE 12.16.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.16.0 September 5th, 2025 # **PlantPredict** ## **New Features and Improvements!** * **New 3D Interface and Workflow:** We’ve completely revamped our 3D workflow to simplify the user experience and put all 3D controls associated with the 3D scene and calculations on one page. You can now load custom tracker rotations or queue up terrain-aware backtracking calculations in conjunction with running 3D transposition and shading calculations. These calculations are automatically integrated into the energy yield prediction. Release 12 16 0 Image1 * **Enhanced 3D Heatmaps:** We now provide four heatmaps (DNI weighted losses/gains) which can be viewed on an absolute or relative scale: * Beam Irradiance Shade Loss * Shade Electrical Effect Loss * Transposition (POAI) Loss/Gain * Combined Loss/Gain Release 12 16 0 Image2 * **3D Transposition:** A tilted plane transposition modifier is automatically calculated for each PV surface for each time interval. This is automatically integrated into the energy yield prediction and can be viewed in the DC Field Nodal Data under “Transposition Factor”. * **Improved 3D Shade Electrical Effect Calculations:** The electrical effect of shade is now accounted for separately for each PV surface as opposed to the whole scene. This results in a more granular and accurate accounting of the non-linear effect of shade at the site level. * **Terrain Aware Backtracking and Custom Rotation Schedules:** It is now possible to run predictions where each tracker is rotated independently. The rotation schedule can be calculated automatically to avoid row-to-row shading or can be derived outside of PlantPredict and uploaded via a custom CSV file. When independent tracker rotations are used, it is also possible to view these within the 3D scene. Release 12 16 0 Image3 Release 12 16 0 Image4 * **Create 3D Shade Objects in Map Builder**: It is now possible to easily create 3D shading objects within your 3D scene from within Map Builder. This can be done by editing the properties of exclusions as follows: * Area Exclusions (height property) * Linear Exclusion (height and width properties) * Point Exclusion (height and width properties) Release 12 16 0 Image5 * **New PVRADAR Soiling and Cleaning Extension:** The PVRADAR application for module soiling and cleaning analysis can now be bundled and purchased with PlantPredict for Pro and Enterprise license customers. There are numerous integrations between PlantPredict and PVRADAR to take advantage of when you bundle. Pricing information can be found here: [Pricing | PlantPredict](https://plantpredict.com/pricing/) and you can read more about these integrations and the PVRADAR application here: [https://pvradar.com/partners/terabase](https://pvradar.com/partners/terabase) ## **Bug Fixes** * Fixed an issue where predictions from other users and/or projects within the same company could briefly and temporarily show up within the wrong project. This should no longer occur. * Fixed an issue where Company Admins were unable to generate API credentials under certain circumstances, such as when a license tier had changed.   # **Pro Tools** # **Design Pro** ## **New Features and Improvements!** * **Weather file name displayed**: Weather file names from PlantPredict are now displayed consistently in Design Pro, ensuring that user-defined names carry over for improved traceability and easier identification of the correct weather datasets. Release 12 16 0 Image6 Release 12 16 0 Image7 ## **Bug Fixes** * **DXF Project Summary Block**: Fixed an issue where MWAC and MWDC values were displayed incorrectly in the Project Summary block of exported DXF files. Values now match the simulation outputs for accurate reporting. Release 12 16 0 Image8 # **Terrain Pro** ## **New Features and Improvements!** * **New Viewer for Heat Maps and Layers:** Terrain Pro now delivers a faster, more reliable experience when working with project visualizations. Heat maps and other layers are always available instantly without the need for periodic regeneration, making it easier to revisit and analyze projects at any time. The new viewer is optimized to handle very large datasets (including projects with over **300,000 piles**) and supports rendering of advanced layers such as the pile icon layer generated from the Wind Exposure feature. These improvements make Terrain Pro more stable, efficient, and better suited for managing complex, large-scale projects. Release 12 16 0 Image9a \ Looking ahead, this new viewer also lays the foundation for enhanced earthwork heat maps and surface layers with **accurate, realistic 3D visualizations of array layouts**, including pile extrusions and rack bay placement, providing a more faithful representation of the design. * **Wind Exposure and Pile Type Assignment**: Terrain Pro now automatically determines rack wind exposure and assigns pile types based on predefined configurations. The system runs the wind exposure analysis in the background using fixed parameters and applies a standard set of rack variants: **Interior, Exterior, Exposed to South, Exposed to North, and Exposed to North & South**. This ensures consistent and accurate pile type assignment across projects without requiring manual setup. While the input parameters and rack configurator are not yet exposed in this release, they will be introduced in an upcoming update, enabling users to customize wind exposure settings and rack type configurations for even greater flexibility. Release 12 16 0 Image10 * **DXF Integration – Wind Exposure Assignment and Export**: Export to DXF has been extended to include **projects imported directly into Terrain Pro via DXF files**. Previously, DXF exports with rack blocks showing wind exposure assignments and pile blocks based on rack variants were only available for analyses created in Design Pro. With this update, the same capability is now supported for DXF-originated analyses: the exported DXF layout includes rack blocks with calculated wind exposure information and pile assignments determined from the fixed rack variant configuration. A future release will introduce a configurator to let users customize rack variants and wind exposure parameters for fully tailored DXF outputs. Release 12 16 0 Image11 ## **Bug Fixes** * **Terrain Pro / Pile Configurator: Units Mismatch**: Fixed an issue where Terrain Pro and Pile Configurator displayed inconsistent units. Now, when the input configuration is in imperial (ft), Pile Configurator correctly shows values in feet. * **Terrain Pro: Heatmap Legend in PDF Reports**: PDF reports generated from Terrain Pro now automatically include the heatmap legend, ensuring consistency with the in-application view. This provides clearer context and improves readability for stakeholders reviewing offline reports. # **Voltage Pro** ## **Bug Fixes** * **Project Creation Loader Issue Fixed**: Resolved an issue where project creation could get stuck loading indefinitely when no weather data was available for the selected location. The system now creates the project immediately, then fetches the nearest available weather file in the background. In addition, the weather file search radius has been enhanced: if no data is found within the initial range, the search radius expands stepwise up to **700 km**. This ensures that projects can always be created successfully and that the closest possible weather file is retrieved, improving both reliability and user experience. # RELEASE 12.17.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.17.0 September 25th, 2025 # **PlantPredict** ## **New Features and Improvements!** * **New Electrical Shading Effect Model**: We’ve introduced a new non-linear Electrical Shading Effect model “Step Fractional Electrical Shading” which provides improved modeling of the non-linear effect of partial shading on modules and strings than the legacy “Fractional Electrical Shading” model. Currently, this new model is only available in Version 12 within the 3D Calculation Settings but will be rolled out more broadly in an upcoming release. When selected, the user is prompted for the Number of Horizontal Step Fractions per Bay. This input creates a number of “fractional partitions” within the bay and is intended to model the shade response behavior of series/parallel connected bypass diode circuits of module strings. Additional documentation and guidance will be provided in the coming weeks on how this functions. For now, the following guidance is recommended: | **Cell Material / Bypass Diode Arrangement** | **Module Configuration** | **Recommended 3D Direct Shading Model** | **Recommended Number of Horizontal Step Fractions per Bay** | | :----------------------------------------------------- | :----------------------- | :-------------------------------------- | :---------------------------------------------------------- | | Thin Film (i.e., First Solar Series 6 or 7) | Portrait | Linear | N/A | | Silicon / Full Cell (3-Bypass Diodes) | 1 Up Portrait | Step Fractional Electrical Shading | 1 | | Silicon / Half-Cut Cell (3-Bypass Diodes) | 1 Up Portrait | Step Fractional Electrical Shading | 2 | | Silicon / Half-Cut Cell (3-Bypass Diodes) | 2 Up Portrait | Step Fractional Electrical Shading | 4 | | Silicon / Full Cell or Half-Cut Cell (3-Bypass Diodes) | 1 Up Landscape | Step Fractional Electrical Shading | 3 | | Silicon / Full Cell or Half-Cut Cell (3-Bypass Diodes) | 2 Up Landscape | Step Fractional Electrical Shading | 6 | | Silicon / Full Cell or Half-Cut Cell (3-Bypass Diodes) | 4 Up Landscape | Step Fractional Electrical Shading | 12 | * **3D Scene File Process Loader:** When uploading PVC files into PlantPredict, we’ve added a new file process loader to better communicate loading time. ## **Bug Fixes** * 3D Transposition calculations are now operational for Fixed-Tilt systems. * Including the Bounding Box Simplification of 3D objects within the 3D shade scene calculations previously had no effect but is now implemented and working correctly. * The Module Irradiance Loss within the loss tree was incorrectly being reported when 3D scene calculations were run. This did not affect the total energy yield but did affect the Module Irradiance Loss magnitude in the Loss Tree. This has now been fixed. * Corrected an issue where 3D scene calculations would fail if DNI or DHI were not present in the weather data. * Corrected several file formatting issues related to user-defined tracker angle schedules for 3D scenes that were generating errors when being uploaded or when used in the 3D calculations. # **Terrain Pro** ## **New Features and Improvements!** * Rack and Pile Summary Tables: Rack Type (Wind Exposure) and Pile Summary data tables have been added to the viewer Right Pane menu: Release 12 17 0 Image1 * **Pile Configurator Imported / Wind Exposure Data View:** It is now possible to toggle between Imported and Wind Exposure Pile Bins in the spatial viewer: Release 12 17 0 Image2 * View Rack Wind Exposure: It is now possible to view wind exposure per rack using the On/Off Toggle with Rack Projection’s turned on: Release 12 17 0 Image3 ## **Bug Fixes** * When importing Terrain Pro Datasets in imperial units (feet), the legends of several Terrain Pro viewer heatmaps displayed incorrectly as meters. This has been fixed. * Corrected a units issue within the Terrain Pro viewer for Pile Data where the legends and Top of Pile and Pile Reveal values were in incorrect units of measure. This has been fixed. * Corrected an issue with the download / export function for the Earthwork CSV Collection which was previously not generating the file for download.   # **Design Pro** ## **Bug Fixes** * Fixed several KMZ import issues. * Added W6x8.5 pile size. # RELEASE 12.18.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.18.0 October 23, 2025 # **PlantPredict** ## **Version 12 (Stable Release) is Officially Launched!** After 1+ year in Beta testing mode, Version 12 is officially released and will be the default logic version for new predictions going forward. Version 12 represents a significant step forward in modeling capability over Version 11. Please join us on November 4th for a webinar where we’ll discuss the latest features of Version 12 with an emphasis on our new 3D modeling features: [Signup here](https://register.gotowebinar.com/register/5643195501284865885?source=terabase-email-full-list). Release 12 18 0 Image1 A high-level recap of major new features included in Version 12, includes: * **New 3D Modeling Environment (Fully API Accessible):** * Site-level 3D scenes (PVC and SHD file imports) * Shade visualization for every timestep in your weather file * Heatmap visualizations of 3D shade calculation results * Fast, accurate and validated 3D beam irradiance shade calculations * Three sun position binning options for even faster shade calculations (Detailed, Balanced, Quick) * Beam shade factor table CSV export for direct PVsyst comparison (10deg Sun Height x 20deg Sun Azimuth) * New non-linear shade electrical effect model (Step Fractional) * 3D transposition (POAI) calculations for Beam, Diffuse and Ground components * New terrain-aware backtracking model * Support for user-defined, non-uniform tracker rotation schedules * Support for fixed-tilt, standard and terrain-following tracker modeling * Support for modeling shading from 3D objects (i.e., trees, wind turbines) * See our [3D Shade Scene and Calculations](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/1560936459) page in our User Guide for more information * **New Wind Stow Modeling (Fully API Accessible):** * Wind gust data now supported for weather files * Two wind stow models to choose from: * PlantPredict wind stow model * Array Technologies wind stow model (requires separate ATI API key) * See our [Wind Stow Models](https://terabase.atlassian.net/servicedesk/customer/portal/3/article/2251948078) pages in our User Guide for more information * **Improved AC Collection Circuit Loss Modeling** **(Fully API Accessible)**: * More realistic non-linear resistive loss model replaces legacy fixed-percentage loss model * See our [AC Collection System](https://terabase.atlassian.net/servicedesk/customer/portal/3/topic/c36a0aae-0975-4773-b870-32230f10f356/article/1292009499) page within our Models & Algorithms Guide for more information * **Sub-Hourly Battery Energy Storage Modeling (Fully API Accessible)** * **Numerous Weather File Integration Upgrades (Fully API Accessible)** * **Map Builder Improvements:** * 3D design export in PVC format * Support for the creation of 3D shade objects ## **Improvements and Bug Fixes in V12.18.0** * **Logic Version 12 is Default** - Logic Version 12 is now the default logic version for new predictions created. Additionally, for API and SDK users, if not explicitly specified in the API call, new predictions will default to logic version 12. * **3D Transposition Applied to Each Irradiance Component -** When running 3D calculations, the effects of non-uniform orientations on Plane of Array Irradiance (POAI) are now calculated and applied separately for each irradiance component (Beam, Diffuse and Ground). The 3D Corrected Irradiances are now reported in the DC Field Nodal Data for each component. * **3D Correction to Transposition on POA Quantified in Loss Tree** - On the Prediction Results page, the loss tree now includes a new parameter **3D Correction to Transposition on POA %**. This factor quantifies the loss or gain associated with the non-uniform 3D orientations in the 3D scene. Release 12 18 0 Image2 1 * **New Shade Factor Table Export -** Users may now download a Beam Irradiance Shade Factor Table for direct comparison against PVsyst. *Note - This download is only available for Fixed-Tilt and Trackers using Standard Backtracking or True Tracking models.* * **Increase 3D Scene System Size** - The 3D scene size limit has been increased to generally support 1+ GW terrain-following tracker systems. Specifically, PlantPredict inspects the total number of PV collector objects and the total number of weather file time steps and loads any scene with less than 2 billion PV Collector Objects x Time Steps. * **Support for SHD File Import (Beta) -** PlantPredict now supports the import of 3D scenes in SHD format (PVsyst proprietary) for easier transition of project data from PVsyst to PlantPredict. * **UI Improvements to 3D Scene Overview Page** - When Representative DC Field is selected for the Orientations, an information card is provided that informs the user of the settings within the Target DC Field selected. ## **Bug Fixes** * Corrected an issue where inverter efficiency and output power could be negative for very low DC power scenarios under specific Vmpp edge cases. This has been fixed, and the inverter output power can no longer be less than 0W. * An issue in DC Field Nodal Data has been corrected to now report Global Back POAI and Average GHI. These values were previously erroneously reported as 0. * Fixed an edge-case model issue where heterogeneous DC Fields with significantly different IV Curve characteristics connected to a single inverter MPP would result in an inverter shutdown when Vmpp for the combined DC Fields fell within Zone 10 (DC Clipping). * Ohmic Power Loss Units in the DC Field Nodal Data have been corrected to from Joules (J) to Watts (W). * PVC files exported from PlantPredict have been improved to correct minor non-rectangular distortion when converting 3D geometry from a geographic coordinate system to a cartesian coordinate system for the PVC format. This results in improved recognition of PV tables when importing into PVsyst. * We’ve corrected an issue for Southern Hemisphere projects where the transposition loss / gains were reversed. * We’ve disabled sun position binning Quick and Balanced options (which use interpolation between sun positions) for tracking models using Terrain-Aware Backtracking, Wind Stow, Irradiance Optimization and/or Time Series uploaded Rotation Schedules. # **Pro Tools** ## **General Updates** * **AWS Dependencies Update:** Amazon AWS dependencies were updated to maintain service stability and ensure platform continuity. * **Quality & Stability:** Introduced Angular unit tests for core workflows, improving regression detection and refactor safety. ## **Bug Fixes** * **SSL Certificate Issue:** Resolved an SSL issue caused by the PlantPredict certificate, ensuring stable access to Pro Tools services. * **QA Tool Access:** Restored access to the QA tool from the Pro Tools menu for the Terabase users. # **Terrain Pro** ## **New Features and Improvements!** * **Optional EPSG Code on Import:** EPSG code is now an optional input when importing data (CSV, CAD, or PVCase BOM). If no EPSG code is provided, the site is rendered with a generic 2D/3D background. Release 12 18 0 Image3 Release 12 18 0 Image4 Array layout represented in a generic space, with no basemap layer Without an EPSG code there is no geolocation; when importing DXF, the ability to select elevation from satellite data is not enabled. Original and finish surface will be still be represented in 3D but with a gray background for the site bounding box. Release 12 18 0 Image5 A future release will allow users to assign an EPSG code later within the app. *** * **ESRI Layer Integration:** Mapbox layers in the Terrain Pro viewer have been replaced with ESRI layers, delivering improved rendering and map performance. * **Rack Data Visualization:** Rack data is now available in the rack profile viewer within the output section, improving insight into project-level rack configurations. Release 12 18 0 Image6 * **Wind Exposure Export:** Export of wind exposure data has been enabled in the output section. Release 12 18 0 Image7 ## **Bug Fixes** * **Large Site Heatmap Performance:** Heatmap generation performance has been significantly improved for large sites (>5,000 acres). * **Layer Generation Reliability:** The “Failed to create layer” error has been resolved through the new viewer and backend architecture for data generation and storage. * **Backward Compatibility Restored:** Backward compatibility of the new Terrain Pro viewer with Mercator analyses is now fully restored. * **CSV Output Restored:** The “Download CSV” output button has been reinstated on the Terrain Pro dashboard. * **Improved XLSX Compatibility:** Enhanced compatibility between the new Terrain Pro viewer and XLSX-imported data (e.g., PVCase BOM). * **Unit Synchronization:** Units in the heatmap legend and earthwork outputs are now synchronized with the user’s selected measurement system. # **Pile configurator** ## **New Features and Improvements!** * Persistent Edited Values: Edited pile section and minimum embedment values are now retained when creating or deleting bins, reducing repetitive re-entry and improving workflow efficiency\*\*.\*\* Release 12 18 0 Image8 # **Design Pro** ## **New Features and Improvements!** * **User and Company Data Sync:** Updates to the user name or company name in the PlantPredict menu are now automatically synchronized with the Design Pro database for consistency across systems. # RELEASE 12.19.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.19.0 November 13, 2025 # **Pro Tools** # **Terrain Pro** ## **New Features and Improvements!** ### **Enhanced Input Configuration** A new **input section** has been introduced to help users better organize and manage analysis parameters. Inputs are now categorized into: * **Configuration Inputs** – Analysis and configuration settings. * **Rack Geometry Inputs (Placeholder)** – Reserved for upcoming functionality to define rack-specific geometry directly within the interface. * **Wind Exposure Inputs** – Parameters affecting the wind exposure calculation and rack grouping. * **Unit Inputs** – Definition of measurement systems and units used in the analysis. Release 12 19 0 Image1 This reorganization improves clarity and streamlines the setup process for Terrain Pro analyses. ### **Editable Wind Exposure Parameters** The **Wind Exposure** input section now includes editable parameters that define rack exposure and neighbor detection behavior: * **Max N/S Spacing** – Maximum distance to treat racks as north-south neighbors. * **E/W Tolerance (× Pitch)** – Multiplier controlling east-west tolerance during exposure calculation. This parameter defines if a rack can be considered East or West exposed * **E/W Coverage Tolerance** – Defines how much of a rack’s edge can be exposed before it’s considered exterior. These parameters give users flexibility to fine-tune exposure calculations for complex layouts, ensuring accurate structural analysis and rack classification. Release 12 19 0 Image2a **3D Visualization of Piles and Rack Bays**\ The **Finish Surface** view now includes the ability to display **3D pile and rack bay layers**, offering a more realistic visualization of post-grading conditions. * This feature is available for Terrain Pro analyses generated from **Design Pro** configurations and **DXF imports**, where rack geometry is explicitly defined or extracted. * For CSV or Excel-based inputs, only the **pile 3D extrusion** is shown on the finish surface. Users can now easily visualize rack elevation, pile depth, and structure profiles in context with the proposed finish surface. Release 12 19 0 Image3a ### **Pile Configurator Enhancements** The pile configurator now tracks, in addition to user-edited changes in the pile binning table, the **preferred data source** for pile type selection — whether it originates from **imported data** or is calculated using the **Wind Exposure module**. This enhancement provides greater transparency and control over how pile types are defined and maintained across Terrain Pro analyses, improving both accuracy and consistency in design workflows. ## **Bug Fixes** * **Gradient Color Consistency:** Resolved a mismatch between the gradient colors displayed on the **Original Surface** and **Finish Surface** maps and their corresponding legend. The gradient visualization now accurately reflects elevation values across both map views. Release 12 19 0 Image4 # **PlantPredict** *** ### **Weather File Improvements** * When importing a new weather file with POAI data, decimal inputs are now accepted for GCR%. Release 12 19 0 Image5 * Wind Gust data is now included when exporting weather data. * When choosing or updating a weather file for a prediction, newly added files will now correctly show in the available list immediately. * Corrected unit-of-measurement labels for GHI, DHI, and DNI. * Date & Time columns are now formatted correctly upon export Release 12 19 0 Image6 * Updated NSRDB requests to use the new v4 ‘GOES’ endpoints. ### **Bug Fixes:** * Project elevation now correctly converts to FT when Imperial is toggled on Release 12 19 0 Image7 * Fixed an issue that prevented PVC files from uploading for predictions using some Solcast weather files. # RELEASE 12.20.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.20.0 **December 04, 2025** # **Pro Tools** # **Terrain Pro** ### **Analysis and configuration name displayed** * The analysis name and configuration name are now displayed at the top of the pile configurator page for improved clarity and navigation. release-12-20-0-image1 ## **Bug Fixes** * **Corrected elevation values for overhang bays.** * **Resolved scaling issues** where finish surfaces, piles, and bays were appearing out of proportion. * **Fixed multiplier calculation** in the pile binning table. * **Corrected PVCase import unit conversion** affecting PV modules defined in feet. **December 11, 2025** # **PlantPredict** *** ## **Improvements:** * Cloning Prediction’s will now include uploaded 3D scene data and calculation results if they exist. * Exporting a Prediction will also now include the 3D scene data. ## **Bug Fixes:** * Constraint setback input fields in Map Builder should now truncate long decimal places when using Imperial. * Fixed an error when attempting to export some Projects * Fixed an issue preventing review of Weather data when attempting to import from a Project file (.PPP) # RELEASE 12.21.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.21.0 **January 22, 2026** # **PlantPredict** ## **Bug Fixes** * Fixed the SolarGIS PVPlanner parser to support downloads with updated SolarGIS format. * Fixed an issue where the Inverter Repeater field would reset in Map Builder. * Updated Swagger API documentation for maintenance mode. * Save + Close in the Model Choices page will now always save the state of the prediction. * Updated error message when attempting to upload a PVC for a prediction with a weather files without DHI and no decomposition model. * Restored wetland layers functionality within Map Builder predictions. *** # **Design Pro** ### **Added Array Area to Bill of Quantities Output** Array Area is now included in the BoQ output and download, calculated from boundary area × land use, eliminating the need for manual calculations or cross-referencing with PDF reports. ## **Bug Fixes** * Restored wetland map overlay layer within Design Pro. * Fixed an issue where layout analysis would fail when all packing area boundaries were excluded, now handles empty datasets gracefully. # **Terrain Pro** ### **Solid gray background for imported layout dataset with no EPSG code** Improved map visibility for imported layouts without EPSG codes by displaying a solid gray background instead of base map tiles. Download # RELEASE 12.22.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.22.0 **February 12, 2026** # **PlantPredict** ### **PVGIS Weather Data Integration** PlantPredict now offers direct, in-app access to **PVGIS weather data** — enabling seamless download and file upload of PVGIS weather datasets without ever leaving the application. Best of all, this is a **free service** and does not require a separate PVGIS API key, making it easier than ever to source high-quality irradiance and meteorological data for your projects. PVGIS Weather Download ### **New PlantPredict Product Documentation Portal** We are excited to announce the launch of the [**PlantPredict Product Documentation Portal**](https://docs.plantpredict.com/) — a centralized, modern documentation hub for all PlantPredict products. The portal brings together comprehensive resources across the entire PlantPredict ecosystem in one easy-to-navigate site, including: * **PlantPredict User Guide** — Step-by-step instructions for using PlantPredict's interface, creating projects, and running predictions. * **Models & Algorithms** — In-depth technical documentation of the underlying physics models, algorithms, and calculation methodologies that power PlantPredict's energy simulations. * **API & SDK** — Developer resources for programmatic access, including REST API documentation, Postman collections, Swagger references, and the Python SDK. * **Pro Tools Documentation** — Dedicated user guides for **Design Pro**, **Terrain Pro**, and **Voltage Pro**. * **Extensions** — Information on third-party integrations such as the PVRADAR Soiling Extension. * **Release Notes** — A complete history of all product updates, improvements, and fixes. The portal also features built-in search, AI-powered assistance, and a clean, modern interface designed to help you find the information you need — fast. PlantPredict Documentation Portal ## **Features & Improvements** * **New 3D Scene Outputs in Nodal API Responses** — API users can now retrieve 3D scene output data as part of the Nodal JSON response, unlocking richer programmatic access to simulation geometry and results. * **Measured Labels Toggle for Constraints & Site Boundaries** — A new toggle option allows users to display measured labels on constraints and site boundaries. * **Smarter AC Block Array Shapes in Map Builder** — Improved automation logic for AC Block Array geometry within Map Builder now prevents excessively wide or tall block shapes, resulting in more balanced and practical layouts. * **Expanded Postman API Documentation** — The Postman collection has been significantly updated with many previously missing endpoints and comprehensive descriptions for essentially all requests, making API integration smoother and more intuitive. * **Larger File Support for 3D Scene Tracker Rotation Angles** — The file upload process for 3D Scene tracker rotation angles now accommodates much larger file sizes, removing previous limitations for large projects. * **GCR Unit Label on DC Field Form** — Added the missing unit label (%) for Ground Coverage Ratio (GCR) on the DC Field form for improved clarity. ## **Bug Fixes** * Fixed NSRDB weather downloads that were missing albedo data. *** # **Pro Tools** # **Terrain Pro** ## **Features & Improvements** ### **Extended DXF Import Compatibility** Terrain Pro now supports DXF files generated from **Global Mapper** in addition to Autodesk software, expanding interoperability and improving workflow flexibility for users working across multiple GIS and CAD platforms. ### **Improved Pile Icon Visualization** Optimized pile icon rendering to properly scale across different zoom levels. This enhancement prevents graphical overlapping when zooming out and improves overall map readability at any scale. ## **Bug Fixes** * **Earthwork Heatmap Rendering** — Fixed an issue where the Earthwork heatmap appeared scattered and displayed missing sections in small layout areas. The heatmap now renders correctly and consistently regardless of layout size. # RELEASE 12.23.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.23.0 **March 9, 2026** # **PlantPredict** ### **Platform Upgrade: Migration to .NET 8** As part of our ongoing platform modernization, PlantPredict's calculation engine has been upgraded from **.NET Framework to .NET 8** — the latest long-term support release from Microsoft. This foundational upgrade delivers meaningful improvements to performance, security, and long-term supportability across the entire platform, and applies to **all prediction logic versions**. Users should experience **noticeable performance improvements** in UI page transitions, creating, cloning, and saving assets, and overall API responsiveness. No changes have been made to any prediction algorithms or calculation logic as part of this upgrade. All PlantPredict algorithms, formulas, and engineering models remain identical. .NET 8 Upgrade **Technical Note on Floating-Point Precision** The .NET 8 migration changes how the CPU processes floating-point arithmetic at the hardware level. While all PlantPredict algorithms, formulas, and engineering models remain **identical** — no calculation methodology has been changed — this lower-level change can produce extremely small numerical differences in outputs. Terabase has performed **several hundred prediction validations** to ensure backwards compatibility, confirming that result deviations are **less than 0.01%**. These differences fall well within acceptable engineering tolerances and have no practical impact on energy yield predictions. ## **Bug Fixes & Improvements** * **Map Builder Responsiveness** — Fixed an issue where Map Builder could become unresponsive due to an invalid derate rating, ensuring a smoother and more reliable design experience. * **Company Default Validation** — Added validation to prevent company-level defaults from being configured with invalid derate ratings, reducing the risk of downstream errors. * **Module Input Tooltips** — Corrected erroneous tooltip messages for Module inputs, ensuring accurate guidance throughout the module configuration workflow. *** # **Pro Tools** # **Terrain Pro** ## **Features & Improvements** ### **Optimization Objective Toggle — Earthwork vs. Pile Reveal** Users now have direct control over the optimization objective when running Terrain Pro analyses. A new toggle allows selecting between **Minimize Earthwork** and **Minimize Pile Reveal**, giving engineers the flexibility to tailor grading solutions to specific project priorities — whether that means reducing cut-and-fill volumes or optimizing pile exposure lengths. This replaces the previous automatic behavior that always defaulted to minimizing earthwork. The selected objective is applied across all supported algorithm versions (1.1–6.3), saved with the analysis, and clearly displayed in the UI, reports, and exports for full traceability. Terrain Pro Optimization Objective ### **Security & Infrastructure Improvements** Several security enhancements have been implemented to strengthen the platform, including improved HTTP security headers to protect against common vulnerabilities such as clickjacking, MIME sniffing, and insecure connections. In addition, the database infrastructure has been modernized with an upgrade from **MySQL 5.7 to MySQL 8.0**, delivering improved security, stability, and long-term platform support. # RELEASE 12.24.0 Source: https://docs.plantpredict.com/release-notes/Version-12/RELEASE-12.24.0 **March 26, 2026** # **PlantPredict** ### **3D Shade Scene: Shading Object Management & Satellite Imagery** The 3D Shade Scene viewer has received a major upgrade, giving users powerful new tools to build more accurate and visually immersive shading analyses — all within PlantPredict.