Inputs for BESS
This section will cover the key inputs in modeling the Battery Energy Storage Systems (BESS) to be added later on in the database.
1. The "Twin Unit" Concept

Modeling a battery in iPool requires defining it as both a supply and a demand unit to accurately account for its ability to charge and discharge within the market. Hence, iPool treats the battery as two distinct "twin" units that link back to the same storage system. This is configured in the Sites.csv file by linking two units to the same Storage ID and setting their Storage Factor to either a positive value (for the demand/load unit) or a negative value (for the supply unit), as shown in the figure above.
- Supply Unit: Generates power into the grid; operating this unit reduces the overall storage level. Naming convention: UnitName example: 01AAA_BAT_G01
- Demand Unit: Consumes power from the grid to charge; operating this unit increases the overall storage level. Naming convention: UnitName_L example: 01AAA_BAT_G01_L
2. CSV Files Connection
The three files define storage assets at different modeling layers:
Storages.csv– Defines the energy reservoir (MWh limits and initial state of charge).Sites.csv– Links to the storage viaStorIDand defines efficiency, costs, and outage parameters.Units.csv– Links to the site viaSiteIDand defines dispatch and operational constraints (MW limits, ramp rates, reserves, fast start).
3. Key CSV Files
To successfully add a BESS to the iPool database, three primary CSV files must be configured to establish the physical parameters, the site links, and the energy limitations. These files are located in C:\IENERGY\WESMXXX\Databases, where WESMXXXX is the current working folder.
These files should be saved in the Databases folder.
See each tab to learn more about the primary CSV files.
- Storages
- Sites
- Units
Storages.csv
The Storages.csv file defines the physical limits of the energy reservoir. It sets the maximum and minimum energy capacity (MWh) and the PcBeg (Beginning %), which determines the initial state of charge at the start of the simulation.
For Battery Energy Storage Systems (BESS), PcBeg is typically set to 50% to provide balanced charging and discharging flexibility.
The table below describes the parameters for storage assets (e.g., STO_CLUZ) as defined in the Storages.csv data structure.
| Item | Description | Example Value |
|---|---|---|
| StorageID | Unique identifier of the storage. | STO_CLUZ (user-defined) |
| Region | Region associated with the storage. | CLUZ, CVIS, or CMIN |
| StorageType | Classification of the storage. | BAT, HYDRO, GAS |
| InFlow | Rate of inflow into the storage (for hydro or similar technologies). | 0 (for BESS) |
| Max Cap (MWh) | Maximum energy capacity of the storage (MWh). | 4000 (user-defined) |
| Min Cap (MWh) | Minimum allowable energy level (MWh). | 1 (user-defined) |
| Begin Level (%) | Initial state of charge at the start of the simulation. | 50 (user-defined) |
| MoF0 – MoF12 | Monthly inflow values (if applicable). | 0 (for BESS) |
| Upstream StorageID | Upstream storage ID (if applicable). | (No input required for BESS) |
| Upstream Factor | Upstream factor. | 1 |
| Inflow Time Hrs | Inflow time (hours). | 0 (for BESS) |
Sites.csv
The Sites.csv file manages the relationship between units and the broader system infrastructure. It provides site-level data and links units to the associated storage reservoir.
A critical parameter in this file is Storage Efficiency, which follows a sign-convention logic:
- Negative values represent the supply (discharge) phase.
- Positive values represent the demand (charging) phase.
| Item | Description | Example Value |
|---|---|---|
| SiteID | Unique identifier of the site. | 01AAA_BAT (user-defined) |
| Name | Display name of the site. | 01AAA_BAT (user-defined) |
| OwnerID | Participant or owner identifier. | Owner |
| RegionID | Region associated with the site. | CLUZ, CVIS, or CMIN |
| GroupID | Group classification of the site. | Group |
| FuelType | Fuel or technology type (e.g., Battery). | BAT |
| Max MW | Maximum physical capacity (MW). | 1000 (user-defined) |
| Cap | Operating or registered capacity (MW). | 1000 (user-defined) |
| MLF | Marginal Loss Factor. | 1 |
| Nominal Availability | Expected percentage of time the site is available. | 100.00% |
| FOR | Forced Outage Rate. | 0.00% |
| POR | Planned Outage Rate. | 0.00% |
| SRMC | Short-Run Marginal Cost. | 0 |
| CO2e Factor | Carbon dioxide emissions factor. | 0 (user-defined) |
| Var O&M P/MWh | Variable operation and maintenance cost (Pesos per MWh). | 0 (user-defined) |
| Fix O&M P/kW/yr | Fixed operation and maintenance cost (Pesos per kW per year). | 492 (user-defined) |
| Network Charge P/kW/yr | Network or connection charges (Pesos per kW per year). | 0 |
| Annual CapCharge P/kW/yr | Annualized capacity charge (Pesos per kW per year). | 2000 |
| Fuel Price P/tonne | Fuel cost (Pesos per tonne). Zero for battery or solar. | 0 |
| Storage Factor | Storage factor of BESS. Negative value for discharge (supply unit); positive value for charge (load unit). | -1.08 for 92% charging efficiency, 0.92 for 92% discharging efficiency. |
| VRE Conversion High/Mid/Low | Multiple energy conversion factors (High, Medium, Low). | 1 / 1 / 1 |
| VRE LDC Elbow High/Low | Sets the elbow point for energy conversion | 0 |
| Target Cap Factor | Target capacity factor. | 0.15 |
| StorageID | Link to the specific storage in Storages.csv. | STO_CLUZ_BAT |
| bKwLoad | Sets power to either kW or MW | FALSE |
| bVRE | Sets the site as Must Dispatch. | FALSE |
| bUse VRE Factor | Enables the use of energy conversion factors. | FALSE |
Units.csv
The Units.csv file defines the core characteristics of generation or storage units. It records each unit’s unique identifier, maximum capacity (MW), and operational attributes such as fast-start capability and dispatch status. It also includes a Supply boolean field that determines whether the unit is active in the dispatch model.
| Item | Description | Example Value |
|---|---|---|
| Unit ID | Unique identifier of the unit. | 01AAA_BAT_G01 (user-defined) |
| Name | Display name of the unit. | 01AAA_BAT (user-defined) |
| SiteID | Links the unit to a specific site in Sites.csv. | 01AAA_BAT |
| OwnerID | Owner associated with the unit. | Owner |
| GroupID | Group classification of the unit. | Group |
| MwMax | Maximum capacity in MW. | 500 |
| MwMin | Minimum operating capacity in MW. | 0 |
| MLF | Marginal Loss Factor. | 0.99 |
| Availability (%) | Expected percentage of time the unit is available. | 100.00% |
| Auxiliary Loss (%) | Internal power consumption of auxiliary equipment (e.g., pumps, fans). | 0% |
| SMRC at 100/80/60/40% | Short-Run Marginal Cost at specified loading levels. | 0 |
| Ramp Rate MW/min | Ramp-up and ramp-down limits in MW per minute. | 0 |
| Default Reserve Priority | Reserve classification priority. | dr = 1, ru & rd = 2, fr = 3 |
| bSupply | TRUE if the unit supplies energy; FALSE otherwise. | TRUE or FALSE |
| bFast Starting | Indicates if the unit has fast-start capability. | TRUE or FALSE |
| Dispatchable | Determines whether the unit can be dispatched. | TRUE or FALSE |
| Start-Up Cost after 5h/20h/50hrs | Cost to start the unit after being offline for specified durations. | 0 (for BESS) |
| Maint Profile ID | Maintenance profile used to calculate planned outage schedules. | (No input required) |
| MTYR | Year the unit was installed. | Year |
| MTCYCLE | Number of maintenance cycles per year. | 1 |
| DailyEng | Daily energy limit in MWh. | 0 |
| DailyHrs | No. of ours of operation in a day. | 0 |
| WeeklyEng | Weekly energy limit in MWh. | 0 |
| StartHrs | Required downtime (in hours) before restarting after shutdown. | 0 |
| MaxHrsOn | Maximum consecutive operating hours (0 = no limit). | 0 |
| MinHrsOn | Minimum consecutive operating hours (0 = no limit). | 0 |
| MinHrsOff | Minimum consecutive downtime (0 = no limit). | 0 |
| MaxSpin | Maximum reserve capacity in MW. | 0 |